【问题标题】:How to get hWnd of the console window of WinCE?如何获取WinCE控制台窗口的hWnd?
【发布时间】: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。

标签: cmd console windows-ce findwindow


【解决方案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 检查其类。也可以使用GetWindowThreadProcessIdGetModuleFileName查询进程exe文件路径。

【讨论】:

    【解决方案2】:

    您可以通过 Visual Studio 2008 Remote Tools 中的“Windows CE Remote Spy”找到您需要的所有信息。在我的例子中(Windows CE 6),控制台窗口有“ConDev_AppCls”类名。

    【讨论】:

      猜你喜欢
      • 2020-02-03
      • 2011-01-21
      • 2012-10-28
      • 2013-07-13
      • 2023-01-31
      • 2013-01-17
      • 1970-01-01
      • 1970-01-01
      • 2020-10-22
      相关资源
      最近更新 更多