PDA

View Full Version : پیدا کردن handel



رهنورد2
پنج شنبه 11 آبان 1385, 12:46 عصر
فرض کنید یک برنامه غیر از برنامه خودمان در حال اجرا است ودر یک صفحه از ان برنامه کنترلهای مثل مثلا commbox وجود دارند چطور میشه هندل ان را بدست اورد؟

محمد میرمصطفی
پنج شنبه 11 آبان 1385, 23:25 عصر
فقط unmanaged با API: FindWindow

ARA
جمعه 12 آبان 1385, 11:38 صبح
این رو تو قسمت vb کارها پیدا کردم خیلی عالی بود
مشکلی هم داشتی بگو تستش کردم درست جواب داد
سوال


بدست آوردن هندل یک شئ از یک Application دیگر
سلام.من یه سوال دارم که تا حالا هر جا مطرح کردم نتونستن جواب درستی به من بدن حتی MCSD.NET های با تجربه هم من و پاس میکردن اینور و اونور.من میخوام هندل یه شیئ رو در یه پنجره بگیرم مثلا هندل TextBox Open در پنجره ی Run بدون اینکه ماوس رو روی این TextBox ببرم تا هندلش رو به من بده.اگه جوابمو بدین که خیلی خیلی ممنون.




جواب


روش ساده تر استفاده از FindWindowEx هست



[DllImport("user32.dll", SetLastError = true)]
public static extern IntPtr FindWindowEx(IntPtr parentHandle, IntPtr childAfter, string className, string lpszWindow);

private IntPtr GetEditHandle()
{
IntPtr result = new IntPtr();

IntPtr desktopHandle = IntPtr.Zero;

IntPtr runWindowHandle = FindWindowEx(desktopHandle, IntPtr.Zero, null, "Run");

if (runWindowHandle.ToInt32() > 0)
{
IntPtr comboBoxHandle = FindWindowEx(runWindowHandle, IntPtr.Zero, "Combobox", null);
IntPtr textBoxHandle = FindWindowEx(comboBoxHandle, IntPtr.Zero, "Edit", null);

result = textBoxHandle;
}

return result;
}




http://barnamenevis.org/forum/showthread.php?t=51784