PDA

View Full Version : کار با تابع ای پی آی ()Enumchildwindows



roox_3000
شنبه 01 تیر 1392, 02:10 صبح
با سلام خدمت دوستان و اساتید

من برای پیدا کردن هندل 2 کنترل با یک کلاس نیاز به استفاده از تابع ()Enumchildwindows پیدا کردم که تابعشو فراخوانی کردم تو پروژم اما استفاده ازشو و اینکه چحوری هندل تک تک کنترلا رو میده بلد نیستم


internal

delegate int WindowEnumProc(IntPtr hwnd, IntPtr lparam);


[
DllImport("user32.dll")]


internalstaticexternbool EnumChildWindows(IntPtr hwnd, WindowEnumProc func, IntPtr lParam);




از اساتید و دوستان تقاضای راهنمایی در این مورد و دارم

با تشکر

roox_3000
شنبه 01 تیر 1392, 03:15 صبح
سلام دوستان کار باهاشو یاد گرفتم که به ساده ترین روش میزارم اینجا تا دوستانی که با مشکل من مواجه شدن ازش استفاده کنن

step by step

1- فراخوانی dll و تابع کار با ای پی آی EnumChildWindows و همینطور callback تابع به داخل پروژه :





[DllImport("user32.Dll")]

[return: MarshalAs(UnmanagedType.Bool)]

public static extern bool EnumChildWindows(IntPtr parentHandle,Win32Callback callback,IntPtr lParam);


public delegate bool Win32Callback(IntPtr hwnd, IntPtr lParam);





2- نوشتن تابع callback برای مدیریت کنترل های فرزندهای پیدا شده :




public bool mess(IntPtr hwnd, IntPtr lParam)
{
MessageBox.Show(hwnd.ToInt64().ToString());

return true;
}



3- و در آخر فراخوانی تابع ای پی آی EnumChildWindows که میتونید تو رویداد کلیک یک باتن از آن استفاده کنید




EnumChildWindows(parrent handle, mess, IntPtr.Zero);