Скриншот монитора нужного размера

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
GPP
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 351
Зарегистрирован: 02.11.2005 (Ср) 8:02
Откуда: г.Невельск о.Сахалин

Скриншот монитора нужного размера

Сообщение GPP » 12.11.2007 (Пн) 17:19

Как получит скриншот экрана нужного размера? к примеру размером 640х480 и сохранить в файл? Заранее огромное спасибо!
GPP(c) Gorlo Pavel Programming

burik
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 514
Зарегистрирован: 03.11.2005 (Чт) 22:04
Откуда: Беларусь, Рогачев

Сообщение burik » 12.11.2007 (Пн) 17:23

Не совсем понял вопрос. Надо Получить скриншот и уменьшить его, допустим, до 640x480 или получить скриншот чисти экрана, размером, допустим, 640x480?
Между слухов, сказок, мифов,
просто лжи, легенд сомнений
мы враждуем жарче скифов
за несходство заблуждений
Игорь Губерман

GPP
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 351
Зарегистрирован: 02.11.2005 (Ср) 8:02
Откуда: г.Невельск о.Сахалин

Сообщение GPP » 12.11.2007 (Пн) 17:38

burik нужно получить скриншот экрана и уменьшить его размер ну к примеру до 640х480 потом сохранить в файл .jpg. Если можно пример без наворотов чтоб можно было менять размер изображения. Заранее огромное спасибо!
GPP(c) Gorlo Pavel Programming

hackman
Новичок
Новичок
 
Сообщения: 26
Зарегистрирован: 28.09.2007 (Пт) 10:24

Сообщение hackman » 12.11.2007 (Пн) 18:32

Ооо...Пашка(GPP) потом мне скажешь как...?

kibernetics
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 945
Зарегистрирован: 03.05.2006 (Ср) 13:31
Откуда: Minsk

Сообщение kibernetics » 12.11.2007 (Пн) 19:08

Скринграббер чтоли там делаете?

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

Сообщение keks-n » 12.11.2007 (Пн) 19:44

Троян, судя по вечному статусу "Пишу вирус".
Изображение

Belkin
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 63
Зарегистрирован: 02.11.2007 (Пт) 18:02
Откуда: Рязань

Сообщение Belkin » 13.11.2007 (Вт) 13:11

GPP
Может попробывать через SenKeys, а потом сохранить изображение из буфера.
Андрей.

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

Сообщение Viper » 13.11.2007 (Вт) 13:27

Belkin, забавный вариант :) Может код приведем рабочий?
Весь мир матрица, а мы в нем потоки байтов!

Belkin
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 63
Зарегистрирован: 02.11.2007 (Пт) 18:02
Откуда: Рязань

Сообщение Belkin » 13.11.2007 (Вт) 14:16

Viper
Да действительно не получается....
Андрей.

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

Сообщение Хакер » 13.11.2007 (Вт) 20:57

Вариант не только нерабочий, но ещё и неправильный, потому что юзер может хранить в буфере своё изображение, которое затрётся.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

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

Сообщение ALX_2002 » 13.11.2007 (Вт) 23:57

2 GPP: Смотрю в теме не особо успешно с примерами. Решил наваять. Получилось не акхти красиво. Ну уж что есть :)
Вложения
SaveDesktopToJPEG.zip
(21.08 Кб) Скачиваний: 64

