高分求GetFileVersionInfo用法? 分数不够可以再加!

le123 2006-11-23 06:00:01
GetFileVersionInfo怎么用? 大虾请给出实例!
别忘了,定义变量,结构都写出来,感激不尽!
...全文
686 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
loginyhb 2006-12-05
  • 打赏
  • 举报
回复
jf
LearnPro 2006-12-05
  • 打赏
  • 举报
回复
lu_len = 256
可以用函数 GetFileVersionInfoSize代替(256太小)
LearnPro 2006-12-05
  • 打赏
  • 举报
回复
这个是刚刚在pb找到的,可以用但是一个不小心编译器会崩溃(是pb官方的例子)
声明:
FUNCTION boolean GetFileVersionInfoA(ref string filename, ulong f_handle, ulong f_length, ref lpdata lpdata2) LIBRARY "version.dll"

结构体:
struct lpdata
ulong dwsignature
ulong dwstrucversion
ulong dwfileversionms
ulong dwfileversionls
ulong dwproductversionms
ulong dwproductversionls
ulong dwfileflagsmask
ulong dwfileflags
ulong dwfileos
ulong dwfiletype
ulong dwfilesubtype
ulong dwfiledatems
ulong dwfiledatels
}
代码例子
boolean lb_rtn
string ls_filename
ulong lu_hand, lu_len
lpdata lpdata2
ls_filename = "c:\windows\calc.exe" // The calculator would be a
good file to test against.
setnull(lu_hand)
lu_len = 256
lb_rtn = GetFileVersionInfoA(ls_filename, lu_hand, lu_len, lpdata2)
// Viewing the output
// -------------------------------------------------------------
sle_1.text = string(lpdata2.dwSignature)
sle_2.text = string(lpdata2.dwStrucVersion)
sle_3.text = string(lpdata2.dwFileVersionMS)
sle_4.text = string(lpdata2.dwFileVersionLS)
sle_5.text = string(lpdata2.dwProductVersionMS)
sle_6.text = string(lpdata2.dwProductVersionLS)
sle_7.text = string(lpdata2.dwFileFlagsMask)
sle_8.text = string(lpdata2.dwFileFlags)
sle_9.text = string(lpdata2.dwFileOS)
sle_10.text = string(lpdata2.dwFileType)
sle_11.text = string(lpdata2.dwFileSubtype)
sle_12.text = string(lpdata2.dwFileDateMS)
sle_13.text = string(lpdata2.dwFileDateLS)
Messagebox("Return Code", string(lb_rtn))
//

这样函数就可以调用了但他容易使pb编译器崩溃。(正在找这个原因)
青锋-SS 2006-11-24
  • 打赏
  • 举报
回复
没用过.
le123 2006-11-24
  • 打赏
  • 举报
回复
还有没有人会呀?
polestarxu 2006-11-23
  • 打赏
  • 举报
回复
收藏,PB和VB相差不是太大,呵呵
lovelihp 2006-11-23
  • 打赏
  • 举报
回复
API的,就是VB例子比较好找。。
le123 2006-11-23
  • 打赏
  • 举报
回复
您的挺不错,只不过是VB的例子,我要咱PB的例子
youqiong 2006-11-23
  • 打赏
  • 举报
