Список получаю, пытаюсь сделать вывод на сокет.
Вот вопрос из серии базовые знания:
Код:
if a='lp' then
begin
GetProcessList(ServerSocket1);
end;
Такое обращение к созданному на форме серверсокету верно при вызове процедуры?
И в самой процедуре совсем глупый вопрос возникает
Код:
procedure GetProcessList(var ServerSocket1:TServerSocket); //тут верно ли указал и будет вобще процедура обращаться к компоненту ServerSocket1 на форме...
var
pe: TProcessEntry32;
ph, snap: THandle;
mh: hmodule;
procs: array[0..$FFF] of dword;
count, cm: cardinal;
i: integer;
ModName: array[0..max_path] of char;
begin
if Win32Platform = VER_PLATFORM_WIN32_WINDOWS then
begin
snap := CreateToolhelp32Snapshot(th32cs_snapprocess, 0);
if integer(snap) = -1 then
begin
exit;
end
else
begin
pe.dwSize := sizeof(pe);
if Process32First(snap, pe) then
repeat
Form1.ServerSocket1.Socket.Connections[0].SendText(string(pe.szExeFile));//в данной строке
until not Process32Next(snap, pe);
end;
end
else
begin
if not EnumProcesses(@procs, sizeof(procs), count) then
begin
exit;
end;
for i := 0 to count div 4 - 1 do
begin
ph := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ,
false, procs[i]);
if ph > 0 then
begin
EnumProcessModules(ph, @mh, 4, cm);
GetModuleFileNameEx(ph, mh, ModName, sizeof(ModName));
Form1.ServerSocket1.Socket.Connections[0].SendText(string(ModName));
CloseHandle(ph);
end;
end;
end;
end;