Announcement

Collapse
No announcement yet.

Beenden eine Beendeten DOS-Anwendung

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

  • Beenden eine Beendeten DOS-Anwendung

    Moin!<BR>
    Ich ruft mir CreateProcess u.s.w. ein DOS(16Bit)-Programm auf.<BR>
    Das klappt auch soweit. Nur am Ende ist noch das Fenster da, und in der Titelleiste steht sowas wie beendet - Der Prozess ist aber noch am laufen.<BR>
    Das kann ich leider nicht gebrauchen, da mein Programm im Anschluß weiterarbeiten soll. - Und den Haken in den Dateieigenschaften "Bei beenden schließen" will ich auch nicht setzen, da es a) verschiede EXEs sein könnten, und b) die EXEs im Netzwerk liegen und jeder User auf jedem Rechner den Haken setzen müsste.<BR>
    <BR>
    MFG,cu,LLAP Ralph<BR>

  • #2
    Hallo,

    ich würde in diesem Fall WM_DESTROY ausprobieren:
    <pre>
    var
    szTitel : array[0..254] of Char;
    begin
    // Consolen-Fensterzeilenbeschriftung auslesen
    GetConsoleTitle(szTitel, SizeOf(szTitel));
    // Fensterhandle suchen
    hTargetWnd := FindWindow(nil, szTitel);
    if (hTargetWnd = 0) then
    Abort;
    SendMessage(hTargetWnd, WM_DESTROY, 0, 0);
    </pre&gt

    Comment


    • #3
      Moin!<BR>
      Wie finde ich denn 'raus, ob die Anwendung denn schon wirklich fertig ist?<BR>
      Momentan machen wir das so:<BR>
      <pre>
      ok := CreateProcess(NIL,PChar(kommando),NIL,NIL,FALSE,0, NIL,NIL,startup,pro_info);
      if OK then begin
      (* Warten, daß der Prozeß fertig wird. *)
      WaitForSingleObject(pro_info.hProcess,INFINITE);
      end;
      </pre>
      Bei den Waitforblablabla bleibt er eben bis zum St. Nimmerleinstag stehen.<BR>
      Und so auf verdacht nach einer Minute abschießen - ich weiß nicht.<BR>
      Übrigens, ich habe da einen anderen Vorschlag bekommen, und das klappt:<BR>
      Ich habe eine Konsolenanwendung (unter D5) geschrieben, die nichts anderes macht, als die übergebenen Parameter als Kommando abzuschicken.<BR>
      Es klappt (das Fenster wird geschlossen) - etwas kurios ist es schon, oder?<BR>
      Danke für die Mühe<BR>
      MFG,cu,LLAP Ralp

      Comment


      • #4
        Ich schlage vor, in das Verzeichnis der EXE eine entsprechende .PIF Datei zu legen. In dieser kann dann der Haken "beim Beenden schliessen" gesetzt werden.

        Helmu

        Comment


        • #5
          Moin!<BR>
          Genau das wollte ich vermeiden.<BR>
          MFG,cu,LLAP Ralp

          Comment


          • #6
            Moin!<BR>
            Ich hab rausgefunden, wie man das am besten macht:<BR>
            Vor dem 'CreateProcess' 'AllocConsole' aufrufen, dann kann man den Befehl absenden, mit waitforsingleobject (oder so ähnlich warten, und am Ende mit 'FreeConsole' das Fenster wieder freigeben.<BR>
            Jetzt müsste ich es nur noch schaffen, das Fenster unsichtbar und / oder minimiert darzustellen - ist aber nicht mehr so wichtig.<BR>
            MFG,cu,LLAP Ralph Erd

            Comment

            Working...
            X