【问题标题】:VBScript fails when sending left mouse click发送鼠标左键时 VBScript 失败
【发布时间】:2021-02-03 18:23:20
【问题描述】:

我正在尝试开发脚本来打开 thinkorswim 应用程序(股票/期权交易软件),以便我可以在我的 W10Pro pc Task Scheduler 应用程序中使用该脚本在每天指定的时间自动打开此应用程序。通过桌面快捷方式打开应用程序时,应用程序会显示一个登录窗口,需要用户名和密码。在此登录窗口中,鼠标左键单击用户名字段以激活它并输入信息,Tab 到密码字段以激活它并输入信息,然后 Tab,Tab 到“登录”按钮,然后按 Enter。

我正在使用的脚本如下。尝试发送鼠标左键时,它一直在第 6 行失败。

我有其他脚本(例如打开特定的 Excel 文件、打开记事本、每天重复运行大量宏等)在任务计划程序中成功运行,所以这特别令人沮丧。

主要问题 - 询问有关脚本的任何意见或建议。

我相信我的鼠标点击“发送键”的屏幕坐标是正确的,但它们是在没有使用坐标软件的情况下确定的。第二个问题 - 谁能推荐一些好的“免费软件”,以便我可以仔细检查坐标的准确性?

谢谢。

Set WshShell = WScript.CreateObject("WScript.Shell")
WScript.Sleep 1000 
WshShell.Run Chr(34) + "C:\Users\Tom Henry\AppData\Local\thinkorswim\thinkorswim.exe" + Chr(34)
WScript.Sleep 15000 
WshShell.AppActivate "thinkorswim"
WshShell.SendKeys "{CLICK LEFT,644,221}"
WScript.Sleep 1000 
WshShell.SendKeys "myusername"
WScript.Sleep 1000 
WshShell.SendKeys "{TAB}"
WshShell.SendKeys "mypassword"
WshShell.SendKeys "{TAB}"
WshShell.SendKeys "{TAB}"
WshShell.SendKeys "{ENTER}"
Set WshShell = Nothing

【问题讨论】:

  • 在(遥远的)过去,我会使用 AutoIt 来处理这类事情。
  • 你不能用鼠标点击发送键。您从程序而不是 Windows 中找到代码。

标签: vbscript wsh


【解决方案1】:

这里是:

Option Explicit
Dim Excel, x, y
Set Excel = WScript.CreateObject("Excel.Application")
x = "644"
y = "221"
Excel.ExecuteExcel4Macro ( _
    "CALL(""user32"",""SetCursorPos"",""JJJ""," & x & "," & y & ")")
' Left Click
    Excel.ExecuteExcel4Macro("CALL(""User32"",""mouse_event"",""JJJJJJ""," & "2" & ")")
    Excel.ExecuteExcel4Macro("CALL(""User32"",""mouse_event"",""JJJJJJ""," & "4" & ")")

并且,在浏览器中(如果您需要特定坐标但不想下载任何粗略的程序),将鼠标移动到您希望坐标所在的位置。按 ctrl + shift + J,然后将这段代码粘贴到:

onmousemove = function(e){console.log("mouse location:", e.clientX, e.clientY)}

然后按回车键。然后,稍微移动鼠标。然后,您将获得估计坐标!

注意:可能不准确。因此,如果它关闭,请在 VBScript 代码中调整 x 和 y。

享受吧!

【讨论】:

    猜你喜欢
    • 2017-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-10
    • 1970-01-01
    • 2011-02-28
    • 1970-01-01
    相关资源
    最近更新 更多