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

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  Alguien sabe como conseguir esto
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] 3 4 Ir Abajo Respuesta Imprimir
Autor Tema: Alguien sabe como conseguir esto  (Leído 12,163 veces)
Fran1946

Desconectado Desconectado

Mensajes: 56


Ver Perfil
Re: Alguien sabe como conseguir esto
« Respuesta #10 en: 5 Febrero 2020, 17:14 pm »


Te preguntaba en mi mensaje anterior, por la funcionalidad, simplemente para sugerirte opciones más amplias, sencillas (de usar) y válidas, si se tratara (por ejemplo) de algo como girar una imagen cambiar brillo, guardar una imagen, etc, pués ofrecerte ejemplos de código, si fueran demasiadas cosas o bien más complejas sugerirte alguna librería... pero si prefieres no dar explicaciones en tu "proceso bastante complicado, que es irrelevante", entonces sigue con el camino que llevas...
[/quote]

Hola NEBIRE:

Lamento si te ha molestado mi respuesta, no es mi intención, simplemente no doy detalles de el tipo de procesos que hago con las imágenes por que es irrelevante y no guarda relación con mi consulta y tampoco tiene nada que ver con cambios de color, brillo, girar o comprimir, amén de que sería muy largo de explicar y haría mas difícil que alguien se interesara por responder.
Pero si debo de explicar, debido a tu interés por ayudar, por que he decidido utilizar el visor de Windows.
Yo utilizaba para ver la comparación un PictureBox, que sería más logico utilizar, pero  este control tiene muchos problemas de errores al cargar ciertas imágenes con nombres muy raros, como estos ejemplos que son reales:

!B,wfDHgBGk~$(KGrHgoOKj!EjlLmZDmvBKs6y)CFe!~~_3.jpg
鋼拉絲Steel Brushed Stainless.jpg
MATI BELEN, COVA Y ROSANA, CON ADRIANA, Y JOSE ANTONIO.jpg

Ninguno de estos archivos los carga PictureBox sin dar error, y por supuesto no los visualiza. Y además no puedo evitar ni sortear el error, si se produce, sin que se cierre el programa.
También necesitaba, que al comparar las imágenes originales y procesadas, pudiera hacer zoom para apreciar mejor ciertas diferencias, también esto ya lo tenía resuelto con barras scroll, que no me gustan nada.
Y todo esto y alguna cosilla más, lo tengo resuelto utilizando el visor de Windows, por las siguientes razones:
Los archivos raros los carga sin problema y sin error
Tengo el zoom, mejor del mundo, con la rueda del ratón, nada que ver con 2 scrollV y H
Mover la imagen, con cursor de icono de mano incluido, por muy grande que esta sea de forma perfecta, poder redimensionar el visor o maximizarlo, minimizarlo.
Y todo esto manejando simplemente 10 Hwnd's del visor de Windows, 35 líneas de código.


En línea

Fran1946

Desconectado Desconectado

Mensajes: 56


Ver Perfil
Re: Alguien sabe como conseguir esto
« Respuesta #11 en: 5 Febrero 2020, 17:35 pm »

En realidad te equivocas respecto al árbol. Por esta razón no encuentras Photos_commandbar. No has entendido el concepto de ventanas Parents y Childs.

Realmente el árbol sería así:

Código:
Photo_Lightweight_Viewer
   - Photos_CommandBar
           - Photos_ButtonEx (Arc&hivo)
           - Photos_ButtonEx (&Imprimir)
           - Photos_ButtonEx (Correo &electrónico)
           - Photos_ButtonEx (&Grabar)
           - Photos_ButtonEx  (&Abrir)
           - Photos_ButtonEx ("") objeto oculto
           - Photos_ButtonEx ("") objeto oculto
   - Photos_PhotoCanvas
   - ATL:568ED690
           - Photos_ButtonEx  ("") objeto oculto
           - Photos_ButtonEx  ("") objeto oculto
           - Photos_ButtonEx  ("") objeto oculto
   - Photos_NavigationPane
            - Photos_NavigationBar
                   - Photos_ButtonEx (control de navegación)
                   - Photos_ButtonEx (control de navegación)
                   - Photos_ButtonEx (control de navegación)
                   - Photos_ButtonEx (control de navegación)
                   - Photos_ButtonEx (control de navegación)
                   - Photos_ButtonEx (control de navegación)
                   - Photos_ButtonEx (control de navegación)
                   - Photos_ButtonEx (control de navegación)

