cumulonimbus8
Fleet Admiral
- Registriert
- Apr. 2012
- Beiträge
- 19.326
Moin!
Auch wenn VBA die Startrampe ist erkenne ich keine Logik.
CMD muss als ausführendes Element herhalten da Tools die wir brauchen nun mal eine solche Umgebung brauchen. In einer »Batterie« (Schleife in Excel bemüht Code im Spoiler) wird eine Reihe von Dateien vom Web-Server auf den lokalen geholt und auch verarbeitet. Das passiert vielmals am Tage und automatisiert.
Eigentlich lassen wir die Rechner in Ruhe machen. Dann und wann müssen wir aber mal ran, dann und wann wird der Dienstrechner hergenommen diese Aufgaben ›im Hintergrund‹ laufen zu lassen - Wartung, Kontrolle, Änderungen.
Und dieser Hintergrund ist der Stolperstein. Nach MS sorgt der der Schalter MinimizedNoFocus dafür, dass CMD ohne zu stören abläuft, gewissermaßen abgelaufen wird. Warum, und das ist die Frage, reißt aber jedes Mal das Aufrufen von CMD trotzdem der gerade offenen Anwendung den Fokus weg?
Das ist blöd wenn man das macht und alle Sekunden wird einem das Tippen unterbrochen, Menüs klappen wieder zu. Arbeiten unmöglich.
Wie also kann ein Aufruf, der MinimizedNoFocus sein, soll auch realisiert werden?
Oder sitzen wir in der Falle, dass W10 einfach keine Fokuskotrolle kann - siehe die alten PowerToys Für XP - ›Prevent Applications Stealing Focus‹ - was auch prima funktionierte? Denkfehler oder Betriebssystemmacke?
CN8
Auch wenn VBA die Startrampe ist erkenne ich keine Logik.
Code:
Public Function ShellXNoFoc(ByVal PfadName As String, Optional ByVal WindowStyle As Long = vbMinimizedNoFocus, Optional ByVal Events As Boolean = True) As Long
Const STILL_ACTIVE = &H103&
Const PROCESS_QUERY_INFORMATION = &H400&
Dim ProcId As Long
Dim ProcHnd As Long
ProcId = Shell(PfadName, WindowStyle)
ProcHnd = OpenProcess(PROCESS_QUERY_INFORMATION, True, ProcId)
Do
If Events Then DoEvents
GetExitCodeProcess ProcHnd, ShellXNoFoc
Loop While ShellXNoFoc = STILL_ACTIVE
CloseHandle ProcHnd
End Function
Eigentlich lassen wir die Rechner in Ruhe machen. Dann und wann müssen wir aber mal ran, dann und wann wird der Dienstrechner hergenommen diese Aufgaben ›im Hintergrund‹ laufen zu lassen - Wartung, Kontrolle, Änderungen.
Und dieser Hintergrund ist der Stolperstein. Nach MS sorgt der der Schalter MinimizedNoFocus dafür, dass CMD ohne zu stören abläuft, gewissermaßen abgelaufen wird. Warum, und das ist die Frage, reißt aber jedes Mal das Aufrufen von CMD trotzdem der gerade offenen Anwendung den Fokus weg?
Das ist blöd wenn man das macht und alle Sekunden wird einem das Tippen unterbrochen, Menüs klappen wieder zu. Arbeiten unmöglich.
Wie also kann ein Aufruf, der MinimizedNoFocus sein, soll auch realisiert werden?
Oder sitzen wir in der Falle, dass W10 einfach keine Fokuskotrolle kann - siehe die alten PowerToys Für XP - ›Prevent Applications Stealing Focus‹ - was auch prima funktionierte? Denkfehler oder Betriebssystemmacke?
CN8
Zuletzt bearbeitet: