ERLEDIGT
JA
JA
ANTWORTEN
12
12
ZUGRIFFE
2411
2411
EMPFEHLEN
-
18.05.05 14:06 #1
- Registriert seit
- Apr 2002
- Ort
- Delmenhorst (Niedersachsen)
- Beiträge
- 3.567
moin
So, ich wollte mich mal daran machen eine Schnellstartleiste zu programmieren.
Das ist soweit auch kein Ding. Sie soll natürlich immer sichtbar sein, aber nciht im Vordergrund.
Und da ist auch schon das Problem, andere Programme sollen nämlich erkennen das sie oben am Bildschirmrand sitzt und sich (z.B. beim maximieren) daran ausrichten, wie es bei der Taskleiste ja auch ist.
Hat jemand ne Idee wie ich das anstellen kann?
mfg
umbrasaxum
-
18.05.05 21:52 #2
- Registriert seit
- Jan 2002
- Ort
- Bayern
- Beiträge
- 1.390
Hm ich weiß net ob sowas so einfach möglich sein wird.
Aber ich denk mal mit hooking könntest du da einiges erreichen.
Ich würde das so anpacken:
1. Eine DLL programmieren (wegen global hooking)
2. In der DLL mit SetWindowsHookEx() einen WH_CALLWNDPROC-Hook installieren
3. In der HookProc müsstest du dann auf WM_MAXIMIZED (heißt das so, du weißt was ich meine) Reagieren.
Dabei erhältst du den HWND des Fensters das die Nachricht erhalten soll hat.
4. Du veränderst die Größe/Position des Fensters von der DLL aus
5. GANZ WICHTIG: Die Nachricht wieder weiterschicken, sonst gibts absolutes Chaos!
6. In der Anwendung die DLL laden und den Hook installieren.
7. Bei beenden den Hook auf jedem Fall wieder aufräumen!
So oder so ähnlich könnte das theoretisch gehen.
Für Hilfe bei Hook's gibts hier von mir ein Tutorial (Werbung mach').
Sollte es einen einfacheren/eleganteren Weg geben dann würde mich das auch interessieren.
Danielwe would change the world if god gave us the source code...
and remember, science is nothing more than reverse engineering nature...
Current projects:
- LdrawConverter
-
18.05.05 22:20 #3
- Registriert seit
- Apr 2002
- Ort
- Delmenhorst (Niedersachsen)
- Beiträge
- 3.567
moin
Ja dein Tutorial kenn ich, wollt mich auch schon immer mal dran machen.
Aber ich konnte mich bis jetzt nicht überwinden mal mit Hooks anzufangen....
Drumm wäre ich für jeden anderen Vorschlag dankbar, aber ich merke schon das ich früher oder später nciht drum rum komme.
mfg
umbrasaxum
-
18.05.05 22:26 #4
- Registriert seit
- Jan 2002
- Ort
- Bayern
- Beiträge
- 1.390
Also wie gesagt einen anderen Weg kenn ich nicht.
Das mit den Hooks is gar net so schlimm, wenn man es mal kapiert hat.
Man muss hald höllisch aufpassen, da kann man sich schon mal das ganze System lamlegen, so dass man um einen Reboot nicht mehr rumkommt.
Also versuch es einfach.
Gruß Danielwe would change the world if god gave us the source code...
and remember, science is nothing more than reverse engineering nature...
Current projects:
- LdrawConverter
-
Das müsste einfach mit SystemParametersInfo und SPI_SETWORKAREA gehen.
-
22.05.05 15:33 #6
- Registriert seit
- Apr 2002
- Ort
- Delmenhorst (Niedersachsen)
- Beiträge
- 3.567
moin
Danke hat super funktioniert!
Da bin ich nochmal um Hooks drum rum gekommen
Noch ein Tip:
Da die Werte für den neuen Arbeitsbereich auch nach Programmende bestehen bleiben, am Ende wieder zurück setzen!
mfg
umbrasaxum
-
22.05.05 21:24 #7
Ich hab des auch mal probiert. Hab diesen Code geschrieben:
Code :1 2 3 4 5 6 7
RECT Area; Area.left = 200; Area.right = 500; Area.top = 400; Area.bottom = 800; SystemParametersInfo(SPI_SETWORKAREA,0,&Area,0);
es tut sich auch was und zwar kann ich mein Programm nur diesem Bereich verschieben. Aber sonst ändert sich global nichts. Weißt du schon weiteres umbrasaxum?
EDIT:
was ich noch loslassen wolte. Die Funktion SystemParametersInfo is ja ne Hammerfunktion. Da kann man assi viel im System verändern. Hmm für Virenprogger wohl genau das richtige. Naja ich komm ma wieder auf den Teppisch. Ich werd mir die Funktion mal merken.
Geändert von Tasm-Devil (22.05.05 um 21:27 Uhr)
C macht es einfach, sich in den Fuß zu schießen; C++ erschwert es, aber wenn man es tut, bläst es einem das ganze Bein weg." —Bjarne Stroustrup .-.-.-.-.-.-.
„Ich habe mir immer gewünscht, dass mein Computer so einfach zu bedienen sein sollte wie mein Telefon. Mein Wunsch wurde wahr. Ich weiß nun nicht mehr, wie mein Telefon funktioniert.“ —Bjarne Stroustrup
-
22.05.05 21:31 #8
Sagt mal sind die verrückt? In der msdn stehen ja lustige Sachen drin. SetComputerName zum Beispiel. Was es nicht alles gibt

