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.

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



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 passo
- Inicie um novo projeto Visual Basic Standard EXE. O Form1 é criado por padrão.

- Adicione três CommandButtons e um controle PictureBox ao Form1.

- Adicione o seguinte código na seção General Declarations do Form1:

Option Explicit

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

Private Type OSVERSIONINFO
   dwOSVersionInfoSize As Long
   dwMajorVersion As Long
   dwMinorVersion As Long
   dwBuildNumber As Long
   dwPlatformId As Long
   szCSDVersion As String * 128
End Type

Private Const KEYEVENTF_KEYUP = &H2
Private Const VK_SNAPSHOT = &H2C
Private Const VK_MENU = &H12

Dim blnAboveVer4 As Boolean

Private Sub Command1_Click()
   If blnAboveVer4 Then
keybd_event VK_SNAPSHOT, 0, 0, 0
   Else
keybd_event VK_SNAPSHOT, 1, 0, 0
   End If
End Sub

Private Sub Command2_Click()
   If blnAboveVer4 Then
keybd_event VK_SNAPSHOT, 1, 0, 0
   Else
keybd_event VK_MENU, 0, 0, 0
keybd_event VK_SNAPSHOT, 0, 0, 0
keybd_event VK_SNAPSHOT, 0, KEYEVENTF_KEYUP, 0
keybd_event VK_MENU, 0, KEYEVENTF_KEYUP, 0
   End If
End Sub

Private Sub Command3_Click()
   ' Load the captured image into a PictureBox and print it
    Let Picture1.Picture = Clipboard.GetData()
   Printer.PaintPicture Picture1.Picture, 0, 0
   Printer.EndDoc
End Sub

Private Sub Form_Load()
   Dim osinfo As OSVERSIONINFO
   Dim retvalue As Integer

    Let osinfo.dwOSVersionInfoSize = 148
    Let osinfo.szCSDVersion = Space$(128)
    Let retvalue = GetVersionExA(osinfo)

   If osinfo.dwMajorVersion > 4 Then blnAboveVer4 = True

    Let Picture1.Visible = False
    Let Command1.Caption = "Print Screen"
    Let Command2.Caption = "Alt+Print Screen"
    Let Command3.Caption = "Print Image"
End Sub

- Abrir o Microsoft Paint e execute o projeto.

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

- Clique no botão ALT + PRINT SCREEN , alterne para Paint como antes e pressione CTRL+V novamente. Somente a janela ativa é colada.
- 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 RichTextBox
146022  How To Set Up the RichTextBox Control for WYSIWYG Printing

Tags: VBA, Access, transferência, clipboard, API, keybd_event, PRINTSCRN, PictureBox, ALT,



Inline image 1

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

0338_pix_gemeos_copy_paste.jpg

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
                    CPerson



Tags: Bernardes, MS, Microsoft, Office, VBA, TIP, Clipboard, RAM, memory, memória, RAM, copy/paste















André Luiz Bernardes
A&A® - Work smart, not hard.
Skype: inanyplace 


diHITT - Notícias