【发布时间】:2019-02-06 22:03:22
【问题描述】:
我的 windows 窗体在启动时导航到一个网站,我还给窗体一个按钮让我登录到该网站。 我的问题是,现在我希望在运行程序时自动按下该按钮。我给按钮的标签索引为 0,这样我就可以在它运行时模拟“输入”按钮。但是,“输入”没有在表单上注册。我的代码如下.. ps。我正在使用来自 nuget 的 inputsimulator aka windowsinput(适用于控制台)但不适用于表单
我不想使用发送/获取方法
using System;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.Drawing;
using WindowsInput.Native;
using WindowsInput;
namespace FormLogin
{
class Program
{
[STAThread]
static void Main()
{
var sim = new InputSimulator();
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
sim.Keyboard.Sleep(3000).KeyDown((VirtualKeyCode.RETURN));
}
}
}
实际结果 - 表单加载,未按下按钮 预期结果 - 表单加载,按下 Enter 并登录。
【问题讨论】:
-
你试过在
Application.Run上设置断点吗?我相信在new Form1()关闭之前不会执行下一行。如果您希望在表单加载时发生某些事情,请将代码放入表单构造函数或Form_Load事件中。 -
感谢您的回答。在表单实例关闭之前,我不知道下一行不会运行。我是 c# 的新手,所以我将使用 Form_Load 看看我是否可以让它工作
-
@RufusL 我终于明白了,非常感谢。我被困在了我不知道问题出在其他地方的地方。
-
我的程序现在可以在启动后按 Enter 键并将我登录到网站。我现在如何添加更多代码以在我登录后执行,以便我可以通过网页中的超链接自动导航?我必须使用异步和等待吗?我假设我不能只添加到显示的表单 w3bbrows3r.Navigate("webpage.com");线程.睡眠(2000); var s = new InputSimulator(); s.Keyboard.KeyPress(VirtualKeyCode.RETURN);线程.睡眠(2000); s.Keyboard.KeyPress(VirtualKeyCode.TAB); s.Keyboard.KeyPress(VirtualKeyCode.TAB);
-
你为什么认为这行不通?如果没有,请发布一个新问题