Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.09.12;
Скачать: CL | DM;

Вниз

Управление чюжим приложением   Найти похожие ветки 

 
BVV   (2004-07-17 17:26) [0]

Как в чужом приложении програмно нажать нужную мне Button?
Пробовал так, не катит.

while Hnd=0 do Hnd:= FindWindow(nil, "окно");
if Hnd<> 0 then begin
while HndBtn=0 do HndBtn:=FindWindowEx(Hnd,0,"Button","& Да");
if HndBtn< > 0 then begin
IdBtn:=GetDlgCtrlID(HndBtn);
if IdBtn< > 0 then begin
SendMessage(HndAsc,WM_Command,MakeWPara (IdBtn,BN_CLICKED),HndBtn);


 
VMcL ©   (2004-07-17 18:44) [1]

BM_CLICK
?


 
BRemB   (2004-07-21 14:22) [2]


> BM_CLICK
> ?

а если кнопка находжиться на тулбаре?


 
VMcL ©   (2004-07-21 14:28) [3]

>>BRemB  (21.07.04 14:22) [2]

Тогда это вполне может оказаться не кнопка типа BUTTON, а наследник TGraphicControl.


 
BRemB   (2004-07-21 14:36) [4]

на тулбаре несколько кнопок (пусть 5) мне надо нажать 4 слева. Если при нажатии кнопки в чужом приложении надо указать текст кнопки, то чтоб нажать кнопку на тулбаре надо указть рисунок чтоли!!!!!!!????????? :))


 
Digitman ©   (2004-07-21 14:49) [5]


> чтоб нажать кнопку на тулбаре надо указть рисунок чтоли


расчитай координаты области визуализации целевой кнопки и посылай в окно тулбара сообщение о событии  мышиного клика в этой области


 
BRemB   (2004-07-21 14:52) [6]


> расчитай координаты области визуализации целевой кнопки
>

тулбар постоянно меняестя кнопки могут также находиться в разных местах


 
Digitman ©   (2004-07-21 15:01) [7]


> BRemB


тогда дело твое - швах ... никуда не денешься - затея терпит фиаско ... можно еще как-то подергаться, если чужое приложение сделано в той же версии Делфи, но если в иных средах - увы и ах !

более того, ты напрасно полагаешь, что любая самостоятельная кнопка (т.е. не имеющая отношения к тулбару) обязательно будет иметь свое окно - она точно так же вполне может быть "рисованой"


 
BRemB   (2004-07-21 15:08) [8]


> Digitman

вполне справедливо, с "рисованной" кнопкой. Хорошо, тут можно по координатам расчитать, а если в другом приложении надо выбрать определенный пункт меню (MainMenu и PopUp). Как быть?


 
Digitman ©   (2004-07-21 15:20) [9]

идентифицируй элемент меню и посылай сообщение WM_MENUSELECT

The WM_MENUSELECT message is sent to a menu"s owner window when the user selects a menu item.


 
BRemB   (2004-07-21 15:27) [10]

А для нажатия выбранного пункта подойдет событие BM_CLICK или два последовательных события WM_LEFTDOWN и WM_LEFTUP?


 
BRemB   (2004-07-21 15:33) [11]


> WM_LEFTDOWN и WM_LEFTUP

Сорри, WM_LBUTTONDOWN, WM_LBUTTONUP


 
Digitman ©   (2004-07-21 15:49) [12]

BM_CLICK - то с какого перепугу ? это сообщение к кнопочным контролам относится ..

WM_LBUTTONDOWN + WM_LBUTTONUP должны подойти ... только вот как ты будешь расчитывать позицию элемента, если это элемент раскрывающегося субменю ? да и если это элемент главного меню ? главное меню "плавает" в зависимости от тек.размеров окна-владельца


 
BRemB   (2004-07-21 15:56) [13]


> меню "плавает" в зависимости от тек.размеров окна-владельца

вот именно, вот это я и хочу узнать


 
Pavel Zholudev   (2004-07-23 11:00) [14]

U menia poluchilos":

procedure TForm1.Button1Click(Sender: TObject);
var Hnd, HndBtn:HWND;
begin
Hnd:=FindWindow(nil,"KONICA MINOLTA PagePro 1300W");
HndBtn:=FindWindowEx(Hnd,0,"Button","Proceed");
SendMessage (HndBtn, BM_Click, 0, 0);
end;


 
shvez_igor   (2004-07-26 10:41) [15]

Привет. Я хочу вот что у вас спросить. У меня такая проблема. Мне нужно написать программу управления фотошопом. Я писал програму управления вынапом и всё получилась, это я делал так
1. Находим Handle окна Winamp"a. (можно так - findwindow("Winamp v1.x",nil) )
2. С помощью команды Sendmessage, посылаем окну сообщение вида WM_COMMAND или WM_USER c определёнными параметрами (см. Приложение)
Итак, напишем, например, процедуру для проигрывания заданного трека с заданной громкостью. В дальнейшем, её можно будет использовать в плагине или в программе, работающей совместно с Winamp.
procedure play_track_with_volume(track_number:integer;volume:integer);
// Track_number - номер трека (от 1 до величины количества треков)
// Volume - громкость (от 0 до 255)
var
 h: hwnd;
begin
 h:=findwindow("Winamp v1.x",<STRONg>nil); // Находим окно
 sendmessage(h,WM_USER,track_number-1,121); // Устанавливаем номер трека
 sendmessage(h,WM_USER,volume,122); // Устанавливаем громкость
 sendmessage(h,WM_COMMAND,40045,0); // Проигрываем трек
end;
А как этл сделать з фотошопом ? подскажите плиз.


 
shvez_igor   (2004-07-26 10:41) [16]

Привет. Я хочу вот что у вас спросить. У меня такая проблема. Мне нужно написать программу управления фотошопом. Я писал програму управления вынапом и всё получилась, это я делал так
1. Находим Handle окна Winamp"a. (можно так - findwindow("Winamp v1.x",nil) )
2. С помощью команды Sendmessage, посылаем окну сообщение вида WM_COMMAND или WM_USER c определёнными параметрами (см. Приложение)
Итак, напишем, например, процедуру для проигрывания заданного трека с заданной громкостью. В дальнейшем, её можно будет использовать в плагине или в программе, работающей совместно с Winamp.
procedure play_track_with_volume(track_number:integer;volume:integer);
// Track_number - номер трека (от 1 до величины количества треков)
// Volume - громкость (от 0 до 255)
var
 h: hwnd;
begin
 h:=findwindow("Winamp v1.x",<STRONg>nil); // Находим окно
 sendmessage(h,WM_USER,track_number-1,121); // Устанавливаем номер трека
 sendmessage(h,WM_USER,volume,122); // Устанавливаем громкость
 sendmessage(h,WM_COMMAND,40045,0); // Проигрываем трек
end;
А как этл сделать з фотошопом ? подскажите плиз.



Страницы: 1 вся ветка

Текущий архив: 2004.09.12;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.042 c
3-1092393761
eLVik
2004-08-13 14:42
2004.09.12
ADOConnection.GetFieldNames


3-1092642931
Марат
2004-08-16 11:55
2004.09.12
Memo


8-1087817753
ALex2
2004-06-21 15:35
2004.09.12
Маштабирование TImage


14-1093054091
Думкин
2004-08-21 06:08
2004.09.12
С днем рождения! 21 августа


3-1092489470
SDV_fox
2004-08-14 17:17
2004.09.12
Помогите найти толковую доку или обучалку по продуктам DevExpress