Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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.036 c
14-1093317713
SPeller
2004-08-24 07:21
2004.09.12
Отошлем спамерам спам :)


3-1092723998
HMT
2004-08-17 10:26
2004.09.12
Подскажите плз как это будет в Interbase SQL


1-1093502344
*Pavel
2004-08-26 10:39
2004.09.12
Скрипты


1-1093844218
Ega23
2004-08-30 09:36
2004.09.12
Как методу класса присвоить процедуру?


14-1093210691
Uncle Archi
2004-08-23 01:38
2004.09.12
Немного Perl a





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский