最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#生成exe并用process運(yùn)行的流程步驟

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

前言

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

一、生成exe

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

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

打開項(xiàng)目屬性:右鍵點(diǎn)擊項(xiàng)目 -> 屬性。

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

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

選擇目標(biāo)運(yùn)行時(shí):選擇 win-x64 或適合的目標(biāo)平臺(tái)。

發(fā)布項(xiàng)目:點(diǎn)擊“發(fā)布”。

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

2.一些問題

我運(yùn)行遇到報(bào)錯(cuò):

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 錯(cuò)誤是因?yàn)?System.Management 命名空間中的類僅支持在傳統(tǒng)的 Windows 桌面應(yīng)用程序(如基于 .NET Framework 的應(yīng)用程序)中使用,而不是在 .NET Core 或 .NET 5+ 中使用。

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

解決這個(gè)問題的方法有兩種:

使用 .NET Framework:你可以將項(xiàng)目遷移到 .NET Framework。

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

使用 .NET Framework

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

修改項(xiàng)目文件

打開你的 .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

如果你在一個(gè)程序中使用 cmd 運(yùn)行了一個(gè) EXE 文件,而該 EXE 文件的執(zhí)行導(dǎo)致了你的程序無法繼續(xù)執(zhí)行,這可能是因?yàn)橐韵聨讉€(gè)原因:

子進(jìn)程阻塞了父進(jìn)程:

如果子進(jìn)程(即你運(yùn)行的 EXE 文件)沒有正確關(guān)閉,可能會(huì)導(dǎo)致父進(jìn)程(即你的程序)被阻塞。

資源鎖定:

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

無限循環(huán):

EXE 文件中可能存在無限循環(huán)或長(zhǎng)時(shí)間運(yùn)行的任務(wù),導(dǎo)致它不會(huì)自動(dòng)退出。

命令行掛起:

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

1.解決方法

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

以下是如何做到這一點(diǎn)的示例代碼:

示例代碼

使用 Process.Start 啟動(dòng) EXE 文件:

使用 Process.Start 方法啟動(dòng) EXE 文件,并設(shè)置 UseShellExecute 為 false。

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

確保 EXE 文件在后臺(tái)運(yùn)行:

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

示例代碼

using System;
using System.Diagnostics;

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

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

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

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

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

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

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

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

說明

1.啟動(dòng) EXE 文件:

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

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

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

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

2.啟動(dòng) EXE 文件后,程序?qū)⒗^續(xù)執(zhí)行 Main 方法中的后續(xù)代碼。

3.測(cè)試

運(yùn)行上述程序,你會(huì)看到:

輸出 “Starting EXE file…”

EXE 文件將在后臺(tái)啟動(dòng)

輸出 “EXE file started in background.”

輸出 “Parent program continues…”

執(zhí)行其他任務(wù)

等待用戶輸入以保持控制臺(tái)窗口打開

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

相關(guān)文章

  • C#實(shí)體類轉(zhuǎn)換的兩種方式小結(jié)

    C#實(shí)體類轉(zhuǎn)換的兩種方式小結(jié)

    這篇文章主要介紹了C#實(shí)體類轉(zhuǎn)換的兩種方式小結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • C#實(shí)現(xiàn)將日志寫入文本文件的方法

    C#實(shí)現(xiàn)將日志寫入文本文件的方法

    這篇文章主要介紹了C#實(shí)現(xiàn)將日志寫入文本文件的方法,涉及C#針對(duì)日志文件寫入的相關(guān)技巧,需要的朋友可以參考下
    2015-05-05
  • 使用C#實(shí)現(xiàn)在Excel中創(chuàng)建和配置數(shù)據(jù)透視表

    使用C#實(shí)現(xiàn)在Excel中創(chuàng)建和配置數(shù)據(jù)透視表

    在數(shù)據(jù)分析和業(yè)務(wù)報(bào)告場(chǎng)景中,數(shù)據(jù)透視表(Pivot?Table)是一種強(qiáng)大的數(shù)據(jù)匯總工具,本文將介紹如何使用?C#?在?Excel?工作表中創(chuàng)建和配置數(shù)據(jù)透視表,感興趣的小伙伴可以了解下
    2026-03-03
  • C#獲取網(wǎng)頁HTML源碼實(shí)例

    C#獲取網(wǎng)頁HTML源碼實(shí)例

    這篇文章主要介紹了C#獲取網(wǎng)頁HTML源碼的方法,是非常實(shí)用的技巧,需要的朋友可以參考下
    2014-10-10
  • Unity3D游戲開發(fā)數(shù)據(jù)持久化PlayerPrefs的用法詳解

    Unity3D游戲開發(fā)數(shù)據(jù)持久化PlayerPrefs的用法詳解

    在本篇文章里小編給大家整理了關(guān)于Unity3D游戲開發(fā)之?dāng)?shù)據(jù)持久化PlayerPrefs的使用的相關(guān)知識(shí)點(diǎn)內(nèi)容,需要的朋友們參考下。
    2019-08-08
  • c#之事件用法

    c#之事件用法

    這篇文章介紹了c#中事件的用法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-04-04
  • C# ODP.NET 調(diào)用Oracle函數(shù)返回值時(shí)報(bào)錯(cuò)的一個(gè)解決方案

    C# ODP.NET 調(diào)用Oracle函數(shù)返回值時(shí)報(bào)錯(cuò)的一個(gè)解決方案

    這篇文章主要介紹了C# ODP.NET 調(diào)用Oracle函數(shù)返回值時(shí)報(bào)錯(cuò)的一個(gè)解決方案,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • unity使用射線實(shí)現(xiàn)貼花系統(tǒng)

    unity使用射線實(shí)現(xiàn)貼花系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了unity使用射線實(shí)現(xiàn)貼花系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • C#驗(yàn)證碼問題的快速解決方法

    C#驗(yàn)證碼問題的快速解決方法

    下面小編就為大家?guī)硪黄狢#驗(yàn)證碼問題的快速解決方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-07-07
  • C#實(shí)現(xiàn)簡(jiǎn)單工廠模式

    C#實(shí)現(xiàn)簡(jiǎn)單工廠模式

    這篇文章介紹了C#實(shí)現(xiàn)簡(jiǎn)單工廠模式的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-07-07

最新評(píng)論

尚志市| 清远市| 延津县| 黄龙县| 黔江区| 辽宁省| 绵阳市| 鹤壁市| 全南县| 盐边县| 天台县| 衡山县| 会东县| 阜城县| 隆安县| 师宗县| 麻阳| 长岭县| 桂林市| 额敏县| 青铜峡市| 合川市| 东源县| 阳山县| 孟津县| 正蓝旗| 西吉县| 滁州市| 莱西市| 丽江市| 鸡西市| 黑水县| 长汀县| 潞城市| 玛多县| 东兴市| 东光县| 昭苏县| 林口县| 通海县| 威宁|