c#设置foregroundwindow到VB.Net,然后是SendKeys
本文关键字:然后 SendKeys Net VB 设置 foregroundwindow | 更新日期: 2023-09-27 18:15:33
我正在自动化一些流程。我运行一个VB.net应用程序,需要输入一个密码,tab通过"登录"按钮,发送回车,tab通过"运行加载"按钮,并按回车。SendKey部分似乎不是问题所在;它让正确的应用程序聚焦。我希望是形式。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次尝试)。
我添加了Thread.Sleep(2000);
,因为代码只是在应用程序完全加载之前输入击键。我不知道这个解决方案是否对其他人有帮助,但绝对值得考虑。感谢那些做出贡献的人。