欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#生成exe并用process運行的流程步驟

 更新時間:2024年08月30日 08:29:36   作者:FuWen_Hao  
這篇文章主要介紹了C#生成exe并用process運行的流程步驟,文中通過代碼示例講解的非常詳細,對大家的學習或工作有一定的幫助,需要的朋友可以參考下

前言

需要寫一個小程序來監(jiān)控桌面的情況,所以想到用cmd來運行exe監(jiān)控

一、生成exe

1.發(fā)布自包含版本

假設你已經(jīng)在 Visual Studio 中打開了項目,以下是發(fā)布自包含版本的步驟:

打開項目屬性:右鍵點擊項目 -> 屬性。

選擇“發(fā)布”選項卡。

選擇“自包含”:在“發(fā)布模式”下拉菜單中選擇“自包含”。

選擇目標運行時:選擇 win-x64 或適合的目標平臺。

發(fā)布項目:點擊“發(fā)布”。

發(fā)布完成后,你可以在發(fā)布的目錄中找到你的應用程序及其所有依賴項,然后將其復制到目標機器上運行即可。

2.一些問題

我運行遇到報錯:

System.PlatformNotSupportedException: System.Management currently is only supported for Windows desktop applications.
   at System.Management.ManagementObjectSearcher..ctor(String queryString)
   at FlaUI.Core.WindowsAPI.WindowsApiTools.GetMainModuleFilepath(Process process)
   at FlaUI.Core.Application.Attach(Process process)

遇到的 System.PlatformNotSupportedException 錯誤是因為 System.Management 命名空間中的類僅支持在傳統(tǒng)的 Windows 桌面應用程序(如基于 .NET Framework 的應用程序)中使用,而不是在 .NET Core 或 .NET 5+ 中使用。

FlaUI 庫使用 System.Management 來獲取某些系統(tǒng)信息,例如進程的主模塊文件路徑。在 .NET Core 或 .NET 5+ 中,System.Management 不可用。

解決這個問題的方法有兩種:

使用 .NET Framework:你可以將項目遷移到 .NET Framework。

使用替代方法:你可以在 .NET Core 或 .NET 5+ 中使用其他方法來獲取相同的信息。

使用 .NET Framework

如果你可以接受使用 .NET Framework,你可以將項目轉換為 .NET Framework 項目。這通常涉及更改項目文件中的 TargetFramework 元素。

修改項目文件

打開你的 .csproj 文件,將 TargetFramework 更改為 .NET Framework 4.7.2 或更高版本:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net472</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="FlaUI.Core" Version="3.5.0" />
    <PackageReference Include="FlaUI.UIA3" Version="3.5.0" />
  </ItemGroup>

</Project>

二、使用Process調(diào)用exe

如果你在一個程序中使用 cmd 運行了一個 EXE 文件,而該 EXE 文件的執(zhí)行導致了你的程序無法繼續(xù)執(zhí)行,這可能是因為以下幾個原因:

子進程阻塞了父進程:

如果子進程(即你運行的 EXE 文件)沒有正確關閉,可能會導致父進程(即你的程序)被阻塞。

資源鎖定:

EXE 文件可能占用了某些資源(如文件句柄、內(nèi)存等),導致父進程無法繼續(xù)執(zhí)行。

無限循環(huán):

EXE 文件中可能存在無限循環(huán)或長時間運行的任務,導致它不會自動退出。

命令行掛起:

如果 EXE 文件在命令行中運行并且沒有退出,可能會導致命令行窗口一直保持打開狀態(tài),從而影響到父進程的繼續(xù)執(zhí)行。

1.解決方法

如果你希望在啟動一個外部 EXE 文件后讓主程序繼續(xù)執(zhí)行,而不等待 EXE 文件結束,可以使用 Process.Start 方法的非阻塞模式。這意味著啟動 EXE 文件后,你的程序將繼續(xù)執(zhí)行后續(xù)代碼。

以下是如何做到這一點的示例代碼:

示例代碼

使用 Process.Start 啟動 EXE 文件:

使用 Process.Start 方法啟動 EXE 文件,并設置 UseShellExecute 為 false。

設置 CreateNoWindow 為 true,以避免創(chuàng)建新的命令行窗口。

確保 EXE 文件在后臺運行:

使用 StartInfo.Arguments 來傳遞參數(shù),確保 EXE 文件在后臺運行。

示例代碼

