hätte da eine frage.Würde mich freuen wenn mir jemand helfen könnte.Versuche schon seid längerer zeit mit einem VBA Makro ein andere programm zu steuern.
Leider klappt das nicht ganz wie ich das möchte weil die Antwortzeiten des anderem programmes nicht immer gleich sind.
Deshalb habe ich mir überlegt das ich das ganze überprüfen lasse.Also überprüfen und mein Programm warten lasse bis das gewünschte fenster aktiv ist.
Aber irgendwie komme ich damit nicht klar.Nur was mache ich falsch.Würde mich über Hilfe sehr freuen.
Hier der code mit dem ich versuche das ganze zu steuern.
'um Makro bestimmte Zeit in Millisekunden warten zu lassen
Declare
Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Public Declare
Function GetForegroundWindow Lib "user32" () As Long
Public Declare
Function GetWindowTextLength Lib "user32" Alias "GetWindowTextLengthA" (ByVal hwnd As Long) As _
Long
Public Declare
Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString _
As String, ByVal cch As Long) As Long
Public Declare
Function GetWindowRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long
Public Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
'Für Tastaturklicks
Public Declare
Sub keybd_event Lib "user32.dll" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, _
ByVal dwExtraInfo As Long)
Dim hwCurr As Long
Dim intLen As Long
Dim strTitle As String
Dim Size As RECT
Sub prog1_leeer()
AppActivate ("Dokumente suchen:Selektionskriterien"), True ' Fenster aktivieren
'20 mal "entfernen" drücken (um evtl. vorhandene Nummer zu löschen
For ll = 1 To 30
SendKeys "{DELETE}", True
Next
' einfügen der Nummer
SendKeys Cells(1, 1), True
Sleep 50
For ii = 1 To 3
SendKeys "{TAB}", True
Next
' eintragen der Version
Sleep 50
SendKeys Cells(1, 2), True
Sleep 50
SendKeys "{F8}", True
Sleep 1000
'Hier wird das Fenster noch einmal aktiviert ob das nötig ist weiß ich nicht .. ? da es ja _
schon aktiv sein sollte.
AppActivate ("Dokumentliste")
Sleep 200
SendKeys "^+{F10}", True
'Hier sollte meine überprüfung sein dei aber nicht klappt.
'Die do while schleife sollte so lange laufen im Hintergrund bis das fenster mit dem titel " _
Dokument 'ändern" aktiv ist und den focus hat.
Do While strTitle "Dokument ändern"
hwCurr = GetForegroundWindow
intLen = GetWindowTextLength(hwCurr) + 1
strTitle = Space$(intLen)
intLen = GetWindowText(hwCurr, strTitle, intLen)
'welches_fenster = strTitle
Loop
'Hier soll der code dann weiterlaufen.
For ll = 1 To 5
SendKeys "{DELETE}", True
Next
SendKeys "12", True
'Speichern der geänderten Daten
SendKeys "^s", True
MsgBox ("gespeichert")
End Sub
Function welches_fenster()
hwCurr = GetForegroundWindow
intLen = GetWindowTextLength(hwCurr) + 1
strTitle = Space$(intLen)
intLen = GetWindowText(hwCurr, strTitle, intLen)
welches_fenster = strTitle
End Function