zoukankan      html  css  js  c++  java
  • Windows Mobile只运行一个实例

    因为一个项目的需求,要实现程序只有一个实例运行。在网上搜了很久,最后在CSDN上面看到一回复。得到启示,完成该功能。

    主要用的是互斥对象来实现。代码如下:

        static class Program
        {
            [DllImport(
    "coredll.Dll",SetLastError= true)]
            
    private static extern IntPtr CreateMutex(SECURITY_ATTRIBUTES lpMutexAttributes, bool bInitialOwner, string lpName);

            [DllImport(
    "coredll.Dll",SetLastError = true)]
            
    private static extern int ReleaseMutex(IntPtr hMutex); 

            [StructLayout(LayoutKind.Sequential)]
            
    public class SECURITY_ATTRIBUTES
            {
                
    public int nLength;
                
    public int lpSecurityDescriptor;
                
    public int bInheritHandle;
            }

            
    const int ERROR_ALREADY_EXISTS = 0183

            
    /// <summary>
            
    /// 应用程序的主入口点。
            
    /// </summary>
            [MTAThread]
            
    static void Main()
            {
                IntPtr hMutex 
    = CreateMutex(nullfalse"StandardWorkMan");
                
    if (Marshal.GetLastWin32Error() != ERROR_ALREADY_EXISTS)
                {
                    Application.Run(
    new FormWorkList());
                }
                
    else
                {
                    MessageBox.Show(
    "已经启动了一个程序,请勿重复打开""系统提示",
                        MessageBoxButtons.OKCancel, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button1);
                    ReleaseMutex(hMutex);
                    Application.Exit();
                }
                
            }
        }

    上面代码完全正常,我的问题是大部分自己很早就写出来了。只是问题在下面:

    [DllImport("coredll.Dll",SetLastError = true)]
    private static extern int GetLastError();

    .

    if (GetLastError() != ERROR_ALREADY_EXISTS)
    {
         Application.Run(
    new FormWorkList());
    }

     我用的是平台调用里面的GetLastError(),结果一直出不来想要的效果。调试时发现无论打开多少个实例,GetLastError()的值一直都是6(INVALID_HANDLE_VALUE)????很不解。 望明白的人说明一下。谢谢。

  • 相关阅读:
    关系数据理论
    JavaScript语言——对象
    网络编程基础入门级
    数据库加快查询速度索引
    C/C++随机函数的生成(转载)
    sql连接查询
    深入浅出HTTP请求
    17搜索如何抓全网页
    搜索引擎之百度一下
    搜索引擎之中搜
  • 原文地址:https://www.cnblogs.com/yubaolee/p/1511279.html
Copyright © 2011-2022 走看看