gpt4 book ai didi

VBA 命令行对象请求登录,等待用户输入

转载 作者:行者123 更新时间:2023-12-01 04:47:21 25 4
gpt4 key购买 nike

我写了一个脚本,通过命令行提示符从程序中获取一些信息。
只要您登录到我试图从中提取信息的程序,就可以获取信息。

这是我连接到程序的方式:

Set Appl = CreateObject("WScript.Shell").Exec("cmd.exe im connect")

返回(如果您未登录):
(请注意:这是我在命令窗口中手动键入命令时的理论输出)
Connecting to <some server or another>...
Authentication failed for <user: me> on <some server or another>
Enter password for <user: me> on <some server or another> (*****):

这就是我的宏卡住的地方。

我试过检查返回字符串“输入密码”,但由于调用 shell 的文件系统对象卡在等待用户输入,我无法真正做任何事情。

所以所有这些都不起作用:
Set ApplOutput = Appl.StdOut
While Not ApplOutput.AtEndOfStream
sLine = ApplOutput.ReadLine
If Left(sLine, 14) = "Enter password" Then
MsgBox ("ERROR!!" & vbCrLf & "Please login to the Integrity Client")
End If
Wend

有什么方法可以检查命令窗口是否正在等待用户输入(如上例所示),如果是,将命令窗口放在前面并要求用户输入密码?
如果可能的话,宏之后应该可以顺利运行。

感谢您提前提供任何输入!

编辑:由于我尝试运行的命令不是很常见,请考虑通过宏运行“runas”命令的问题。 runas 同样会提示输入密码,例如:
runas /noprofile /user:Administrator cmd

编辑2:
每次提供凭据的问题如下:
请求密码的程序会在您成功输入一次后保存密码以登录服务器。这意味着下次您必须输入它时(在最好的情况下)三个月后,标准密码轮换要求您为您的用户帐户设置新密码。因此,每次都必须输入密码,因为每三个月都不起作用,这真的很烦人..

最佳答案

如果“shell 在等待用户输入时卡住了”,那么可能没有简单的解决方案...... VBA 不是多线程的,所以如果 shell .Exec正在等待用户输入,没有出现错误,并且正在执行。不幸的是,这意味着您不能“闯入”该线程并使用 FindWindow或其他 API 调用来操作 CMD 窗口。

一种方法是通过 AppWinStyle arguments 之一到 Exec 语句(另请参阅:this vb.net 答案),以便最大化 CMD 窗口,以便无论凭据检查如何,用户都可以立即看到它。这样,如果登录失败,他们会看到并有机会做出回应。

关于VBA 命令行对象请求登录,等待用户输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45545144/

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