02. august 2001 - 01:25
Der er
2 kommentarer og
2 løsninger
SendKeys gennem hWnd
Hvordan Sender jeg en tast til et program som \"IKKE er Activate\", jeg har prøvet med:
\'------------- Form1 -------------
Private Declare Function SendMessage Lib \"user32\" Alias \"SendMessageA\" _
(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Integer, ByVal lParam As Any) As Long
Const WM_SETTEXT = &HC
Dim chWnd As Long
Private Sub Command1_Click()
textbuffer$ = 2
SendMessage chWnd, WM_SETTEXT, 0, ByVal textbuffer$
End Sub
Private Sub Form_Load()
\'Åbner Lommeregneren
chWnd = Shell(\"C:\\WINDOWS\\CALC.EXE\", vbNormalFocus)
End Sub
\'------------- Form1 -------------
men det funker sku ikke hjælp ;)
02. august 2001 - 02:57
#4
Man bør også lave det i et module men når man bare skal lave det som et eksempel, så man hurtig kan sette det ind i en Form. ;)
Og nu har jeg fundet en løsning. :-)
\'--------------------------------- Form1 ---------------------------------
Private Declare Function PostMessage Lib \"user32\" Alias \"PostMessageA\" _
(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, _
ByVal lParam As Long) As Long
Private Declare Function FindWindow Lib \"user32\" Alias \"FindWindowA\" _
(ByVal lpClassName As Long, ByVal lpWindowName As Long) As Long
Private Declare Function GetParent Lib \"user32\" (ByVal hwnd As Long) As Long
Private Declare Function GetWindowThreadProcessId Lib \"user32\" _
(ByVal hwnd As Long, lpdwProcessId As Long) As Long
Private Declare Function GetWindow Lib \"user32\" (ByVal hwnd As Long, ByVal wCmd As Long) As Long
Const GW_HWNDNEXT = 2
Const WM_KEYDOWN As Long = &H100
Const VK_NUMPAD0 = &H60
Const VK_NUMPAD1 = &H61
Const VK_NUMPAD2 = &H62
Const VK_NUMPAD3 = &H63
Const VK_NUMPAD4 = &H64
Const VK_NUMPAD5 = &H65
Const VK_NUMPAD6 = &H66
Const VK_NUMPAD7 = &H67
Const VK_NUMPAD8 = &H68
Const VK_NUMPAD9 = &H69
Dim Chwnd As Long
Function InstanceTohWnd(ByVal IsId As Long) As Long
Dim Is_hwnd As Long, pid As Long, thread_id As Long
Is_hwnd = FindWindow(ByVal 0&, ByVal 0&)
Do While Is_hwnd <> 0
If GetParent(Is_hwnd) = 0 Then
thread_id = GetWindowThreadProcessId(Is_hwnd, pid)
If pid = IsId Then
InstanceTohWnd = Is_hwnd
Exit Do
End If
End If
Is_hwnd = GetWindow(Is_hwnd, GW_HWNDNEXT)
Loop
End Function
Private Sub Command1_Click()
PostMessage Chwnd, WM_KEYDOWN, VK_NUMPAD1, 0
PostMessage Chwnd, WM_KEYDOWN, VK_NUMPAD2, 0
PostMessage Chwnd, WM_KEYDOWN, VK_NUMPAD3, 0
End Sub
Private Sub Form_Load()
Command1.Caption = \"Send 123\"
Chwnd = InstanceTohWnd(Shell(\"C:\\WINDOWS\\CALC.EXE\", vbNormalNoFocus))
End Sub
\'--------------------------------- Form1 ---------------------------------