我正在編寫一個程序來顯示/隱藏某個目標應用程序的窗口。我之前正在測試它,發現了一些奇怪的東西。如果我以管理員身份運行目標應用程序(右鍵單擊 - >屬性,「兼容性」選項卡,「以管理員身份運行此程序」),則不起作用。當目標應用程序以管理員身份運行時,ShowWindow函數不起作用
爲了證明我編寫了一個名爲「TargetApplication」一個簡單的GUI應用程序,然後我寫了下面的代碼來測試顯示/隱藏這個應用程序:
class Program
{
static void Main(string[] args)
{
IntPtr windowPtr = FindWindow(null, "TargetApplication");
ShowWindow(windowPtr, 0); // 0 = Hide
Console.WriteLine("The window is now hidden. Press Enter to restore");
Console.ReadLine();
ShowWindow(windowPtr, 9); // 9 = Restore
Console.WriteLine("The window is now restored. Press Enter to exit.");
Console.ReadLine();
}
[DllImport("user32.dll", EntryPoint = "FindWindow", SetLastError = true)]
static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
[DllImport("user32.dll")]
static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
}
如果我開始沒有管理員權限沒有關係」的窗口應用程序工作。
有人會介意爲我測試這個嗎?我已上載該.exe對這裏兩個應用程序:
所有你需要做的就是將它們下載並運行TestApplication.exe然後運行TestShowWindow.exe。您會發現通過將TestApplication.exe更改爲以管理員身份運行會導致ShowWindow不再起作用。
當然,如果你不相信下載我的東西,你可以隨時編譯我的代碼,並在Windows中的任何目標應用程序上測試它,你可以改變它的兼容模式。
P.S.我不確定它是否有所作爲,但我正在運行Windows 8 Pro。 64位。
哇,非常好的信息。我不明白的一件事是我有另一個程序,我沒有寫,它做了同樣的事情,它的工作原理。是否有另一種方法可以用來顯示/隱藏不需要此解決方法的窗口? –