ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.

08.05.2010, 20:27
|
|
Участник форума
Регистрация: 02.02.2010
Сообщений: 107
Провел на форуме: 612028
Репутация:
28
|
|
омг! *censored*! человек просил на чем? на инди?!
|
|
|

09.05.2010, 10:11
|
|
Познающий
Регистрация: 19.08.2008
Сообщений: 69
Провел на форуме: 458484
Репутация:
31
|
|
Здравствуйте.
Каким способом вы бы посоветовали получить список окон определённого приложения?
Процесс запускаю через CreateProcess
То есть, в наличии есть pid процесса.
Хотелось бы получить список из handle окна и его названия(ну будет handle, название я и сам найду)
|
|
|

09.05.2010, 10:21
|
|
Reservists Of Antichat - Level 6
Регистрация: 12.02.2006
Сообщений: 891
Провел на форуме: 1892597
Репутация:
836
|
|
EnumChildWindow
__________________
*********************************
*Я не волшебник ٩(๏̯͡๏)۶, только учусь...*
*********************************
Программы на заказ
Times to fly...
|
|
|

09.05.2010, 10:58
|
|
Познавший АНТИЧАТ
Регистрация: 24.06.2008
Сообщений: 1,996
Провел на форуме: 6075534
Репутация:
2731
|
|
Здравствуйте.
Какой функцией WinApi можно получить список элементов чужого приложения, имея его HANDLE. Под "элементами" я имею ввиду Edit, ComboBox, Memo etc...
Заранее спасибо.
|
|
|

09.05.2010, 13:24
|
|
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме: 3288241
Репутация:
3349
|
|
через FindWindowEx попробуй или как вариант EnumChildWindows
Последний раз редактировалось slesh; 09.05.2010 в 13:27..
|
|
|

09.05.2010, 14:10
|
|
Участник форума
Регистрация: 10.08.2009
Сообщений: 238
Провел на форуме: 724939
Репутация:
108
|
|
mailbrush, вот небольной пример, если я правильно понял вопрос. Положи 2 Листбокса на форму (для наглядности).
Код:
procedure TForm1.Button1Click(Sender: TObject);
var h: HWND;
i: byte;
begin
ListBox1.Clear;
ListBox2.Clear;
h:=FindWindow(nil, PChar(Заголовок окна));
GetSubChild(h);
for i:=0 to ListBox1.Items.Count-1 do
EnumProc(StrToInt(ListBox1.Items[i]), 0);
end;
Следующие процедуры взяты с delphikingdom.ru и чуть переделаны.
Код:
Procedure TForm1.GetSubChild(wd:HWnD); //
Передаем в процедуру описатель окна
верхнего уровня
Var Cw:HWnd; //
Описываем еще один описатель
Begin
// Очищать список в процедуре нельзя !!!
If WD=0 then Exit; // Если
родительское окно не определено то уходим
Cw := FindWindowEx(Wd, 0, nil, nil); // Находим
первый элемент произвольного класса
while (Cw <> 0) do // Есть еще
что искать ?
begin
ListBox1.Items.Add(IntToStr(Cw)); //
Добавим описатель в виде текста в список
Application.ProcessMessages;
// Дадим поработать другим
GetSubChild(Cw);
//Вызываем себя, но родительское
окно уже Cw
Cw := FindWindowEx(Wd, Cw, nil, nil); //
Ищем следующие дочернее окно
End;
End;
function TForm1.EnumProc (WD: HWnd; Param:
LongInt): Boolean; stdcall;
var Nm:Array[0..255] of Char; // буфер для
имени
Cs: Array[0..255] of Char; // буфер для
класса
Begin
GetWindowText(Wd,Nm,255); // считываем
текст заголовка окна
GetClassName(Wd,Cs,255); // считываем
название класса окна
ListBox2.Items.Add(String(Nm)+'/'+String(Cs));
//Запихнули в список название и класс
EnumProc:=True;
End;
|
|
|

09.05.2010, 17:25
|
|
Познавший АНТИЧАТ
Регистрация: 24.06.2008
Сообщений: 1,996
Провел на форуме: 6075534
Репутация:
2731
|
|
=Zeus=, именно это! Спасибо!
|
|
|

11.05.2010, 09:39
|
|
Познающий
Регистрация: 02.09.2007
Сообщений: 67
Провел на форуме: 521298
Репутация:
20
|
|
Код:
for i:=1 to x do
for j:=i to x do
if StrToIntDef(form1.StringGrid1.Cells[j,i],-1)>0 then
begin
n:=n+1;
m[n,1]:=StrToInt(form1.StringGrid1.Cells[0,i]);
m[n,2]:=StrToInt(form1.StringGrid1.Cells[j,0]);
m[n,3]:=StrToIntDef(form1.StringGrid1.Cells[j,i],-1);
end;
Объясните пожалуйста выделенную функцию. понятно, что функция StrToIntDef конвертирует строку из ячейки, но "-1" что означает?
|
|
|

11.05.2010, 10:54
|
|
Участник форума
Регистрация: 11.07.2009
Сообщений: 175
Провел на форуме: 2835808
Репутация:
185
|
|
Функция StrToIntDef конвертирует строку с целым IntegerString, такую как '123', в целое Integer, возвращая Default, если преобразование не удалось.
Код:
function StrToIntDef ( const IntegerString : string; Default : Integer ) : Integer;
По сути, просто число которое будет присвоено при ошибке конвертирования.
|
|
|

11.05.2010, 18:45
|
|
Участник форума
Регистрация: 12.11.2008
Сообщений: 146
Провел на форуме: 592199
Репутация:
21
|
|
как заставить idhttp работать через соксы?
как правельно привязать idsocksinfo к idhttp?
|
|
|
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|