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

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

Нажатие неактивной кнопки в чужом приложении [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);


Наверх

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