Калькулятор клик по кнопке

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
DeMONiZ
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 162
Зарегистрирован: 03.01.2009 (Сб) 18:32

Калькулятор клик по кнопке

Сообщение DeMONiZ » 15.05.2009 (Пт) 18:05

Что то уже минут 20 мучаюсь и не могу написать код который кликает по кнопке калькулятора...
делаю так:
Код: Выделить всё
g = FindWindow(vbNullString, "Калькулятор")
k = FindWindowEx(g, 0, "4", vbNullString)


точнее хочу получить таким путем хендл кнопки 4

dr.MIG
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1441
Зарегистрирован: 18.12.2004 (Сб) 9:53
Откуда: г.Ярославль

Re: Калькулятор клик по кнопке

Сообщение dr.MIG » 15.05.2009 (Пт) 18:37

Потому что в строке k = FindWindowEx(g, 0, "4", vbNullString) третьим параметром идет имя класса (надо "Button"), а у тебя там "4", т.е. текст в окне, который должен идти четвертым параметром.

P.S. А само окно калькулятора я бы искал по имени класса: FindWindow("SciCalc", vbNullString). Так, на всякий случай, мало ли что... :)
Salus populi suprema lex

arvitaly
Постоялец
Постоялец
 
Сообщения: 485
Зарегистрирован: 12.04.2009 (Вс) 0:30
Откуда: Казань

Re: Калькулятор клик по кнопке

Сообщение arvitaly » 15.05.2009 (Пт) 18:37

Код: Выделить всё
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Integer, ByVal lParam As Any) As Long
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Const BM_CLICK As Integer = &HF5

Private Sub Command1_Click()
    Dim h1 As Long
    h1 = FindWindow("SciCalc", vbNullString)
    h1 = FindWindowEx(h1, 0, vbNullString, "4")
    SendMessage h1, BM_CLICK, 0, vbNullString
End Sub

DeMONiZ
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 162
Зарегистрирован: 03.01.2009 (Сб) 18:32

Re: Калькулятор клик по кнопке

Сообщение DeMONiZ » 15.05.2009 (Пт) 18:57

dr.MIG, arvitaly спасибо большое. Я по началу и искал SciCalc но не работало по тем причинам которые вы мне сказали и поменял на калькулятор....

DeMONiZ
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 162
Зарегистрирован: 03.01.2009 (Сб) 18:32

Re: Калькулятор клик по кнопке

Сообщение DeMONiZ » 15.05.2009 (Пт) 19:24

А почему может быть такое что этот код работает с калькулятором а с моей программой не хочет.....в чем может быть причина?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Калькулятор клик по кнопке

Сообщение alibek » 15.05.2009 (Пт) 20:09

Потому что в калькуляторе не кнопки.
Используй mouse_event. Или эмулируй клик полноценно, а не посылай BM_CLICK.
Lasciate ogni speranza, voi ch'entrate.

DeMONiZ
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 162
Зарегистрирован: 03.01.2009 (Сб) 18:32

Re: Калькулятор клик по кнопке

Сообщение DeMONiZ » 15.05.2009 (Пт) 20:16

странно как то.....
дело то не в этом он хендл не возращает.......то есть я делаю вывод хендла в текстбокс а он выдает мне 0
Вот к примеру даже если вместо SciCalc пишу Калькулятор то уже код не работает!
Даже если я получаю хендл кнопки другим способом то и BM_CLICK работает отлично

arvitaly
Постоялец
Постоялец
 
Сообщения: 485
Зарегистрирован: 12.04.2009 (Вс) 0:30
Откуда: Казань

Re: Калькулятор клик по кнопке

Сообщение arvitaly » 15.05.2009 (Пт) 20:38

Потому что в калькуляторе не кнопки.

чушь

Вот к примеру даже если вместо SciCalc пишу Калькулятор то уже код не работает!


Скачай какую нить прогу по перебору окон или напиши сам как я когда -то)) Там не так сложно, рекурсивная функция.
Вроде есть прога lnqsoft, там все видно и текст и класс и много чего еще

DeMONiZ
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 162
Зарегистрирован: 03.01.2009 (Сб) 18:32

Re: Калькулятор клик по кнопке

Сообщение DeMONiZ » 15.05.2009 (Пт) 20:40

Потому что в калькуляторе не кнопки.

тоже считаю чушью

DeMONiZ
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 162
Зарегистрирован: 03.01.2009 (Сб) 18:32

Re: Калькулятор клик по кнопке

Сообщение DeMONiZ » 15.05.2009 (Пт) 20:47

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


DeMONiZ
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 162
Зарегистрирован: 03.01.2009 (Сб) 18:32

Re: Калькулятор клик по кнопке

Сообщение DeMONiZ » 15.05.2009 (Пт) 21:03

arvitaly программа которую ты мне посоветовал выодит имя класса окна obj_Form то есть мне это писать вместо SciCalc?
на фрейме выводит obj_BUTTON
и нак нопке тоже obj_BUTTON.

ага точно хендл формы определили идем дальше...
хендл фрейма получен....
Хендл кнопки получен....
клик сделан....
Огромное спасибо!

arvitaly
Постоялец
Постоялец
 
Сообщения: 485
Зарегистрирован: 12.04.2009 (Вс) 0:30
Откуда: Казань

Re: Калькулятор клик по кнопке

Сообщение arvitaly » 15.05.2009 (Пт) 21:09

короче, сиди и разбирайся, там нет ничего сложного, даю последнюю ссылку как подсказку
http://msdn.microsoft.com/en-us/library/ms633499.aspx
Отмазки, типа не знаю англ не принимаются, отмазки типа не могу перевести с c++ не принимаются (ищи).

Хочешь программировать под windows как минимум Microsoft.com умей переводить или купи книгу Рихтер или Эплман

DeMONiZ
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 162
Зарегистрирован: 03.01.2009 (Сб) 18:32

Re: Калькулятор клик по кнопке

Сообщение DeMONiZ » 15.05.2009 (Пт) 21:10

Да я уже разобрался спасибо еще раз!

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Калькулятор клик по кнопке

Сообщение Хакер » 15.05.2009 (Пт) 21:26

alibek, главное окно калькулятора являются диалогом, лежащем в ресурсах "calc.exe". И кнопки вроде бы как являются обычными кнопками. Почему ты говоришь обратное?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Калькулятор клик по кнопке

Сообщение alibek » 15.05.2009 (Пт) 21:39

Перепутал.
Lasciate ogni speranza, voi ch'entrate.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 48

    TopList  
cron