Remote Administrator своими руками"

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

Remote Administrator своими руками"

Сообщение sosed213 » 24.11.2007 (Сб) 17:40

Здравствуйте соискатели!

Никто никогда не пробовал создавать что вроде Remote Administrator'a сам? Как то я пробовал но сталкнулся с рядом проблем. Теперь в теории я знаю как это сделать: взять популярный модуль Winsock.bas или контрол MsWinsock.ocx, воспользоваться моей предыдущей статьёй "В PictureBox из Binary Access Read!!!" и вот он готов! Но тут проблема в следующем - используется клиент и сервер (жутко не удобно!).

Вопрос в следующем: как без установки серверной части перехватывать вид удалённого рабочего стола, координаты мыши, и состояние клавиатуры. И наоборот посылать координаты мыши, события кликов мыши и нажатия клавишь на клавиатуре?

Я предлагаю объеденица высоким умам и создать некую сетевую платформу для управления удалённым рабочим сталом визуально без дополнительных компонентов, а только средствами Visual Basic!

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 24.11.2007 (Сб) 21:19

Судя по размещению темы, к высоким умам ты причисляешь и себя любимого. Довольно опрометчиво. Ответь на простой вопрос: с какой стати удаленный компьютер сам по себе (без сервера) должен отдавать неизвестно кому информацию о рабочем столе и тем более принимать от него команды?
Лучший способ понять что-то самому — объяснить это другому.

sosed213
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 206
Зарегистрирован: 13.11.2007 (Вт) 21:19
Откуда: Омск

Сообщение sosed213 » 25.11.2007 (Вс) 5:49

Существуют же функции для работы например с удалённым реестром RegConnectRegistry, или получения время с удалённого компьютера NetRemoteTOD. Вооще я искал функции из библиотеке "Netapi32.dll" может в ней что для этого есть?

И мне недавно расказывали про какуюто программу которая перехватывает данные портов удалённой машины и как то с ней работает. Если надо то могу взять её. А ещё есть такая программа "Гиена" (только по английски) которая работает обсалютно без клиента но с правами администратора.

Я думаю что полюбому в XP можно както это сделать без клиента, а то с клентом уже не актуально!

sosed213
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 206
Зарегистрирован: 13.11.2007 (Вт) 21:19
Откуда: Омск

Сообщение sosed213 » 25.11.2007 (Вс) 6:09

Судя по размещению темы, к высоким умам ты причисляешь и себя любимого.


Я неотношу себя к высоким умам потому что против моих знаний всегда найдётся кто то круче, но я пивык писать творчески, задавая кучу вопросов и обратился сюда с надеждой что мне помогут как в расказе из книги "Квант" № 7 (1975), с.67–70 "Разговор в трамвае". Там где профессор и дядя объяснили студенту что всётаки существует формула для подсчёта кол-ва счастливых билетов.
:(

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 25.11.2007 (Вс) 10:21

Судя по описанию и скриншоту, Hyena представляет собой всего лишь графический интерфейс для WMI и работает с WMI удаленного компа под теми правами, которыми располагает пользователь, ее запустивший. Это во-первых. Во-вторых, WMI не обладает средствами передачи изображения. Ну и в-третьих, если служба WMI на удаленном компьютере остановлена, никакие права пользователю не помогут. То есть эта служба является таки сервером.

RegConnectRegistry кстати тоже работает с сервером - службой "Удаленный реестр".

Поверь на слово, если бы был способ получить от компьютера то, что он отдавать не хочет, высокие умы уже давно бы его воплотили в жизнь.

А еще мне рассказывал знакомый, который видел человека, который встречался с Майклом Джексоном, что тот пришил себе вторую голову. Брешет, поди.
Лучший способ понять что-то самому — объяснить это другому.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 25.11.2007 (Вс) 12:32

Ну, в самом Windows-e есть же "Удаленный помощник". И средствами "передачи изображения" обладает сам Windows - надо только научиться ими пользоваться. Причем это не примитивные скриншоты/AVI-шки, а хорошо скомпрессированный поток.

Конечно, для работы нужны соответствующие права.
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

sosed213
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 206
Зарегистрирован: 13.11.2007 (Вт) 21:19
Откуда: Омск

Сообщение sosed213 » 25.11.2007 (Вс) 13:13

Согласитесь, например в колледжах и школах педагога былобы идеально пользоваться такой программой, он итак будет знать пароль администратора. Вот в XP есть встроенная прога mstsc.exe для удалённого управления, неудобна тем что приходится выходить из сеанса на удалённой машине.

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 25.11.2007 (Вс) 13:18

Нет там никакой компрессии - шлются GDI-команды.

А вообще, есть стандартные средства. Remote Desktop(я даж с КПК-хи подключался, встроенной прогой).
Изображение

sosed213
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 206
Зарегистрирован: 13.11.2007 (Вт) 21:19
Откуда: Омск

Сообщение sosed213 » 25.11.2007 (Вс) 13:25

в том то вся и малина если своими руками

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2054
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 25.11.2007 (Вс) 13:28

keks-n писал(а):Нет там никакой компрессии - шлются GDI-команды.

А вообще, есть стандартные средства. Remote Desktop(я даж с КПК-хи подключался, встроенной прогой).


Ммм... НУ команды командами это всё хорошо, но изображение с удалённой тачки одними командами же не получишь или я чего то не понимаю ? :roll: Поясни плз :)

