| Autor |
Beitrag |
matze
      
Beiträge: 4613
Erhaltene Danke: 24
XP home, prof
Delphi 2009 Prof,
|
Verfasst: Do 22.05.03 19:06
Hallo !!
wie kann ich denn das windows startmenü durch eni eigenes popupmenü ersetzten ?
geht das einfcher als:
-erkennen, wenn auf START geklick wird (keinen plan wie das geht)
-das Startmenü versecken (keinen plan wie das geht)
-ein eigenes PopUp menü an der stelle aufmachen
_________________ In the beginning was the word.
And the word was content-type: text/plain.
|
|
Pascal
      
Beiträge: 155
Win 98, Win XP
Delphi 2005, Delphi 5
|
Verfasst: Fr 23.05.03 13:35
Eine einfachere Möglichkeit kenne ich nicht.
Aber wo ist das Problem es genauso zu machen wie du gesagt hast?
-Ein Formular ohne Titelleiste ohne Seitenränder auf Größe des Startbuttons, dass immer im Vordergrund ist auf den Startknopf setzen (Wie das geht weißt du)
-im ONclick Ereigniss ein PopUp Menu Aufmachen
|
|
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Sa 24.05.03 09:21
Die einfachere Möglichkeit wäre, das eigene Programm als neue Shell zu laden. Es würde dann anstelle des Startmenüs angezeigt werden. Zumindest unter Win 9x klappt das - durch einen Eintrag in der "system.ini" (IMHO).
|
|
BungeeBug
      
Beiträge: 901
|
Verfasst: Sa 24.05.03 09:43
Hi,
der Pferdefuss an der "System.ini-Idee" ist das dann auch der Rest der Shell weg is. Damit mein ich die Programmleiste unten im Bild, das SysTray , die Uhr , das Menü wenn man rechts auf irgendwas klickt ... alles ... das müsste dann deine neue Shell alles selbst können!
MfG BungeeBug
|
|
matze 
      
Beiträge: 4613
Erhaltene Danke: 24
XP home, prof
Delphi 2009 Prof,
|
Verfasst: Sa 24.05.03 10:51
also per neue shell ist mir das zu aufwändig !!!
aber kann man denn nicht irgenbdwie abfragen, ob das startmenü angeklickt wird, und das dann wegmachen und an der stelle ein eigenes popup aufpoppen lassen ??
ich wiess nur nicht, wie ich dne startklick abfrage, das startmenü verschwinden lasse und die koordinaten für mein poup bekomme. also unterm strich weis ich da gar nix.
_________________ In the beginning was the word.
And the word was content-type: text/plain.
|
|
Pascal
      
Beiträge: 155
Win 98, Win XP
Delphi 2005, Delphi 5
|
Verfasst: Sa 24.05.03 12:14
Also, wenn dir das mit dem Shell zu aufwändig ist, dann gibt es ja noch die Möglichkeit meine Lösung in Betracht zu ziehen.
Du kannst damit
-Erkennen wenn auf start geklickt wird(ist ja einfach das onclick-Ereignis)
-verhindern das auf start geklickt wird(ist ja das Formular drauf)
-Und einfach ein PopUp aufmachen
oder ist dir das zu unelegant?
Sonst sehe ich keinen Nachteil, und einfach ist es auch.
|
|
matze 
      
Beiträge: 4613
Erhaltene Danke: 24
XP home, prof
Delphi 2009 Prof,
|
Verfasst: Sa 24.05.03 13:46
ja dann erzähl mir mal, wie ich das onClick ereignis vom Windows Start Button in der Taskleiste bekomme !!!
und wie wäre es mal, wenn du "deine methode" mal genauer eräutern würdest ?
_________________ In the beginning was the word.
And the word was content-type: text/plain.
|
|
Pascal
      
Beiträge: 155
Win 98, Win XP
Delphi 2005, Delphi 5
|
Verfasst: Sa 24.05.03 15:27
Ich dachte das hätte ich bereits:
| Pascal hat folgendes geschrieben: | | -Ein Formular ohne Titelleiste ohne Seitenränder auf Größe des Startbuttons, dass immer im Vordergrund ist auf den Startknopf setzen |
Mit onclick meine ich das Onclick-Ereignis des Formulars(Auf den Startbutton kann man dann ja nicht mehr drücken)
also insgesamt einfach
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9:
| procedure TForm1.FormCreate(Sender: TObject); begin borderstyle:=bsnone; height:=24; width:=60; left:=0; top:=screen.height-height-1; SetWindowPos(Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE or SWP_NOMOVE) end; |
ins oncreate Ereignis einfügen
|
|
matze 
      
