Forum: Neuen Beitrag zur Code-Library hinzufügen
Delphi
by Apollonius,
31. Jan 2009
Ja, es geht einfacher. In der bisherigen Variante siehst du doch auch keinen extra-Thread. :wink: Das ist der Witz an Overlapped IO: Du gibst eine Operation in Auftrag, kannst aber weiter arbeiten und wirst benachrichtigt, wenn die Operation abgeschlossen ist. Konkret heißt das, dass du eine weitere Pipe und eine weitere OVERLAPPED-Struktur anlegst. Das Event dieser zweiten Overlapped-Struktur...
Forum: Neuen Beitrag zur Code-Library hinzufügen
Delphi
by Apollonius,
29. Jan 2009
Na, diese Deklaration ist ja wirklich bescheuert. Übergib statt dem Zeiger HandleArray, dann müsste das funktionieren.
Forum: Neuen Beitrag zur Code-Library hinzufügen
Delphi
by Apollonius,
29. Jan 2009
Hast du mal DETACHED_PROCESS ausprobiert? Bezüglich der anonymen Pipes: Ich habe eine benannte Pipe verwendet, weil nur dort Overlapped IO möglich ist. Genau dafür habe ich das Beispiel aber geschrieben.
Forum: Neuen Beitrag zur Code-Library hinzufügen
Delphi
by Apollonius,
28. Jan 2009
Bei SecAttr reicht es, manuell den Security Descriptor auf nil zu setzen. Bei StartupInf ist es angebracht, weil es dort einige Felder gibt, die in jedem Fall ausgewertet werden.
Prinzipiell kann man fast alle Aufrufe von ZeroMemory durch manuelles Nullen ersetzen.
Forum: Neuen Beitrag zur Code-Library hinzufügen
Delphi
by Apollonius,
27. Jan 2009
Bitte sehr.
//Either Path or CmdLine may be empty.
function CreateProcessAndReadOutput(Path: String; CmdLine: String; out Output: String): DWord;
const BUFFER_SIZE = 512;
var lpPath, lpCmdLine: PChar;
StartupInf: STARTUPINFO;
ProcessInfo: PROCESS_INFORMATION;
PipeName: String;
SecAttr: SECURITY_ATTRIBUTES;
Forum: Neuen Beitrag zur Code-Library hinzufügen
Delphi
by Apollonius,
26. Jan 2009
Overlapped IO ist etwas Feines. Ich hasse es, wenn ich Code mit derartigen Schleifen sehe. Windows stellt nicht umsonst Funktionen zum Warten bereit.