AW: Noch eine Frage ...
21.03.2021 11:33:02
Nepumuk
Hallo Dieter,
teste mal:
Option Explicit
Private Declare PtrSafe Sub keybd_event Lib "user32.dll" ( _
ByVal bVk As Byte, _
ByVal bScan As Byte, _
ByVal dwFlags As Long, _
ByVal dwExtraInfo As LongPtr)
Private Declare PtrSafe Function FindWindowA Lib "user32.dll" ( _
ByVal lpClassName As String, _
ByVal lpWindowName As String) As LongPtr
Private Declare PtrSafe Function FindWindowExA Lib "user32.dll" ( _
ByVal hWnd1 As LongPtr, _
ByVal hWnd2 As LongPtr, _
ByVal lpsz1 As String, _
ByVal lpsz2 As String) As LongPtr
Private Declare PtrSafe Sub Sleep Lib "kernel32.dll" ( _
ByVal dwMilliseconds As Long)
Private Declare PtrSafe Function SendMessageA Lib "user32.dll" ( _
ByVal hwnd As LongPtr, _
ByVal wMsg As Long, _
ByVal wParam As LongPtr, _
ByVal lParam As Any) As LongPtr
Private Const KEYEVENTF_KEYDOWN As Long = &H0
Private Const KEYEVENTF_KEYUP As Long = &H2
Private Const VK_WIN As Long = &H5B
Private Const WM_SETTEXT As Long = &HC
Private Const BM_CLICK = &HF5
Private Const GC_CLASSNAMEMSDIALOG As String = "#32770"
Private Const GC_CLASSNAMECOMBOBOX As String = "ComboBox"
Private Const GC_CLASSNAMEEDIT As String = "Edit"
Private Const GC_CLASSNAMEBUTTON As String = "Button"
Public Sub WinR()
Dim lngptrDialogHandle As LongPtr, lngptrComboBoxHandle As LongPtr
Dim lngptrEditBoxHandle As LongPtr, lngButtonHandle As LongPtr
Call keybd_event(VK_WIN, 1, KEYEVENTF_KEYDOWN, 0)
Call keybd_event(vbKeyR, 1, KEYEVENTF_KEYDOWN, 0)
Call keybd_event(vbKeyR, 1, KEYEVENTF_KEYUP, 0)
Call keybd_event(VK_WIN, 1, KEYEVENTF_KEYUP, 0)
DoEvents
lngptrDialogHandle = FindWindowA(GC_CLASSNAMEMSDIALOG, "Ausführen")
lngptrComboBoxHandle = FindWindowExA(lngptrDialogHandle, 0, GC_CLASSNAMECOMBOBOX, vbNullString)
Call Sleep(100)
lngptrEditBoxHandle = FindWindowExA(lngptrComboBoxHandle, 0, GC_CLASSNAMEEDIT, vbNullString)
Call SendMessageA(lngptrEditBoxHandle, WM_SETTEXT, 0, "devmgmt.msc")
lngButtonHandle = FindWindowExA(lngptrDialogHandle, 0, GC_CLASSNAMEBUTTON, "OK")
Call SendMessageA(lngButtonHandle, BM_CLICK, 0&, ByVal 0&)
End Sub
Gruß
Nepumuk