ورود

View Full Version : سوال: پيدا كردن دستگيره تمام پنجره هاي باز



m_haghshenas
دوشنبه 25 خرداد 1388, 20:35 عصر
با سلام

مي خواستم بدونم چطور مي تونم دستگيره (handle) تمام پنجره هاي باز در ويندوز رو بدست بيارم چون ميخوام به يك پنجره خاص دسترسي داشته باشم كه يك قسمت از title اون امكان داره كه تغيير كنه.و نمي تونم مستقيماً از FindWindow استفاده كنم.
ضمنا اگه اسم پروسه يك برنامه رو داشته باشيم آيا مي تونيم به پنجره يا هندل ديالگ اون دسترسي داشته باشيم ؟
با تشكر

A_Salimi
سه شنبه 26 خرداد 1388, 10:06 صبح
اگه مطمئن باشي كه Title يك قسمت ثابت داره ميتوني درون اون جستجو كني :
مثلا ميتوني كد زير رو در يك تايمر با سرعت نسبتا بالا بذاري تا هر وقت اون پنجره بالاتر از تمام پنجره هاي ويندوز قرار گرفت فورا اسمش رو بهت بگه.(در اينجا فرض شده كه در عنوان پنجره شما كلمه Notepad وجود داره)




HWND hw=::GetForegroundWindow();
LPWSTR Caption=new TCHAR[250];
::GetWindowText(hw,Caption,250);
CString St(Caption);
if(St.Find(_T("Notepad"))!=-1)
{

KillTimer(1);
MessageBox(St);
}
delete Caption;

m_haghshenas
چهارشنبه 27 خرداد 1388, 16:16 عصر
تشكر مي كنم از زحمات خالصانه شما A_Salimi