在Windows上注册URI方案时如何避免打开应用程序的多个实例?

时间:2014-03-19 01:12:02

标签: windows qt uri-scheme

I have registered a custom URI-Scheme for my Qt downloader app on Windows.应用程序运行正常,完全符合我的需要。唯一的问题是,每次我点击具有指定格式的新网址时,它都会打开应用的新实例,而不是将新项目添加到之前打开的应用中。 我该如何避免这个问题?每次打开新应用时,是否需要检查已打开的应用?这样做有Qt方法吗?

以下是处理将新文件添加到应用程序的代码部分。

if (event->type() == QEvent::FileOpen){  
 QFileOpenEvent* fileEvent = static_cast<QFileOpenEvent*>(event);
 if (!fileEvent->url().isEmpty()){
  addFilesToApp(fileEvent->url().toString(), argument_list);
 }
}

更新 我发现了this post,它帮助我解决了在QAplication和MainWindow之间添加这四行来解决应用程序打开多个实例的问题:

QApplication app(argc, argv);
QSharedMemory shared("75d3863a-1e79-43d5-97a3-ea7ffd67d02a");
if( !shared.create( 512, QSharedMemory::ReadWrite) ){
  exit(0);
 }
MainWindow window;

但现在,当我点击一个应用程序时,该应用程序不会将新文件添加到下载列表中。我认为这是因为addFilesToApp()函数是由FileOpen Event触发的。

0 个答案:

没有答案