lynnv 0 Geschrieben 11. August 2017 Melden Teilen Geschrieben 11. August 2017 Hallo Ihr Allwissende ;-) Ich würde gerne die ProcessID eines in VBS gestarteten Programms auslesen, aber das Programm ist unbekannt ! __________________________________________________________________________________________ Dim objAccessSet objAccess = CreateObject("Access.Application")objAccess.OpenCurrentDatabase "D:\Access\Pemax\DeviceMaterTest.accdb"objAccess.Visible = falseSet rs = objAccess.CurrentDb.Openrecordset("SELECT tmpAuswahl.* FROM tmpAuswahl;")while NOT rs.EOF strFile = rs("Pfad") Set objShellApp = WScript.CreateObject("Shell.Application") objShellApp.ShellExecute strFile, "", "", "print", 0 Set objShellApp = Nothing rs.MoveNextwendrs.closeobjAccess.CloseCurrentDatabaseobjAccess.Quit _________________________________________________________________________________________ Geht dass überhaupt ? LG Lynn Zitieren Link zu diesem Kommentar
MurdocX 949 Geschrieben 11. August 2017 Melden Teilen Geschrieben 11. August 2017 (bearbeitet) Starte dein Script in der CMD/Ausführen über cscript.exe "MeinSkript.vbs" oder wscript.exe "MeinSkript.vbs" dann kannst du die ID dir im TaskManager ansehen. bearbeitet 11. August 2017 von MurdocX Zitieren Link zu diesem Kommentar
NilsK 2.934 Geschrieben 11. August 2017 Melden Teilen Geschrieben 11. August 2017 Moin, @MurdocX: er möchte nicht die ID des Skriptprozesses, sondern die von der Applikation, die er im Skript aufgerufen hat. @lynnv: Soweit ich sehe, gibt ShellExecute keine Informationen zurück, da dürftest du also schlechte Karten haben. Eine andere Methode sollte hier helfen: Set objShell = CreateObject("WScript.Shell") comspec = objShell.ExpandEnvironmentStrings("%comspec%") Set objExec = objShell.Exec(comspec & " /c ipconfig") WScript.Echo objExec.ProcessID Aber mal ganz grundsätzlich: Es scheint mir keine gute Idee, einen "beliebigen" Wert aus einer Datenbank einfach mal so zum Ausführen eines Prozesses zu nutzen ... das öffnet Angriffen Tür und Tor. Gruß, Nils Zitieren Link zu diesem Kommentar
MurdocX 949 Geschrieben 11. August 2017 Melden Teilen Geschrieben 11. August 2017 @MurdocX: er möchte nicht die ID des Skriptprozesses, sondern die von der Applikation, die er im Skript aufgerufen hat. Ah, danke. Dann hätte ich hier vielleicht noch etwas: stackoverflow | Find my own process ID in VBScript https://stackoverflow.com/questions/8296037/find-my-own-process-id-in-vbscript Zitieren Link zu diesem Kommentar
lynnv 0 Geschrieben 11. August 2017 Autor Melden Teilen Geschrieben 11. August 2017 (bearbeitet) Hallo Nils, danke für Deine schnelle Antwort und Empfehlung. Was meinst Du mit "einen "beliebigen" Wert aus einer Datenbank einfach mal so zum Ausführen eines Prozesses zu nutzen" ? Ich habe eine Datenbank, in der sind Dateien inclusive Pfade enthalten, die in einem Script ausgedruckt werden sollen. LG Lynn PS: Ich bin kein "er" ;-) (@MurdocX: er möchte nicht die ID des Skriptprozesses, sondern die von der Applikation, die er im Skript aufgerufen hat.) Hallo MurdocX, danke, aber ich kenne ja die Anwendung nicht, daher hilft mir Dein Link nicht weiter, aber trotzdem danke. LG Lynn bearbeitet 11. August 2017 von lynnv Zitieren Link zu diesem Kommentar
MurdocX 949 Geschrieben 11. August 2017 Melden Teilen Geschrieben 11. August 2017 danke, aber ich kenne ja die Anwendung nicht, daher hilft mir Dein Link nicht weiter, aber trotzdem danke. Ich glaube schon das Dir das weiterhilft. Denn es wird nach der "commandline" abgefragt. Das ist die die du ausführst um das Programm zu starten. Diese Information wird vom BS gespeichert und danach wird via WMI abgefragt. Set oChldPrcs = oWMI.ExecQuery(_ "Select * From Win32_Process Where CommandLine Like '%" & sCmd & "'",,32) Zitieren Link zu diesem Kommentar
NilsK 2.934 Geschrieben 11. August 2017 Melden Teilen Geschrieben 11. August 2017 Moin, ja, das "er" war natürlich falsch, entschuldige. Mir ist jetzt aber auch überhaupt nicht mehr klar, was dein Skript nun eigentlich macht und welche Process ID du hast. Zunächst dachte ich, dass dein Skript die Pfade zu ausführbaren Dateien ausliest und diese dann ausführt - darauf bezog sich mein Hinweis. Anscheinend ist das aber gar nicht der Fall. Also beschreib doch noch mal genauer, was da eigentlich passiert bzw. passieren soll. Dann haben wir vielleicht eine bessere Idee davon, was wir vorschlagen können. Gruß, Nils Zitieren Link zu diesem Kommentar
lynnv 0 Geschrieben 11. August 2017 Autor Melden Teilen Geschrieben 11. August 2017 Hallo Nils, vorweg, ich kenne mich NICHT in VBscript aus und das was ich habe, ist aus solch guten Foren wie hier ;-) Ich habe eine Datenbank, in der stehen verschiedene Dateien mit dem entsprechenden Pfad, es handelt sich hier um PDF-, Word-, Excel- und die üblichen Bilddateien. Diese sollen nun in EINEM Rutsch gedruckt werden. Funktioniert mit dem Script auch fast, aber bei Bilddateien wird ein Druckdialog aufgerufen. Nun würde ich gerne diesen Druckdialog bestätigen (mit Sendkeys). Aber, es ist ja nun so, dass das Script weiterläuft :-( Nun wollte ich die ProcessID auslesen und das Script solange anhalten, bis dieser Process beendet ist ;-) Ich hoffe es ist verständlich beschrieben. LG Lynn Hallo MurdocX, glaube nicht dass es hilft ;-) Kenne mich zwar nicht in VBscript aus, jedoch würde ich behaupten, dass Set oChldPrcs = oWMI.ExecQuery(_"Select * From Win32_Process Where CommandLine Like '%" & sCmd & "'",,32) die ID des gestarteten Scripts ausliest. Kann mich natürlich irren. LG Lynn Zitieren Link zu diesem Kommentar
Sunny61 806 Geschrieben 11. August 2017 Melden Teilen Geschrieben 11. August 2017 Probier es aus und du wirst erhellt. :) Zitieren Link zu diesem Kommentar
lynnv 0 Geschrieben 11. August 2017 Autor Melden Teilen Geschrieben 11. August 2017 Hallo Sunny61, Fehlermeldung: Object erforderlich: oWMI LG Lynn Zitieren Link zu diesem Kommentar
NilsK 2.934 Geschrieben 11. August 2017 Melden Teilen Geschrieben 11. August 2017 Moin, OK, nachvollziehbar, aber doch ziemlich von hinten durch die Brust ins Auge ... wie wäre es denn, wenn du anstelle der SendKeys-Akrobatik einen Bildbetrachter suchst, der direkt auf einen Standarddrucker druckt, statt einen Druckdialog zu zeigen? SendKeys ist sehr problematisch und geht bei sowas oft in die Hose. Mal ganz davon abgesehen, dass die Methode, die du hier brauchst, um den Druckbefehl zu senden, eben keine Process ID zurückgibt. Gruß, Nils Zitieren Link zu diesem Kommentar
lynnv 0 Geschrieben 11. August 2017 Autor Melden Teilen Geschrieben 11. August 2017 Moin moin Nils, aber es wird doch im Hintergrund ein Programm gestartet und dies sollte eine ID haben, oder sehe ich dies falsch ? LG Lynn Sunny61, ja, wenn man nicht zu dumm ist, Code korrekt zu kopieren ....:-) Nun kommt eine Nummer, ich danke Euch allen. LG Lynn Zitieren Link zu diesem Kommentar
NilsK 2.934 Geschrieben 11. August 2017 Melden Teilen Geschrieben 11. August 2017 Moin, nein, das siehst du nicht falsch. Aber deine Methode, das Programm zu starten, gibt dir diese ID nicht zurück. Und statt jetzt zusätzliche Klimmzüge einzubauen, die die ID irgendwie rausfinden, um damit den Klimmzug mit SendKeys zu implementieren (der aus zahlreichen anderen Gründen fehlschlagen kann) ... du verstehst? Gruß, Nils Zitieren Link zu diesem Kommentar
MurdocX 949 Geschrieben 11. August 2017 Melden Teilen Geschrieben 11. August 2017 Hallo MurdocX, danke, aber ich kenne ja die Anwendung nicht, daher hilft mir Dein Link nicht weiter, aber trotzdem danke. LG Lynn Nun kommt eine Nummer, ich danke Euch allen. War der Link also doch ein Treffer? :cool: Zitieren Link zu diesem Kommentar
lynnv 0 Geschrieben 11. August 2017 Autor Melden Teilen Geschrieben 11. August 2017 Lieber Nils, Du (und ich) hast recht, es wird mit dem Code vom Link-Beispiel nur die ID des Scripts aufgerufen ;-(Aber ich kann doch nur so "verschiedene" Dateiarten aufrufen, hmmm. Leider zu früh gefreut. LG Lynn War der Link also doch ein Treffer? :cool: Leider nicht ;-( Hallo Nils, habe Deine Frage noch nicht beantwortet: ... wie wäre es denn, wenn du anstelle der SendKeys-Akrobatik einen Bildbetrachter suchst Das geht nicht, weil die verschiedenen User ja Ihre LIEBLINGS-Bildbearbeitungsprogramme haben ;-) Shellexecute ruft ja dass mit der Datei verbundene Programm auf und wenn dann auf dem jeweiligen PC NICHT der Bildbetrachter drin steht, ist wohl auch wieder nichts. LG Lynn Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.