Нужна помощь в преобразовании Vb.Net в Delphi (API Stuff (?)) - PullRequest
1 голос
/ 08 мая 2011
    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, проблема в том, что ... у меня недостаточно знаний для его создания, и ... вGoogle, я не нашел нужную мне информацию.

Заранее спасибо!

Ответы [ 2 ]

2 голосов
/ 09 мая 2011

Вам необходимо использовать API более низкого уровня, инструмент справки API.Ниже описано, как получить то, что вам нужно:

  1. Вызов CreateToolhelp32Snapshot() Передача TH32CS_SNAPPROCESS.
  2. Далее пройдитесь по процессам с Process32First() и Process32Next()пока вы не найдете нужный процесс.
  3. Позвоните CloseHandle(), чтобы закрыть снимок.
  4. Снова вызовите CreateToolhelp32Snapshot(), на этот раз пройдя TH32CS_SNAPMODULE, и нужный идентификатор процесса будет найден на шаге 2.
  5. Пройдите по модулям с Module32First() и Module32Next(), пока не найдете нужный модуль.
  6. Позвоните CloseHandle(), чтобы закрыть снимок.
1 голос
/ 09 мая 2011

Вы можете использовать бесплатные модули формы MadCollection (madKernel, если я не ошибаюсь), в которых есть такие библиотеки.Кодирование очень близко к кодированию OP.(Я использовал его для отправки сообщений родительскому процессу одной из моих программ).

РЕДАКТИРОВАТЬ:
О проблемах с лицензированием см. Эту цитату из Madshi.net страница лицензионного соглашения:

БЕСПЛАТНЫЙ ПРОДУКТ (S)

Пакеты "madBasic", "madKernel", "madShell" и "madSecurity" могут свободно использоваться длякак для некоммерческого, так и для коммерческого использования, без покупки лицензии, при условии, что:

(1) Автору Матиасу Рауену приписывается должное за его работу.

(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)Упомянутые пакеты нельзя передавать какой-либо третьей стороне, если только такая третья сторона не получит копию этого соглашения и не согласится соблюдать все его условия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...