delphi获取进程版本信息

结构体声明

typeTFileInfo = packed recordCommpanyName: widestring;FileDescription: widestring;FileVersion: widestring;InternalName: widestring;LegalCopyright: widestring;LegalTrademarks: widestring;OriginalFileName: widestring;ProductName: widestring;ProductVersion: widestring;Comments: widestring;VsFixedFileInfo: VS_FIXEDFILEINFO;UserDefineValue: widestring;end;

功能函数 

function GetFileVersionInfomation(const FileName: string; var info: TFileInfo; UserDefine: string = ''): boolean;
constSFInfo = '\StringFileInfo\';
varVersionInfo: PChar;InfoSize: DWORD;InfoPointer: Pointer;Translation: Pointer;VersionValue: widestring;unused: DWORD;
begintryunused := 0;Result := False;InfoSize := GetFileVersionInfoSizeW(pwidechar(FileName), unused);if InfoSize > 0 thenbegintryVersionInfo := AllocMem(InfoSize);Result := GetFileVersionInfoW(pwidechar(FileName), 0, InfoSize, VersionInfo);if Result thenbeginVerQueryValueW(VersionInfo, '\VarFileInfo\Translation', Translation, InfoSize);if Translation <> nil thenVersionValue := SFInfo + IntToHex(LoWord(Longint(Translation^)), 4) + IntToHex(HiWord(Longint(Translation^)), 4) + '\';VerQueryValueW(VersionInfo, pwidechar(VersionValue + 'CompanyName'), InfoPointer, InfoSize);info.CommpanyName := string(pwidechar(InfoPointer));VerQueryValueW(VersionInfo, pwidechar(VersionValue + 'FileDescription'), InfoPointer, InfoSize);info.FileDescription := string(pwidechar(InfoPointer));VerQueryValueW(VersionInfo, pwidechar(VersionValue + 'FileVersion'), InfoPointer, InfoSize);info.FileVersion := string(pwidechar(InfoPointer));VerQueryValueW(VersionInfo, pwidechar(VersionValue + 'InternalName'), InfoPointer, InfoSize);info.InternalName := string(pwidechar(InfoPointer));if info.InternalName = info.FileVersion theninfo.InternalName := 'UnKnown';VerQueryValueW(VersionInfo, pwidechar(VersionValue + 'LegalCopyright'), InfoPointer, InfoSize);info.LegalCopyright := string(pwidechar(InfoPointer));VerQueryValueW(VersionInfo, pwidechar(VersionValue + 'LegalTrademarks'), InfoPointer, InfoSize);info.LegalTrademarks := string(pwidechar(InfoPointer));if info.LegalTrademarks = info.LegalCopyright theninfo.LegalTrademarks := 'UnKnown';VerQueryValueW(VersionInfo, pwidechar(VersionValue + 'ProductName'), InfoPointer, InfoSize);info.ProductName := string(pwidechar(InfoPointer));VerQueryValueW(VersionInfo, pwidechar(VersionValue + 'ProductVersion'), InfoPointer, InfoSize);info.ProductVersion := string(pwidechar(InfoPointer));VerQueryValueW(VersionInfo, pwidechar(VersionValue + 'Comments'), InfoPointer, InfoSize);info.Comments := string(pwidechar(InfoPointer));if info.Comments = info.ProductVersion theninfo.Comments := 'UnKnown';end;finallyFreeMemory(VersionInfo);end;end;exceptResult := False;end;
end;
function GetFileVersion(FileName: string; index: integer): string;
varInfo: TFileInfo;
beginResult := '';tryif GetFileVersionInfomation(FileName, Info, 'WOW Version') thenbegincase index of0:Result := Info.Comments;1:Result := Info.CommpanyName;2:Result := Info.FileDescription;3:Result := Info.FileVersion;4:Result := Info.InternalName;5:Result := Info.LegalCopyright;6:Result := Info.LegalTrademarks;7:Result := Info.OriginalFileName;8:Result := Info.ProductName;9:Result := Info.ProductVersion;10:Result := Info.UserDefineValue;end;endelsebeginResult := 'Unknown';end;exceptResult := 'Unknown';end;
end;

