Aktives Windows-Fenster aus Batch-Skript heraus bestimmen ?
Hallo,
ich habe das Folgende Problem bei einem Batch-Programm:
Ich lasse in meinem Batch-Skript per "start"-Befehl eine
PDF-Datei mit dem Acrobat-Reader öffnen:
start "Dokumenttitel" "C:\Program Files\Adobe\Reader\AcroRd32.exe" %QUELLPFAD%%QUELLDATEI%
Das Öffnen funktioniert einwandfrei, jedoch wird beim Öffnen das neu geöffnete Fenster
(vom Acrobat Reader) als aktives Fenster in Windows gesetzt.
Von der geöffneten PDF-Datei soll aber nur vom Benutzer eine Inventar-Nummer abgelesen und
dann im Batch-Programm (das vorherige Fenster) eingetippt werden.
Umständlicherweise muss der Benutzer aber dann erst wieder zum vorherigen CMD-Fenster in
dem das Batch-Skript die Eingabe abfragt zurückwechseln (mit Maus oder ALT+TAB).
Wie kann man aus dem Batch-Skript heraus das aktive Windows-Fenster bestimmen ?
Oder kann man verhindern, dass sich das aktive Fenster auf den Acrobat Reader ändert ?
Gibt es auch eine Möglichkeit aus dem Batch-Skript heraus die Fenster-Position zu bestimmen ?
Danke im Voraus für die Hilfe.
ciao
Schine
ich habe das Folgende Problem bei einem Batch-Programm:
Ich lasse in meinem Batch-Skript per "start"-Befehl eine
PDF-Datei mit dem Acrobat-Reader öffnen:
start "Dokumenttitel" "C:\Program Files\Adobe\Reader\AcroRd32.exe" %QUELLPFAD%%QUELLDATEI%
Das Öffnen funktioniert einwandfrei, jedoch wird beim Öffnen das neu geöffnete Fenster
(vom Acrobat Reader) als aktives Fenster in Windows gesetzt.
Von der geöffneten PDF-Datei soll aber nur vom Benutzer eine Inventar-Nummer abgelesen und
dann im Batch-Programm (das vorherige Fenster) eingetippt werden.
Umständlicherweise muss der Benutzer aber dann erst wieder zum vorherigen CMD-Fenster in
dem das Batch-Skript die Eingabe abfragt zurückwechseln (mit Maus oder ALT+TAB).
Wie kann man aus dem Batch-Skript heraus das aktive Windows-Fenster bestimmen ?
Oder kann man verhindern, dass sich das aktive Fenster auf den Acrobat Reader ändert ?
Gibt es auch eine Möglichkeit aus dem Batch-Skript heraus die Fenster-Position zu bestimmen ?
Danke im Voraus für die Hilfe.
ciao
Schine
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 103980
Url: https://administrator.de/contentid/103980
Ausgedruckt am: 19.11.2024 um 17:11 Uhr
7 Kommentare
Neuester Kommentar
Hallo Schine,
ich glaube kaum, dass es mit Batch funktioniert.
Da wirst du wohl auf VB umsteigen müssen.
Hier mal ein wink in die Richtung:
set newobj=createobject("wscript.shell")
newobj.run("C:\xyz\test.exe"),2
Wenn man diese Datei ausführt, startet test.exe minimiert.
Der 2er am Ende der 2.Zeile kann auch noch durch andere Parameter ersetzt werden:
0 - kein fenster proggi unsichtbar
1 - normal
2 - mimimiert starten
3 - maximiert
4 - wie letzes mal
5 - wie 4 aber aktiv
6 - mimimiert nächstes sichtbar
7 - mimimiert aktives bleibt aktiv
8 - standartgröße aktives bleibt aktiv
9 - aktiv + normale größe
10 - fenstermodus richtet sich nach scriptfenster
du kannst ein solches VB Script auch einfach aus der Batch heraus erzeugen.
Gruß Milo
ich glaube kaum, dass es mit Batch funktioniert.
Da wirst du wohl auf VB umsteigen müssen.
Hier mal ein wink in die Richtung:
set newobj=createobject("wscript.shell")
newobj.run("C:\xyz\test.exe"),2
Wenn man diese Datei ausführt, startet test.exe minimiert.
Der 2er am Ende der 2.Zeile kann auch noch durch andere Parameter ersetzt werden:
0 - kein fenster proggi unsichtbar
1 - normal
2 - mimimiert starten
3 - maximiert
4 - wie letzes mal
5 - wie 4 aber aktiv
6 - mimimiert nächstes sichtbar
7 - mimimiert aktives bleibt aktiv
8 - standartgröße aktives bleibt aktiv
9 - aktiv + normale größe
10 - fenstermodus richtet sich nach scriptfenster
du kannst ein solches VB Script auch einfach aus der Batch heraus erzeugen.
Gruß Milo
Hallo schine und willkommen im Forum!
Der Vorschlag von Milo2000 sollte sich (etwas modifiziert) etwa so umsetzen lassen:
Soferne "taskkill.exe" verfügbar ist (also ab XP), sollte dieser Batch den Reader starten, danach selbst neu gestartet werden und so über dem Reader als aktives Fenster liegen, und am Ende den Reader-Prozess beenden.
Soferne der Batch mit Parametern gestartet werden soll, müsste eine Anpassung erfolgen, da in der obigen Variante beim ersten Start kein Parameter und beim zweiten Start die "ProcessID" des Reader-Fensters erwartet wird.
Ob es nicht sinnvoller wäre, zu versuchen, die entsprechende Nummer aus der PDF-Datei zu extrahieren und somit automatisiert weiterverarbeiten zu können, musst Du selbst beurteilen ...
Grüße
bastla
Der Vorschlag von Milo2000 sollte sich (etwas modifiziert) etwa so umsetzen lassen:
@echo off & setlocal
if "%~1" neq "" goto :Ein
set "QUELLPFAD=D:\Dein Pfad\"
set "QUellDATEI=Dein.pdf"
set S=%temp%\StartReader.vbs
> %S% echo PID=CreateObject("WScript.Shell").Exec("""C:\Program Files\Adobe\Reader\AcroRd32.exe"" ""%QUELLPFAD%%QUELLDATEI%""").ProcessID
>>%S% echo WScript.Sleep 2000:CreateObject("WScript.Shell").Run """%~f0"" " ^&PID
cscript //nologo %S% & exit
:Ein
echo %1
set /p "Eingabe=Hier die Eingabe: "
echo %Eingabe%
::Weitere Verarbeitung
pause
::Reader schließen
taskkill /PID %1 >nul
Soferne der Batch mit Parametern gestartet werden soll, müsste eine Anpassung erfolgen, da in der obigen Variante beim ersten Start kein Parameter und beim zweiten Start die "ProcessID" des Reader-Fensters erwartet wird.
Ob es nicht sinnvoller wäre, zu versuchen, die entsprechende Nummer aus der PDF-Datei zu extrahieren und somit automatisiert weiterverarbeiten zu können, musst Du selbst beurteilen ...
Grüße
bastla
Hallo,
nettes Skript, eine anmerkung hätte ich dennoch, Taskkill.exe ist erst ab XP Pro verfügbar. Unter XP Home ist standartmäßig nur Tskill.exe dabei und der Parameter /PID muss nicht mit angegeben werden bsp. tskill %1 >nul .
Gruß Milo
nettes Skript, eine anmerkung hätte ich dennoch, Taskkill.exe ist erst ab XP Pro verfügbar. Unter XP Home ist standartmäßig nur Tskill.exe dabei und der Parameter /PID muss nicht mit angegeben werden bsp. tskill %1 >nul .
Gruß Milo
@bastla
Da hast du recht, obwohl es vielleicht den ein oder anderen Arbeitsplatz schaffen würde
Gruß Milo
Da hast du recht, obwohl es vielleicht den ein oder anderen Arbeitsplatz schaffen würde
Gruß Milo
Moin schine,
mal abgesehen davon, ob so etwas wie eine OCR-Erkennung noch mit vertretbarem Aufwand handwerlich machbar ist - schon hier bei diesem Satz:
Ich würde an Deiner Stelle prüfen, ob dieser Eure praktizierte Prozess denn wirklich in seiner Eigenart erhaltenswert ist.
Es muss doch möglich sein - wenn es um Inventarnummern geht, die naturgemäß in einem zentralen System gehalten werden müssen - dass diese Daten am Ort ihrer Entstehung erfasst, und zwar digital erfasst werden und nicht irgendwann später von eingescannten fliegenden Zetteln abgelesen werden.
Da ist irgendwas schiefgelaufen, drängt sich mir der Eindruck auf.
Grüße
Biber
mal abgesehen davon, ob so etwas wie eine OCR-Erkennung noch mit vertretbarem Aufwand handwerlich machbar ist - schon hier bei diesem Satz:
Von der geöffneten PDF-Datei soll aber nur vom Benutzer eine Inventar-Nummer abgelesen und
dann im Batch-Programm (das vorherige Fenster) eingetippt werden.
. ..hatte ich mir damals verkniffen, darauf hinzuweisen, dass Batch/Skripting eine gute gute Wahl zur Automatisierung von unvermeidlich anfallenden Alltagsprozessen sind.dann im Batch-Programm (das vorherige Fenster) eingetippt werden.
Ich würde an Deiner Stelle prüfen, ob dieser Eure praktizierte Prozess denn wirklich in seiner Eigenart erhaltenswert ist.
Es muss doch möglich sein - wenn es um Inventarnummern geht, die naturgemäß in einem zentralen System gehalten werden müssen - dass diese Daten am Ort ihrer Entstehung erfasst, und zwar digital erfasst werden und nicht irgendwann später von eingescannten fliegenden Zetteln abgelesen werden.
Da ist irgendwas schiefgelaufen, drängt sich mir der Eindruck auf.
Grüße
Biber