如何解决在 Windows 上用 C++ 监视某个进程的有效方法
我想在我正在编写的工具中监控给定的进程。 用户可以选择一个可执行文件,并且该工具应该能够判断该进程何时开始和结束。
我能够(在某种程度上)实现这一目标的唯一方法是使用 QProcess 偶尔使用过滤器运行任务列表,但这需要大量工作,而且实际上不是解决方案。
有没有什么好的方法可以实现这一点,尤其是不必经常检查正在运行的进程?
编辑:
尝试编译 Microsoft 文档中的示例时,我收到以下错误:
error: cast from pointer to smaller type 'DWORD' (aka 'unsigned long') loses information
error: cast from 'BYTE*' {aka 'unsigned char*'} to 'DWORD' {aka 'long unsigned int'} loses precision [-fpermissive]
_tprintf( TEXT("\n Base address = 0x%08X"),(DWORD) me32.modBaseAddr );
^~~~~~~~~~~
=====================================================
PROCESS NAME: i
-------------------------------------------------------
Process ID = 0x00000BAC
Thread count = 4
Parent process ID = 0x000047AC
Priority base = 8
Priority class = 32
MODULE NAME: i
Executable = C
Process ID = 0x00000BAC
Ref count (g) = 0xFFFF
Ref count (p) = 0xFFFF
Base size = 1048576
MODULE NAME: n
Executable = C
Process ID = 0x00000BAC
Ref count (g) = 0xFFFF
Ref count (p) = 0xFFFF
Base size = 2052096
MODULE NAME: K
Executable = C
Process ID = 0x00000BAC
Ref count (g) = 0xFFFF
Ref count (p) = 0xFFFF
Base size = 774144
MODULE NAME: K
Executable = C
Process ID = 0x00000BAC
Ref count (g) = 0xFFFF
Ref count (p) = 0xFFFF
Base size = 2916352
MODULE NAME: m
Executable = C
Process ID = 0x00000BAC
Ref count (g) = 0x000F
Ref count (p) = 0x000F
Base size = 647168
MODULE NAME: Q
Executable = C
Process ID = 0x00000BAC
Ref count (g) = 0x0001
Ref count (p) = 0x0001
Base size = 5787648
MODULE NAME: Q
Executable = C
Process ID = 0x00000BAC
Ref count (g) = 0x0003
Ref count (p) = 0x0003
Base size = 6524928
MODULE NAME: l
Executable = C
Process ID = 0x00000BAC
Ref count (g) = 0x0005
Ref count (p) = 0x0005
Base size = 106496
MODULE NAME: A
Executable = C
Process ID = 0x00000BAC
Ref count (g) = 0x0001
Ref count (p) = 0x0001
Base size = 704512
MODULE NAME: G
Executable = C
Process ID = 0x00000BAC
Ref count (g) = 0x000A
Ref count (p) = 0x000A
Base size = 172032
MODULE NAME: s
Executable = C
Process ID = 0x00000BAC
Ref count (g) = 0x0001
Ref count (p) = 0x0001
Base size = 634880
MODULE NAME: w
Executable = C
Process ID = 0x00000BAC
Ref count (g) = 0x0004
Ref count (p) = 0x0004
Base size = 139264
MODULE NAME: g
Executable = C
Process ID = 0x00000BAC
Ref count (g) = 0x000A
Ref count (p) = 0x000A
Base size = 1093632
MODULE NAME: R
Executable = C
Process ID = 0x00000BAC
Ref count (g) = 0x0007
Ref count (p) = 0x0007
Base size = 1224704
MODULE NAME: d
Executable = C
Process ID = 0x00000BAC
Ref count (g) = 0x0001
Ref count (p) = 0x0001
Base size = 192512
MODULE NAME: m
Executable = C
Process ID = 0x00000BAC
Ref count (g) = 0x0002
Ref count (p) = 0x0002
Base size = 643072
MODULE NAME: l
Executable = C
Process ID = 0x00000BAC
Ref count (g) = 0x0004
Ref count (p) = 0x0004
Base size = 1454080
MODULE NAME: U
Executable = C
Process ID = 0x00000BAC
Ref count (g) = 0x000A
Ref count (p) = 0x000A
Base size = 1703936
MODULE NAME: o
Executable = C
Process ID = 0x00000BAC
Ref count (g) = 0x0003
Ref count (p) = 0x0003
Base size = 1220608
MODULE NAME: u
Executable = C
Process ID = 0x00000BAC
Ref count (g) = 0x0008
Ref count (p) = 0x0008
Base size = 1048576
MODULE NAME: c
Executable = C
Process ID = 0x00000BAC
Ref count (g) = 0x0006
Ref count (p) = 0x0006
Base size = 3493888
MODULE NAME: S
Executable = C
Process ID = 0x00000BAC
Ref count (g) = 0x0002
Ref count (p) = 0x0002
Base size = 7610368
MODULE NAME: W
Executable = C
Process ID = 0x00000BAC
Ref count (g) = 0x0001
Ref count (p) = 0x0001
Base size = 438272
MODULE NAME: l
Executable = C
Process ID = 0x00000BAC
Ref count (g) = 0x0004
Ref count (p) = 0x0004
Base size = 86016
MODULE NAME: M
Executable = C
Process ID = 0x00000BAC
Ref count (g) = 0x0001
Ref count (p) = 0x0001
Base size = 118784
MODULE NAME: N
Executable = C
Process ID = 0x00000BAC
Ref count (g) = 0x0001
Ref count (p) = 0x0001
Base size = 98304
MODULE NAME: U
Executable = C
Process ID = 0x00000BAC
Ref count (g) = 0x0001
Ref count (p) = 0x0001
Base size = 188416
MODULE NAME: V
Executable = C
Process ID = 0x00000BAC
Ref count (g) = 0x0001
Ref count (p) = 0x0001
Base size = 40960
MODULE NAME: W
Executable = C
Process ID = 0x00000BAC
Ref count (g) = 0x0001
Ref count (p) = 0x0001
Base size = 159744
MODULE NAME: U
Executable = C
Process ID = 0x00000BAC
Ref count (g) = 0x0001
Ref count (p) = 0x0001
Base size = 647168
MODULE NAME: C
Executable = C
Process ID = 0x00000BAC
Ref count (g) = 0x0001
Ref count (p) = 0x0001
Base size = 49152
MODULE NAME: N
Executable = C
Process ID = 0x00000BAC
Ref count (g) = 0x0001
Ref count (p) = 0x0001
Base size = 49152
MODULE NAME: S
Executable = C
Process ID = 0x00000BAC
Ref count (g) = 0x0001
Ref count (p) = 0x0001
Base size = 163840
MODULE NAME: Q
Executable = C
Process ID = 0x00000BAC
Ref count (g) = 0x0002
Ref count (p) = 0x0002
Base size = 7151616
MODULE NAME: d
Executable = C
Process ID = 0x00000BAC
Ref count (g) = 0x0001
Ref count (p) = 0x0001
Base size = 2506752
MODULE NAME: d
Executable = C
Process ID = 0x00000BAC
Ref count (g) = 0x0002
Ref count (p) = 0x0002
Base size = 995328
MODULE NAME: I
Executable = C
Process ID = 0x00000BAC
Ref count (g) = 0x0001
Ref count (p) = 0x0001
Base size = 196608
THREAD ID = 0x00002F84
Base priority = 8
Delta priority = 0
THREAD ID = 0x00003E18
Base priority = 8
Delta priority = 0
THREAD ID = 0x00001908
Base priority = 8
Delta priority = 0
THREAD ID = 0x00005524
Base priority = 8
Delta priority = 0
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。