首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C# SetforegroundWindow to VB.Net然后SendKeys

C# SetforegroundWindow to VB.Net然后SendKeys
EN

Stack Overflow用户
提问于 2014-07-30 02:20:58
回答 1查看 848关注 0票数 1

我在自动化一些流程。我运行一个VB.net应用程序,需要输入密码,按tab键转到“登录”按钮,发送enter,按tab键转到"run loads“按钮,然后按enter键。SendKey部分似乎不是问题所在;它使正确的应用程序成为焦点。我希望form.TopMost能帮上忙,但不幸的是事实并非如此。

代码语言:javascript
复制
[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次)。

EN

回答 1

Stack Overflow用户

发布于 2014-07-30 03:01:33

我添加了Thread.Sleep(2000);,因为代码只是在应用程序有机会完全加载之前输入击键。我不知道这个解决方案是否会对其他人有帮助,但它肯定是值得考虑的。感谢那些做出贡献的人。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25022333

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档