我有.xml文件來存儲我的應用程序中的數據。用應用程序打開文件
現在我想單擊.xml文件 - >使用從.xml文件加載的數據啓動我的應用程序。
是什麼讓應用程序運行xml解析metods?
我不知道如何做到這一點,當我用我的應用程序打開.xml文件時會發生什麼? Windows是否使用.xml文件路徑獲取應用程序某種參數?另外WPF似乎沒有通常處理這些參數的Main()方法。
任何想法如何做到這一點?
我有.xml文件來存儲我的應用程序中的數據。用應用程序打開文件
現在我想單擊.xml文件 - >使用從.xml文件加載的數據啓動我的應用程序。
是什麼讓應用程序運行xml解析metods?
我不知道如何做到這一點,當我用我的應用程序打開.xml文件時會發生什麼? Windows是否使用.xml文件路徑獲取應用程序某種參數?另外WPF似乎沒有通常處理這些參數的Main()方法。
任何想法如何做到這一點?
因此,這裏是我做過什麼:
我做我自己的文件擴展名.XXX(裏面有,只是普通的XML),當我和我的應用程序中打開它,我在爲參數啓動窗口的構造檢查計使用在
Environment.GetCommandLineArgs()
如果計數> 1,我得到這串的文件絕對路徑的第二個參數。然後,我將字符串提取到處理文件打開的方法。
首先,您不能通過單擊xml文件來運行應用程序。你應該做的是通過按鈕點擊或任何通過文件讀取器或流讀取器讀取xml文件並採取這些內容並具有xmldocument doc = new xmldocument()的事件來調用某個方法。然後doc.LoadXml(filecontents)。然後,您可以使用內置的C#.NET方法解析文檔,例如doc.SelectSingleNode(節點名稱)。
如果您試圖找出與特定文件擴展名關聯的程序,那麼有兩種方法可以通過編程實現。第一種方法是通過執行名爲FindExecutable的Win32方法。 DllImport看起來像這樣:
[DllImport("shell32.dll")]
static extern int FindExecutable(string lpFile, string lpDirectory, [Out] StringBuilder lpResult);
第二種方法是在註冊表中查找。要找出哪個應用程序雙擊XML文件將會打開,您可以查看HKEY_CLASSES_ROOT\.xml
。然後你按照shell/open/command
的條目。這將爲您提供打開文件的應用程序名稱和路徑。
它被稱爲[文件關聯](http://en.wikipedia.org/wiki/File_association)。 – 2014-10-07 22:39:30
使用'Environment.GetCommandLineArgs()',它將返回一個'string []'。索引0將是你的應用程序的路徑,並且索引> = 1將有參數。因此,如果您打開與您的應用程序關聯的文件,或者如果您單擊 - >將文件拖到可執行文件上,應用程序將以2個參數運行(文件路徑[[0]中的應用程序的文件路徑和文件的文件路徑在[1]中)。您可以在索引[1]處使用此文件路徑在應用程序啓動時打開您的xml文件。希望這是有道理的。 – learningcs 2014-10-08 05:03:00
rshepp - 非常感謝。寫下你的答案,以便我可以給你分 – Safiron 2014-10-11 10:45:58