簡體   English   中英

從我的 Winform C# 執行和關閉其他應用程序

[英]Execute And Close Other Applications From My Winform C#

這是我的程序的一小部分,我的程序需要從 DataGridView(內容點擊事件)啟動程序,它只是完美地執行該程序,但無法關閉它,因為某些傳入程序的進程名稱與文檔名稱。 我也嘗試獲取 processid,但它拋出以下錯誤(你能否提供一個工作代碼,因為我可以獲得我的 winform 進程的 id,但是我如何從我的程序中獲取外部啟動的應用程序的 processid。我試過它拋出了跟隨錯誤

System.dll 中發生類型為“System.ArgumentException”的未處理異常附加信息:ID 為 16924 的進程未運行。)”

我正在獲取進程 ID 但失敗的代碼如下

    private void button1_Click(object sender, EventArgs e)
    {
        var processid = Process.Start("Calc");
        pn =processid.ProcessName;
        pid = processid.Id;
    }
    int pid;
    String pn;
    private void button2_Click(object sender, EventArgs e)
    {
           var process1 = Process.GetProcessById(pid);
            process1.Kill();
    }

虛擬代碼如下。

我已經嘗試過:

    private void button1_Click(object sender, EventArgs e)
    {
        Process.Start("Calc");
    }
    private void button2_Click(object sender, EventArgs e)
    {
        foreach (var process in Process.GetProcessesByName("Calc"))
        {
            process.Kill();
        }
    }

我的代碼:

    private void button1_Click(object sender, EventArgs e)
    {
        Process.Start("THIS PATH WILL COME FROM DATABASE");
    }
    private void button2_Click(object sender, EventArgs e)
    {
        foreach (var process in Process.GetProcessesByName("PROCESS NAME WHICH MY PROGRAM STARTED"))
        {
            process.Kill();
        }
    }

當您啟動流程時,獲取流程的Id並存儲它。 然后,您可以通過 id 獲取進程以終止它。 這不僅可以確保您不需要知道進程的名稱(以防它與啟動它的路徑不同),而且可以確保您在運行多個實例時殺死正確的實例,其中一些沒有啟動通過你的程序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM