elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a la Factorización De Semiprimos (RSA)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  Copiar imagen en portapapeles
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Copiar imagen en portapapeles  (Leído 3,806 veces)
CeLaYa


Desconectado Desconectado

Mensajes: 543



Ver Perfil
Copiar imagen en portapapeles
« en: 11 Diciembre 2006, 22:52 pm »

buenas tardes, estoy haciendo un programa y necesito copiar una imagen desde una aplicación X a un picturebox, lo que trato de hacer es copiar la imagen en el portapales de windows y luego ponerla en mi picture, he estado buscando y me encontre con esto:
Código:
Private Const CF_TEXT = 1
Private Declare Function GetClipboardData Lib "user32" (ByVal wFormat As Long) As Long
Private Declare Function CloseClipboard Lib "user32" () As Long
Private Declare Function OpenClipboard Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function lstrlen Lib "kernel32" Alias "lstrlenA" (ByVal lpString As Long) As Long
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDst As Any, pSrc As Long, ByVal ByteLen As Long)
Private Sub Form_Load()
    'KPD-Team 2001
    'URL: http://www.allapi.net/
    'E-Mail: KPDTeam@Allapi.net
    Dim hStrPtr As Long, lLength As Long, sBuffer As String
    OpenClipboard Me.hwnd
    hStrPtr = GetClipboardData(CF_TEXT)
    If hStrPtr <> 0 Then
        lLength = lstrlen(hStrPtr)
        If lLength > 0 Then
            sBuffer = Space$(lLength)
            CopyMemory ByVal sBuffer, ByVal hStrPtr, lLength
            MsgBox sBuffer, vbInformation
        End If
    End If
    CloseClipboard
End Sub
pero este código solo pega texto y no se como hacerle para pegar una imagen, si alguien me puede echar una mano se los agradecería


En línea

"La soledad es el elemento de los grandes talentos".
Cristina de Suecia (1626-1689) Reina de Suecia.
jrhomer

Desconectado Desconectado

Mensajes: 105



Ver Perfil WWW
Re: Copiar imagen en portapapeles
« Respuesta #1 en: 12 Diciembre 2006, 09:43 am »

yo uso esto:

Código:
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''' FUNCION PARA CAPTURAR LA PANTALLA
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


''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''' FUNCIÓN PARA COMPRIMIR BMP A JPEG
Private Declare Function ConvertBMPtoJPG Lib "ImageUtils.dll" (ByVal InputFile _
                         As String, ByVal OutputFile As String, _
                         ByVal OverWrite As Boolean, ByVal _
                         JPGCompression As Integer, ByVal _
                         SaveBMP As Boolean) As Integer

Código:
Private Function Captura_Screen()
   
    Dim foto1 As String
    Dim FOTO2 As String
   
    Dim compresion As Integer
   
    'Captura la ventana activa
    'keybd_event VK_SNAPSHOT, 1, 0, 0

    ' CAPTURA TODA LA PANTALLA
    keybd_event VK_SNAPSHOT, 2, 0, 0
   
    'mientras no se pueda cojer el contenido
    Do While Clipboard.GetData = False
        DoEvents
    Loop
   
    Picture1.Picture = Clipboard.GetData
    'borramos el portapapeles
    Clipboard.Clear
    foto1 = App.Path + "\Fichas\" +"foto1.bmp"
    FOTO2 = App.Path + "\Fichas\" +"foto2.jpg"

    SavePicture Picture1.Picture, foto1
   
    'Dim imagen As New Bitmap(New Bitmap(ruta), 320, 288)
    'imagen.Save(ruta2, System.Drawing.Imaging.ImageFormat.Jpeg
   
    Do While Len(Dir(foto1)) = 0
        DoEvents
    Loop
   
    Dim ret As Long

    'Text1: Ruta del Bmp
    'Text2: ruta del archivo de salida >> JPG
    'Check1: si esta en true se sobreescribe el Jpg
    'Check2: si esta en false se elimina el BMP original
   
    ' compresion = 10 muy poca calidad
    ' compresion = 100 máxima calidad    ' son %
    compresion = 50
   
    ret = ConvertBMPtoJPG(foto1, FOTO2, True, compresion, False)
   
    If ret <> 0 Then
       MsgBox "error al comprimir", vbCritical
    End If
   
    ' Printer.Orientation = 2
    Printer.Orientation = vbPRORLandscape
    Printer.PaintPicture Picture1, 0, 0
    Printer.EndDoc
   
