16. januar 2003 - 00:33Der er
14 kommentarer og 1 løsning
replacement af alt+tab tingen
som del af et Shell Replacement ville jeg gerne ændre hvordan den box der kommer frem når trykker man alt+tab, ser ud.
nu har jeg den sidste uges tid sidet og ledt diverse nyhedgrupper igennem for at finde frem til en løsning, der var massere der spurte men ikke nogen som var kommet med et ordenligt svar. jeg har samtidig kikket windows SDK hjælpen igennem for alt hvad jeg kunne finde nytting for at finde handles på winduet og diverse søgerutiner for at finde formen men intet held. Jeg har også kikket efter den med WinSight men som jeg regnede med fra starten fik jeg heller ikke noget ud af det :/.
jeg fik af vide af en jeg ikke har kunne få fat på sidenhen at dets handle skulle være #32771 hvilket jeg også har brugt i mine funktioner og funktioner som GetClassName, FinWindow (de eneste jeg lige kunne huske i hovet)
ved ikke om det er muligt at overskrive den hotkey med registerhotkey() men det er et forsøg hver. Desuden kan du ikke søge efter classen "#32771" da alle dialoger hedder det. Men det kan ihvertefald lade sig gøre på en måde...
dkn: ok jeg fik bare af vide den hed det så :) men hvis alle hedder det så kan jeg da meget godt forstå at det ikke funker så godt :D
hermandsen: jeg har prøvet niget med den der SystemParametersInfo men det virker kun til win95 og kan ikke huske med 98 men jeg kan lige prøvet efter. jeg mener det var dne der kode som jeg også prøvede med for den poppede konstant op på nyhedsgrupper :/
det var faktisk det jeg ville borris.. jeg ville customize dialogen så den passede ind i det design som shellet havde.. men noget andet er så bare.. at jeg har været lidt skæv og ikke kommenterer tilbage at jeg faktisk fandt noget der kunne bruges.. jeg fiflede rundt inde på det link du gav mig og kom vidt omkring og endelig fandt jeg et program der kunne.. det er nemlig pga at alt+tab og ctrl+esc og alt+ctrl+del ryger ind under en speciel ketegori som gør at man lan hooke dem men hvis det program der hooker ikke laver noget fx går død så vil windows stoppe den hook så du altid vil kunne bruge disse knapper. og derfor er det først blevet muligt i sp3 til win2k og xp problemet er bare at det er c/c++ kode det eksempel de har lavet.. jeg skal lige se om jeg får tid her en af dagene til at oversætte det, er bare ikke helt stiv i det så :D
type ULONG_PTR = ^DWORD; KBDLLHOOKSTRUCT = packed record vkCode, scanCodem, flags, time: DWORD; dwExtraInfo: ULONG_PTR; end; pKBDLLHOOKSTRUCT = ^KBDLLHOOKSTRUCT;
function LowLevelKeyboardProc(nCode: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall; var fEatKeystroke: BOOL; p: pKBDLLHOOKSTRUCT; begin fEatKeystroke := False;
if nCode = HC_ACTION then begin case wParam of WM_KEYDOWN, WM_SYSKEYDOWN, WM_KEYUP, WM_SYSKEYUP: begin p := pKBDLLHOOKSTRUCT(lParam); fEatKeystroke := ((p^.vkCode = VK_TAB) and ((p^.flags and LLKHF_ALTDOWN) <> 0)) or ((p^.vkCode = VK_ESCAPE) and ((p^.flags and LLKHF_ALTDOWN) <> 0)) or ((p^.vkCode = VK_ESCAPE) and ((GetKeyState(VK_CONTROL) and $8000)<> 0)); end; end; end;
if fEatKeystroke then Result := 1 else Result := CallNextHookEx(hhkLowLevelKybd, nCode, wParam, lParam); end;
var hhkLowLevelKybd: HHOOK; procedure TForm1.Button1Click(Sender: TObject); begin Button1.Tag := 1 - Button1.Tag;
if Button1.Tag = 1 then begin hhkLowLevelKybd := SetWindowsHookEx(WH_KEYBOARD_LL, LowLevelKeyboardProc, hInstance, 0); ShowMessage('Enabled'); end else begin UnhookWindowsHookEx(hhkLowLevelKybd); ShowMessage('Disabled'); end; end;
jeg har da ikke sagt at du ikke lavede det for mig ? jeg sagde bare du havde lavet en fejl og jeg fik dne rettet.. du havde skrevet Null som første parameter til CallNextHookEx hvilket bare burde have været hhkLowLevelKybd
og jeg ville da gerne have givet borris points.. men jeg gik ud fra han ikke ville have dem da ingen af hans kommentarer var givet som svar..
men giv da lige lyd hvis du gerne vil have pointsne
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.