我使用CreateProcess API從我的應用程序啓動了一個進程,並且希望將新進程的窗口置頂。有沒有辦法做到這一點?我們有CreateProcess的標誌或類似的東西嗎?如何在通過CreateProcess創建的進程上創建窗口
回答
你可以嘗試使用它與CreateProcess的,並設置SW_SHOW通過在STARTUPINFO結構。我不確定這將有助於將重點放在頂端。如果這不起作用,請嘗試以下操作。
首先,不要使用FindWindow(),它不必要地不可靠,因爲它只能通過窗口名稱和類名稱工作。相反,從您的CreateProcess()調用中,您應該讀取lpProcessInformation並獲取dwProcessId。然後調用EnumWindows(),有你的回調是這個樣子:
BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam) {
DWORD dwPID;
GetWindowThreadProcessId(hwnd, &dwPID);
if(dwPID == lParam) {
SetWindowPos(hwnd, HWND_TOP, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
// Or just SetFocus(hwnd);
return FALSE;
}
return TRUE;
}
當調用EnumWindows的(),您將需要在您之前在lParam的像這樣抓起PID傳遞:
是的,我用這個,並按我想要的方式工作。謝謝 – Rahul
您需要啓動應用程序的窗口句柄。如果你沒有它,你可以使用FindWindowA API調用。
然後使用帶窗口句柄的SetFocus API調用作爲參數。
相關鏈接:
http://www.andreavb.com/tip020001.html
http://msdn.microsoft.com/en-us/library/aa697422%28v=vs.71%29.aspx
但絕對不要使用'FindWindowA'。 ANSI變體在Windows 98中過時了。不知道你從哪裏得到這個建議。任何在過去15年中編寫的應用程序都應該使用這些函數的Unicode版本。 'FindWindowW'是你正在尋找的功能,或者更好的是'FindWindow'。你有沒有注意到你在MSDN上挖過的古怪東西?它的標題是「將16位代碼移植到32位Windows」。 –
Jeroen的+1。我想避免調用FindWindow。我使用了邁克的建議。 – Rahul
- 1. 在VC++中通過Win32 API創建窗口(菜單創建)
- 2. 如何在Python 2上創建窗口?
- 3. 如何通過在類中創建的方法在窗體上創建按鈕?
- 4. 如何在winXP中隱藏進程窗口(從任務欄)創建進程?用CreateProcess函數?
- 5. 如何在Android上的其他窗口頂部創建窗口
- 6. 如何設置從CreateProcess創建的進程的搜索路徑
- 7. 如何設置使用CreateProcess創建的進程的名稱?
- 8. 如何獲得由CreateProcess創建的新進程的HWND
- 9. 禁止窗口創建過程
- 10. 通過過程創建的操作窗口
- 11. 如何終止由CreateProcess()創建的進程?
- 12. 如何通過javafx中的窗口創建用戶出口窗口
- 13. 創建控制檯,如進度窗口
- 14. 如何在Windows Mobile上創建通知彈出窗口?
- 15. 在另一個線程上創建一個WPF進度窗口
- 16. 通過Supervisord API遠程創建進程
- 17. CreateProcess()不會創建一個CREATE_NEW_CONSOLE標誌的新窗口 - C/C++
- 18. 如何獲取新創建的IE8窗口的過程?
- 19. 父窗口創建
- 20. 創建InputOnly窗口
- 21. 如何在BackgroundWorker中創建WPF窗口?
- 22. 如何在活動中創建窗口?
- 23. 如何在javascript中創建DOM窗口?
- 24. 如何在java中創建窗口組?
- 25. 如何創建一個窗口通過一層到另一層
- 26. 如何使用php通過echo創建彈出式窗口?
- 27. 何時創建qt窗口?
- 28. Web:在窗口內創建窗口
- 29. 如何通過qml在移動設備上創建新窗口?
- 30. 通過delphi系統創建進程
HTTP:/ /stackoverflow.com/questions/916259/win32-bring-a-window-to-top – Schnommus
你的意思是隻顯示窗口,或實際上在頂部? – Ajay
在這個重複中有一個有用的答案:http://stackoverflow.com/questions/25034867/how-to-make-createprocess-open-new-process-in-focus-and-not-in-background一個簡單的' TranslateMessage'調用使其按預期工作。 – Kaz