End Function


En línea

ups!!
CeLaYa


Desconectado Desconectado

Mensajes: 543



Ver Perfil
Re: Copiar imagen en portapapeles
« Respuesta #2 en: 12 Diciembre 2006, 21:03 pm »

Gracias compadre!!!! y yo que me estaba quebrando la cabeza buscando apis y era tan sencillo.

Código:
Picture1.Picture = Clipboard.GetData
En línea

"La soledad es el elemento de los grandes talentos".
Cristina de Suecia (1626-1689) Reina de Suecia.
jrhomer

Desconectado Desconectado

Mensajes: 105



Ver Perfil WWW
Re: Copiar imagen en portapapeles
« Respuesta #3 en: 18 Diciembre 2006, 12:31 pm »

:P me he dado cuenta que en un Pc puedo imprimir apaisado con Printer.Orientation = vbPRORLandscape... pero la misma aplicación en otro pc no me imprime así me da error.

Sabeis como lo puedo solucionar?
En línea

ups!!
CeLaYa


Desconectado Desconectado

Mensajes: 543



Ver Perfil
Re: Copiar imagen en portapapeles
« Respuesta #4 en: 18 Diciembre 2006, 14:29 pm »

se supone que el objeto printer toma sus parametros de acuerdo a la impresora predeterminada del sistema, no todas las impresoras aceptan las mismas confuraciones, a veces por default las pc's tienen una impresora la "Microsoft Office Document Image Writer" que creo es para crear archivos (.prn) que puedes mandar directo a la impresora  (copy arcivo.prn prn) tal vez necesites establecer la impresora a la que vas a imprimir:

por ejemplo yo tengo una impresora HP 2100 y el nombre de la impresora es "HP LaserJet 2100 PCL6", para seleccionarla y mandarle imprimir sería:

Código:

    Dim x As Printer
   
    For Each x In Printers
        If x.DeviceName = "HP LaserJet 2100 PCL6" Then
            Set Printer = x
            Exit For
        End If
    Next x

En línea

"La soledad es el elemento de los grandes talentos".
Cristina de Suecia (1626-1689) Reina de Suecia.
jrhomer

Desconectado Desconectado

Mensajes: 105



Ver Perfil WWW
Re: Copiar imagen en portapapeles
« Respuesta #5 en: 18 Diciembre 2006, 16:12 pm »

despues de postearlo pensé en que esa sería la solución.

En el momento que lo pruebe con la impresora en cuestión veré que pasa.
En línea

ups!!
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[VBS]Como copiar contenido de un archivo .TXT al PortaPapeles? « 1 2 »
Scripting
FranciskoAsdf 12 12,315 Último mensaje 12 Junio 2011, 01:12 am
por Novlucker
web. copiar al portapapeles.
Desarrollo Web
OssoH 1 2,982 Último mensaje 14 Febrero 2012, 10:03 am
por OssoH
copiar imagen con el link
PHP
fdap91 2 1,743 Último mensaje 22 Agosto 2014, 18:31 pm
por WHK
portapapeles
Dudas Generales
valencia456 6 3,168 Último mensaje 20 Noviembre 2014, 22:17 pm
por tremolero
Manejo de portapapeles en c/c++
Programación C/C++
YoungCE 3 2,565 Último mensaje 21 Noviembre 2014, 21:33 pm
por Eternal Idol
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines