![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Нажатие неактивной кнопки в чужом приложении [D7, Win2k]
azl © (2006-03-02 15:10:00)Добрый день. Ув. мастера,
приведите, пожалуйста, ПРИМЕР, как можно неактивную кнопку чужого приложения сделать активной.
Заранее очень благодарен.
azl (2006-03-03 11:50:00) [1]private
{ Private declarations }
procedure ShowHwndAndClassName(CrPos: TPoint);
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Timer1Timer(Sender: TObject);
var
rPos: TPoint;
begin
if Boolean(GetCursorPos(rPos)) then ShowHwndAndClassName(rPos);
end;
procedure TForm1.ShowHwndAndClassName(CrPos: TPoint);
var
hWnd: THandle;
aName, bName: array [0..255] of Char;
begin
hWnd := WindowFromPoint(CrPos);
Edit1.Text := IntToStr((hWnd));
if Boolean(GetClassName(hWnd, aName, 256)) then
Edit4.Text := string(aName);
{else
Label2.Caption := 'ClassName : not found';}
if Boolean(GetWindowText(hWnd, bName, 256)) then
Edit3.Text := string(bName);
Edit2.Text := IntToStr(GetParent(hWnd));
EnableWindow(FindWindowEx(FindWindow(PChar(string(aName)),PChar(string(bName))), 0,nil,nil),True);
end;
psa247 (2006-03-03 09:50:00) [2]
> Crash Coredump © (02.03.06 16:03) [11]
По хорошему надо делать через ActionList и тогда никакие такие "штуки" не пройдут.
Crash Coredump (2006-03-02 16:03:00) [3]Кнопки просто так недоступными не делаются
azl (2006-03-02 15:55:00) [4]Спасибо, большое.
Руслан (2006-03-02 15:54:00) [5]Кажется есть функция WindowFromPoint, которая возвращает хендл окна под курсором. попробуй
Руслан (2006-03-02 15:53:00) [6]ну, в общем, посмотри справку на FindWindowEx()
и FindWindow()
Руслан (2006-03-02 15:52:00) [7]BtnWnd получаешь с помощью FindWindowEx()
Там первый параметр - хендл родительского окна, находишь с FindWindow()
2-й - должен быть 0 кажется,
3й - класс кнопки, например Tbutton
4-й кажется тоже 0 или nil - точно не помню )))
azl (2006-03-02 15:52:00) [8]Придумал.
BtnWnd := FindWindowEx(FindWindow('TForm1','Form1'),0,'TButton','Button1');
Так работает.
А как можно сделать чтобы кнопка в чужом приложении становилась активной при наведении на нее курсора мыши?
Спасибо.
azl (2006-03-02 15:48:00) [9]Спасибо.
Только немного не ясно BtnWnd - это что?
var
BtnWnd: HWND
begin
BtnWnd:=???
EnableWindow(BtnWnd,True);
end;
Руслан (2006-03-02 15:33:00) [10]
> begin...end © (02.03.06 15:28) [2]
> > Руслан © (02.03.06 15:23) [1]
>
> Это не будет работать. Вместо этого можно использовать EnableWindow.
>
Опередил, пока второе сообщение дошло )))
Руслан (2006-03-02 15:31:00) [11]или EnableWindow(BtnWnd,True);
begin...end (2006-03-02 15:28:00) [12]> Руслан © (02.03.06 15:23) [1]
Это не будет работать. Вместо этого можно использовать EnableWindow.
Руслан (2006-03-02 15:23:00) [13]SendMessage(BtnWnd,WM_ENABLE,0,0);