Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在C++中向应用程序发送击键_C++_Windows_Acrobat_Keystroke - Fatal编程技术网

如何在C++中向应用程序发送击键

如何在C++中向应用程序发送击键,c++,windows,acrobat,keystroke,C++,Windows,Acrobat,Keystroke,我正在尝试制作一个程序,使用Adobe Acrobat Reader打开Acrobat文件,并将其自动保存在文本文件中。 我想让我的程序做的是: 打开pdf 发送Alt+Tab//以移动到acrobat选项卡 发送Alt+F//以打开文件 向下发送4次//选择“另存为文本”选项 发送回车//保存 我正在使用Windows操作系统。 有人能帮我做这个吗 我的finel目标是在数据库中自动保存2500个pdf文件的标题和作者,你有什么更好的建议吗?这就是我想到的。您需要使用Spy++并在执行这些操作

我正在尝试制作一个程序,使用Adobe Acrobat Reader打开Acrobat文件,并将其自动保存在文本文件中。 我想让我的程序做的是:

打开pdf 发送Alt+Tab//以移动到acrobat选项卡 发送Alt+F//以打开文件 向下发送4次//选择“另存为文本”选项 发送回车//保存 我正在使用Windows操作系统。 有人能帮我做这个吗


我的finel目标是在数据库中自动保存2500个pdf文件的标题和作者,你有什么更好的建议吗?这就是我想到的。

您需要使用Spy++并在执行这些操作时观察传递到窗口的消息。请注意,使用Acrobat打开PDF和抓取窗口句柄是不同的操作。从这里开始,看看:


如@Alf所述,如果您不习惯Win32消息传递,那么它将非常困难,而且非常脆弱。我建议您尝试另一种方法,但如果您使用Google win32 sendmessage或win32 sendkeys,您应该开始使用这些方法。

您将需要使用Spy++并在执行这些操作时观察传递到窗口的消息。请注意,使用Acrobat打开PDF和抓取窗口句柄是不同的操作。从这里开始,看看:

如@Alf所述,如果您不习惯Win32消息传递,那么它将非常困难,而且非常脆弱。我建议你尝试另一种方法,但如果你用谷歌搜索win32 sendmessage或win32 sendkeys,你就可以开始了

1模拟击键以与另一个应用程序交互是一个非常糟糕的想法。你最好找一个API来做同样的事情

如果你仍然没有改变主意,请进一步阅读

2要保存,为什么不使用Ctrl+S保存,Ctrl+O打开。我相信你也会为其他人找到直接的捷径

这里有一个可能会有帮助的方法。

两件事

1模拟击键以与另一个应用程序交互是一个非常糟糕的想法。你最好找一个API来做同样的事情

如果你仍然没有改变主意,请进一步阅读

2要保存,为什么不使用Ctrl+S保存,Ctrl+O打开。我相信你也会为其他人找到直接的捷径

这里有一个可能有用的方法。

试试看。从其网站:

AutoIt是一种免费的Windows自动化语言。它可以用于编写大多数基于Windows的简单任务的脚本。

试试看。从其网站:


AutoIt是一种免费的Windows自动化语言。它可以用于编写大多数基于Windows的简单任务的脚本。

您可以使用SendMessage API向窗口发送鼠标和键盘消息,也可以使用模拟实际硬件事件的sendinput。我同意另一个人的意见,使用AutoIT

您可以使用SendMessage API将鼠标和键盘消息发送到窗口,也可以使用模拟实际硬件事件的sendinput。我同意另一个人的意见,使用AutoIT

有更好的阅读:比打开Acrobat Reader更快的选项,您选择此解决方案的原因是什么?我建议使用OLE自动化,从脚本语言(如VBScript或JScript)开始,它们与Windows捆绑在一起。或者,如果您要发送击键,但这很脆弱,使用脚本语言也更容易。Windows WScript自动化对象系列在某处提供了击键发送功能。是的,不管怎样,它涉及到谷歌搜索或阅读文档Adobe的自动化API是由Adobe编写的,Windows的WScript对象和好友是在MSDN库中编写的。我同意其他人说这是个坏主意。有更好的方法可以做到这一点…我的finel目标是在数据库中自动保存大约2500个pdf文件的标题和作者,您建议的更好方法是什么?有更好的阅读:比打开Acrobat Reader更快的选项,您选择此解决方案的原因是什么?我建议改用OLE Automation,从脚本语言(如VBScript或JScript)中,它们与Windows捆绑在一起。或者,如果您要发送击键,但这很脆弱,使用脚本语言也更容易。Windows WScript自动化对象系列在某处提供了击键发送功能。是的,不管怎样,它涉及到谷歌搜索或阅读文档Adobe的自动化API是由Adobe编写的,Windows的WScript对象和好友是在MSDN库中编写的。我同意其他人说这是个坏主意。有更好的方法可以做到这一点…我的finel目标是在数据库中自动保存大约2500个pdf文件的标题和作者,你建议的更好的方法是什么?但仍然有一个问题,我可以让autoit运行记事本,方法是给Runnotepad.exe,就像我尝试获取RunacroRD32.exe一样,但它不起作用,知道为什么吗?这可能不在你的道路上。你试过把完整的路径放进去吗?例如:RunC:/Prog
ram文件/Adobe/acroRD32.exe但是仍然有一个问题,我可以通过给Runnotepad.exe这样的命令让autoit运行记事本。我试着让Runnotepad.exe运行,但它不起作用,知道为什么吗?它可能不在你的路径中。你试过把完整的路径放进去吗?例如:RunC:/Program Files/Adobe/acroRD32.exe