sosed213
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 206
Зарегистрирован: 13.11.2007 (Вт) 21:19
Откуда: Омск

Сообщение sosed213 » 25.11.2007 (Вс) 13:58

Изображение передается как массивом типа Byte!

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2054
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 25.11.2007 (Вс) 14:27

2 sosed213: Вот и я о том же. Только не всё так просто. Ведь идёт ещё и упаковка кадров. И отправка только изменившиеся части изображения.

К тому же радминовцы сделали даж свой драйвер для этих целей. Чтоб ускорить процесс

sosed213
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 206
Зарегистрирован: 13.11.2007 (Вт) 21:19
Откуда: Омск

Сообщение sosed213 » 25.11.2007 (Вс) 16:32

радминовцы также используют систему клиет-сервер.

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2054
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 25.11.2007 (Вс) 16:45

sosed213 писал(а):радминовцы также используют систему клиет-сервер.


Ну да. А что ты предлагаешь на замену ??? Должна быть клиентская часть запрашивающая с конечного компа данные и обрабатывающая их и логично, что для того чтобы ей что либо получить - должна быть и серверная часть на удалённом компе. Иначе кто тебе ответит ???
:shock: Чудес не бывает.

P.S Можно ли задать человеку вопрос если спрашивать некого ???

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

Но ИМХО криво

sosed213
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 206
Зарегистрирован: 13.11.2007 (Вт) 21:19
Откуда: Омск

Сообщение sosed213 » 25.11.2007 (Вс) 17:26

ALX_2002 писал(а):P.S Можно ли задать человеку вопрос если спрашивать некого ???


Что это значит?

Сейчас уже пытаюсь сделать проект на основе клиент-сервер. Пока только ищу статейки высокоскоростного графического обработчика.

Хочу сделать скришот, загнать его в масив типа Byte (пока незнаю как), и при помощи фунции OleLoadPicture(уже умею делать) распаковать обратно из массива.

А для эксперемента массив создаю из файла:
Код: Выделить всё
Dim TheBytes() As Byte
Dim inFile As String
Dim LenInFile As Long
    inFile = "C:\!Qtest\VB\06.jpg "
    LenInFile = FileLen(inFile)
    ReDim TheBytes(LenInFile - 1)


    Open inFile For Binary Access Read As #3
        Get #3, , TheBytes()
    Close #3

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 25.11.2007 (Вс) 20:20

sosed213 писал(а):Хочу сделать скришот, загнать его в масив типа Byte (пока незнаю как), и при помощи фунции OleLoadPicture(уже умею делать) распаковать обратно из массива.

Гнать по сети скриншоты -- тупик.
Их никогда не удастся упаковать даже близко так же плотно, как GDI-команды.
Изображение

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2054
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 25.11.2007 (Вс) 20:55

Tyomitch расскажи плз по подробнее - куда глянуть по этой теме ? :)

sosed213
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 206
Зарегистрирован: 13.11.2007 (Вт) 21:19
Откуда: Омск

Сообщение sosed213 » 25.11.2007 (Вс) 21:24

tyomitch писал(а):Их никогда не удастся упаковать даже близко так же плотно, как GDI-команды.


А как упаковываются GDI-команды.

А если делать качество изображения чуть похуже!?

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

Сообщение Хакер » 25.11.2007 (Вс) 22:45

