為何點二下.dpr會啟動delphi,點二下.mdb會啟動access? |
答題得分者是:pceyes
|
ry_lee
高階會員 ![]() ![]() ![]() ![]() 發表:368 回覆:251 積分:123 註冊:2002-03-19 發送簡訊給我 |
|
pceyes
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:70 回覆:657 積分:1140 註冊:2003-03-13 發送簡訊給我 |
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 發送簡訊給我 |
取得你的電腦註冊的執行延伸檔名的程式
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 發送簡訊給我 |
不知道您純粹是問【為何如此】,還是要問【怎麼如此】
【為何如此】的話,其實就是有副檔名的設計, Windows 才能依據副檔名來自動開啟所需的對應程式來讓 User 使用 並且讓該 ap 直接開啟檔案,省去 User 得先開啟 ap 後再找尋某個檔案的設計 如果是【怎麼如此】的話,那 pceyes 大已經回您了 還是您是要問...........【為何是點二下】??????? 呵呵,我似乎快跳進雞生蛋、蛋生雞的旋渦裡 ===================引 用 ry_lee 文 章=================== 為何點二下.dpr會啟動delphi ?, 點二下.mdb會啟動access? 點二下.xls會啟動excel?
------
價值的展現,來自於你用哪一個角度來看待它!!
編輯記錄
careychen 重新編輯於 2008-09-16 21:32:30, 註解 無‧
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |