Announcement

Collapse
No announcement yet.

CreateProcess?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • CreateProcess?

    Hallo!

    Ich starte den Internetexplorer mit
    CreateProcess(nil, PChar('C:\Programme\Plus!\Microsoft Internet\IEXPLORE.EXE ), nil, nil, False, NORMAL_PRIORITY_CLASS,
    nil, PChar(ParamStr(1)), StartupInfo, ProcessInfo);

    und will mit
    TerminateProcess(ProcessInfo.hProcess, 0);
    ihn wieder schliesen.

    Wieso wird der Internetexplorer nach dem TerminateProcess nicht geschlossen??

    Gruß

    Harald

  • #2
    Versuchs mal mit Exitprocess, in der hilfe steht, man soll Terminateprocess nur in ausnahmefällen verwenden. Du könntest auch eine WM_CLOSE nachricht an das hauptfenster des IE schicken, das schliest ihn dann bestimmt.

    mfg
    CR

    Comment


    • #3
      die hilfe ist ein bischen undeutlich. ExitProcess beendet nur das eigene Programm. Für TerminateProcess braucht man noch die Funktionen GetThreadProcessID und GetExitCodeProcess. Ich weiß aber nicht mehr, in welcher reihenfolge und mit welchen Parameter

      Comment


      • #4
        Robert hat Recht: ExitProcess ist für "fremde" Prozesse ungeeignet.<BR>
        Keine Ahnung, wieso es bei hobbie nicht funktioniert.
        Bei mir gab es mit folgendem Test keine Probleme.<BR>
        Allerdings kann die Funktion TerminateProcess Probleme verursachen (noch nicht gehabt), da DLL’s nicht erfahren, dass der Prozess beendet wurde.

        Gruß Peter
        <BR>
        <BR>
        program ie_test;<BR>
        {$APPTYPE CONSOLE}<BR>
        &nbsp;&nbsp; uses<BR>
        &nbsp;&nbsp; SysUtils,<BR>
        &nbsp;&nbsp; Windows;<BR>
        <BR>
        &nbsp;&nbsp; var<BR>
        &nbsp;&nbsp; processName : String;<BR>
        &nbsp;&nbsp; startInfo : TStartupInfo;<BR>
        &nbsp;&nbsp; procRueckInfo : TprocessInformation;<BR>
        <BR>
        begin<BR>
        &nbsp;&nbsp; processName := 'C:\PROGRAMME\INTERNET EXPLORER\IEXPLORE.EXE';<BR>
        &nbsp;&nbsp; FillChar(startInfo, SizeOf(startInfo), 0);<BR>
        &nbsp;&nbsp; startInfo.cb := SizeOf(TStartupInfo);<BR>
        &nbsp;&nbsp; CreateProcess(nil, PChar(processName), nil, nil, false, 0, nil, nil, startInfo, procRueckInfo);<BR>
        &nbsp;&nbsp; writeln('Terminate Process = Return');<BR>
        &nbsp;&nbsp; readln;<BR>
        &nbsp;&nbsp; TerminateProcess(procRueckInfo.hProcess, 0);<BR>
        &nbsp;&nbsp; CloseHandle(procRueckInfo.hProcess);<BR>
        end.<BR&gt

        Comment

        Working...
        X