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

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

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

В stg нет никакой начинки, только описание интерфейса IStream. Весь функционал у тебя перед глазами. Таскать ее после компиляции не надо.

Пилите, Шура, пилите. :)
Лучший способ понять что-то самому — объяснить это другому.

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

Сообщение tyomitch » 26.11.2007 (Пн) 21:36

sosed213 писал(а):Сложно что то сделать когда вся начинка хранится в STG.tlb...

Там только объявления.

За скомпилированной прогой его таскать не нужно.

Только ты всё равно в тупик идёшь.
Изображение

Lumen
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 841
Зарегистрирован: 03.12.2005 (Сб) 16:09
Откуда: Брянск

Сообщение Lumen » 27.11.2007 (Вт) 0:34

А ведь в JPEG можно конвертнуть используя GDI+. В FAQ есть пример
Подпись проходит рефакторинг

CodeName33
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 297
Зарегистрирован: 01.09.2004 (Ср) 13:25
Откуда: SPb

Сообщение CodeName33 » 27.11.2007 (Вт) 10:48

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

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


Я, в своё время, использовал формат LDF (это что-то близое к DjVu). Скриншот получался килобайт на 30-40 и текст на нём был прекрасно читаем, но всё это не бесплатно...
Программисты не глючат - глючат компиляторы...

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

Сообщение sosed213 » 27.11.2007 (Вт) 19:40

tyomitch писал(а):Только ты всё равно в тупик идёшь.


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

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

Сообщение Antonariy » 27.11.2007 (Вт) 20:31

Дело не в доверии, а в том, что мы этот путь так или иначе прошли до конца, постучались разными частями тела в глухую стену и пошли обратно, предупреждая встречных, что там делать нечего. Люди, которым жалко своего времени, сразу поворачивают вспять, остальные прутся дальше, чтобы в лучшем случае нацарапать в тупике "Здесь был Вася".

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

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

Сообщение sosed213 » 27.11.2007 (Вт) 21:12

Стена твёрдая не спорю! Но если каждый начнет отковыривать по кирпичику то стена станет кучкой мусора позади наших путей!

В идеале должно быть так:


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

Private Declare Function CLSIDFromString Lib "ole32" (ByVal lpsz As Any, pclsid As GUID) As Long
Private Declare Function IsEqualGUID Lib "ole32" (rguid1 As GUID, rguid2 As GUID) As Boolean

Private Declare Sub MoveMemory Lib "kernel32" Alias "RtlMoveMemory" (pDest As Any, pSource As Any, ByVal dwLength As Long)
Private Declare Function CreateStreamOnHGlobal Lib "ole32" (ByVal hGlobal As Long, ByVal fDeleteOnRelease As Long, ppstm As Any) As Long

'Private Const GMEM_FIXED = &H0
Private Declare Function GlobalAlloc Lib "kernel32" (ByVal uFlags As Long, ByVal dwBytes As Long) As Long
Private Declare Function GlobalFree Lib "kernel32" (ByVal hMem As Long) 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 Declare Function OleLoadPicture Lib "olepro32" (pStream As Any, ByVal lSize As Long, ByVal fRunmode As Long, riid As GUID, ppvObj As Any) As Long

Public Function PictureFromBits(abPic() As Byte) As IPicture  ' not a StdPicture!!
    Const sIID_IPicture = "{7BF80980-BF32-101A-8BBB-00AA00300CAB}"
    Const S_OK = 0     ' indicates successful HRESULT
   
    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
   
    ' Get the size of the picture's bits
    On Error GoTo Out
    nLow = LBound(abPic)
    On Error GoTo 0
    cbMem = (UBound(abPic) - nLow) + 1
 
    ' Allocate a global memory object
    lpMem = GlobalAlloc(0, cbMem)
    If lpMem Then
            ' Copy the picture bits to the memory pointer
            MoveMemory ByVal lpMem, abPic(nLow), cbMem
            ' Create an ISteam from the pictures bits (we can explicitly free hMem
            ' below, but we'll have the call do it here...)
            If (CreateStreamOnHGlobal(lpMem, 1, istm) = S_OK) Then
                If (CLSIDFromString(StrPtr(sIID_IPicture), IID_IPicture) = S_OK) Then
                    ' Create an IPicture from the IStream (the docs say the call does not
                    ' AddRef its last param, but it looks like the reference counts are correct..)
                    OleLoadPicture ByVal ObjPtr(istm), cbMem, 0, IID_IPicture, PictureFromBits
                End If   ' CLSIDFromString
            End If   ' CreateStreamOnHGlobal
    End If   ' lpMem
    GlobalFree lpMem
   
Out:
End Function




Private Sub Command1_Click()

  Dim bByte() as Byte
  Dim x as Integer

  Call ScreenShootToArray (bByte(), x)
 
  'Сделать скриншот и зжав его загнать в массив
  'X - степень сжатия (типо 4, 8, 16, 24 и 32 бита)
  '

  Picture1.Picture = PictureFromBits(TheBytes())

End Sub



На писать отдельный модуль с основной функцией ScreenShootToArray.
Не могу сказать что знаю все, но и за дурака прошу меня не считать.

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

Сообщение sosed213 » 29.11.2007 (Чт) 16:22

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

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

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

sosed213
Ты похож на строителя вечного двигателя. Который тоже пробивает стену.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

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

Сообщение Antonariy » 30.11.2007 (Пт) 9:07

- Доктор, мы его теряем!!!
- Без паники!! Дифибриллятор! Разряд!
БДЫЩЩЩ!
- Доктор, я в него потыкала, он не шевелится!..
- Эээ, извините, что отрываю, друзья и роственники справляются о результатах...
- Кто впустил? Еще рано что либо сообщать! Вы что, не видите, я тружусь в поте лица? Сестра, дайте спирт. Себе тоже.
- Ик.. Дифибрллятр?
- Нне, мне не надо. Ааа! Ну да.
БДЫЩЩЩ!
Который тоже пробивает стену.
И не знает, что стена эта - часть скального массива Гималаев.
Лучший способ понять что-то самому — объяснить это другому.

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 30.11.2007 (Пт) 11:12

sosed213, дабы не долбиться в стену вернись сюда и прочитай заново оттуда и до обеда (наличие бубна в руках и пялски вокруг горящего костра, равно ак и настой из мухоморов необязательны).
Весь мир матрица, а мы в нем потоки байтов!

|kerish|
Постоялец
Постоялец
 
Сообщения: 831
Зарегистрирован: 22.10.2004 (Пт) 0:31

Сообщение |kerish| » 25.03.2008 (Вт) 15:44

Всё, автор дошел до стены :)

Пред.

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

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

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

    TopList