Entonces,  Photo_Lightweight_Viewer tiene cuatro hijos que son Photos_CommandBarPhotos_PhotoCanvas, ATL:568ED690 (no se lo que es) y Photos_NavigationPane

Con mi código lo que hice fue encontrar primero Photo_Lightweight_Viewer  y luego el hijo Photos_NavigationPane mediante éste encuentro su hijo Photos_NavigationBar y despues los botones.

Para encontrar Photos_CommandBar  necesito el handle (hwnd) del padre que es Photo_Lightweight_Viewer.

Por lo tanto para encontrarlo primero encuentras el padre que es
Código:
hPhoto_Lightweight_Viewer = FindWindow("Photo_Lightweight_Viewer", TITULODELAVENTANA)

y después uno de sus hijos que en este caso te interesa Photos_CommandBar

Código:
hPhotos_commandbar = FindWindowEx(hPhoto_Lightweight_Viewer, ByVal 0&, "Photos_commandbar", vbNullString)

Demostración:

Código
  1. Dim TITULODELAVENTANA As String
  2. Dim hPhoto_Lightweight_Viewer As Long
  3. Dim hPhotos_commandbar As Long
  4. TITULODELAVENTANA = "demo.jpg - Visualizador de fotos de Windows"
  5.  
  6. hPhoto_Lightweight_Viewer = FindWindow("Photo_Lightweight_Viewer", TITULODELAVENTANA)
  7. hPhotos_commandbar = FindWindowEx(hPhoto_Lightweight_Viewer, ByVal 0&, "Photos_commandbar", vbNullString)
  8. MsgBox "barra = " & Hex(hPhotos_commandbar)

Por si te sirve te dejo este código para ajustar colores (brillo, contraste, escala de grises, etc)

https://mega.nz/#!fBlyUCpQ!Kemdm1iZ52dScMcYy6cfak2VzEV4jZ8pBlByvkrLK_0

demostración:


Hola de nuevo:
He llegado tarde..
Ya lo había resuelto, después de estudiar tu código, no funcionaba por que tenía la variable de clase nueva 'Photos_commandbar' escrita como 'hPhotos_commandbar' y el resultado era 0.

Y como todos estos hijos:
           - Photos_ButtonEx (Arc&hivo)
           - Photos_ButtonEx (&Imprimir)
           - Photos_ButtonEx (Correo &electrónico)
           - Photos_ButtonEx (&Grabar)
           - Photos_ButtonEx  (&Abrir)
           - Photos_ButtonEx ("") objeto oculto
           - Photos_ButtonEx ("") objeto oculto
Tienen que estar prohibidos utilizarlos, simplemente cierro la ventana padre:
- Photos_CommandBar

Y de nuevo muchas gracias por el SetColorAdjustment.zip, este yo lo tenía yo.

Hay un cierto problemilla:

Después de cargar la imagen en el visor, llamo al Call de leer los Hwnd's
Y después se cierran las ventanas que no quiero, pero no siempre devuelve el Hwnd de algunas ventanas retorna = 0, pero si intercalo un delay de algunos milisegundos (tengo que probar cantos para que no retrase mucho) entre lecturas si devuelve valores correctos.
Alguna sugerencia a este respecto?.

Gracias de nuevo.




En línea

FJDA


Desconectado Desconectado

Mensajes: 322


Ver Perfil
Re: Alguien sabe como conseguir esto
« Respuesta #12 en: 5 Febrero 2020, 17:48 pm »


Después de cargar la imagen en el visor, llamo al Call de leer los Hwnd's
Y después se cierran las ventanas que no quiero, pero no siempre devuelve el Hwnd de algunas ventanas retorna = 0, pero si intercalo un delay de algunos milisegundos (tengo que probar cantos para que no retrase mucho) entre lecturas si devuelve valores correctos.
Alguna sugerencia a este respecto?.



usa un do While

Código
  1.  
  2.  
  3. Do While HWNDParent = 0
  4.   HWNDParent = [Buscar handle visualizador de windows]
  5.   DoEvents '//esto es para evitar que la apliación se quede pillada
  6. Loop
  7.  
  8.  
  9. 'Do While hwnd = 0
  10. '[Abrir imagen en el visualizador de windows correspondiente]
  11. 'DoEvents
  12. 'Loop
  13.  
  14.  
  15.  