sosed213
А их можно даже не упаковывать.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

sosed213
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 206
Зарегистрирован: 13.11.2007 (Вт) 21:19
Откуда: Омск

Сообщение sosed213 » 26.11.2007 (Пн) 5:10

всёже по 100 Мегобитке картинки будут передаваться не так уж долго!
Если кто поможет разобраться с одной мелочью то я сразу доделаю и выложу хоть что то.

Надо из PictureBox все данные записать в переменную, как будто для сохранения в Jpg. Или сделать скриншот и данные залить сразу в переменную, тоже с подготовкой к сохранению как Jpg.
Уже нашел пример, но огромный сабака, сложно мне разобраться!
Может кто поопытней глянет:

http://www.vbstreets.ru/VB/Sources/66324.aspx

Я и сам буду смотреть! Есть там кое какие мысли, только сначало надо проверить!

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 26.11.2007 (Пн) 10:10

Человеческий глаз способен без дерганий воспринимать минимум 24 кадра в секунду. Сделай хотя бы половину - 12 скриншотов, хотя это будет пытка, все равно что кваку на 486м гонять, сохрани в jpeg и скопируй по сети. Можешь даже ужать в один архив, все равно он за секунду не проскочит. И это не учитывая время на кодирование-декодирование.

Возможно ближе к жизни была бы трансляция потокового видео, но это будет жестокая нагрузка на сервер. Хотя со скриншотами нагрузка будет не меньше.
Лучший способ понять что-то самому — объяснить это другому.

sosed213
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 206
Зарегистрирован: 13.11.2007 (Вт) 21:19
Откуда: Омск

Сообщение sosed213 » 26.11.2007 (Пн) 15:42

По хорошому надо создать модуль для конвертирования буфера програмного принскрина в байтовую переменную. У меня 1280х800, файл скриншота весит 100кб, надо добиться минимального времени на кодирование, а по сетки со 100мб/с я думаю пройдёт все 24 и более кадров. Просто надо оптимизировать процесс кодирования!

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 26.11.2007 (Пн) 16:21

Ну не хочет внять голосу здравого смысла. :?
По хорошому надо создать модуль для конвертирования буфера програмного принскрина в байтовую переменную.

Оптимизируй на здоровье:
Код: Выделить всё
Private Declare Function CLSIDFromString Lib "ole32" (ByVal lpsz As Any, pclsid As GUID) As Long
Private Declare Function CreateStreamOnHGlobal Lib "ole32" (ByVal hGlobal As Long, ByVal fDeleteOnRelease As Long, ppstm As Any) As Long
Private Declare Function OleLoadPicture Lib "olepro32" (pStream As Any, ByVal lSize As Long, ByVal fRunmode As Long, riid As GUID, ppvObj As Any) As Long
Private Declare Function GlobalAlloc Lib "kernel32" (ByVal uFlags As Long, ByVal dwBytes As Long) As Long
Private Declare Function GlobalLock Lib "kernel32" (ByVal hMem As Long) As Long
Private Declare Function GlobalUnlock Lib "kernel32" (ByVal hMem As Long) As Long
Private Declare Function GlobalSize Lib "kernel32" (ByVal hMem As Long) As Long
Private Declare Function GetHGlobalFromStream Lib "ole32" (ByVal pstm As IStream, phglobal As Long) As Long
Private Declare Function GlobalFree Lib "kernel32" (ByVal hMem As Long) As Long

Private Declare Sub MoveMemory Lib "kernel32" Alias "RtlMoveMemory" (pDest As Any, pSource As Any, ByVal dwLength As Long)

Private Type GUID    ' 16 bytes (128 bits)
  dwData1 As Long      ' 4 bytes
  wData2 As Integer     ' 2 bytes
  wData3 As Integer     ' 2 bytes
  abData4(7) As Byte   ' 8 bytes, zero based
End Type

Private Type PictureHeader
   Magic As Long
   Size As Long
End Type
Private Const GMEM_FIXED = &H0
Private Const GMEM_MOVEABLE = &H2
Private Const sIID_IPicture = "{7BF80980-BF32-101A-8BBB-00AA00300CAB}"
Const S_OK = 0

