ورود

View Full Version : تنها یک بار برنامه در یک زمان اجرا بشه



arashz4
سه شنبه 21 اردیبهشت 1395, 11:53 صبح
سلام
من میخام برنامه بسازم که نشه برنامه رو چند بار در یک زمان اجرا کرد مثل IDM که نمیشه چند بار اجرا بشه منظورم اینه که وقتی برنامه در حال اجرا هست دوباره از نو نتونیم اجراش کنیم برای نمونه وقتی IDM توی نوار ترای کوچیک شده اگر روی فایل اجرایی دابل کلیک کنیم برنامه از نو اجرا نمیشه فقط حالت مینی مایز در نوار ترای در میاد و از نو دوباره اجرا نمیشه.
نمیدونم مظورم رو فهمیدین لطفا اگر کسی میدونه راهنماییم کنه که توی کیوت چجوری میشه همچین برنامه ای ساخت.

حامد مصافی
سه شنبه 21 اردیبهشت 1395, 12:31 عصر
از QtSingleApplication (https://github.com/qtproject/qt-solutions/tree/master/qtsingleapplication)استفاده کن

negative60
سه شنبه 21 اردیبهشت 1395, 19:36 عصر
این هم یک راه دیگه:

#include "mainwindow.h"
#include <QApplication>
#include <QSharedMemory>

int main(int argc, char *argv[])
{
QApplication a(argc, argv);

//GUID : Generated once for your application
//you could get one GUID here: http://www.guidgenerator.com/online-guid-generator.aspx
QSharedMemory shared("f484a724-b944-46ed-8d2f-e5a814ee4c4e");
if( !shared.create( 512, QSharedMemory::ReadWrite) )
{
//qDebug() << "Can't start more than one instance of the application.";
exit(0);
}else {
//qDebug() << "Application started successfully.";
}

MainWindow w;
w.show();
return a.exec();
}

arashz4
سه شنبه 21 اردیبهشت 1395, 22:06 عصر
ممنون، میشه یه مثال از برام نشون بدین کجا باید پنجره اصلی برنامه رو Show کنم؟

arashz4
سه شنبه 21 اردیبهشت 1395, 23:44 عصر
سپاس، حل شد.