Y como todos estos hijos:
           - Photos_ButtonEx (Arc&hivo)
           - Photos_ButtonEx (&Imprimir)
           - Photos_ButtonEx (Correo &electrónico)
           - Photos_ButtonEx (&Grabar)
           - Photos_ButtonEx  (&Abrir)
           - Photos_ButtonEx ("") objeto oculto
           - Photos_ButtonEx ("") objeto oculto
Tienen que estar prohibidos utilizarlos, simplemente cierro la ventana padre:

- Photos_CommandBar

:huh: pues no se que habrás hecho  :xD

Usa ShowWindow y el comando HIDE_WINDOW = 0. Si lo has usado no funciona es que no lo harás bien digo yo. miratelo

Código
  1.  
  2.  
  3. Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" _
  4. (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
  5.  
  6. Private Declare Function GetClassName Lib "user32" Alias "GetClassNameA" _
  7. (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long
  8. Private Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long
  9.  
  10. Private Declare Function GetNextWindow Lib "user32" Alias "GetWindow" _
  11. (ByVal hwnd As Long, ByVal wFlag As Long) As Long
  12.  
  13. Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
  14.  
  15. Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
  16.  
  17. Const HIDE_WINDOW = 0
  18. Const SHOW_OPENWINDOW = 1
  19. Const GW_HWNDNEXT = 2
  20. Const GW_CHILD = 5
  21.  
  22. Dim TITULODELAVENTANA As String
  23. Dim hPhoto_Lightweight_Viewer As Long
  24. Dim hPhotos_NavigationPane As Long
  25. Dim hPhotos_NavigationBar As Long
  26. Dim hPhotos_ButtonEx_1 As Long
  27. Dim hPhotos_ButtonEx_2 As Long
  28. Dim hPhotos_ButtonEx_3 As Long
  29. Dim hPhotos_ButtonEx_4 As Long
  30. Dim hPhotos_ButtonEx_5 As Long
  31. Private Sub Command1_Click()
  32.  
  33. TITULODELAVENTANA = "Desierto.jpg - Visualizador de fotos de Windows"
  34. 'Orden de padre a hijos
  35. '1.Photo_Lightweight_Viewer
  36. '-----Photos_NavigationPane
  37. '------------Photos_NavigationBar
  38. '----------------------Photos_ButtonEx
  39.  
  40. '//handle de la ventana
  41. hPhoto_Lightweight_Viewer = FindWindow("Photo_Lightweight_Viewer", TITULODELAVENTANA)
  42.  
  43. '//handle del panel
  44. 'handle de Photo_Lightweight_Viewer
  45. handlePhotos_NavigationPane = FindWindowEx(hPhoto_Lightweight_Viewer, ByVal 0&, "Photos_NavigationPane", vbNullString)
  46.  
  47. '//Handle del control de botones
  48. 'handle de hPhotos_NavigationBar
  49. handlePhotos_NavigationBar = FindWindowEx(handlePhotos_NavigationPane, ByVal 0&, "Photos_NavigationBar", vbNullString)
  50.  
  51.  
  52. '//BOTONES
  53. '//Como Photos_ButtonEx no tiene hijos a partir de aquí se usa  GW_HWNDNEXT
  54. '//para obtener el handle del siguiente botón (ventana)
  55.  
  56. 'handle de Photos_ButtonEx (la lupa)
  57. hPhotos_ButtonEx_1 = FindWindowEx(handlePhotos_NavigationBar, ByVal 0&, "Photos_ButtonEx", vbNullString)
  58.  
  59. 'handle de Photos_ButtonEx (botón maximizar)
  60. hPhotos_ButtonEx_2 = GetWindow(hPhotos_ButtonEx_1, GW_HWNDNEXT)
  61.  
  62. 'handle de Photos_ButtonEx (botón "izquierda")
  63. hPhotos_ButtonEx_3 = GetWindow(hPhotos_ButtonEx_2, GW_HWNDNEXT)
  64.  
  65. 'handle de Photos_ButtonEx (botón diapositivas)
  66. hPhotos_ButtonEx_4 = GetWindow(hPhotos_ButtonEx_3, GW_HWNDNEXT)
  67.  
  68. 'handle de Photos_ButtonEx (botón "derecha")
  69. hPhotos_ButtonEx_5 = GetWindow(hPhotos_ButtonEx_4, GW_HWNDNEXT)
  70.  
  71.  
  72. 'quitar hPhotos_ButtonEx_1
  73. Call ShowWindow(hPhotos_ButtonEx_1, HIDE_WINDOW)
  74.  
  75. 'quitar hPhotos_ButtonEx_2
  76. Call ShowWindow(hPhotos_ButtonEx_2, HIDE_WINDOW)
  77.  
  78.  'quitar hPhotos_ButtonEx_5
  79. Call ShowWindow(hPhotos_ButtonEx_5, HIDE_WINDOW)
  80.  
  81. End Sub
  82.  
  83. Private Sub Command2_Click()
  84. 'mostrar hPhotos_ButtonEx_1
  85. Call ShowWindow(hPhotos_ButtonEx_1, SHOW_OPENWINDOW)
  86.  
  87. 'mostrar hPhotos_ButtonEx_2
  88. Call ShowWindow(hPhotos_ButtonEx_2, SHOW_OPENWINDOW)
  89.  
  90.  'mostrar hPhotos_ButtonEx_5
  91. Call ShowWindow(hPhotos_ButtonEx_5, SHOW_OPENWINDOW)
  92.  
  93. End Sub
  94.  


« Última modificación: 5 Febrero 2020, 18:58 pm por FJDA » En línea

Fran1946

Desconectado Desconectado

Mensajes: 56


Ver Perfil
Re: Alguien sabe como conseguir esto
« Respuesta #13 en: 5 Febrero 2020, 18:54 pm »

usa un do While

Código
  1.  
  2.  
  3. Do While HWNDParent = 0
  4.   HWNDParent = [Buscar handle visualizador de windows]
  5.   DoEvents '//esto es para evitar que la apliación se quede pillada
  6. Loop
  7.  
  8.  
  9. 'Do While hwnd = 0
  10. '[Abrir imagen en el visualizador de windows correspondiente]
  11. 'DoEvents
  12. 'Loop
  13.  
  14.  
  15.  


Hola de nuevo:

Si yo tengo algo parecido, esto:

Código:
Public Function EjecutaShell(file As String) As Boolean
    Shell ("explorer.exe " & file)
    HwndOrg = 0
    tm = 0
    Timer2.Interval = 1
    Timer2.Enabled = True
    Do While HwndOrg = 0
        HwndOrg = FindWindow("photo_lightweight_viewer", vbNullString) ' consigo el hwnd
        DoEvents
        If tm = 100 And HwndOrg = 0 Then    'si no obtiene HwndOrg, sale a los 100 ms
            GoTo sal
        End If
    Loop
sal:
    Timer2.Interval = 0
    Timer2.Enabled = False
End Function

Y una cosa que se me olvidó...

Tampoco he conseguido, que no salgan los menues del visor, al pulsar botón dcho del ratón


Se  puede hacer?.
En línea

FJDA


Desconectado Desconectado

Mensajes: 322


Ver Perfil
Re: Alguien sabe como conseguir esto
« Respuesta #14 en: 5 Febrero 2020, 18:57 pm »

pues tengo una ligera idea de que quizás si se pueda. Espera a que pruebe.





« Última modificación: 5 Febrero 2020, 19:22 pm por FJDA » En línea

Fran1946

Desconectado Desconectado

Mensajes: 56


Ver Perfil
Re: Alguien sabe como conseguir esto
« Respuesta #15 en: 5 Febrero 2020, 19:20 pm »

Usa ShowWindow y el comando HIDE_WINDOW = 0. Si lo has usado no funciona es que no lo harás bien digo yo. miratelo

Esto está resuelto y funciona perfecto.

Gracias.
En línea

FJDA


Desconectado Desconectado

Mensajes: 322


Ver Perfil
Re: Alguien sabe como conseguir esto
« Respuesta #16 en: 5 Febrero 2020, 19:22 pm »

a ver, esto lo que hace es inhabilitar la ventana Photos_PhotoCanvas que contiene la imagen. De este modo no se puede usar el ratón (solo en Photos_PhotoCanvas)

Código
  1.  
  2.  
  3. Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" _
  4. (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
  5.  
  6. Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
  7. (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
  8.  
  9. Private Declare Function EnableWindow Lib "user32" _
  10. (ByVal hwnd As Long, ByVal fEnable As Long) As Long
  11.  
  12.  
  13. Private Sub Command1_Click()
  14. Dim hPhotos_PhotoCanvas As Long
  15. Dim hPhoto_Lightweight_Viewer As Long
  16.  
  17. TITULODELAVENTANA = "Desierto.jpg - Visualizador de fotos de Windows"
  18.  
  19. '//handle de la ventana
  20. hPhoto_Lightweight_Viewer = FindWindow("Photo_Lightweight_Viewer", TITULODELAVENTANA)
  21.  
  22. '//handle del Photos_PhotoCanvas
  23. hPhotos_PhotoCanvas = FindWindowEx(hPhoto_Lightweight_Viewer, ByVal 0&, "Photos_PhotoCanvas", vbNullString)
  24.  
  25. Call EnableWindow(hPhotos_PhotoCanvas, vbFalse)
  26. End Sub
  27.  
En línea

Fran1946

Desconectado Desconectado

Mensajes: 56


Ver Perfil
Re: Alguien sabe como conseguir esto
« Respuesta #17 en: 5 Febrero 2020, 19:43 pm »

Fantástico, es perfecto.

Tu ayuda ha sido extraordinaria, todo funciona como un reloj.
 ;-) ;-) ;-)

Que opinas sobre los argumentos que le respondí a NEBIRE.

Crees que un PictureBox puede hacer lo que hago con el visor, me refiero a que no sea capaz de cargar y visualizar archivos de jpg, son los únicos que maneja mi programa, con nombres largo, con caracteres raros y/o símbolos que no acepta?.

Y tampoco entiendo que después de muchas horas buscando en Internet, no he conseguido la info que tu me has dado, buscando específicamente lo referente a Ventanas padre e hijos.

Me reitero, mil gracias.
Un saludo.
En línea

FJDA


Desconectado Desconectado

Mensajes: 322


Ver Perfil
Re: Alguien sabe como conseguir esto
« Respuesta #18 en: 5 Febrero 2020, 20:06 pm »

Fantástico, es perfecto.

Tu ayuda ha sido extraordinaria, todo funciona como un reloj.
 ;-) ;-) ;-)

