我尝试加载并粘贴剪贴板中的数据,如下所示:
int main() {
Sleep(3000);
char buf[] = "Hello33";
HWND hwnd = GetActiveWindow();
if (OpenClipboard(hwnd)) {
EmptyClipboard();
HGLOBAL hClipboardData;
hClipboardData = GlobalAlloc(GMEM_DDESHARE, BUFLEN);
char * pchData;
pchData = (char*) GlobalLock(hClipboardData);
strcpy(pchData, LPCSTR(buf));
GlobalUnlock(hClipboardData);
SetClipboardData(CF_TEXT, hClipboardData);
CloseClipboard();
SendMessage(hwnd, WM_PASTE, 0, 0);
}
}
启动程序,然后打开文本编辑器,文本编辑器是顶部窗口,没有粘贴文本。如果我执行粘贴命令Ctrl-V
,我会在文本区域中显示Hello33
。
答案 0 :(得分:0)
GetActiveWindow返回主窗口而不是子窗口
你应该尝试GetFocus();
但即使这样也行不通,因为它在属于其他进程的其他线程中。
要解决此问题,请致电AttachThreadInput
最后我建议删除所有这些,然后尝试使用FindWindow并使用SendDlgItemMessage
将消息直接发送到编辑框