Страница: 1 |
'Этот вопрос уже задавали. 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 Sub GetScreen(m_Form As Form) Private Sub Form_Load() 'Если делаешь целый проект, а не просто снятие скришота А зачем так много? Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal _ keybd_event VK_SNAPSHOT, 0, 0, 0 Image1.Picture = Clipboard.GetData(vbCFBitmap) API + VB = BitBlt & vba.SavePicture (Пример кода выше) - рулит. А на счет - зачем так много - буфер обмена использовать криво!!! А если у пользователя какой-нить важный текст из документа вырезан !? Не обижайся, я попросту высказал свое мнение, и никоим образом не претендую на то, чтобы меня услышали, а насчет моей замедленной реакции - возможно пропустил, возможно с нетом тогда напряги были, А ВОЗМОЖНО У МЕНЯ СЕССИЯ БЫЛА... даже не знаю что и ответить вероятно всего по немножку... Могу и туда отписать :D Да ладно! Я ведь тоже не наезжаю! Слушай! А разве нельзя все, что есть в буффере вытащить. Сделать скриншот,сохранить и обратно этот текст туда всунуть? Конечно можно, но я не уверен что VB может сохранить любые данные, т.о. все равно прийдется работать через АПИ, и код будет, я думаю, еще большим... Да и зачем использовать системный ресурс ? Сразу - понятие неопределенное VB сам не может сохранять в JPG формат, но если к VB подключить голову (можно и чужую в виде dll), то можно и в JPG сохранить... Ссылку не встречал, а вот намылить могу... GetDC(0) - декстоп +) дешево и сердито +) Страница: 1 |
Вопрос: Как зделать скриншот?
Добавлено: 26.04.04 03:41
Автор вопроса: Griz | Web-сайт:
Как зделать скриншот средствами ВБ или АПИ и сохранить в файле?
Ответы
Всего ответов: 13
Номер ответа: 1
Автор ответа:
.::EclipsE::.
ICQ: 208952501
Вопросов: 22
Ответов: 85
Профиль | | #1
Добавлено: 26.04.04 11:38
Public Declare Function GetDesktopWindow Lib "user32" () As Long
Public Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
Public Declare Function ReleaseDC Lib "user32" (ByVal hwnd As Long, ByVal hdc As Long) As Long
Dim XSrc As Long, YSrc As Long
Dim dwRop As Long, hwndSrc As Long, hSrcDC As Long
m_Form.ScaleMode = vbPixels
m_Form.Move 0, 0, Screen.Width + 1, Screen.Height + 1
dwRop = &HCC0020
hwndSrc = GetDesktopWindow()
hSrcDC = GetDC(hwndSrc)
Call BitBlt(m_Form.hdc, 0, 0, m_Form.ScaleWidth, m_Form.ScaleHeight, hSrcDC, 0, 0, dwRop)
Call ReleaseDC(hwndSrc, hSrcDC)
m_Form.Show
SavePicture Picture:=m_Form.Image, FileName:="c:\1.bmp"
Unload m_Form
End Sub
GetScreen Me
End Sub
'Лутьше всего эту форму сделай только для скриншота (больше не для чего не используй!)
'
'Когда вызываешь процедуру GetScreen с другоы формы, слово Ме замени на имя этой формы (frmScreenShot)
Номер ответа: 2
Автор ответа:
dNW
Вопросов: 30
Ответов: 683
Профиль | | #2
Добавлено: 26.04.04 17:46
bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Private Const VK_SNAPSHOT = &H2C
SavePicture Image1.Picture, "c:\1.bmp"
Номер ответа: 3
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #3
Добавлено: 26.04.04 17:51
Номер ответа: 4
Автор ответа:
dNW
Вопросов: 30
Ответов: 683
Профиль | | #4
Добавлено: 26.04.04 19:25
To sne : Этот способ я узнал от boevik'a - здесь http://www.vbnet.ru/forum/show.asp?id=35595 . Почему ты тогда не отреагировал?
Номер ответа: 5
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #5
Добавлено: 26.04.04 22:50
Номер ответа: 6
Автор ответа:
dNW
Вопросов: 30
Ответов: 683
Профиль | | #6
Добавлено: 27.04.04 11:32
Номер ответа: 7
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #7
Добавлено: 27.04.04 18:48
Номер ответа: 8
Автор ответа:
Matrix
Вопросов: 34
Ответов: 62
Web-сайт:
Профиль | | #8
Добавлено: 03.05.04 21:27
А случайно никто не знает как можно скриншот сразу в jpg сжать???
Номер ответа: 9
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #9
Добавлено: 03.05.04 23:03
Номер ответа: 10
Автор ответа:
Matrix
Вопросов: 34
Ответов: 62
Web-сайт:
Профиль | | #10
Добавлено: 03.05.04 23:32
Номер ответа: 11
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #11
Добавлено: 04.05.04 13:07
Номер ответа: 12
Автор ответа:
Matrix
Вопросов: 34
Ответов: 62
Web-сайт:
Профиль | | #12
Добавлено: 04.05.04 22:30
2 sne OK!
Номер ответа: 13
Автор ответа:
Fallout
Вопросов: 10
Ответов: 387
Web-сайт:
Профиль | | #13
Добавлено: 05.05.04 07:55