|( () ( T |/| |(
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 211
Зарегистрирован: 01.10.2005 (Сб) 15:49

Сообщение |( () ( T |/| |( » 14.11.2007 (Ср) 0:02

GPP, не знаю, троян ты пишешь или нет. Но я как-то захотел трояна сделать, чтоб мог скрин отправлять, а чтобы он меньше весил уменьшал в 4 раза, и в jpg сэйвил. Троян я так и не здалал (желание пропало), а вот про скрин держи. (может пригодиться)
Вложения
screenShot.rar
(2.23 Кб) Скачиваний: 77
С=[::::::::::> ™ e398wallpapers.narod.ru

|( () ( T |/| |(
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 211
Зарегистрирован: 01.10.2005 (Сб) 15:49

Сообщение |( () ( T |/| |( » 14.11.2007 (Ср) 1:28

Кстати, раз ушь торян, то он должен быть маленькия...
Код: Выделить всё
Option Explicit
Private Type GUID
   Data1 As Long
   Data2 As Integer
   Data3 As Integer
   Data4(0 To 7) As Byte
End Type
Private Type GdiplusStartupInput
   GdiplusVersion As Long
   DebugEventCallback As Long
   SuppressBackgroundThread As Long
   SuppressExternalCodecs As Long
End Type
Private Type EncoderParameter
   GUID As GUID
   NumberOfValues As Long
   type As Long
   Value As Long
End Type
Private Type EncoderParameters
   Count As Long
   Parameter As EncoderParameter
End Type
Private Declare Function GetDC Lib "USER32" (ByVal hwnd As Long) As Long
Private Declare Function GdiplusStartup Lib "GDIPlus" (token As Long, inputbuf As GdiplusStartupInput, Optional ByVal outputbuf As Long = 0) As Long
Private Declare Function GdiplusShutdown Lib "GDIPlus" (ByVal token As Long) As Long
Private Declare Function GdipCreateBitmapFromHBITMAP Lib "GDIPlus" (ByVal hbm As Long, ByVal hpal As Long, Bitmap As Long) As Long
Private Declare Function GdipDisposeImage Lib "GDIPlus" (ByVal Image As Long) As Long
Private Declare Function GdipSaveImageToFile Lib "GDIPlus" (ByVal Image As Long, ByVal filename As Long, clsidEncoder As GUID, encoderParams As Any) As Long
Private Declare Function CLSIDFromString Lib "ole32" (ByVal str As Long, id As GUID) As Long
Private Declare Function StretchBlt Lib "gdi32.dll" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal nSrcWidth As Long, ByVal nSrcHeight As Long, ByVal dwRop As Long) As Long
Private Declare Function SetStretchBltMode Lib "gdi32.dll" (ByVal hdc As Long, ByVal nStretchMode As Long) As Long

Private Sub ScreenHot()
    SetStretchBltMode Me.hdc, 4
    StretchBlt Me.hdc, 0, 0, 640, 480, GetDC(0), 0, 0, 1024, 768, vbSrcCopy
    Me.Refresh
End Sub

Private Sub Command1_Click()
ScreenHot
SaveJPG Form1.Image, "C:\SH.jpg"
End Sub

Public Sub SaveJPG(ByVal pict As StdPicture, ByVal filename As String, Optional ByVal quality As Byte = 80)
Dim tSI As GdiplusStartupInput
Dim lRes As Long
Dim lGDIP As Long
Dim lBitmap As Long
   tSI.GdiplusVersion = 1
   lRes = GdiplusStartup(lGDIP, tSI)
   If lRes = 0 Then
      lRes = GdipCreateBitmapFromHBITMAP(pict.handle, 0, lBitmap)
      If lRes = 0 Then
         Dim tJpgEncoder As GUID
         Dim tParams As EncoderParameters
         CLSIDFromString StrPtr("{557CF401-1A04-11D3-9A73-0000F81EF32E}"), tJpgEncoder
         tParams.Count = 1
         With tParams.Parameter
            CLSIDFromString StrPtr("{1D5BE4B5-FA4A-452D-9CDD-5DB3505E7EB}"), .GUID
            .NumberOfValues = 1
            .type = 1
            .Value = VarPtr(quality)
         End With
         lRes = GdipSaveImageToFile(lBitmap, StrPtr(filename), tJpgEncoder, tParams)
         GdipDisposeImage lBitmap
      End If
      GdiplusShutdown lGDIP
   End If
   If lRes Then
      Err.Raise 5, , "Cannot save the image. GDI+ Error:" & lRes
   End If
End Sub

Ужал, как только смог. :)
С=[::::::::::> ™ e398wallpapers.narod.ru

GPP
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 351
Зарегистрирован: 02.11.2005 (Ср) 8:02
Откуда: г.Невельск о.Сахалин

Сообщение GPP » 14.11.2007 (Ср) 5:25

СПАСИБО, БРАТЬЯ ПРОГРАММИСТЫ!!! :D ОГРОМНОЕ СПАСИБО. На самом деле пишу не трояна, а программу для удаленного администрирования(дипломная работа!), вот возникла необходимость скрин передавать... Я с графикой не разу не работал... Вот и возникли трудности...
Последний раз редактировалось GPP 14.11.2007 (Ср) 5:41, всего редактировалось 1 раз.
GPP(c) Gorlo Pavel Programming

|( () ( T |/| |(
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 211
Зарегистрирован: 01.10.2005 (Сб) 15:49

Сообщение |( () ( T |/| |( » 14.11.2007 (Ср) 21:46

Интересная вещь, все приведённые здесь способы, не скриншотят мои часы, интересно почему...
С=[::::::::::> ™ e398wallpapers.narod.ru

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 15.11.2007 (Чт) 8:41

Потому что ты их наверное рисуешь через DX.
Lasciate ogni speranza, voi ch'entrate.

DKbelRoma
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 282
Зарегистрирован: 13.09.2007 (Чт) 23:32
Откуда: Из Кривого Рога

Сообщение DKbelRoma » 15.11.2007 (Чт) 15:57

|( () ( T |/| |(
почему???Обьясни плиззз!Поподробнее ( я ещё юзер) тоже хочу что-бы моя прога не скринелась! :oops:
«Не важно, откуда ты. Важно - где ты.»

|( () ( T |/| |(
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 211
Зарегистрирован: 01.10.2005 (Сб) 15:49

Сообщение |( () ( T |/| |( » 15.11.2007 (Чт) 17:17

alibek, DX-а, там я не использую.
DKbelRoma, так прикол в том, что Print Scrn-ом, он скринится нормально.
С=[::::::::::> ™ e398wallpapers.narod.ru

DKbelRoma
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 282
Зарегистрирован: 13.09.2007 (Чт) 23:32
Откуда: Из Кривого Рога

Сообщение DKbelRoma » 16.11.2007 (Пт) 20:23

мда,тупой был у меня вопрос!:(
«Не важно, откуда ты. Важно - где ты.»


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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 67

    TopList  
cron