logo

 

in English

Stars and strips
Articles
About me


www.flickr.com

casselbrant's photos More of casselbrant's photos

[ 2010 ]

December
November
Oktober
September
Augusti
Juli
Juni
Maj
April
Mars
Februari
Januari

[ 2009 ]

December
November
Oktober
September
Augusti
Juli
Juni
Maj
April
Mars
Februari
Januari

[ 2008 ]

December
November
Oktober
September
Augusti
Juli
Juni
Maj
April
Mars
Februari
Januari


[ 2007 ]

December
November
Oktober
September
Augusti
Juli
Juni
Maj
April
Mars
Februari
Januari

[ 2006 ]

December
November
Oktober
September
Augusti
Juli
Juni
Maj
April
Mars
Februari
Januari

[ 2005 ]

December
November
Oktober
September
Augusti
Juli
Juni
Maj
April
Mars
Februari
Januari


[ 2004 ]

December
November
Oktober
September
Augusti
Juli
Juni
Maj
April
Mars
Februari
Januari

[ 2003 ]

December
November
Oktober
September
Augusti
Juli
Juni
Maj
April
Mars
Februari
Januari

[ 2002 ]

December
November
Oktober
September
Augusti
Juli
Mars-Juni






Valid HTML 4.01 Transitional

Valid CSS!


[ Fler funktioner i Windows skal ]

ShellExtensions är namnet på de menyalternativ som läggs till i Windows hägerklicksmeny av olika applikationer.
PC+ visar dig hur du själv ökar Windows funktionalitet, så följ med i det första avsnittet av två om hur du skapar egna Shell Extensions.

ikonerI ett modernt operativsystem som Windows ges vi i och med det grafiska gränssnittet flera olika möjligheter att utföra en specifik uppgift.
Vid de tillfällen vi har behov av att få uppgifter utförda på ett sätt som Windows inte erbjuder kan vi många gånger skapa lösningar för detta i det grafiska gränssnittet då Windows lämnar flera möjligheter för detta.

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.
Detta är en Shell Extension som lägger till ett menyval i popupmenyn som du får fram när du högerklickar på en mapp och som när du väljer den öppnar ett DOS-fönster i den katalog du klickade på.

Ladda ner exempelfilerna i valfritt format:

shell1exempel.lzh
shell1exempel.rar
shell1exempel.zip

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

GRUNDEN

Låt oss börja med att titta på hur Windows hanterar kommandon och argument.
Öppna ett DOS-fönster och skriv command /?.
Nu ser du alla de argument som vi kan använda tillsammans med kommandot command.
På första raden står det:

Startar en ny Windows MS-DOS prompt.

Detta innebär i praktiken att den startar en ny DOS-session.
Nu går vi vidare till de två sista argumenten i listan,
command /c och command /k.

Det är väl inte den tydligaste förklaringen som erbjuds men vi provar och ser vad som händer.
Skriv command /k vid prompten ett par-tre gånger och stäng sedan DOS-fönstret med exit-kommandot.

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å.
Vi tittar på ett exempel som låter oss använda ett Linuxkommando i DOS.
Skapa en ny fil som du döper till ls.bat och skriv in följande:

ls.bat

Spara först filen och prova sedan att skriva Is *.bat vid DOS-prompten.
Nu listar DOS alla bat-filer precis som om du hade använt dig av kommandot dir.
Du kan även prova att skriva
ls *.bat /p.

Vad som händer är att du ger parametern %1 värdet .bat och parametern %2 värdet lp.

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

REGISTRET

För att vår Shell Extension ska fungera måste vi göra ändringar i Windows register.
Vi tittar på vad det är som behöver göras där och hur det fungerar.

Öppna programmet Regedit och sedan nyckeln HKEY_CLASSES_ROOT.

De nycklar som nu blev tillgängliga är alla filändelser för registrerade filtyper.
Bläddra nu ner tills du hittar nyckeln .txt, som vi vet är filändelsen för textdokument.
Om du högerklickar på en txt-fil i Windows och väljer Egenskaper så får du informationen:
"Typ: Textdokument".

