【问题标题】:How to print the title of the active window in C - WinAPI如何在 C 中打印活动窗口的标题 - WinAPI
【发布时间】:2019-02-19 15:35:42
【问题描述】:

嗯,我只有一个学期的 C,所以我对 HWND 以及如何使用它有点困惑。我只想打印活动窗口。 我找到了——GetActiveWindowGetForegroundWindow

但我只是不明白如何使用此功能来打印该活动窗口。

我正在尝试做类似的事情。

HWND GetActiveWindow();
printf("%s", GetActiveWindow);

但这可能是不好用的,而且不起作用。
如果有人能给我一个工作示例,我将非常感激。

【问题讨论】:

  • 您希望看到什么 - id (HWND) 或窗口标题(文本)?
  • 你缺乏基本的C语言理解。调用函数需要 (),例如GetActiveWindow() 并且它不返回一个字符串,而是一个指针。在你准备好之前最好避免使用 WinAPI。
  • @i486 窗口标题。
  • @Michael 嗯,是的。我知道如何调用函数,例如 func1(param1,param2) 但我迷失了在哪里获取 Windows 标题字符串。
  • @Sheldon 你需要 GetWindowText()

标签: c winapi hwnd


【解决方案1】:
TCHAR buf[256];

GetWindowText( GetActiveWindow(), buf, sizeof buf / sizeof *buf );
wsprintf( TEXT( "Window text: %s\n" ), buf );

【讨论】:

    【解决方案2】:

    HWNDhandle。它具有整数值,而不是字符串值。如果您的意图是打印出窗口的标题,您可以使用GetWindowText 函数从HWND 获取标题:

    void printWindow(HWND hWnd)
    {
        DWORD dwLen = GetWindowTextLengthW(hWnd);
        WCHAR *wszTitle = HeapAlloc(GetProcessHeap(), 0, (dwLen + 1) * sizeof(WCHAR));
        if(wszTitle == NULL)
        {
            return;
        }
        GetWindowTextW(hWnd, wszTitle, dwLen + 1);
    
        wprintf(L"%s\n", wszTitle);
    
        HeapFree(GetProcessHeap(), 0, wszTitle);
    }
    

    【讨论】:

      猜你喜欢
      • 2014-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-10
      • 1970-01-01
      • 1970-01-01
      • 2013-02-06
      • 1970-01-01
      相关资源
      最近更新 更多