我可以执行以下操作来获取另一个应用程序的窗口标题
char window_text[256];
LRESULT lResult = SendMessageA(pMouseHook->hwnd, WM_GETTEXT, sizeof(window_text) / sizeof(*window_text), (LPARAM)window_text);
printf("Copied %d characters. Contents: %s\n", lResult, window_text);
或者我应该首先分配全局内存并使用它而不是本地char数组?
提前致谢。
答案 0 :(得分:1)
使用本地字符数组非常好。当然,如果标题比您提供的缓冲区长,那么返回的值将被截断。
对于窗口,您可能会考虑使用其他流程GetWindowText
。 documentation说:
如果目标窗口由当前进程拥有,则GetWindowText会将WM_GETTEXT消息发送到指定的窗口或控件。如果目标窗口由另一个进程拥有并且具有标题,则GetWindowText将检索窗口标题文本。如果窗口没有标题,则返回值为空字符串。此行为是设计使然。如果拥有目标窗口的进程没有响应,它允许应用程序调用GetWindowText而不会无响应。但是,如果目标窗口没有响应并且它属于调用应用程序,则GetWindowText将导致调用应用程序无响应。