Создание скриншота

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

Создание скриншота

Сообщение Jedi » 16.07.2005 (Сб) 4:10

Как сделать скриншот средсвами VB. Тоесть какой API нужно воспользоваться, чтобы поместить скриншот в буфер обмена???
Да прибудет с вами сила!!!

FaKk2
El rebelde gurú
El rebelde gurú
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Сообщение FaKk2 » 16.07.2005 (Сб) 7:38

Jedi

Так VB или API?
Для получения ответа надо продемонстрировать качества, позволяющие стать компетентным — внимательность, вдумчивость, наблюдательность, желание активно участвовать в выработке решения.

JohnCR
Обычный пользователь
Обычный пользователь
 
Сообщения: 75
Зарегистрирован: 14.06.2005 (Вт) 19:03

Сообщение JohnCR » 16.07.2005 (Сб) 9:51

http://bbs.vbstreets.ru/download.php?id=2680 - посмотри это.
Чтобы снять весь экран, а не только активную форму убери оттуда ALT.

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

Сообщение tyomitch » 16.07.2005 (Сб) 14:54

JohnCR, твой метод портит содержимое буфера обмена. Совершенно зря.
Изображение

Jedi
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 16.07.2005 (Сб) 4:02

Сообщение Jedi » 16.07.2005 (Сб) 18:56

Ну или VB или API, но так чтобы работало...
Да прибудет с вами сила!!!

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

Сообщение tyomitch » 16.07.2005 (Сб) 23:26

Изображение

ism
Постоялец
Постоялец
 
Сообщения: 337
Зарегистрирован: 12.12.2001 (Ср) 12:59
Откуда: Russia, Saint-Petersburg

Сообщение ism » 17.07.2005 (Вс) 1:27

афтор темы писал(а):...чтобы поместить скриншот в буфер обмена

Код JohnCR, прекрасно подходит

Можно, конечно и в пичбокс, а потом скопировать из пичбокса в буфер

Arcanoid
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 162
Зарегистрирован: 01.01.2005 (Сб) 15:44

Сообщение Arcanoid » 17.07.2005 (Вс) 10:44

Общий подход такой:

hDesktopDC = GetDC(0) 'берём контекст десктопа
pixel_array = GetDIBits(hDesktopDC) 'получаем пиксели десктопа
global_mem = GlobalAlloc(pixel_array) 'copy(пиксели -> глобал. мемори)
EmptyClipboard() 'чистка буфера обмена (если надо)
SetClipboardData(CF_DIB, global_mem) 'заносим пиксели в буфер обм.
Invalid user or password...

Leo!!!
Новичок
Новичок
 
Сообщения: 26
Зарегистрирован: 19.07.2005 (Вт) 1:00

Сообщение Leo!!! » 23.07.2005 (Сб) 2:37

Можно вот так:
Declare Function GetDesktopWindow Lib "user32.dll" () As Long Declare Function GetDC Lib "user32.dll" (ByVal hWnd As Long) As Long Declare Function ReleaseDC Lib "user32.dll" _ (ByVal hWnd As Long, ByVal hDC As Long) As Long Declare Function BitBlt Lib "GDI32.dll" _ (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 SUB SaveScreen ScaleMode = vbPixels Move 0, 0, Screen.Width + 1, Screen.Height + 1 dwRop = &HCC0020 hwndSrc = GetDesktopWindow() hSrcDC = GetDC(hwndSrc) Call BitBlt(hDC, 0, 0, ScaleWidth, ScaleHeight, hSrcDC, 0, 0, dwRop) Call ReleaseDC(hwndSrc, hSrcDC) SavePicture frmSCREEN.Image, scrfile$ END SUB :)
Нет ничего невозможного, но возможное тожэ огграничена и при этом нестоит забывать что свои вазможнасти человек ограничивает сам!


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

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

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

    TopList