Jump to content

ProcessID feststellen


Direkt zur Lösung Gelöst von lynnv,
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo Ihr Allwissende ;-)

 

Ich würde gerne die ProcessID eines in VBS gestarteten Programms auslesen, aber das Programm ist unbekannt !

__________________________________________________________________________________________

Dim objAccess
Set objAccess = CreateObject("Access.Application")

objAccess.OpenCurrentDatabase "D:\Access\Pemax\DeviceMaterTest.accdb"
objAccess.Visible = false

Set 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.MoveNext
wend
rs.close

objAccess.CloseCurrentDatabase
objAccess.Quit

_________________________________________________________________________________________

 

Geht dass überhaupt ?

 

LG

 

Lynn

Link zu diesem Kommentar

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

Link zu diesem Kommentar

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 von lynnv
Link zu diesem Kommentar

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)
Link zu diesem Kommentar

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

Link zu diesem Kommentar

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

Link zu diesem Kommentar

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

Link zu diesem Kommentar

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

Link zu diesem Kommentar

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

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...