View Full Version : سوال: اجرای Command Prompt و بستن آن توسط کد نویسی
ROSTAM2
پنج شنبه 19 مرداد 1402, 20:08 عصر
با سلام
من می خوام یک دستور با Command Prompt اجرا کنم و با Process.Start که متاسفانه پارامترها به Command Prompt انتقال نمی یابند
Dim Parameters$ = String.Format("ffmpeg.exe -f dshow -i audio={2}{0}{2} {2}{1}{2}", Me.DeviceComboBox.SelectedItem, FileName, Chr(34))
Dim SI As New ProcessStartInfo
'ChDir(ToolsDirectory)
With SI
.Arguments = Parameters
.FileName = "CMD.EXE"
'.LoadUserProfile = True
' .CreateNoWindow = False
.UseShellExecute = True
' .WindowStyle = ProcessWindowStyle.Hidden
.WorkingDirectory = ToolsDirectory
End With
RecordProcess = Process.Start(SI)
F1
پرستو پارسایی
پنج شنبه 19 مرداد 1402, 21:28 عصر
به نظرم مشکل شما ناشی از استفاده از `CMD.EXE` به عنوان فایل اجرایی است. برای اجرای دستورات CMD با پارامترها، میتوانید مستقیماً فایل `ffmpeg.exe` را به عنوان فایل اجرایی استفاده کنید و پارامترهای خود را در مورد `Arguments` قرار دهید.
این کد را برای اجرای دستورات CMD با استفاده از `ffmpeg.exe` امتحان کنید:
Dim Parameters As String = String.Format("-f dshow -i audio={2}{0}{2} {2}{1}{2}", Me.DeviceComboBox.SelectedItem, FileName, Chr(34))
Dim SI As New ProcessStartInfo
With SI
.Arguments = Parameters
.FileName = "ffmpeg.exe"
.UseShellExecute = False
.RedirectStandardOutput = True
.CreateNoWindow = True
.WorkingDirectory = ToolsDirectory
End With
Dim RecordProcess As Process = Process.Start(SI)
این کد `ffmpeg.exe` را به عنوان فایل اجرایی استفاده میکند و پارامترهای مورد نیاز را در `Arguments` قرار میدهد. همچنین، `UseShellExecute` را برابر با False قرار داده تا دستورات CMD مستقیماً اجرا شوند و `RedirectStandardOutput` را برابر با True قرار داده تا خروجی CMD قابل دسترسی باشد.
ROSTAM2
پنج شنبه 19 مرداد 1402, 22:19 عصر
به نظرم مشکل شما ناشی از استفاده از `CMD.EXE` به عنوان فایل اجرایی است. برای اجرای دستورات CMD با پارامترها، میتوانید مستقیماً فایل `ffmpeg.exe` را به عنوان فایل اجرایی استفاده کنید و پارامترهای خود را در مورد `Arguments` قرار دهید.
این کد را برای اجرای دستورات CMD با استفاده از `ffmpeg.exe` امتحان کنید:
Dim Parameters As String = String.Format("-f dshow -i audio={2}{0}{2} {2}{1}{2}", Me.DeviceComboBox.SelectedItem, FileName, Chr(34))
Dim SI As New ProcessStartInfo
With SI
.Arguments = Parameters
.FileName = "ffmpeg.exe"
.UseShellExecute = False
.RedirectStandardOutput = True
.CreateNoWindow = True
.WorkingDirectory = ToolsDirectory
End With
Dim RecordProcess As Process = Process.Start(SI)
این کد `ffmpeg.exe` را به عنوان فایل اجرایی استفاده میکند و پارامترهای مورد نیاز را در `Arguments` قرار میدهد. همچنین، `UseShellExecute` را برابر با False قرار داده تا دستورات CMD مستقیماً اجرا شوند و `RedirectStandardOutput` را برابر با True قرار داده تا خروجی CMD قابل دسترسی باشد.
این دستور و راهکار درسته ولی مشکلی که هست مجوز اجرای برنامه رو از کاربر می خواد ولی وقتی با cmd اجرا بشه بدون پیام خطا مستقینا شروع به کار می کنه .
154855
ROSTAM2
پنج شنبه 19 مرداد 1402, 22:26 عصر
به نظرم مشکل شما ناشی از استفاده از `CMD.EXE` به عنوان فایل اجرایی است. برای اجرای دستورات CMD با پارامترها، میتوانید مستقیماً فایل `ffmpeg.exe` را به عنوان فایل اجرایی استفاده کنید و پارامترهای خود را در مورد `Arguments` قرار دهید.
این کد را برای اجرای دستورات CMD با استفاده از `ffmpeg.exe` امتحان کنید:
Dim Parameters As String = String.Format("-f dshow -i audio={2}{0}{2} {2}{1}{2}", Me.DeviceComboBox.SelectedItem, FileName, Chr(34))
Dim SI As New ProcessStartInfo
With SI
.Arguments = Parameters
.FileName = "ffmpeg.exe"
.UseShellExecute = False
.RedirectStandardOutput = True
.CreateNoWindow = True
.WorkingDirectory = ToolsDirectory
End With
Dim RecordProcess As Process = Process.Start(SI)
این کد `ffmpeg.exe` را به عنوان فایل اجرایی استفاده میکند و پارامترهای مورد نیاز را در `Arguments` قرار میدهد. همچنین، `UseShellExecute` را برابر با False قرار داده تا دستورات CMD مستقیماً اجرا شوند و `RedirectStandardOutput` را برابر با True قرار داده تا خروجی CMD قابل دسترسی باشد.
درسته حق یا شما بود من به .UseShellExecute = False هیچ توجهی نکرده بودم.
خیلی متشکر
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.