AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) WS_Child vom Desktop in der Taskleiste verbergen
Thema durchsuchen
Ansicht
Themen-Optionen

WS_Child vom Desktop in der Taskleiste verbergen

Ein Thema von erich.wanker · begonnen am 7. Mär 2012 · letzter Beitrag vom 7. Mär 2012
 
Benutzerbild von erich.wanker
erich.wanker

Registriert seit: 31. Jan 2008
Ort: im schönen Salzburger Land
464 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
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:35 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz