如何获取WinCE控制台窗口的hWnd?
Posted
技术标签:
【中文标题】如何获取WinCE控制台窗口的hWnd?【英文标题】:How to get hWnd of the console window of WinCE? 【发布时间】:2015-08-10 02:51:50 【问题描述】:我正在尝试使用 WEC 7 (Windows Embedded Compact 7) 隐藏 WinCE 的控制台窗口。
在我的桌面窗口中,我已确认可以使用以下代码完成此操作:
HWND hWnd = FindWindow(L"ConsoleWindowClass",NULL);
ShowWindow(hWnd, SW_HIDE);
但是,如果我在 WinCE 上使用此代码,FindWindow
会返回一个空指针。
可能是WinCE的控制台窗口的类名与桌面窗口不同。
有什么办法可以得到控制台窗口的hWnd
?
【问题讨论】:
我还尝试了“GetConsoleWindow()”函数来获取控制台窗口的 hWnd,但没有成功。 WinCE 不支持“GetConsoleWindow()” 另外,我还发现'GetForegroundWindow()' 可以用来查找打开的控制台应用程序。但是,在某些情况下,返回的 HWND 可能不是控制台窗口的 HWND。 【参考方案1】:使用 EnumWindows API 查找您的窗口 HWND,例如:
BOOL CALLBACK FindWindowByEnumProc(HWND hwnd, LPARAM lParam)
if ( IsConsole(hwnd) )
// use hwnd.
return FALSE;
return TRUE;
::EnumWindows(FindWindowByEnumProc, NULL);
在IsConsole
中添加你的逻辑来决定这是否是一个控制台。您可以使用GetWindowText
获取窗口文本或使用GetClassName
检查其类。也可以使用GetWindowThreadProcessId
和GetModuleFileName
查询进程exe文件路径。
【讨论】:
【参考方案2】:您可以通过 Visual Studio 2008 Remote Tools 中的“Windows CE Remote Spy”找到您需要的所有信息。在我的例子中(Windows CE 6),控制台窗口有“ConDev_AppCls”类名。
【讨论】:
以上是关于如何获取WinCE控制台窗口的hWnd?的主要内容,如果未能解决你的问题,请参考以下文章