Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Зная pid процесса получить Handle / 11 сообщений из 11, страница 1 из 1
21.11.2017, 12:48:27
    #39556746
kamero
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Зная pid процесса получить Handle
Зная pid процесса получить Handle? pid получаю с помощью WMI, и всё бы хорошо но в WMI нету handle(Заголовка окна). Например когда хром открываем и там пустая вкладка. Вот нужно получить имя этой вкладки(Новая вкладка).
...
Рейтинг: 0 / 0
21.11.2017, 12:53:25
    #39556750
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Зная pid процесса получить Handle
kameroВот нужно получить имя этой вкладки(Новая вкладка).
Нет там вкладок, если имеется в виду нечто pagecontrol.
За окно отвечает один процесс, который и занимается отрисовкой по просьбам субпроцессов.
...
Рейтинг: 0 / 0
21.11.2017, 12:57:25
    #39556758
kamero
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Зная pid процесса получить Handle
wadman,

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
procedure TForm1.Button1Click(Sender: TObject);
var
  Wnd: hWnd;
  buff: array[0..127] of Char;
begin
  ListBox1.Clear;
  Wnd := GetWindow(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));
      ListBox1.Items.Add(StrPas(buff));
    end;
    Wnd := GetWindow(Wnd, gw_hWndNext);
  end;
  ListBox1.ItemIndex := 0;
end;



Вот то что меня интересует... Но он выводит список всех запущенных. А мне нужно по pid из wmi получить описание окна. Вот например окно notepad++ (Путь к открытому файлу Notepad++ [Administrator])
...
Рейтинг: 0 / 0
21.11.2017, 12:59:48
    #39556763
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Зная pid процесса получить Handle
kamero,

я понял, что интересует, но этого не получить. Его окно не имеет названия. И оно одно для всех закладок.
...
Рейтинг: 0 / 0
21.11.2017, 13:33:41
    #39556797
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Зная pid процесса получить Handle
kameroЗная pid процесса получить Handle?Какой хендл интересует? Вам OpenProcess() нужен?
kameroНапример когда хром открываем и там пустая вкладка. Вот нужно получить имя этой вкладки(Новая вкладка).Сформулируйте задачу
...
Рейтинг: 0 / 0
21.11.2017, 14:59:44
    #39556924
kamero
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Зная pid процесса получить Handle
_Vasilisk_kameroЗная pid процесса получить Handle?Какой хендл интересует? Вам OpenProcess() нужен?
kameroНапример когда хром открываем и там пустая вкладка. Вот нужно получить имя этой вкладки(Новая вкладка).Сформулируйте задачу

Моя программ в момент запуска любого приложения ловит и выводит мне что и когда было запущено.

Код: pascal
1.
2.
3.
4.
5.
      Writeln(Format('Caption        %s',[FEventResult.TargetInstance.Caption]));
      Writeln(Format('ProcessId      %s',[FEventResult.TargetInstance.ProcessId]));
      Writeln(Format('Заголовок      %s',[StrPas(buff)]));
      Writeln(Format('ExecutablePath %s',[FEventResult.TargetInstance.ExecutablePath]));
      Writeln(Format('Date+Time      %s',[DateTimeToStr(now)]));



Мне нужно еще как то получить шапку окна(caption). Вот как у winform( Caption=Form1). Вот мне нужно этот Caption приложений как то поймать. У меня есть pid.
Был на msds и перепробовал все. В wmi нету того что мне надо. Нашел код этот в инете. И он ловит эти шапки. Вот я и хочу как то по pid получить их.
...
Рейтинг: 0 / 0
21.11.2017, 15:04:02
    #39556932
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Зная pid процесса получить Handle
kameroМне нужно еще как то получить шапку окна(caption).

В момент запуска приложения у него ещё нет никаких окон. И не факт, что будут.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
21.11.2017, 16:18:40
    #39556997
Barlone
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Зная pid процесса получить Handle
kamerowadman,

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
procedure TForm1.Button1Click(Sender: TObject);
var
  Wnd: hWnd;
  buff: array[0..127] of Char;
begin
  ListBox1.Clear;
  Wnd := GetWindow(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));
      ListBox1.Items.Add(StrPas(buff));
    end;
    Wnd := GetWindow(Wnd, gw_hWndNext);
  end;
  ListBox1.ItemIndex := 0;
end;



Вот то что меня интересует... Но он выводит список всех запущенных. А мне нужно по pid из wmi получить описание окна. Вот например окно notepad++ (Путь к открытому файлу Notepad++ [Administrator])Ну добавьте к этому GetWindowThreadProcessId
...
Рейтинг: 0 / 0
21.11.2017, 17:09:13
    #39557044
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Зная pid процесса получить Handle
kameroВот мне нужно этот Caption приложений как то поймать.Что будете делать в случае если процесс один, а окон несколько?
...
Рейтинг: 0 / 0
21.11.2017, 17:28:16
    #39557058
kamero
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Зная pid процесса получить Handle
_Vasilisk_,

Хм... интересно)) Об этом я не думал))
Первое открытие идёт норм, а второе уже в dllhost.exe уходит. Ну так wmi по крайней мере ловит.
...
Рейтинг: 0 / 0
22.11.2017, 00:19:06
    #39557227
makhaon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Зная pid процесса получить Handle
kamero,

авторХм... интересно)) Об этом я не думал))

Есть подозрение, что задача поставлена неверно. Из-за этого и решения её получаются так себе.
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Зная pid процесса получить Handle / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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