【发布时间】:2011-07-09 20:46:57
【问题描述】:
如何从文件名中获取进程 ID?
喜欢:int processId = getProcessIdByFileName("Network.dll");
顺便说一句,哪个数据类型有进程 ID?
扩展信息: 我有一个DLL的源代码。该 DLL 与其他一些 DLL 一样被加载到应用程序中。我想挂钩其他 DLL 的函数。因此我需要它们的进程 ID(如果它们都在一个应用程序下运行,是否每个 DLL 都有一个进程 ID?
如何在我的 DLL 中调用其他 DLL 的函数?如何处理它们?
【问题讨论】:
-
“它们都在一个应用程序下运行”?一个应用程序是一个过程。因此,整个应用程序的一个进程 ID,它不是每个加载的库或其他东西。除非是应用程序,否则使用 IPC?
-
可能有很多进程 ID。每个加载 DLL 的进程都会有一个。您可能是指模块句柄而不是进程 ID?
-
很确定您不想要进程 ID,对此您无能为力。也许是模块句柄,使用 GetModuleHandle()。但你可能真的想要 Microsoft Detours,假设“挂钩”是准确的。
-
COM 是否可以将应用程序的 DLL 作为单独的进程加载?或者是否将组件设计为打包为 EXE 文件?
-
@Steve314,是的,COM 可以在进程外代理服务器进程中加载 DLL。但原则上,这个进程外服务器可以托管多个 DLL。
标签: c++ windows multithreading process