সি # ডিফল্ট অ্যাপ্লিকেশন এবং পরামিতিগুলির সাথে ফাইল খুলুন


107

ডিফল্ট অ্যাপ্লিকেশন সহ কোনও ফাইল খোলার সর্বাধিক সহজ উপায় হ'ল:

System.Diagnostics.Process.Start(@"c:\myPDF.pdf");

তবে, আমি ডিফল্ট অ্যাপ্লিকেশনটিতে প্যারামিটার সেট করার কোনও উপায় বিদ্যমান কিনা তা জানতে চাই, কারণ আমি একটি নির্ধারিত পৃষ্ঠা নম্বরটিতে একটি পিডিএফ খুলতে চাই।

আমি কীভাবে এটি একটি নতুন প্রক্রিয়া তৈরি করতে এবং পরামিতিগুলি নির্ধারণ করতে জানি, তবে এইভাবে আমাকে অ্যাপ্লিকেশনটির পথটি নির্দেশ করতে হবে এবং আমার একটি পোর্টেবল অ্যাপ্লিকেশন থাকতে হবে এবং প্রতিবার অ্যাপ্লিকেশনটির পথ নির্ধারণ করতে হবে না would আমি অন্যান্য কম্পিউটারে অ্যাপ্লিকেশনটি ব্যবহার করি। আমার ধারণাটি হ'ল আমি প্রত্যাশা করি যে কম্পিউটারটি পিডিএফ রিডার ইনস্টল করেছে এবং কেবল পৃষ্ঠাটি কী খুলতে হবে তা বলে।

ধন্যবাদ


আপনি কি পিডিএফ ফাইলের চেয়ে অ্যাডোব এক্সিকিউটেবলের জন্য পরামিতিগুলি প্রেরণ করতে চান তবে পুরো পথটি ব্যবহার না করেই?
বালি সি

4
আপনি কীভাবে এই কাজ করবেন বলে আশা করেন? আপনি যদি অ্যাপ্লিকেশনটির পথটি জানেন না, আপনি ডিফল্ট পিডিএফ ভিউয়ারটি জানেন না এবং কোন পরামিতি বিন্যাসটি ব্যবহার করবেন তা আপনি জানেন না।
কেন

4
myProcess.StartInfo.FileName = "Acrobat.exe";আবেদনের পুরো পথ না দিয়ে কি যথেষ্ট নয় ?
ড্যানিলোকিও

4

4
@ডানিলোকুইও: আমি মনে করি মূল বক্তব্যটি হ'ল ওপি জানে না যে শেষ ব্যবহারকারী তার মেশিনে অ্যাডোব ফাইলগুলি পড়ার জন্য কী ইনস্টল করেছেন, এটি অ্যাক্রোব্যাট, অ্যাক্রোব্যাট রিডার বা অন্য কিছু হতে পারে।
সার্ফবুটার

উত্তর:


46

আপনি যদি ডিফল্ট অ্যাপ্লিকেশন দিয়ে ফাইলটি খোলার চান তবে আমার কাছে অ্যাক্রোব্যাট বা রিডার উল্লেখ না করেই আপনি নির্দিষ্ট পৃষ্ঠায় ফাইলটি খুলতে পারবেন না।

অন্যদিকে, যদি আপনি অ্যাক্রোব্যাট বা পাঠক নির্দিষ্ট করে রাখেন, তবে পড়া চালিয়ে যান:


আপনি সম্পূর্ণ অ্যাক্রোব্যাট পথটি না বলে এটি করতে পারেন:

Process myProcess = new Process();    
myProcess.StartInfo.FileName = "acroRd32.exe"; //not the full application path
myProcess.StartInfo.Arguments = "/A \"page=2=OpenActions\" C:\\example.pdf";
myProcess.Start();

আপনি যদি না চান যে পিডিএফটি পাঠকের সাথে খোলা হোক তবে অ্যাক্রোব্যাট দিয়ে, দ্বিতীয় লাইনে এভাবে চাপ দিন:

myProcess.StartInfo.FileName = "Acrobat.exe";

আপনি পিডিএফ ফাইলগুলি খোলার জন্য ডিফল্ট অ্যাপ্লিকেশন সনাক্ত করতে এবং তারপরে আপনার প্রক্রিয়াটির স্টার্টইনফোতে ফাইলনাম সংজ্ঞায়িত করতে রেজিস্ট্রিটি জিজ্ঞাসা করতে পারেন।

