Модераторы: diadiavova, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Имитация нажатия миши и клавы на сторонних формах 
V
    Опции темы
gvsnet
  Дата 25.8.2011, 10:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 25.8.2011

Репутация: нет
Всего: нет



Пытаюсь имитировать нажатие мыши в не активное приложение. Но эффекта ноль, ошибки код при компиляции не выдает. Пробовал и через PostMessage также нечего. smile 

Код

Public Class Form1
    Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As IntPtr
    Private Declare Function FindWindowEx Lib "user32.dll" Alias "FindWindowExA" (ByVal hWndParent As IntPtr, ByVal hWndChildAfter As Integer, ByVal lpClassName As String, ByVal lpWindowName As String) As IntPtr
    Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hWnd As IntPtr, ByVal wMsg As Integer, ByVal wParam As Integer, ByVal lParam As IntPtr) As IntPtr
    Private Declare Function PostMessage Lib "user32.dll" Alias "PostMessageA" (ByVal hwnd As IntPtr, ByVal wMsg As Integer, ByVal wParam As Integer, ByVal lParam As IntPtr) As IntPtr


    Dim hwnd As Integer = FindWindow(vbNullString, "Безымянный - Paint")



    Private Const BM_CLICK = &HF5

    Dim x As Integer
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        x = FindWindow(vbNullString, "Безымянный - Paint")
        SendMessage(x, BM_CLICK, 0, 0)
        Debug.Print(hwnd)
    End Sub
End Class


На MSDN нашел только  объявление констант для для клавишь мыши и клавиатуры.
Не могу понять у меня он не работает или работает но не так как надо.
SendMessage(x, BM_CLICK, 0, 0) - Как я понимаю за место нулей должны быть координаты мыши (На форме куда кликать).
Paint не принципиален, до этого пытался сделать клик в Блокноте, тоже самое нет эффекта.


PM MAIL   Вверх
gvsnet
Дата 29.8.2011, 09:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 25.8.2011

Репутация: нет
Всего: нет



Я неправильно задал вопрос или никто не знает ответ на него.

Это сообщение отредактировал(а) gvsnet - 29.8.2011, 10:49
PM MAIL   Вверх
diadiavova
Дата 29.8.2011, 20:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 8
Всего: 142



Цитата(gvsnet @  29.8.2011,  10:18 Найти цитируемый пост)
Я неправильно задал вопрос или никто не знает ответ на него.

Ну не знаю, есть непонятные моменты, например я не совсем понял, что такое неактивное приложение. Да и вообще не мешало бы объяснить подробнее, что ты хочешь сделать таким образом, поскольку вполне возможно, что это можно и иначе сделать.




--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
gvsnet
Дата 30.8.2011, 16:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 25.8.2011

Репутация: нет
Всего: нет



мне нужно чтобы программа имитировала нажатие кнопки мыши (или клавиши клавиатуры) в другом приложении,  даже если окно этого приложения не активно в данный момент.
То есть что то типа  "WebBrowser" (заполнение полей и нажатие кнопок. Только там на веб-странице а у меня это должно быт  в приложении).



Это сообщение отредактировал(а) gvsnet - 30.8.2011, 16:58
PM MAIL   Вверх
diadiavova
Дата 30.8.2011, 17:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 8
Всего: 142



Цитата(gvsnet @  30.8.2011,  17:57 Найти цитируемый пост)
мне нужно чтобы программа имитировала нажатие кнопки мыши (или клавиши клавиатуры) в другом приложении,  даже если окно этого приложения не активно в данный момент.

В смысле чтобы главное окно не активно было или что значит неактивно? То есть к примеру окно свернуто, а ты хочешь, чтобы эмулировался клик по какой-то его точке? А такое вообще возможно? smile Я почему-то думаю, что можно действия пользователя эмулировать, но чтобы в свернутое окно послать сообщение о клике... Но не знаю, я могу ошибаться.
Цитата(gvsnet @  30.8.2011,  17:57 Найти цитируемый пост)
То есть что то типа  "WebBrowser" (заполнение полей и нажатие кнопок. Только там на веб-странице а у меня это должно быт  в приложении).

Так в вебраузере обычно это делается через DOM.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
gvsnet
Дата 31.8.2011, 09:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 25.8.2011

Репутация: нет
Всего: нет



Цитата(diadiavova @  30.8.2011,  17:06 Найти цитируемый пост)

В смысле чтобы главное окно не активно было или что значит неактивно? То есть к примеру окно свернуто, а ты хочешь, чтобы эмулировался клик по какой-то его точке? А такое вообще возможно? smile Я почему-то думаю, что можно действия пользователя эмулировать, но чтобы в свернутое окно послать сообщение о клике... Но не знаю, я могу ошибаться.


А... да тут я что то написал не подумал . Мне нужна скорее не имитация а работа с элементами окна даже если оно не активно. 


Цитата(diadiavova @  30.8.2011,  17:06 Найти цитируемый пост)
Так в вебраузере обычно это делается через DOM. 


-А в окне приложения так возможно сделать? То есть также получать значение элементов и также их использовать (как в DOM).
-А SendMessage мне не может дать такого же эффекта (найти объект на форме и использовать его)?





PM MAIL   Вверх
diadiavova
Дата 31.8.2011, 09:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 8
Всего: 142



Цитата(gvsnet @  31.8.2011,  10:09 Найти цитируемый пост)
А в окне приложения так возможно сделать? То есть также получать значение элементов и также их использовать (как в DOM).

Ну насколько я знаю доступ к приложению так не получишь. Ты можешь отправить сообщение о клике мышки, но это будет то же самое, что клик вручную, а ты хочешь получить доступ к элементам управления такой же, как и в собственном приложении. Так не получится.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
gvsnet
Дата 31.8.2011, 11:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 25.8.2011

Репутация: нет
Всего: нет



Цитата(diadiavova @  31.8.2011,  09:55 Найти цитируемый пост)
Ну насколько я знаю доступ к приложению так не получишь. Ты можешь отправить сообщение о клике мышки, но это будет то же самое, что клик вручную, а ты хочешь получить доступ к элементам управления такой же, как и в собственном приложении. Так не получится. 


Ну все равно спасибо. Тему закрываю. Буду искать другие способы.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума VB .NET
diadiavova
  • Прежде чем задать вопрос, воспользуйтесь поиском: возможно Ваш вопрос уже обсуждался и на него был получен ответ.
  • Если такой же вопрос не найден, не стоит задавать свой вопрос в любую тему, создайте новую.
  • Заголовок темы должен отображать ее суть.
  • Содержание поста должно описывать проблему понятно, но в то же время, по возможности, лаконично. Сначала следует описать суть вопроса, потом можно привести пример кода, не вынуждайте других участников угадывать в чем Ваша проблема - телепатов здесь нет.
  • Будьте взаимно вежливы и дружелюбны.
  • При оформлении сообщений используйте форматирование, примеры кода заключайте в теги [CODE=vbnet][/CODE].
  • Также ознакомьтесь с общими правилами, действующими на всем форуме.
  • Если вопрос решен, не забывайте помечать тему решенной(вверху темы есть ссылка). Кроме того, если Вы хотите отблагодарить участников, оказавших помощь в решении, можно повысить им репутацию, в случае, если у Вас менее 100 сообщений в форуме и функция изменения репутации Вам недоступна, можете написать сюда.
  • Общие вопросы по программированию на платформе .NET обсуждаются здесь.
  • Литература по VB .NET обсуждается здесь.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, diadiavova.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB .NET | Следующая тема »


 




[ Время генерации скрипта: 0.1030 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.