2014-09-26 31 views
0

如何在我的Delphi應用程序中自動打開自定義擴展?我試圖使應用程序 加載文本文件,但具有不同的擴展名。德爾福 - 如何註冊文件擴展名爲自動打開?

例如:Text.DZ |所有我想要的是當我點擊文件與.DZ擴展它會自動打開我的應用程序,並將文本加載到memo1.lines.text

我知道我必須註冊我的新自定義擴展,但我不知道如何去做,並將 加載到我的應用程序的文本。

此外,如果你可以包括一個很棒的源代碼示例。

任何幫助將不勝感激!和 對不起,我的新手和糟糕的英文解釋,但我希望你們瞭解我(^ - ^)/。

+0

注意:那裏的答案也簡要介紹瞭如果你想在整個系統範圍內設置它,該怎麼做。 – hvd 2014-09-26 07:36:04

+0

這不一定解決OP的問題。目前尚不清楚他是否只想在他自己的系統上運行他的應用程序,或者它是否用於產品目的。有兩個不同的解決方案。 – 2014-09-26 18:56:42

回答

1

有一種方法可以通過編程來實現,雖然我不記得袖口是如何脫落的。也就是說,如果你只是想爲自己的個人使用而做,而不是將其分發給其他人的軟件,那麼最簡單的方法就是使用Windows資源管理器:單擊數據文件然後右鍵單擊並選擇打開方式 - > ...您可能需要選擇底部的其他...選項。這會彈出一個對話框,讓你選擇你的應用程序。還應該有一個複選框,表示類似「Make Default」或「Always With This」之類的東西,或者沿着這些線條。確保已選中該框。然後點擊確定幾次,你就可以參加比賽了。

但是,您還需要設置您的應用程序以從命令行讀取文件名。你使用ParamStr和ParamCount來做到這一點。

for i := 0 to ParamCount do 
    ShowMessage('Parameter '+IntToStr(i)+' = '+ParamStr(i)); 

當你的數據文件雙擊,它會打開你的應用程序,並通過此文件名作爲ParamStr這(1)。所以,當你得到它,簡單地做這樣的事情:

memo1.lines.LoadFromFile(ParamStr(1)); 

使用此作爲起點(它不會編譯,如果你只是複製和粘貼!):

procedure TMyForm234:FormCreate(blah blah) 
begin 
    if ParamCount > 0 then 
    theMemo.Lines.LoadFromFile(ParamStr(1)); 
end; 
+0

謝謝大衛兄弟!但是我把代碼放在哪個事件上呢?通知或什麼?釹我不wwant消息顯示在加載過程中:D感謝隊友的幫助 – M0HX 2014-09-26 15:30:35

+0

大衛施瓦茨那麼我如何可以運行這個默默地或在什麼事件,我應該把這些代碼; c抱歉,我是如此noob和對不起,因爲stopid初學者; c – M0HX 2014-09-26 15:41:39

+0

我認爲這裏的人們正在假設你正在尋找一種解決方案來製作需要分發給數十億人的軟件。如果你能爲人們澄清這個問題是否僅僅是爲了你自己的個人需要,或者你正在分發給大衆的程序,那真是太棒了。 – 2014-09-26 18:57:53