Ich glaube wir sollten einen "Die interessantesten msdn-Funktionen-threat" aufmachen.C macht es einfach, sich in den Fuß zu schießen; C++ erschwert es, aber wenn man es tut, bläst es einem das ganze Bein weg." —Bjarne Stroustrup .-.-.-.-.-.-.
„Ich habe mir immer gewünscht, dass mein Computer so einfach zu bedienen sein sollte wie mein Telefon. Mein Wunsch wurde wahr. Ich weiß nun nicht mehr, wie mein Telefon funktioniert.“ —Bjarne Stroustrup
-
22.05.05 21:31 #9
- Registriert seit
- Apr 2002
- Ort
- Delmenhorst (Niedersachsen)
- Beiträge
- 3.567
moin
So hab ich es gemacht.
Ich hab jetzt ganz oben ein Fenster das über die ganze breite geht und 25p hoch ist.Code :1 2 3 4 5 6 7 8 9 10 11
case WM_CREATE: { workarea.top = 26; workarea.left = 0; workarea.right = GetSystemMetrics(SM_CXSCREEN); workarea.bottom = GetSystemMetrics(SM_CYSCREEN) - 25; SystemParametersInfo(SPI_SETWORKAREA, NULL, &workarea, NULL); return 0; }
Das besondere daran ist jetzt das sich Fenster die z.B. maximiert werden, weder vor noch hinter das Fenster verschieben sonder sich anpassen.
mfg
umbrasaxum
-
22.05.05 21:33 #10
- Registriert seit
- Apr 2002
- Ort
- Delmenhorst (Niedersachsen)
- Beiträge
- 3.567
moin
Das gibt es auch wenn du auf die Eigenschaften vom Arbeitsplatz gehst.Sagt mal sind die verrückt? In der msdn stehen ja lustige Sachen drin. SetComputerName zum Beispiel. Was es nicht alles gibt
Die Programmierer von Windows haben auch die selben Funktionen benutzt wie wir.
mfg
umbrasaxum
-
22.05.05 21:46 #11
Hey sch.... jetzt merk ich was dieser Code für auswirkungen hat. Gerade wollte ich meinen alten Borland 5 Builder starten da merk ich das der sich nur in nem ganz kleinen Fenster öffnet. Voll lol. muss ich einfach nochmal neu mit meiner aktuellen auflösung kompilieren oder gibts nen besseren weg um das wieder in ordnung zu bringen?
C macht es einfach, sich in den Fuß zu schießen; C++ erschwert es, aber wenn man es tut, bläst es einem das ganze Bein weg." —Bjarne Stroustrup .-.-.-.-.-.-.
„Ich habe mir immer gewünscht, dass mein Computer so einfach zu bedienen sein sollte wie mein Telefon. Mein Wunsch wurde wahr. Ich weiß nun nicht mehr, wie mein Telefon funktioniert.“ —Bjarne Stroustrup
-
22.05.05 21:49 #12
- Registriert seit
- Apr 2002
- Ort
- Delmenhorst (Niedersachsen)
- Beiträge
- 3.567
moin
Du kannst am Anfang die aktuellen einstellungen laden, und vor dem beenden des Programm die dann alten Einstelllungen wieder herstellen.
mfg
umbrasaxum
-
22.05.05 21:56 #13
stimmt. das geht. Ich mach mir jetzt so n miniprog nur so aus . weil immer wenn hier im Forum guten code finde mach ich mir n kleines prog und dann hab ich den code wenn ihn mal brauche und kahm schon sehr oft vor.
Also langsam freunde ich mich mit der msdn an.C macht es einfach, sich in den Fuß zu schießen; C++ erschwert es, aber wenn man es tut, bläst es einem das ganze Bein weg." —Bjarne Stroustrup .-.-.-.-.-.-.
„Ich habe mir immer gewünscht, dass mein Computer so einfach zu bedienen sein sollte wie mein Telefon. Mein Wunsch wurde wahr. Ich weiß nun nicht mehr, wie mein Telefon funktioniert.“ —Bjarne Stroustrup
Ähnliche Themen
-
[XP] Symbolleiste für die Taskleiste programmieren?
Von Screenzocker13 im Forum Visual Basic 6.0Antworten: 0Letzter Beitrag: 31.10.07, 10:09 -
Benutzerseite nach Login in php programmieren
Von andy500 im Forum PHPAntworten: 2Letzter Beitrag: 28.06.07, 07:47 -
[C++/WinAPI]Dateien nach bestimmten Inhalten durchsuchen
Von mki_germo im Forum C/C++Antworten: 0Letzter Beitrag: 15.12.06, 20:31 -
Schnellstartleiste
Von DarkManX im Forum Microsoft WindowsAntworten: 8Letzter Beitrag: 06.01.06, 00:50 -
[C/C++/WinApi] Programm nicht in Taskleiste
Von Tobias K. im Forum C/C++Antworten: 4Letzter Beitrag: 12.03.05, 19:32





Zitieren
Login






