我写一个程序,显示/隐藏了一些目标应用程序的窗口。 我早前测试出来,并发现了一些奇怪的。 如果我运行的目标应用为管理员(右键单击 - >属性,“兼容性”选项卡,“运行此程序作为管理员”),这是行不通的。
为了证明我写了名为“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对这里两个应用程序:
TestShowWindow下载
所有你需要做的就是将它们下载并运行TestApplication.exe然后运行TestShowWindow.exe。 你会发现,通过改变TestApplication.exe以管理员身份运行造成的ShowWindow不再工作。
当然,如果你不相信我下载的东西,你总是可以编译我的代码和测试它在Windows中,你是能够改变的兼容性模式的任何目标应用程序。
PS我不知道这是否有差别,但我运行Windows 8专业版。 64位。