IT story

C #에서 프로세스를 시작하려면 어떻게합니까?

hot-time 2020. 6. 13. 09:42
반응형

C #에서 프로세스를 시작하려면 어떻게합니까?


사용자가 버튼을 클릭 할 때 URL을 시작하는 등의 프로세스를 시작하려면 어떻게합니까?


Matt Hamilton이 제안한 것처럼 프로세스를 제한적으로 제어 할 수있는 빠른 방법은 System.Diagnostics.Process 클래스에서 정적 Start 메서드를 사용하는 것입니다.

using System.Diagnostics;
...
Process.Start("process.exe");

대안은 Process 클래스의 인스턴스를 사용하는 것입니다. 이를 통해 스케줄링, 실행되는 창 유형 및 가장 유용하게는 프로세스가 완료 될 때까지 기다리는 기능을 포함하여 프로세스를 훨씬 더 제어 할 수 있습니다.

using System.Diagnostics;
...
Process process = new Process();
// Configure the process using the StartInfo properties.
process.StartInfo.FileName = "process.exe";
process.StartInfo.Arguments = "-n";
process.StartInfo.WindowStyle = ProcessWindowStyle.Maximized;
process.Start();
process.WaitForExit();// Waits here for the process to exit.

이 방법을 사용하면 위에서 언급 한 것보다 훨씬 많은 제어가 가능합니다.


System.Diagnostics.Process.Start 메소드를 사용하여 프로세스를 시작할 수 있습니다 . URL을 문자열로 전달하면 기본 브라우저가 시작됩니다.


Matt가 말했듯이 Process.Start를 사용하십시오 .

URL 또는 문서를 전달할 수 있습니다. 등록 된 응용 프로그램에 의해 시작됩니다.

예:

Process.Start("Test.Txt");

그러면 Text.Txt가로드 된 Notepad.exe가 시작됩니다.


내 프로그램에서 다음을 사용했습니다.

Process.Start("http://www.google.com/etc/etc/test.txt")

약간 기본이지만 나를 위해 일합니다.


var path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "/YourSubDirectory/yourprogram.exe");
Process.Start(new ProcessStartInfo(path));

Process 클래스를 사용하십시오 . MSDN 설명서에는 사용 방법에 대한 예가 있습니다.


이 구문을 사용하여 모든 응용 프로그램을 실행할 수 있습니다.

System.Diagnostics.Process.Start("Example.exe");

URL에 대해서도 마찬가지입니다. 이 사이에 URL을 작성하십시오 ().

예:

System.Diagnostics.Process.Start("http://www.google.com");

class ProcessStart
{
    static void Main(string[] args)
    {
        Process notePad = new Process();

        notePad.StartInfo.FileName   = "notepad.exe";
        notePad.StartInfo.Arguments = "ProcessStart.cs";

        notePad.Start();
    }
}

이것을 선언

[DllImport("user32")]
private static extern bool SetForegroundWindow(IntPtr hwnd);
[DllImport("user32")]
private static extern bool ShowWindowAsync(IntPtr hwnd, int a);

그리고 이것을 함수 안에 넣습니다 ( "checkInstalled"는 선택 사항이지만, 사용하려면이를 구현해야합니다).

if (ckeckInstalled("example"))
{
    int count = Process.GetProcessesByName("example").Count();
    if (count < 1)
        Process.Start("example.exe");
    else
    {
        var proc = Process.GetProcessesByName("example").FirstOrDefault();
        if (proc != null && proc.MainWindowHandle != IntPtr.Zero)
        {
            SetForegroundWindow(proc.MainWindowHandle);
            ShowWindowAsync(proc.MainWindowHandle, 3);
        }
    }
}

참고 : .exe 인스턴스가 두 개 이상 실행될 때 이것이 작동하는지 확실하지 않습니다.


을 포함하십시오 using System.Diagnostics;.

그리고 이것을 호출 Process.Start("Paste your URL string here!");

다음과 같이 해보십시오 :

using System.Web.UI;
using System.Web.UI.WebControls;
using System.Diagnostics;

namespace btnproce
{
    public partial class WebForm1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            string t ="Balotelli";
            Process.Start("http://google.com/search?q=" + t);
        }
    }
}

Please note that it is a sample ASP.NET page as an example. You should try and improvise a little bit.


To start Microsoft Word for example, use this code:

private void button1_Click(object sender, EventArgs e)
{
    string ProgramName = "winword.exe";
    Process.Start(ProgramName);
}

For more explanations, check out this link.

참고URL : https://stackoverflow.com/questions/181719/how-do-i-start-a-process-from-c

반응형