我正在自动化一些流程。我运行一个 VB.net 应用程序,需要输入密码,Tab 到“登录”按钮,发送回车,Tab 到“运行加载”按钮,然后按 Enter。SendKey 部分似乎不是问题;它让正确的应用程序成为焦点。我希望 form.TopMost 可以提供帮助,但不幸的是并非如此。
[DllImport("User32")]
private static extern int SetForegroundWindow(int hwnd);
public void runDailyWS()
{
string homeWSPath = "D:\\...";
var home = Process.Start(homeWSPath);
var procName = "DataLoad Home Test - Copy";
Process[] p = Process.GetProcessesByName(procName);
// Activate the first application we find with this name
if (p.Count() > 0)
{
SetForegroundWindow(p[0].MainWindowHandle);
SendKeys.SendWait("{TAB}");
SendKeys.SendWait("password");
SendKeys.SendWait("{TAB}");
SendKeys.SendWait("{TAB}");
SendKeys.SendWait("{TAB}");
SendKeys.SendWait("{ENTER}");
}
///Did not post rest of code after this point as it's unnecessary
我尝试了几种不同的方法将 VB.net 应用程序/进程放在前面,奇怪的是它有时可以工作,但有时还不够好。有没有人有任何想法?我也查看了前 6 个左右的谷歌搜索结果。谢谢。
编辑:为了澄清,这段代码启动了一个 VB.net 应用程序,我正在尝试自动击键以输入凭据并通过按 Enter 启动应用程序。但是,为了使击键实际注册,VB.net 应用程序需要是活动窗口。还将我的代码更改为有效的代码(它工作了 1/7 次尝试)。