Dim ThisModule As IntPtr
Dim Proc As Process() = Process.GetProcessesByName("Sol")
For i = 0 To Proc(0).Modules.Count - 1
If (Proc(0).Modules(i).ModuleName.ToString.Contains("UxTheme")) Then
ThisModule = Proc(0).Modules(i).BaseAddress
End If
Next
我已经制作了这个代码,并且工作得很完美,但现在......我想在Delphi中制作它,问题是......我没有足够的知识来制作它,而且......在谷歌,我没有找到我需要的信息。
提前致谢!
答案 0 :(得分:2)
您需要使用较低级别的API,即工具帮助API。如何获得所需内容的基本概述如下:
CreateToolhelp32Snapshot()
传递TH32CS_SNAPPROCESS
。Process32First()
和Process32Next()
分析流程,直至找到所需的流程。CloseHandle()
以关闭快照。CreateToolhelp32Snapshot()
,这次通过TH32CS_SNAPMODULE
和步骤2中找到的所需进程ID。Module32First()
和Module32Next()
浏览模块,直至找到所需的模块。CloseHandle()
以关闭快照。答案 1 :(得分:1)
您可以使用具有此类库的MadCollection(madKernel,如果我没有记错)的免费模块。编码非常接近OP的编码。 (我用它将消息发送到我的一个程序的父进程)。
修改强>
关于许可问题,请参阅Madshi.net许可协议页面中的引用:
FREEWARE PRODUCT(S)
包“madBasic”,“madKernel”,“madShell” 并且“madSecurity”可以自由使用 非商业和商业 使用,无需购买许可证, 条件是:
(1)作者 Mathias Rauen得到了适当的信任 为了他的工作。
(2)被许可人 没有声称图书馆是写的 由他。
(3)如果软件被修改,任何包含修改的软件必须突出显示在 修改后的产品或文档
(a) that it has been modified, (b) the identity of the person or entity that made the modifications
和
(c) the date the modifications were made.
(4)上述包裹不得转让给任何第三方,除非 此类第三方收到本协议的副本并同意受约束 根据所有条款和条件。