2010-07-11 51 views
3

是否有可能將重點放在Windows中的控制檯應用程序上? SetFocus看起來很有前途,但它需要一個HWND,我不知道控制檯應用程序是否有一個。將焦點集中在Windows中的控制檯上?

+0

您是否正在尋找一種方法來從控制檯應用程序本身或其他應用程序中執行此操作? – 2010-07-11 17:05:19

回答

2

使用GetConsoleWindow函數。

+0

這會爲我返回NULL。我猜測它的工作原理是,如果我真的使用AllocConsole或其他方法爲Windows應用程序創建控制檯。 – Steven 2010-07-11 16:22:43

+0

如果它在窗口控制檯會話中運行,則應該獲得有效的HWND。如果它在服務登錄會話中,則不會有任何窗口關聯。當啓動一個與'/ SUBSYSTEM:CONSOLE'選項鍊接的進程(在PE頭中作爲標誌存儲)時,Windows會自動調用'AllocConsole'或'AttachConsole'。 – 2010-07-11 16:42:40

+0

實際上'GetConsoleWindow'確實有效。但是'SetFocus'返回NULL,'GetLastError'返回ERROR_ACCESS_DENIED。任何想法爲什麼? – Steven 2010-07-11 17:09:21