2010-01-19 35 views
0

我正在使用pinvoke「user32.dll」將我的應用程序發回(位於所有其他應用程序後面),因此它位於桌面上,反之亦然。目前它只是切換回來/前面。有沒有辦法來檢測我的應用程序是否在後面並將它放在前面或如果它在前面並將其發回?謝謝。如何在.NET中控制windows應用程序焦點

回答

2

如果窗口是活動窗口,通過調用

[DllImport("user32.dll")] static 
static extern IntPtr GetForegroundWindow(); 

你曾經是能夠調用

您可以檢測
[DllImport("user32.dll")] 
[return: MarshalAs(UnmanagedType.Bool)] 
static extern bool SetForegroundWindow(IntPtr hWnd); 

將您的窗口設置爲前景,但Microsoft在Windows ME/2000之後更改了其功能(可能是XP?)。

這個問題有各種各樣的解決方法,您可能需要測試幾個來看看哪些適合您。

http://www.tek-tips.com/faqs.cfm?fid=4262

http://markribau.org/blog/?p=7

我記得讀有關可以設置爲允許根據需要SetForegroundWindow工作註冊表項,但它是一個系統級設置。

http://www.delphipages.com/forum/showthread.php?t=198261

您可以使用SetWindowPos到你的窗口將落後於其他窗口或永久頂部是否有幫助

http://www.pinvoke.net/default.aspx/user32.SetWindowPos

http://msdn.microsoft.com/en-us/library/ms633545(VS.85).aspx

相關問題