Исходник для передачи копии экрана

Все вопросы «а не подскажете, где мне найти...» обсуждаются только здесь.
Fencer
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 64
Зарегистрирован: 01.06.2005 (Ср) 16:19
Откуда: Новосибирск

Исходник для передачи копии экрана

Сообщение Fencer » 17.10.2005 (Пн) 14:26

Люди, я ищу добрый туториальный исходник (на VB, естессно) проги, которая позволяет просматривать копию экрана удалённого компьютера (как RAdmin и некоторые чаты типа Network Assistant). Чтоб была нехорошая куча комментариев по-русски и код был прост для усвоения. Я хотел сообразить сам, но понял, что я... эээ... ну, скажем, не слишком соответствую задуманному делу :oops: :cry:
Искал Гуглом и Яндексом.
Искал по форуму.
Спрашивал соседа.
Пытался сделать сам.
Спасибо за помощь ;)

VOS
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 72
Зарегистрирован: 04.11.2004 (Чт) 18:01
Откуда: СПб

Сообщение VOS » 31.12.2005 (Сб) 0:18

Удаленного?
Думаю, понятно, что это реализуемо только с серверной частью на компе, экран которого надо получить. Чтоб я еще знал, где этот исход на получение экрана завалялся....
Попробую до завтра наклепать пример
- Папа, а правда, что форумы делают человека идиотом?
- Гыыы, лол, сынок!

VOS
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 72
Зарегистрирован: 04.11.2004 (Чт) 18:01
Откуда: СПб

Сообщение VOS » 31.12.2005 (Сб) 23:37

Во! Сделал! Мягко говоря немного тупо получилось, но! Работает... И комменты есть! :)
Там передача осуществляется через файл, плюс к тому несжатый, так что передается 1.37 мб для 800х600... По одному компу или по ЛС попрет. Надо использововать сжатие! Но я не успел это реализнуть. Короче, качаем. Есть исходы сервера и клиента, а также скомпиленные варианты. Нужен компонент MS Winsock, он есть в поставке VB.
У вас нет доступа для просмотра вложений в этом сообщении.
- Папа, а правда, что форумы делают человека идиотом?
- Гыыы, лол, сынок!

bayasaa
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 93
Зарегистрирован: 13.08.2005 (Сб) 11:57
Откуда: Mongolia

Сообщение bayasaa » 03.01.2006 (Вт) 15:37

VOS писал(а):Во! Сделал! Мягко говоря немного тупо получилось, но! Работает... И комменты есть! :)
Там передача осуществляется через файл, плюс к тому несжатый, так что передается 1.37 мб для 800х600... По одному компу или по ЛС попрет. Надо использововать сжатие! Но я не успел это реализнуть. Короче, качаем. Есть исходы сервера и клиента, а также скомпиленные варианты. Нужен компонент MS Winsock, он есть в поставке VB.

А как сделать так чтобы можно было бы не только смотреть но и управлять мышкой, работать на удалёноим компе как на своём то есть как [b]REMOTE DESKTOP CONNECTION[/b] в XP

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

Сообщение Хакер » 04.01.2006 (Ср) 0:07

Про мышь. Примерно так.
На сервер-машине следишь за мышиными событиями, и отправляешь клиенту данные об этих событиях.

Например на сервере ставишь таймер (100) и с помощью апи GetCursorPos получаешь координаты мыши в виде структуры APIPOINT. Потом шлёшь клиенту этот апипоинт, а клиент, когда приходят координаты, т.е. при событии DataArrival, с помощью апи SetCursorPos ставить на клиентской машине нужные координаты.

С кликами мыши также, но по сложнее. Ежели хочешь, могу переделать исходник RS-View (!! Если сам не сможешь !!)
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

bayasaa
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 93
Зарегистрирован: 13.08.2005 (Сб) 11:57
Откуда: Mongolia

Сообщение bayasaa » 04.01.2006 (Ср) 9:09

Хакер писал(а):
С кликами мыши также, но по сложнее. Ежели хочешь, могу переделать исходник RS-View (!! Если сам не сможешь !!)


