Модераторы: Akina

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Нажатие клавиши в определённое окно 
:(
    Опции темы
I_Am_Rock
Дата 16.2.2008, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Я сейчас проверил код, который ты выложил (первый) - действительно работает...) Почему ты решил, что он не работает?
PM MAIL WWW   Вверх
LawYard
Дата 16.2.2008, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



В моем приложении не работал. Хм.. сейчас порпобую с твоим.. мне все же кажется что-то с моим бейсиком не то)
PM MAIL   Вверх
I_Am_Rock
Дата 16.2.2008, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



А как он не работал - выдавал ошибку что ли?

Добавлено через 2 минуты и 24 секунды
В коде, который ты нашел...
При нажатии на кнопку "эмулируется" нажатие на форму. В окне Immediate пишется "50, 50" - координаты произошедшего якобы нажатия. Ты можешь и по-настоящему нажимать на кнопки - так же будут записываться координаты...
PM MAIL WWW   Вверх
LawYard
Дата 16.2.2008, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Нет, ничегопросто не происходит(

Вот смотри, листинг программки:
Код

Option Strict Off
Option Explicit On
Friend Class Form1
    Inherits System.Windows.Forms.Form
    Private Declare Function PostMessage Lib "user32.dll" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    Private Declare Function SendNotifyMessage Lib "user32" Alias "SendNotifyMessageA" (ByVal hwnd As Integer, ByVal msg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer
    Private Declare Function FindWindow Lib "user32"  Alias "FindWindowA"(ByVal lpClassName As String, ByVal lpWindowName As String) As Integer
    Private Declare Function FindWindowEx Lib "user32"  Alias "FindWindowExA"(ByVal hWndParent As Integer, ByVal hWndChildAfter As Integer, ByVal lpClassName As String, ByVal lpWindowName As String) As Integer
    Private Function MakeDWord(ByVal LoWord As Integer, ByVal HiWord As Integer) As Long
        MakeDWord = (HiWord * &H10000) Or (LoWord And &HFFFF&)
    End Function
    Private Const WM_LBUTTONDOWN As Integer = &H201
    Private Const WM_LBUTTONUP As Integer = &H202
    Dim g, k As Object
    
    Private Sub Command1_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles Command1.Click
        'находим системную панель
        'UPGRADE_WARNING: Couldn't resolve default property of object g. Click for more: 'ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="6A50421D-15FE-4896-8A1B-2EC21E9037B2"'
        g = FindWindow("Shell_traywnd", vbNullString)
        'находим кнопку Пуск
        'UPGRADE_WARNING: Couldn't resolve default property of object g. Click for more: 'ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="6A50421D-15FE-4896-8A1B-2EC21E9037B2"'
        'UPGRADE_WARNING: Couldn't resolve default property of object k. Click for more: 'ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="6A50421D-15FE-4896-8A1B-2EC21E9037B2"'
        'k = FindWindowEx(g, 0, "Button", vbNullString)
        'нажимаем ее
        'UPGRADE_WARNING: Couldn't resolve default property of object k. Click for more: 'ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="6A50421D-15FE-4896-8A1B-2EC21E9037B2"'
        SendNotifyMessage(g, WM_LBUTTONDOWN, 0&, MakeDWord(31, 17))
        SendNotifyMessage(g, WM_LBUTTONUP, 0&, MakeDWord(31, 17))
    End Sub
End Class


По идее она должна кликать по кнопке Пуск. Я выбрал окно для работы - трей и задал кликать в НЕМ по координатам кнопки Пуск. Не кликает (а твоя программка с Кнопкой пуск кликает норм, где чисто по кнопке а не по координатам).
PM MAIL   Вверх
I_Am_Rock
Дата 16.2.2008, 15:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Вот в том-то и суть, что ты кликаешь по НЕМ, т.е. по системной панели... И нажатие это делается как бы сквозь другой объект...
Попробуй делать нажатие для "k" - самой кнопки, выбрав в качестве координат, допустим, 15,15...
PM MAIL WWW   Вверх
LawYard
Дата 16.2.2008, 15:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



А как сделать чтобы клик шел просто в выбранном окне? Просто задал окно и пусть в нем кликается по координатам? Кинь плиз код, у меня не выходит... пробовал и так и сяк.
PM MAIL   Вверх
I_Am_Rock
Дата 16.2.2008, 15:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Хорошо, сейчас буду писать код...

Хочу лишь заметить, что раз в том окне, в которое ты хочешь их посылать нет дочерних окон (ведь так?), то их следовательно и не надо искать - "кликать" надо по нему самому...
PM MAIL WWW   Вверх
LawYard
Дата 16.2.2008, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Ну я так и делал. Вот упрощенный код:

Код

 g = FindWindow("ОКНО", vbNullString)

SendNotifyMessage(g, WM_LBUTTONDOWN, 0&, MakeDWord(31, 17))
SendNotifyMessage(g, WM_LBUTTONUP, 0&, MakeDWord(31, 17))


И оно не кликает таким образом. Я тестил на Пеинте тоже - не хочет кликать по точкам в окне пеинта.
PM MAIL   Вверх
I_Am_Rock
Дата 16.2.2008, 16:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



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

См. прикрепленный файл...

Там помимо проектного файла есть exe-шник, куда удобно слать нажатия.
Запусти его и понажимай на форме. Ты увидишь красные кружки...
Затем запусти проектный файл - введи заголовок моего окна ("Форма для нажатий"), и укажи координаты - X и Y (например, 40 и 40)...

Экзешник я делал наспех и кружки стираются если окно свернуть (и при разворачивании).
Говорю это на случай, если ты подумаешь, что посылать мышиные нажатия в свернутое окно нельзя.
Хотя так делать (в свернут. окно) не пробовал - может, нельзя, может, можно...

Присоединённый файл ( Кол-во скачиваний: 5 )
Присоединённый файл  MouseKoordinat.rar 3,69 Kb
PM MAIL WWW   Вверх
LawYard
Дата 17.2.2008, 18:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Не было интернета. Сейчас скачаю и потестю)
PM MAIL   Вверх
LawYard
Дата 17.2.2008, 19:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



СТранно. В Форму кликает нормально, если ее сделать неактивной, ну на заднем плане. А в мое приложение не кликает. Или приложение на ТАКОЙ клик не отвечает. Щас порпобую поэкспериментировать ,но есть подозрение, что нужно через следующий алгорит: переместить мышь на заданные координаты - потом клик.
PM MAIL   Вверх
I_Am_Rock
Дата 17.2.2008, 20:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Да, действительно странно...(
Попробуй сделать, перемещая мышь.
PM MAIL WWW   Вверх
LawYard
Дата 18.2.2008, 19:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Я что-то хм.. не нашел как переместить мышь в конкретно-выбранном приложении)) Попробовал и так и так, что-то не перемещаетсо, а ток ошибки выдает Т_Т
PM MAIL   Вверх
I_Am_Rock
Дата 18.2.2008, 19:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Чуть попозже выложу код...)
PM MAIL WWW   Вверх
I_Am_Rock
Дата 18.2.2008, 20:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Если честно, я не знаю, как перемещать курсор относительно какого-то окна...
Можно, конечно, попробовать перемещать курсор по формуле (ПоложениеКурсораX + ПоложениеОкнаX, ПоложениеКурсораY + ПоложениеОкнаY). В этом случае, по идее, курсор будет ориентироваться не относительно экрана, а относительно окна...
Но я советую просто - перед перемещением курсора переместить окно-цель в левый верхний угол.

З.Ы. В проектном файле - 1) перемещение курсора, 2) перемещение окна в левый верхний уровень.

Присоединённый файл ( Кол-во скачиваний: 4 )
Присоединённый файл  XY.rar 1,34 Kb
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


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

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


 




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


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

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