Hur vet registret detta?
Om vi klickar på nyckeln .txt visas i högra fönstret strängen "(standard) "txtfil"".
Om vi nu bläddrar ner tills vi hittar nyckeln txtfil och klickar på den får vi fram strängen "(standard) "Textdokument"".
Det är alltså där som filens typinformation finns lagrad.
Denna kunskap är viktig för oss när vi skapar vår Shell Extension.

Vad gör vi om vi vill associera någonting till en fil eller någonting som inte har en filändelse?
Om vi söker med Regedit kommer vi hitta en nyckel som heter Directory.
Vi kommer också att hitta en nyckel som heter Drive och det är på de här platserna som vi ska lägga till den registernyckel som låter oss hoppa till en DOS-prompt från valfri mapp.

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ÄGEN

Tillbaka i Regedit expanderar vi nyckeln Directory.
Nu får vi upp några nya nycklar och en av dessa heter shell och den högerklickar vi på.
Vi väljer Ny och Nyckel ur menyerna och döper den till MyPrompt.

I höger fönster har vi nu strängen "(standard) (värde har ej angivits)".
Dubbelklicka på (standard) för att få upp strängredigeringsfönstret och i rutan data anger du DOS härifrån.

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
(observera, om du använder Windows NT ska du ändra alla i artikeln förekommande command.com till cmd.exe).

Nu kan vi gratulera oss själva till att ha skapat vår första Shell Extension.
Prova genom att högerklicka på en mapp och välj DOS härifrån.

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.
Återvänd nu till Regedit och din nyckel MyPrompt och se till att den är markerad.
I menyraden väljer du Register och Exportera registerfil.

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.
Så här ska reg-filen se ut:

MyPrompt.reg

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.
Eftersom den data vi givit strängen är standard (default) anges detta med @.
Strängens värde är det som kommer härnäst och värdet vi gav strängen var DOS härifrån.

Bra att veta är att det inte går att skriva:
(standard)="DOS härifrån"
i reg-filer anges alltid standard som @.

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.
Så vi dubbelklickar på vår nya regfil och svarar ja och ok på de följande frågorna vi får.
Nu högerklickar vi på en mapp och vad 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:

ShowContent.reg

Nu har vi skapat två Shell Extensions som är mycket användbara men vi nöjer oss inte med detta.
Det finns ytterligare knep för att förenkla vårt liv tillsammans med Windows.

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

FLER FUNKTIONER

Att få ett DOS-fönster öppnat i rätt mapp med innehållet listat är väl bra, men det kan bli bättre.
Vi vill naturligtvis kunna stänga fönstret på ett bekvämt sätt också utan att behöva skriva exit varje gång.

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?
Vi gick igenom command /e tidigare.
Detta är dock ingen lyckad lösning, eftersom det som kommer att hända med DOS-fönstret är att det öppnas, listar filerna och stängs på ett ögonblick och vi hinner inte se någonting.

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.
Om vi använderexit-metoden kommer fönstret att stängas endast om den kommer till slutet av batchfilen så att den kan läsa kommandot exit.

Var ska vi då placera batch-filen?
Att använda c:\windows är uteslutet då Windows NT-användare inte har en Windows-katalog.

Ett annat dilemma är att cirka 70% av de Windows NT som säljs i Sverige är engelskspråkiga.
För min egen del kommer jag mest i kontakt med engelskspråkiga versioner av Windows 95 och NT, så min egen lösning på problemet är att använda c:\progra∼1program files är en katalog som finns i både Windows 95 och NT.

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:

Showcont.bat

och placerar sedan denna fil i c:\progra∼1.

Nu måste vi redigera vår ShowContent.reg-fil.
Ändra sista raden till @="command.com /c c:\progra∼1 \showcont.bat %1 så att din reg-fil ser så här:

ShowContent2.reg

Spara filen med ett nytt namn som exempelvis ShowContent2.reg.

Testa nu din nya Shell Extension.
Nu har vi en utmärkt liten Shell Extension med en besvärlig installation.
Skulle vi vilja installera det här på en annan dator blir vi tvungna att ta med filerna showcont.bat och ShowContent2.reg och sedan kopiera showcont.bat till c:\progra∼1 och sedan köra reg-filen.

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
(PC-Plus, nr 8, september 1999, sid 18-20)

[ < < Tillbaka ]

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .


roland.casselbrant@bonetmail.com
Det är :

Powered by WEB/2

Powered by Södertörns EnergiCenter

Powered eComstation