будь добр сделай
очень прошу

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

Сообщение Хакер » 06.01.2006 (Пт) 1:12

Откапал я тебе библиотечку, которая позволяет следить за мышью. Она предоставляет 1 класс, а класс предоставляет 3 события Mouse Move, MouseUp, MouseDown. В принципе события стандартные, есть практически у любого контрола, поэтому я думаю здесь у тебя проблем не будет. Перед использованием в событии Form_Load нужно запустить класс. Итак кусок кода из формы.

Код: Выделить всё

Dim WithEvents Mouse As cSystemHook
...

Private Sub Form_Load()
...
   Set Mouse = New cSystemHook
   Mouse.SetHook
...
End Sub


Таким образом ты можешь следить за перемещениями на нажатиями на кнопки мыши. Если хоть чуть-чуть знаком с WinSock, наверное сам сможешь сделать так, чтобы при "мышиных" событиях удалённому компу посылалось уведомление о мышиных событиях.


На удалённом компьютере все эти события должны происходить так, как буд-то мышкой управляет пользователь удалённого компа. Т.е. нужно сымитировать эти события. Для этого есть API-функция mouse_event. Объявляется она так:

Код: Выделить всё

Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, _
                                                          ByVal dx As Long, _
                                                          ByVal dy As Long, _
                                                          ByVal cWheelOpt As Long, _
                                                          ByVal dwExtraInfo As Long)

'Константы
Const MOUSEEVENTF_LEFTDOWN = &H2
Const MOUSEEVENTF_LEFTUP = &H4
Const MOUSEEVENTF_MIDDLEDOWN = &H20
Const MOUSEEVENTF_MIDDLEUP = &H40
Const MOUSEEVENTF_MOVE = &H1
Const MOUSEEVENTF_ABSOLUTE = &H8000
Const MOUSEEVENTF_RIGHTDOWN = &H8
Const MOUSEEVENTF_RIGHTUP = &H10


Описание аргументов:
dwFlags - описывает какое именно событие нужно имитировать.
MOUSEEVENTF_LEFTDOWN - нажата левая кнопка
MOUSEEVENTF_LEFTUP - отпущена левая кнопка

MOUSEEVENTF_MIDDLEDOWN - нажата ср. кнопка (колесо)
MOUSEEVENTF_MIDDLEUP - отпущено колесо

MOUSEEVENTF_RIGHTDOWN - нажата правая кнопка
MOUSEEVENTF_RIGHTUP - отпущена правая кнопка

MOUSEEVENTF_MOVE - произведено перемещение мыши. Аргументы X и Y описывают перемещение

MOUSEEVENTF_ABSOLUTE - употребляется только вместе с MOUSEEVENTF_MOVE. Указывает на то, что Х и У идут относительно начала координат, а не относительно прошлой позиции/

MOUSEEVENTF_WHEEL - указывает на то, что произошло вращение колёсика.


X, Y если употреблён флаг MOUSEEVENTF_MOVE - соответсвенно х и у новые координаты указателя. Если используется флаг, касающийся кнопок мыши эти 2 аргумента должны быть Null.

cWheelData - если употреблён флаг MOUSEEVENTF_WHEEL количество поворотных рывков. Одна единица = 120. Т.е. должно быть любое число, кратное 120. В зависимости от направления вращения, число будет положительным или отр.

Если флаг MOUSEEVENTF_WHEEL не используется нужно передать в арг. Null.

-----------------------------------------------------------
Думаю, я понятно всё объяснил, будут вопросы - пиши.
У вас нет доступа для просмотра вложений в этом сообщении.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

bayasaa
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 93
Зарегистрирован: 13.08.2005 (Сб) 11:57
Откуда: Mongolia

Сообщение bayasaa » 26.01.2006 (Чт) 16:46