调用此函数传入参数获取对应信息,其中filename是进程文件的路径

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/7100.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Django高级表单处理与验证实战

title: Django高级表单处理与验证实战 date: 2024/5/6 20:47:15 updated: 2024/5/6 20:47:15 categories: 后端开发 tags: Django表单验证逻辑模板渲染安全措施表单测试重定向管理最佳实践 引言&#xff1a; 在Web应用开发中&#xff0c;表单是用户与应用之间进行交互的重要…

OpenHarmony实战开发-请求自绘制内容绘制帧率

对于基于XComponent进行Native开发的业务&#xff0c;可以请求独立的绘制帧率进行内容开发&#xff0c;如游戏、自绘制UI框架对接等场景。 接口说明 开发步骤 说明&#xff1a; 本范例是通过Drawing在Native侧实现图形的绘制&#xff0c;并将其呈现在NativeWindow上 1.定义Ark…

《第一行代码》第二版学习笔记(7)——使用通知和摄像头

文章目录 一、使用通知二、调用摄像头 介绍了通知基于8.0的使用方法和如何调用摄像头拍照 一、使用通知 public void onClick(View v) {if (v.getId() R.id.send_notice){Intent intent new Intent(this,NotificationActivity.class);PendingIntent pi PendingIntent.getAct…

【哈希表】Leetcode 14. 最长公共前缀

题目讲解 14. 最长公共前缀 算法讲解 我们使用当前第一个字符串中的与后面的字符串作比较&#xff0c;如果第一个字符串中的字符没有出现在后面的字符串中&#xff0c;我们就直接返回&#xff1b;反之当容器中的所有字符串都遍历完成&#xff0c;说明所有的字符串都在该位置…

源码拾贝三则

目录 一 一种枚举类型的新型使用方式 二 Eigen库中的LDLT分解 三 Eigen中的访问者模式 一 一种枚举类型的新型使用方式 ///D:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\include\xiosbase enum _Iostate { // consta…

springcloud第4季 springcloud-alibaba之分布式事务seata

一 seata介绍 1.1 seata介绍 1.seata是一款解决分布式事务的解决方案&#xff0c;致力于在微服务架构下提供高性能和简单易用的分布式事务服务。 2.seata的几种术语&#xff1a;一个中心&#xff1a;全局事务id TC(Transaction Coordinator):事务协调者。负责维护全局和分…

双非二本找工作前的准备day21

学习目标&#xff1a; 每天复习代码随想录上的题目1-2道算法&#xff08;时间充足可以继续&#xff09; 今日碎碎念&#xff1a; 1&#xff09;今天开始是二叉树系列 2&#xff09;出租屋里不知道干啥&#xff0c;看看书啊刷刷算法&#xff0c;打打游戏&#xff0c;学学技术…

通过iMock学习Jvmsandbox

Jvm-sandbox Jvm-sandbox基于Jvm-sandbox的Mock平台iMockiMock的工程学习iMock怎么写的&#xff08;sandbox的module应该怎么写&#xff09; Jvm-sandbox Jvm-sandbox是阿里开源的一款java的沙箱&#xff0c;看网上的介绍在沙箱里你可以做你能想到的奇妙的事情。 基于Jvm-san…

JavaScript百炼成仙自学笔记——16

HTML&#xff1a; 是什么&#xff1f;HyperText Markup Language 既超文本标记语言&#xff08;www的描述语言&#xff09; 既平常上网时所看到的网页 为什么&#xff1f;把存放在一台计算机中的文本或是图形与另一台计算机中的文本或图形方便的联系在一起&#xff0c;形成…

Python turtle库 实现 随机彩色文字平面批量输出

# -*- coding: utf-8 -*- """ Spyder Editor This is a temporary script file. """ import turtle import random import turtle as t t.colormode(255) turtle.bgcolor("white") h255 l50#字号 m60#间隔 n500 t.penup() turtle.hide…

redis进阶--IDEA环境

目录 一、解决redis服务器端口问题 二、java环境下使用redis 三、javaSpringt环境下使用redis 四、redis持久化 1、持久化概念 2、redis持久化策略 3、RDB策略 4、AOF策略 5、混合持久化策略 五、redis事务 1、数据库事务 2、redis事务特点 3、redis事务的作用 4…

在模方中已经选好水岸线了,但是点处理瓦块的时候还是提示水岸线没选

答&#xff1a;能部分位置不闭合&#xff0c;双击右键闭合一下&#xff0c;可以强行闭合缺口。 模方是一款针对实景三维模型的冗余碎片、水面残缺、道路不平、标牌破损、纹理拉伸模糊等共性问题研发的实景三维模型修复编辑软件。模方4.1新增自动单体化建模功能&#xff0c;支持…

[UDS][OTA] 自定义 IntelHEX (IHEX) format read/write library in C

参考修改 参考github的MIT协议开源项目 ihex 改写的代码 https://gitee.com/liudegui/intelhex-c 修改点&#xff1a; 修改Makefile脚本&#xff0c;支持x86_X64平台和aarch64平台将默认读取行长度设置为16位删除与ihex和bin之间的转换无关的示例代码 十六进制描述 HEX格式…

车牌检测识别功能实现(pyqt)

在本专题前面相关博客中已经讲述了 pyqt + yolo + lprnet 实现的车牌检测识别功能。带qt界面的。 本博文将结合前面训练好的模型来实现车牌的检测与识别。并用pyqt实现界面。最终通过检测车牌检测识别功能。 1)、通过pyqt5设计界面 ui文件如下: <?xml version="1…

TC3xx MTU概述(2)

目录 1.概述 2.如何配置NDT 3.小结 1.概述 上篇TC3xx MTU概述(1)-CSDN博客我们讲解了MTU基本功能和MBIST基本概念&#xff0c;接下来我们继续讲解MTU如何配置NDT算法。 2.如何配置NDT 前面聊了那么多概念&#xff0c;我们还是来看看如何配置MTU来实现NDT。 MTU寄存器分为…

pdf 文件版面分析--PyMuPDF (python 文档解析提取)

1.介绍 PyMuPDF 和Fitz 是用于Python中处理PDF文件的相关模块。Fitz是P有MuPDF的字模块。提供一个简化和封装版本的P有MuPDF功能。 关系&#xff1a; PyMuPDF&#xff1a; 提供广泛的功能&#xff0c;用于操作PDF文档&#xff0c; 包括方便的高级函数与底层操作Fitz &#x…

liunx服务器部署Llama2大模型

模型&#xff1a;Llama2-chat-13B-Chinese-50W 01 下载安装 Llama2 模型 Huggingface在国内是访问不了的&#xff0c;需要使用代理。在这里推荐使用 clash-for-liunx 配置代理。 安装 git-lfs&#xff0c;用于大文件下载 sudo apt-get install git-lfs git lfs installHuggi…

java实现通用的文本相似度评估方法(余弦相似度计算)

余弦相似度计算&#xff1a;通用的文本相似度评估方法&#xff0c;通过计算向量之间的夹角来衡量文本的相似度 总体实现思路为&#xff1a; 对两段文本进行分词&#xff0c;得到单词列表。将两段文本的单词列表合并&#xff0c;并去除重复的单词&#xff0c;形成词汇表。根据词…

数据分析必备:一步步教你如何用numpy改变数据处理(5)

介绍&#xff1a; NumPy是Python中用于数值计算的一个非常强大的库&#xff0c;它提供了高效的N维数组对象和丰富的数学函数。在数据分析和科学计算领域&#xff0c;使用NumPy可以极大地提高编程效率和运算速度。以下是对NumPy的切片和索引操作的介绍&#xff1a; 解释说明&am…

Transformer 解析 超级详细版

推荐学习视频 汉语自然语言处理-从零解读碾压循环神经网络的transformer模型(一)- 注意力机制-位置编码-attention is all you need_哔哩哔哩_bilibili 目录 首先下transformer和LSTM的最大区别是什么&#xff1f; 1.positional \ encoding, 即位置嵌入(或位置编码); 2 自注…