23. februar 2008 - 01:21Der er
11 kommentarer og 1 løsning
Egen applikation i Windows Context
har lige skrivet mig en applikation i C#, det er en windows forms applikation, der automatiserer nogle rutiner jeg gjorde meget før.
men kunne godt tænke mig at denne kunne åbnes fra windows's context menu, altså den hvor f.eks winrar ligger sig og, og man kan trykke "extract here" osv. Men min applikation arbejder på mapper, så hvordan kan jeg få den til at tage sti ind i main metoden, som bare er standard :
godt nok har Main formen to constructorer, en uden parameter og en der tager en sti ind.
men hvordan får jeg den til det, sådan rent programmerings mæssigt, ved godt hvordan jeg tilføjer "linket" i context menuen, det er at få applikationen til at åbne den rigtigt.
Det er selvfølgelig ikke helt det du vil men dit program åbnes ved aktivering af filen. Hvis det er *.txt som normalt åbnes i notepad kan "Åben med..." måske bruges til din løsning
altså det skal være sådan at jeg kan højre klikke på en mappe og så vælge :"Scan for avi" som menu entryen kommer til at hedde, den skal så åbne mit program og tage mappe stien med ind som paramater, hvor applikationen så scanner og gør ved.
Jeg tror det kunne være en shell extension du leder efter. Det kræver at du smider nogle ting ned i reg databasen på maskinen du kører din applikation fra (kræver sikkert også en genstart).
Her er et lille eksempel på hvordan man kan få en kommandoprompt frem i en mappe, ved at højreklikke på den.
Ja!! Men hvordan får jeg den til at sende mappe stien til applikationen, altså hvilken kode skal tilføjes i min applikation for at kunne modtage mappe stien som en parameter ?
hvis der er brug for at applikationen skal kunne køre med en parameterløs constructor også, laver du selvfølgelig bare en ekstra parameterløs constructor i formen, og så kan du switche på args.Length, som vist nedeunder, for at finde ud af om programmet er kaldt fra shellen med en parameter, eller om "standard" constructoren skal kaldes.
static class Program { [STAThread] static void Main(String[] args) { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); switch (args.Length) { case 0: Application.Run(new Main()); return; case 1: Application.Run(new Main(args[0])); return; }
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.