Autor
|
Tema: Copiar imagen en portapapeles (Leído 3,806 veces)
|
CeLaYa
Desconectado
Mensajes: 543
|
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: 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
|
yo uso esto: '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '''''''' 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 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
Mensajes: 543
|
Gracias compadre!!!! y yo que me estaba quebrando la cabeza buscando apis y era tan sencillo. 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
|
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
Mensajes: 543
|
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: 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
|
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!!
|
|
|
|
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
|
12 Junio 2011, 01:12 am
por Novlucker
|
|
|
web. copiar al portapapeles.
Desarrollo Web
|
OssoH
|
1
|
2,982
|
14 Febrero 2012, 10:03 am
por OssoH
|
|
|
copiar imagen con el link
PHP
|
fdap91
|
2
|
1,743
|
22 Agosto 2014, 18:31 pm
por WHK
|
|
|
portapapeles
Dudas Generales
|
valencia456
|
6
|
3,168
|
20 Noviembre 2014, 22:17 pm
por tremolero
|
|
|
Manejo de portapapeles en c/c++
Programación C/C++
|
YoungCE
|
3
|
2,565
|
21 Noviembre 2014, 21:33 pm
por Eternal Idol
|
|