相关疑难解决方法(0)

PyQt - 如果UI已经运行,如何检测和关闭它?

我从Maya内部启动UI.如果UI尚未关闭,再次运行UI将完全冻结Maya(错误"事件循环已在运行")

在重新运行脚本之前手动关闭UI将阻止它冻结.但我想这不太实际.

有没有办法检测我正在尝试运行的UI是否已经存在?可能的力量关闭它?

python pyqt single-instance pyqt4

8
推荐指数
2
解决办法
5107
查看次数

Qt中的单实例应用程序

我想将.exe文件(更具体地说是控制台应用程序)集中到第一次启动它的一个正常运行的程序,但是当第二次执行时(第一次存在)它可以将焦点转移到第一个启动的程序.Qt中有可能吗?

c++ qt

7
推荐指数
1
解决办法
3984
查看次数

Qt5:阻止应用程序的另一个实例不再起作用......!

我在 Windows7 平台上使用 Qt5。
我的应用程序是某种 TCP 服务器,侦听端口 8002,所以我只想要它的一个实例。
为了防止我的应用程序出现多个实例,我使用(d)下面的代码(在 StackOverflow 上找到):

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

    sharedMemory.setKey("TcpServer-Key");
    if(sharedMemory.create(1) == false)
    {
       QMessageBox::warning(NULL, "Warning!", "Another instance already running!");
       a.exit(); // exit already a process running
       return 0;
    }
...
Run Code Online (Sandbox Code Playgroud)

好吧,上面的代码以前工作得很好,直到我将 Qt 升级到 5.5.1。
现在,使用 Qt 5.5.1,我再也看不到警告消息框了!...当我尝试启动另一个实例时,正在运行的应用程序消失/停止并启动一个新应用程序!!!

请帮忙,我该怎么办?但不要告诉我切换回 Qt 5.4.x :(

备注:我忘了提到我在测试期间设置并使用了 msvc2012 编译器(不是 minGW,因为我无法为其构建 log4cxx)。

更新:这可能是与安装在该 PC(在办公室,即 McAfee)上的防病毒相关的问题吗?...现在我在家(AVG 防病毒和 MinGW 编译器和 log4cxx 已删除)并且我无法重现上述问题:(

c++ windows qt process instance

5
推荐指数
1
解决办法
2024
查看次数

使用Win API确定可执行文件的实例是否已在运行

我需要确保只运行一个我的C++应用程序实例.

使用Win API我该怎么做;

  1. 检索有关我当前应用程序的信息? GetCurrentProcess()会给我一个处理我的应用程序,如何检索有关它的信息

  2. 检索用户的所有正在运行的进程的列表? EnumProcesses()给出一个列表,但似乎需要预先分配的缓冲区,那么如何找出当前正在运行的进程数?

  3. 我需要将我的服务器的exe名称与正在运行的进程进行比较,如果找到多个,则会引发错误

注意:我不能使用任何boost库,我对使用a感兴趣mutex,在类似的帖子中看到.

c++ winapi

3
推荐指数
1
解决办法
1469
查看次数

找到单实例Qt应用程序的QWidget

我正在尝试创建一个单一实例Qt应用程序,我正处于这样的工作,但现在我想在启动第二个时关注已经启动的实例.QWidget :: find(g_hWnd)应该返回小部件,但它失败并在w-> show();崩溃;

有什么想法吗?

#pragma data_seg("Shared")
HWND g_hWnd = NULL;
#pragma data_seg()
#pragma comment(linker,"/section:Shared,rws")

int main(int argc, char *argv[])
{
    if (g_hWnd)
    {
        QWidget* w = QWidget::find(g_hWnd);
        w->show();
        return 0;
    }
    else
    {
        QApplication a(argc, argv);
        mainWindow w;
        w.show();
        g_hWnd = a.topLevelWidgets().at(0)->winId(); //or w.winId()?

        return a.exec();
    }
}
Run Code Online (Sandbox Code Playgroud)

编辑:我现在看到奇趣科技在LGPL下发布了QtSingleApplication类.

c++ windows qt

2
推荐指数
1
解决办法
5548
查看次数

标签 统计

c++ ×4

qt ×3

windows ×2

instance ×1

process ×1

pyqt ×1

pyqt4 ×1

python ×1

single-instance ×1

winapi ×1