Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

handle controlов в чужой программе [D6, NT4, Win2k, WinXP]


chips ©   (2002-11-21 12:52:00) 

Можно ли получить список всех контролов в чужом окне и их handle ? , заранее спасибо за намеки...


chips   (2002-11-21 18:14:00) [1]

Огромные пасибушки , особая благодарность cdaDmitriy ,
если бы импортные программисты были более отзывчивы на переделку своих программ типа "without support....,...AS IS.."
и т.п. ,я бы остался без работы...


cdadmitriy   (2002-11-21 15:29:00) [2]

И можно писать (write) на опреленные Control менять
их названия и вообще Я думаю ВСЕ что хочешь


cdadmitriy   (2002-11-21 15:24:00) [3]

> Игорь Шевченко © В огороде бузина...

может и бузина но работает а делать ПРОЭКТ нет времени
и желания


Игорь Шевченко   (2002-11-21 15:10:00) [4]

cdadmitriy © (21.11.02 15:04)

В огороде бузина...


cdadmitriy   (2002-11-21 15:07:00) [5]

Далее зная ClassName посылаешь текст (WM_SETTEXT)


cdadmitriy   (2002-11-21 15:04:00) [6]

Все ОЧЕНЬ просто ТЕКСТ не причесон но работает

function GetTextMy(wnd:hwnd):string;
var p:array [0..256] of char;
begin
GetWindowText(wnd,p,255); result:=strpas(p);
end;


function GetMyData(wnd:hwnd):string;
var p:array [0..256] of char;
begin
SendMessage(wnd, WM_GETTEXT, Sizeof(p),Integer(@p));
result:=strpas(p);
end;

function EnumChildProc(h : hWnd; lParam : LongInt): BOOL; stdcall;
Var lpBuffer : PChar;
begin
result:=true;
if (h=0) then Exit;
GetMem(lpBuffer, 255);

try

if GetClassName(h, lpBuffer, 255) > 0 then
Form1.RichEdit1.Lines.Add("=Class={"+StrPas(lpBuffer)+"}=Control={"+GetTextMy(h)+"}=data={"+GetMyData(h)+"}");

finally
FreeMem(lpBuffer, sizeof(lpBuffer^));
end;
end;

procedure TForm1.Button2Click(Sender: TObject);
var INP:hwnd;
begin
RichEdit1.Lines.Clear;
INP:=FindWindow(nil, PChar(Edit3.Text));
EnumChildWindows(INP,@EnumChildProc,0);
end;


Игорь Шевченко   (2002-11-21 14:30:00) [7]

Ru © (21.11.02 14:22)

До EnumWindows и GetWindow современная наука разумеется не дошла...


Ru   (2002-11-21 14:22:00) [8]

ParentHandle:=FindWindow(nil,NameParentWindow);
ChildHandle:=FindWindowEx(ParentHandle,nil,nil,nil);
...
ChildHandle:=FindWindowEx(ParentHandle,nil,ChildHandle,nil);


Игорь Шевченко   (2002-11-21 13:50:00) [9]

Ru © (21.11.02 13:22)

Список всех контролов по FindWindow ? Поделись, это очень интересно...


> Вообще всем желающим научится с чужими прогами играться
>


Нахрена ?
Сдается мне, что все вопросы такого рода направлены на выяснение способов сделать кому-то пакость...


Ru   (2002-11-21 13:22:00) [10]

>Игорь Шевченко © (21.11.02 13:05)

у меня очень даже хорошо, имею необходиму программу как мне надо.

>Зачем надо регулярно работать с чужими программами, с

лично мне надо было получать данные из чужой проги - одна прога очень неплохо их обрабатывала.
Вообще всем желающим научится с чужими прогами играться есть на Королевстве дельфи пару статеек.


Игорь Шевченко   (2002-11-21 13:05:00) [11]

Ru © (21.11.02 13:01)

Плохо. Даже очень плохо.

Автору: откройте страшную тайну, плз. Зачем надо регулярно работать с чужими программами, с кнопками, контролами, пунктами меню и т.д. Что за задачи такие интересные вы решаете ?

Поделитесь, плз


Ru   (2002-11-21 13:01:00) [12]

FindWindow, FindWindowEx - тоже не плохо


Song   (2002-11-21 12:56:00) [13]

GetWindow()/EnumChildWindows()


Наверх

Титульная страница Поиск, карта сайта Написать письмо