码迷,mamicode.com
首页 > 其他好文 > 详细

获得同相应扩展文件名关联的应用程序

时间:2014-10-21 00:44:47      阅读:205      评论:0      收藏:0      [点我收藏+]

标签:io   os   ar   for   sp   文件   div   on   cti   

delphi 编程 获得同相应扩展文件名关联的应用程序,代码 如下:
 
unit Unit1;
 
interface
 
uses
 
Windows, Messages, Registry,IniFiles,SysUtils, Variants, Classes, Graphics, Controls, Form s,
 
Dialogs, StdCtrls;
 
type
 
TForm 1 = class(TForm )
 
    Button1: TButton;
 
    procedure Button1Click(Sender: TObject);
 
private
 
    { Private declarations }
 
public
 
    { Public declarations }
 
end;
 
var
 
Form 1: TForm 1;
 
implementation
 
{$R *.dfm}
 
function GetProgramAssociation (Ext : string) : string;
 
//取得相关联的文件
 
var 
 
reg: TRegistry;
 
s : string;
 
WinIni : TIniFile;
 
WinIniFileName : array[0..MAX_PATH] of char;
 
begin
 
s := ‘‘;
 
reg := TRegistry.Create;
 
//生成注册表对象
 
reg.RootKey := HKEY_CLASSES_ROOT;
 
if reg.OpenKey(‘.‘ + ext + ‘\shell\open\command‘,false) <> false then
 
//打开指定的键值
 
begin
 
      s := reg.ReadString(‘‘);
 
      reg.CloseKey;
 
end
 
else
 
begin
 
    //如果不能打开
 
    if reg.OpenKey(‘.‘ + ext, false) <> false then
 
      begin
 
        s := reg.ReadString(‘‘);
 
        reg.CloseKey;
 
        if s <> ‘‘ then
 
        begin
 
          if reg.OpenKey(s + ‘\shell\open\command‘,false) <> false then
 
            s := reg.ReadString(‘‘);
 
            reg.CloseKey;
 
          end;
 
        end;
 
end;
 
if Pos(‘%‘, s) > 0 then
 
    Delete(s, Pos(‘%‘, s), length(s));
 
if ((length(s) > 0) and (s[1] = ‘"‘)) then
 
    Delete(s, 1, 1);
 
if ((length(s) > 0) and (s[length(s)] = ‘"‘)) then
 
    Delete(s, Length(s), 1);
 
while ((length(s) > 0) and ((s[length(s)] = #32) or
 
    (s[length(s)] = ‘"‘))) do
 
    Delete(s, Length(s), 1);
 
GetWindowsDirectory(WinIniFileName, sizeof(WinIniFileName));
 
//得到系统目录
 
StrCat(WinIniFileName, ‘\win.ini‘);
 
WinIni := TIniFile.Create(WinIniFileName);
 
s := WinIni.ReadString(‘Extensions‘,ext,‘‘);
 
WinIni.Free;
 
{Delete any command line}
 
if Pos(‘ ^‘, s) > 0 then
 
    Delete(s, Pos(‘ ^‘, s), length(s));
 
result := s;
 
end;
 
procedure TForm 1.Button1Click(Sender: TObject);
 
begin
 
ShowMessage(GetProgramAssociation(‘gif‘));
 
end;
 
end.

获得同相应扩展文件名关联的应用程序

标签:io   os   ar   for   sp   文件   div   on   cti   

原文地址:http://www.cnblogs.com/kaibosoft/p/4039182.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!