![]() |
eXeL@B —› Вопросы новичков —› Сообщения Windows, Справочник на русском нужен! |
Посл.ответ | Сообщение |
|
Создано: 19 декабря 2006 18:25 · Личное сообщение · #1 Есть две программы в которых мне нужно кое-то химичить. Причем не очень охото повторять кучу требуемых операций. Когда вполне реально написать программу которая будет сама все делать а я буду забирать только результат. Написать планирую на Delphi. Прочитал я про Windows Messages, принцип понял. Вот где мне взять справочник этих самых сообщений? Т.к. я новичок в сообщениях то WM_* мне мало о чем говорят. Короче мне нужен справочник в котором бы описывалось по действиям а не по названию например мне нужно в окне с заголовком "bla-bla-bla" нажать radioButton и просто кнопку программно. Или допустим считать из грида значеие програмно. Где такое взять? ![]() |
|
Создано: 19 декабря 2006 19:49 · Личное сообщение · #2 Единственный полный справочник по разработке для Вынь - MSDN, на русский в основном переводят только часто используемые функции. Поставляется совместно с MS Visual Studio, можно поставить отдельно. Cracker Free пишет: не нужно в окне с заголовком "bla-bla-bla" нажать radioButton и просто кнопку программно. Используя функцию FindWindow, находим окно с заголовком "бла-бла", находим необходимый контрол и посылаем ему сообщение BM_CLICK. Cracker Free пишет: Или допустим считать из грида значеие програмно Опять находим необходимое окно (для Grid, класс окна будет - ListBox), для считывания содержимого строки, посылаем сообщение LB_GETTEXT. Там все описано, даны примеры. ![]() |
|
Создано: 20 декабря 2006 02:25 · Личное сообщение · #3 |
|
Создано: 20 декабря 2006 02:41 · Личное сообщение · #4 |
|
Создано: 20 декабря 2006 02:42 · Личное сообщение · #5 Cracker Free пишет: Где такое взять? Да, если английского не знаешь, то сложно. Но все абсолютно WM никем не переведены.Вот приаттачил.Почитай ![]() ![]() |
|
Создано: 20 декабря 2006 07:00 · Личное сообщение · #6 btCode пишет: Используя функцию FindWindow, находим окно с заголовком "бла-бла" это понятно я могу найти окно и уничтожить его (example) var x:hWnd; begin x:=FindWindow(nil, 'Mozilla Firefox'); if x=0 then exit; SendMessage(x, WM_DESTROY, 0,0); end; btCode пишет: находим необходимый контрол и посылаем ему сообщение BM_CLICK вот тут НЕПОНЯТНО, допустим на форме есть BitBtn компонент с именем 'OK', как получить его "адрес", с формой все было понятно, находишь заголовок окна а тут компонент находится внутри окна, если допустим искать: b:=FindWindow('BitBtn', 'OK'); то получается что в нескольких окнах тоже может быть этот компонент и тогда что? SendMessage(b, bm_Click, 0,0); // а потом вот так? думаю если вы мне объсните этот момент с этим (см. ниже) я разберусь сам а может кто-нить примеры привести (как выбирать пункты меню и заходить в них; как жать на radioButtons, BitBtn, Buttons; как выбирать пункты в StringGrid, ValueListEditor;) помогите, объясните. ![]() |
|
Создано: 20 декабря 2006 07:54 · Личное сообщение · #7 Cracker Free пишет: то получается что в нескольких окнах тоже может быть этот компонент и тогда что? сначала ищи главное окно - FindWindow, а потом ищи в нём дочернее с помощью FindWindowEx ![]() main := FindWindow('TForm1','blabla') hndl := findwindowex(main, 0, 'Tknopka','Ok')'; ----- [nice coder and reverser] ![]() |
|
Создано: 20 декабря 2006 09:09 · Личное сообщение · #8 Hellspawn, спасибо работает в лабараторных условиях. Но в боевых ситуация оказалась такая 1. Программа на Delphi -->DeDe -->и я знаю компоненты (классы) 2. Нужно добраться до BitBtn который находится в структуре: на mainforme {TGroupBox} {TPanel} TBitBtn - нужная кнопка {/TPanel} {/TGroupBox} такая "древовидная" схема почти на все нужные мне компоненты. Вопрос - Как добраться до адреса TBitBtn. я пытаюсь делать так, комменты в run-time var main, hndl, hndl2, hndl3:hwnd; begin main := FindWindow(nil,'Ломаемая Программа. Версия 5.9'); if main=0 then edit1.Text:='не найден main'; //все проходит гладко hndl := FindWindowEx(main, 0, 'TGroupBox','Определение юзера'); if hndl=0 then edit1.Text:='не найден TGroupBox'; //вот тут edit1 отображает что 'не найден TGroupBox' hndl2 := FindWindowEx(hndl, 0, 'TPanel',''); hndl3 := FindWindowEx(hndl2, 0, 'TBitBtn','OK'); SendMessage(hndl, bm_Click, 0,0); end; И вот где ![]() |
|
Создано: 20 декабря 2006 09:19 · Личное сообщение · #9 |
|
Создано: 20 декабря 2006 09:43 · Личное сообщение · #10 |
|
Создано: 20 декабря 2006 11:59 · Личное сообщение · #11 InqSoft Window Scanner - хорошая программа давно искал, но я все же до сих пор не могу сформировать сообщения программе. Я новичок в программировании поэтому не судите строго если чего не понимаю. Люди пожалуйста запостите парочку другую примеров сформированных сообщений на дэльфях: 1) Как входидь в главное меню программы (т.е. допустим как мне нажать Файл->Выход) 2) Как считать данные из ValueListEditor (компонент похож на инспектор свойств в некоторых IDE средах программирования) 3) Как жать на радио-батоны (несколько радио-батонов как их выбирать) 4) Как жать на значения Grid'a (т.е. у меня список - первое, второе... как выбрать допустим первое) 5) Как передвигаться в ValueListEditor по ключам/значениям Только не подумайте что мне тут делать нечего я всякие штучки придумываю. Вы очень сильно облегчите мне работу если поможете. Кол-во моей нудной работы у меньшится в 2 а то и 3 раза. ![]() |
|
Создано: 21 декабря 2006 04:27 · Личное сообщение · #12 |
|
Создано: 21 декабря 2006 20:06 · Личное сообщение · #13 |
|
Создано: 22 декабря 2006 06:10 · Личное сообщение · #14 |
|
Создано: 22 декабря 2006 13:25 · Личное сообщение · #15 |
|
Создано: 23 декабря 2006 07:45 · Личное сообщение · #16 всё получалось пока я не столкнулся с этим: TFMain //bla-bla proga TPanel //caption'a нет (пустой) TGroupBox //bla group TBitBtn //bla bb var1:= FindWindow(nil,'bla-bla proga'); var2:= FindWindowEx(var1, 0, 'TPanel',''); var3 := FindWindowEx(var2, 0, 'TGroupBox','bla group'); // ВОТ ТУТ ОН НЕ МОЖЕТ ЕГО НАЙТИ ПОЧУМУ???? var4:= FindWindowEx(var3, 0, 'TBitBtn','bla bb'); SendMessage(var4, BM_CLICK, 0,0); ![]() |
|
Создано: 23 декабря 2006 08:04 · Личное сообщение · #17 всё получалось пока я не столкнулся с этим: TFMain //bla-bla proga TPanel //caption'a нет (пустой) TGroupBox //bla group TBitBtn //bla bb var1:= FindWindow(nil,'bla-bla proga'); var2:= FindWindowEx(var1, 0, 'TPanel',''); var3 := FindWindowEx(var2, 0, 'TGroupBox','bla group'); // ВОТ ТУТ ОН НЕ МОЖЕТ ЕГО НАЙТИ ПОЧУМУ???? var4:= FindWindowEx(var3, 0, 'TBitBtn','bla bb'); SendMessage(var4, BM_CLICK, 0,0); ![]() |
![]() |
eXeL@B —› Вопросы новичков —› Сообщения Windows, Справочник на русском нужен! |