lefsaker Skrevet 13. januar 2009 Del Skrevet 13. januar 2009 Driver og lager et lite informasjonssystem for en skole her, og har lyst til å legge inn mulighet for å kunne spesifisere hvilket studie brukeren av applikasjonen går på. Brukerene logger på en AD-kontroller Det er lagt inn logonscript i AD-kontroller som kopierer over applikasjonen til lokal maskin, og som starter programmet (start c:\app.exe) Det jeg ønsker, er muligheten til å legge til operander(?) når man skal starte programmet. Eksempel start "C:\app.exe -3d" start "C:\app.exe -film" osv. Å utføre denne kommandoen er jo null problem, men hvordan får jeg applikasjonen min til å lese operanden? Benytter meg av Visual Basic.net Note: Tror det heter operand, er bare ikke helt sikker Lenke til kommentar
GeirGrusom Skrevet 13. januar 2009 Del Skrevet 13. januar 2009 Dette skjer to steder: Enten i programmets entry point (Public Static Sub Main(Arguments As String())) eller i System.Windows.Forms.Environment.GetCommandLineArguments Lenke til kommentar
phfjeld Skrevet 13. januar 2009 Del Skrevet 13. januar 2009 (endret) Treff på google.com. Uten å noen sinne ha rørt VB.net-kode, regner jeg med at dette gjøres som i de fleste andre høynivåspråk. Visual Basic.net: Shared Sub Main(ByVal args As String()) For Each arg As String In args Console.WriteLine(arg) Next arg End Sub C#.net: using System; class HelloWorld { static void Main(string[] args) { foreach(string arg in args) Console.WriteLine(arg); } } C#.net: foreach(string arg in System.Windows.Forms.Environment.GetCommandLineArguments()) Console.WriteLine(arg); Dette kan altså gjøres på (minst) to måter. Endring: GeirGrusom slo meg med flere minutter. Endret 13. januar 2009 av phfjeld Lenke til kommentar
lefsaker Skrevet 13. januar 2009 Forfatter Del Skrevet 13. januar 2009 (endret) Bah, jeg får det fanken ikke til >_> Jeg har fått det til i et konsollprogram ved å bruke snuttene phfjeld henviste til, men jeg klarer ikke å porte det til en vindu-applikasjon Finner bare treff til hvordan å gjøre det i konsollapplikasjoner når jeg søker også :< Nevermind, fikk det til variabel = My.Application.CommandLineArgs(0) Endret 13. januar 2009 av lefsaker Lenke til kommentar
phfjeld Skrevet 13. januar 2009 Del Skrevet 13. januar 2009 (endret) Bah, jeg får det fanken ikke til >_> Jeg har fått det til i et konsollprogram ved å bruke snuttene phfjeld henviste til, men jeg klarer ikke å porte det til en vindu-applikasjon Finner bare treff til hvordan å gjøre det i konsollapplikasjoner når jeg søker også :< Nevermind, fikk det til variabel = My.Application.CommandLineArgs(0) Shared Sub Main(ByVal args As String()) For Each arg As String In args Console.WriteLine(arg) Next arg End Sub Problemet er nok linjen Console.WriteLine(arg), da dette er den eneste funksjonen som hører til .net-plattformens konsollbibliotek. Du kan egentlig gjøre hva du vil med matrisen 'args', akkurat som du kan med variabelen 'variabel' i ditt eget eksempel. Foreach-løkken jobber seg ganske enkelt gjennom 'args' og lagrer hvert argument i den lokale strengen 'arg'. Det er heller ikke noe i veien for å gjøre som du gjør, bortsett fra at man gjør et ekstra funksjonskall. Følgende kode burde kompilere og kjøre i en Win32-applikasjon. Shared Sub Main(ByVal args As String()) Dim argCount As Integer = 0 For Each arg As String In args argCount += 1 Next arg End Sub Endring: Fjernet en dobbelsitering. Endret 13. januar 2009 av phfjeld Lenke til kommentar
GeirGrusom Skrevet 13. januar 2009 Del Skrevet 13. januar 2009 Console.WriteLine skriver til stdout. Denne er ikke bundet til noen stream dersom du lager et console program. Det skal derimot fungere å bruke argumentene selvom du ikke får skrevet dem ut til consolen. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå