Entwickler-Ecke

Windows API - Taskleiste speren


SpeedyGTD - Do 25.07.02 03:09
Titel: Taskleiste speren
Morgen

ich will ein Programm ähnlich Novel NetWare schreiben, wie kann ich jetzt allerdings die Taskleiste speren? So dass man keinen Zugriff auf diese hat, bzw sie nicht sichtbar ist. :wink:

MFG SpeedyGTD


hitstec - Do 25.07.02 09:48

Schau dir mal diesen Tip an: http://www.swissdelphicenter.ch/de/showcode.php?id=219.

PS: Das funktioniert leider nicht unter Windows XP.


SpeedyGTD - Do 25.07.02 13:46
Titel: PS: funktioniert bei mir doch mit Windows XP
Danke für den link, weisst du ob das auch mit dem Startmenü geht? und wenn ja welchen Code ich dann benutzen muss.

Thx @ hitstec


hitstec - Do 25.07.02 13:52

Gibt's alles bei Swissdelphicenter.ch.
Link: http://www.swissdelphicenter.ch/de/showcode.php?id=328

8)


zero - Sa 03.08.02 21:21

hi, ähh wollte nur mal meinen senf dazugeben, habe das gerade mal gestestet, und öhh wie soll ich sagen es geht unter XP doch... meine taskleiste ist wech :shock:


SpeedyGTD - So 04.08.02 02:12

Und was ist das Problem? kommt sie jetzt nicht wieder oder was? Dann mach sie wieder mit SW_SHOW sichtbar, ich hab das so gemacht, bei FormCreate wird sie Unsichtbar gemacht, und bei FormClose wieder sichtbar.

PS: Ich habe auch XP und bei mir geht das auch.

Mfg SpeedyGTD


zero - So 04.08.02 02:53

ja habe ich ja dann auch gemacht :)

nur währe es ja noch praktisch wenn man die windowstaste auch sperren könnte und dazu noch rechte maustaste auf dem desktop und das die Icons verschwinden... :)

ging unter 98 ja immer mit dem screensaver befehl, aber bei xp nicht, weißt du da auch irgendeine möglichkeit ? :?:


SpeedyGTD - So 04.08.02 14:57

Mit dem Desktop habe ich das so gemacht das ich einfach ein leeres Formular drauf gepackt habe das nicht geschlossen werden kann und die Windowstaste wird zusammen mit dem Windowsstartbutton gesperrt. Dieser Code stammt von [url]http://www.swissdelphicenter.ch[/url] also


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:
procedure TForm1.ShowStartButton(bvisible: Boolean);
var
  h: hwnd;
  TaskWindow: hwnd;
begin
if bvisible then
   begin
   h := FindWindowEx(GetDesktopWindow, 0, 'Button', nil);
   TaskWindow := FindWindow('Shell_TrayWnd', nil);
   ShowWindow(h, 1);
   Windows.SetParent(h, TaskWindow);
   end
else
   begin
   h := FindWindowEx(FindWindow('Shell_TrayWnd', nil), 0, 'Button', nil);
   ShowWindow(h, 0);
   Windows.SetParent(h, 0);
   end;
end;


procedure TForm1.FormCreate(Sender: TObject);
begin
ShowStartButton(False);
end;


Ich denke allerdings das das Problem mit dem Desktop allerdings auch eleganter zu lösen geht.

Mfg SpeedyGTD


Maverick - So 04.08.02 23:31

also den desktop kriegt man mit

Quelltext
1:
ShowWindow(FindWindow(nil,'Program Manager'),sw_hide);                    

leer ('Program Manager' ist der Fenstername des Desktop-Hintergrundes)

die Task-Leiste würde ich mit

Quelltext
1:
EnableWindow(FindWindow('Shell_TrayWnd', nil),false);                    


deaktivieren

die windowstaste verliert mit eigentlich ihre wirkung, wenn man mit
SystemParametersInfo den wert von SPI_SETSCREENSAVEACTIVE auf true setzt, ich kenn nur die update-flag nicht