如何防止程序重复启动(Windows Mobile 5.0,.NET CF 2.0)
在Windows Mobile 5.0手机上开发.NET CF 2.0应用,开发语言是C#。如果点击文件名启动一个应用时,连续快速点击两次,那么会启动两个相同的应用,我在Google上搜到的方法都是.NET下的C#语言实现的,有很多的函数在.NET CF下不支持。请问可以有什么办法防止重复启动?谢谢!
[解决办法]
方法很多
说一个简单的
你的程序启动时,首先检查是否存在一个临时文件,这个文件你可以放在你程序的启动目录下,假设名为$run
if (File.Exists(sProgStartDir + "$run"))
//sProgStartDir 为获取你程序启动的路径的字符串
Application.Exit(); //检测到有这个临文件存在,说明该程序已经启动,则退出这个新启动的
else
{
File.Create(sProgStartDir + "$run", 4, FileOptions.DeleteOnClose);
//如果不存在,则建立这个临时文件,这个文件会随程序结束时自动删除
}
当然,你可以想到更好的办法,呵呵
或者不用文件,用注册表,启动了,就在注册表里临时建一个,程序结束,就删除这个临时建,检查重复也靠这个临时建
要给分哦
[解决办法]
Mobile本身好象就是不允许同一个程序重复启动的吧。至少,我自己的感觉,是这样的,一个已经启动的程序,如果你再去点击启动的话,他会把先前那个已经启动的程序激活。
如果你真的是需要这个功能,可以参考下这个:
http://www.vckbase.com/document/viewdoc/?id=344
不过这个是C++里面的做法。
[解决办法]
用本地代码的话,就是findwindow
其实也可以用呀。
[解决办法]
据我所知,wm5是不允许重复起一个程序的。如果要达到可控行,可以监测窗口的title或者某些固定属性
[解决办法]
WTL里有实现,不过用的是API,不是.NET CF.