亚洲乱色熟女一区二区三区丝袜,天堂√中文最新版在线,亚洲精品乱码久久久久久蜜桃图片,香蕉久久久久久av成人,欧美丰满熟妇bbb久久久

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

【C#】打開程序時(shí)如何判斷如果已經(jīng)打開,則不再重復(fù)打開,并自動(dòng)拉到最前端顯示,否則才打開程序

admin
2025年9月11日 16:55 本文熱度 85

以下是使用C#實(shí)現(xiàn)單實(shí)例應(yīng)用程序并激活已運(yùn)行實(shí)例的代碼:

using System;

using System.Diagnostics;

using System.Runtime.InteropServices;

using System.Threading;

using System.Windows.Forms;


class Program

{

    // 導(dǎo)入user32.dll函數(shù)用于窗口操作

    [DllImport("user32.dll")]

    private static extern bool SetForegroundWindow(IntPtr hWnd);

    

    [DllImport("user32.dll")]

    private static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);

    

    [DllImport("user32.dll")]

    private static extern bool IsIconic(IntPtr hWnd);


    private const int SW_RESTORE = 9; // 還原窗口的命令


    static void Main()

    {

        // 使用唯一的Mutex名稱(建議使用GUID)

        bool createdNew;

        using (Mutex mutex = new Mutex(true, "Global\\TestAppMutex", out createdNew))

        {

            if (createdNew)

            {

                // 首次啟動(dòng) - 正常運(yùn)行程序

                Application.EnableVisualStyles();

                Application.SetCompatibleTextRenderingDefault(false);

                Application.Run(new MainForm()); // 替換為你的主窗體

            }

            else

            {

                // 程序已運(yùn)行 - 查找并激活現(xiàn)有實(shí)例

                Process current = Process.GetCurrentProcess();

                foreach (Process process in Process.GetProcessesByName(current.ProcessName))

                {

                    if (process.Id != current.Id)

                    {

                        IntPtr handle = process.MainWindowHandle;

                        if (handle != IntPtr.Zero)

                        {

                            // 如果窗口最小化則還原

                            if (IsIconic(handle))

                            {

                                ShowWindow(handle, SW_RESTORE);

                            }

                            // 將窗口帶到前臺(tái)

                            SetForegroundWindow(handle);

                            break;

                        }

                    }

                }

            }

        }

    }

}


// 示例主窗體類(需要根據(jù)實(shí)際項(xiàng)目替換)

public class MainForm : Form

{

    public MainForm()

    {

        this.Text = "Test Application";

        // 這里添加你的窗體初始化代碼

    }

}?

注意事項(xiàng):

  1. Mutex名稱:使用Global\\前綴確保系統(tǒng)范圍內(nèi)的唯一性,建議使用GUID作為后綴(如Global\\YourGUIDHere)避免與其他程序沖突

  2. 窗口查找邏輯

    • 通過進(jìn)程名查找已運(yùn)行的實(shí)例

    • 使用MainWindowHandle獲取主窗口句柄

    • 先檢查窗口是否最小化,如果是則先還原

    • 使用SetForegroundWindow將窗口帶到前臺(tái)

  3. 窗體實(shí)現(xiàn):示例中的MainForm需要替換為實(shí)際項(xiàng)目的窗體類

  4. 適用于

    • Windows窗體應(yīng)用程序(WinForms)

    • 控制臺(tái)應(yīng)用程序(需添加對(duì)System.Windows.Forms的引用)

如果需要更精確的窗口匹配,可以考慮:

  • 使用進(jìn)程ID排除當(dāng)前進(jìn)程

  • 添加額外的窗口標(biāo)題檢查

  • 使用自定義的IPC通信方式

建議在程序退出時(shí)釋放Mutex資源(示例中using語句已自動(dòng)處理)


該文章在 2025/9/11 18:22:09 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉(cāng)儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購(gòu)管理,倉(cāng)儲(chǔ)管理,倉(cāng)庫(kù)管理,保質(zhì)期管理,貨位管理,庫(kù)位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved