【问题标题】:C++ sending keys to a windowC ++将键发送到窗口
【发布时间】:2013-11-23 07:14:28
【问题描述】:

我想创建一个程序来模拟按键或只是将文本写入特定的应用程序窗口。 这是我尝试过的,但似乎不起作用。

void MainWindow::on_startButton_clicked()
{
    HWND windowname = FindWindow(NULL, L"<mywindowname>");
    SendMessage(windowname, WM_SETTEXT, NULL, (LPARAM)"Window");
}

有什么想法吗?

【问题讨论】:

  • 您可能希望该文本是一个宽字符串,但除非那是您自己的窗口,否则您最好使用SetWindowText
  • @chris 这会改变窗口标题吗?因为那不是我想要的
  • @Davlog: WM_SETTEXT 基本相同...如果您想模拟按键,您必须使用 SendInput 或单独的 WM_KEYDOWN/WM_KEYUP(但如果应用程序绕过获取输入的普通键消息将不起作用)。
  • 在这里查看我的答案,可以很容易地转换成c++:stackoverflow.com/a/41886193/1599699

标签: c++ windows


【解决方案1】:

所以我今天发现SendMessage 只会发送一个字符(至少它是我的问题的解决方案)。所以对于一个字符串,我必须对其中的每个字符执行以下操作。

QString string = "Hello";
foreach(QChar c, string){
  SendMessage(windowname, WM_KEYDOWN, (int)c-0x20, 0);
  SendMessage(windowname, WM_CHAR, (int)c-0x20, 0);
  SendMessage(windowname, WM_KEYUP, (int)c-0x20, 0);
}

For more information about this function and deeper details on WM_KEY's etc. click here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-19
    • 2011-01-08
    • 2011-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-14
    相关资源
    最近更新 更多