2012-04-16 12 views
39

के साथ फ़ाइल खोलें मैं संबंधित ऐप के साथ सी # ऐप से फ़ाइल खोलने में मदद के लिए पूछना चाहता हूं।संबंधित एप्लिकेशन

 ProcessStartInfo pi = new ProcessStartInfo(file); 
     pi.Arguments = Path.GetFileName(file); 
     pi.UseShellExecute = true; 
     pi.WorkingDirectory = Path.GetDirectoryName(file); 
     pi.FileName = file; 
     pi.Verb = "OPEN"; 
     Process.Start(pi); 

या इस: मैं इस कोशिश की

 Process.Start(file); 

जहां दोनों उदाहरणों में स्ट्रिंग file फ़ाइल खोलने का प्रयास करने के लिए पूरा पथ का प्रतिनिधित्व करता है। अब, सबकुछ अच्छी तरह से काम कर रहा है, (jpg) छवियों को ACDSee ऐप के साथ छोड़कर। इरफानव्यू एसोसिएशन अच्छी तरह से काम करता है, एमएस कार्यालय दस्तावेज भी। एसीडीसी से जुड़े जेपीजी छवि को खोलने की कोशिश करने के बाद यह अधिसूचना क्षेत्र में एसीडीई चलाता है और फ़ाइल नहीं खोलता है।

मुझे पता चला है कि रजिस्ट्री में CLASSES_ROOT * .jpg छवियों के लिए, वहाँ जुड़े एप्लिकेशन के रूप में एक ACDSee.JPG मूल्य है, और इस कुंजी के अंतर्गत वहाँ shell-> ओपन> कमान एक पथ में है :

"C:\Program Files\ACD Systems\ACDSee\ACDSee.exe" /dde 

और मैं बात यह है कि इस अजीब /dde कारण मैं क्यों फ़ाइल नहीं खोल सकता है। मैंने महसूस किया कि एक ही reg में महत्वपूर्ण shell-> ओपन इरफान दृश्य या अन्य जाँच की ऐप्लिकेशन के लिए मूल्य [open("%1")]

के साथ कुछ DDEExec कुंजी प्रविष्टि वहां एक ddeexec,

"C:\Program Files (x86)\IrfanView\i_view32.exe" "%1" 
की तरह बस सामान्य आदेश नहीं है

कि कमांड लाइन से फ़ाइल नाम के लिए% 1 swaping के बाद चलाया जा सकता है, लेकिन मैं कमांड लाइन में ACDSEE प्रविष्टि से आदेश नहीं चला सकते हैं :(

तो मेरी सवाल है, मैं कैसे सेट कर सकते हैं ProcessStartInfo ऑब्जेक्ट पर यह सुनिश्चित करें कि यह सभी फ़ाइलों को चलाएगा क्योंकि यह डबलक्लिक, मानकों और DDEExec वाले एक्सप्लोरर में होगा? क्या DDEExec जैसे कुछ और है जो मुझे पता है? धन्यवाद और खेद मेरी एन

उत्तर

79

के लिए बस लिखने

System.Diagnostics.Process.Start(@"file path"); 

उदाहरण

System.Diagnostics.Process.Start(@"C:\foo.jpg"); 
System.Diagnostics.Process.Start(@"C:\foo.doc"); 
System.Diagnostics.Process.Start(@"C:\foo.dxf"); 
... 

और खोल जुड़े होगा चला कार्यक्रम रजिस्ट्री से इसे पढ़ने, हमेशा की तरह डबल क्लिक करता है।

+2

ऐसा लगता है कि उसने पहले से ही 'Process.Start (फ़ाइल); 'के साथ प्रयास किया है। –

+0

"तो मेरा सवाल है, मैं यह सुनिश्चित करने के लिए ProcessStartInfo ऑब्जेक्ट को कैसे स्थापित कर सकता हूं कि यह सभी फ़ाइलों को चलाएगा क्योंकि यह एक्सप्लोरर में डबलक्लिक द्वारा होगा": जवाब यही है। उन्होंने कमांड लाइन तर्कों का उपयोग किया, जो कुछ भी ... लेकिन जैसा कि मैंने देखा, प्रत्यक्ष आमंत्रण नहीं। – Tigran

+0

@ टिग्रान मारियो सही है, जैसा कि मैंने लिखा है, मैंने आपके सुझाव को दूसरे उदाहरण के रूप में करने की कोशिश की ... मैं अपने प्रश्न से इस तरह से पूछना चाहता था कि स्पष्ट रूप से यह सही सॉल्शन नहीं है, क्योंकि jpg खोला नहीं गया है! – Zavael

9

यह एक पुराना धागा है, लेकिन अगर कोई ऐसा करता है जैसे मैंने किया था। pi.FileName को आपके फ़ाइल को खोलने के लिए उपयोग करने योग्य निष्पादन योग्य फ़ाइल नाम (और फ़ाइल के लिए संभवतः पूर्ण पथ) पर सेट करने की आवश्यकता है। वीएलसी के साथ एक वीडियो फ़ाइल खोलने के लिए नीचे दिया गया कोड मेरे लिए काम करता है।

string file = files[currentIndex].fileName; 
ProcessStartInfo pi = new ProcessStartInfo(file); 
pi.Arguments = Path.GetFileName(file); 
pi.UseShellExecute = true; 
pi.WorkingDirectory = Path.GetDirectoryName(file); 
pi.FileName = "C:\\Program Files (x86)\\VideoLAN\\VLC\\vlc.exe"; 
pi.Verb = "OPEN"; 
Process.Start(pi); 

Tigran का जवाब काम करता है, लेकिन आपकी फ़ाइल को खोलने के लिए है, तो ProcessStartInfo का उपयोग कर उपयोगी हो सकता है अगर आपको लगता है कि डिफ़ॉल्ट नहीं है एक आवेदन पत्र के साथ फ़ाइल खोलना चाहते खिड़कियां 'डिफ़ॉल्ट आवेदन का उपयोग करेगा।

+3

(: पुराने धागे की पुरानी प्रतिक्रिया पर एक टिप्पणी :) टिग्रेन का जवाब प्रत्येक फ़ाइल के एक्सटेंशन के लिए सबसे हाल ही में जुड़े कार्यक्रम चलाता है। वृक्ष का उत्तर इसे ** vlc का उपयोग करने के लिए मजबूर करता है .exe **। ज़वावेल का सवाल परेशानी के बारे में है, वह _only_ ** ACDSee.exe ** के साथ है और यह कैसे अपना एक्सटेंशन एसोसिएशन सेट करता है। मुझे लगता है कि एसीडीएसई के लेखकों से इसके बारे में संपर्क करने की आवश्यकता है। –

संबंधित मुद्दे