using System;
using System.Diagnostics;

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("Starting EXE file...");

        // 構造 ProcessStartInfo 對象
        ProcessStartInfo startInfo = new ProcessStartInfo
        {
            FileName = "path_to_your_exe.exe", // 替換為你的 EXE 文件路徑
            UseShellExecute = false,
            RedirectStandardOutput = true,
            CreateNoWindow = true
        };

        // 啟動 EXE 文件
        Process.Start(startInfo);

        Console.WriteLine("EXE file started in background.");

        // 主程序繼續(xù)執(zhí)行后續(xù)代碼
        Console.WriteLine("Parent program continues...");

        // 示例:執(zhí)行其他操作
        DoSomethingElse();

        // 等待用戶輸入以保持控制臺窗口打開
        Console.WriteLine("Press any key to exit...");
        Console.ReadKey();
    }

    static void DoSomethingElse()
    {
        Console.WriteLine("Performing other tasks...");
        // 這里可以執(zhí)行其他任務
    }
}

說明

1.啟動 EXE 文件:

使用 Process.Start(startInfo) 啟動 EXE 文件。這不會阻塞當前程序的執(zhí)行。

避免創(chuàng)建新窗口:

設置 CreateNoWindow = true 可以避免創(chuàng)建新的命令行窗口。

繼續(xù)執(zhí)行后續(xù)代碼:

2.啟動 EXE 文件后,程序將繼續(xù)執(zhí)行 Main 方法中的后續(xù)代碼。

3.測試

運行上述程序,你會看到:

輸出 “Starting EXE file…”

EXE 文件將在后臺啟動

輸出 “EXE file started in background.”

輸出 “Parent program continues…”

執(zhí)行其他任務

等待用戶輸入以保持控制臺窗口打開

以上就是C#生成exe并用process運行的流程步驟的詳細內(nèi)容,更多關于C#生成exe并運行的資料請關注腳本之家其它相關文章!

相關文章

  • VS中C#讀取app.config數(shù)據(jù)庫配置字符串的三種方法

    VS中C#讀取app.config數(shù)據(jù)庫配置字符串的三種方法

    這篇文章主要介紹了VS中C#讀取app.config數(shù)據(jù)庫配置字符串的三種方法,需要的朋友可以參考下
    2015-10-10
  • Unity3D開發(fā)實戰(zhàn)之五子棋游戲

    Unity3D開發(fā)實戰(zhàn)之五子棋游戲

    這篇文章主要為大家詳細介紹了Unity3D開發(fā)實戰(zhàn)之五子棋游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-09-09
  • WPF應用啟動慢的問題解決

    WPF應用啟動慢的問題解決

    今天碰到一個奇怪的現(xiàn)象,在某些機器上,進行了系統(tǒng)還原后,WPF應用打開較慢,約有35s。本文先記錄下該問題的解決方案,應用啟動性能官方文檔中有說明,還有搜到的其它方案沒來得及測試,如NGEN update
    2021-05-05
  • C#中父窗口和子窗口之間控件互操作實例

    C#中父窗口和子窗口之間控件互操作實例

    這篇文章主要介紹了C#中父窗口和子窗口之間控件互操作的方法,實例分析了父窗口與子窗口互操作的技巧,需要的朋友可以參考下
    2015-01-01
  • C#泛型的逆變協(xié)變之個人理解

    C#泛型的逆變協(xié)變之個人理解

    這篇文章主要介紹了C#泛型的逆變協(xié)變之個人理解,需要的朋友可以參考下
    2023-04-04
  • C#實現(xiàn)簡單打字游戲

    C#實現(xiàn)簡單打字游戲

    這篇文章主要為大家詳細介紹了C#實現(xiàn)簡單打字游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • 可空類型Nullable<T>用法詳解

    可空類型Nullable<T>用法詳解

    本文詳細講解了可空類型Nullable<T>的用法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-02-02
  • Unity?UGUI的Mask遮罩組件使用詳解

    Unity?UGUI的Mask遮罩組件使用詳解

    這篇文章主要為大家介紹了Unity?UGUI的Mask遮罩組件使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-07-07
  • C#獲取系統(tǒng)版本信息方法

    C#獲取系統(tǒng)版本信息方法

    今天做一個獲取系統(tǒng)版本信息的實例,其獲取方法很簡單,需要的朋友可以參考下
    2012-11-11
  • C#折線圖控件使用方法詳解

    C#折線圖控件使用方法詳解

    這篇文章主要為大家詳細介紹了C#折線圖控件的使用方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02

最新評論