Скриншот

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

Скриншот

Сообщение GPP » 11.02.2006 (Сб) 15:15

Как сделать скриншот экрана и сохранить его в формате jpg с расширением 320X240? За ранее спасибо!

P.S: Поиск по фору нечего не дал...
GPP(c) Gorlo Pavel Programming

Kovu
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 924
Зарегистрирован: 29.04.2005 (Пт) 17:38

Сообщение Kovu » 11.02.2006 (Сб) 15:22

GPP
Ключевые слова GDI+, конкретней GdipLoadImage, GdipSaveImage :)
Если всё делать своими ручками, они скоро отвалятся !

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

Сообщение GPP » 11.02.2006 (Сб) 16:58

А проще можно?
GPP(c) Gorlo Pavel Programming

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

Сообщение tyomitch » 11.02.2006 (Сб) 17:28

Можно через мою обёртку =)
Изображение

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

Сообщение GPP » 11.02.2006 (Сб) 17:37

'module

Public Declare Function GetDesktopWindow Lib "user32" () As Long
Public Declare Function GetDC Lib "user32" (ByVal hWnd As Long) As Long
Public Declare Function BitBlt Lib "gdi32" _
(ByVal hDestDC 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 dwRop As Long) As Long
Public Const SRCCOPY = &HCC0020
'end module


Private Sub Form_Load()
Dim hDesk, hDeskDC
Dim filename As String
filename = "C:\1.jpg"
hDesk = GetDesktopWindow()
hDeskDC = GetDC(hDesk)
BitBlt Picture1.hDC, 0, 0, Width, Height, hDeskDC, 0, 0, SRCCOPY

SavePicture Picture1.Picture, filename
End Sub


Выдает "Invalid property value". Почему не сохраняет?
GPP(c) Gorlo Pavel Programming

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

Сообщение GPP » 11.02.2006 (Сб) 17:40

Вообщем проблема такая. Надо сделать программу которая делает фото экрана и сохраняет его с расширением 320x240 и отправляет его клиенту. Не могу в поисковике найти? Странно, когда-то находил. Поможите чем можете.
GPP(c) Gorlo Pavel Programming

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

Сообщение GPP » 11.02.2006 (Сб) 17:45

РАзобрался! Надо Picture1.Image. Блин, а как сохранить его в разрешении 320х240 или в любом другом, чтоб меньше весил. Ухудшить качество или как-то еще... Как его у меньшить? За ранее огромное спасибо.
GPP(c) Gorlo Pavel Programming

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

Сообщение tyomitch » 11.02.2006 (Сб) 18:05

GPP, мою обёртку посмотрел? ;-)
Она и масштабировать умеет, и в JPEG сохранять с любым качеством.
Изображение

EvilCoder
Посланец джихада
Посланец джихада
Аватара пользователя
 
Сообщения: 706
Зарегистрирован: 25.01.2004 (Вс) 15:08

Сообщение EvilCoder » 11.02.2006 (Сб) 19:52

Ууух!! Трояна делаем :-) ... Правельно! Так Держать!! :lol:
<<------- EvilCoder ------->>

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

Сообщение Amed » 11.02.2006 (Сб) 19:59

По поводу трояна консультации к d3drm :)
Он делал, даже работающий :)

Денис Победря
Мегобойанист
Мегобойанист
 
Сообщения: 1037
Зарегистрирован: 03.01.2005 (Пн) 21:29
Откуда: Из Москвы

Сообщение Денис Победря » 11.02.2006 (Сб) 21:08

Сам троянчика собирался делать одному г :oops: Ну вообщем желания не до хватило
[Место cдаётся]

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 11.02.2006 (Сб) 22:10

tyomitch писал(а):Можно через мою обёртку =)


И что ты так открыто рекламируешь обёртку? Даже начинает раздражать. :?
Не выношу GDIPlus.

2 GPP

Масштаб делать, надеюсь, умеешь - StretchBlt.
В остальном - см. архив.
Вложения
cJpeg.rar
(16.58 Кб) Скачиваний: 96
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

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

Сообщение tyomitch » 12.02.2006 (Вс) 0:39

BV писал(а):
tyomitch писал(а):Можно через мою обёртку =)


И что ты так открыто рекламируешь обёртку? Даже начинает раздражать. :?

ОИНЧ

BV писал(а):Не выношу GDIPlus.

я, собственно, не тебе предлагал...
Изображение

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

Сообщение GPP » 12.02.2006 (Вс) 5:56

К счастью не трояна. А программу удаленного администрирования. Бета версия можно скачать http://bbs.vbstreets.ru/viewtopic.php?t=22755. Вот захотел сделать функцию по получению скриншота.
GPP(c) Gorlo Pavel Programming

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

Сообщение GPP » 12.02.2006 (Вс) 5:57

