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, 13781 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 ..
Ähnliche Inhalte
Neue Wissensbeiträge
Administrator.de Feedback

Umgangsformen auf der Seite

(7)

Information von Frank zum Thema Administrator.de Feedback ...

Windows 10

Windows 8.x oder 10 Lizenz-Key aus dem ROM auslesen mit Linux

(10)

Tipp von Lochkartenstanzer zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Batch & Shell
Dir tc Befehl unter Windows 10 macht Probleme (12)

Frage von sugram zum Thema Batch & Shell ...

Windows Server
Windows Server 2016 RDS Remoteapp Anzeigefehler (11)

Frage von qlnGenius zum Thema Windows Server ...

Windows Server
Festplatten Ruhezustand Windows Server 2016 (10)

Frage von ahaeuser zum Thema Windows Server ...