Autor Beitrag
matze
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 4613
Erhaltene Danke: 24

XP home, prof
Delphi 2009 Prof,
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 155

Win 98, Win XP
Delphi 2005, Delphi 5
BeitragVerfasst: 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



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 901



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 4613
Erhaltene Danke: 24

XP home, prof
Delphi 2009 Prof,
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 155

Win 98, Win XP
Delphi 2005, Delphi 5
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 4613
Erhaltene Danke: 24

XP home, prof
Delphi 2009 Prof,
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 155

Win 98, Win XP
Delphi 2005, Delphi 5
BeitragVerfasst: 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
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
procedure TForm1.FormCreate(Sender: TObject);
begin
  borderstyle:=bsnone;
  height:=24;
  width:=60;//kommt wahrscheinlich auf die Auflösung an
  left:=0;
  top:=screen.height-height-1;
  SetWindowPos(Handle, HWND_TOPMOST, 0000, SWP_NOSIZE or SWP_NOMOVE)
end;

ins oncreate Ereignis einfügen
matze Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 4613
Erhaltene Danke: 24

XP home, prof
Delphi 2009 Prof,
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 155

Win 98, Win XP
Delphi 2005, Delphi 5
BeitragVerfasst: So 25.05.03 11:08 
Auch diese Probleme lassen sich lösen.
ausblenden 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;//kommt wahrscheinlich auf die Auflösung an
  left:=rect.Left;
  top:=rect.Top;
  SetWindowPos(Handle, HWND_TOPMOST, 0000, SWP_NOSIZE or SWP_NOMOVE)
end;
matze Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 4613
Erhaltene Danke: 24

XP home, prof
Delphi 2009 Prof,
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 155

Win 98, Win XP
Delphi 2005, Delphi 5
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 4613
Erhaltene Danke: 24

XP home, prof
Delphi 2009 Prof,
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 155

Win 98, Win XP
Delphi 2005, Delphi 5
BeitragVerfasst: 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



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 155

Win 98, Win XP
Delphi 2005, Delphi 5
BeitragVerfasst: 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:
ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 4613
Erhaltene Danke: 24

XP home, prof
Delphi 2009 Prof,
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 155

Win 98, Win XP
Delphi 2005, Delphi 5
BeitragVerfasst: Mo 26.05.03 20:55 
Dann viel Glück!
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 26.05.03 21:36 
Darf man mal den Grund erfahren? :roll:
matze Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 4613
Erhaltene Danke: 24

XP home, prof
Delphi 2009 Prof,
BeitragVerfasst: 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.