Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Работа с сообщениями


Автор: maxkazar 29.1.2004, 11:36
Делаю два приложения....первое TForm1 и второе TForm2. Для второго приложения пишу процедурку

procedure TForm2.Button1Click(Sender: TObject);
var
hWnd:THandle;
begin
hWnd:=FindWindow('TForm','Form1');
SendMessage(hWnd,WM_RBUTTONDOWN,MK_RBUTTON,$00100010);
end;


а в первом приложение описываю обработчик нажатия кнопки мышки

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if Button=(mbRight) then
label1.Caption:=IntToStr(X)+':'+IntToStr(Y)+':Left'
else
label1.Caption:=IntToStr(X)+':'+IntToStr(Y)+':Nothing'
end;

теоретический я посылаю сообщение нажатия правой кнопки первому приложению и первое приложение должно прореагировать. Невыходит(

Автор: Полудненко Олег 29.1.2004, 12:58
Дык первая процедура обрабатывает OnClick, а вторая - OnMouseDown. Может глюк в этом?

Автор: Paradox 29.1.2004, 13:24
дык поставь в
Код
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
брейкпоинт и посмотри у тебя вообще сообщение ловится или нет
обычно еще hWnd на nil проверяют

Автор: maxkazar 29.1.2004, 14:29
Да там все оки....просто старая тема....управляеть другими приложениями по средствам сообщений....дык не выходит....теоретический должно

Автор: <Spawn> 30.1.2004, 06:39
а ты уверен, что hWnd содержит хендл окна? Значение класса и название окна ты верно указал?

Автор: StayAtHome 31.1.2004, 01:30
Еще вариант:
Можно в первом приложении работать не на OnMouseDown а напрямую отлавливать сообщение WM_RBUTTONDOWN. Тогда хоть увидишь где трабла: или сообщение не доходит, или VCL не генерирует OnMouseDown.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)