首页 > Windows开发 > 详细

WinCe 如何使应用程序只开启一个

时间:2014-03-25 12:45:50      阅读:508      评论:0      收藏:0      [点我收藏+]

方法一:

bubuko.com,布布扣
namespace MyNameSpace
{
static class Program { [DllImport("Toolhelp.dll")] public static extern IntPtr CreateToolhelp32Snapshot(uint flags, uint processid); [DllImport("Toolhelp.dll")] public static extern int Process32First(IntPtr handle, ref PROCESSENTRY32 pe); [DllImport("Toolhelp.dll")] public static extern int Process32Next(IntPtr handle, ref PROCESSENTRY32 pe); /// <summary> /// 应用程序的主入口点。 /// </summary> [MTAThread] static void Main() { IntPtr handle = CreateToolhelp32Snapshot((uint)SnapShotFlags.TH32CS_SNAPPROCESS, 0); int count = 0; if ((int)handle != -1) { PROCESSENTRY32 pe32 = new PROCESSENTRY32(); pe32.dwSize = (uint)Marshal.SizeOf(typeof(PROCESSENTRY32)); int bMore = Process32First(handle, ref pe32); while (bMore == 1) { if (pe32.szExeFile == "自己的程序名") count++; bMore = Process32Next(handle, ref pe32); } } if (count > 1) { MessageBox.Show("程序已经运行!"); return; } else Application.Run(new FrmLogin()); } } [StructLayout(LayoutKind.Sequential)] public struct PROCESSENTRY32 { public uint dwSize; public uint cntUsage; public uint th32ProcessID; public IntPtr th32DefaultHeapID; public uint th32ModuleID; public uint cntThreads; public uint th32ParentProcessID; public int pcPriClassBase; public uint dwFlags; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]//注意,此处为宽字符 public string szExeFile; public uint th32MemoryBase; public uint th32AccessKey; } public enum SnapShotFlags : uint { TH32CS_SNAPHEAPLIST = 0x00000001, TH32CS_SNAPPROCESS = 0x00000002, TH32CS_SNAPTHREAD = 0x00000004, TH32CS_SNAPMODULE = 0x00000008, TH32CS_SNAPALL = (TH32CS_SNAPHEAPLIST | TH32CS_SNAPPROCESS | TH32CS_SNAPTHREAD | TH32CS_SNAPMODULE), TH32CS_GETALLMODS = 0x80000000 } }
bubuko.com,布布扣


方法二:

采用第三方的类库:

OpenNETCF

官方网址:http://www.opennetcf.com

bubuko.com,布布扣
using OpenNETCF.Threading;

namespace MyNameSpace
{
    static class Program
    {
        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        [MTAThread]
        static void Main()
        {
            bool firstInstance;
            OpenNETCF.Threading.NamedMutex mutex = new OpenNETCF.Threading.NamedMutex(false, "自己起个名字", out firstInstance);
            if (!firstInstance)
            {
                MessageBox.Show("程序已启动");
                return;
            }

            Application.Run(new FrmLogin());
            GC.KeepAlive(mutex);

        }
    }


}
bubuko.com,布布扣

WinCe 如何使应用程序只开启一个,布布扣,bubuko.com

WinCe 如何使应用程序只开启一个

原文:http://www.cnblogs.com/Bin-x/p/3621092.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!