Informationen und Beispiele zum Thema MsgBox | |
---|---|
![]() |
MsgBox-Seite mit Beispielarbeitsmappe aufrufen |
Betrifft: AppActivate & Nummernblockphänomen
von: Mario
Geschrieben am: 28.01.2010 08:13:36
Guten Morgen,
vielleicht hat jemand ja einen Lösungsansatz / Erklärung für folgendes Problem.
Per Shell öffne ich ein Programm. Ist in der Zelle C11 ein Wert gesetzt, schließe ich das Programm direkt wieder per Sendkey (Alt+F4).
Hier der Auszug aus meinem code:
....
Status = Shell("C:\Programm.exe", 1)
If ActiveSheet.Range("C11").Value = True Then
AppActivate Status
SendKeys "%{F4}", True
End if
Gehen wir von True aus - die Bedingung ist also erfüllt und Programm.exe soll direkt wieder geschlossen werden.
Frage 1) wieso schaltet sich dann der Nummernblock nach Ausführen des Codes manchmal ein bzw. aus?
Frage 2) Excel ist deaktiviert und lässt sich nur per Mausklick wieder aktivieren. Kann ich die Task-Id der Arbeitsmappe welche meinen Code enthält irgendwie auslesen und dann per AppActivate wieder aktivieren? AppActivate ("Microsoft Excel") und ähnliche Versuche funktionieren nicht.
Vielen Dank!
mario
Betrifft: dies liegt an SendKeys ...
von: Tino
Geschrieben am: 28.01.2010 08:47:44
Hallo,
versuch mal sowas.
Private Declare Function OpenProcess Lib "kernel32" ( _ ByVal dwDesiredAccess As Long, _ ByVal bInheritHandle As Long, _ ByVal dwProcessId As Long) As Long Private Declare Function TerminateProcess Lib "kernel32" ( _ ByVal hProcess As Long, _ ByVal uExitCode As Long) As Long Private Declare Function CloseHandle Lib "kernel32" ( _ ByVal hObject As Long) As Long Sub test() Dim lTaskID As Double Dim lhwnd As Long, lResult As Long lTaskID = Shell("C:\Windows\system32\notepad.exe", 1) '... '... '... 'Task beenden lhwnd = OpenProcess(1&, 0&, CLng(lTaskID)) TerminateProcess lhwnd, 1& lResult = CloseHandle(lhwnd) If lResult = 1 Then MsgBox "Prog geschlossen" End SubGruß Tino
Betrifft: AW: dies liegt an SendKeys ...
von: Mario
Geschrieben am: 28.01.2010 09:07:13
mann-oh-mann!
das klappt einfach PRIMA!!!! :-)
Vielen herzlichen Danke Tino!
mario