Сейчас на форуме: _MBK_, ut2004, vsv1 (+6 невидимых)

 eXeL@B —› Вопросы новичков —› Сообщения Windows, Справочник на русском нужен!
Посл.ответ Сообщение

Ранг: 8.4 (гость)
Активность: 0.020
Статус: Участник

Создано: 19 декабря 2006 18:25
· Личное сообщение · #1

Есть две программы в которых мне нужно кое-то химичить. Причем не очень охото повторять кучу требуемых операций. Когда вполне реально написать программу которая будет сама все делать а я буду забирать только результат. Написать планирую на Delphi. Прочитал я про Windows Messages, принцип понял. Вот где мне взять справочник этих самых сообщений? Т.к. я новичок в сообщениях то WM_* мне мало о чем говорят. Короче мне нужен справочник в котором бы описывалось по действиям а не по названию например мне нужно в окне с заголовком "bla-bla-bla" нажать radioButton и просто кнопку программно. Или допустим считать из грида значеие програмно. Где такое взять?



Ранг: 11.5 (новичок)
Активность: 0.010
Статус: Участник

Создано: 19 декабря 2006 19:49
· Личное сообщение · #2

Единственный полный справочник по разработке для Вынь - MSDN, на русский в основном переводят только часто используемые функции. Поставляется совместно с MS Visual Studio, можно поставить отдельно.

Cracker Free пишет:
не нужно в окне с заголовком "bla-bla-bla" нажать radioButton и просто кнопку программно.

Используя функцию FindWindow, находим окно с заголовком "бла-бла", находим необходимый контрол и посылаем ему сообщение BM_CLICK.

Cracker Free пишет:
Или допустим считать из грида значеие програмно

Опять находим необходимое окно (для Grid, класс окна будет - ListBox), для считывания содержимого строки, посылаем сообщение LB_GETTEXT.

Там все описано, даны примеры.



Ранг: 30.5 (посетитель), 5thx
Активность: 0.010
Статус: Участник

Создано: 20 декабря 2006 02:25
· Личное сообщение · #3

Cracker Free пишет:
Вот где мне взять справочник этих самых сообщений

В разделе "скачать" по моему есть справочник по API фунуциям



Ранг: 27.7 (посетитель)
Активность: 0.030
Статус: Участник

Создано: 20 декабря 2006 02:41
· Личное сообщение · #4

Зайдите в раздел программирование там есть справочник по WinAPI функциям



Ранг: 53.8 (постоянный)
Активность: 0.050
Статус: Участник

Создано: 20 декабря 2006 02:42
· Личное сообщение · #5

Cracker Free пишет:
Где такое взять?


Да, если английского не знаешь, то сложно. Но все абсолютно WM никем не переведены.Вот приаттачил.Почитай

3820_20.12.2006_CRACKLAB.rU.tgz - api_help_changes.zip



Ранг: 8.4 (гость)
Активность: 0.020
Статус: Участник

Создано: 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;)
помогите, объясните.




Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 20 декабря 2006 07:54
· Личное сообщение · #7

Cracker Free пишет:
то получается что в нескольких окнах тоже может быть этот компонент и тогда что?


сначала ищи главное окно - FindWindow, а потом ищи в нём дочернее с помощью
FindWindowEx

main := FindWindow('TForm1','blabla')
hndl := findwindowex(main, 0, 'Tknopka','Ok')';

-----
[nice coder and reverser]




Ранг: 8.4 (гость)
Активность: 0.020
Статус: Участник

Создано: 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;

И вот где



Ранг: 8.4 (гость)
Активность: 0.020
Статус: Участник

Создано: 20 декабря 2006 09:19
· Личное сообщение · #9

btCode пишет:
для Grid, класс окна будет - ListBox

хм... может я классы для нужных компонетов неправильно написал? Может TGroupBox это... незнаю. кто знает?




Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 20 декабря 2006 09:43
· Личное сообщение · #10

попробуй InqSoft Window Scanner он покажет класс окна, текст и дерево окон..

-----
[nice coder and reverser]




Ранг: 8.4 (гость)
Активность: 0.020
Статус: Участник

Создано: 20 декабря 2006 11:59
· Личное сообщение · #11

InqSoft Window Scanner - хорошая программа давно искал, но я все же до сих пор не могу сформировать сообщения программе. Я новичок в программировании поэтому не судите строго если чего не понимаю. Люди пожалуйста запостите парочку другую примеров сформированных сообщений на дэльфях:
1) Как входидь в главное меню программы (т.е. допустим как мне нажать Файл->Выход)
2) Как считать данные из ValueListEditor (компонент похож на инспектор свойств в некоторых IDE средах программирования)
3) Как жать на радио-батоны (несколько радио-батонов как их выбирать)
4) Как жать на значения Grid'a (т.е. у меня список - первое, второе... как выбрать допустим первое)
5) Как передвигаться в ValueListEditor по ключам/значениям
Только не подумайте что мне тут делать нечего я всякие штучки придумываю. Вы очень сильно облегчите мне работу если поможете. Кол-во моей нудной работы у меньшится в 2 а то и 3 раза.



Ранг: 310.8 (мудрец), 29thx
Активность: 0.430
Статус: Участник

Создано: 21 декабря 2006 04:27
· Личное сообщение · #12

Cracker Free пишет:
. Люди пожалуйста запостите парочку другую примеров сформированных сообщений на дэльфях:

А поискать это на Дельфовских форумах нельзя ?! Здесь же не детский сад.
Кстати примеры с имитацией нажатия кнопок из Дельфи на нашем форуме давали в этом году несколько раз.



Ранг: 191.8 (ветеран), 46thx
Активность: 0.170
Статус: Участник

Создано: 21 декабря 2006 20:06
· Личное сообщение · #13

В Borland'ах была вроде программа WinSight для этого. Поискал у себя в дельфях одни хелпы.

А нет есть - WS32.EXE.



Ранг: 8.4 (гость)
Активность: 0.020
Статус: Участник

Создано: 22 декабря 2006 06:10
· Личное сообщение · #14

Ratinsh чо-то она не хочет сообщения мониторить?



Ранг: 191.8 (ветеран), 46thx
Активность: 0.170
Статус: Участник

Создано: 22 декабря 2006 13:25
· Личное сообщение · #15

флажок в меню View - Messages Trace
ну и необходимые флажки меню Messages - Options
попробуй в меню Messages - All Windows
start-stop это как бы понятно
нужно конечно поэкспериментировать



Ранг: 8.4 (гость)
Активность: 0.020
Статус: Участник

Создано: 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);



Ранг: 8.4 (гость)
Активность: 0.020
Статус: Участник

Создано: 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, Справочник на русском нужен!
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати