情况是这样的:
我有个WINCE下面的程序,要求点2次他不执行2次,也就说程序只能运行一次,我要用的方法是获取进程的方法然后关闭!让他在界面上只能有一个程序处于执行状态。
我原来在.NET FRAMWORK下面写的代码是这样的:
static void Main()
{
if (!IsExistProcess())
{
Application.Run(new Form1());
}
else
{
Application.Exit();
}
}
private static bool IsExistProcess()
{
bool result = false;
Process[] p = Process.GetProcessesByName(Path.GetFileNameWithoutExtension(Application.ExecutablePath));
if (p != null && p.Length > 1)
{
result = true;
}
return result;
}
但是我在WINCE下面不知道怎么写了? 有没有会在WINCE下面获取进程的方式来关闭这个?
(别的方法不用说了,比如文本的方法那些都不用说了,我问的只是在这种获取进程并关闭多余程序的方法)
用Mutex
还有FindWindow
去判断是否已经启动了一个应用的实例,如果存在就退出。
启动的时候创建一个Muxtex对象,要有名的,也就是名字参数要唯一。
HANDLE CreateMutex(
LPSECURITY_ATTRIBUTES lpMutexAttributes,
BOOL bInitialOwner,
LPCTSTR lpName
);
如果Muxtex创建成功
调用 GetLastError 如果 如果返回值是ERROR_ALREADY_EXISTS,证明这个Mutex已经被创建过,就是有一个,实例已经运行,则你的应用退出。
如果返回值不为ERROR_ALREADY_EXISTS,则程序正常执行;
HANDLE CreateMutex(
LPSECURITY_ATTRIBUTES lpMutexAttributes,
BOOL bInitialOwner,
LPCTSTR lpName
);
小弟新手,上面这段代码我写在C#里面他没有变色? 怎么个写法? 我有点迷糊 麻烦再详细指点下可否?
C# 也能用互斥量吧
CreateMutex 在CoreDll.Dll中,至于C#中怎么调用你该会吧,我可不会,我不懂C#。
不用吧,只需要在初始化(未显示界面前)时,检测一个标志量(比如一个互斥量,或者程序的标题),如果已存在,就不运行,并将已存在的程序调到前台即可。
互斥量和窗口调用没找过?google一下。在windows下这是基础知识,资料很多。
一般这里提供解决思路、解决方案,但是不建议给代码。
兄弟我的是WINDOWSCE下面的 不是WINDOWS下面的 我在WINCE的GOOLE下面根本查不到 怎么回事
WINDOWS下的我已经搞定了 就是WINCE下面的查不到资料 我没办法弄
我也说 了 我水平有限 我没听懂你说的啥 我怎么搞啊 大兄弟?
我上面那个代码都是一个小例子 ,你说的 我连原理都不知道,你说的那个东西我都不知道是什么? 我怎么搞啊?
查也的查C#.NET CF下面的 我咋弄啊?
我自己搞定了 哎 太无奈了 我命名问的是WINCE下面的 你们都答的WINDOWS下的
而且还咋问都不告诉我 代码就10行 我服了 100分我仍了 太郁闷了
我对这个帖子完全不满意
请问以下 X87050418X
你是怎么解决的
我现在也遇到这样的问题吖....