এটি করার বিষয়ে বিশদের জন্য এই প্রশ্নটি অনুসরণ করুন: উইন্ডোজে কোনও নির্দিষ্ট ফাইল টাইপ খোলার জন্য ডিফল্ট অ্যাপ্লিকেশনটি সন্ধান করুন


4
+1 এছাড়াও আমি মনে করি যে রেজিস্ট্রিতে কোনও ফাইল টাইপ যেমন '.pdf' এর সাথে যুক্ত অ্যাপ্লিকেশনটি অনুসন্ধান করা সম্ভব, তারপরে ফাইল নাম প্যারামিটারে সেই নামটি রেখে দেওয়া। দেখুন stackoverflow.com/questions/162331/...
Surfbutler

অ্যাডোব পাঠককে 2-পৃষ্ঠার দর্শনতে খোলার জন্য কি কিছু উন্মুক্ত প্যারামিটার রয়েছে? শুধু কৌতূহলী, যদি কেউ জানে তবে তা আসল উপকারী হবে। আমি চারপাশে তাকিয়ে ছিলাম, কিন্তু কিছুই পাই না।
তাকি মার্টিলো

23

এই কাছাকাছি হওয়া উচিত!

public static void OpenWithDefaultProgram(string path)
{
    Process fileopener = new Process();
    fileopener.StartInfo.FileName = "explorer";
    fileopener.StartInfo.Arguments = "\"" + path + "\"";
    fileopener.Start();
}

4
ঐটা নির্ভুল !
ফ্রাঙ্কোইস গিরার্ড

4
এটি আমার জন্য ডিফল্ট প্রোগ্রাম সহ পিডিএফ খোলার জন্য কাজ করেছিল। ধন্যবাদ!
স্মিট্টি-ওয়ারবেন-জাগার-মঞ্জেনসন

4
@ আইজেন প্রশ্নটি পৃষ্ঠা নম্বরটি পরম হিসাবে সরবরাহ করার বিষয়ে। এই উত্তর কি তা কভার করে?
ড্যানিলোকুইও

4
@ উদ্যানলোকিও দুঃখিত, আমি যথেষ্ট গভীর প্রশ্নটি পড়িনি।
imgen

4
এটিকে একটি ব্লক ব্যবহার করে মুড়িয়ে রাখতে ভুলবেন না, প্রক্রিয়াটি আইডিজিপোজেবল।
রেনা কারানান্টে

7

আমি এক্সএসএল দ্বারা লিঙ্ক করা ব্লগ পোস্টে ভিবি কোডটি সি # তে রূপান্তর করে এটিকে কিছুটা সংশোধন করেছি:

public static bool TryGetRegisteredApplication(
                     string extension, out string registeredApp)
{
    string extensionId = GetClassesRootKeyDefaultValue(extension);
    if (extensionId == null)
    {
        registeredApp = null;
        return false;
    }

    string openCommand = GetClassesRootKeyDefaultValue(
            Path.Combine(new[] {extensionId, "shell", "open", "command"}));

    if (openCommand == null)
    {
        registeredApp = null;
        return false;
    }

    registeredApp = openCommand
                     .Replace("%1", string.Empty)
                     .Replace("\"", string.Empty)
                     .Trim();
    return true;
}

private static string GetClassesRootKeyDefaultValue(string keyPath)
{
    using (var key = Registry.ClassesRoot.OpenSubKey(keyPath))
    {
        if (key == null)
        {
            return null;
        }

        var defaultValue = key.GetValue(null);
        if (defaultValue == null)
        {
            return null;
        }

        return defaultValue.ToString();
    }
}

সম্পাদনা - এটি বিশ্বাসযোগ্য নয়। দেখুন Windows এ একটি নির্দিষ্ট ধরনের ফাইল খোলার জন্য ডিফল্ট অ্যাপ্লিকেশন খোঁজা



-5

দয়া করে প্রকল্পের জন্য বৈশিষ্ট্যের অধীনে সেটিংস যুক্ত করুন এবং আপনার ডিফল্ট হিসাবে কনফিগার করা যায় এমন পরিষ্কার এবং সহজে কনফিগারযোগ্য সেটিংস এগুলি ব্যবহার করুন Please

কীভাবে: ডিজাইনের সময় একটি নতুন সেটিং তৈরি করুন

আপডেট: নীচে মন্তব্য পরে

  1. প্রকল্পে রাইট + ক্লিক করুন
  2. নতুন আইটেম যোগ করুন
  3. ভিজ্যুয়াল সি # আইটেমের অধীনে -> সাধারণ
  4. সেটিংস ফাইল নির্বাচন করুন

14
ভুল ট্যাব হতে পারে? ;)
ken2k
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.