Jeg har installeret Paintshop Pro og når jeg højreklikker i øverste venstre hjørne af et vindue kommer der en menu frem hvor jeg blandt andet kan "browse with paintshop pro".
Mit spørgsmål er: Hvordan tilføjer jeg selv sådan et menupunkt til vinduer og programmer og kan det lade sig gøre at dette menupunkt kun er der når mit program afvikles?
Jeg ville gerne give mere en 60 point, men det kan jeg af en eller anden grund ikke... Jeg er villig til at oprette dummy spørgsmål hvis der ønskes flere point.
Det du taler om hedder explore-extention (tror jeg nok).
De ting det står når du højre klikker på enn fil er bestem af registringsdatabasen. Du kan rette i hvad det står ved at vælge mappeinstillinge-filtyper-rediger i explore.
Jeg tror at vi bevæger os i den rigtige retning, men den menu der kommer frem når man højre klikker på en fil skal jeg ikke bruge til noget... Jeg skal kun bruge den menu der kommer frem når man højreklikker i øverste venstre hjørne af et vindue/program. Derudover må det ekstra menupunkt kun være der når programmet kører.
Jeg ville meget gerne have hvis du kunne finde et eksempel til mig for jeg må være lidt for dum til at forstå hvad der står i den artikel. Jeg har nærlæst den igen og stadig kan jeg ikke finde noget som hjælper mig ret meget.
Det med "browse with paintshop pro" har INTET med explorer extensions at gøre, det er en simpel tilføjelse til registreringsdatabasen. Prøv at kigge under (i et almindeligt stifinder vindue) "Vis", "Indstillinger", "Filtyper" og klik rediger ved "Mappe", der har du din "browse with paintshop pro" (det samme som "HKEY_CLASSES_ROOT\Folder\shell\Browse with Paint Shop Pro" i reg-databasen)
Mere generelt om tilføjelse af menupunkter til system-menuen: der er et par API-kald som gør det muligt, kan ikke lige huske dem, men vender tilbage når jeg har fundet dem
Nu er vi absolut på den rigtige vej... Jeg har fået tilføjet en menupunkt til systemmenuen i et andet program og det er også fint nok, men jeg kan stadig ikke regne ud hvordan jeg skal fange den event der fremkommer når der trykkes på mit nye menupunkt...
Jeg har fundet et enkelt eksempel som viser hvordan man gør, men så vidt jeg kan se kan det kun lade sig gøre at fange event'en hvis det er mig selv der opretter vinduet. Kan det virkelig passe?
(Jeg er ked at skulle blive ved med at afvise dine svar, men der mangler desværre lige lidt endnu :-)
du skal lave en dll der indeholder det program du vil have afviklet når man klikker på dit nye menupunkt.
Dll'en skal du installere under windows et eller andet sted, og i forbindelse med det api hvor du opretter dit menupunkt angiver du også hvilke procedurer der skal igangsættes. Jeg er ikke helt sikker men det er noget med WM-syscommand. Det kaldes for Add-In til de forskellige programmer, men du skal være opmærksom på at det ikke er alle programmer der kan ændres på denne måde.
Menupunkter er identificeret med et ID, som sendes til det vindue (hwnd) som ejer menuen i en WM_COMMAND / WM_SYSCOMMAND message, ved at opsætte en global hook kan ens eget program læse de messages der sendes til andre programmer - ikke som normalt, hvor man kun har adgang til de messages der sendes til ens eget program. Det der er farligt ved hooks er, at hvis man kommer til at lave en fejl er det HELE systemet - altså hele Windows - man fucker op (kun den kørende sesseion, alt er iorden efter reboot), da alle beskeder sendes til den funktion man har lavet, og hvis den funktion pludselig ikke svarer, så svarer resten af systemet heller ikke. Globale Hooks SKAL ligges i en DLL. Så man kan godt anskue den som en Add-In til hele systemet (som sjensen nævnte). Den type Hook der skal tilføjes er nok en WH_MSGFILTER, da den: "monitors messages generated as a result of an input event in a dialog box, message box, menu, or scroll bar" (tekst fra MSDN om SetWindowsHookEx)
Nu er jeg efterhånden ved at være meget tæt på en løsning, men der mangler stadig lige det sidste.
Jeg kan tilføje et menupunkt til systemmenuen i andre programmer og jeg ved at for at reagere når der bliver trykket på dette nye menupunkt så skal jeg lave en hook til programmet. Jeg ved også at jeg bliver nødt til at lave denne hook i en dll fil for at det virker, men jeg har en del problemer med at få det til at fungerer.
Det jeg skal bruge nu er enten en meget enkel, men avanceret, forklaring på hvordan man gør det der med hooks og dll filer i delphi eller også et eksempel der virker.
Jeg tror desværre ikke det bliver fra mig (lige forløbig), jeg har de sidste 2 måneder kæmpet med at få hooks til at virke, men med det resultat hver gang at det crasher de resterende programmer - og nogle gange også hele windows. Hvis jeg får mit til at virke vil jeg meget gerne sende dig koden - eller et eksempel på hvordan jeg har fået det til at virke, da jeg efterhånden (tror/håber jeg) er meget tæt på at det virker...
Jeg sad lige og læste hele historien og blev lidt forvirret da der nu skulle laves en Dll m.m. (Add-in)
For at kommentere vil jeg pointere at der er forskel på om man vil skrive et add-on til programmet (Til Winamp og Photoshop og andre programmer har de lavet den mulighed at man kan lave et add-on til what ever og det har de lavet en skabelon for\"
Men at patche et program \"live\" er noget andet !
-Webb
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.