VB.NET中发送击键的简单应用

VB.NET中发送击键的简单应用,vb.net,sendkeys,Vb.net,Sendkeys,我有一个关于Sendkeys类的问题,因为我想使用这个类向活动应用程序发送一些击键。 作为第一步,我想测试{Enter}击键,因此为了实现这一点,我在vb.NET2010中制作了一个简单的应用程序 Public Class Form1 Public Shared data As String Private Sub SendintText(command As String) Try SendKeys.SendWait(command) Catch e As Ex

我有一个关于Sendkeys类的问题,因为我想使用这个类向活动应用程序发送一些击键。 作为第一步,我想测试{Enter}击键,因此为了实现这一点,我在vb.NET2010中制作了一个简单的应用程序

Public Class Form1
Public Shared data As String
Private Sub SendintText(command As String)
    Try
        SendKeys.SendWait(command)
    Catch e As Exception
        MsgBox(e.StackTrace)
    End Try
End Sub

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    data = TextBox1.Text.ToString
    SendingText(data)
End Sub
末级

当我尝试运行{Enter}时,我收到无穷循环错误: System.Windows.Forms.dll中发生类型为“System.StackOverflowException”的未处理异常 有人能帮我吗

稍后编辑:在此期间,我发现了另一个例子

Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    System.Threading.Thread.Sleep(2000)
    SendKeys.SendWait("{ENTER}")
End Sub
如果在后台,我有两个应用程序:

  • Visual Studio
  • 目标应用程序
  • 我怎样才能专注于目标应用程序,因为现在当我运行表单时,该表单变为活动状态。是否有任何解决方案可以使用某些参数(我要发送的键)从命令提示符调用winform

    稍后编辑2 strong文本 我已经放弃了windows窗体的想法,所以最后我在控制台应用程序中制作了一个简单的程序来模拟按键。。。导入系统 导入System.Windows.Forms

    模块1

    Sub Main(ByVal args() As String)
        Dim data As String = args(0)
        Console.WriteLine("You insert the : {0}", data)
        System.Threading.Thread.Sleep(5000)
        SendKeys.SendWait(data)
    End Sub
    
    端模块

    顺便说一下,为了在参数中使用双引号,您需要“test\”…(我花了15分钟来找出答案),所以它可能是有用的。。。
    再次感谢您提供的信息。

    按钮有焦点。按钮单击事件发送一个回车键。发送enter会触发按钮单击事件。无限循环

    您可以在sendkeys例程完成之前禁用该按钮,然后在停止无限循环之后重新启用该按钮


    您可能想做的是将焦点切换回要将击键发送到的应用程序。

    要将键发送到另一个应用程序,您需要首先在按钮上激活该应用程序,然后单击“发送键”


    当你们点击按钮时,它会得到焦点。那么向按钮发送密钥的目的是什么呢?我只是想测试向应用程序发送密钥(通过在文本框中输入该密钥)的过程……有没有可能做到这一点?当然可以。你看过了吗?你在搜索什么?我已经放弃了这个想法,但最终我在控制台上做了一个简单的程序我尝试过设置焦点,但我收到了相同的错误…也许我遗漏了什么…我只是想测试一个参数化发送键…这就是这个简单应用程序的目的。举个例子,在我发布问题之前,我已经阅读了它。我还注意到,当我运行这个windows窗体应用程序时,即使我打开了另一个应用程序,焦点也总是在windows窗体上……我无法在VB.NET中运行它,因为“SendWait不是SendKeys的成员”。有什么建议吗?@LeoKing你参考过System.Windows.Forms吗?就是这样。谢谢
    // Get a handle to an application window.
    [DllImport("USER32.DLL", CharSet = CharSet.Unicode)]
    public static extern IntPtr FindWindow(string lpClassName,
        string lpWindowName);
    
    // Activate an application window.
    [DllImport("USER32.DLL")]
    public static extern bool SetForegroundWindow(IntPtr hWnd);
    
    // Send a series of key presses to the Calculator application.
    private void button1_Click(object sender, EventArgs e)
    {
        // Get a handle to the Calculator application. The window class
        // and window name were obtained using the Spy++ tool.
        IntPtr calculatorHandle = FindWindow("CalcFrame","Calculator");
    
        // Verify that Calculator is a running process.
        if (calculatorHandle == IntPtr.Zero)
        {
            MessageBox.Show("Calculator is not running.");
            return;
        }
    
        // Make Calculator the foreground application and send it 
        // a set of calculations.
        SetForegroundWindow(calculatorHandle);
        SendKeys.SendWait("111");
        SendKeys.SendWait("*");
        SendKeys.SendWait("11");
        SendKeys.SendWait("=");
    }