Einzelnen Beitrag anzeigen

Benutzerbild von erich.wanker
erich.wanker

Registriert seit: 31. Jan 2008
Ort: im schönen Salzburger Land
454 Beiträge
 
Delphi XE4 Professional
 
#3

AW: WS_Child vom Desktop in der Taskleiste verbergen

  Alt 7. Mär 2012, 17:10
Hi DaddyH,

meine kreativen zeilen sollten mein Programm dem "Desktop" unterordnen und den Taskbar-Eintrag verbergen...

@Du willst ein Fenster ohne Rahmen und ohne Taskbar-Eintrag, stimmt das soweit? Wie ist es denn so?
Ja .. soll ein pseudo-"interaktiver Desktop" werden - die Desktop Icons werden dadurch auch "überlagert", was in meinem Fall sogar ein Vorteil ist ..

Meine "hide-app" Erklärung: (hoffentlich verständlich..)
  • Ich such ein Handle nach dem anderen
  • Wenn das Handle mein Fenster ist - lade ich den Fensterstil via SetWindowLong in WindowStyle
  • Dann streiche ich aus dem WindowStyle den Flag "WS_Iconic"
  • Dann speichere ich den Fensterstil wieder zurück in mein Fenster
  • (Mit "ShowWindow(Handle,SW_HIDE)" hab ich leider auch keinen Erfolg!

Die Probleme habe ich nur, wenn ich mein Fenster dem Desktop zuordne..
..aber grad das ist ja das gewünschte ...


Delphi-Quellcode:
procedure hide_app();
var
  Handle,WindowStyle: HWND;
begin
  Handle:=GetWindow(GetDesktopWindow(),GW_CHILD); // Alle Handle durchgehen
  while (Handle<>0) do //Handle gefunden
  begin
      if GetWindowCaption(Handle) = 'Interactive Desktopthen // Ist der Handle mein fenster?
      begin
        showmessage('Handle gefunden:"'+GetWindowCaption(Handle)+'" Nr.:'+inttostr(Handle)); // Testausgabe Fenstername und ID
        WindowStyle := GetWindowLong(handle, GWL_STYLE); // meinen Fensterstil auslesen mit GetWindowLong
        WindowStyle := WindowStyle-WS_ICONIC; // Dem Fensterstil das WS_ICONIC entfernen
        SetWindowLong(handle, GWL_STYLE, WindowStyle) ; // und nun alles
        SetWindowLong(Handle, WS_ICONIC, WindowStyle); // wieder setzen
        break;
      end;
  Handle:=GetWindow(Handle,GW_HWNDNEXT);
  end;
end;
Erich Wanker - for life:=1971 to lebensende do begin ..
O
/H\
/ \

Geändert von erich.wanker ( 7. Mär 2012 um 17:15 Uhr) Grund: Auf weitere Frage eingegangen
  Mit Zitat antworten Zitat