![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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()