首 页 网络编程
网页制作 图形图象 操作系统 冲浪宝典
软件教学 认证考试

网络安全 网络办公 行业资讯 评测对比
您当前位置:站长天空 -> 操作系统-> Solaris教程
用C#给程序加启动画面并只允许一个应用程序实例运行-.NET教程,C#语言
作者:网友供稿 点击:433
推荐
西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!可在线rar解压,自动数据恢复设置虚拟目录等.免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金
站内搜索
文章页数:[1] 
涉及类:

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(application.startuppath+@"\update.exe",application.startuppath+@"\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.");







}


文章整理:站长天空 网址:http://www.z6688.com/
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

文章页数:[1] 


放大字体显示 缩小字体显示 打印文章 推荐给朋友
热门文章
·使用JSP对文件下载的控制-JSP教程,Jsp/Servlet
·[ASP.net(C#)]XML操作类(一)-.NET教程,C#语言
·java网络五子棋的源代码-JSP教程,Java技巧及代码
·用C#给程序加启动画面并只允许一个应用程序实例运行-.NET教程,C#语言
·.Net平台下开发中文语音应用程序-.NET教程,VB.Net语言
·用java取得本机的ip和机器名-JSP教程,Java技巧及代码
·动力设备环境及图像集中监控管理系统若干新问题——王观坤、刘崇海
·Java下XML编程接口比较:DOM SAX JDOM JAXP-.NET教程,XML应用
·使用Java技术在Cocoon中实现商业逻辑-JSP教程,Java技巧及代码
·[SQL]启动SQLServer的死锁检查-数据库专栏,SQL Server
最新文章
·日一万ip网站 gg月入万刀_网赚技巧
·浅谈cpm、cpc、cpa、pfp网站赚钱说明_网赚技巧
·王通:网站赚钱靠服务、产品和投资三种方式_网赚技巧
·网站的首页最应该放什么?_站长心得
·简洁而不简单:google成功十条真理_google推广
·google排名 如何用关键字优化网站_google推广
·用google adsense渠道跟踪你的广告(新手读)_google推广
·全面了解google 网页目录_google推广
·做完网站别忘调试----网站调试全攻略2_站长心得
·网上开店快乐赚钱-发现潜在商机_站长心得
相关主题
西部数码虚拟主机

友情链接
CNNIC 西部数码
万网 自助建站
虚拟主机 asp空间
域名注册 域名
域名申请 主页空间
论坛空间 网站空间
国际域名 虚拟空间
空间租用 DDOS防火墙
成都主机托管 四川主机托管
主机租用 服务器租用
网站目录 自助建站
虚拟主机 网址大全
软件下载
自助链接
虚拟主机资讯 特价虚拟主机
版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
关于我们:站长天空:专业提供最新的站长资讯、在线教程、虚拟主机权威评测、虚拟主机性能对比、网站制作教程,开发教程,站长工具。包括网页制作教程、冲浪宝典、编程参考、操作系统、软件教学、行业动态等。
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
发表评论 打印  刷新     关闭