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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как скопировать в буфер и вставить из него 
:(
    Опции темы
begemot125
Дата 10.10.2013, 15:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Рядовой



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

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



Здравствуйте, помогите пожалуйста с проблемой, хочу автоматизировать однообразные действия мышью. Действия такие: открыты два окна размещенные друг над другом, первое - таблица опенофис, второе - CMS joomla с полями для ввода текста. Указателем мыши кликаю по ячейке таблицы опенофиса затем нажимаю на клавиатуре Ctrl+C (происходит копирование данных ячейки в буфер) после этого указатель мыши перемещаю на поле ввода данных CMS joomla и нажимаю на клавиатуре Ctrl+V (происходит вставка данных из буфера в поле) и так далее.

Как переместить указатель мыши на нужные координаты и произвести клик у меня получилось, а вот как программно сделать имитацию одновременного нажатия клавиш Ctrl+C или Ctrl+V не знаю и в сети не нашол.

При запуске проги, нажимая на клавишу "пробел" - Command1 и Command2 поочередно нажимаются, перемещают указатель в указанные положения и производят клик.

Код

Private Const MOUSEEVENTF_ABSOLUTE = &H8000
Private Const MOUSEEVENTF_LEFTDOWN = &H2
Private Const MOUSEEVENTF_LEFTUP = &H4
Private Const MOUSEEVENTF_MIDDLEDOWN = &H20
Private Const MOUSEEVENTF_MIDDLEUP = &H40
Private Const MOUSEEVENTF_MOVE = &H1
Private Const MOUSEEVENTF_RIGHTDOWN = &H8
Private Const MOUSEEVENTF_RIGHTUP = &H10
Private Declare Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal y As Long) As Long
Private Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cbuttons As Long, ByVal dwExtraInfo As Long)


Public Sub MouseClick()
Dim cbuttons As Long, dwExtraInfo As Long, mevent As Long
mevent = MOUSEEVENTF_LEFTDOWN Or MOUSEEVENTF_LEFTUP ' для другой кнопки мыши используйте нужные константы предоставленны выше
Call mouse_event(mevent, 0&, 0&, cbuttons, dwExtraInfo)
End Sub


Private Sub Command1_Click()
Call SetCursorPos(900, 300)  ' переносит курсор на указанные (x:y)
Command1.Enabled = False
Command2.Enabled = True
MouseClick
' нужно чтобы здесь производилось программное нажатие Ctrl+C
End Sub


Private Sub Command2_Click()
Call SetCursorPos(300, 900)  ' переносит курсор на указанные (x:y)
Command1.Enabled = True
Command2.Enabled = False
MouseClick
' нужно чтобы здесь производилось программное нажатие Ctrl+V
End Sub


Это сообщение отредактировал(а) begemot125 - 10.10.2013, 15:08
PM MAIL   Вверх
Akina
Дата 10.10.2013, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20570
Регистрация: 8.4.2004
Где: Зеленоград

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



Нафига мыши? это всё прелестно выполняется с клавиатуры... а клавиатура шлётся в активное окно даже вульгарным SendKeys.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
begemot125
Дата 10.10.2013, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Рядовой



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

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



а вообще реально сделать именно так как я описал? там просто много действий производить.

ну или подскажите пожалуйста как реализовать такое как вы предложили
PM MAIL   Вверх
Akina
Дата 10.10.2013, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20570
Регистрация: 8.4.2004
Где: Зеленоград

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



Возьми любой готовый автокликер, способный записывать и затем воспроизводить дейтсвия мышом и клавиатурой, и используй. Благо этого барахла в Инете достаточно - и для читеров, и для рекламоедов...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
begemot125
Дата 10.10.2013, 18:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Рядовой



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

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



разобрался сам, вот кому надо:

Код

Private Const MOUSEEVENTF_ABSOLUTE = &H8000
Private Const MOUSEEVENTF_LEFTDOWN = &H2
Private Const MOUSEEVENTF_LEFTUP = &H4
Private Const MOUSEEVENTF_MIDDLEDOWN = &H20
Private Const MOUSEEVENTF_MIDDLEUP = &H40
Private Const MOUSEEVENTF_MOVE = &H1
Private Const MOUSEEVENTF_RIGHTDOWN = &H8
Private Const MOUSEEVENTF_RIGHTUP = &H10
Private Const KEYEVENTF_EXTENDEDKEY = &H1
Private Const KEYEVENTF_KEYUP = &H2
Private Const VK_CONTROL = &H11
Private Const VK_C = &H43
Private Const VK_V = &H56
Private Declare Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal y As Long) As Long
Private Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cbuttons As Long, ByVal dwExtraInfo As Long)
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)

Public Sub MouseClick()
Dim cbuttons As Long, dwExtraInfo As Long, mevent As Long
mevent = MOUSEEVENTF_LEFTDOWN Or MOUSEEVENTF_LEFTUP ' для другой кнопки мыши используйте нужные константы предоставленны выше
Call mouse_event(mevent, 0&, 0&, cbuttons, dwExtraInfo)
End Sub

Public Sub SendCtrlC()
Call keybd_event(VK_CONTROL, 0, 0, 0)
Call keybd_event(VK_C, 0, 0, 0)
Call keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0)
Call keybd_event(VK_C, 0, KEYEVENTF_KEYUP, 0)
End Sub

Public Sub SendCtrlV()
Call keybd_event(VK_CONTROL, 0, 0, 0)
Call keybd_event(VK_V, 0, 0, 0)
Call keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0)
Call keybd_event(VK_V, 0, KEYEVENTF_KEYUP, 0)
End Sub

Private Sub Command1_Click() ' КОПИРОВАТЬ
Call SetCursorPos(900, 900)  ' переносит курсор на указанные (x:y)
Command1.Enabled = False
Command2.Enabled = True
Call MouseClick
Call SendCtrlC ' копирование в буфер
Call SetCursorPos(200, 200)  ' переносит курсор на указанные (x:y)
Call MouseClick
End Sub

Private Sub Command2_Click() ' вставить
Call SetCursorPos(300, 900)  ' переносит курсор на указанные (x:y)
Command2.Enabled = False
Command3.Enabled = True
Call MouseClick
Call SendCtrlV ' вставка из буфера
Call SetCursorPos(200, 200)  ' переносит курсор на указанные (x:y)
Call MouseClick
End Sub

Private Sub Command3_Click() ' КОПИРОВАТЬ
Call SetCursorPos(900, 800)  ' переносит курсор на указанные (x:y)
Command3.Enabled = False
Command4.Enabled = True
Call MouseClick
Call SendCtrlC ' копирование в буфер
Call SetCursorPos(200, 200)  ' переносит курсор на указанные (x:y)
Call MouseClick
End Sub

Private Sub Command4_Click() ' КОПИРОВАТЬ
Call SetCursorPos(300, 800)  ' переносит курсор на указанные (x:y)
Command4.Enabled = False
Command1.Enabled = True
Call MouseClick
Call SendCtrlV ' вставка из буфера
Call SetCursorPos(200, 200)  ' переносит курсор на указанные (x:y)
Call MouseClick
End Sub

Private Sub Command5_Click()
Call SetCursorPos(300, 900)  ' переносит курсор на указанные (x:y)
End Sub




Это сообщение отредактировал(а) begemot125 - 10.10.2013, 18:46
PM MAIL   Вверх
Andropov
Дата 15.10.2013, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 15.10.2013
Где: Ижевск

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



Цитата(begemot125 @  10.10.2013,  18:44 Найти цитируемый пост)
разобрался сам, вот кому надо:

Спасибо. smile 

PM MAIL WWW ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

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

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

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

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


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

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


 




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


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

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