Que opinas sobre los argumentos que le respondí a NEBIRE.

Crees que un PictureBox puede hacer lo que hago con el visor, me refiero a que no sea capaz de cargar y visualizar archivos de jpg, son los únicos que maneja mi programa, con nombres largo, con caracteres raros y/o símbolos que no acepta?.

Y tampoco entiendo que después de muchas horas buscando en Internet, no he conseguido la info que tu me has dado, buscando específicamente lo referente a Ventanas padre e hijos.

Me reitero, mil gracias.
Un saludo.

Con los rifirafes que tengas con otro usuario  yo ahí no me meto, menos si es del staff de este foro que no se si será, que aquí son muy susceptibles. ::)

En cuanto a lo del picture el error se produce porque para cargar una imagen debes hacer uso de LoadPicture() para la propiedad Picture de la imagen. Al cargar un nombre extraño no entiende determinados carácteres y se reemplazan por interrogantes, por ejemplo [C:\directorio\鋼拉絲Steel Brushed Stainless.jpg] queda como  [C:\directorio\???Steel Brushed Stainless.jpg]. Dado que el archivo ???Steel Brushed Stainless.jpg no existe da error. Da igual el cuadro de diálogo que uses al final debes meterlo en la propiedad la cual va a recibir un directorio que no existe. Por no hablar que no cargar algunos tipos de imagen como imágenes PNG.

