如何让表单在不干扰其他程序的情况下向其自身发送Tab,Enter,Left Arrow等按键?如果我使用SendKeys.Send方法,它会将它发送到任何打开的窗口。有没有办法只使用表单?如何仅将按键发送到窗体而不是其他窗口?
非常快随便举个例子:
比方说,我有5个textBoxs我点击“标签”按钮5倍。会发生什么 ?
它会将焦点从一个文本框更改为另一个右边?
- 我可以自动发生这种情况......就像它发生在后台,只发生在窗体本身。所以,如果我在记事本上输入内容,我不想收到这5个选项卡。
顺便说一下,我知道我可以使用这段代码来改变fofucs,但记住它只是一个例子。
TextBox1.Focus
我真的很希望有人来告诉我怎么去正确的地方,但是我对我自己制作的进步,但是我正在寻找更多的帮助。我所需要的只是间接地点击Tab按钮(没有我在窗体上处于活动状态),而没有使用sendkeys方法。可能吗?
这里是我的尝试,我认为这是错误
Private Declare Ansi Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hwnd As Integer, ByVal wMsg As Integer, ByVal wParam As Integer, ByVal lParam As String) As Integer
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Integer, ByVal hWnd2 As Integer, ByVal lpsz1 As String, ByVal lpsz2 As String) As Integer
Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Integer
Public Const WM_CHAR = &H102
Dim hwnd As Integer = FindWindow(vbNullString, "Form1")
Dim x As Integer = FindWindowEx(hwnd, 0, "WindowsForms10.EDIT.app.0.14fd2b5", vbNullString)
Dim keys As Keys
' send some keys
SendMessage(x, WM_CHAR, Keys.Tab, 0)
为什么是错误的?
因为不是点击'标签'它将标签发送到文本框,所以我仍然关注同一个文本框。它并没有将焦点转移到下一个文本框。
请如果它可能帮助我,如果不是,我会尝试更多我自己的。
究竟你在做什么?解决一半问题并不是一个好主意(“哈哈!我知道!我会伪造输入”)并请求另一半的帮助(“我该如何伪造输入?”)。如果您告诉我们您要解决什么问题,您会得到更好的答案。 – 2011-03-13 23:29:50
@martinhofernandes无论发生什么事情都会自动发生,或者与我猜测的点击效果相同。 – Questions 2011-03-14 02:43:23
我仍然不明白为什么TextBox1.Focus不会这样做。你为什么认为你需要伪装自己的应用程序? – 2011-03-14 02:43:40