需要帮助将Vb.Net转换为Delphi(API Stuff(?))

时间:2011-05-08 19:52:30

标签: vb.net delphi winapi process

    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中制作它,问题是......我没有足够的知识来制作它,而且......在谷歌,我没有找到我需要的信息。

提前致谢!

2 个答案:

答案 0 :(得分:2)

您需要使用较低级别的API,即工具帮助API。如何获得所需内容的基本概述如下:

  1. 致电CreateToolhelp32Snapshot()传递TH32CS_SNAPPROCESS
  2. 接下来,使用Process32First()Process32Next()分析流程,直至找到所需的流程。
  3. 致电CloseHandle()以关闭快照。
  4. 再次致电CreateToolhelp32Snapshot(),这次通过TH32CS_SNAPMODULE和步骤2中找到的所需进程ID。
  5. 使用Module32First()Module32Next()浏览模块,直至找到所需的模块。
  6. 致电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)上述包裹不得转让给任何第三方,除非         此类第三方收到本协议的副本并同意受约束         根据所有条款和条件。