Autor
|
Tema: Descripcion de Archivo (Leído 8,559 veces)
|
el_chente23
Desconectado
Mensajes: 142
|
Hola a todos, tengo un problema, tengo tiempo tratando de obtener la descripcion de un archivo, esa que viene cuando el das propiedades al archivo y en la pestaña de resumen viene una serie de propiedades del archivo que necesito leer, pero ya e buscado funciones o algo para acceder a el y no he podido, intente con la funcion GetFileTitle, pero este me da la decripcion que viene en la pestaña de General de las propiedades, pero ese no me sirve, si alguien me puede ayudar se lo agradeceria.
Un Saludo
|
|
|
En línea
|
|
|
|
sorcerer
Desconectado
Mensajes: 365
|
vas a: project->project1 propietes y hay configuras todo
|
|
« Última modificación: 23 Agosto 2005, 20:33 pm por sorcerer »
|
En línea
|
Las creaciones humanas son imperfectas, por la imperfeccion de su creador
|
|
|
|
el_chente23
Desconectado
Mensajes: 142
|
Hola, creo que no me explique bien, quiero obtener esa informacion pero de un archivo x, no de mi proyecto, por ejemplo, tengo un archivo txt, si le das click derecho al archivo y le das propiedades, te aparece la venta de propiedades con 4 pestañas, la ultima pestaña, que es la de resumen, es la que tiene la informacion que necesito sacar por medio de un programa en vb, espero haberme explicado mejor.
Saludos
|
|
|
En línea
|
|
|
|
NYlOn
Desconectado
Mensajes: 842
OOOOHHHHHH, TARAGÜIIII xDDDDDD
|
mmm.... me parece haber visot un par de OCX sobre es0... ahora no recuerdo donde xD, pero busca en (L) Google (L) q seguro encontras XDDDD si me acuerdo edit0 y t avis0 : CyA
|
|
|
En línea
|
|
|
|
Slasher-K
Desconectado
Mensajes: 1.477
|
Ya me parecía que era eso . Hace un tiempo puse un post en donde se encontraba el código para eso. Te dejo el fragmento de código. Agrega como referencia la libería win.tlb, ya puse el link muchas veces . Type FileVersionInfo CompanyName As String FileDescription As String FileVersion As String InternalName As String LegalCopyright As String OriginalFileName As String ProductName As String ProductVersion As String Comments As String FileOS As String End Type
Function GetVersionInfo(Filename As String) As FileVersionInfo Dim pFixedInfo As VS_FIXEDFILEINFO Dim pFileInfo As FileVersionInfo Dim sCharset$, btCharset(4) As Byte Dim lCharset&, hCharBlck& Dim lInfoSize&, hVersion& Dim sVerData$, sVerBlck$, lLen& Dim sVerInfo$(9), sData$, i%, r& Dim lBinType& lInfoSize = GetFileVersionInfoSize(Filename, 0&) sVerData$ = String$(lInfoSize, 0) r = GetFileVersionInfo(Filename, 0&, lInfoSize, sVerData) If r = 0 Then Exit Function r = VerQueryValue(sVerData, "\VarFileInfo\Translation", hCharBlck, lLen) If r = 0 Then Exit Function r = ReadProcessMemory(GetCurrentProcess(), hCharBlck, btCharset(1), lLen) lCharset = btCharset(3) + btCharset(4) * &H100 + _ btCharset(1) * &H10000 + btCharset(2) * &H1000000 sCharset$ = Hex$(lCharset) sCharset$ = String(8 - Len(sCharset$), "0") & sCharset$ sVerInfo(1) = "CompanyName" sVerInfo(2) = "FileDescription" sVerInfo(3) = "FileVersion" sVerInfo(4) = "InternalName" sVerInfo(5) = "LegalCopyright" sVerInfo(6) = "OriginalFileName" sVerInfo(7) = "ProductName" sVerInfo(8) = "ProductVersion" sVerInfo(9) = "Comments"
For i = 1 To 9 sVerBlck$ = "\StringFileInfo\" & sCharset & "\" & sVerInfo(i) r = VerQueryValue(sVerData, sVerBlck, hVersion, lInfoSize) If r Then sData = String$(lInfoSize, 0) r = ReadProcessMemory(GetCurrentProcess(), hVersion, ByVal sData, lInfoSize) sData = Left$(sData, lInfoSize - 1) With GetVersionInfo Select Case i Case 1: .CompanyName = sData Case 2: .FileDescription = sData Case 3: .FileVersion = sData Case 4: .InternalName = sData Case 5: .LegalCopyright = sData Case 6: .OriginalFileName = sData Case 7: .ProductName = sData Case 8: .ProductVersion = sData Case 9: .Comments = sData End Select If GetBinaryType(Filename, lBinType) Then Select Case lBinType Case SCS_32BIT_BINARY: .FileOS = "Ejecutable Para Windows De 32 Bits" Case SCS_DOS_BINARY: .FileOS = "Ejecutable Para MS-DOS" Case SCS_OS216_BINARY: .FileOS = "Ejecutable Para OS/2 De 16 Bits" Case SCS_PIF_BINARY: .FileOS = "Acceso Directo A Programa De MS-DOS" Case SCS_POSIX_BINARY: .FileOS = "Archivo Ejecutable Para POSIX" Case SCS_WOW_BINARY: .FileOS = "Ejecutable Para Windows De 16 Bits" Case Else: .FileOS = "Sistema Desconocido" End Select End If
End With End If Next End Function
Saludos.
|
|
|
En línea
|
A la reina de las profundidades que cuida los pasos de una sombra en la noche :*
|
|
|
el_chente23
Desconectado
Mensajes: 142
|
Hola, probe el codigo, pero no me funciona muy bien lInfoSize = GetFileVersionInfoSize(Filename, 0&) sVerData$ = String$(lInfoSize, 0) r = GetFileVersionInfo(Filename, 0&, lInfoSize, sVerData) If r = 0 Then Exit Function
en esta parte, cuando mando llamar GetFileVersionInfoSize, siempre me devuelve 0, y cuando me devuelve distinto de 0 en la funcion GetFileVersionInfo, se cierra el programa. ¿Funciona para todos los archivos o nadamas para alguno? Saludos
|
|
|
En línea
|
|
|
|
Slasher-K
Desconectado
Mensajes: 1.477
|
A mi me funciona bien ???. A ver probá lo siguiente: lInfoSize = GetFileVersionInfoSize(Filename, 0&) sVerData$ = String$(lInfoSize, 0)
r = GetFileVersionInfo(ByVal Filename, 0&, lInfoSize, ByVal sVerData)
If r = 0 Then Exit Function
Así tiene que funcionar. Saludos.
|
|
|
En línea
|
A la reina de las profundidades que cuida los pasos de una sombra en la noche :*
|
|
|
el_chente23
Desconectado
Mensajes: 142
|
Hola, Gracias por la ayuda, efectivamente funciono con ese cambio, pero me salio otro, al llegar a esta linea r = VerQueryValue(sVerData, "\VarFileInfo\Translation", hCharBlck, lLen) me manda este error "No se puede encontrar el punto de entrada de la dll VerQueryValue en Version.dll", la funcion si la tengo declarada, supuse que es porque no tiene referencia a la dll especificada, la intento agregar en las referencias pero me manda este mensaje "No se puede agregar referencia al archivo especificado", ¿que tengo que hacer?, ¿estara desactualizado ese dll?. PD: Otro detalle es que unicamente me a funcionado para archivos .exe, y los que yo necesito leer son .msi Saludos
|
|
|
En línea
|
|
|
|
Slasher-K
Desconectado
Mensajes: 1.477
|
Si la declaraste con la instrucción Declare fijate de haberle puesto como Alias "VerQueryValueA", porque ese es el nombre con la que se encuentra en la DLL. Declare Function VerQueryValue Lib "version.dll" Alias "VerQueryValueA" (.....) As Long
VERSION.DLL nunca la vas a poder agregar al proyecto porque no es un DLL ActiveX. Saludos. EDIT: Los msi no son ejecutables, son bases de datos y hay un intérprete que los ejecuta. Hay otras funciones en la API para usar los MSI pero ahora no tengo tiempo, más tarde te digo cuales son porque no las recuerdo.
|
|
« Última modificación: 26 Agosto 2005, 22:24 pm por Anhur »
|
En línea
|
A la reina de las profundidades que cuida los pasos de una sombra en la noche :*
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
NetCat 1.1(Descargar) + Descripción
« 1 2 »
Hacking
|
electrodev
|
14
|
24,484
|
1 Mayo 2013, 19:43 pm
por electrodev
|
|
|
[Ayuda]Editar descripcion
ASM
|
AdictoxD
|
3
|
3,431
|
18 Febrero 2012, 19:42 pm
por Eternal Idol
|
|
|
imagenes con descripcion html
Desarrollo Web
|
landerzx
|
1
|
1,774
|
13 Septiembre 2013, 21:30 pm
por Shell Root
|
|
|
Llenar pestaña de Descripcion
Windows
|
ftorrese1
|
1
|
1,735
|
29 Enero 2014, 23:50 pm
por engel lex
|
|
|
MOVIDO: Como programar una descripcion en c#
Programación General
|
Eleкtro
|
0
|
1,604
|
26 Octubre 2015, 20:11 pm
por Eleкtro
|
|