Zum Inhalt wechseln


Foto

ProcessID feststellen

Windows 10

  • Bitte melde dich an um zu Antworten
20 Antworten in diesem Thema

#1 lynnv

lynnv

    Newbie

  • 7 Beiträge

 

Geschrieben 11. August 2017 - 11:19

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



#2 MurdocX

MurdocX

    Board Veteran

  • 476 Beiträge

 

Geschrieben 11. August 2017 - 11:36

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 von MurdocX, 11. August 2017 - 11:45.

Mit freundlicher Unterstützung
Jan


#3 NilsK

NilsK

    Expert Member

  • 12.100 Beiträge

 

Geschrieben 11. August 2017 - 11:48

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


Nils Kaczenski

MVP Cloud and Datacenter Management
... der beste Schritt zur Problemlösung: Anforderungen definieren!

Kostenlosen Support gibt es nur im Forum, nicht privat!


#4 MurdocX

MurdocX

    Board Veteran

  • 476 Beiträge

 

Geschrieben 11. August 2017 - 11:58

@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


Mit freundlicher Unterstützung
Jan


#5 lynnv

lynnv

    Newbie

  • 7 Beiträge

 

Geschrieben 11. August 2017 - 12:47

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, 11. August 2017 - 12:46.


#6 MurdocX

MurdocX

    Board Veteran

  • 476 Beiträge

 

Geschrieben 11. August 2017 - 12:49

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)

Mit freundlicher Unterstützung
Jan


#7 NilsK

NilsK

    Expert Member

  • 12.100 Beiträge

 

Geschrieben 11. August 2017 - 12:54

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


Nils Kaczenski

MVP Cloud and Datacenter Management
... der beste Schritt zur Problemlösung: Anforderungen definieren!

Kostenlosen Support gibt es nur im Forum, nicht privat!


#8 lynnv

lynnv

    Newbie

  • 7 Beiträge

 

Geschrieben 11. August 2017 - 13:20

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



#9 Sunny61

Sunny61

    Expert Member

  • 21.972 Beiträge

 

Geschrieben 11. August 2017 - 13:28

Probier es aus und du wirst erhellt. :)
Gruppenrichtlinien: http://www.gruppenrichtlinien.de/

#10 lynnv

lynnv

    Newbie

  • 7 Beiträge

 

Geschrieben 11. August 2017 - 13:38

Hallo Sunny61,

 

Fehlermeldung:

Object erforderlich: oWMI

 

LG

 

Lynn



#11 NilsK

NilsK

    Expert Member

  • 12.100 Beiträge

 

Geschrieben 11. August 2017 - 13:41

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


Nils Kaczenski

MVP Cloud and Datacenter Management
... der beste Schritt zur Problemlösung: Anforderungen definieren!

Kostenlosen Support gibt es nur im Forum, nicht privat!


#12 lynnv

lynnv

    Newbie

  • 7 Beiträge

 

Geschrieben 11. August 2017 - 13:52

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



#13 NilsK

NilsK

    Expert Member

  • 12.100 Beiträge

 

Geschrieben 11. August 2017 - 13:54

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


Nils Kaczenski

MVP Cloud and Datacenter Management
... der beste Schritt zur Problemlösung: Anforderungen definieren!

Kostenlosen Support gibt es nur im Forum, nicht privat!


#14 MurdocX

MurdocX

    Board Veteran

  • 476 Beiträge

 

Geschrieben 11. August 2017 - 13:59

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:


Mit freundlicher Unterstützung
Jan


#15 lynnv

lynnv

    Newbie

  • 7 Beiträge

 

Geschrieben 11. August 2017 - 14:16

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