PDA

View Full Version : سوال: چگونه به یه برنامه ای فوکوس بدهیم(فعالش کنیم)؟



gjmkdyttyhujk
جمعه 16 مرداد 1394, 19:50 عصر
سلام دوستان. خسته نباشید. من دارم یه برنامه سی شارپ می نویسم که تو اون باید به یکی از اپلیکیشن هایی که تو ویندوز نصبه فوکوس بدم. یعنی اینکه اگه باز نباشه بازش می کنم با system.diagnostics.process.start بعد، حالا می خوام که این برنامه فعال باشه برای کاربر. یعنی دیگه لازم نباشه که روش کلیک کنه تا بیاد جلوی برنامه های دیگه. همین. خیلی ممنونم.

rg_BlackRose
دوشنبه 19 مرداد 1394, 22:11 عصر
سلام

در مرحله اول این فضای نامی رو به بالای کلاس اضافه کنید

using System.Runtime.InteropServices;


این توابع و API ها رو به کلاس فرمتون اضافه کنید.

//فرم مورد نظر رو با عنوان فرم و کلاس فرم برمیگردونه
[DllImportAttribute("User32.dll")]
private static extern int FindWindow(String ClassName, String WindowName);

//فرم مورد نظر رو به حالت Active در میاره
[DllImportAttribute("User32.dll")]
private static extern IntPtr SetForegroundWindow(int hWnd);


برای استفاده از API های بالا از این کدها استفاده کنید.

//مثال: برنامه نوت پد رو با عنوان "Untitled - Notepad" که قبلا باز شده به حالت اکتیو در میاره
int hWnd = FindWindow(null, "Untitled - Notepad");
if (hWnd > 0) //If found
{
SetForegroundWindow(hWnd); //Activate it
}
else
{
MessageBox.Show("Window Not Found!");
}


نمونه برنامه نوشته شده با VS 2015 و دات نت 3
134135

موفق باشید.