PDA

View Full Version : سوال: چطور میشه عنوان ی پنجره رو بدست اورد و با استفاده از عنوان پنجره رو بست



en.reza
دوشنبه 11 دی 1391, 08:21 صبح
سلام
دوستان چطور میشه عنوان ی پنجره رو بدست اورد و با استفاده از عنوان پنجره رو بست


می خوام ی برنامه بنویسم که اولا نام پنجره ی فعال رو بگه و با گرفتن نام پنجره اون رو ببنده یا ی برنامه رو end process کنه

morteza5358
دوشنبه 11 دی 1391, 16:28 عصر
سلام
برای بستن به مسیج باکس میتونی این کارو بکنی:
این کد عنوان پنجره فعال رو برمیگردونه...
[DllImport("user32.dll")]
static extern int GetForegroundWindow();
[DllImport("user32.dll")]
static extern int GetWindowText(int hWnd, StringBuilder text, int count);

public static void TestA()
{
int h = GetForegroundWindow();
StringBuilder b = new StringBuilder();
GetWindowText(h, b, 256);
MessageBox.Show(b.ToString());
}

با این کد هم میتونی براش اینتر رو بفرستی تا بسته بشه...
SendKeys.Send("{Enter}");

مهرداد صفا
دوشنبه 11 دی 1391, 17:15 عصر
سلام
میتوانید با استفاده از توابع
GetActiveWindow
GetForeGroundWindow (http://msdn.microsoft.com/en-us/library/windows/desktop/ms633505(v=vs.85).aspx)
هندل پنجره فعال را گرفته و با استفاده از GetWindowText (http://msdn.microsoft.com/en-us/library/windows/desktop/ms633520(v=vs.85).aspx) عنوان پنجره را به دست بیاورید.
حالا میتوانید با دادن هندل پنجره به توابع DestroyWindow (http://msdn.microsoft.com/en-us/library/windows/desktop/ms632682(v=vs.85).aspx) یا EndTask (http://msdn.microsoft.com/en-us/library/windows/desktop/ms633492(v=vs.85).aspx) پنجره را ببندید یا اینکه لیست Process های فعال را با استفاده از System.Diagnostics.Process.GetProcesses بگیرید و نام پنجره (MainWindowText) مربوط به هر Process را با نام پنجره مورد نظر تطابق دهید و در صورت نیاز با استفاده از متود Process.CloseMainWindow پنجره مربوط به Process را ببندید یا با استفاده از Process.Kill خود Process را ببندید.
با فرض داشتن کلمه آخر عنوان پنجره:

(from process in Process.GetProcesses() where process.MainWindowTitle.EndsWith("Notepad") select process).First().Kill();