delphi,如何编程实现检测电脑上是否装有pdf阅读器?急用,谢谢大家了
解决方案 »
- 打印数据集求助
- delphi2010 RICHEDIT问题~!
- 向高手请教:请问怎样在不打开数据库的前提下,得到数据库表明及表的字段名?
- 问题一:如何只消除在Canvas上画的直线:
- 关于日期的存储和查询!急!急!
- ReportBuilder中如何按照字段值的左半部分分组?
- 请教delphi如何返回两个时间的时间差
- 如何在Tadoquery中实现一次执行多个操作?
- 菜鸟问题:程序运行第二个实例时出现"Windows Socket 错误: (10048), on API 'bind'信息,请问是如何产生的?怎么解决?
- 出600分征求纯win API解决方案,周六结帐。。如果你的答案能解决问题请注明属于那个板块,我转移帖子后加分。 地址: http://www.csdn.net/expert/TopicView.asp?id=246356
- delphi里面怎么截取字符串?
- 关于住来单位的表如何设计
能不能帮我找一段代码,或者写一段?对delphi不是很熟,谢谢了
h: HKEY;
begin
if RegOpenKey(HKEY_CLASSES_ROOT, '.pdf', h) = ERROR_SUCCESS then
begin
RegCloseKey(h);
ShowMessage('装有pdf阅读器')
end else
ShowMessage('未装pdf阅读器')
end;
就是uses什么东西?谢谢了
这个是检测电脑上有没有.pdf格式的文件吧?我卸载了我的阅读器可是还是显示安装了啊,大神啊,救命啊
1.读取HKEY_CLASSES_ROOT\.pdf下默认项的值,例如:AcroExch.Document.11;
2.读取HKEY_CLASSES_ROOT\AcroExch.Document.11\shell\Open\command下单默认项,例如:"C:\Program Files (x86)\Adobe\Reader 11.0\Reader\AcroRd32.exe" "%1";
3.分离应用程序的路径,判断文件是否存在即可,例如"C:\Program Files (x86)\Adobe\Reader 11.0\Reader\AcroRd32.exe"。
代码,参考上边的写一个,或者哪位高手给写个。
var
aregistry:TRegistry;
begin
aregistry:=TRegistry.Create;
aregistry.RootKey:=HKEY_LOCAL_MACHINE;
try
if aregistry.OpenKey('SOFTWARE\Adobe\Acrobat Reader',True) then
begin
ShowMessage('已安装');
end else
begin
ShowMessage('未安装');
end; except
end;
end;
注: 某些文件格式无法获取。procedure TForm1.Button1Click(Sender: TObject);
var
MyRegistry : TRegistry;
t1 , t2 : string;
begin
if Edit1.Text <> '' then //文件扩展名,例如pdf
begin
MyRegistry := TRegistry.Create;
MyRegistry.RootKey := HKEY_CLASSES_ROOT;
if (MyRegistry.OpenKey('.'+Edit1.Text,False)) then
begin
t1 := MyRegistry.ReadString('');
MyRegistry.CloseKey;
if t1 <> '' then
begin
if (MyRegistry.OpenKey(t1 + '\shell\Open\command',False)) then
begin
t2 := MyRegistry.ReadString('');
Edit2.Text := t2; //关联的命令行
end;
MyRegistry.CloseKey;
end;
end;
MyRegistry.Free;
end;
end;
但是我做了约定(而且用的控件也是Adobe的),如果没装Adobe reader就不能打开。而LZ的问题是为了什么? 判断所有的能打开pdf文件的软件是否安装? 你能告诉我有哪些软件吗?