Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Как зделать скриншот? Добавлено: 26.04.04 03:41  

Автор вопроса:  Griz | Web-сайт: hmb.h11.ru | ICQ: 669258 
Как зделать скриншот средствами ВБ или АПИ и сохранить в файле?

Ответить

  Ответы Всего ответов: 13  

Номер ответа: 1
Автор ответа:
 .::EclipsE::.



ICQ: 208952501 

Вопросов: 22
Ответов: 85
 Профиль | | #1 Добавлено: 26.04.04 11:38

'Этот вопрос уже задавали.

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 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

 

Public Sub GetScreen(m_Form As Form)
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

Private Sub Form_Load()
    GetScreen Me
End Sub

'Если делаешь целый проект, а не просто снятие скришота :)
'Лутьше всего эту форму сделай только для скриншота (больше не для чего не используй!)
'
'Когда вызываешь процедуру GetScreen с другоы формы, слово Ме замени на имя этой формы (frmScreenShot)

 

Ответить

Номер ответа: 2
Автор ответа:
 dNW



Вопросов: 30
Ответов: 683
 Профиль | | #2 Добавлено: 26.04.04 17:46

А зачем так много? 

 

Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal _
   bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Private Const VK_SNAPSHOT = &H2C

 

keybd_event VK_SNAPSHOT, 0, 0, 0

Image1.Picture = Clipboard.GetData(vbCFBitmap)

SavePicture Image1.Picture, "c:\1.bmp"


Ответить

Номер ответа: 3
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #3
Добавлено: 26.04.04 17:51

API + VB = BitBlt & vba.SavePicture (Пример кода выше) - рулит. А на счет - зачем так много - буфер обмена использовать криво!!! А если у пользователя какой-нить важный текст из документа вырезан !?

Ответить

Номер ответа: 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-сайт: hw.t-k.ru
 Профиль | | #5
Добавлено: 26.04.04 22:50

:) Не обижайся, я попросту высказал свое мнение, и никоим образом не претендую на то, чтобы меня услышали, а насчет моей замедленной реакции - возможно пропустил, возможно с нетом тогда напряги были, А ВОЗМОЖНО У МЕНЯ СЕССИЯ БЫЛА... даже не знаю что и ответить :) вероятно всего по немножку... Могу и туда отписать :D

Ответить

Номер ответа: 6
Автор ответа:
 dNW



Вопросов: 30
Ответов: 683
 Профиль | | #6 Добавлено: 27.04.04 11:32

Да ладно! Я ведь тоже не наезжаю! 

Слушай! А разве нельзя все, что есть в буффере вытащить. Сделать скриншот,сохранить и обратно этот текст туда всунуть?

Ответить

Номер ответа: 7
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #7
Добавлено: 27.04.04 18:48

Конечно можно, но я не уверен что VB может сохранить любые данные, т.о. все равно прийдется работать через АПИ, и код будет, я думаю, еще большим... Да и зачем использовать системный ресурс ?

Ответить

Номер ответа: 8
Автор ответа:
 Matrix



Вопросов: 34
Ответов: 62
 Web-сайт: delta-net.narod.ru
 Профиль | | #8
Добавлено: 03.05.04 21:27
А случайно никто не знает как можно скриншот сразу в jpg сжать???

Ответить

Номер ответа: 9
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #9
Добавлено: 03.05.04 23:03

Сразу - понятие неопределенное :) VB сам не может сохранять в JPG формат, но если к VB подключить голову (можно и чужую в виде dll), то можно и в JPG сохранить...

Ответить

Номер ответа: 10
Автор ответа:
 Matrix



Вопросов: 34
Ответов: 62
 Web-сайт: delta-net.narod.ru
 Профиль | | #10
Добавлено: 03.05.04 23:32
А ссылку на голову никто не видел ?

Ответить

Номер ответа: 11
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #11
Добавлено: 04.05.04 13:07

Ссылку не встречал, а вот намылить могу...

Ответить

Номер ответа: 12
Автор ответа:
 Matrix



Вопросов: 34
Ответов: 62
 Web-сайт: delta-net.narod.ru
 Профиль | | #12
Добавлено: 04.05.04 22:30
2 sne OK!

Ответить

Номер ответа: 13
Автор ответа:
 Fallout



Вопросов: 10
Ответов: 387
 Web-сайт: mudator.by.ru
 Профиль | | #13
Добавлено: 05.05.04 07:55

GetDC(0) - декстоп +) дешево и сердито +)

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам