امتیاز موضوع:
  • 2 رأی - میانگین امتیازات: 5
  • 1
  • 2
  • 3
  • 4
  • 5
غير فعال كردن Print Screen از صفحه كليد
نویسنده پیام
sav68 آفلاین
كاربر دو ستاره
**

ارسال‌ها: 219
موضوع‌ها: 27
تاریخ عضویت: بهمن ۱۳۸۷

تشکرها : 469
( 126 تشکر در 47 ارسال )
ارسال: #12
RE: غير فعال كردن Print Screen از صفحه كليد
خيلي ممنون كه بازم جواب دادين

ميدونم الان پيش خودتون دارين به من ميگين ... (نشنوم گفتي ها!!!)

ولي من بازم نفهميدم اگر وقت ياريتان كرد و دوست داشتين يكم بيشتر توضيح بدين

اگر هم نشد كه هيچي ديگه بازهم ممنون

دنیا دو روز است یک روز با تو و یک روز علیه تو
روزی که با تو است مغرور نباش و روزی که علیه توست صبور باش
چون هر دو پایان پذیرند
حضرت علی ع

سال جديد بر پارسيان مبارك باد


من برای مدتی نیستم
۱۲-فروردین-۱۳۸۸, ۱۶:۴۷:۰۸
ارسال‌ها
پاسخ
تشکر شده توسط : HoseinVig
ajlajlajl آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 2,192
موضوع‌ها: 70
تاریخ عضویت: مهر ۱۳۸۴

تشکرها : 932
( 2618 تشکر در 1020 ارسال )
ارسال: #13
RE: غير فعال كردن Print Screen از صفحه كليد
یه سری به اینجا بزنید.http://forum.iranled.com/showthread.php?tid=5910

میزان رای دشمن است!
[تصویر:  cff100.png]
۱۲-فروردین-۱۳۸۸, ۱۸:۲۱:۳۸
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : sav68, HoseinVig
Payman62 آفلاین
مدیر بخش ویژوال بیسیک
*****

ارسال‌ها: 2,273
موضوع‌ها: 149
تاریخ عضویت: اسفند ۱۳۸۴

تشکرها : 1308
( 3661 تشکر در 942 ارسال )
ارسال: #14
RE: غير فعال كردن Print Screen از صفحه كليد
سلام.
اینم مثال از هوک.


فایل‌(های) پیوست شده
.rar   VB6_Windows_Hook_Library_Full_Source.rar (اندازه: 54.83 KB / تعداد دفعات دریافت: 114)
۱۲-فروردین-۱۳۸۸, ۲۱:۰۵:۰۷
ارسال‌ها
پاسخ
تشکر شده توسط : sav68, HoseinVig, ajlajlajl
sav68 آفلاین
كاربر دو ستاره
**

ارسال‌ها: 219
موضوع‌ها: 27
تاریخ عضویت: بهمن ۱۳۸۷

تشکرها : 469
( 126 تشکر در 47 ارسال )
ارسال: #15
RE: غير فعال كردن Print Screen از صفحه كليد
سلام و تشكر

باز هم مطالبي جديد از دوستان اينترنتي از نوع ايرانويجي ياد گرفتم

خيلي ممنون

دنیا دو روز است یک روز با تو و یک روز علیه تو
روزی که با تو است مغرور نباش و روزی که علیه توست صبور باش
چون هر دو پایان پذیرند
حضرت علی ع

سال جديد بر پارسيان مبارك باد


من برای مدتی نیستم
۱۲-فروردین-۱۳۸۸, ۲۳:۴۶:۰۰
ارسال‌ها
پاسخ
تشکر شده توسط : HoseinVig
lord_viper غایب
مدیر کل انجمن
*****

ارسال‌ها: 3,949
موضوع‌ها: 352
تاریخ عضویت: بهمن ۱۳۸۴

تشکرها : 5193
( 9875 تشکر در 2650 ارسال )
ارسال: #16
RE: غير فعال كردن Print Screen از صفحه كليد
خب من یه مقاله کامل در مورد هوک نوشته دارم بخشی از اون رو براتون میگزارم تا راحتر متوجه بشید


Hook چیست

