Einzelnen Beitrag anzeigen

bluescreen25

Registriert seit: 27. Nov 2005
Ort: Geldern
229 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: von gestarteten Programmen alle Fensterhandles in ini

  Alt 12. Sep 2007, 13:55
Zitat von SirThornberry:
Hmm, ich blicke nicht ganz durch.
Du hast ein Programm (nachfolgend Programm1) welches ein anderes (nachfolgend Programm2) startet.
Hast du Programm1 selbst geschrieben?
Hast du Programm2 selbst geschrieben?

Wenn Programm1 die Handles von Programm2 sucht, warum willst du dann das Programm1 die Handles in eine Ini-Datei schreibt?


Und jetzt mein Teil als Moderator
Nutze zukünftig bitte wenn du noch etwas hinzufügen willst. Denn es ist nicht gern gesehen das man immer wieder einen neuen Teil dazu schreibt ohne das inzwischen was von anderen geschrieben wurde (nach 24 Stunden sieht das anders aus). Grund dafür ist, das dein Beitrag dann auf der Hauptseite ganz nach oben wandert was wiederum ungerecht gegenüber den anderen ist welche nicht ständig pushen (ihren Beitrag nach oben bringen).
Öhmm, ich habe nix editiert oder erweitert, habe auf deinen Beitrag und den von Hoika geantwortet !

Also zum Thema:
Ich habe eine Anwendung geschrieben (CarPC_App) und diese beinhaltet einige Funktionen wie Mp3 oder Video/DVD-Player und halt die extApps.

Da können die User in der Config von der Platte Anwendungen raussuchen , die dann innerhalb des CarPC-Progs startbar sind. Werden extApps gestartet, wird die Form meiner Anwendung zu einer Art AppBar-Leiste, die TopMost ist.

Über die AppBar kann man zurück zu den anderen Forms wie mp3-player.
Ruft man dann nochmal das gleiche extApp auf (ist ja schon gestartet) dann wird es einfach nur nach vorne geholt. Ich kann aber im Moment aber nur Fenster nach vorne holen, durch das Handle aus: ProcID oder Findwindow,sprich classname und Fenstertitel. Klappt auch soweit.

Nur einige extApps haben halt diese Mehrfenster und das macht es etwas schwierig, wenn ich nicht das Mainwindow-Handle habe, sondern nur das Handle vom Copyright-Fenster oder wie bei der Navi (oben erwähnt) ein Warnfenster, das man immer einmal bei Start wegklicken muss. Man beachte auch mal den Fall, das beim Start ggf das Warnfenster noch gar nicht weggeklickt wird, man wieder zum mp3-player geht, danach wieder zurück zum extApp...

Zur Zeit habe ich bei einigen Sonder-Navi-Apps diese mit im Code eingebunden, aber auf Dauer muss ich eine andere Lösung finden, die entweder immer geht, oder "von aussen" beeinflussbar ist. Sprich der User nutzt XSpy und trägt in die ini ein, oder mein App findet alle Fenster und schreibt die in eine Datei und man kann die Reihenfolge selber ändern....

Irgendwas in der Art...

Siehe hier nochmal ein Sonderbeispiel, wo ein extApp ein Hauptfenster hat und noch ein weiteres, welches aber auch nach vorne geholt werden muss..

Delphi-Quellcode:
if app = 'pgs.exethen//starten, danach Fenster einfangen
       begin
         repeat
           AppWindow := FindWindow('WC_LMSW2003','PocketGIS');
           Wnd1 := FindWindow('#32770','PocketGIS');
           application.ProcessMessages;
           setwindowlong(AppWindow, GWL_STYLE, getwindowlong(AppWindow, GWL_STYLE) and (not ws_dlgframe) and (not ws_border) and (not WS_SIZEBOX));
           Application.BringToFront;
           sleep(500);
          until ((AppWindow <> 0) and (Wnd1 <> 0)) or stopSearch;
       end;


if (AppWindow <> 0) then //wenn gefunden dann..
         begin
           if app = 'pgs.exethen
           begin
             setwindowlong(AppWindow, GWL_STYLE, getwindowlong(AppWindow, GWL_STYLE) and (not ws_dlgframe) and (not ws_border) and (not WS_SIZEBOX));
             BringWindowToTop(wnd1);
           end else ShowWindow(AppWindow,SW_MAXIMIZE);



if EXERunning(app,false) then //wenn schon gestartet...dann
   begin
     ProcID := GetProcessID(app);
     if app = 'pgs.exethen //speziell für pgs.exe
     begin
       wnd1 := GetWndHandle(ProcID);
       ShowWindow(wnd1,SW_MAXIMIZE);
       BringWindowToTop(wnd1);
     end else......
Gruß, bluescreen25
...und ich dachte, Delphi ist ein Programmgenerator mit nur einem Button......tzzz
  Mit Zitat antworten Zitat