c# - for - ইন্টারনেট এক্সপ্লোরার internet explorer 11



এক্সপ্লোরার একটি ফোল্ডার খোলা এবং একটি ফাইল নির্বাচন (8)

"/Select,c:\file.txt" ব্যবহার করুন

স্থান পরিবর্তনের পরিবর্তে একটি কমা / নির্বাচন হওয়া উচিত তা লক্ষ্য করুন ..

https://src-bin.com

আমি নির্বাচিত একটি ফাইল সঙ্গে এক্সপ্লোরার একটি ফোল্ডার খুলতে চেষ্টা করছি।

নিচের কোডটি একটি ফাইল তৈরি করে যা ব্যতিক্রম খুঁজে পাওয়া যায় নি:

System.Diagnostics.Process.Start(
    "explorer.exe /select," 
    + listView1.SelectedItems[0].SubItems[1].Text + "\\" 
    + listView1.SelectedItems[0].Text);

আমি কিভাবে এই কমান্ডটি সি # কার্যকর করতে পারি?


Answer #1

আপনাকে স্টার্ট পদ্ধতির দ্বিতীয় প্যারামিটারে পাস করতে ("/ নির্বাচন ইত্যাদি") আর্গুমেন্টগুলি রাখতে হবে।


Answer #2

প্রক্রিয়া ব্যবহার করে। explorer.exe /select argument দিয়ে শুরু করুন অদ্ভুতভাবে 120 অক্ষরের চেয়ে কম দীর্ঘ পথের জন্য কাজ করে।

আমি সব ক্ষেত্রে কাজ করার জন্য একটি নেটিভ উইন্ডোজ পদ্ধতি ব্যবহার করতে হয়েছিল:

[DllImport("shell32.dll", SetLastError = true)]
public static extern int SHOpenFolderAndSelectItems(IntPtr pidlFolder, uint cidl, [In, MarshalAs(UnmanagedType.LPArray)] IntPtr[] apidl, uint dwFlags);

[DllImport("shell32.dll", SetLastError = true)]
public static extern void SHParseDisplayName([MarshalAs(UnmanagedType.LPWStr)] string name, IntPtr bindingContext, [Out] out IntPtr pidl, uint sfgaoIn, [Out] out uint psfgaoOut);

public static void OpenFolderAndSelectItem(string folderPath, string file)
{
    IntPtr nativeFolder;
    uint psfgaoOut;
    SHParseDisplayName(folderPath, IntPtr.Zero, out nativeFolder, 0, out psfgaoOut);

    if (nativeFolder == IntPtr.Zero)
    {
        // Log error, can't find folder
        return;
    }

    IntPtr nativeFile;
    SHParseDisplayName(Path.Combine(folderPath, file), IntPtr.Zero, out nativeFile, 0, out psfgaoOut);

    IntPtr[] fileArray;
    if (nativeFile == IntPtr.Zero)
    {
        // Open the folder without the file selected if we can't find the file
        fileArray = new IntPtr[0];
    }
    else
    {
        fileArray = new IntPtr[] { nativeFile };
    }

    SHOpenFolderAndSelectItems(nativeFolder, (uint)fileArray.Length, fileArray, 0);

    Marshal.FreeCoTaskMem(nativeFolder);
    if (nativeFile != IntPtr.Zero)
    {
        Marshal.FreeCoTaskMem(nativeFile);
    }
}

Answer #3

ফাইলটি খুঁজে না পাওয়ার পক্ষে সর্বাধিক সম্ভাব্য কারণটি হল স্পেস থাকার পথ। উদাহরণস্বরূপ, এটি "এক্সপ্লোরার / সিলেক্ট, সি: \ স্পেস স্পেস \ space.txt" খুঁজে পাবে না।

শুধু পথ আগে এবং পরে ডবল উদ্ধৃতি যোগ করুন;

explorer /select,"c:\space space\space.txt"

অথবা সি # সঙ্গে একই কাজ

System.Diagnostics.Process.Start("explorer.exe","/select,\"c:\space space\space.txt\"");

Answer #4

শুধু আমার 2 সেন্টের মূল্য, যদি আপনার ফাইলের নামটিতে স্পেস থাকে, যেমন "c: \ আমার ফাইলটিতে স্পেসস টেকটিউন থাকে", আপনাকে অবশ্যই উদ্ধৃতি দিয়ে ফাইলের নামটি ঘিরে রাখতে হবে নাহলে এক্সপ্লোরারটি অনুমান করবে যে এই শব্দটি আলাদা আলাদা যুক্তি রয়েছে ...

string argument = "/select, \"" + filePath +"\"";

Answer #5

স্যামুয়েল ইয়াং উত্তর আমাকে টপ আপ, এখানে আমার 3 সেন্ট মূল্য।

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

string argument = "/select, \"" + filePath +"\"";

Answer #6
// suppose that we have a test.txt at E:\
string filePath = @"E:\test.txt";
if (!File.Exists(filePath))
{
    return;
}

// combine the arguments together
// it doesn't matter if there is a space after ','
string argument = "/select, \"" + filePath +"\"";

System.Diagnostics.Process.Start("explorer.exe", argument);

Answer #7
string windir = Environment.GetEnvironmentVariable("windir");
if (string.IsNullOrEmpty(windir.Trim())) {
    windir = "C:\\Windows\\";
}
if (!windir.EndsWith("\\")) {
    windir += "\\";
}    

FileInfo fileToLocate = null;
fileToLocate = new FileInfo("C:\\Temp\\myfile.txt");

ProcessStartInfo pi = new ProcessStartInfo(windir + "explorer.exe");
pi.Arguments = "/select, \"" + fileToLocate.FullName + "\"";
pi.WindowStyle = ProcessWindowStyle.Normal;
pi.WorkingDirectory = windir;

//Start Process
Process.Start(pi)




explorer