Announcement

Collapse
No announcement yet.

Projekte verschwinden bei Aufruf sendmessage

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

  • Projekte verschwinden bei Aufruf sendmessage

    Hallo Entwickler !

    Ich habe folgendes Problem:

    Ich rufe ein compiliertes Projekt auf, und in diesem Projekt habe ich
    eine Funktion, indem ich mit Shellexecute ein 2. Projekt öffnen kann.
    Jetzt nachdem ich das 2. Projekt geöffnet habe, möchte ich das
    1. Projekt mit folgenden Befehl schließen:

    hwnd := FindWindow(nil,'Projekt1');
    Sendmessage(hwnd,WM_Close,0,0)

    Bei diesen Befehlen verschwinden meine Delphi-Programme für kurze Zeit,
    und kommen dann wieder.

    Gibt es eine Möglichkeit dies zu verhindern. Ich denke es hängt mit
    WM_Close zusammen. Wer kann mir helfen ?

    Gruß Lars

  • #2
    Hi

    Setze mal

    <pre>
    if IsWindow(Wnd) then SendMessage()
    </pre>

    vor SendMessage. Es scheint wohl das FindWindow() nicht das richtige fenster findet.

    Gruß Hage

    Comment


    • #3
      Hallo Hagen !

      Hier nochmal meine genaue procedure: <br>

      procedure TForm1.FormCreate(Sender: TObject); <br>
      var <br>
      hTB: HWND; <br>

      begin <br>
      hTB := FindWindow(nil,'Project1'); <br>
      if hTB <> 0 then <br>
      sendmessage(hTB,WM_Close,0,0); <br>
      end; <br>

      Ich habe den o.g. Befehl ausprobiert. Leider funktioniert
      dieser Befehl nicht. Ich habe statt Wnd auch hTB ausprobiert,
      und auch dies funktioniert leider nicht. Ich denke es hängt
      wahrscheinlich immer noch an den Befehl "WM_Close".
      Das richtige Fenster wird er wohl finden.

      Vielleicht hast Du noch eine Idee ?

      Gruß Lar

      Comment


      • #4
        Hi

        Also nochmal: Project1.exe startet Projekt2.exe und soll danach beendet werden ? richtig ?

        Ruf doch nach dem Starten von project2.exe (WinExec, ShellExecute) im project1.exe "Application.Terminate" oder im OnCreate() Event gleich "Close".

        <pre>

        procedure TForm1.FormCreate()
        begin
        ShellExecute('project1.exe', ....);
        Close;
        // oder
        Application.Terminate;
        end;

        </pre>

        gruß Hage

        Comment

        Working...
        X