对于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类型用作句柄。
答案 0 :(得分:1)
int literal = 10;
IntPtr handle = new IntPtr(literal);
无法满足您的需求?