2011-02-16 48 views
0

用於隱藏另一個正在運行的程序的窗口的c#程序。 邏輯是從文字值中分配窗口句柄

foreach (Process proc in Process.GetProcesses()) 
      { 
       if (proc.MainWindowTitle.StartsWith("Some_title")) 
       { 
        handle = proc.MainWindowHandle; 
      } 
      }... 
... 
SetWindowPos(handle, IntPtr.Zero, 0, 0, 0, 0, 0x0001 | 0x0002 | 0x0004 | 0x0010 | 0x0080); 
... 
//later to unhide 
SetWindowPos(handle, IntPtr.Zero, 0, 0, 0, 0, 0x0001 | 0x0002 | 0x0004 | 0x0040); 

現在如果我取消隱藏窗口之前終止程序,我失去了我設置爲隱藏窗口的句柄。因爲(可能)隱藏窗口不再是該進程的主窗口,所以通過進程列表再次迭代不會再隱藏窗口的句柄。 [它是一個有多個窗口的聊天客戶端]

您可以想到的任何方法,在程序調用之間將窗口句柄保存到文件中,並在稍後的時間點執行取消隱藏?

我已經嘗試過了,但文字不能指定回IntPtr類型作爲句柄。

回答

1
int literal = 10; 
IntPtr handle = new IntPtr(literal); 

是否滿足您的需求?