PDA

View Full Version : سوال: استفاده از دستورات cmd در #C



flatset
یک شنبه 29 خرداد 1390, 16:04 عصر
سلام
دوستان من میخوام از دستورات cmd در #C استفاده کنم به طور مثال از دستور shutdown /s میخواستم ببینم ای کار چگونه امکان پذیره ؟

البته من میدونم باید از این دستور استفاده کرد ولی نمیدونم به چه شکلی :
()system.Diagnostics.Process.Start
ممنون میشم راهنماییم کنید .

BestFriend
یک شنبه 29 خرداد 1390, 17:43 عصر
System.Diagnostics.Process.Start("shutdown.exe", "-s -t 100"); :شیطان:

ولی اذیت کردن مردم کار خوبی نیستا!!!!!

mehranmsba
یک شنبه 29 خرداد 1390, 20:20 عصر
دوست عزیز فرمان های Console به دو دسته تقسیم می شوند:
1- دستوراتی که تحت CMD یا Command اجرا می شوند.
2- دستوراتی که خود یک اجراگر هستند و نیاز به محیط اجرا ندارند.

دستور Shutdown و امثال آن فرمان های خارجی هستند و نیازمند CMD نیستند و می توانند به طور مستقل اجرا گردند.حال برای اینکه بتوانید از آن ها استفاده کنید کافی است آن ها را فراخوانی کنید:

System.Diagnostics.Process.Start()

برای این کار:

System.Diagnostics.Process.Start("Shutdown", "-s -t 500");

فرمان بالا دستور مجزای Shutdown را با سوییچ های S و T که خاموش کننده سیستم در یک مدت زمان هستند رو اجرا می کنه.
اما برای فرمان هایی مثل DIR یا Copy یا ... که فرمان های داخلی هستند می بایست این طوری عمل کنید تا بتوانید فرمان های داس رو اجرا کنید:

System.Diagnostics.Process.Start(System.Environmen t.SystemDirectory + @"\cmd.exe",temp);

متغیر temp همان آرگومان یا سوییچ فرمان هستند که با ساختار زیر به CMD ارسال می شوند:

temp = "cmd /c " +

در جلوی + کافی که رشته فرمان رو بنویسید این طوری:

temp = "cmd /c " + "dir"

به طور مثال می خواهید تاریخ و ساعت سیستم رو بدون استفاده از API ها تغیرر بدید در این صورت:

DateTime InputTime;
string[] DateTiemFormat = System.Globalization.DateTimeFormatInfo.CurrentInf o.ShortDatePattern.Split('/');
int DPlace = 0,Mplace=0,YPlace=0;



for (int i = 0; i < 3; i++)
{
if (DateTiemFormat[i].Substring(0, 1).ToLower() == "d")
DPlace = i;
else if (DateTiemFormat[i].Substring(0, 1).ToLower() == "m")
Mplace = i;
else if (DateTiemFormat[i].Substring(0, 1).ToLower() == "y")
YPlace = i;
}
string[] Timeing = new string[3];
Timeing[DPlace] = InputTime.Day.ToString();
Timeing[Mplace] = InputTime.Month.ToString();
Timeing[YPlace] = InputTime.Year.ToString();
string temp ="cmd /c "+ "time " + InputTime.Hour.ToString() + ":" + InputTime.Minute.ToString() + ":" + InputTime.Second.ToString();
System.Diagnostics.Process.Start(System.Environmen t.SystemDirectory + @"\cmd.exe",temp);

temp = "cmd /c " + "date " + Timeing[0] + "-" + Timeing[1] + "-" + InputTime.Year.ToString();
System.Diagnostics.Process.Start(System.Environmen t.SystemDirectory + @"\cmd.exe",temp);



موفق باشید.