Форум: "WinAPI";
Текущий архив: 2004.09.12;
Скачать: [xml.tar.bz2];
ВнизУправление чюжим приложением Найти похожие ветки
← →
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 вся ветка
Форум: "WinAPI";
Текущий архив: 2004.09.12;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.038 c