Tjenare. Jo, att när jag trycker på en knapp så ska de programmet jag vill ska öppnas. Så t.ex om jag trycker på "MSN" knappen så ska msn startas, förstår du då? Finns en bra videoguide på denna sida: Just nu ser min kod ut såhär: Sökvägen till filen blir felaktig. Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles) returnerar redan C:\Program Files... Hmm. Testa att göra en mapp i Program Files som hette C# och la in en genväg till msn. Men får upp samma problem igen. Har du ändrat raden Okej, tack. Men jag är ganska ny inom de här. Men i programspråket php så backar du en mapp genom ../, och du undrar jag hur man backar en mapp i C#? Om du vill skriva hela sökvägen ska det vara såhär: Jo, har testat att göra de, men då får jag felet "De går inte att hitta filen". Och jag vet att de är helt rätt sökväg. Då har du fel sökväg, eller saknar du rätigheter. Söka efter exakt sökväg till filen och lägg den i FileName. Har den exakta sökvägen och rättigheterna. Men får fortfarande upp att den inte hittar filen. Om du tar den sökvägen som du säger är exakt, och klistrar in den i Kör/Run i Windows. Startar programmet då? Skriv då: Känns konstigt, för C:\Program Files (x86)\MSN Messenger\msnmsgr.exe den funkade i run men inte i C#. Kanske rättigheterna då? Men hur ställer jag in så jag har rätt? För de här är ju min dator och då är jag admin. Eftersom mappen heter x86 gissar jag att det är ett x64-system. Det kan inte vara så att mappen visas med ett namn men egentligen heter något annat. Vista kan ha lite sådana kul saker för sig. Testa med C:\Program Files\MSN Messenger\msnmsgr.exe istället. Precis de är de. Nix gjorde ingen ändring. Samma fel. Men de är konstigt för den hittar inte firefox heller. Har testat med båda: Jag är inte så hemma på C#, men i ett Javaliknande språk jag använder är "\" reserverat. Det är därför @ är där. Får du för svar om du gör? Ja. Men jag löste de med hjälp av en kompis på MSN och de var så här slut svaret vart: Skrämmande likt det jag föreslog.:-) Det har inte med @ att göra. Det funkar hur bra som helst här både med och utan. Jag hade aldrig postat koden från början om det inte var så att jag testat den.C# Start Program
Är ny på de här program språket och ville göra en fil lik "Ventrilo Mix" så jag har designat upp den och allt. Men sen när jag ska lägga in så "buttomarna" funkar så vet jag inte hur jag ska skriva in.
Någon i mellan denna kod ska in men vet ej som sagt.
private void button1_Click(object sender, EventArgs e)
{
}
Någon som kan hjälpa mig på traven?Sv:C# Start Program
Sv: C# Start Program
using System.Diagnostics;
...
Process msn = new Process();
msn.StartInfo.FileName = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles) + @"\Windows Live\Messenger\msnmsgr.exe";
msn.Start();
Sv: C# Start Program
http://msdn.microsoft.com/sv-se/vcsharp/bb798030(en-us).aspx
Fördelen med att använda en Process control är att programmet har "kontroll" på den process som startas, då kan du lätt även stänga av processen/programmet. Kika på länken ovan så får du en bra beskrivning.
/AndersSv:C# Start Program
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Diagnostics;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Process msn = new Process();
msn.StartInfo.FileName = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles) + @"C:\Program Files (x86)\MSN Messenger\msnmsgr.exe";
msn.Start();
}
private void Form1_Load(object sender, EventArgs e)
{
}
Och du får jag upp "Det går inte att hitta filen", men den klagar på msn.Start(); raden.
Tackar Anders ska kolla igenom filmen och försöka lära mig något! Tackar :)
Sv: C# Start Program
Mvh,
TibiSv:C# Start Program
Sv: C# Start Program
msn.StartInfo.FileName = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles) + @"C:\Program Files (x86)\MSN Messenger\msnmsgr.exe";
till
msn.StartInfo.FileName = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles) + @"\MSN Messenger\msnmsgr.exe";
Testa inte ed en genväg, kag är inte säker på att de fungerar som man skulle tro. genvägar har ju ingen filändelse t.ex. vad jag vet.Sv:C# Start Program
Sv: C# Start Program
msn.StartInfo.FileName = @"C:\Program Files (x86)\MSN Messenger\msnmsgr.exe";
/JohanSv:C# Start Program
/AndersSv: C# Start Program
Mvh,Sv:C# Start Program
Sv: C# Start Program
Sv: C# Start Program
msn.StartInfo.FileName = @"C:\Program Files (x86)\MSN Messenger\msnmsgr.exe";
men byt ut :
C:\Program Files (x86)\MSN Messenger\msnmsgr.exe
mot din sökväg som du klistrade in i Kör/Run.
Dvs. blanda inte in environment eftersom du redan har hela sökvägen. Om du inte kan köra då har du något slags rättighetsproblem eftersom din sökväg är korrekt.Sv:C# Start Program
Sv: C# Start Program
/JohanSv:C# Start Program
C:\Program Files\Mozilla Firefox\firefox.exe
C:\Program Files (x86)\Mozilla Firefox\firefox.exe
Och inget funkar.Sv: C# Start Program
Ex.vis \n = radbrytning.
Därför måste man i sökvägar dubbla varje "\" till "\\"
D.v.s
C:\\Program Files\\Mozilla Firefox\\firefox.exe
Kan det vara samma i C# ?Sv:C# Start Program
@"C:\Program Files\Mozilla Firefox\firefox.exe"
är samma som
"C:\\Program Files\\Mozilla Firefox\\firefox.exe"
Det kan inte vara felet eftersom det går inte kompilera om man gör fel.
Är det nån skillnad om du kör programmet som admin, alltså högerklickar på exe-filen och väljer Kör som administratör?Sv:C# Start Program
System.IO.File.Exists(file)
Det är en WinApp du försöker från, inte Web?Sv: C# Start Program
System.Diagnostics.Process.Start("C:\\Program Files (x86)\\MSN Messenger\\msnmsgr.exe", "app2_argument");Sv:C# Start Program
Då är nästa fråga, vad gör @ för skillnad ?
Funkar det ?
Är det verkligen så att det inte går att kompilera en felaktigt hårdkodad sökväg ?
Det är ju trots allt en sträng..
Jag tittar själv på ASP.NET/C# just nu och är tacksam för kommentarer.Sv: C# Start Program
@ innan en sträng gör att du INTE behöver använda escape-sekvenser i strängen. Kompilatorn skriver om strängen automatiskt.
System.Diagnostics.Process.Start() är en statisk metod som man kan använda och det är samma som den andra jag föreslog. Tyckte dock det andra var ett bättre sätt, så föreslog det.
Så skillnaden måste ligga i argumentet du skickar med eller nån bugg/skillnad beroende på vilken av dem man använder.Sv:C# Start Program
Ursäkta om jag drar upp tråden igen men det här måste jag bara få veta: kan du prova om
msn.StartInfo.FileName = "\"C:\\Program Files (x86)\\MSN Messenger\\msnmsgr.exe\"";
funkar? Där är ju mellanslag i "Program Files"...