国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

用C#給程序加啟動畫面并只允許一個應用程序實例運行

2024-07-21 02:18:44
字體:
來源:轉載
供稿:網友
涉及類:

1、 啟動畫面類:

public class splashform : system.windows.forms.form

{

private system.windows.forms.picturebox picturebox1;

private system.windows.forms.label label1;

private system.windows.forms.label lbl_version;

/// <summary>

/// 必需的設計器變量。

/// </summary>

private system.componentmodel.container components = null;



public splashform()

{

//

// windows 窗體設計器支持所必需的

//

initializecomponent();

lbl_version.text = "版本:" + application.productversion;





//

// todo: 在 initializecomponent 調用后添加任何構造函數代碼

//

}

//以下省略

2、 應用程序加載類:

using system;

using system.drawing;

using system.collections;

using system.componentmodel;

using system.windows.forms;

using system.data;

using system.runtime.interopservices;

using system.diagnostics;

using system.reflection;

using system.io;





namespace heroic.tempanalyse.tempgui

{

/// <summary>

/// apploader 的摘要說明。

/// </summary>

public class apploader

{

private static applicationcontext context;

private static splashform sform = new splashform();

private static mainwindow mform = null;

//0不可見但仍然運行,1居中,2最小化,3最大化

private const int ws_shownormal = 3;





[stathread]

static void main(string[] args)

{

// [8/12/2004]用于更新該程序。

doupdata();

// [7/19/2004] 改變順序,目的使得開始加載速度加快

//得到正在運行的例程

process instance = runninginstance();

if(instance == null)

{

sform.show();

mform = new mainwindow();

context = new applicationcontext();

application.idle += new eventhandler(onappidle);

application.run(context);

}

else

{

//處理發現的例程

handlerunninginstance(instance);

//messagebox.show("當前程序已經運行了!");

}

}

//在線更新用,不再本文范圍

private static void doupdata()

{

system.diagnostics.process.start([email protected]"/update.exe",[email protected]"/heroic.tempanalyse.tempgui.exe 0");//

}



private static void onappidle(object sender, eventargs e)

{

if(context.mainform == null)

{

application.idle -= new eventhandler(onappidle);

mform.preload();

context.mainform = mform;

context.mainform.show();

sform.close();

sform = null;

}

}

//不允許有兩個程序同時啟動

public static process runninginstance()

{

process current = process.getcurrentprocess();

process[] processes = process.getprocessesbyname (current.processname);

//遍歷正在有相同名字運行的例程

foreach (process process in processes)

{

//忽略現有的例程

if (process.id != current.id)

{

//確保例程從exe文件運行

if (assembly.getexecutingassembly().location.replace("/", "//") ==

current.mainmodule.filename)

{

//返回另一個例程實例

return process;

}

}

}

//沒有其它的例程,返回null

return null;

}



public static void handlerunninginstance(process instance)

{

//確保窗口沒有被最小化或最大化

showwindowasync (instance.mainwindowhandle , ws_shownormal);



//設置真實例程為foreground window

setforegroundwindow (instance.mainwindowhandle);

}



[dllimport("user32.dll")]



private static extern bool showwindowasync(

intptr hwnd, int cmdshow);

[dllimport("user32.dll")] private static extern bool

setforegroundwindow(intptr hwnd);

}

}

3、 加載完畢正式運行后的類:

public void preload()

{

// 如果已經加載畢,則返回

if (_loaded)

return;





// 把機器生成的代碼放到這里

initcustomcontrol();









_loaded = true;



}



// 是否加載完畢

private bool _loaded = false;



protected override void onload(eventargs e)

{

// 確保 preload()函數已經調用

if (!_loaded)

throw new invalidoperationexception("must call preload before calling this function.");







}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 盐山县| 阜新市| 舒兰市| 亚东县| 论坛| 泰和县| 镇原县| 山阴县| 长葛市| 纳雍县| 乌恰县| 辽中县| 安陆市| 遂平县| 封丘县| 镇远县| 东平县| 临江市| 肃宁县| 阿拉善盟| 黑山县| 邵东县| 华坪县| 黑水县| 拜泉县| 博罗县| 文水县| 鄢陵县| 公安县| 大英县| 佛学| 那曲县| 台南市| 乳源| 鸡泽县| 陕西省| 嘉善县| 岚皋县| 余干县| 古交市| 湖北省|