在Windows上使用pyqt时Q进程.pid()结果代表?

2024-07-01 07:32:16 发布

您现在位置:Python中文网/ 问答频道 /正文

^{}的文档说明:

Returns the native process identifier for the running process, if available. If no process is currently running, 0 is returned.

这是什么意思?在

这个代码是用来解释我的困惑。我使用的是Python 2.7.9、PyQt 4和Windows 7:

import  sys, os, time
from PyQt4.QtCore import *
from PyQt4.QtGui import *

class testLaunch(QWidget):
    def __init__(self):
        QWidget.__init__(self)
        self.process = QProcess(self)
        self.process.start('calc')
        self.process.waitForStarted(1000)
        print "PID:", int(self.process.pid())

if __name__ == "__main__":
    app = QApplication(sys.argv)
    main = testLaunch()
    main.show()
    sys.exit(app.exec_())

这将按预期启动Windows计算器应用程序。在任务管理器中,它显示以下内容:

Calculator PID

这显示我的PID是8304。但是,我的应用程序中的print语句显示:

^{pr2}$

这代表什么?它与任务管理器报告的8304 PID相比如何?在


Tags: thefromimportselfifismainwindows
1条回答
网友
1楼 · 发布于 2024-07-01 07:32:16

在Unix系统上,pid将是qint64,但在Windows上,它将是struct,如下所示:

typedef struct _PROCESS_INFORMATION {
  HANDLE hProcess;
  HANDLE hThread;
  DWORD  dwProcessId;
  DWORD  dwThreadId;
} PROCESS_INFORMATION, *LPPROCESS_INFORMATION;

PyQt将为这样的结构返回一个sip.voidptr,这就是为什么在用int()转换它时会看到这个奇怪的值。实际需要的pid是dwProcessId,因此需要使用ctypes之类的东西来提取它。在

下面是一些完全未经测试的代码,它们可以完成此任务:

^{pr2}$

相关问题 更多 >

    热门问题