Beiträge: 4613
Erhaltene Danke: 24
XP home, prof
Delphi 2009 Prof,
|
Verfasst: Sa 24.05.03 18:56
ne, das ist nicht so das wie ich mir das vorstelle. was ist, wenn der user seine taskleiste nicht am unteren bildschirmrand hat ??
und ausserdem müsste ich ja die startbuttonbilder für sämtliche betriebssysteme einbinden.....
_________________ In the beginning was the word.
And the word was content-type: text/plain.
|
|
Pascal
      
Beiträge: 155
Win 98, Win XP
Delphi 2005, Delphi 5
|
Verfasst: So 25.05.03 11:08
Auch diese Probleme lassen sich lösen.
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21:
| procedure TForm1.CreateParams(var Params: TCreateParams); begin inherited CreateParams(Params); Params.ExStyle := WS_EX_TRANSPARENT; end;
procedure TForm1.FormCreate(Sender: TObject); var Rect: TRect; begin GetWindowRect(FindWindow('Shell_TrayWnd', nil), Rect);
Form1.Brush.Style := bsClear; Form1.BorderStyle := bsNone; borderstyle:=bsnone; height:=24; width:=60; left:=rect.Left; top:=rect.Top; SetWindowPos(Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE or SWP_NOMOVE) end; |
|
|
matze 
      
Beiträge: 4613
Erhaltene Danke: 24
XP home, prof
Delphi 2009 Prof,
|
Verfasst: So 25.05.03 11:59
tja und was ist mit dem kontext menü des STARTButtons ? das kann ich dann wegschmeissen !
_________________ In the beginning was the word.
And the word was content-type: text/plain.
|
|
Pascal
      
Beiträge: 155
Win 98, Win XP
Delphi 2005, Delphi 5
|
Verfasst: So 25.05.03 12:53
Ich weiß nicht ganz was du mit dem kontext menu meinst, aber ich dachte auch du wolltest das ganze Menu ersetzen?
|
|
matze 
      
Beiträge: 4613
Erhaltene Danke: 24
XP home, prof
Delphi 2009 Prof,
|
Verfasst: So 25.05.03 18:12
kontextmenü = menü wenn du mit der rechten maustaste klickst !
_________________ In the beginning was the word.
And the word was content-type: text/plain.
|
|
Pascal
      
Beiträge: 155
Win 98, Win XP
Delphi 2005, Delphi 5
|
Verfasst: So 25.05.03 18:18
Dann ersetzt du das halt auch.
Bei mir sind es nur 3 Menu-Punkte, die sich leicht nachmachen lassen.
|
|
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mo 26.05.03 07:48
Bei mir sind es mehr als 3 Punkte im Menü. So finden sich z.B. die beiden Erweiterungen von Microsoft (Explore from here & Console from Here), dazu kommt noch der Eintrag des Virenscanners und des Packers.
Ein Ersatz für das Startmenü muss also einen guten Grund bieten, warum das Kontextmenü weniger oder evtl. gar nichts mehr anzeigt.
|
|
Pascal
      
Beiträge: 155
Win 98, Win XP
Delphi 2005, Delphi 5
|
Verfasst: Mo 26.05.03 16:44
Wenn wir von dem gleichen Menu sprechen sind bei mir nur Öffnen,Explorer und Suchen drin.
Ansonsten lass die linke Maustaste doch einfach durch:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if button=mbright then begin form1.top:=-50; mouse_event(MOUSEEVENTF_rightDOWN,left+x,top+y,0,0); mouse_event(MOUSEEVENTF_rightUP,left+x,top+y,0,0); if button=mbright then form1.top:=rect.top; form1.BringToFront; end; end; |
|
|
matze 
      
Beiträge: 4613
Erhaltene Danke: 24
XP home, prof
Delphi 2009 Prof,
|
Verfasst: Mo 26.05.03 18:50
also trotzdem überzeugt mich deine lösung nicht recht.
ich hätte das gerne irgendwie per API gelößt.
_________________ In the beginning was the word.
And the word was content-type: text/plain.
|
|
Pascal
      
Beiträge: 155
Win 98, Win XP
Delphi 2005, Delphi 5
|
Verfasst: Mo 26.05.03 20:55
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mo 26.05.03 21:36
Darf man mal den Grund erfahren? 
|
|
matze 
      
Beiträge: 4613
Erhaltene Danke: 24
XP home, prof
Delphi 2009 Prof,
|
Verfasst: Di 27.05.03 16:50
hat den grund, dass wir bei uns in der schule eine eigens geschriebene oberfläche haben, und vom NT her das starmenü beschnitten haben. und ich wollte einfdach in das startmenü ein paar menüpunkte dieser sonder software einbauen.
_________________ In the beginning was the word.
And the word was content-type: text/plain.
|
|