Я хочу вызвать exe-файл (abc.exe) из другого приложения (привет)

Как я могу программно получить путь к файлу abc.exe, чтобы я мог использовать его для вызова abc.exe

Abc.exe не является частью выполнения сборки, поэтому assembly.GetExecutingAssembly () не будет работать

0
Swati 19 Янв 2010 в 07:41

2 ответа

Лучший ответ

Используйте system.diagnostics.process Возможности класса для этого.

using System;
using System.Diagnostics;
using System.ComponentModel;

namespace MyProcessSample
{
/// <summary>
/// Shell for the sample.
/// </summary>
public class MyProcess
{
    // These are the Win32 error code for file not found or access denied.
    const int ERROR_FILE_NOT_FOUND =2;
    const int ERROR_ACCESS_DENIED = 5;

    /// <summary>
    /// Prints a file with a .doc extension.
    /// </summary>
    public void PrintDoc()
    {
        Process myProcess = new Process();

        try
        {
            // Get the path that stores user documents.
            string myDocumentsPath = 
                Environment.GetFolderPath(Environment.SpecialFolder.Personal);

            myProcess.StartInfo.FileName = myDocumentsPath + "\\MyFile.doc"; 
            myProcess.StartInfo.Verb = "Print";
            myProcess.StartInfo.CreateNoWindow = true;
            myProcess.Start();
        }
        catch (Win32Exception e)
        {
            if(e.NativeErrorCode == ERROR_FILE_NOT_FOUND)
            {
                Console.WriteLine(e.Message + ". Check the path.");
            } 

            else if (e.NativeErrorCode == ERROR_ACCESS_DENIED)
            {
                // Note that if your word processor might generate exceptions
                // such as this, which are handled first.
                Console.WriteLine(e.Message + 
                    ". You do not have permission to print this file.");
            }
        }
    }
1
Chathuranga Chandrasekara 19 Янв 2010 в 07:44
Но как получить путь к файлу exe
 – 
Swati
19 Янв 2010 в 07:45
Пожалуйста, поясните подробнее? Что вы имеете в виду, говоря о пути? Найти абсолютный путь по имени файла?
 – 
Chathuranga Chandrasekara
19 Янв 2010 в 07:47

Похоже, вы хотите запустить отдельный процесс.

Process myProcess = new Process();
myProcess.StartInfo.FileName = @"c:\program files\hello\abc.exe"
myProcess.StartInfo.CreateNoWindow = true;
myProcess.Start();
1
user24359user24359 19 Янв 2010 в 07:45
@ "c: \ program files \ hello \ abc.exe" я не могу указать такой путь, он должен быть относительным
 – 
Swati
19 Янв 2010 в 07:46
Вы можете использовать Directory.GetCurrentDirectory (), чтобы получить текущий каталог и построить из него относительный путь.
 – 
user24359
19 Янв 2010 в 08:19