【发布时间】:2019-08-13 14:21:45
【问题描述】:
我使用 IBM Personal Communications 12.0.3.0 的宏记录器制作了一个凭据输入宏。它只是在调用时输入我的用户名和密码。
sub Credentials()
Dim username
Dim password
username = "myUser"
password = "myPass"
autECLSession.autECLOIA.WaitForAppAvailable
autECLSession.autECLOIA.WaitForInputReady
autECLSession.autECLPS.SendKeys username
autECLSession.autECLPS.SendKeys "[enter]"
autECLSession.autECLOIA.WaitForAppAvailable
autECLSession.autECLOIA.WaitForInputReady
autECLSession.autECLPS.SendKeys password
autECLSession.autECLPS.SendKeys "[enter]"
end sub
在其他工作流程中,我经常需要多次输入我的用户名/密码才能在窗口之间切换,所以我认为这些较新的宏在出现此类提示时只需调用 Credentials() 会更简单。我还必须经常更改我的大型机密码,因此只需在 Credentials() 宏中替换一次密码文本就比较理想了。
这是我想使用存储的Credentials() 过程的示例:
sub Login()
autECLSession.autECLOIA.WaitForAppAvailable
autECLSession.autECLOIA.WaitForInputReady
autECLSession.autECLPS.SendKeys "server name"
autECLSession.autECLPS.SendKeys "[enter]"
autECLSession.autECLOIA.WaitForAppAvailable
autECLSession.autECLPS.StartMacro "Credentials"
end sub
我的问题存在于autECLSession.autECLPS.StartMacro "Credentials" 行。在我尝试使用更经典的 vbscript 命令来运行宏的其他尝试中,我会遇到执行错误,但使用 ... .StartMacro "Creds" 行 - 什么都没有发生。
基于this documentation by IBM,StartMacro(String MacroName) 方法应运行位于由MacroName 参数指示的PCOMM 用户类应用程序数据目录中的宏文件。我将这两个宏作为单独的 .mac 文件存储在用户类应用程序数据目录 ("C:\Users\%USERNAME%\AppData\Roaming\IBM\PersonalCommunications") 中,指定为 here under 'typical installation'。
这就是我所说的典型的 vbs 尝试调用另一个宏(代替StartMacro())的意思:
'doesn't work
Shell "C:\Users\marcucciboy2\AppData\Roaming\IBM\Personal Communications\Credentials.mac"
'neither works
dim ObjShell
Set objShell = CreateObject("WScript.Shell")
ObjShell.Run "cscript C:\Users\marcucciboy2\AppData\Roaming\IBM\Personal Communications\Credentials.mac"
'ObjShell.Run "cscript \\C:\Users\marcucciboy2\AppData\Roaming\IBM\Personal Communications\Credentials.mac"
【问题讨论】:
-
是否可以选择使用 PowerShell?
-
明确地说,我对任何事情都持开放态度:)
-
请注意,这两个子例程存在于不同的文件中。我敢打赌,将它们放在一个文件中将允许一个调用另一个,但是,我不知道在这种情况下如何分别调用每个文件。
标签: vbscript mainframe ibm-pcomm