Показать сообщение отдельно
  #15  
Старый 04.04.2012, 01:17
homeknight homeknight вне форума
Прохожий
 
Регистрация: 03.04.2012
Сообщения: 12
Репутация: 10
По умолчанию

Список получаю, пытаюсь сделать вывод на сокет.
Вот вопрос из серии базовые знания:

Код:
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;
Ответить с цитированием