Показать сообщение отдельно
  #4  
Старый 17.08.2013, 01:05
UFO 007 UFO 007 вне форума
Новичок
 
Регистрация: 28.11.2010
Сообщения: 54
Репутация: 10
Сообщение

Осмелюсь предложить - что-то - где-то - как-то так:
Код:
Function PId(Exename:string):Dword;
var
  snap:DWORD;
  pe:TprocessEntry32;
  Wnd : hWnd;
  buff: array[0..Max_Path] of char;
  tmpPID: DWord;
begin
  result:= 0;
  snap:= CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
  if snap <> INVALID_HANDLE_VALUE then
  begin
    pe.dwSize:= sizeof(TPROCESSENTRY32);
    if process32First(snap, pe) then
    repeat
      Wnd := GetWindow(Application.Handle, gw_HWndFirst);
      WHILE Wnd <> 0 DO
      BEGIN // Цикл поиска окон
        IF (Wnd <> Application.Handle) AND   // -Собственное окно
           IsWindowVisible(Wnd) AND          // -Невидимые окна
           (GetWindow(Wnd, gw_Owner) = 0) AND// -Дочерние окна
           (GetWindowText(Wnd, buff, sizeof(buff)) <> 0) // -Окна без заголовков
        THEN
        BEGIN
          GetWindowText(Wnd, buff, sizeof(buff));
          GetWindowThreadProcessId(Wnd,  @tmpPID);
          If tmpPID = pe.th32ProcessID then
form1.Memo1.Lines.Add(pe.szExeFile + ' = ' + StrPas(buff));
        END;
        Wnd := GetWindow(Wnd, gw_hWndNext); // Ищем новое окно
      END;
      if CompareText(pe.szExeFile, exename) = 0 then
      begin
        result:= pe.th32ProcessID;
        closehandle(snap);
        exit;
      end;
    until not process32Next(snap,pe);
    closehandle(snap);
    result:= 0;
  end;
end;
а следующую ф-цию я подправил так:
function OpenProc(id: Cardinal):boolean;
__________________
...И был сначала ZX-Spectrum, а потом его T(urbo)ASS(e)M(bler)... И только на 7-й день (когда Интел купила Пентковского [из КБ Бабаяна]) - появился Pentium-I... А в Союзе P-II был ещё в 1978 году (точнее: Эльбрус [мультискалярный проц] только не рапространялся спекулянтами, а управлял ракетами и спутниками)... А лет с пяток назад Эльбрус-II ПЁР (но никак не ГНАЛСЯ как Селероны) на F(recuency):= 400 GHz... А самое парадоксальное - презентация состоялась в Минске...
Ответить с цитированием