Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как получить информацию обо всех процессах в 64-битной ОС из 32-битного процесса? / 15 сообщений из 15, страница 1 из 1
03.03.2018, 14:06
    #39609998
LoneFast
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить информацию обо всех процессах в 64-битной ОС из 32-битного процесса?
Я пишу VCL-приложение. Оно может компилироваться только под 32-бит, а вот ОС вполне может быть 64-бит.
Мне требуется получать информацию обо всех запущенных процессах, и 32-бит и 64-бит. Делфи-Токио.

Что-то не могу нагуглить - а не появилось ли в VCL модулей которые могут это делать (обойтись без явного использования WinAPI)?
И если без API не обойтись - у меня затык, почему-то получаю только 32-битные процессы... В чём там фокус? Вроде что-то когда-то слышал, но забыл...

Подскажите кто-то... Спасибо!
...
Рейтинг: 0 / 0
03.03.2018, 14:09
    #39609999
Katraps
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить информацию обо всех процессах в 64-битной ОС из 32-битного процесса?
Через WMI можно
...
Рейтинг: 0 / 0
03.03.2018, 14:27
    #39610004
?
?
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить информацию обо всех процессах в 64-битной ОС из 32-битного процесса?
...
Рейтинг: 0 / 0
03.03.2018, 15:03
    #39610016
_StarikPro_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить информацию обо всех процессах в 64-битной ОС из 32-битного процесса?
LoneFast,

Я делал так (железобетонный WinAPI):

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
type
  PProcInfo = ^TProcInfo;
  TProcInfo = packed record
    ModulePID: Cardinal;
    ModuleName: string;
    ModulePath: string;
  end;

......

procedure GetListPoc(List: TList<PProcInfo>);
var
  bContinue: BOOL;
  aSnapshotHandle: THandle;
  aProcessEntry32: TProcessEntry32;
  LpModuleInfo: PProcInfo;
begin
  aSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  aProcessEntry32.dwSize := SizeOf(aProcessEntry32);
  bContinue := Process32First(aSnapshotHandle, aProcessEntry32);
  while Integer(bContinue) <> 0 do
    begin
    new(LpModuleInfo);
    LpModuleInfo.ModuleName := ExtractFileName(aProcessEntry32.szExeFile);
    LpModuleInfo.ModulePath := ExtractFilePath(aProcessEntry32.szExeFile);
    LpModuleInfo.ModulePID := aProcessEntry32.th32ProcessID;
    List.Add(LpModuleInfo);
    bContinue := Process32Next(aSnapshotHandle, aProcessEntry32);
    end;
  CloseHandle(aSnapshotHandle);
end;
...
Рейтинг: 0 / 0
03.03.2018, 15:28
    #39610027
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить информацию обо всех процессах в 64-битной ОС из 32-битного процесса?
_StarikPro_
Код: pascal
1.
LpModuleInfo.ModuleName := ExtractFileName(aProcessEntry32.szExeFile);

https://msdn.microsoft.com/en-us/library/windows/desktop/ms682489(v=vs.85).aspx Note that you can use the QueryFullProcessImageName function to retrieve the full name of an executable image for both 32- and 64-bit processes from a 32-bit process.
...
Рейтинг: 0 / 0
03.03.2018, 17:36
    #39610058
GunSmoker
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить информацию обо всех процессах в 64-битной ОС из 32-битного процесса?
LoneFast, возможно, вы путаете получить список всех процессов (получить список PID) и получить имя исполняемого файла для заданного процесса.
...
Рейтинг: 0 / 0
03.03.2018, 20:04
    #39610080
LoneFast
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить информацию обо всех процессах в 64-битной ОС из 32-битного процесса?
Спасибо большое, сейчас опробуем.

GunSmoker, вы угадали то что мне не нужен весь список, что мне нужен только один процесс. Но мне как раз не известно ни PID ни hProcess, задача почтичто наоборот. С:


З.Ы. А не подскажите как искать в каком модуле описана API-функция, например эта же QueryFullProcessImageName? У меня Стартер, исходного кода нету, поиск по файлам ничего не находит. Гугл выдаёт примеры использования, но не где она объявлена в Делфи...
...
Рейтинг: 0 / 0
03.03.2018, 21:20
    #39610100
kep-ko
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить информацию обо всех процессах в 64-битной ОС из 32-битного процесса?
У меня Стартер, исходного кода нетуВозьми Lazarus посмотри как там ( \fpc\3.0.4\source\rtl\win\wininc\unidef.inc ) описаны API функции, потом QueryFullProcessImageName пропиши по аналогии у себя в модуле.
...
Рейтинг: 0 / 0
03.03.2018, 21:43
    #39610106
LoneFast
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить информацию обо всех процессах в 64-битной ОС из 32-битного процесса?
Да описать руками я прекрасно умею)
Для этого обычно хватает описания в MSDN. Просто зачем плодить рукотворные external'ы, если где-то в <Winapi.*> оно вероятно уже должно быть? Только как понять где...
...
Рейтинг: 0 / 0
03.03.2018, 23:18
    #39610121
kep-ko
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить информацию обо всех процессах в 64-битной ОС из 32-битного процесса?
LoneFastоно вероятно уже должно быть? Только как понять где...
Код: plaintext
for /r c:\ %i in (*.*) do find /i /n "QueryFullProcessImageName" %i
...
Рейтинг: 0 / 0
03.03.2018, 23:56
    #39610125
LoneFast
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить информацию обо всех процессах в 64-битной ОС из 32-битного процесса?
Во-первых вы забыли "кавычки" и "собачки", а во вторых вы кажется не читаете, я ж говорю - ноль совпадений, ноль... Об чём я тут и твержу... =/
...
Рейтинг: 0 / 0
04.03.2018, 00:27
    #39610127
kep-ko
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить информацию обо всех процессах в 64-битной ОС из 32-битного процесса?
LoneFast, вы, кажется, не читаете:Возьми ... посмотри ... пропиши
...
Рейтинг: 0 / 0
04.03.2018, 02:45
    #39610136
LoneFast
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить информацию обо всех процессах в 64-битной ОС из 32-битного процесса?
Вопрос стоит "в каком модуле Делфи оно объявлено". А "объявите сами вручную" это не то что спрашивалось. =/
Ладно, проехали...
...
Рейтинг: 0 / 0
04.03.2018, 04:41
    #39610142
GunSmoker
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить информацию обо всех процессах в 64-битной ОС из 32-битного процесса?
LoneFast, ни в каком. Новых функций WinAPI в Delphi практически нет. Либо самим руками, либо JEDI Windows API.
...
Рейтинг: 0 / 0
04.03.2018, 10:58
    #39610161
_StarikPro_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить информацию обо всех процессах в 64-битной ОС из 32-битного процесса?
LoneFast,

Winapi.TlHelp32
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как получить информацию обо всех процессах в 64-битной ОС из 32-битного процесса? / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]