VB.NET中发送击键的简单应用
我有一个关于Sendkeys类的问题,因为我想使用这个类向活动应用程序发送一些击键。 作为第一步,我想测试{Enter}击键,因此为了实现这一点,我在vb.NET2010中制作了一个简单的应用程序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
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
如果在后台,我有两个应用程序:
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("=");
}