View Full Version : مشکل با hook
kitten
دوشنبه 07 آبان 1386, 19:44 عصر
وقتی از دستور show window() در سی پلاس پلاس استفاده می کنم (برای پنهان کردن برنامه) و بعد از cin استفاده می کنم متن را نمی گیرد چه کار کنم؟
Nima_NF
چهارشنبه 09 آبان 1386, 00:32 صبح
شما وقتی برنامه را مخفی می کنید یعنی دیگر فوکوس روی پنجره شما نیست و یا به شکل دیگر برنامه شما فعال (active) نیست تا ورودی های کاربر را بگیرد. چگونه پنجره شما بداند که اطلاعات برای آن وارد می شوند ...
کاری که می توانید انجام دهید گرفتن کل ورودی های صفحه کلی از طریق توابع مخصوص کیبرد است و سپس پردازش روی آنها.
kitten
چهارشنبه 09 آبان 1386, 19:01 عصر
لطفا بگین چگونه باید این کار را بکنم؟
Nima_NF
جمعه 11 آبان 1386, 02:04 صبح
شما باید از قابلیت hook استفاده کنید , به این شکل که یک dll می سازید و درون آن تابع مورد نظر پردازش و دریافت کیبرد را انجام می دهید و سپس dll ساخته شده را توسط توابع زیر در بخشی از برنامه خود فراخوانی و هوک می کنید:
hinstDLL = LoadLibrary(TEXT("c:\\msgtest.dll"));
hkprcSysMsg = (HOOKPROC) GetProcAddress(hinstDLL, "_KeyboardProc@12");
hhookSysMsg = SetWindowsHookEx(WH_KEYBOARD,hkprcSysMsg,hinstDLL, 0);
در صورتی که آرگومان چهارم 0 باشد ، پیام های مورد نظر برای تمامی پروسه ها ارسال می شود. در مورد تابع KeyboardProc می توانید از طریق تابع SetWindowsHookEx در MSDN به مثال های کامل دریافت انواع پیام ها دسترسی پیدا کنید.
ضمنا توجه کنید که آنتی ویروس ها با قابلیت فایروال می توانند برنامه شما را شناسایی و به کاربر اخطار لازمه را بدهند.
amineashna
جمعه 16 فروردین 1387, 17:38 عصر
.با تشکر از راهنمایی شما
:چند تا سوال داشتم
چیست hintsDLL
کد های فوق را در چه قسمتی از برنامه باید اضافه کرد؟
در مورد پارامترهای داده شده به توابع استفاده شده توضیح دهید؟
Nima_NF
جمعه 16 فروردین 1387, 23:17 عصر
hinstDLL یک متغیر از نوع HINSTANCE هست،
کد های فوق فقط بخش کوچکی از کار شماست، شما باید در یک dll روال hook کردن ورودی مورد نظر را مشخص و تعریف کنید.
برای اطلاعات بیشتر نمونه ها در صفحات زیر را مطالعه کنید:
Using Hooks - 1 (http://msdn2.microsoft.com/en-us/library/ms644960%28VS.85%29.aspx)
Hooking the Keyboard - 2 (http://www.codeguru.com/Cpp/W-P/system/keyboard/article.php/c5699/)
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.