Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Aktives Windows-Fenster aus Batch-Skript heraus bestimmen ?

Frage Entwicklung

Mitglied: schine

schine (Level 1) - Jetzt verbinden

12.12.2008, aktualisiert 13.12.2008, 13447 Aufrufe, 7 Kommentare

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
Mitglied: 72648
12.12.2008 um 23:31 Uhr
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
Bitte warten ..
Mitglied: bastla
13.12.2008 um 14:43 Uhr
Hallo schine und willkommen im Forum!

Der Vorschlag von Milo2000 sollte sich (etwas modifiziert) etwa so umsetzen lassen:
01.
@echo off & setlocal 
02.
if "%~1" neq "" goto :Ein 
03.
 
04.
set "QUELLPFAD=D:\Dein Pfad\" 
05.
set "QUellDATEI=Dein.pdf" 
06.
 
07.
set S=%temp%\StartReader.vbs 
08.
> %S% echo PID=CreateObject("WScript.Shell").Exec("""C:\Program Files\Adobe\Reader\AcroRd32.exe"" ""%QUELLPFAD%%QUELLDATEI%""").ProcessID 
09.
>>%S% echo WScript.Sleep 2000:CreateObject("WScript.Shell").Run """%~f0"" " ^&PID 
10.
cscript //nologo %S% & exit 
11.
 
12.
:Ein 
13.
echo %1 
14.
set /p "Eingabe=Hier die Eingabe: " 
15.
echo %Eingabe% 
16.
::Weitere Verarbeitung 
17.
pause 
18.
::Reader schließen 
19.
taskkill /PID %1 >nul
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
Bitte warten ..
Mitglied: 72648
13.12.2008 um 15:41 Uhr
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
Bitte warten ..
Mitglied: bastla
13.12.2008 um 18:33 Uhr
@72648
Danke für die Anmerkung - und wollen wir hoffen, dass schines User die Inventar-Nummern nicht tatsächlich mit XP Home eingeben müssen ...

Grüße
bastla
Bitte warten ..
Mitglied: 72648
13.12.2008 um 18:45 Uhr
@bastla

Da hast du recht, obwohl es vielleicht den ein oder anderen Arbeitsplatz schaffen würde

Gruß Milo
Bitte warten ..
Mitglied: schine
18.12.2008 um 22:29 Uhr
Hallo Bastla und Milo,

danke für eure Hilfe.
Das VB-Skript kann ich unter XP Pro dann mit dem Befehl "cscript" ausführen, oder ?

Wie könnte man das denn bewerkstelligen z. B. eine Nummer aus einer PDF-Datei zu extrahieren ? Da manche davon handschriftlich sind: könnte man auch handschriftliches aus dem PDF extrahieren (Schönschrift Mal vorausgesetzt) ?

ciao

Schine
Bitte warten ..
Mitglied: Biber
19.12.2008 um 00:01 Uhr
Moin schine,

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.
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
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Windows 7
gelöst Batch-Skript oder VBS Skript zum Sichern von Office Vorlagen (2)

Frage von Ceejaay zum Thema Windows 7 ...

Batch & Shell
gelöst Batch-Skript für Druckerzuweisung auf Terminalserver - Variablenproblem (3)

Frage von BirdyB zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch-Skript: Messdaten in Textdatei finden und in eine neue Datei schreiben (5)

Frage von habmalnefrage zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (25)

Frage von M.Marz zum Thema Windows Server ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Windows 7
Verteillösung für IT-Raum benötigt (12)

Frage von TheM-Man zum Thema Windows 7 ...