zoukankan      html  css  js  c++  java
  • wince单实例启动

    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 == "WareHouse.exe")//需要与程序保持一致
                            count++;
                        bMore = Process32Next(handle, ref pe32);
                    }
                }
                if (count > 1)
                {
                    MessageBox.Show("程序已经运行!");
                    return;
                }
                else
                    Application.Run(MainFram.GetInstance());
                
            }
    
            [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
            }
        }
  • 相关阅读:
    不准再问我:最近过的怎么样
    嫌疑人X的献身
    关于生活
    怎么可以这样
    在WPF中动态使用图片和按钮
    MFC 中获取对话框中控件焦点的方法
    MessageBox的常见用法
    拖拽(待完善版)
    Baidu Suggestion 百度搜索(仅功能实现,烂版)
    如何判断一个对象是Element?
  • 原文地址:https://www.cnblogs.com/ives/p/9855176.html
Copyright © 2011-2022 走看看