回复
Private Declare Function GetFileVersionInfo Lib "Version.dll" Alias "GetFileVersionInfoA" (ByVal lptstrFilename As String, ByVal dwhandle As Long, ByVal dwlen As Long, lpData As Any) As Long
Private Declare Function GetFileVersionInfoSize Lib "Version.dll" Alias "GetFileVersionInfoSizeA" (ByVal lptstrFilename As String, lpdwHandle As Long) As Long
Private Declare Function VerQueryValue Lib "Version.dll" Alias "VerQueryValueA" (pBlock As Any, ByVal lpSubBlock As String, lplpBuffer As Any, puLen As Long) As Long
Private Declare Sub MoveMemory Lib "kernel32" Alias "RtlMoveMemory" (dest As Any, ByVal Source As Long, ByVal length As Long)
Dim Filename As String, Directory As String, FullFileName As String
Dim StrucVer As String, FileVer As String, ProdVer As String
Dim FileFlags As String, FileOS As String, FileType As String, FileSubType As String
Private Sub DisplayVerInfo()
Dim rc As Long, lDummy As Long, sBuffer() As Byte
Dim lBufferLen As Long, lVerPointer As Long, udtVerBuffer As VS_FIXEDFILEINFO
Dim lVerbufferLen As Long
'*** Get size ****
lBufferLen = GetFileVersionInfoSize(FullFileName, lDummy)
If lBufferLen < 1 Then
MsgBox "No Version Info available!"
Exit Sub
End If
'**** Store info to udtVerBuffer struct ****
ReDim sBuffer(lBufferLen)
rc = GetFileVersionInfo(FullFileName, 0&, lBufferLen, sBuffer(0))
rc = VerQueryValue(sBuffer(0), "\", lVerPointer, lVerbufferLen)
MoveMemory udtVerBuffer, lVerPointer, Len(udtVerBuffer)
'**** Determine Structure Version number - NOT USED ****
StrucVer = Format$(udtVerBuffer.dwStrucVersionh) & "." & Format$(udtVerBuffer.dwStrucVersionl)
'**** Determine File Version number ****
FileVer = Format$(udtVerBuffer.dwFileVersionMSh) & "." & Format$(udtVerBuffer.dwFileVersionMSl) & "." & Format$(udtVerBuffer.dwFileVersionLSh) & "." & Format$(udtVerBuffer.dwFileVersionLSl)
'**** Determine Product Version number ****
ProdVer = Format$(udtVerBuffer.dwProductVersionMSh) & "." & Format$(udtVerBuffer.dwProductVersionMSl) & "." & Format$(udtVerBuffer.dwProductVersionLSh) & "." & Format$(udtVerBuffer.dwProductVersionLSl)
'**** Determine Boolean attributes of File ****
FileFlags = ""
If udtVerBuffer.dwFileFlags And VS_FF_DEBUG Then FileFlags = "Debug "
If udtVerBuffer.dwFileFlags And VS_FF_PRERELEASE Then FileFlags = FileFlags & "PreRel "
If udtVerBuffer.dwFileFlags And VS_FF_PATCHED Then FileFlags = FileFlags & "Patched "
If udtVerBuffer.dwFileFlags And VS_FF_PRIVATEBUILD Then FileFlags = FileFlags & "Private "
If udtVerBuffer.dwFileFlags And VS_FF_INFOINFERRE Then FileFlags = FileFlags & "Info "
If udtVerBuffer.dwFileFlags And VS_FF_SPECIALBUILD Then FileFlags = FileFlags & "Special "
If udtVerBuffer.dwFileFlags And VFT2_UNKNOWN Then FileFlags = FileFlags + "Unknown "
'**** Determine OS for which file was designed ****
Select Case udtVerBuffer.dwFileOS
Case VOS_DOS_WINDOWS16
FileOS = "DOS-Win16"
Case VOS_DOS_WINDOWS32
FileOS = "DOS-Win32"
Case VOS_OS216_PM16
FileOS = "OS/2-16 PM-16"
Case VOS_OS232_PM32
FileOS = "OS/2-16 PM-32"
Case VOS_NT_WINDOWS32
FileOS = "NT-Win32"
Case other
FileOS = "Unknown"
End Select
Select Case udtVerBuffer.dwFileType
Case VFT_APP
FileType = "App"
Case VFT_DLL
FileType = "DLL"
Case VFT_DRV
FileType = "Driver"
Select Case udtVerBuffer.dwFileSubtype
Case VFT2_DRV_PRINTER
FileSubType = "Printer drv"
Case VFT2_DRV_KEYBOARD
FileSubType = "Keyboard drv"
Case VFT2_DRV_LANGUAGE
FileSubType = "Language drv"
Case VFT2_DRV_DISPLAY
FileSubType = "Display drv"
Case VFT2_DRV_MOUSE
FileSubType = "Mouse drv"
Case VFT2_DRV_NETWORK
FileSubType = "Network drv"
Case VFT2_DRV_SYSTEM
FileSubType = "System drv"
Case VFT2_DRV_INSTALLABLE
FileSubType = "Installable"
Case VFT2_DRV_SOUND
FileSubType = "Sound drv"
Case VFT2_DRV_COMM
FileSubType = "Comm drv"
Case VFT2_UNKNOWN
FileSubType = "Unknown"
End Select
Case VFT_FONT
FileType = "Font"
Select Case udtVerBuffer.dwFileSubtype
Case VFT_FONT_RASTER
FileSubType = "Raster Font"
Case VFT_FONT_VECTOR
FileSubType = "Vector Font"
Case VFT_FONT_TRUETYPE
FileSubType = "TrueType Font"
End Select
Case VFT_VXD
FileType = "VxD"
Case VFT_STATIC_LIB
FileType = "Lib"
Case Else
FileType = "Unknown"
End Select
End Sub
Private Sub Form_Load()
'Source -> MS Knowledge Base
'set the file
Filename = "kernel32.dll"
Directory = "c:\windows\system\"
FullFileName = Directory + Filename
'set graphics mode to persistent
Me.AutoRedraw = True
'retrieve the information
DisplayVerInfo
'show the results
Me.Print "Full filename: " + FullFileName
Me.Print "File version: " + FileVer
Me.Print "Product version: " + ProdVer
Me.Print "File flags: " + FileFlags
Me.Print "File OS: " + FileOS
Me.Print "File type: " + FileType + IIf(FileSubType = "", "", " (" + FileSubType + ")")
End Sub
youqiong 2006-11-23
  • 打赏
  • 举报
回复
vb中调用例子:
Const VS_FFI_SIGNATURE = &HFEEF04BD
Const VS_FFI_STRUCVERSION = &H10000
Const VS_FFI_FILEFLAGSMASK = &H3F&
Const VS_FF_DEBUG = &H1
Const VS_FF_PRERELEASE = &H2
Const VS_FF_PATCHED = &H4
Const VS_FF_PRIVATEBUILD = &H8
Const VS_FF_INFOINFERRED = &H10
Const VS_FF_SPECIALBUILD = &H20
Const VOS_UNKNOWN = &H0
Const VOS_DOS = &H10000
Const VOS_OS216 = &H20000
Const VOS_OS232 = &H30000
Const VOS_NT = &H40000
Const VOS__BASE = &H0
Const VOS__WINDOWS16 = &H1
Const VOS__PM16 = &H2
Const VOS__PM32 = &H3
Const VOS__WINDOWS32 = &H4
Const VOS_DOS_WINDOWS16 = &H10001
Const VOS_DOS_WINDOWS32 = &H10004
Const VOS_OS216_PM16 = &H20002
Const VOS_OS232_PM32 = &H30003
Const VOS_NT_WINDOWS32 = &H40004
Const VFT_UNKNOWN = &H0
Const VFT_APP = &H1
Const VFT_DLL = &H2
Const VFT_DRV = &H3
Const VFT_FONT = &H4
Const VFT_VXD = &H5
Const VFT_STATIC_LIB = &H7
Const VFT2_UNKNOWN = &H0
Const VFT2_DRV_PRINTER = &H1
Const VFT2_DRV_KEYBOARD = &H2
Const VFT2_DRV_LANGUAGE = &H3
Const VFT2_DRV_DISPLAY = &H4
Const VFT2_DRV_MOUSE = &H5
Const VFT2_DRV_NETWORK = &H6
Const VFT2_DRV_SYSTEM = &H7
Const VFT2_DRV_INSTALLABLE = &H8
Const VFT2_DRV_SOUND = &H9
Const VFT2_DRV_COMM = &HA
Private Type VS_FIXEDFILEINFO
dwSignature As Long
dwStrucVersionl As Integer ' e.g. = &h0000 = 0
dwStrucVersionh As Integer ' e.g. = &h0042 = .42
dwFileVersionMSl As Integer ' e.g. = &h0003 = 3
dwFileVersionMSh As Integer ' e.g. = &h0075 = .75
dwFileVersionLSl As Integer ' e.g. = &h0000 = 0
dwFileVersionLSh As Integer ' e.g. = &h0031 = .31
dwProductVersionMSl As Integer ' e.g. = &h0003 = 3
dwProductVersionMSh As Integer ' e.g. = &h0010 = .1
dwProductVersionLSl As Integer ' e.g. = &h0000 = 0
dwProductVersionLSh As Integer ' e.g. = &h0031 = .31
dwFileFlagsMask As Long ' = &h3F for version "0.42"
dwFileFlags As Long ' e.g. VFF_DEBUG Or VFF_PRERELEASE
dwFileOS As Long ' e.g. VOS_DOS_WINDOWS16
dwFileType As Long ' e.g. VFT_DRIVER
dwFileSubtype As Long ' e.g. VFT2_DRV_KEYBOARD
dwFileDateMS As Long ' e.g. 0
dwFileDateLS As Long ' e.g. 0
End Type
youqiong 2006-11-23
  • 打赏
  • 举报
回复
【函数】
GetFileVersionInfo

【操作系统】
Win9x:Y
WinNT:Y

【声明】
Function ulong GetFileVersionInfo(ref string lptstrFilename,ulong dwHandle,ulong dwLen,ref Any lpData) LIBRARY "version.dll" ALIAS FOR "GetFileVersionInfoA"

【说明】

从支持版本标记的一个模块里获取文件版本信息


【返回值】

Long,非零表示成功,零表示失败。会设置GetLastError

【其它】

请看vb的api文本查看器中的声明:Declare Function
GetFileVersionInfo Lib "version.dll" Alias "GetFileVersionInfoA"
(ByVal lptstrFilename As String, ByVal dwHandle As Long, ByVal dwLen As Long, lpData As
Any) As Long

【参数列表】
lptstrFilename - String,欲从中载入版本信息的一个文件的名字

dwHandle ------- Long,win32中未用

dwLen ---------- Long,由lpData参数指定的字节数组或缓冲区的大小。用GetFileVersionInfoSize函数判断要求的缓冲区长度有多大

lpData --------- Byte,指定一个字节缓冲区的第一个字节。该缓冲区用于装载文件的版本信息
lovelihp 2006-11-23
  • 打赏
  • 举报
回复
没用过,顶。
下载代码方式:https://pan.quark.cn/s/f37bcecd66c0 YOLOv3(You Only Look Once version 3)是一种基于深度学习技术的目标检测方法,由Joseph Redmon、Ali Farhadi等研究者于2018年开发。该算法在目标检测领域展现出广泛的应用前景,特别是在实时视频处理、自动驾驶系统以及智能监控系统等场景中。与YOLO的前两个版本相比,YOLOv3在提升检测准确性的同时,依然维持了较高的处理速度。YOLOv3模型的关键构成要素包括三个主要部分:网络设计、损失评估机制以及数据准备流程。1. **网络设计**:YOLOv3以DarkNet-53作为其基础网络结构,DarkNet-53是一种包含53层卷积层的深度卷积神经网络,其设计目标在于实现准确性与计算效率的均衡。YOLOv3引入了特征金字塔网络(Feature Pyramid Network, FPN)的理念,这一创新能够有效检测不同尺寸的目标。模型通过多个层级进行预测,每个层级专门负责识别特定尺寸的物体,从而显著增强了小尺寸目标的检测性能。2. **多尺度预测**:YOLOv3在三个不同的尺度上执行预测任务,每个尺度对应一组不同的锚框(Anchor Boxes),锚框是预先设定的可能目标尺寸,用于初始化检测框。每个网格单元负责预测多个锚框,每个锚框包含两个坐标偏移量(表示框的位置)、一个置信度得分(表明该框内存在目标的概率)以及类别概率。3. **优化的Anchor Boxes**:与YOLOv2相比,YOLOv3采用了更多种类的锚框,这些锚框具有不同的比例和尺寸,从而更有效地适应各种形状和大小的目标。4. **损失评估机制**:YOLOv3的...

681

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder API 调用
社区管理员
  • API 调用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