আমি অন্য বিষয়টি দেখেছি এবং আমার আরও একটি সমস্যা হচ্ছে। প্রক্রিয়াটি শুরু হচ্ছে (টাস্ক ম্যানেজারে দেখেছি) তবে ফোল্ডারটি আমার স্ক্রিনে খুলছে না। কোনো সমস্যা?
System.Diagnostics.Process.Start("explorer.exe", @"c:\teste");
আমি অন্য বিষয়টি দেখেছি এবং আমার আরও একটি সমস্যা হচ্ছে। প্রক্রিয়াটি শুরু হচ্ছে (টাস্ক ম্যানেজারে দেখেছি) তবে ফোল্ডারটি আমার স্ক্রিনে খুলছে না। কোনো সমস্যা?
System.Diagnostics.Process.Start("explorer.exe", @"c:\teste");
উত্তর:
আপনি কি নিশ্চিত করেছেন যে " c:\teste
" ফোল্ডারটি বিদ্যমান আছে? যদি এটি না হয় তবে এক্সপ্লোরার কিছু ডিফল্ট ফোল্ডার (আমার ক্ষেত্রে " C:\Users\[user name]\Documents
") খুলবে ।
হালনাগাদ
আমি নিম্নলিখিত বিভিন্নতা চেষ্টা করেছি:
// opens the folder in explorer
Process.Start(@"c:\temp");
// opens the folder in explorer
Process.Start("explorer.exe", @"c:\temp");
// throws exception
Process.Start(@"c:\does_not_exist");
// opens explorer, showing some other folder)
Process.Start("explorer.exe", @"c:\does_not_exist");
যদি এগুলির কোনওটি (ভাল, ব্যতিক্রম ছুঁড়ে দেওয়া ব্যতীত) আপনার কম্পিউটারে কাজ না করে তবে আমি মনে করি না যে সমস্যাটি কোডের মধ্যে রয়েছে তবে পরিবেশে। যদি এটি হয় তবে আমি নিম্নলিখিতগুলির মধ্যে একটি (বা উভয়) চেষ্টা করবো:
Process.Start(path)
উইন্ডোটি সক্রিয় করে (কেবলমাত্র টাস্ক বারে ঝলক দেওয়া হতে পারে, সামনে আনেনি); explorer.exe
+ প্যারামিটার সর্বদা সামনে একটি নতুন উইন্ডো খোলে (তবে একই উইন্ডোতে একাধিকবার)। সুতরাং উভয়ের ক্যাভেটস রয়েছে।
Process.Start(@"c:\temp")
অবশ্যই সাবধানতার সাথে ব্যবহার করা উচিত। যদি c:\temp.com
উপস্থিত থাকে তবে তার c:\temp.com
পরিবর্তে ফাংশন কলটি খুলবে । আরও বিশদের জন্য ফোরাম.আইআইএস.এন.পি . / 1239773/2144186.aspx দেখুন ।
Process.Start(@"c:\temp")
কোনও ফোল্ডার খোলার ক্ষেত্রে সংবেদনশীল । এই সমস্যাটি দেখুন যেখানে ভিএস নিজেই বগি আচরণ প্রদর্শন করে । আপনি ভেরিয়েন্টটি ব্যবহার করে বা (আরও ভাল, আইএমও) সর্বদা একটি যুক্ত করে এড়াতে পারেন । উদাহরণস্বরূপ ,। C:\temp.exe
C:\temp.cmd
explorer.exe
Path.DirectorySeparatorChar
Process.Start(@"C:\temp\")
কেবল সম্পূর্ণতার জন্য, আপনি যদি যা করতে চান তা হ'ল কোনও ফোল্ডার খুলতে হয়, এটি ব্যবহার করুন:
System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo() {
FileName = "C:\\teste\\",
UseShellExecute = true,
Verb = "open"
});
নিশ্চিত করুন যে ফাইলনামটি Path.DirectorySeparatorChar
এটিকে কোনও ফোল্ডারে অবিশ্বাস্যভাবে নির্দেশ করতে শেষ হয় । (@ বিঙ্কিকে ধন্যবাদ।)
এই সমাধানটি কোনও ফোল্ডার খোলার এবং কোনও আইটেম নির্বাচন করার জন্য কাজ করবে না, কারণ এর জন্য কোনও ক্রিয়া মনে হচ্ছে না।
C:\teste.exe
বা ব্যবহার করেন তবে C:\teste.cmd
এক্সপ্লোরার আপনার ইচ্ছা অনুযায়ী পরিবর্তে সেই অন্য ফোল্ডারে খুলবে। এটি এড়াতে, আপনি একটি Path.DirectorySeparatorChar
পথে সংযোজন করতে পারেন । দেখুন কীভাবে ভিএস নিজেই একই ভুল করে ।
Verb = "select"
তবে হায় হায় আপনি পারবেন না। নির্বিশেষে, দুর্দান্ত উত্তর!
Verb = "open"
প্রয়োজনীয় ছিল না। (উইন্ডোজে পরীক্ষিত, অন্যান্য ওএসের ভিন্নতা থাকতে পারে))
আপনি @ চিহ্ন ব্যবহার করছেন, যা আপনার ব্যাকস্ল্যাশ থেকে পালানোর প্রয়োজনীয়তা সরিয়ে দেয়।
@ সরান বা or এর সাথে প্রতিস্থাপন করুন \
আনসকেপড স্ট্রিংগুলি ব্যবহার করার সময় আপনার ডাবল ব্যাকস্ল্যাশ দরকার নেই:
System.Diagnostics.Process.Start("explorer.exe",@"c:\teste");
আপনার একটি System.Diagnostics.Process.Start()
ওভারলোড ব্যবহার করা উচিত । এটা বেশ সহজ!
আপনি যে প্রক্রিয়াটি চালাতে চান তা ফাইলের নাম না রাখলে ( explorer.exe
সিস্টেম) এটি বৈধ ফোল্ডার পাথ হিসাবে স্বীকৃতি দেবে এবং এটি ইতিমধ্যে চলমান এক্সপ্লোরার প্রক্রিয়ার সাথে সংযুক্ত করার চেষ্টা করবে। এই ক্ষেত্রে, ফোল্ডারটি ইতিমধ্যে খোলা থাকলে, এক্সপ্লোরার কিছুই করবে না।
আপনি যদি প্রক্রিয়াটির ফাইলের নাম রাখেন (যেমনটি করেছিলেন), সিস্টেমটি প্যারামিটার হিসাবে দ্বিতীয় স্ট্রিংটি পাস করে প্রক্রিয়াটির একটি নতুন উদাহরণ চালানোর চেষ্টা করবে। যদি স্ট্রিংটি একটি বৈধ ফোল্ডার হয় তবে এটি সদ্য নির্মিত প্রক্রিয়াতে খোলে, যদি না হয় তবে নতুন প্রক্রিয়া কিছুই করবে না।
আমি জানি না যে কোনও পরিস্থিতিতে প্রক্রিয়া দ্বারা কীভাবে অবৈধ ফোল্ডার পাথগুলি আচরণ করা হয়। System.IO.Directory.Exists()
এটি নিশ্চিত করার জন্য ব্যবহার করা যথেষ্ট হবে।
Path.DirectorySeparatorChar
। অন্যথায়, যদি একই নামের একটি ফোল্ডারটি .cmd
বা .exe
বা সম্ভবত অন্যান্য প্রত্যয়গুলিও উপস্থিত থাকে তবে এক্সপ্লোরার সেই অন্য ফোল্ডারে খুলবে — অথবা যদি সেগুলি প্রকৃতভাবে এক্সিকিউটেবল বা স্ক্রিপ্ট হয় তবে এটি আপনার ইচ্ছা অনুযায়ী ফোল্ডারটি খোলার পরিবর্তে এগুলি চালিত করবে।
পদ্ধতির একটি ওভারলোডেড সংস্করণ ব্যবহার করুন যা কোনও প্রসেসস্টার্টআইফোন উদাহরণ গ্রহণ করে এবং আপনার জন্য কাজ করে এমন কোনও মানটিতে প্রসেসউইনডো স্টাইল সম্পত্তি সেট করে।
আপনি যখন সাইন সাইনটি ব্যবহার করে তখন আপনি ব্যাকস্ল্যাশ থেকে বাঁচাচ্ছেন।
System.Diagnostics.Process.Start("explorer.exe",@"c:\teste");
System.Diagnostics.Process.Start("explorer.exe",@"c:\teste");
এই কোডটি ভিএস 2010 এনভায়রনমেন্ট থেকে সূক্ষ্মভাবে কাজ করে এবং স্থানীয় ফোল্ডারটি সঠিকভাবে খোলে তবে আপনি যদি একই অ্যাপ্লিকেশনটি আইআইএসে হোস্ট করেন এবং খোলার চেষ্টা করেন তবে এটি অবশ্যই ব্যর্থ হবে।
আমি এই সমস্যাটি ছিলাম, এবং কেন আমি তা খুঁজে পেয়েছি। আমার কারণ এখানে তালিকাভুক্ত নয় সুতরাং যে কেউ এই সমস্যাটি পান এবং এর মধ্যে কেউই এটি ঠিক করে না।
আপনি যদি অন্য ব্যবহারকারী হিসাবে ভিজ্যুয়াল স্টুডিও চালনা করেন এবং প্রক্রিয়াটি ব্যবহার করার চেষ্টা করেন তবে এটি সেই ব্যবহারকারীদের প্রসঙ্গে চলে এবং আপনি এটি আপনার পর্দায় দেখতে পাবেন না।
স্ট্রেঞ্জ।
যদি এটি এক্সপ্লোরার এক্সেক্স না খুঁজে পায় তবে আপনার ব্যতিক্রম হওয়া উচিত। যদি এটি ফোল্ডারটি খুঁজে না পায় তবে এটি এখনও কিছু ফোল্ডার খুলতে হবে (যেমন আমার নথিগুলি)
আপনি বলেছিলেন এক্সপ্লোরারের আর একটি অনুলিপি টাস্ক ম্যানেজারে উপস্থিত হয় তবে আপনি এটি দেখতে পারেন না।
এটি কি সম্ভব যে এটি অফস্ক্রিনটি খুলছে (অর্থাত্ অন্য মনিটর)?
বা আপনি কোনও সুযোগে একটি অ-ইন্টারেক্টিভ পরিষেবাতে এটি করছেন?
আপনি যখন আপনার প্রারম্ভিক মেনু থেকে "এক্সপ্লোরার এক্সেক্স সি: es টেস্ট" চালাবেন এটি কি সঠিকভাবে খোলে? আপনি কতক্ষণ ধরে এই চেষ্টা করছেন? আমার মেশিনটিতে প্রচুর প্রক্রিয়া হয় এবং আমি যখন একটি নতুন প্রক্রিয়া খুলি (সেটগুলি আইই বলে) খোলাম তখন আমি একটি অনুরূপ আচরণ দেখি .. এটি টাস্ক ম্যানেজারে শুরু হয় তবে সামনের প্রান্তে প্রদর্শিত হবে না। আপনি কি পুনরায় চালু করার চেষ্টা করেছেন?
নিম্নলিখিত কোডটি একটি নতুন এক্সপ্লোরার উদাহরণ খুলতে হবে
class sample{
static void Main()
{
System.Diagnostics.Process.Start("explorer.exe",@"c:\teste");
}
}
আপনি যখন এটি চেষ্টা করছেন তখন কি আপনার প্রচুর অ্যাপ্লিকেশন চলছে? আমার মাঝে মাঝে অদ্ভুত আচরণের মুখোমুখি হয় কারণ আমার সিস্টেমটি জিডিআই হ্যান্ডলসের বাইরে চলে যায় কারণ আমার অনেকগুলি উইন্ডো খোলা আছে (আমাদের অ্যাপগুলি প্রচুর ব্যবহার করে)।
যখন এটি ঘটে তখন আমি কিছু জিডিআই হ্যান্ডলগুলি মুক্ত করার জন্য উইন্ডোজ এবং প্রসঙ্গ মেনুগুলি আর উপস্থিত হয় না।
এক্সপি এবং ভিস্তার ডিফল্ট সীমাটি 10000 my 1500 জিডিআই হ্যান্ডল করা আমার ডেভ স্টুডিওর পক্ষে অস্বাভাবিক কিছু নয়, সুতরাং আপনার যদি ডেভ স্টুডিওর কয়েকটি কপি খোলা থাকে তবে তা সেগুলি খুব দ্রুত খেয়ে ফেলতে পারে। প্রতিটি প্রক্রিয়া দ্বারা কয়টি হ্যান্ডল ব্যবহার হচ্ছে তা দেখতে আপনি টাস্কম্যানেজারে একটি কলাম যুক্ত করতে পারেন।
সীমা বাড়াতে আপনি একটি রেজিস্ট্রি টুইট করতে পারেন twe
আরও তথ্যের জন্য দেখুন http://msdn.microsoft.com/en-us/library/ms724291(VS.85).aspx