1. 程式人生 > >Qt防止本程式多次啟動

Qt防止本程式多次啟動

利用WindowsAPI,在main.cpp中新增以下程式碼:

#include <windows.h>

// 注:這裡的 L"fortest_abc123"可以替換為其它名稱,我只是舉個例子
bool checkOne()
{
    //  建立互斥量
    HANDLE m_hMutex  =  CreateMutex(NULL, FALSE,  L"fortest_abc123" );
    //  檢查錯誤程式碼
    if  (GetLastError()  ==  ERROR_ALREADY_EXISTS)  {
        //  如果已有互斥量存在則釋放控制代碼並復位互斥量
        CloseHandle(m_hMutex);
        m_hMutex  =  NULL;
        //  程式退出
        return  false;
    }
    else
        return true;
}


int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    //防止程式開啟兩次
    if(!checkOne()) {
        return 0;
    }
    MainWindow w;
    w.show();

    return a.exec();
}


相關推薦

Qt防止程式啟動

利用WindowsAPI,在main.cpp中新增以下程式碼: #include <windows.h> // 注:這裡的 L"fortest_abc123"可以替換為其它名稱,我只是舉

Android 監聽廣播autoLauch 防止啟動頁面被啟動(筆記)

直接上程式碼: 1.監聽USB插入的廣播,這個廣播自己插入android收usb是觸發,當然我是監聽自定義廣播。 看下面manifest 配置,: <?xml version="1.0" e

防止程式執行(呼叫DLL)

#region  *******************  防止程式多次執行  **************************  public abstract class OneInstance   {    /// <summary>    /// 用來

防止表單提交的方法

作者:莎士比亞的人生 來源:CSDN 原文:https://blog.csdn.net/qq_34368762/article/details/79130198  表單重複提交是在多使用者Web應用中最常見、帶來很多麻煩的一個問題。有很多的應用場景都會遇到重複提交問題,比如:

關於hdfs啟動Datanode無效

發現Datanode一直無法啟動 檢視/root/apps/hadoop-2.7.3/logs/下的日誌檔案: 檢視資料發新: 多次使用下面的命令: cd /root/apps/hadoop-2.7.3 ./bin/hadoop namenode

前端防止按鈕被點選

前端的部分邏輯有時候控制前端的顯示,比如記錄收藏數目等等。有時候多次重複點選會造成前端顯示的bug。所以需要有部分邏輯判斷去篩除掉重複多次的點選。 實現部分程式碼如下,主要是通過setTimeout去加以判斷,即無論點選幾次,間隔一定時間才會去觸發一次事件,從而只產生一次的

程式第一啟動從歡迎頁跳到引導頁,下次再啟動直接從歡迎頁跳轉到主頁

具體做法,就是在本地儲存一個boolean值,如果進入主頁就修改boolean值 new Handler(new Handler.Callback() { @Override publi

[iOS 載入xib卡頓/慢/延時]程式第一啟動,載入xib檔案延時3-5秒問題

遇到的問題: 在程式第一次啟動好以後, 第一次 無論是 push 或者 presentViewController 或者tabBar 切換檢視 (這裡的每個VIewController 都是由xib檔案構成) 都有一個情況出現, 就是在觸發這些方法以後,

防止onclick事件呼叫

//程式碼3 submitButton.setOnClickListener(new NoDoubleClickListener() { @Override public void onNoDoubleClick(View v)

js 防止表單重複提交

using (Html.BeginForm("action", "controller", new { }, FormMethod.Post, new { name = "submitForm" ,onsubmit="return checkSubmit();" }))

Android基礎--程式第一啟動從歡迎頁跳到引導頁,下次再啟動直接從歡迎頁跳轉到主頁

這個在很多的開發中,都會用到,具體的實現方式就是在本地儲存一個標記值。用Handler進行延時操作,在onCreate()裡面,程式碼如下: new Handler(new Handler.Callb

防止Mac程式開機自啟動

Mac程式開機自啟動 根據apue mac上可以通過launchctl命令控制守護程序 在man lauchctl中可以看到 /Library/LaunchAgents 內包含roo

android防止控制元件點選

android防止空間多次點選: package com.heinqi.mesumeguide.util; import android.os.Handler; import android.view.View; public class DoubleClick {

java 防止同一IP請求攻擊

需求: 防止入侵者,通過死迴圈同一時間批量向伺服器請求資料,導致伺服器記憶體開銷不斷膨脹,最後直接癱瘓。 開發環境: java + spring 攔截器 1. 新增一個spring的攔截器 , 攔截所有請求 &l

Android receiver 啟動相同Activity

在Receiver中多次啟動相同的Activity,如果Intent是相同的是不會重新建立Activity的,只有Intent內容不同時才會啟動多個Activity。 TestActivity.java 程式碼段: package com.example.g

android應用程式第一啟動時顯示引導介面

市面上好多優秀的應用(舉例新浪微博、UC瀏覽器)都採用了歡迎頁面與使用嚮導的方式給使用者帶來了良好的使用者體驗。 一般來說使用者第一次安裝應用或者安裝了新版本後第一次進入應用都會顯示成 歡迎頁面-使用嚮導-主介面 的方式 使用者沒有安裝新版本或者不是第一次進入的時候都

Qt防止程式

有些應用程式只允許使用者開啟一個,則需要一些手段防止程式多開。 下面這個方法是通過共享記憶體的方式來解決的,原理: 執行主函式前先訪問固定的共享記憶體段,看有沒有被使用,沒有使用就使用該記憶體段,並繼續執行程式。 如果該共享記憶體段已經被使用則認為是多開的程式,直接return退出程序。

C# 實現程式啟動執行啟用第一個例項,使其獲得焦點,並在最前端顯示)

直接上程式碼 using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq;

微信小程式防止點選事件(一分鐘內一有效)

var m = date.getMinutes().toString();//獲得當前分鐘數 console.log('提交外面的') console.log(m) console.log(date.getMinutes()) //開始快取池中沒有分鐘數,當前分鐘數肯定不等於

shell小技巧--用“$$”和"$0"防止同一個指令碼啟動

    在編寫shell指令碼通過crontab定時任務啟動時,如果shell指令碼執行時間超過了,crontab拉起指令碼的時間間隔,這個時候可能就會出現同一個指令碼同時啟動多次的現象。這個時候可能會導致採集的資料有重複,計算不準確等等問題,在這種有明顯先和順序要求的時候