2016-04-22 90 views
2

過了一段時間,因爲我做任何程序如此生鏽。我正在研究代碼來最大化和最小化其他應用程序。所以我找到了一些基本的東西,這是我的東西,從原來的東西稍微修改一下。它希望我生成一些我所做的FindWindow方法。現在一切看起來不錯,我試圖運行它,得到一個消息。不知道該從哪裏出發。我發現它的原始線程沒有提到這一點。最大化/最小化其他應用程序

enter image description here

private const int SW_SHOWNORMAL = 1; 
private const int SW_SHOWMINIMIZED = 2; 
private const int SW_SHOWMAXIMIZED = 3; 

[DllImport("user32.dll")] 
private static extern bool ShowWindowAsync(IntPtr hWnd, int nCmdShow); 
static void Main(string[] args) 
{ 
    // retrieve Notepad main window handle 
    IntPtr hWnd = FindWindow("Notepad", "Untitled - Notepad"); 
    if (!hWnd.Equals(IntPtr.Zero)) 
    { 
     // SW_SHOWMAXIMIZED to maximize the window 
     // SW_SHOWMINIMIZED to minimize the window 
     // SW_SHOWNORMAL to make the window be normal size 
     ShowWindowAsync(hWnd, SW_SHOWMAXIMIZED); 
    } 
} 

private static IntPtr FindWindow(string p, string p_2) 
{ 
    throw new NotImplementedException(); 
} 

回答

1

首先,你的方法FindWindow(),當一個方法,你需要抓住它在它是在這種情況下,Main()調用的方法拋出。

現在NotImplementedExceptionis類,這裏我發表你的繼承層次

  1. System.Object的
  2. System.Exception的
  3. System.SystemException
  4. System.NotImplementedException

由於說錯誤,你只需要實現該方法並刪除de行:`throw new NotImplemente dException();

最後我發佈了一個實現選項,只需要窗口應用程序的標題即可。

public static IntPtr FindWindow(string titleName) 
    { 
     Process[] pros = Process.GetProcesses("."); 
     foreach (Process p in pros) 
      if (p.MainWindowTitle.ToUpper().Contains(titleName.ToUpper())) 
       return p.MainWindowHandle; 
     return new IntPtr(); 
    } 

順便說一句,here約爲最大化/最小化其他應用程序的另一個問題