当前位置: 代码迷 >> VB Dotnet >> 大神求命!为什么小弟我通过句柄实现不了按回车
  详细解决方案

大神求命!为什么小弟我通过句柄实现不了按回车

热度:49   发布时间:2016-04-25 02:10:23.0
大神求命!为什么我通过句柄实现不了按回车?
Declare Auto Function SendMessage Lib "user32.dll" (ByVal hWnd As IntPtr, ByVal msg As Integer, ByVal wParam As IntPtr, ByVal lParam As IntPtr) As IntPtr
    Private Declare Function SendMessage2 Lib "user32" Alias "SendMessageA" (ByVal hwnd As IntPtr, ByVal wMsg As IntPtr, ByVal wParam As IntPtr, ByVal lParam As String) As Integer

Private Const WM_SETTEXT As Integer = &HC
Private Const WM_KEYDOWN As Integer = &H100
Private Const WM_KEYUP As Integer = &H101
Private Const vbKeyReturn As Integer = 13
'每5秒在指定的文本框里输入 5 然后 回车

 Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        SendMessage(hWnd WM_KEYDOWN, vbKeyReturn, 0L)
        SendMessage(hWnd, WM_KEYUP, vbKeyReturn, 0L)
        SendMessage2(hWnd WM_SETTEXT, 0, "5")
    End Sub
------解决思路----------------------
一般的建议都是不要用SendMessage模拟键盘操作,因为键盘的实际事件很复杂,用这个很可能和正常情况不一样。可以用SendKeys.Send方法,比如回车:
SendKeys.Send("{ENTER}");

------解决思路----------------------
引用:
Quote: 引用:

你应该是要吧回车键发送的别的软件的窗口把?如果是自己的一般不会用这种方式吧

对的!就是要给一个指定的文本框发送一个回车动作!我这么写一点效果都无这个回车!



  SendTextMessage(Codebox, 0xC, 0, textBox1.Text);//发送文本
  PostMessage(Codebox, 0x0100, (int)Keys.Enter, 0);//发送回车
用这句话试试,其中Codebox是你要发送的文本框的句柄,keys.enter你可以用键值来代替,这应该可以的,但是前提是你要有那个文本框的焦点,这个很复杂,如果你需要的话再说把

  相关解决方案