我正在將另一個應用程序的窗口放在最頂層,以確保在我的應用程序中的點擊將另一個應用程序的對話框帶入視圖。我遇到的問題是在通話結束後,我沒有將注意力集中回到我的應用程序。如果其他應用程序有更多的窗口,其中一個應用程序以焦點結束,否則沒有窗口(僅查看任務欄)會獲得焦點。我應該從哪裏開始調查這個問題?將另一個應用程序的窗口置頂後重點丟失
我製作的其他應用程序最上面的代碼是:
Process p = Process.GetProcessById(trackedProcessID);
IntPtr h = p.MainWindowHandle;
uint TOPMOST_FLAGS = SWP_NOMOVE | SWP_NOSIZE | SWP_ASYNCWINDOWPOS;
SetWindowPos(h, HWND_TOPMOST, 0, 0, 0, 0, TOPMOST_FLAGS);
與常量
public static readonly uint SWP_NOMOVE = 0x0002;
public static readonly uint SWP_NOSIZE = 0x0001;
public static readonly uint SWP_ASYNCWINDOWPOS = 0x4000;
public static readonly IntPtr HWND_TOPMOST = new IntPtr(-1);
非常有趣!但即使我的第二個應用程序只有一個可見的窗口(再次,從任務欄,這可能不是一個好的來源),我會期望一旦其他應用程序中的對話框關閉我的焦點回來。要麼? – Oskar 2008-10-23 16:16:31
不,不一定,您需要將焦點(實際上這裏的術語是正確的z順序)返回給您的應用程序。 – 2008-10-23 16:18:27