Einzelnen Beitrag anzeigen

Schwedenbitter

Registriert seit: 22. Mär 2003
Ort: Finsterwalde
622 Beiträge
 
Turbo Delphi für Win32
 
#3

AW: CreateProcess - wie denn nun? (chkdsk.exe)

  Alt 28. Mai 2011, 09:45
Danke erstmal für die Antwort.

Wie du in der Dokumentation nachlesen kannst, fehlt bei CommandLine bei dir der Name der Exe.
Entschuldigung! Das kommt davon, wenn man nur Codestücke schickt. Eine Zeile über CreateProcess() steht ein GetSystemDirectory(lBuffer, BufferSize); . Der Pfad ist nicht das Problem, denn sonst käme nicht die Fehlermeldung, dass chkdsk.exe nicht mit Netzwerklaufwerken umgehen könne.

Dass chkdsk.exe Admin-Rechte braucht, ist neu für mich und schade zugleich. Ich wollte eigentlich per Button dem Benutzer meines Programmes einen Check anbieten. Wenn der sich dann jedesmal als Admin anmelden muss, wird es unkomfortabel. Da sieht man mal wieder, wie Ottonormal-User unter XP ummer schön mit Adminrechten unterwegs ist...

Der Code von Dir hat ungelogen den Charme des kurzen. Aber ich brauche ein Handle, weil ich ja die Ausgaben in mein Programm umleiten will; Siehe erster Satz.

Ich habe es jetzt so hinbekommen:
Delphi-Quellcode:
If (Not CreateProcess(PChar(lS),         // <- lpApplicationName
   PChar(lS + ' ' + CBDrv.Text + '/F'),      // <- lpCommandLine
   nil, nil, True,
   CREATE_NO_WINDOW Or NORMAL_PRIORITY_CLASS,
   nil, nil, lStartI, lProcInfo)) Then
Aber da wiederhole ich in lpCommandLine den gesamten String aus lpApplicationName zzgl. der Parameter. Soll das wirklich so gewollt sein und wozu ist das denn gut, außer Hobby-Programmierer wie mich zur Verzweiflung zu treiben? Draufgekommen bin ich nach mehrmaligem Lesen im MSDN und der Methode trial and error... Ich habe mal den Code angehängt.

Gruß, Alex
Angehängte Dateien
Dateityp: zip chkdsk_p.zip (2,8 KB, 8x aufgerufen)
Alex Winzer
  Mit Zitat antworten Zitat