【问题标题】:Copy text into another application将文本复制到另一个应用程序
【发布时间】:2020-02-13 06:42:41
【问题描述】:

我想模拟条形码阅读器并将条形码内容(文本)从我的应用程序复制到另一个应用程序。

我刚刚找到了一种选择应用程序窗口粘贴 keyCode 的方法。 它可以与 F1 键一起正常工作,但不能与另一个键一起使用。 (我试过Tab和空格)我认为,焦点不在文本区域。

HWND mywindow = ::FindWindow(NULL, L"test.txt - Editor");
uint keyCode;
QString str;
SetForegroundWindow(mywindow);


keyCode = VK_F1; // F1 key

PostMessage(mywindow, WM_KEYDOWN, keyCode, 0); // key down
PostMessage(mywindow, WM_KEYUP, keyCode, 0); // key up

【问题讨论】:

  • 使用 UI 自动化自动化其他程序
  • You can't simulate keyboard input with PostMessage。该文本大约在 15 年前出版。 15 年的时间足以接受这一限制。
  • 如果内容是文本,可以在编辑类窗口中使用SendMessage(WM_CHAR)
  • 我不明白你的反对票。这个问题还不错。我只是一个没有winapi经验的菜鸟,请尊重。谢谢彼得

标签: qt winapi


【解决方案1】:

如果内容是文本,您可以使用SendMessage()WM_CHAR 发送到目标窗口。

还要注意窗口应该是编辑窗口或者其他需要获取WM_CHAR的子窗口,以记事本为例:

#include <iostream>
#include <Windows.h>

int main()
{
    HWND hWndParent = FindWindowW(NULL, L"test.txt - Notepad");
    HWND hwnd = FindWindowExW(hWndParent, NULL, L"Edit", NULL);
    char str[] = "test_text";
    for (int i = 0; i < strlen(str); i++)
    {
        SendMessage(hwnd, WM_CHAR, str[i], 0);
    }
    return 0;
}

【讨论】:

  • 完美,德雷克!非常感谢!!
  • 很高兴为您提供帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-10
  • 1970-01-01
  • 2019-02-06
  • 1970-01-01
  • 2012-11-22
相关资源
最近更新 更多