Autor Beitrag
Trölfdesign
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 30.12.06 19:27 
Hallo erstmal.
Ich bin Christoph, 19-jähriger Student und programmiere in meiner Freizeit gern mal - auch mit Delphi. Zur Zeit arbeite ich an einem Terminkalender für den Desktop, der als Testprojekt für Flash-Haxe-Screenweaver-Applikationen dient.

Da ich in dieser Kombination keine Möglichkeit habe, das Programm in den Vordergrund zu setzen und aus der Taskleiste zu entfernen, habe ich mir in Delphi ein kleines Tool gebaut, das genau das erledigt. Es ruft die Applikation auf, setzt sie in den Vordergrund und schmeißt sie aus der Taskleiste.

Leider klappt das Herausschmeißen aus der Taskleiste aber nicht, wenn Delphi-Tool und Flash-Applikation in irgendeiner Art zusammen aufgerufen werden. Dann wird das Programm nur in den Vordergrund gesetzt.

Eine kleine lauffähige Version mit Delphi-Code könnt ihr hier herunterladen (2,3mb):

Moderiert von user profile iconTino: Link entfernt da die Datei nicht mehr zur Verfügung steht.

Hier der Delphicode:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
program AOT;
//{$APPTYPE CONSOLE}
uses
  Windows,
  shellapi,
  Forms;

var
W:Hwnd;
i:integer;
begin
  i:=0;
  shellexecute(0,'','swhx','','',SW_SHOW);
  W:=FindWindow('SWHXWindow','Trölfdesign Terminkalender 1.0');
  while (W=0)and(i<50)do
  begin
    W:=FindWindow('SWHXWindow','Trölfdesign Terminkalender 1.0');
    inc(i);
    Sleep(200);
  end;
  if W<>0 then
  begin
    ShowWindow(W,SW_HIDE);
    SetWindowLong(W,GWL_EXSTYLE,GetWindowLong(W,GWL_EXSTYLE) or WS_EX_PALETTEWINDOW and not WS_EX_APPWINDOW);
    ShowWindow(W,SW_SHOW);
    SetWindowPos(W, HWND_TOPMOST, 0 , 000, SWP_NOSIZE or SWP_NOMOVE);
  end
end.


Es wäre schön, wenn mir jemand helfen könnte. Ich verzweifle hier.

Viele Grüße und einen guten Rutsch
Trölfdesign
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 30.12.06 22:25 
So, hab das Problem mit nem Kumpel, der in VB top ist, gelöst.

Diese Zeile wars: Code:
ausblenden Delphi-Quelltext
1:
SetWindowLong(W,GWL_EXSTYLE,GetWindowLong(W,GWL_EXSTYLE) or WS_EX_TOOLWINDOW and not WS_EX_APPWINDOW);					



Eine unzureichende Klammerung hat Delphi scheinbar in einigen Fällen aus dem Tritt gebracht. So muss die Zeile aussehen: Code:
ausblenden Delphi-Quelltext
1:
SetWindowLong(W,GWL_EXSTYLE,(GetWindowLong(W,GWL_EXSTYLE) or WS_EX_TOOLWINDOW) and not WS_EX_APPWINDOW);