Este artigo demonstra como programaticamente copiar a janela ativa ou a tela inteira para a área de transferência e imprimir a imagem.Este artigo mostra como capturar qualquer formulário ou janela, incluindo a tela e colocá-lo em um objeto de imagem do Visual Basic.Se o único requisito for copiar a tela ou janela ativa para a área de transferência, chamar a API keybd_event teremos a mesma funcionalidade que combinação das teclas [ALT] + [PRINTSCRN] (copiar a janela ativa para a área de transferência) ou [PRINTSCRN] (copiar a tela para a área de transferência). Se também precisas imprimir a imagem, um controle PictureBox oculto pode fornecer essa funcionalidade.Passo a passo1 - Inicie um novo projeto Visual Basic Standard EXE. O Form1 é criado por padrão.2 - Adicione três CommandButtons e um controle PictureBox ao Form1.3 - Adicione o seguinte código na seção General Declarations do Form1:Option ExplicitPrivate Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal _bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)Private Declare Function GetVersionExA Lib "kernel32" _(lpVersionInformation As OSVERSIONINFO) As IntegerPrivate Type OSVERSIONINFOdwOSVersionInfoSize As LongdwMajorVersion As LongdwMinorVersion As LongdwBuildNumber As LongdwPlatformId As LongszCSDVersion As String * 128End TypePrivate Const KEYEVENTF_KEYUP = &H2Private Const VK_SNAPSHOT = &H2CPrivate Const VK_MENU = &H12Dim blnAboveVer4 As BooleanPrivate Sub Command1_Click()If blnAboveVer4 Thenkeybd_event VK_SNAPSHOT, 0, 0, 0Elsekeybd_event VK_SNAPSHOT, 1, 0, 0End IfEnd SubPrivate Sub Command2_Click()If blnAboveVer4 Thenkeybd_event VK_SNAPSHOT, 1, 0, 0Elsekeybd_event VK_MENU, 0, 0, 0keybd_event VK_SNAPSHOT, 0, 0, 0keybd_event VK_SNAPSHOT, 0, KEYEVENTF_KEYUP, 0keybd_event VK_MENU, 0, KEYEVENTF_KEYUP, 0End IfEnd SubPrivate Sub Command3_Click()' Load the captured image into a PictureBox and print itLet Picture1.Picture = Clipboard.GetData()Printer.PaintPicture Picture1.Picture, 0, 0Printer.EndDocEnd SubPrivate Sub Form_Load()Dim osinfo As OSVERSIONINFODim retvalue As IntegerLet osinfo.dwOSVersionInfoSize = 148Let osinfo.szCSDVersion = Space$(128)Let retvalue = GetVersionExA(osinfo)If osinfo.dwMajorVersion > 4 Then blnAboveVer4 = TrueLet Picture1.Visible = FalseLet Command1.Caption = "Print Screen"Let Command2.Caption = "Alt+Print Screen"Let Command3.Caption = "Print Image"End Sub4 - Abrir o Microsoft Paint e execute o projeto.5 - Clique no botão Print Screen , alterne para o Paint e pressione CTRL+V para colar o conteúdo da área de transferência no Paint. A tela inteira é colada.6 - Clique no botão ALT + PRINT SCREEN , alterne para Paint como antes e pressione CTRL+V novamente. Somente a janela ativa é colada.7 - Clique no botão Imprimir imagem e a imagem capturada imprimirá (usando um PictureBox oculto).
Reference::161299 Como captura e a tela, um formulário ou qualquer janela de impressão
189249 Como determinar qual versão do Windows de 32 bits está sendo usado
230502 How To Print a Form That is Too Large for the Screen or Page
178076 How To Use a PictureBox to Control Orientation Printing a Form
194580 How To Print a Composite Image From a RichTextBox146022 How To Set Up the RichTextBox Control for WYSIWYG Printing
Tags: VBA, Access, transferência, clipboard, API, keybd_event, PRINTSCRN, PictureBox, ALT,
Propósito
✔ Programação GLOBAL® - Quaisquer soluções e/ou desenvolvimento de aplicações pessoais, ou da empresa, que não constem neste Blog devem ser tratados como consultoria freelance. Queiram contatar-nos: brazilsalesforceeffectiveness@gmail.com | ESTE BLOG NÃO SE RESPONSABILIZA POR QUAISQUER DANOS PROVENIENTES DO USO DOS CÓDIGOS AQUI POSTADOS EM APLICAÇÕES PESSOAIS OU DE TERCEIROS.
Meni
.: Vitrine
Carregando artigos...
Views
Mostrando postagens com marcador Clipboard. Mostrar todas as postagens
Mostrando postagens com marcador Clipboard. Mostrar todas as postagens
Access VBA - Como copiar a tela ou janela para a área de transferência a partir do Visual Basic - How To Capture and Print the Screen, a Form, or Any Window
VBA Tip - Como utilizar a memória RAM - Using Clipboard, RAM Memory
Pois é,
Todos usamos muito a famosa funcionalidade CTRL + C e CTRL + V. Sim o copy/paste é muito útil e porque não dizer, indispensável. Mas como podemos implementar essa funcionalidade dentro das nossas aplicações MS Office?
How to Use the Office Clipboard in VBA
How to Copy From the Clipboard in Excel Using VBA
How to Cut & Paste From the Clipboard in Excel VBA
Em que momento desejarei utilizar essa funcionalidade nas minhas aplicações? Através do VBA, é possível, por exemplo, recuperarmos quaisquer informações que estiverem na Área de Transferência, utilizando-as em nossas aplicações, ou podemos fazer o caminho inverso e disponibilizar o resultado de certo processamento para a área de transferência.
Sub PutInRAM () Dim nOBJ As MSForms.DataObject Set dtOBJ = New MSForms.DataObject Dim n As String
Let n = "Bernardes"
dtOBJ.SetText s dtOBJ.PutInClipboard
End Sub
Sub GetInRam () Dim dtOBJ As MSForms.DataObject Dim n As String Set dtOBJ = New MSForms.DataObject dtOBJ.GetFromClipboard Let n = dtOBJ.GetText MsgBox n
End Sub
' Compatibilizando as versões do MS Office
#If VBA7 Then
Public Declare PtrSafe Function OpenClipboard Lib "user32" (ByVal hwnd As LongPtr) As Long
Public Declare PtrSafe Function EmptyClipboard Lib "user32" () As Long
Public Declare PtrSafe Function CloseClipboard Lib "user32" () As Long
#Else
Public Declare Function OpenClipboard Lib "user32" (ByVal hwnd As Long) As Long
Public Declare Function EmptyClipboard Lib "user32" () As Long
Public Declare Function CloseClipboard Lib "user32" () As Long
#End If
Sub EmptyInRAM()
OpenClipboard (0&)
EmptyClipboard
CloseClipboard
End Sub
Referência: Ambiente Office
André Luiz Bernardes
A&A® - Work smart, not hard.
Skype: inanyplace
Assinar:
Postagens (Atom)