Hook یک تابع callback میباشد که به برنامه ما این امکان را میدهد تا اطلاعات قبل از رسیدن به مقصد انها را دریافت کند و hook میتواند این اطلاعات را قبل از رسیدن به مقصد وارسی یا تغییر دهد ویندوز دارای هوک های مختلفی میباشد که هر نوع به منضور دسترسی به اطلاعات خاصی طراحی شده اند بطور مثال میتوان با استفاده از WH_MOUSE hook پیغامهای مربوط به موس را مانیتور کرد هنگامی که برنامه ما از یکی این تابع callback که انرا hook procedure می نامنداستفاده میکند هنگامی که پیغامی که وابسته به ان هوک باشد ارسال شود ویندوز ان پیغام را به hook مورد نظر که به ثبت رسیده باشد ارسال میکند
لیستی از hook procedure در زیر امده است
CallMsgFilter CallWndProc CallWndRetProc CBTProc DebugProc GetMsgProc
ForegroundIdleProc JournalPlaybackProc JournalRecordProc KeyboardProc MessageProc MouseProc ShellProc SysMsgProc

برای استفاده از یک هوک ابتدا باید انرا نصب نمود(انرا به ویندوز معرفی کرد مدیریت هوک ها را بخشی بنام chain hook بر عهده دارد)
2نوع هوک وجود دارد LocalHook و System Wide Hook
Local Hook بر روی یک برنامه یا یک thread نصب می شود و کدها درون برنامه قرار می گیرد اما System Wide Hook بر روی همه برنامه ها و Therad ها اجرا می شود و کدها باید درون dll قرار بگیرد
برای نصب هوک در hook chain ما از تابع SetWindowsHookEx استفاده میکنیم این تابع 3 پارامتر دارد و مقداری که بر میگرداند id هوک نصب شده در hook chain می باشد
Hook chain بخشی ار سیستم عامل می باشد که hook ها در انجا ثبت می شوند

کد:
HHOOK SetWindowsHookEx(
    int idHook,
    HOOKPROC lpfn,    
    HINSTANCE hMod,
    DWORD dwThreadId )

پارامتر idHook نمایانگر نوع هوکی هست که میخواهیم نصب کنیم

WH_CALLWNDPROC:مانیتور کردن پیغامها قبل از رسیدن به پنجره هدف
WH_CALLWNDPROCRET:مانیتور کردن پیغامها بعد ار ارسال به پنجره هدف
WH_CBT:برای مانیتور کردن اعلانات برنامه های computer-based training
WH_DEBUG:برای اشکال زدایی هوک های دیگرمناسب میباشد
GetMsgProc:برای مانیتور کردن system calls هنگامی که یک message از برنامه ای دریافت میکند
ForegroundIdleProc:مانیتور کردن بیکار idle بودن thread ریسمان مورد نظر
WH_GETMESSAGE :برای مانیتور کردن پیغامهایی که به صف پیغامهای یک پنجره post می شود
WH_JOURNALPLAYBACK:ارسال پیغامی که قبلا توسط این هوک ذخیره شده است
WH_JOURNALRECORD :پیغامهایی را که به system message queueارسال می شود را ذخیره میکند
WH_KEYBOARD:مانیتور کردن کلیدهای فشرده شده
WH_MOUSE:مانیتور کردن فعالیت های موس
WH_MSGFILTER:مانیتور کردن پیغامهایی(event message) که توسط dialog box, message box, menu, یا scroll barایجاد می شود
WH_SHELL:برای مانیتور کردن اعلانات notification های برنامه های shell
WH_SYSMSGFILTER: مانیتور کردن پیغامهایی(event message) که توسط dialog box, message box, menu, یا scroll barایجاد می شود برای تمام برنامه ها

Lpfn یک مقدار از نوع اشاره گر که به ادرس تابع هوک اشاره میکند

hMod شناسه dll که تابع hook در ان قرار دارد
dwThreadId مشخص کننده thread ریسمانی میباشد که هوک بر روی ان نصب می شود

برای غیر فعال کردن hook از تابع UnhookWindowsHookEx استفاده می شود که دارای 1 پارامتر میباشد

کد:
BOOL UnhookWindowsHookEx( HHOOK hhk );

Hhk : هندل تابع هوک مورد نظر میباشد

برای ارسال اطلاعات به هوک بعدی درhook از تابع CallNextHookEx استفاده می شود زیرا ممکن است بر روی سیستم چندین هوک نصب شده باشد
۱۲-فروردین-۱۳۸۸, ۲۳:۵۸:۱۴
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : Payman62, yeketaz, ajlajlajl, sav68, HoseinVig, amirjan
sav68 آفلاین
كاربر دو ستاره
**

ارسال‌ها: 219
موضوع‌ها: 27
تاریخ عضویت: بهمن ۱۳۸۷

تشکرها : 469
( 126 تشکر در 47 ارسال )
ارسال: #17
RE: غير فعال كردن Print Screen از صفحه كليد
سلام
بازم تشكر
مفيد بودClap

اگر ميشه يك مثال كاربردي رو توضيح بدين (كد نباشه هم مهم نيست فقط كاربردش رو بهتر بفهمم كد بود كه بهتر)
راستي اگه نخايم از هوك استفاده كنيم چي؟ جايگزين؟Question


راستي آقا پيمان كد خوبي دادين يكسري چيزهاي جديد ياد گرفتم
ولي نفهميدم دقيقا چكار ميكنه اگه شد يكم راجع بهش توضيح بدين لطفا!


در كل از دوستان تشكر ميكنم

دنیا دو روز است یک روز با تو و یک روز علیه تو
روزی که با تو است مغرور نباش و روزی که علیه توست صبور باش
چون هر دو پایان پذیرند
حضرت علی ع

سال جديد بر پارسيان مبارك باد


من برای مدتی نیستم
۱۳-فروردین-۱۳۸۸, ۲۳:۳۸:۲۳
ارسال‌ها
پاسخ
تشکر شده توسط : HoseinVig
lord_viper غایب
مدیر کل انجمن
*****

ارسال‌ها: 3,949
موضوع‌ها: 352
تاریخ عضویت: بهمن ۱۳۸۴

تشکرها : 5193
( 9875 تشکر در 2650 ارسال )
ارسال: #18
RE: غير فعال كردن Print Screen از صفحه كليد
ببینین معماری ویندوز بر پایه پیغامها هست وقتی شما مثلا رو یه دکمه کلیک میکنین یه پیغام به WM_LBUTTONDOWN با استفاده از تابع sendmessage به برنامه مورد نظر فرستاده میشه در هر برنامه در حال اجرا یک تابع peekmessage برای گرفتن پیغامها و یک تابع WindowProc برای پردازش پیغامهای دریافتی وجود داره وقتی وقتی WindowProc پیغامی دریافت میکنه از رو پارامترهای sendmessage مثل handle میفهمه که این پیغام مربوط به کدام کنترل هست و از روی نوع پیغام هم میفهمه چه عملی انجام شده و کدام رویداد یا دستورات باید اجرا بشه

حالا مثلا ما به notepad یک منوی جدید اضافه کردیم یا مثلا میخواهیم کنترل کنیم که روی برنامه ما کلید prt-sc فشرده شده یا نه در اینجا ما از هوک استفاده میکنیم هوک میاد و واسط میشه بین سیستم عامل و برنامه ما و این پیغامها قبل از رسیدن به برنامه مقصد به هوک میرن و بعد از اون به برنامه میرسن اینجوری وقتی دقیقا روی برنامه شما دکمه printscreen فشار داده بشه قبل از ارسال این دکمه به برنامه مورد نظر هوک شما اونو دریافت میکنه و شما متوجه میشین یا میتونین این دستور رو از صف پیامها حذف کنین انگار هیچ اتفاقی نیفتاده یا میتونین کلیپبورد رو پاک کنین یا در مورد همون نوت پد وقتی شما اون منو رو انتخاب میکنین باید عمل مورد نظر شما انجام بشه پس باید متوجه کلیک شدن روی منویی که اضافه کردین بشین اینجا هم با یه هوک میشه متوجه شد که کدام item از منو کلیک شده و اگه منویی که شما اضافه کردین بود عمل مورد نظر شما اعمال بشه
۱۴-فروردین-۱۳۸۸, ۱۱:۰۳:۱۰
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : sav68, HoseinVig, ajlajlajl
sav68 آفلاین
كاربر دو ستاره
**

ارسال‌ها: 219
موضوع‌ها: 27
تاریخ عضویت: بهمن ۱۳۸۷

تشکرها : 469
( 126 تشکر در 47 ارسال )
ارسال: #19
RE: غير فعال كردن Print Screen از صفحه كليد
سلام

بسيار عالي بود.


از دوستان مچكرم

دنیا دو روز است یک روز با تو و یک روز علیه تو
روزی که با تو است مغرور نباش و روزی که علیه توست صبور باش
چون هر دو پایان پذیرند
حضرت علی ع

سال جديد بر پارسيان مبارك باد


من برای مدتی نیستم
۱۴-فروردین-۱۳۸۸, ۱۶:۵۵:۵۸
ارسال‌ها
پاسخ
تشکر شده توسط : HoseinVig
esmaeily-hosein آفلاین
كاربر دو ستاره
**

ارسال‌ها: 232
موضوع‌ها: 12
تاریخ عضویت: دى ۱۳۸۴

تشکرها : 6
( 91 تشکر در 46 ارسال )
ارسال: #20
RE: غير فعال كردن Print Screen از صفحه كليد
حالا بزار منم جنیه های دیگه ای ازشو بهت بگم تا قبل از استفاده بیشتر بهش دقت کنی هر چند به نظر من استفاده از hook بیشتر پاک کردن صورت مسیله است !
فرض کن من برنامه نویس انجمن اسلامی هستم و این انجمن به من پیشنهاد پلاگین قران برای Notepad ویندوز به من داده .
خوب یه پروژه جدید باز میکنم (فرض بر VB6)
مشکلاتی که در این پروژه به آن قطعاً بر میخوریم .
الف ) برنامه من باز نباشد .
ب ) ...
راه حل :
برنامه خود را در run ویندوز میزاریم تا همیشه اول سیستم بیاد بالا یه timer قرون وسطی هم تو برنامه میزاریم تا چک کنه هر موقع Notepad باز شد یقشو بگیره و یه منو بهش اضافه کنیم .
ولی چون سال 2009 بعد میخندیم عجب کار مسخره ای چون با این کار کلی از منابع سیستم و پروسه مربوط به برنامه خودمون گرفتیم . روش عوض میکنیم چون امروزه کلمه thread باب شده از اون استفاده کنیم .
اینجوری پروسه خودمون دیگه کارش کم میشه ولی چون vb6 در برابر ترد ها flexibility نداره (نمیدونم چرا ) یه نسخه به عقب بر میگردیم و از vb5 استفاده میکنیم . تا اینجا بد نشد و همه چیز از دید کاربر 0 پنهانه . ولی مشکل بازم اینه که اصغر آقا سبزی فروش هر روز برای اینکه مبادا ویروس گرفته باشه msconfig چک میکنه وقتی اسم برنامه ما رو میبینه دکمه del میزنه .
این بار برنامه نویس شعر سهراب میخونه که میگه باید چشمها را شست جور دیگه باید دید . از روش ویروسی خودش دست بر میداره و میره تو فرمش یه دکمه میزاره تا از اون طریق برنامه notepad باشه . البته برای کارمندان اون انجمن خیلی عجیبه چون تا حالا هیچ پلاگینی رو ندیدن که اینجوری از طریق یه برنامه دیگه باید بالا چون رو کامپیوترشون فتوشاپ دارن و اون خودش پلاگینها رو load میکنه .
برنامه نویس انجمن بالاخره کارمندای انجمن راضی میکنه که این با بقیه فرق داره ...
میاد منو رو اضافه میکنه بعد میفهمه کار سختش اینجاشه .
برای اینکار میاد به ویندوز میگه تمام message های منو notepad قبل از فرستاده شدن بده من چک کنم .
و چون قلابه هر آشغالی که به دستش میرسه رو به این میده و چون بیشترین چیزی که از cpu بازه زمانی بیشتری میگیره دستورات شرطی برنامه نویس مدام باید چیزهای آشغال چک کنه تا به ماهی برسه .
در آخر ناگفته نمونه امکان داره نسخه های متعدد ویندوز هم این وسط بازیش بگیره و انتی ویروس ها و هزار تا چیز دیگه ...
در آخر برنامه نویسه موندو حوضش
قصه ما به سر رسید hook به خونش نرسید .

هر چی روش خوبه توش خوب نیست!
۱۵-فروردین-۱۳۸۸, ۰۱:۳۶:۰۱
ارسال‌ها
پاسخ
تشکر شده توسط : sav68, lord_viper, HoseinVig, ajlajlajl
sav68 آفلاین
كاربر دو ستاره
**

ارسال‌ها: 219
موضوع‌ها: 27
تاریخ عضویت: بهمن ۱۳۸۷

تشکرها : 469
( 126 تشکر در 47 ارسال )
ارسال: #21
RE: غير فعال كردن Print Screen از صفحه كليد
سلام و تشكر
مثال بسيار خوبي زدين

ميگم توي دات نت جايگزيني براي هوك وجود دارد (از كلاسهاي دات نت)؟

دنیا دو روز است یک روز با تو و یک روز علیه تو
روزی که با تو است مغرور نباش و روزی که علیه توست صبور باش
چون هر دو پایان پذیرند
حضرت علی ع

سال جديد بر پارسيان مبارك باد


من برای مدتی نیستم
۱۵-فروردین-۱۳۸۸, ۱۲:۴۹:۵۷
ارسال‌ها
پاسخ
تشکر شده توسط : HoseinVig
esmaeily-hosein آفلاین
كاربر دو ستاره
**

ارسال‌ها: 232
موضوع‌ها: 12
تاریخ عضویت: دى ۱۳۸۴

تشکرها : 6
( 91 تشکر در 46 ارسال )
ارسال: #22
RE: غير فعال كردن Print Screen از صفحه كليد
کاربرد hook بیشتر در windows برای برنامه هایی هست که اصلا به هم مرتبط نیستند و میخواهیم بین آن 2 پلی برقرار کنیم . خود من مثلا تو پروژه ای میخواستم کاربر یه سری محاسبات با ماشین حساب انجام بده و نتیجه رو تو یه textBox بریزه 2 راه داشتم یا چرخو دوباره اختراع کنم (یعنی ماشین حساب بنویسم ) و یا از چرخ های موجود استفاده کنم .
من راه دوم انتخاب کردم و با استفاده از hook هر موقع کاربر کلید مساوی میزد نتیجه رو به textBox خود میریختم .
همیشه قبل از اینکه شروع به کد کنی قبلش target مشخص کن میخوای چی کار کنی . شاید اگر میخواستم calculator برام پشتکم بزنه میرفتم از اول مینوشتمش ولی چون پشتک نداشت همون برام کفایت کرد .
(مثال پلاگین هم از این نوعه)

اینجا هم 2 تا بحثه بین برنامه های خودت میخوای ارتباط برقرار کنی یا نرم افزار شرکتهای دیگه .
اگر نرم افزار مال شرکت دیگست فعلا تنها راه همین هوکه البته microsoft خیلی دوست داره جایگزینی برای این سیستم messaging پیدا کنه ولی فعلا که فکر میکنم امکانش نباشه ولی تو نرم افزار های خودت داستان فرق میکنه
امیدوارم کامل بوده باشه ...

هر چی روش خوبه توش خوب نیست!
۱۵-فروردین-۱۳۸۸, ۱۳:۱۹:۲۰
ارسال‌ها
پاسخ
تشکر شده توسط : HoseinVig, ajlajlajl, sav68


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  قفل كردن پوشه با كد نويسي Ghoghnus 0 2,227 ۱۵-آذر-۱۳۹۲, ۱۵:۰۹:۴۹
آخرین ارسال: Ghoghnus
  ساخت كد فعال سازي جهت برنامه doooste_2002 4 4,236 ۳۰-اردیبهشت-۱۳۹۲, ۱۷:۳۵:۴۶
آخرین ارسال: Ghoghnus
  خواندن صفحه کلید در #C hamidsina 10 13,675 ۲۹-خرداد-۱۳۹۱, ۱۷:۱۰:۰۶
آخرین ارسال: mm2636yahoocouk
  نمايش فرم در وسط صفحه iran58 1 5,707 ۲۰-مرداد-۱۳۸۹, ۱۳:۲۲:۴۵
آخرین ارسال: HoseinVig
  با زدن هر دکمه ای صفحه دوباره لود میشه - تحت وب mojtabamalaekeh 0 2,019 ۲۰-تير-۱۳۸۹, ۱۵:۳۴:۰۴
آخرین ارسال: mojtabamalaekeh
  غيرفعال كردن رديف هاي يك ديتاگريد iran58 0 2,068 ۱۹-تير-۱۳۸۹, ۱۳:۵۲:۲۱
آخرین ارسال: iran58
  چك كردن خالي بودن TextBox iran58 1 6,970 ۲۹-اردیبهشت-۱۳۸۹, ۱۲:۴۹:۲۸
آخرین ارسال: ajlajlajl
  غیر فعال کردن کلیدهای کیبورد hamidsina 8 10,628 ۱۲-شهریور-۱۳۸۸, ۱۱:۰۰:۵۰
آخرین ارسال: hamidsina
  چطوری این صفحه نمایش رو بسازم؟؟؟؟ iman-63 3 3,851 ۱۲-مرداد-۱۳۸۸, ۱۷:۲۹:۳۵
آخرین ارسال: ajlajlajl
  باز كردن سايت از اينترنت اكسپلورر Prof.Farahmand 0 3,798 ۱۷-فروردین-۱۳۸۸, ۱۷:۰۸:۲۸
آخرین ارسال: Prof.Farahmand

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 5 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS