Como faço para iniciar arquivos em c #

Eu me sinto como um idiota. Eu senti que algo como a resposta abaixo funcionaria, mas não vi nenhum resultado do google semelhante às respostas abaixo. Então, quando vi esse código complexo, achei que tinha que ser assim.

Eu procurei e encontrei este Windows: Listar e iniciar aplicativos associados a uma extensão, no entanto, ele não respondeu à minha pergunta. Com ajustes abaixo eu vim com o abaixo. No entanto, fica preso em arquivos de imagem. Arquivos Txt rodam bem

Eu atualizarei este código em breve para dar conta dos caminhos de aplicativos com espaços, mas não entendo por que os arquivos de imagem não são iniciados.

static void launchFile(string fn) { //majority was taken from //https://stackoverflow.com/questions/24954/windows-list-and-launch-applications-associated-with-an-extension const string extPathTemplate = @"HKEY_CLASSES_ROOT\{0}"; const string cmdPathTemplate = @"HKEY_CLASSES_ROOT\{0}\shell\open\command"; string ext = Path.GetExtension(fn); var extPath = string.Format(extPathTemplate, ext); var docName = Registry.GetValue(extPath, string.Empty, string.Empty) as string; if (!string.IsNullOrEmpty(docName)) { // 2. Find out which command is associated with our extension var associatedCmdPath = string.Format(cmdPathTemplate, docName); var associatedCmd = Registry.GetValue(associatedCmdPath, string.Empty, string.Empty) as string; if (!string.IsNullOrEmpty(associatedCmd)) { //Console.WriteLine("\"{0}\" command is associated with {1} extension", associatedCmd, ext); var p = new Process(); p.StartInfo.FileName = associatedCmd.Split(' ')[0]; string s2 = associatedCmd.Substring(p.StartInfo.FileName.Length + 1); s2 = s2.Replace("%1", string.Format("\"{0}\"", fn)); p.StartInfo.Arguments = s2;//string.Format("\"{0}\"", fn); p.Start(); } } } 

Usar:

 System.Diagnostics.Process.Start(filePath); 

Ele usará o programa padrão que seria aberto como se você tivesse clicado nele. É certo que não permite que você escolha o programa que será executado … mas supondo que você quer imitar o comportamento que seria usado se o usuário clicasse duas vezes no arquivo, isso funcionaria muito bem.

Parece mesmo que você está procurando mais por isso:

 System.Diagnostics.Process proc = new System.Diagnostics.Process(); proc.EnableRaisingEvents = false; proc.StartInfo.FileName = ""; proc.Start(); 

Supondo que você apenas deseja iniciar arquivos que já possuem alguns aplicativos associados (por exemplo: * .txt está associado ao bloco de notas), use System.Diagnostics.Process.

por exemplo :

  using System.Diagnostics; Process p = new Process(); ProcessStartInfo pi = new ProcessStartInfo(); pi.UseShellExecute = true; pi.FileName = @"MY_FILE_WITH_FULL_PATH.jpg"; p.StartInfo = pi; try { p.Start(); } catch (Exception Ex) { //MessageBox.Show(Ex.Message); } 

Nota: No meu PC, a foto é aberta no Visualizador de imagens e fax do Windows, já que esse é o aplicativo padrão para arquivos * .jpg.