如何检测某些软件已安装并测试

山东蓝鸟贵薪 2011-06-19 02:06:47
如何检测某些软件已安装并测试
测试软件包括:
office,txt,CAD/CAM/CAE/ProE
...全文
276 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
山东蓝鸟贵薪 2011-06-29
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 m617105 的回复:]
肯定需要自己去终止啊,将createoleobject的返回值保存下来即variant类型的值,然后返回值的exit方法。例如:
var
xls:variant;
try
xls:=CreateOleObject('excel.Application');
except
ShowMessage('未安装Excel');
end;
xls.exit;
[/Quote]

加上了这个xls.ext;
还是出错了呀
Method 'exit' not supperted bu automation object.
浩南_哥 2011-06-28
  • 打赏
  • 举报
回复
肯定需要自己去终止啊,将createoleobject的返回值保存下来即variant类型的值,然后返回值的exit方法。例如:
var
xls:variant;
try
  xls:=CreateOleObject('excel.Application');
except
  ShowMessage('未安装WINWORD');
end;
xls.exit;
山东蓝鸟贵薪 2011-06-28
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 m617105 的回复:]
引用 2 楼 bdmh 的回复:

人家安装完都是在注册表中有记录的,自己查注册表

+++
这个方法就可以,如果你担心“软件卸载”之后注册表会残留的话嘛,你可以在程序里用
CreateOleObject,例如

Delphi(Pascal) code

//针对Excel
try
CreateOleObject('Excel.Application');
excep……
[/Quote]
这个是可以的,但是如下所示:
//针对WORD
try
CreateOleObject('WINWORD.Application');
except
ShowMessage('未安装WINWORD');
end;
能正常测试出WINWORD是否安装,但是每检测一次,进程中就出现一个
WINWORD.exe,必须"终止进程"才行呀
山东蓝鸟贵薪 2011-06-21
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 vividw 的回复:]
用虚拟机 干净的系统
全面对面 安装某软件 前后的差异。
[/Quote]
如何处理?????????
天涯倦客 2011-06-21
  • 打赏
  • 举报
回复
用虚拟机 干净的系统
全面对面 安装某软件 前后的差异。
山东蓝鸟贵薪 2011-06-21
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 m617105 的回复:]
引用 2 楼 bdmh 的回复:

人家安装完都是在注册表中有记录的,自己查注册表

+++
这个方法就可以,如果你担心“软件卸载”之后注册表会残留的话嘛,你可以在程序里用
CreateOleObject,例如

Delphi(Pascal) code

//针对Excel
try
CreateOleObject('Excel.Application');
excep……
[/Quote]

为什么不能测试出Winrar压缩软件

try
CreateOleObject('WinRAR.Application');
except
ShowMessage('未安装WinRAR ');
end;
山东蓝鸟贵薪 2011-06-21
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 m617105 的回复:]
uses ComObj
[/Quote]
谢谢,我也刚找到了.............
浩南_哥 2011-06-21
  • 打赏
  • 举报
回复
uses ComObj
山东蓝鸟贵薪 2011-06-21
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 m617105 的回复:]
引用 2 楼 bdmh 的回复:

人家安装完都是在注册表中有记录的,自己查注册表

+++
这个方法就可以,如果你担心“软件卸载”之后注册表会残留的话嘛,你可以在程序里用
CreateOleObject,例如

Delphi(Pascal) code

//针对Excel
try
CreateOleObject('Excel.Application');
excep……
[/Quote]
我查了一下,提示:未引用单元,但是提示没有引用单元,我又加载单元: Excel2000
可是还是出错了,错误代码:
CreateOleObject('Excel.Application');

[错误] Unit1.pas(66): Undeclared identifier: 'CreateOleObject'
浩南_哥 2011-06-21
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 bdmh 的回复:]

人家安装完都是在注册表中有记录的,自己查注册表
[/Quote]
+++
这个方法就可以,如果你担心“软件卸载”之后注册表会残留的话嘛,你可以在程序里用
CreateOleObject,例如

//针对Excel
try
CreateOleObject('Excel.Application');
except
ShowMessage('未安装Excel');
end;
//txt的话嘛,有很多软件都可以编辑文本
//可以试试从文件默认打开程序入手
文件关联

山东蓝鸟贵薪 2011-06-21
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 huojiaqi1989 的回复:]
你是想知道用户有没有安装吧,呵呵 建议你还是针对注册表操作比较好哦!FileExists(注册表地址)
好好看看注册表相关的吧!
[/Quote]
若文件删除了,注册表中不一定被"清理"呀
一如当初 2011-06-20
  • 打赏
  • 举报
回复
我最近也有这样的问题,我在想枚举已经安装的程序,不过可能有些绿色版软件没有安装信息的
暂时想到的办法是向楼上的朋友说的,验证文件是否存在,当然验证的文件需要是这个软件中的核心文件,必不可少的
shijies 2011-06-20
  • 打赏
  • 举报
回复
FileExists()可以判断某个文件夹内是否存在某个文件,一般注册文件都是放到某个指定的路径,这个在安装程序的时候就确定了,你可以找到这个路径,还要找到这个文件的路径,用找函数路径的函数(忘了是什么),再与注册表里的路径进行对照。
dropme 2011-06-20
  • 打赏
  • 举报
回复
从注册表里查文件名和安装路径,然后FileExists()?
shijies 2011-06-20
  • 打赏
  • 举报
回复
检测的应该是exe文件,而不是扩展名。
huojiaqi1989 2011-06-20
  • 打赏
  • 举报
回复
你是想知道用户有没有安装吧,呵呵 建议你还是针对注册表操作比较好哦!FileExists(注册表地址)
好好看看注册表相关的吧!
DelphiTeacher 2011-06-20
  • 打赏
  • 举报
回复
哈哈,在注册表里有有注册的。。
山东蓝鸟贵薪 2011-06-20
  • 打赏
  • 举报
回复
我现在的问题,如何测试出OFFICE的版本及路径
山东蓝鸟贵薪 2011-06-19
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 bdmh 的回复:]
人家安装完都是在注册表中有记录的,自己查注册表
[/Quote]
这个我知道呀,可是"软件卸载"后,注册表中的一些"键值",不能完全的清理呀,
所有有时会"误报"呀
bdmh 2011-06-19
  • 打赏
  • 举报
回复
人家安装完都是在注册表中有记录的,自己查注册表
加载更多回复(1)

16,749

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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