forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Библиотеки (http://forum.boolean.name/forumdisplay.php?f=28)
-   -   API Функции (http://forum.boolean.name/showthread.php?t=9180)

maxturbo 16.09.2009 04:46

API Функции
 
Привет всем!!! У меня назрел такой вопрос, искал на него ответ на других сайтах, говорят не реально...Ну я все же пытаюсь найти ответ на этот вопрос, может его и не существует а вдруг :)
Значить так:
Есть decl файл user_32 для Blitz3D...Хочу написать на Blitz3D программу чтоб при запуске ее нажималась кнопка в другой программе. Вопрос как это сделать????
Пробовал вот так:
Код:

c= api_FindWindow("SciCalc","Калькулятор");
button=api_FindWindowEx(c,0,"Button","8");
If c <> 0 Then
Print "Окно найдено"
If button<>0 Then
Print "Кнопка найдена"
Else
Print "Кнопка не найдена"
EndIf
Else
Print "Окно не найдено"
EndIf
WaitKey

Вроде по проверкам все находит, но как мне ее нажать вопрос заключается в этом, хотя и может у меня чтото в коде не правельно...Моя просьба, помогите пожалуйсто, мне просто очень надо это сделать!!!
За ранее благодорю...

NitE 16.09.2009 18:47

Ответ: API Функции
 
совет, делай на пуребасике, если тебе важна только конечная цель. там это наверняка делается гораздо проще, хотя точно не уверен как

Randomize 16.09.2009 20:27

Ответ: API Функции
 
кури SendMessage

btn=FindWindowEx(FindWindow(0, 'Заголовок окна'), 0, nil, "ИмяКнопки");

SendMessage(btn, WM_LBUTTONDOWN, 1, 1)
Sleep(100);
SendMessage(btn, WM_LBUTTONUP, 1, 1)

Для WM_LBUTTONDOWN, WM_LBUTTONUP
wParam определяет состояние кнопок мыши, lParam - упакованые оконные координаты события.

maxturbo 17.09.2009 01:51

Ответ: API Функции
 
Не получается пробовал так
Код:

button=api_FindWindowEx(api_FindWindow("SciCalc","Калькулятор"),0,"Button","8");
If button <> 0
SendMessage(button, WM_LBUTTONDOWN, 1, 1)
api_sleep(100);
SendMessage(button, WM_LBUTTONUP, 1, 1)
Else
EndIf
WaitKey

и вот так:
Код:

c= api_FindWindow("SciCalc","Калькулятор");
button=api_FindWindowEx(c,0,"Button","8");
If c <> 0 Then
Print "Окно найдено"
If button<>0 Then
Print "Кнопка найдена"
SendMessage(button, WM_LBUTTONDOWN, 1, 1)
api_sleep(100);
SendMessage(button, WM_LBUTTONUP, 1, 1)
Else
Print "Кнопка не найдена"
EndIf
Else
Print "Окно не найдено"
EndIf
WaitKey

Всеравно не выходит :( Может ктото сталкивался с этим, дайте мне ответ пожалуйсто!!!

Randomize 17.09.2009 04:13

Ответ: API Функции
 
XD
WM_LBUTTONDOWN и WM_LBUTTONUP у тебя гденибуть прописаны?
это же котируется как обычные переменные в б3д а следовательно ты передаёшь 0. А это ни к чему естественно не приведёт.

Вот декларируй на здоровье:
Код:


WM_MOUSEMOVE = $200
WM_LBUTTONDOWN = $201
WM_LBUTTONUP = $202
WM_LBUTTONDBLCLK = $203
WM_RBUTTONDOWN = $204
WM_RBUTTONUP = $205
WM_RBUTTONDBLCLK = $206


WM_MBUTTONDOWN = $207
WM_MBUTTONUP = $208
WM_MBUTTONDBLCLK = $209
WM_SETFOCUS = $7
WM_KEYDOWN = $100
WM_KEYFIRST = $100
WM_KEYLAST = $108
WM_KEYUP = $101


maxturbo 17.09.2009 04:34

Ответ: API Функции
 
Большое спасибо, ты супер ))))

maxturbo 17.09.2009 08:14

Ответ: API Функции
 
Вот теперь еще такой вопрос, как мне сделать допустим запущен у меня блокнот и при запуске моей программы в нем написалось "Привет"
Пробовал так:
Код:

Const WM_SETTEXT= $C
s=api_FindWindow("Notepad","Безымянный - Блокнот")
t=api_FindWindowEx(s,0,"Edit","")
If t<>0
SendMessage(t, WM_SETTEXT, 0, "Привет");
EndIf
WaitKey

Но не выходит

pax 17.09.2009 10:38

Ответ: API Функции
 
Попробуй по отдельности посылать в окно нажатия кнопок клавиатуры, которые соответствуют вводимым в окно символам. Только возможно понадобится перевести фокус на текстовое поле, в которое хочешь ввести текст. Но это один из способов. Если ты нашел ссыку на текстовое окно, то проще установить его текст не с помошью сообщения, а непосредственно API функцией SetWindowCaption или SetWindowText.

maxturbo 18.09.2009 02:38

Ответ: API Функции
 
А можно по подробней? :)


Часовой пояс GMT +4, время: 14:03.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Перевод: zCarot