PDA

View Full Version : shell



seeker
یک شنبه 10 خرداد 1388, 12:53 عصر
با سلام
من با وی بی کار میکنم. اما بنا به دلایلی مجبور شدم با سی شارپ یک کنسول اپلیکیشن که یک فایل سرور است درست کنم. فایل سرور من کار هایی از قبیل ایجاد دایرکتوری، کپی کردن فایل موو و دیلیت فایل را انجام میدهد. تمام کارها درست انجام میشود. ولی مشکل اینجاست که باید :
وقتی میخواهد فایلی که فرمت آن cdr است (فرمت فایل های کرل دراو) را جایی کپی کند پس از کپی کردن باید به وسیله یک برنامه کانورتر یک کپی هم از jpg آن ذخیره کند.
این کانورتر به این صورت کار میکند که در کامند پرمپت ویندوز این را مینویسیم:

pvw32con.exe [fileName] -j --o [targetFileName]
pvw32con.exe نام کانورتر است. -j یعنی فرمت فایل مقصد jpg است. --o یعنی میخواهیم آدرس و نام فایل مقصد دیفالت نباشد و خودمان تعین کنیم.
و این در کامند پرومپت خود به درستی کار میکند. من با استفاده از پست 10 این تاپیک:
http://barnamenevis.org/forum/showthread.php?t=154599&highlight=shell+command
سعی کردم که این دستور را اجرا کنم اما در کنسولم مینویسد که آرگومان -j غلط است.

ASKaffash
یک شنبه 10 خرداد 1388, 13:00 عصر
سلام
اینطوری :


System.Diagnostics.Process.Start("Calc.ExE");

SMRAH1
یک شنبه 10 خرداد 1388, 13:02 عصر
سلام

دقیقا چه کدی نوشتی(شاید ایراد معرفی آرگومان ها است)؟

seeker
یک شنبه 10 خرداد 1388, 13:57 عصر
سلام

دقیقا چه کدی نوشتی(شاید ایراد معرفی آرگومان ها است)؟
سلام
ممنون از توجه
این:

System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo()
{

FileName="pvw32con"
Arguments= TargetFileName + " -j --o " + TargetJpegFolder + (new FileInfo(TargetFileName).Name) + ".jpg",
RedirectStandardError=true,
RedirectStandardInput=true,
RedirectStandardOutput=true,
UseShellExecute=false,WindowStyle=System.Diagnosti cs.ProcessWindowStyle.Normal




};
System.Diagnostics.Process p = new System.Diagnostics.Process() {StartInfo = startInfo };

p.OutputDataReceived += (sender, e) =>
{
Console.WriteLine(e.Data);
};
p.Start();
p.BeginOutputReadLine();

SMRAH1
یک شنبه 10 خرداد 1388, 19:37 عصر
سلام

من از کد زیر استفاده کردم و برنامه جواب داد (نمونه فایل های اجرایی رو گذاشتم - برنامه pvw32con که گذاشتم ،در کنار فایل اجرایی، فقط آرکومانها رو نشون می ده و حتما باید MFC9 روی سیستمت باشه تا اجرا شه):

private void button3_Click(object sender, EventArgs e)
{
string TargetFileName = Application.StartupPath + "\\Test.tst";
string TargetJpegFolder = Application.StartupPath;

ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName="pvw32con";
startInfo.Arguments= TargetFileName + " -j --o " + TargetJpegFolder + (new FileInfo(TargetFileName).Name) + ".jpg";
startInfo.RedirectStandardError=true;
startInfo.RedirectStandardInput=true;
startInfo.RedirectStandardOutput=true;
startInfo.UseShellExecute=false;
startInfo.WindowStyle=ProcessWindowStyle.Normal;

Process p = new Process();
p.StartInfo = startInfo;
p.OutputDataReceived += new DataReceivedEventHandler(p_OutputDataReceived);

textBox1.Text = "";

p.Start();
p.BeginOutputReadLine();
}

private void p_OutputDataReceived(object sender, DataReceivedEventArgs e)
{
textBox1.Text += e.Data;
}
موفق باشی

seeker
یک شنبه 10 خرداد 1388, 20:15 عصر
بله مشکل از من بود. پارامتری را که بعنوان نام فایل میفرستادم space داشت که با تریم کردن اون، مشکل حل شد.