gpt4 book ai didi

shell - 在 VBA shell 命令中使用 AppActivate 和 Sendkeys

转载 作者:行者123 更新时间:2023-12-04 14:19:05 24 4
gpt4 key购买 nike

我想在 VBA 中使用 shell 命令在应用程序之间来回切换。
我正在使用 SendKeys 在进程 A 中执行操作,然后移动到进程 B,然后处理 A,然后处理 B。它在第一次迭代中工作正常。当我使用 AppActivate 返回进程 B 时,它实际上确实将焦点切换回进程 B。但是,它会忽略来自 SendKeys 的后续命令。

示例代码:

Sub pastePDF2TXT_v3(pdfName As String, txtName As String)


Dim acrobatID
Dim acrobatInvokeCmd As String
Dim acrobatLocation As String

Dim notepadID

Dim acrobatID2
Dim notepadID2

Debug.Print "here"


acrobatLocation = "C:\Program Files\Adobe\Acrobat 9.0\Acrobat\Acrobat.exe"

acrobatInvokeCmd = acrobatLocation & " " & pdfName

acrobatID = Shell(acrobatInvokeCmd, 1)
AppActivate acrobatID
SendKeys "^a", True '^A selects everything already in the pdf file.
SendKeys "^c", True '^C copies the selection to the clipboard.



notepadID = Shell("NOTEPAD.EXE " & txtName, 1) ' invoke notepad on the text file.
AppActivate notepadID ' set the new app as teh active task.

SendKeys "^a", True '^A selects everything already in the text file.
SendKeys "^v", True '^V pastes the new stuff over the top of the old text file (deleting the old stuff)
SendKeys "%{END}", True ' makre sure last line of text file
SendKeys "{ENTER}", True



AppActivate acrobatID ' NOTE: APPEARS TO WORK UP TO THIS POINT.

SendKeys "{ENTER}", True ' NOTE: SECOND APP IGNORES SUBSEQUENT COMMANDS FROM HERE DOWN.
SendKeys "^a", True '^A selects everything already in the pdf file.
SendKeys "^c", True '^C copies the selection to the clipboard.
SendKeys "%f", True 'alt f, x to exit Notepad.exe
SendKeys "x", True
'acrobatID.Quit


Debug.Print "start second"

AppActivate notepadID ' set the new app as teh active task.


SendKeys "%{END}", True 'Go to end of text file.
SendKeys "^v", True '^V pastes the new stuff at end of file.
SendKeys "{ENTER}", True

SendKeys "^s", True

SendKeys "%f", True 'alt f, x to exit Notepad.exe
SendKeys "x", True

notepadID.Quit
acrobatID.Quit

End Sub

最佳答案

我知道这个问题很老,但我遇到了同样的问题,但我认为选择的答案不是正确的。

当您调用 AppActivate 时,脚本会暂停,等待目标应用程序终止。应用程序终止后,脚本继续运行。我看不到这个问题的解决方案。

编辑:

我使用批处理文件为 AppActivate 命令调用 CSCRIPT,并且我注意到您严格使用 VBS 文件。尝试调用 CMD作为新窗口并通过CSCRIPT //NoLogo //B WScript.CreateObject("WSCript.shell").AppActivate("Window Name")作为论点,看看是否绕过了这个问题。

关于shell - 在 VBA shell 命令中使用 AppActivate 和 Sendkeys,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4675281/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com