如何防止我的程序打开多次(Windows mobile)

时间:2009-07-16 15:23:20

标签: c# windows-mobile

如何阻止我的程序多次打开(Win​​dows mobile)?

以及如何重置我的程序(Windows mobile)?

感谢的

3 个答案:

答案 0 :(得分:1)

首先,检查你的程序是否已经运行,在WinMain上创建一个命名对象(即一个名为Mutex),如果创建成功,那么程序没有其他实例在运行,如果它失败,因为它存在,那么你知道你的程序还有另一个实例正在运行。在这种情况下,使用FindWindow(http://msdn.microsoft.com/en-us/library/aa929233.aspx)搜索应用程序的窗口,然后通过SetForegroundWindow(http://msdn.microsoft.com/en-us/library/aa923858.aspx)将其带到前台

希望这会有所帮助...

答案 1 :(得分:1)

如果你有一个.Net CF框架应用程序,这个视频如何引导你,逐步测试如何做到这一点。 link text

谢谢, 麦克

答案 2 :(得分:0)

为防止运行您的多个程序实例,您可以使用名为Mutex

this question。这同样适用于Windows Mobile。

我不确定你的意思是重置你的程序,但如果你的意思是重启设备 - 你可能想看看KernelIoControl功能。以下是有关如何p/invoke KernelIoControl的更多信息。

[DllImport("coredll.dll")]
public static extern int KernelIoControl(int dwIoControlCode, 
                                         IntPtr lpInBuf, 
                                         int nInBufSize, 
                                         IntPtr lpOutBuf, 
                                         int nOutBufSize, 
                                         ref int lpBytesReturned);

//.. and the invocation..
int retBytes = 0;
// Reboot device
KernelIoControl(((0x101 << 16) | (15 << 2)), IntPtr.Zero, 0, IntPtr.Zero, 0, ref retBytes);