다른 사람도 도움이되기를 바랍니다. 키보드 명령을 시뮬레이트하는 SendInput 코드 예제를 찾으려고합니다. 메모장 창을 찾고 테스트 메시지를 입력하고 싶습니다.SendInput VB 기본 예
내가 작업하고있는 프로젝트에서 처음에 SendKeys를 사용했지만 SendKeys 기능을 사용하여 직장에서 사용하는 맞춤형 소프트웨어에 키보드 명령을 전달할 수있었습니다.
누군가가 도울 수 있기를 바랍니다. 인터넷에서 예제가 작동하지 않는 것 같습니다.
SendInput 메서드가 방해가되는지, 즉받는 사람 창에 손상을 줄 수 있는지 조언 할 수있는 사람도 있습니다.
SendKey 메서드가 작동했지만 안정성이 매우 떨어졌고 누락 된 것 같습니다.
많은 감사
사라
편집 : 나는 인터넷에 다음 코드를 발견
, 다음은 SendInput을 방법은? 나는 'SendKey'라는 용어가 사용 된 것을 알고 있는가?
Private Declare Function SendInput Lib "user32.dll" _
(ByVal nInputs As Long, ByRef pInputs As Any, _
ByVal cbSize As Long) As Long
Private Declare Function VkKeyScan Lib "user32" Alias "VkKeyScanA" _
(ByVal cChar As Byte) As Integer
Private Type KeyboardInput ' typedef struct tagINPUT {
dwType As Long ' DWORD type;
wVK As Integer ' union {MOUSEINPUT mi;
wScan As Integer ' KEYBDINPUT ki;
dwFlags As Long ' HARDWAREINPUT hi;
dwTime As Long ' };
dwExtraInfo As Long ' }INPUT, *PINPUT;
dwPadding As Currency ' 8 extra bytes, because mouses take more.
End Type
Private Const INPUT_MOUSE As Long = 0
Private Const INPUT_KEYBOARD As Long = 1
Private Const KEYEVENTF_KEYUP As Long = 2
Private Const VK_LSHIFT = &HA0
Public Sub SendKey(ByVal Data As String)
Dim ki() As KeyboardInput
Dim i As Long
Dim o As Long ' output buffer position
Dim c As String ' character
ReDim ki(1 To Len(Data) * 4) As KeyboardInput
o = 1
For i = 1 To Len(Data)
c = Mid$(Data, i, 1)
Select Case c
Case "A" To "Z": ' upper case
ki(o).dwType = INPUT_KEYBOARD 'shift down
ki(o).wVK = VK_LSHIFT
ki(o + 1) = ki(o) ' key down
ki(o + 1).wVK = VkKeyScan(Asc(c))
ki(o + 2) = ki(o + 1) ' key up
ki(o + 2).dwFlags = KEYEVENTF_KEYUP
ki(o + 3) = ki(o) ' shift up
ki(o + 3).dwFlags = KEYEVENTF_KEYUP
o = o + 4
Case Else: ' lower case
ki(o).dwType = INPUT_KEYBOARD
ki(o).wVK = VkKeyScan(Asc(c))
ki(o + 1) = ki(o)
ki(o + 1).dwFlags = KEYEVENTF_KEYUP
o = o + 2
End Select
Next i
Debug.Print SendInput(o - 1, ki(1), LenB(ki(1))),
Debug.Print Err.LastDllError
End Sub
Private Sub Command1_Click()
Text1.Text = ""
Text1.SetFocus
DoEvents
Call SendKey("This Is A Test")
End Sub
vb.net이 아닌 VBA? – NickSlash
죄송합니다 - vba 용입니다 – sara2011
PtrSafe를 추가 할 때조차도 64 비트에서 작동하지 않습니다. – wtjones