PDA

View Full Version : استفاده از waitforinputidle برای کنسول



ایلیا آخوندزاده
شنبه 03 آذر 1397, 00:43 صبح
سلام
دوستان من برای بازکردن فایل exe داخل یک پنل از کدی استفاده میکنم که شامل تکه کد زیر هست :
process.WaitForInputIdle();

حالا من میخوام یک فایل اجرایی کنسول به زبان ++C رو اجرا کنم ولی این تکه کد خطا میده چون برنامه نوشته شده به زبان ++C فاقد UI هستش یعنی گرافیکی نیست
حالا سوالم اینه که برای اجرای برنامه خارجی با شرایط مذکور چه راهی وجود داره؟

Shadow_net
شنبه 03 آذر 1397, 19:46 عصر
سلام. خب خطا رو میزاشتید تا بررسی بشه
کد زیر رو تست کنید

using System.Runtime.InteropServices;
using System.Diagnostics;


[DllImport("USER32.DLL")]
static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent);


[DllImport("USER32.dll")]
private static extern bool MoveWindow(IntPtr hwnd, int x, int y, int cx, int cy, bool repaint);

private void Form1_Load(object sender, EventArgs e) {
Process process = Process.Start("notepad.exe");
process.WaitForInputIdle();
SetParent(process.MainWindowHandle, this.panel1.Handle);


MoveWindow(process.MainWindowHandle, 0, 0, this.Width - 90, this.Height, true);
}

ایلیا آخوندزاده
شنبه 03 آذر 1397, 21:46 عصر
دوست عزیز ممنون از پاسختون
لطفا دقت بفرمایین که نوشتم بالا خطا بخاطر عدم وجود UI هستش و این کدی که شما زحمتش رو کشیدین همون کدی هست که من استفاده میکنم ولی برای برنامه های کنسولی پاسخگو نیست چون گرافیکی نیستن
مجدد ممنون از وقت گذاشتنتون :قلب: