2012-06-05 17 views
5

के साथ फ़ाइल खोलें मैंने सी # में एक फ़ाइल संपादक बनाया है, और मैं टूलबार में 'ओपन' बटन का उपयोग कर फाइलें खोल सकता हूं, मैंने प्रोग्राम में सही फ़ाइल प्रकार भी जुड़ा है, इसलिए जब मैं एक्सटेंशन के साथ फ़ाइल पर क्लिक करता हूं * .nlp प्रोग्राम सही तरीके से खुलता है, लेकिन फ़ाइल को स्वयं नहीं खोलता है (जो काफी तार्किक है क्योंकि मैंने इसे अभी तक कार्यान्वित नहीं किया है)एसोसिएशन

अब मेरा प्रश्न है, मैं इस तरह की चीज़ कैसे कार्यान्वित करूं? मैं चाहता हूं कि फ़ाइल खोलने और लोड होने पर लोड हो जाए।

(Btw, फ़ाइल सिर्फ सादा पाठ है, तो कुछ खास नहीं है, और है कि अगर मायने रखती है यह विंडोज़ के लिए है)

+0

आप अपने कार्यक्रम के साथ फ़ाइल प्रकार से संबद्ध किया? – gideon

+0

मैंने अभी इसे क्लिक किया है, और इसके साथ खोल दिया है .. और मेरे exe – Nick

+0

का चयन किया है, मुझे लगता है कि आप बस [कमांड लाइन] (http://msdn.microsoft.com/en-us/library/system.environment से पढ़ते हैं। कमांड लाइन)। –

उत्तर

4

खिड़कियों फ़ाइलों के समूह में HKEY_CLASSES_ROOT

के तहत संग्रहीत और प्रबंधित रजिस्ट्री में आप मैन्युअल रूप से या अंत में निम्नलिखित एक छोटे सेटअप प्रोग्राम रजिस्ट्री करने के लिए सही प्रविष्टियों लिखने के बारे में क्या कर सकते हैं कर रहे हैं।

आपको अपना एक्सटेंशन पंजीकृत करने की आवश्यकता है और फिर इसे this document वर्णन जैसे प्रोग्राम से संबद्ध करना होगा। यह भी देखें this doc आपका रजिस्ट्री इस तरह दिखना चाहिए:

HKEY_CLASSES_ROOT 
    .nlp 
     (Default) = YourProgID//can by anything you want 
    YourProgID 
     shell 
     open 
      command 
       (Default) = yourapp.exe %1 

अब, वे अपने जवाब के लिए महत्वपूर्ण कमांड कुंजी में %1 है। यह फ़ाइल नाम खोला गया था और यह आपके ऐप के लिए एक तर्क के रूप में पारित किया गया है।

तो:

static void Main(string[] args) 
{ 
    // args will contain your filename 
} 
2

वहाँ सीधे प्रबंध फ़ाइलों के समूह के लिए एक नेट एपीआई होने के लिए प्रकट नहीं होता है, लेकिन आप उपयोग कर सकते हैं आपको जिस कुंजी की आवश्यकता है उसे पढ़ने और लिखने के लिए रजिस्ट्री कक्षाएं।

आपको अपने फ़ाइल एक्सटेंशन (जैसे: ".txt") पर सेट नाम के साथ HKEY_CLASSES_ROOT के तहत एक कुंजी बनाने की आवश्यकता होगी। इस फ़ाइल के डिफ़ॉल्ट मान को अपने फ़ाइल प्रकार के लिए एक अद्वितीय नाम पर सेट करें, जैसे कि "Acme.TextFile"। फिर "Acme.TextFile" पर सेट नाम के साथ HKEY_CLASSES_ROOT के तहत एक और कुंजी बनाएं। "DefaultIcon" नामक एक उपकुंजी जोड़ें और उस फ़ाइल के लिए उस आइकन के साथ कुंजी का डिफ़ॉल्ट मान सेट करें जिसमें आप इस फ़ाइल प्रकार के लिए उपयोग करना चाहते हैं। "खोल" नामक एक और भाई जोड़ें। "खोल" कुंजी के अंतर्गत, एक्सप्लोरर संदर्भ मेनू के माध्यम से प्रत्येक क्रिया के लिए एक कुंजी जोड़ें, प्रत्येक निष्पादन योग्य के पथ पर प्रत्येक कुंजी के लिए डिफ़ॉल्ट मान को स्थान के बाद और पथ का प्रतिनिधित्व करने के लिए "% 1" चयनित फ़ाइल में।

उदाहरण के लिए, यहाँ .txt फ़ाइलें और EmEditor के बीच एक संबंध बनाने के लिए एक नमूना रजिस्ट्री फ़ाइल है:

विंडोज रजिस्ट्री संपादक संस्करण 5,00

[HKEY_CLASSES_ROOT\.txt] 
@="emeditor.txt" 

[HKEY_CLASSES_ROOT\emeditor.txt] 
@="Text Document" 

[HKEY_CLASSES_ROOT\emeditor.txt\DefaultIcon] 
@="%SystemRoot%\\SysWow64\\imageres.dll,-102" 

[HKEY_CLASSES_ROOT\emeditor.txt\shell] 

[HKEY_CLASSES_ROOT\emeditor.txt\shell\open] 

[HKEY_CLASSES_ROOT\emeditor.txt\shell\open\command] 
@="\"C:\\Program Files\\EmEditor\\EMEDITOR.EXE\" \"%1\"" 

[HKEY_CLASSES_ROOT\emeditor.txt\shell\print] 

[HKEY_CLASSES_ROOT\emeditor.txt\shell\print\command] 
@="\"C:\\Program Files\\EmEditor\\EMEDITOR.EXE\" /p \"%1\"" 

क्रेडिट करने के लिए @ एक्स-Cubed

2

फ़ाइल नाम आपके आवेदन के लिए एक तर्क के रूप में पारित किया जाएगा:

public static void Main(string[] args) 
{ 
    if (args != null && args.Length > 0) 
    { 
    string filename = args[0]; 
    if (File.Exists (filename)) 
    { 
     //Open file 
    } 
    } 
} 
संबंधित मुद्दे