Abría que investigar un poco el tema, ahora mismo no se me ocurre nada al respeto para solucionarlo.


Aquí tienes la explicación, realmente no es un problema del Picture si no de VB6:

http://www.cyberactivex.com/UnicodeTutorialVb.htm


Aunque Visual Basic 6.0 almacena cadenas internamente como Unicode (UTF-16), tiene varias limitaciones:

- Se envía con controles solo ANSI (Etiqueta, Cuadro de texto, etc.).
- La ventana de propiedades en IDE es solo ANSI. Las cadenas Unicode se muestran como '????'
- PropertyBag convierte automáticamente cadenas Unicode a ANSI.
- Las funciones del portapapeles son solo ANSI.
- Los menús son solo ANSI.
« Última modificación: 5 Febrero 2020, 20:18 pm por FJDA » En línea

Serapis
Colaborador
***
Desconectado Desconectado

Mensajes: 3.391


Ver Perfil
Re: Alguien sabe como conseguir esto
« Respuesta #19 en: 6 Febrero 2020, 02:48 am »

...Yo utilizaba para ver la comparación un PictureBox, que sería más logico utilizar, pero este control tiene muchos problemas de errores al cargar ciertas imágenes con nombres muy raros, como estos ejemplos que son reales:

!B,wfDHgBGk~$(KGrHgoOKj!EjlLmZDmvBKs6y)CFe!~~_3.jpg
鋼拉絲Steel Brushed Stainless.jpg
MATI BELEN, COVA Y ROSANA, CON ADRIANA, Y JOSE ANTONIO.jpg

