(04.10.2013 16:09 )Frank M-F schrieb: Hallo,
ich möchte gerne aus LabVIEW heraus Prozesse mit der CreateProcess DLL starten.
Meine Versuche schlagen bisher fehl, obwohl zumindest auch schonmal ein Fenster aufgeploppt ist.
Vielleicht findet ja jemand den Knaxus.
Was hoffst Du damit zu erreichen, was Dir die eingebaute Funktion "System Exec" in LabVIEW nicht geben kann?
CreateProcess() is eine sehr kräftige Windows API Funktion, aber für sich alleine nicht sehr nützlich. Da braucht es noch einiges mehr drumherum, um etwas Sinnvolles damit machen zu können und das willst Du lieber nicht alles im LabVIEW Diagramm implementieren sondern lieber in einer DLL die Du in C(++) programmierst.
Zudem sind die zwei letzten Parameter von CreateProcess() Strukturen die zumindest für die erste nicht trivial auf LabVIEW Diagrammebene zu erstellen sind, da sie selber wieder Pointer enthalten. Auch der letzte Parameter der zwingend erforderlich ist um die Handles zum erzeugten Prozess zurückzugeben, ist nicht ganz einfach da die Handles je nach LabVIEW Bitness selber wieder 32 oder 64 Bit Werte sind. LabVIEW kennt aber keinen eigenen Datentyp der die Grösse abhängig von der eigenen Bitness verändert, so dass man ein VI schreiben müsste, das je nach LabVIEW Bitness eine andere Datenstruktur an die Call Library Node übergibt. Meiner Meinung nach einfach viel zu viele Trouble um auch nur in Betracht zu ziehen diese Funktion vom LabVIEW Diagramm aus aufzurufen, statt eine DLL zu schreiben die ein sinnvolleres LabVIEW kompatibles Interface zur Verfügung stellt.
Aber wie gesagt, System Exec macht alles was Du als normaler Benützer mit CreateProcess() tun kannst (und noch einige andere absolut notwendige Dinge darum herum) und diese ganze Fumelei erübrigt sich damit komplet.