BV, огромное спасибо. Только как пользоваться этим классом? Я дуб дубом... Классами некогда не пользьзовался...

tyomitch, ты лучше скажи где ее скачать?
GPP(c) Gorlo Pavel Programming

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

Сообщение GPP » 12.02.2006 (Вс) 8:55

Вообще кто-нибудь пробовал передавать скриншот от программы клиента к программе серверу по локальной сети? Два месяца в инете ищу! Нечего не нашел... Как быть? Может кто поможет?
GPP(c) Gorlo Pavel Programming

vvs_adm
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1492
Зарегистрирован: 03.02.2005 (Чт) 3:45
Откуда: оттуда ;)

Сообщение vvs_adm » 12.02.2006 (Вс) 8:58

GPP писал(а):Два месяца в инете ищу! Нечего не нашел...
:shock: Кошмар, ты, наверное, не там и не то и не тем способом искал :lol:
Никогда не откладывай на завтра то, что можно ... отложить на послезавтра!

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

Сообщение GPP » 12.02.2006 (Вс) 9:03

vvs_adm, серьезно! Даже сейчас ищу... Может есть исходничек.
GPP(c) Gorlo Pavel Programming

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

Сообщение tyomitch » 12.02.2006 (Вс) 10:21

GPP писал(а):tyomitch, ты лучше скажи где ее скачать?

http://mix.web.ur.ru/JPEG.zip
Подключать к проекту -- в Project -> References
Уменьшение картинки и сохранение в JPEG:
Код: Выделить всё
Dim b() As Byte
b = CreateBitmapFromPicture(Picture1.Picture).GetThumbnailImage(320, 240).SaveToJpegToMemoryVar(80)

После этого массив b() можно передавть винсоком, не сохраняя в промежуточный файл.
Изображение

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

Сообщение GPP » 12.02.2006 (Вс) 14:32

Как я понимаю этот массив передать по winsock TCP. И на приемнике записать все это в файл? Потом этот файл отобразить в Picture. Так?
GPP(c) Gorlo Pavel Programming

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 12.02.2006 (Вс) 15:05

GPP писал(а):BV, огромное спасибо. Только как пользоваться этим классом?


Тогда убери комментарий с последней функции.
После...

Код: Выделить всё
    Dim clsJPEG As New Jpeg
    Call clsJPEG.SaveToJpeg(picMain.hDc, 0, 0, picMain.Width, _
        picMain.Height, "C:\File.jpg", 80, False, False, "None")
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

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

Сообщение tyomitch » 12.02.2006 (Вс) 15:50

GPP писал(а):Как я понимаю этот массив передать по winsock TCP. И на приемнике записать все это в файл? Потом этот файл отобразить в Picture. Так?

На приёмнике тоже можно избежать использования промежуточного файла, если пользоваться моей обёрткой.
Загрузка изображения из b() в Picture1 выполняется так:
Код: Выделить всё
Set Picture1.Picture = CreateImageFromMemory(b())
Изображение

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

Сообщение GPP » 12.02.2006 (Вс) 17:12

tyomitch, то есть вот так будет выглядеть:

'------------------------------------------------------------
Dim b() as String
Winsock1.GetData b()
Set Picture1.Picture= CreateImageFromMemory(b())
'------------------------------------------------------------

Просто проверить сейчас нет возможности. :)

P.S:Огромное спасибо за помощь! Ты единственный кто мне хоть как-то помог.
:wink:
GPP(c) Gorlo Pavel Programming

EvilCoder
Посланец джихада
Посланец джихада
Аватара пользователя
 
Сообщения: 706
Зарегистрирован: 25.01.2004 (Вс) 15:08

Сообщение EvilCoder » 12.02.2006 (Вс) 19:06

Как вариант , перевод картины в ЧБ (градации серого) вот и линк на тему http://bbs.vbstreets.ru/viewtopic.php?p ... ght=#71680

Вот еще линк в тему 8) http://bbs.vbstreets.ru/viewtopic.php?p ... ght=#52632

Это тема обсуждалась уже много раз... след. раз ищи внимательнее..
<<------- EvilCoder ------->>

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

Сообщение Andrey Fedorov » 15.02.2006 (Ср) 8:14

GPP писал(а):РАзобрался! Надо Picture1.Image. Блин, а как сохранить его в разрешении 320х240 или в любом другом, чтоб меньше весил. Ухудшить качество или как-то еще... Как его у меньшить? За ранее огромное спасибо.


Зависит от содержимого экрана.
Обычный экран (без рисунков/фоток) лучше всего сохранять в PNG - не теряем качество и размер минимален. Если сохраняем экран с рисунками - то JPG.

P.S А откуда такой размер 320х240 - на PDA скриншоты выводить?
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...


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

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

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

    TopList