Хакер писал(а):Откапал я тебе библиотечку, которая позволяет следить за мышью. Она предоставляет 1 класс, а класс предоставляет 3 события Mouse Move, MouseUp, MouseDown. В принципе события стандартные, есть практически у любого контрола, поэтому я думаю здесь у тебя проблем не будет. Перед использованием в событии Form_Load нужно запустить класс.

у меня не запускается класс
Хакер писал(а):Итак кусок кода из формы.

Код: Выделить всё
Dim WithEvents Mouse As cSystemHook ' ошибка
...

Private Sub Form_Load()
...
   Set Mouse = New cSystemHook
   Mouse.SetHook
...
End Sub


Код: Выделить всё

Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, _ ' ошибка
                                                          ByVal dx As Long, _
                                                          ByVal dy As Long, _
                                                          ByVal cWheelOpt As Long, _
                                                          ByVal dwExtraInfo As Long)

'Константы
Const MOUSEEVENTF_LEFTDOWN = &H2
Const MOUSEEVENTF_LEFTUP = &H4
Const MOUSEEVENTF_MIDDLEDOWN = &H20
Const MOUSEEVENTF_MIDDLEUP = &H40
Const MOUSEEVENTF_MOVE = &H1
Const MOUSEEVENTF_ABSOLUTE = &H8000
Const MOUSEEVENTF_RIGHTDOWN = &H8
Const MOUSEEVENTF_RIGHTUP = &H10


Описание аргументов:
dwFlags - описывает какое именно событие нужно имитировать.
MOUSEEVENTF_LEFTDOWN - нажата левая кнопка
MOUSEEVENTF_LEFTUP - отпущена левая кнопка

MOUSEEVENTF_MIDDLEDOWN - нажата ср. кнопка (колесо)
MOUSEEVENTF_MIDDLEUP - отпущено колесо

MOUSEEVENTF_RIGHTDOWN - нажата правая кнопка
MOUSEEVENTF_RIGHTUP - отпущена правая кнопка

MOUSEEVENTF_MOVE - произведено перемещение мыши. Аргументы X и Y описывают перемещение

MOUSEEVENTF_ABSOLUTE - употребляется только вместе с MOUSEEVENTF_MOVE. Указывает на то, что Х и У идут относительно начала координат, а не относительно прошлой позиции/

MOUSEEVENTF_WHEEL - указывает на то, что произошло вращение колёсика.


X, Y если употреблён флаг MOUSEEVENTF_MOVE - соответсвенно х и у новые координаты указателя. Если используется флаг, касающийся кнопок мыши эти 2 аргумента должны быть Null.

cWheelData - если употреблён флаг MOUSEEVENTF_WHEEL количество поворотных рывков. Одна единица = 120. Т.е. должно быть любое число, кратное 120. В зависимости от направления вращения, число будет положительным или отр.

Если флаг MOUSEEVENTF_WHEEL не используется нужно передать в арг. Null.

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 26.01.2006 (Чт) 17:45

Описание аргументов закомментарено?

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

Сообщение Хакер » 26.01.2006 (Чт) 18:18

Про cMouseHook:
Какая ошибка,
  • Automation error
  • Object variable or with block variabel no set
  • Error loading DLL

И зарегистрировал ли ты DLL.

Про АПИ.
Такой же вопрос.
  • Can't find DLL entry point 'mouse_event' in library 'user32'
  • Bad DLL calling convention


Опиши что за ошибка и как (когда) она происходит.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

bayasaa
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 93
Зарегистрирован: 13.08.2005 (Сб) 11:57
Откуда: Mongolia

Сообщение bayasaa » 27.01.2006 (Пт) 9:53

Хакер писал(а):Про cMouseHook:
Какая ошибка,
  • Automation error
  • Object variable or with block variabel no set
  • Error loading DLL

И зарегистрировал ли ты DLL.

Я понял откуда ошибка
другой вопрос
я никак не могу понять как использовать mouse_event и Dim WithEvents Mouse As cSystemHook в программе что и куда передавать как использовать библиотеку


Вернуться в Народный поиск

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

Сейчас этот форум просматривают: Yandex-бот и гости: 26

    TopList