in English
|
[ Fler funktioner i Windows skal ] ShellExtensions är namnet på de menyalternativ som läggs till i Windows hägerklicksmeny av olika applikationer.
I detta och nästa nummer ska vi titta på inte bara hur vi skapar Shell Extensions, utan också hur vi skapar distributionsmöjligheter och en stilig installation och avinstallation. Vi ska skriva den mest basala och mest vanligt förekommande Shell Extension som finns, "MS-DOS Prompt ShellExtension" eller "DOS härifrån" som jag föredrar att kalla den. Ladda ner exempelfilerna i valfritt format: shell1exempel.lzh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . GRUNDENLåt oss börja med att titta på hur Windows hanterar kommandon och argument. Startar en ny Windows MS-DOS prompt. Detta innebär i praktiken att den startar en ny DOS-session. Det är väl inte den tydligaste förklaringen som erbjuds men vi provar och ser vad som händer. Som du nu har upptäckt stängs inte fönstret förrän du utfört kommandot exit lika många gånger som du använde kommandot command /k. Vad som händer är att vi med hjälp av argumentet /k startade ytterligare en DOS-session varje gång vi använde command /k. Om vi nu går vidare och gör samma experiment med argumentet /c och alltså skriver command /c vid prompten ett par-tre gånger och sedan avslutar med exit, vad händer då? DOS-fönstret stängs då första gången du utför kommandot. Vår Shell Extension "DOS härifrån" utför command.com /k %1 där %1 är den mapp du har högerklickat på.
Spara först filen och prova sedan att skriva Is *.bat vid DOS-prompten. Vad som händer är att du ger parametern %1 värdet .bat och parametern %2 värdet lp. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . REGISTRETFör att vår Shell Extension ska fungera måste vi göra ändringar i Windows register. Öppna programmet Regedit och sedan nyckeln HKEY_CLASSES_ROOT. De nycklar som nu blev tillgängliga är alla filändelser för registrerade filtyper. Hur vet registret detta? Vad gör vi om vi vill associera någonting till en fil eller någonting som inte har en filändelse? Det finns flera sätt att lägga till information i Windows register och nu tittar vi på hur vi går tillväga med ett par olika metoder. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DEN MANUELLA VÄGENTillbaka i Regedit expanderar vi nyckeln Directory. I höger fönster har vi nu strängen "(standard) (värde har ej angivits)". Högerklicka på nyckeln MyPrompt som vi nyss skapade och skapa ytterligare en nyckel som vi kallar command (se till att skriva namnet med gemener då registret skiljer på gemener och versaler). Nu redigerar vi även denna nyckels strängvärde och anger detta till command.com /k cd %1 Nu kan vi gratulera oss själva till att ha skapat vår första Shell Extension. Inte illa, men ett väldigt obekvämt arbetssätt om vi vill kunna använda vår Shell Extension påflera datorer. Det är här reg-filer kommer in i bilden. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . REG-FILER
En reg-fil fungerar så att om du dubbelklickar på den så läggs dess information till i registret. Döp den till valfritt namn och välj var du vill spara den och du har precis gjort en distribuerbar Shell Extension. Nu kan du ta med dig registerfilen på valfritt media och installera den på vilken dator som helst med Windows genom att bara dubbelklicka på filen.
Om vi tittar närmare på koden i reg-filen ovan är den till stora delar självförklarande om du har följt med i exemplet ovan men vi går igenom den för säkerhets skull. REGEDIT4 talar om att det är en registerfil som är skapad för Windows 95/98/NT (kom ihåg att Windows 95 har versionsnummer 4.00 och Windows 98 har 4.10). Nästa rad innehåller sökvägen till din sträng mellan klamrarna och följande rad bär strängens data och värde. Bra att veta är att det inte går att skriva: Om vi går vidare i koden ser du att de två sista raderna är sökvägen till den andra nyckeln som vi skapade och dess data och värde. Nu ska vi skapa ytterligare en Shell Extension med utgångspunkt från den reg-fil vi skapade ovan. Nu vill vi skapa en Shell Extension som ger oss möjligheten att inte bara öppna DOS direkt på plats utan att dessutom låta DOS öppnas med en lista på innehållet i mappen. Öppna din reg-fil med en textredigerare och ändra de båda MyPrompt till ShowContent och ändra sedan DOS härifrån till Visa innehåll. Slutligen ändrar du command.com /k cd %1 till command.com /k dir lp %1 och sparar filen som ShowContent.reg. Nu vet vi vad som händer eftersom vi använde samma metod i batchfilen som vi skapade ovan, men vi vill ändå se vad som händer. Jo, ett DOS-fönster öppnas i den mapp vi klickat på och innehållet i mappen är listat i fönstret. Vår nya reg-fil bör nu se ut som nedan:
Nu har vi skapat två Shell Extensions som är mycket användbara men vi nöjer oss inte med detta. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . FLER FUNKTIONERAtt få ett DOS-fönster öppnat i rätt mapp med innehållet listat är väl bra, men det kan bli bättre. Hur går vi då tillväga för att få DOS-fönstret att stängas på ett smartare sätt än att tvingas skriva in exit varje gång? Vad vi måste göra är att skapa en batch-fil som utför listningen av filerna i mappen, sedan gör paus och när användaren trycker på en tangent stänger fönstret. Vi har alltså två sätt att stänga ett fönster, antingen genom command /c i reg-filen eller genom exit i en batch-fil. Var ska vi då placera batch-filen? Ett annat dilemma är att cirka 70% av de Windows NT som säljs i Sverige är engelskspråkiga. Du kan säkert hitta en lösning som fungerar för dig, men detta är ett problem att ta i beaktande när vi jobbar med olika versioner av Windows. Tillbaka till vår textredigerare skapar vi en batch-fil med namnet showcont.bat som innehåller följande tre rader:
och placerar sedan denna fil i c:\progra∼1. Nu måste vi redigera vår ShowContent.reg-fil.
Spara filen med ett nytt namn som exempelvis ShowContent2.reg. Testa nu din nya Shell Extension. Avinstallationen är till och med värre. För att avinstallera måste vi starta upp Regedit, ta oss till HKEY_CLASSES_ROOT\Directory\shell\ och radera nyckeln ShowContent. Sedan måste vi gå till c:\progra∼1 och radera filen showcont.bat. Vi har en fungerande Shell Extension för Windows 95/98 och Windows NT, men vi har två olika installationsprocesser. I nästa nummer ska vi gå igenom och lära oss hur man får en användarvänlig och enkel installation och avinstallation och hur detta görs möjligt med hjälp av inf-filer. Roland Casselbrant
|
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
roland.casselbrant@bonetmail.com Det är |
||