Public Function PictureFromBits(abPic() As Byte) As IPicture  ' not a StdPicture!!
Dim nLow As Long
Dim cbMem  As Long
Dim lpMem  As Long
Dim IID_IPicture As GUID
Dim istm As stdole.IUnknown '  IStream
Dim ipic As IPicture
    On Error GoTo Out
    nLow = LBound(abPic)
    On Error GoTo 0
    cbMem = (UBound(abPic) - nLow) + 1
    lpMem = GlobalAlloc(0, cbMem)
    MoveMemory ByVal lpMem, abPic(nLow), cbMem
    CreateStreamOnHGlobal lpMem, 1, istm
    CLSIDFromString StrPtr(sIID_IPicture), IID_IPicture
    OleLoadPicture ByVal ObjPtr(istm), cbMem, 0, IID_IPicture, PictureFromBits
    GlobalFree lpMem
Out:
End Function

Public Sub PictureToBits(ByVal oObj As StdPicture, aBytes() As Byte)
Dim oIPS As IPersistStream
Dim oStream As IStream, hGlobal As Long, lPtr As Long
Dim lSize As Long, Hdr As PictureHeader
Dim lRes As Long
    Set oIPS = oObj
    CreateStreamOnHGlobal 0, True, oStream
    oIPS.Save oStream, True
    GetHGlobalFromStream oStream, hGlobal
    lSize = GlobalSize(hGlobal)
    lPtr = GlobalLock(hGlobal)
    lSize = lSize - Len(Hdr)
    ReDim aBytes(0 To lSize - 1)
    MoveMemory aBytes(0), ByVal lPtr + Len(Hdr), lSize
    GlobalUnlock hGlobal
    Set oStream = Nothing
End Sub

Public Sub WriteFile(path As String, r() As Byte)
    Open path For Binary As #1
    Put #1, , r
    Close #1
End Sub

Private Sub Form_Load()
Dim x() As Byte
Dim pic As StdPicture
    Set pic = Clipboard.GetData
    PictureToBits pic, x
    WriteFile "c:\1.bmp", x
End Sub
Лучший способ понять что-то самому — объяснить это другому.

sosed213
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 206
Зарегистрирован: 13.11.2007 (Вт) 21:19
Откуда: Омск

Сообщение sosed213 » 26.11.2007 (Пн) 17:39

Что то код на первый взгляд не рабочий! Ругается на GetHGlobalFromStream, потом на oIPS As IPersistStream. Может ему stg.tlb надо? Если да то где его взять или можно ли без него?
Не могу сказать что знаю все, но и за дурака прошу меня не считать.

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 26.11.2007 (Пн) 17:51

Совсем авторы обленились, даже гугльнуть в лом :(
Вложения
STG.rar
(11.55 Кб) Скачиваний: 209
Лучший способ понять что-то самому — объяснить это другому.

sosed213
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 206
Зарегистрирован: 13.11.2007 (Вт) 21:19
Откуда: Омск

Сообщение sosed213 » 26.11.2007 (Пн) 17:55

Antonariy писал(а):Совсем авторы обленились, даже гугльнуть в лом :(


Не лень, просто уже голова кипит! И темболее я до этого искал в гугл.
Не могу сказать что знаю все, но и за дурака прошу меня не считать.

sosed213
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 206
Зарегистрирован: 13.11.2007 (Вт) 21:19
Откуда: Омск

Сообщение sosed213 » 26.11.2007 (Пн) 17:57

Всёравно спасибо! Скажи а после компилирования STG.tlb с собой надобудет тоскать?
Не могу сказать что знаю все, но и за дурака прошу меня не считать.

sosed213
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 206
Зарегистрирован: 13.11.2007 (Вт) 21:19
Откуда: Омск

Сообщение sosed213 » 26.11.2007 (Пн) 18:06

Antonariy писал(а):Оптимизируй на здоровье:


Сложно что то сделать когда вся начинка хранится в STG.tlb...
А нельзя ли пооткровеннее?
Не могу сказать что знаю все, но и за дурака прошу меня не считать.

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 26.11.2007 (Пн) 18:08

Нет
Изображение

sosed213
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 206
Зарегистрирован: 13.11.2007 (Вт) 21:19
Откуда: Омск

Сообщение sosed213 » 26.11.2007 (Пн) 18:12

почему нет!? Должен же быть способ! Это ведь всеволиш алгоритм сжатия в Jpeg!
Не могу сказать что знаю все, но и за дурака прошу меня не считать.

След.

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

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

Сейчас этот форум просматривают: AhrefsBot и гости: 28

    TopList