GGladhMedlem sedan maj 20012 812 inlägg
Då kikar den själv i registret efter sökvägen till notpad. Men jag vill göra samma sak med autocad dvs acad.exe, det verkar inte fungera lika bra. Finns det något annat bättre sätt att hitta sökvägen till ett specifikt program?.
Den tittar inte i registert, utan du har registrerat en del sökvägar som du vill att OS:et skall leta efter programmet.
Om inte AutoCad gör det själv så måste användaren på datorn göra det. Eller så kanske sökvägen finns i registert någonstans, bara att sätta sig ner och söka igenom det.
- M
NnikoMedlem sedan juni 20022 599 inlägg FindExecutable
Fast sen är väl frågan varför man måste veta den verkliga sökvägen. Process.Start kan ju ta enbart dokumentet som inparameter?
AArticMedlem sedan dec. 199932 inlägg Nä, nog går det att bara starta ett program med process.start() så här ser kkoden ut som jag använder nu:
AcadProcess.StartInfo.FileName() = "acad.exe"
StreamToDisplay.Close()
AcadProcess.StartInfo.WorkingDirectory() = "arbetskatalogen"
AcadProcess.StartInfo.Arguments = "/b " & "Untitled.scr"
AcadProcess.Start()
Men problemet är som sagt att det funkar bara om jag anger en fysisk sökväg till acad.exe.
Jag gissar att det går och lösa med filhanterings funktionerna, dvs att man skriver en loop som letar igenom hådisken efter autocad. Men jag hoppades att det skulle finnas en annan lösning.
Det skulle väl kanske gå att använda FindExecutable
Men den vill väl att man ger den ett filnamn att jobba med och visar sedan vilket program det är associerat med. Och det är det som är kruxet att jag vill öppna acad utan fil...
NnikoMedlem sedan juni 20022 599 inlägg
Nä, nog går det att bara starta ett program med process.start()
Nej, det räcker med att ange ett dokumentnamn under förutsättning att filändelsen är kopplad till AutoCad. Hur det är med *.scr vet jag inte (jag vet inget om AutoCad).
Det skulle väl kanske gå att använda FindExecutable
Men den vill väl att man ger den ett filnamn att jobba med och visar sedan vilket program det är associerat med. Och det är det som är kruxet att jag vill öppna acad utan fil...
Jo, men om du skapar temporära tomma filer med ändelser som du vet normalt är associerade med AutoCad och sen loopar tills returvärdet innehåller "acad.exe" så har du väl stor chans att få fram sökvägen till AutoCad på det sättet?
AArticMedlem sedan dec. 199932 inlägg Jo, det får nog nästan bli en sån lösning, men det kan ju vara så att personen har ett program associerat filändelsen .dwg (som är en ritning för autocad till ett annat program, jag vet några som har det så) och då kommer den ju att försöka starta det programmet istället.. .scr är en scriptfil som autocad can läsa men inte är associerat med acad. Så det är tyvärr inte en vattentät lösning. Men som jag har det just nu fungerar tillräckligt bra för 90% av burkarna.. resterande 10 % får välja en fysisk sökväg. (Tyvärr är det oftast de sista 10% som inte kan ett dugg om datorer)
Ingen som har något förslag på hur man kan färgkoda text? Texten behöver inte vara editerbar när man ser färgkoden. Kan det vara en lösning att öppna texten i ett webfönster med en css kanske. Eller skulle man kunna använda GUI (Det är grafikgrejorna i .net va?) på något trevligt sätt.
Alla förslag är välkommna!
NnikoMedlem sedan juni 20022 599 inlägg
men det kan ju vara så att personen har ett program associerat filändelsen .dwg (som är en ritning för autocad till ett annat program, jag vet några som har det så) och då kommer den ju att försöka starta det programmet istället
Ja, självfallet ska du inte lita blint på vad FindExecutable returnerar. Du måste även (som jag skrev) kolla så att "acad.exe" finns med i returvärdet. Misslyckas denna metod så kan nästa steg vara att loopa igenom registernyckeln:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
och kolla värdena på DisplayName, InstallLocation och InstallSource. Jag antar att AutoCad lägger sig där precis som de flesta program?
Ingen som har något förslag på hur man kan färgkoda text?
Lite luddiga förslag:
Använd en Webbrowserkontroll + css, som du själv föreslår.
Använd en richtextbox.
Använd en vanlig texbox som du subclassar och använder GDI+ på.
AArticMedlem sedan dec. 199932 inlägg Tacik så hemskt mycket för all hjälp, nu ska jag nog få en lösning som är hyffsat säker.
Ska se vad man kan göra åt färgkodningen. Jag återkommer med min lösning, eller om jag har fler frågor ;-)
AArticMedlem sedan dec. 199932 inlägg Hej igen, nu börjar det gå lite framåt Har gjort en lösning för att starta acad med hjälp av FindExecutable. Färkodning i richtextbox funkar också fint. Dock har ett litet annat probem uppstått... :-(
När jag starta acad så skickar jag med några parametrar som den ska starta med., mer exact något sånthär:
Dim p As Process = New Process()
p.StartInfo.FileName = strPath & "acad.exe"
p.StartInfo.Arguments = "/b" & strPathtofile & ""
p.Start()
strPath är sökvägen till autocad och strPathtofile är en scriptfil som acad ska köra direkt när det startas.
Jag sitter tyvärr inte framför koden just nu så jag kan inte lova att det är exakt så det ser ut. Mitt problem är dock att om användaren har en sökväg med ett mellanslag i mappnamnet så hittar acad inte filen. Någon som vet hur man kan skicka en parameter till ett program med mellanslag i sökvägen?
NnikoMedlem sedan juni 20022 599 inlägg Nu vet jag, som sagt, inget om AutoCad men om problemet är att den föredrar 8.3-namn så ska du nog titta på GetShortPathName.
Eventuellt kan det också vara så enkelt som att det hjälper med lite extra citationstecken:
p.StartInfo.Arguments = """/b" & strPathtofile & """"
AArticMedlem sedan dec. 199932 inlägg Tack så hemskt mycket niko, du hade givetvis rätt igen
:)
Det var fnuttarna som jäv***.. funkade mycket bättre med
AcadProcess.StartInfo.Arguments = "/b """ & mstrPath & "strFilename"""
Tack än en gång för all hjälp!