Ninguno de estos archivos los carga PictureBox sin dar error, y por supuesto no los visualiza. Y además no puedo evitar ni sortear el error, si se produce, sin que se cierre el programa.
Bueno, en efecto, VB6 no se las lleva bien cuando en un nombre se colocan caracteres ANSI y UNICODE...
Lo cual no quiere decir que no tenga solución.

Te pongo un código de ejemplo que soluciona el caso, mediante una simple API...
Y luego una imagen... nota que la imagen es una captura de tu mensaje, pero el nombre d ela imagen es el mismo que tu tienes ahí arriba y nota como la imagen se carga perfectamente con este modo...

Código
  1.  
  2. Private Const INVALID_HANDLE_VALUE      As Long = -1
  3. Private Const MAX_PATH                  As Long = 260
  4. Private Const SHORT_PATH                As Long = 14
  5.  
  6. Private Type FILETIME
  7.   dwLowDateTime                        As Long
  8.   dwHighDateTime                       As Long
  9. End Type
  10. Private Type WIN32_FIND_DATA
  11.   dwFileAttributes                     As Long
  12.   ftCreationTime                       As FILETIME
  13.   ftLastAccessTime                     As FILETIME
  14.   ftLastWriteTime                      As FILETIME
  15.   nFileSizeHigh                        As Long
  16.   nFileSizeLow                         As Long
  17.   dwReserved0                          As Long
  18.   dwReserved1                          As Long
  19.   cFileName                            As String * MAX_PATH
  20.   cAlternate                           As String * SHORT_PATH
  21. End Type
  22.  
  23. Private Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long
  24.  
  25.  
  26. ' Código dle botón que carga la imagen:
  27. Private Sub Command1_Click()
  28.    Dim Ruta As String
  29.  
  30.    cdlg.ShowOpen   ' Cdlg, es un control CommonDialog...
  31.    If (Len(cdlg.FileName) > 0) Then
  32.        Ruta = ResuelveRuta(cdlg.FileName)
  33.        if (len(ruta)>0) then
  34.            Set Picture1.Picture = LoadPicture(Ruta)
  35.        end if
  36.    End If
  37. End Sub
  38.  
  39. ' Función que resuelve el problema de los nombres con caracteres Unicode dentro del nombre...
  40. Private Function ResuelveRuta(ByVal Ruta As String) As String
  41.    Dim j As Long, k As Long, WFD As WIN32_FIND_DATA
  42.  
  43.    j = FindFirstFile(Ruta, WFD)
  44.    If (j <> INVALID_HANDLE_VALUE) Then
  45.        k = InStrRev(Ruta, "\")
  46.  
  47.        If (Left$(WFD.cAlternate, 1) <> Chr(0)) Then
  48.            ResuelveRuta = Left$(Ruta, k) & WFD.cAlternate
  49.        Else
  50.            ResuelveRuta = Left$(Ruta, k) & WFD.cFileName
  51.        End If
  52.    Else
  53.        ResuelveRuta = ""
  54.    End If
  55. End Function
  56.  
  57. Private Sub Form_Load()
  58.    cdlg.InitDir = App.Path
  59. End Sub
  60.  



Otros problemas que tengas con los picturebox, se pueden ir viendo, si describes el problema en cuestión.
« Última modificación: 6 Febrero 2020, 02:50 am por NEBIRE » En línea

Páginas: 1 [2] 3 4 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
¿Alguien sabe como descifrar esto?
Criptografía
Tzdah 6 5,906 Último mensaje 7 Febrero 2013, 05:26 am
por Tzdah
Alguien sabe como se llama esto¿?
PHP
Roboto 8 3,641 Último mensaje 25 Marzo 2013, 17:10 pm
por 1mpuls0
Alguien sabe como ocultar esto?
Dudas Generales
Leandro3562 2 2,695 Último mensaje 11 Diciembre 2015, 19:21 pm
por Leandro3562
Saben como puedo conseguir esto? « 1 2 »
Foro Libre
Panic0 11 5,035 Último mensaje 13 Febrero 2021, 11:59 am
por Machacador
Alguien sabe como hacer esto con for??
Programación C/C++
Julia13 3 3,094 Último mensaje 14 Mayo 2021, 20:51 pm
por engel lex
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines