چطور فایل باز شده در ویندوز توسط Process در سی شارپ کنترل کنیم ؟
من یک فایلی رو باز میکنم به این شکل :
var MyProcess0 = Process.Start(@"C:\GotFiles\1.png");
فایل من که یک عکس هست باز میشه اما Process چیزی که توی MyProcess0 برگردونه null هستش !
بنا بر این , این خط کد هم به خطا میخوره :
MyProcess0.WaitForExit();
خطا:
System.NullReferenceException: 'Object reference not set to an instance of an object.'
MyProcess0 was null.
چیزی که نیاز دارم : چطوری میتونم یک فایل رو باز کنم و منتظر بمونم تا زمانی که کاربر اون رو ببنده !
لینک معادل : Why does the process return null if we use the Windows temporary path for Process.Start of a file in C#?
جوابی که یکی از کاربران دادن :
The Windows API function that is ultimately called by Process.Start with UseShellExecute=true is ShellExecuteEx. The documentation for calling this function includes the following -
"Note: ShellExecuteEx does not always return an hProcess, even if a process is launched as the result of the call. For example, an hProcess does not return when you use SEE_MASK_INVOKEIDLIST to invoke IContextMenu."
Consequently, the call to Process.Start is not guaranteed to return a non-null Process reference.
پاسخ هوش مصنوعی
برای کنترل یک فایل باز شده در ویندوز و منتظر ماندن تا زمانی که کاربر آن را ببندد، می توانید از کلاس Process
با UseShellExecute
برابر با true
استفاده کنید. با این وجود، همانطور که در توضیحات لینک شما نیز ذکر شده، این مورد ممکن است null برگرداند.
برای این کار می توانید از Process.Start
به صورت زیر استفاده کنید:
using System.Diagnostics;
Process MyProcess0 = new Process();
MyProcess0.StartInfo.FileName = @"C:\GotFiles\1.png";
MyProcess0.StartInfo.UseShellExecute = true;
MyProcess0.Start();
// چک کردن تا زمانی که پروسه بسته نشده است
while (!MyProcess0.HasExited)
{
System.Threading.Thread.Sleep(100); // خواب کوتاه برای جلوگیری از استفاده زیاد از CPU
}
در این مثال، پس از راه اندازی تصویر، یک حلقه ایجاد می شود که تا زمانی که پروسه بسته نشده است، ادامه می یابد. این روش به شما امکان می دهد منتظر بمانید تا کاربر فایل را ببندد.
- آموزش استفاده از پلاگین گردونه شانس در Asp.net core به همراه سورس
- نمایش متن به صورت فرمت شده در CkEditor
- آموزش استفاده از SignalR در Asp.net Core با مثال عملی
- ادغام چند گزارش استیمول سافت بصورت پی دی اف در یک فایل
- نحوه تغییر استایل کامپوننت select2 چگونه است ؟
- چگونه امنیت پروژه را در Asp.net Core افزایش دهیم ؟
- ارسال پارامتر در دستور window.open جی کویری
- ارسال پارامتر از طریق جاوااسکریپت با کلیک روی تگ a
- خطای 500 زمان اجرا شدن پروژه روی هاست
- کویری نویسی در استیمول سافت جهت فیلتر اطلاعات
- مشکل تاریخ شمسی در سی شارپ
- نمایش گزارش stimulsoft روی کلاینت
- تفاوت های سی شارپ 8 با نسخه های قبلی چیه؟
- انتخاب چند سطر دلخواه توسط چک باکس در DataGrid و محاسبه جمع سطرهای انتخاب شده
- نمایش نوتیفکیشن در سی شارپ
- ارسال پارامتر از سی شارپ به استیمول سافت
- عدم نمایش عکس در دیتاگرید ویو در wpf
- Library Animation برای کنترلهای WPF
- مشکل در تغییر مقدار Text کنترل RibbonBar در کامپوننت DevExpress
- قرار دادن مقادیر ارسالی یک ستون از جدول به صورت سطری در استیمول