2017-01-11 35 views
0

使用C#我试图设置Windows资源管理器窗口的大小和位置,我开始了我的程序的屏幕位置。我已经看了一些SetWindowPos,但我不认为这对Windows资源管理器太好。我已经遇到此位的代码,我认为它会做什么,我需要,但我不知道如何使用它。设置高度,宽度和Windows资源管理器

SHDocVw.ShellWindows shellWindows = new SHDocVw.ShellWindows(); 
      string filename; 
      ArrayList windows = new ArrayList(); 
      foreach (SHDocVw.InternetExplorer ie in shellWindows) 
      { 
       filename = Path.GetFileNameWithoutExtension(ie.FullName).ToLower(); 
       if (filename.Equals("explorer")) 
       { 
        ie.WindowSetHeight += Ie_WindowSetHeight; 
        Console.WriteLine(ie.HWND.ToString()); 
       } 
       Console.ReadLine(); 
      } 

纠正我,如果我错了,但是这个代码剪断遍历所有的窗户在SHDocVw.ShellWindows和打印所有的“资源管理器”,这是说所有的Windows资源管理器的的HWND窗口到控制台。一旦寻找到的ie.不同部分我会遇到“WindowSetHeight”,“WindowSetWidth”,“WindowSetTop”和“WindowSetResizeable”,只是由名字来看,这些听起来像我想到底该怎么用,但是当我试图设置他们说他们需要跟着+=-=,我无法理解从哪里去。任何帮助将不胜感激

回答

0

要设置资源管理器窗口的高度,宽度和位置需要使用代码中ie对象上的Left, Top, WidthHeight属性。

您试图使用的WindowSetHeight是事件,它会窗户高度设置时发生火灾,请参阅MSDN reference

这里是打开一个浏览器窗口,以驱动器C的根,然后设置窗口(以及恰好是打开的任何其他浏览器窗口)的位置和大小的代码示例。

Process.Start(@"c:\"); 

foreach (SHDocVw.InternetExplorer window in new SHDocVw.ShellWindows()) 
{ 
    if (Path.GetFileNameWithoutExtension(window.FullName).ToLowerInvariant() == "explorer") 
    { 
     window.Left = 150; 
     window.Top = 200; 
     window.Width = 800; 
     window.Height = 600; 
    } 
} 

另外你需要确保你添加一个引用都shdocvw.dll中和的Shell32.dll这既可以在C:\Windows\System32找到。