PDA

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 هیچ توجهی نکرده بودم.
خیلی متشکر