Autor Tema: [src] mdlOpenImageViewer (abrir Visor de Imagenes de Windows XP,Vista,7)  (Leído 4587 veces)

0 Usuarios y 1 Visitante están viendo este tema.

coco

  • Administrador
  • Terabyte
  • *****
  • Mensajes: 548
  • Reputación: +63/-3
    • Ver Perfil
Bueno para un proyecto que estoy haciendo me surgio la duda de como ejecutar esta aplicacion, y bueno, la forma mas sencilla para la mayoria puede ser ejecutar rundll32.exe con un par de parametros, pero; ¿para que usar ese programa si lo unico que hace es hacer una llamada a la DLL que le especifico yo?. Lo mas simple es declararla, pero asi no funciono para mi. Aca cobein me tiro una ayuda, y el codigo quedo muy sencillo. Le agregue la verificacion de sistema, ya que el XP usa shimgvw.dll y el Vista, 7 usan photoviewer.dll que esta en otra direccion y todo. Ambas librerias tienen la misma funcion, estamos hablando de ImageView_FullscreenW (dios sabra que carajo habran querido hacer).

el codigo (no dejo link porque es muy corto):
Código: (vb) [Seleccionar]
'---------------------------------------------------------------------------------------
' Modulo      : mdlOpenImageViewer
' Autor       : Cocus (coco_electro@hotmail, santiagohssl@gmail.com)
' Fecha       : 07/06/2010 22:40
' Uso         : Ojito con lo que haces con esto! Yo te dejo que lo uses donde quieras,
'               pero tenes que mencionar a el/los autores de este modulo en alguna parte
'               del software. NO PODES USAR EL EJEMPLO TAL CUAL ESTA PARA VENDER!!! :@
'               Para eso, date un tiempito y editalo un poco.
' Referencias : -
' Gracias a cobein por el "core" de este codigo.
' Proposito   : Abrir el Visor de Imagenes en XP, Vista*, 7 (aun no testeado en vista)
' Revisiones  : #0 07/06/2010 - Cocus: Primera revision
'---------------------------------------------------------------------------------------

Option Explicit

Private Declare Function FreeLibrary Lib "kernel32" (ByVal hLibModule As Long) As Long
Private Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long
Private Declare Function GetProcAddress Lib "kernel32" (ByVal hModule As Long, ByVal lpProcName As String) As Long
Private Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal Msg As Any, ByVal wParam As Any, ByVal lParam As Any) As Long
Private Declare Function GetVersion Lib "kernel32" () As Long

Private Function FixPath(ByVal strPath As String) As String
    FixPath = strPath & IIf(Left$(strPath, 1) = "\", "", "\")
End Function

Public Function ShowImageViewer(ByVal strPath As String) As Boolean

    Dim lngLib As Long
    Dim lngFunc As Long
   
    If (((GetVersion And &HFFFF&) Mod 256) = 6) Then
        lngLib = LoadLibrary(FixPath(Environ("ProgramFiles")) & "Windows Photo Viewer\PhotoViewer.dll")
    Else
        lngLib = LoadLibrary("shimgvw.dll")
    End If
   
    lngFunc = GetProcAddress(lngLib, "imageview_fullscreenW")
   
    CallWindowProc lngFunc, 0&, 0&, StrPtr(strPath), 0&
End Function

y como lo usan? bueno no es complicado, en especial porque es la unica funcion publica xD, le pasan el path de la imagen que quieren ver, y se abre por arte de magia.

saludos!
« última modificación: Junio 09, 2010, 12:35:38 am por coco »
'-     coco
(No me cabe: Java, Python ni Pascal)
SQLite - PIC 16F y 18F - ARM STM32 - ESP32 - Linux Embebido - VB6 - Electronica - Sonido y Ambientacion

LeandroA

  • Administrador
  • Petabyte
  • *****
  • Mensajes: 1128
  • Reputación: +151/-8
    • Ver Perfil
Re:[src] mdlOpenImageViewer (abrir Visor de Imagenes de Windows XP,Vista,7)
« Respuesta #1 en: Junio 07, 2010, 11:44:53 pm »
Por alguna razon yo no tengo instalado dicho visor de imagenes o almenos no existe la carpeta C:\Archivos de programa\Windows Photo Viewer

mi visor por defecto es este



Saludos.

coco

  • Administrador
  • Terabyte
  • *****
  • Mensajes: 548
  • Reputación: +63/-3
    • Ver Perfil
Re:[src] mdlOpenImageViewer (abrir Visor de Imagenes de Windows XP,Vista,7)
« Respuesta #2 en: Junio 08, 2010, 12:24:57 am »
Por alguna razon yo no tengo instalado dicho visor de imagenes o almenos no existe la carpeta C:\Archivos de programa\Windows Photo Viewer

mi visor por defecto es este



Saludos.
pero estas en windows XP¿? quizas este fallando la parte de reconocer si es XP o > XP. Eso de la carpeta de archivos de programa solo se aplica a Vista y 7. En XP se usa el shimgvw.dll de system32

saludos
'-     coco
(No me cabe: Java, Python ni Pascal)
SQLite - PIC 16F y 18F - ARM STM32 - ESP32 - Linux Embebido - VB6 - Electronica - Sonido y Ambientacion

LeandroA

  • Administrador
  • Petabyte
  • *****
  • Mensajes: 1128
  • Reputación: +151/-8
    • Ver Perfil
Re:[src] mdlOpenImageViewer (abrir Visor de Imagenes de Windows XP,Vista,7)
« Respuesta #3 en: Junio 08, 2010, 10:08:18 pm »
hola coco, si anda bien exepto lo de la vercion, yo estoy en xp y me lo toma como seven o bien esta mal la logica (GetVersion() And &H80000000) = 0) = XP

coco

  • Administrador
  • Terabyte
  • *****
  • Mensajes: 548
  • Reputación: +63/-3
    • Ver Perfil
Re:[src] mdlOpenImageViewer (abrir Visor de Imagenes de Windows XP,Vista,7)
« Respuesta #4 en: Junio 09, 2010, 12:35:03 am »
hola coco, si anda bien exepto lo de la vercion, yo estoy en xp y me lo toma como seven o bien esta mal la logica (GetVersion() And &H80000000) = 0) = XP
si tenez razon leandro, pasa que copie de otro lado, y copie otra parte. eso que esta ahi es para saber si es NT, nada mas. ya lo arregle en el post original.

saludos
'-     coco
(No me cabe: Java, Python ni Pascal)
SQLite - PIC 16F y 18F - ARM STM32 - ESP32 - Linux Embebido - VB6 - Electronica - Sonido y Ambientacion