全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:4781
推到 Plurk!
推到 Facebook!

為何點二下.dpr會啟動delphi,點二下.mdb會啟動access?

答題得分者是:pceyes
ry_lee
高階會員


發表:368
回覆:251
積分:123
註冊:2002-03-19

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-09-16 01:31:17 IP:125.224.xxx.xxx 訂閱
為何點二下.dpr會啟動delphi ?,
點二下.mdb會啟動access?
點二下.xls會啟動excel?
pceyes
尊榮會員


發表:70
回覆:657
積分:1140
註冊:2003-03-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-09-16 06:25:23 IP:220.141.xxx.xxx 訂閱
http://www.swissdelphicenter.ch/torry/showcode.php?id=178        
...Associate an application with a file extension?


[code delphi]
uses
registry, shlobj;

procedure TForm1.RegisterFileType(prefix: string; exepfad: string);
var
reg: TRegistry;
begin
reg := TRegistry.Create;
try
reg.RootKey := HKEY_CLASSES_ROOT;
//create a new key --> .pci
reg.OpenKey('.' prefix, True);
try
//create a new value for this key --> pcifile
reg.Writestring('', prefix 'file');
finally
reg.CloseKey;
end;
//create a new key --> pcifile
reg.CreateKey(prefix 'file');
//create a new key pcifile\DefaultIcon
reg.OpenKey(prefix 'file\DefaultIcon', True);
//and create a value where the icon is stored --> c:\project1.exe,0
try
reg.Writestring('', exepfad ',0');
finally
reg.CloseKey;
end;
reg.OpenKey(prefix 'file\shell\open\command', True);
//create value where exefile is stored --> c:\project1.exe "%1"
try
reg.Writestring('', exepfad ' "%1"');
finally
reg.CloseKey;
end;
finally
reg.Free;
end;
SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, nil, nil);
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
// RegisterFileType('自己設的延申檔名, 'c:\你自己寫的程式.exe');
RegisterFileType('pci', 'c:\project1.exe');
end;

[/code]
------
努力會更接近成功
編輯記錄
pceyes 重新編輯於 2008-09-16 06:35:43, 註解 無‧
pceyes
尊榮會員


發表:70
回覆:657
積分:1140
註冊:2003-03-13

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-09-16 06:33:14 IP:220.141.xxx.xxx 訂閱
取得你的電腦註冊的執行延伸檔名的程式
http://www.swissdelphicenter.ch/torry/showcode.php?id=1618
...Enumerate all extensions and their servers in the registry?
{
This Code will return the programs associated with each extension.
You can obviously modify it to search for a specific extension.
}


[code delphi]
uses Registry;

procedure TForm1.Button1Click(Sender: TObject);
var
reg: TRegistry;
keys: TStringList;
i: Integer;
typename, displayname, server: string;
begin
memo1.Clear;
reg := TRegistry.Create;
try
reg.rootkey := HKEY_CLASSES_ROOT;
if reg.OpenKey('', False) then
begin
keys := TStringList.Create;
try
reg.GetKeyNames(keys);
reg.CloseKey;
{memo1.lines.addstrings(keys);}
for i := 0 to keys.Count - 1 do
begin
if keys[i][1] = '.' then
begin
{this is an extension, get its typename}
if reg.OpenKey(keys[i], False) then
begin
typename := reg.ReadString('');
reg.CloseKey;
if typename <> '' then
begin
if reg.OpenKey(typename, False) then
begin
displayname := reg.ReadString('');
reg.CloseKey;
end;
if reg.OpenKey(typename '\shell\open\command', False) then
begin
server := reg.ReadString('');
memo1.Lines.Add(Format('Extension: "%s", Typename: "%s", Displayname:"%s"'
#13#10' Server: %s',
[keys[i], typename, displayname, server]));
reg.CloseKey;
end;
end;
end;
end;
end;
finally
keys.Free;
end;
end;
finally
reg.Free
end;
end;

[/code]
------
努力會更接近成功
編輯記錄
pceyes 重新編輯於 2008-09-16 06:36:43, 註解 無‧
careychen
尊榮會員


發表:41
回覆:580
積分:959
註冊:2004-03-03

發送簡訊給我
#4 引用回覆 回覆 發表時間:2008-09-16 21:30:51 IP:59.126.xxx.xxx 訂閱
不知道您純粹是問【為何如此】,還是要問【怎麼如此】
【為何如此】的話,其實就是有副檔名的設計, Windows 才能依據副檔名來自動開啟所需的對應程式來讓 User 使用
並且讓該 ap 直接開啟檔案,省去 User 得先開啟 ap 後再找尋某個檔案的設計

如果是【怎麼如此】的話,那 pceyes 大已經回您了

還是您是要問...........【為何是點二下】??????? 呵呵,我似乎快跳進雞生蛋、蛋生雞的旋渦裡

===================引 用 ry_lee 文 章===================
為何點二下.dpr會啟動delphi ?,
點二下.mdb會啟動access?
點二下.xls會啟動excel?
------
價值的展現,來自於你用哪一個角度來看待它!!
編輯記錄
careychen 重新編輯於 2008-09-16 21:32:30, 註解 無‧
系統時間:2024-05-09 14:23:37
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!