【问题标题】:How does one use a CPP program to insert text into a window? [closed]如何使用 CPP 程序将文本插入窗口? [关闭]
【发布时间】:2014-06-09 02:11:04
【问题描述】:

我每周两次在一个程序中运行大约 50 个相同的命令。例如,我键入“unix”(然后按 Enter)将程序置于 unix 模式,然后键入“ftp 192.168.1.1”(然后按 Enter)开始文件传输。我想自动化这个过程,因为它会减少错误,节省时间,并让我学习另一个 CPP 工具。

我已经搜索了大约 5 次解决方案,但我没有找到任何东西。很感谢任何形式的帮助!拜托,我不想为了更简单的事情而放弃 CPP。

Edit:该程序是与 AIX 一起使用的文本编辑器。待插入的文本每周都有细微的变化。

【问题讨论】:

  • 你说的是文本编辑器吗?您应该考虑使用更强大的文本编辑器,例如 vim/emacs... 但如果您非常确定,您必须告诉我们您使用的操作系统。编辑:我看到标签太晚了。我会写一个例子。
  • 你试过什么? Google 中的“将密钥发送到窗口”会显示数十个参考资料、教程等。这个网站是为了在您遇到困难时帮助您克服特定的障碍,而不是为您做所有的研究。 (仅供参考 /- Windows 是一个非常糟糕的环境,可以在其中执行此操作,因为当您的程序模拟用户输入操作时,您不能自己使用计算机)。
  • 每次输入都一样吗?它是 GUI 程序还是控制台程序?在后一种情况下,考虑将所有输入放入一个文本文件并执行myprogram.exe <input.txt
  • 可能是WM_SETTEXT。然后发送一条消息说您按下了输入或按下了按钮或其他东西。当然,如果它是一个控制台程序,上面的重定向解决方案绝对是一个更好的选择。如果应用程序对可访问性开放,那也很好。
  • 有问题的工具是什么?如果它是 PuTTY 或 CMD.exe 之类的东西,您只需将命令行粘贴进去,它就会全部执行。如果它是在 CLI 上运行的程序,您可以像 Seva Alekseyev 建议的那样通过管道输入命令。

标签: c++ windows text


【解决方案1】:

请注意,我写这篇文章只是为了好玩,它不一定是做事的正确方法。我假设您正在与您无法控制的 GUI 进行交互。

假设我每次点击ALT+SHIFT+b 时都想写字符unix。由于您使用的是 Windows,因此我们将使用 Windows API。所以你应该#include <windows.h>

现在,让我们注册我们的热键,并制作一个可以...接受消息的 MSG。

RegisterHotKey(NULL, 1, MOD_ALT | MOD_SHIFT, 66)
MSG msg = {0};

让我们检查它是否被按下,如果是,我们调用一个函数。

while(GetMessage(&msg,NULL,0,0)!=0){
    if(msg.message==WM_HOTKEY)
        myFunc();
}

现在myFunc(); 做了什么?

myFunc(){
    HWND handle = GetActiveWindow();
    SendMessage(handle,WM_SETTEXT, NULL, (LPARAM)_T("unix"));
}

你有它。也许。我不记得 Windows API 的来龙去脉了,我个人自己也没有尝试过。

但这应该足以让你继续前进,并向你展示谷歌的内容。

【讨论】:

  • 这真的很有帮助。但是,当我按 shift + alt + b 时,什么也没有发生。除了 SendMessage() 命令之外,我可以看到它的大部分工作原理。
  • 嘿,我希望你能看到这个。在您的帮助下,我完成了我的程序。 i.imgur.com/C1v8Tv0.png
  • 恭喜!我很高兴能帮上忙。希望你的程序有用! :)
猜你喜欢
  • 2011-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-22
  • 1970-01-01
  • 2011-04-19
  • 2016-04-21
  • 1970-01-01
相关资源
最近更新 更多