Eigenen Button in der Taskleiste subclassen
-
Hi,
ich habe eine Doppelreihige-Win-XP-Taskleiste, bei der der Startbutton in der oberen Reihe ist. Nun habe ich mir, in meinem jugendlichen Leichtsinn, gedacht, dass ich dort Buttons "hinklebe".Ok, soweit, so schlecht.
Mein Ansatz:
switch (iMsg) { case WM_CREATE: //handle der Taskleiste hwndTask = FindWindow ("Shell_TrayWnd", NULL); //button foo = CreateWindowEx(0, "Button", "X", WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON, 0, 40, 20, 20, hwndTask, (HMENU) 2547, NULL, 0); //subclassen LPtr = SetWindowLongPtr (hwndTask, GWLP_WNDPROC, (LONG_PTR) NewWndProc); break; //........// //sub proc LRESULT CALLBACK NewWndProc (HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam) { //LRESULT lResult; switch(iMsg) { case WM_COMMAND: switch (HIWORD(wParam)) { case BN_CLICKED: switch (LOWORD(wParam)) { case 2547: //nur kommt niemals ne box ... MessageBox(0, "hh", "hh", 0); break; } break; } break; } return CallWindowProc((WNDPROC)LPtr, hwnd, iMsg, wParam, lParam);; }Wie es scheint, wird die NewWndProc garnicht aufgerufen
.Ich seh gerade den berühmten Wald nicht.

Ansonsten kommt wie gesagt keine MsgBox.Könnte mir jemand erklären warum nicht, bzw. wie ich es anstell, dass ich (meine Anwendung) benachichtigt werde, dass der Button gedrückt wurde?
mfG ein.brot Danke!

-
SetWindowLongPtr wird fehlschlagen weil es ein anderer Prozess ist.
vielleicht ist das was für dich? http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/programmersguide/shell_adv/bands.asp
-
//EDIT: Mist

-
trap schrieb:
SetWindowLongPtr wird fehlschlagen weil es ein anderer Prozess ist.
stimmt...
trap schrieb:
vielleicht ist das was für dich? http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/programmersguide/shell_adv/bands.asp
Auch interessant, aber das ist der nächste Schritt in meinem Programm. [btw. woher wusstest du das?
]Ok, dann müsste ich an den Prozess rankommen, nur wie?
-> Tips?
-
-
Tips schrieb:
oh...

Aber es reizt mich das zu machen.
Wenn noch jemand Ideeen hat, bitte immer her damit! Ansonsten werd ich mir das mal genauer ansehen.
[edit_2] Hm.. eigentlich hatte ich das hier editiert... egal[/edit_2]
[edit]
Danke noch mal an den "Tips" ich hab die Variante mit der Hook Dll [HookInjEx] genommen und funktioniert einwandfrei!
[/edit]