امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
کمک در مورد HOT kay
نویسنده پیام
aminbrleevb آفلاین
كاربر دو ستاره
**

ارسال‌ها: 73
موضوع‌ها: 14
تاریخ عضویت: فروردین ۱۳۸۷

تشکرها : 27
( 9 تشکر در 7 ارسال )
ارسال: #1
کمک در مورد HOT kay
با سلام خدمت دوستان گرامی و اساتید محترم
من در مورد hotkey و ساختن اون هیچ مشکلی ندارم ولی یه سوال بزرگ دارم و اون اینه که وقتی من میام یه hot key میسازم که مثلا و قتی کلید a زده بشه فلان فعالیت در برنامه من انجام بشه دیگه کلید a در بر نامه های دیگه غیر فعال میشه و مثلا در نودپد نمیشه کلید a رو تایپ کرد .
آیا برای رفع این مشکل راه حلی وجود داره یا نه ممنون میشم اگه با حوصله جواب بدین و امید وارم که منظورم رو به صورت کامل رسونده باشم ..... کوچیک شما aminbrlee
با تشکر
۰۸-اردیبهشت-۱۳۸۷, ۱۵:۱۷:۱۲
ارسال‌ها
پاسخ
Iron_Fist غایب
مدیر بازنشسته
*****

ارسال‌ها: 1,456
موضوع‌ها: 70
تاریخ عضویت: آبان ۱۳۸۴

تشکرها : 109
( 456 تشکر در 134 ارسال )
ارسال: #2
RE: کمک در مورد HOT kay
من که نفهمیدم
چطور می شه تو تابع RegisterHotKey فقط ما ویرچوال کی خالی بدون ، شیفت یا کنترل یا آلت یا دکمه ویندوز داشته باشیم
۰۸-اردیبهشت-۱۳۸۷, ۱۷:۰۴:۲۹
ارسال‌ها
پاسخ
lord_viper غایب
مدیر کل انجمن
*****

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

تشکرها : 5193
( 9875 تشکر در 2650 ارسال )
ارسال: #3
RE: کمک در مورد HOT kay
بخاطر اینکه کلید a رو برای hotkey خودتون رجیستر کردین
۰۸-اردیبهشت-۱۳۸۷, ۱۸:۰۸:۰۶
وب سایت ارسال‌ها
پاسخ
aminbrleevb آفلاین
كاربر دو ستاره
**

ارسال‌ها: 73
موضوع‌ها: 14
تاریخ عضویت: فروردین ۱۳۸۷

تشکرها : 27
( 9 تشکر در 7 ارسال )
ارسال: #4
RE: کمک در مورد HOT kay
میدونم
میگم حالا آیا راهی وجود داره که من وقتی رجیسترش کردم در برنامه خودم
این کلید در برنامه های دیگه غیر فعال نشه
۱۰-اردیبهشت-۱۳۸۷, ۰۵:۵۲:۴۸
ارسال‌ها
پاسخ
aminbrleevb آفلاین
كاربر دو ستاره
**

ارسال‌ها: 73
موضوع‌ها: 14
تاریخ عضویت: فروردین ۱۳۸۷

تشکرها : 27
( 9 تشکر در 7 ارسال )
ارسال: #5
RE: کمک در مورد HOT kay
میدونم
میگم حالا آیا راهی وجود داره که من وقتی رجیسترش کردم در برنامه خودم
این کلید در برنامه های دیگه غیر فعال نشه
۱۰-اردیبهشت-۱۳۸۷, ۰۵:۵۷:۲۷
ارسال‌ها
پاسخ
lord_viper غایب
مدیر کل انجمن
*****

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

تشکرها : 5193
( 9875 تشکر در 2650 ارسال )
ارسال: #6
RE: کمک در مورد HOT kay
راه که وجود داره ولی ساده نیست
مثلایه چیزی مثل keyloger اما فقط برای دکمه A که وقتی فشرده شد forign window رو چک کنه که اگه عنصری مثل edit یا richedit و چیزهایی که برای دریافت ورودی بود بهش با sendmessage حرف A رو ارسال کنه
(چرا از دکمه های F برای hotkey استفاده نمیکنین دردسرش هم کمتره)
۱۰-اردیبهشت-۱۳۸۷, ۱۰:۵۷:۱۳
وب سایت ارسال‌ها
پاسخ
aminbrleevb آفلاین
كاربر دو ستاره
**

ارسال‌ها: 73
موضوع‌ها: 14
تاریخ عضویت: فروردین ۱۳۸۷

تشکرها : 27
( 9 تشکر در 7 ارسال )
ارسال: #7
RE: کمک در مورد HOT kay
دوست من بزار بگم هدفم چیه
من دارم یه کی لاگر درست میکنم با خاصیت hot key
یعنی من برای همه کلید ها یه hot key تعریف کردم
ولی وقتی برنامه رو باز می کنم کلید ها برای بقیه برنامه ها غیر فعال میشه
علت این کار هم اعتماد من به hotkey نسبت به سایر کیلاگر ها که با توابع دیگر و تایمر ها کار می کنند هست
راستی آیا در وی بی تابعی وجود داره که بدون اینکه برنامه در حلقه ای باشه اگه یه کلید زده شد اونوقت برنامه فعال بشه
۱۰-اردیبهشت-۱۳۸۷, ۱۵:۵۲:۴۳
ارسال‌ها
پاسخ
lord_viper غایب
مدیر کل انجمن
*****

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

تشکرها : 5193
( 9875 تشکر در 2650 ارسال )
ارسال: #8
RE: کمک در مورد HOT kay
خوب به اینها توجه کن
برای نصب یک هوک روی سیستم
کد:
The SetWindowsHookEx function installs an application-defined hook procedure into a hook chain. An application installs a hook procedure to monitor the system for certain types of events. A hook procedure can monitor events associated either with a specific thread or with all threads in the system. This function supersedes the SetWindowsHook function.

HHOOK SetWindowsHookEx(

    int idHook,    // type of hook to install
    HOOKPROC lpfn,    // address of hook procedure
    HINSTANCE hMod,    // handle of application instance
    DWORD dwThreadId     // identity of thread to install hook for
   );    


Parameters

idHook

Specifies the type of hook procedure to be installed. This parameter can be one of the following values:

Value    Description
WH_CALLWNDPROC    Installs a hook procedure that monitors messages before the system sends them to the destination window procedure. For more information, see the CallWndProc hook procedure.
WH_CALLWNDPROCRET    Installs a hook procedure that monitors messages after they have been processed by the destination window procedure. For more information, see the CallWndRetProc hook procedure.
WH_CBT    Installs a hook procedure that receives notifications useful to a computer-based training (CBT) application. For more information, see the CBTProc hook procedure.
WH_DEBUG    Installs a hook procedure useful for debugging other hook procedures. For more information, see the DebugProc hook procedure.
WH_GETMESSAGE    Installs a hook procedure that monitors messages posted to a message queue. For more information, see the GetMsgProc hook procedure.
WH_JOURNALPLAYBACK    Installs a hook procedure that posts messages previously recorded by a WH_JOURNALRECORD hook procedure. For more information, see the JournalPlaybackProc hook procedure.
WH_JOURNALRECORD    Installs a hook procedure that records input messages posted to the system message queue. This hook is useful for recording macros. For more information, see the JournalRecordProc hook procedure.
WH_KEYBOARD    Installs a hook procedure that monitors keystroke messages. For more information, see the KeyboardProc hook procedure.
WH_MOUSE    Installs a hook procedure that monitors mouse messages. For more information, see the MouseProc hook procedure.
WH_MSGFILTER    Installs a hook procedure that monitors messages generated as a result of an input event in a dialog box, message box, menu, or scroll bar. For more information, see the MessageProc hook procedure.
WH_SHELL    Installs a hook procedure that receives notifications useful to shell applications. For more information, see the ShellProc hook procedure.
WH_SYSMSGFILTER    Installs a hook procedure that monitors messages generated as a result of an input event in a dialog box, message box, menu, or scroll bar. The hook procedure monitors these messages for all applications in the system. For more information, see the SysMsgProc hook procedure.


lpfn

Points to the hook procedure. If the dwThreadId parameter is zero or specifies the identifier of a thread created by a different process, the lpfn parameter must point to a hook procedure in a dynamic-link library (DLL). Otherwise, lpfn can point to a hook procedure in the code associated with the current process.

hMod

Identifies the DLL containing the hook procedure pointed to by the lpfn parameter. The hMod parameter must be set to NULL if the dwThreadId parameter specifies a thread created by the current process and if the hook procedure is within the code associated with the current process.

dwThreadId

Specifies the identifier of the thread with which the hook procedure is to be associated. If this parameter is zero, the hook procedure is associated with all existing threads.



Return Values

If the function succeeds, the return value is the handle of the hook procedure.
If the function fails, the return value is NULL.

Remarks

An error may occur if the hMod parameter is NULL and the dwThreadId parameter is zero or specifies the identifier of a thread created by another process.
Chaining to the next hook procedure (that is, calling the CallNextHookEx function) is optional. An application or library can call the next hook procedure either before or after any processing in its own hook procedure. Although chaining to the next hook is optional, it is highly recommended; otherwise, the other applications that have installed hooks will not receive hook notifications and may behave incorrectly as a result.

Before terminating, an application must call the UnhookWindowsHookEx function to free system resources associated with the hook.
The scope of a hook depends on the hook type. Some hooks can be set only with system scope; others can also be set for only a specific thread, as shown in the following list:

Hook    Scope
WH_CALLWNDPROC    Thread or system
WH_CBT    Thread or system
WH_DEBUG    Thread or system
WH_GETMESSAGE    Thread or system
WH_JOURNALPLAYBACK    System only
WH_JOURNALRECORD    System only
WH_KEYBOARD    Thread or system
WH_MOUSE    Thread or system
WH_MSGFILTER    Thread or system
WH_SHELL    Thread or system
WH_SYSMSGFILTER    System only


For a specified hook type, thread hooks are called first, then system hooks.
The system hooks are a shared resource, and installing one affects all applications. All system hook functions must be in libraries. System hooks should be restricted to special-purpose applications or to use as a development aid during application debugging. Libraries that no longer need a hook should remove the hook procedure.
انتخاب نوع هوک برای نصب که در اینجا ما هوک کیبورد رو انتخاب کردیم البته انتخابهای دیگهای هم وجود داره که میتونین به msdn مراجعه کنین
کد:
The KeyboardProc hook procedure is an application-defined or library-defined callback function the system calls whenever an application calls the GetMessage or PeekMessage function and there is a keyboard message (WM_KEYUP or WM_KEYDOWN) to be processed.

LRESULT CALLBACK KeyboardProc(

    int code,    // hook code
    WPARAM wParam,    // virtual-key code
    LPARAM lParam     // keystroke-message information
   );    


Parameters

code

Specifies a code the hook procedure uses to determine how to process the message. This parameter can be one of the following values:

Value    Meaning
HC_ACTION    The wParam and lParam parameters contain information about a keystroke message.
HC_NOREMOVE    The wParam and lParam parameters contain information about a keystroke message, and the keystroke message has not been removed from the message queue. (An application called the PeekMessage function, specifying the PM_NOREMOVE flag.)


If code is less than zero, the hook procedure must pass the message to the CallNextHookEx function without further processing and should return the value returned by CallNextHookEx.

wParam

Specifies the virtual-key code of the key that generated the keystroke message.

lParam

Specifies the repeat count, scan code, extended-key flag, context code, previous key-state flag, and transition-state flag. This parameter can be a combination of the following values:

Value    Description
0-15    Specifies the repeat count. The value is the number of times the keystroke is repeated as a result of the user's holding down the key.
16-23    Specifies the scan code. The value depends on the original equipment manufacturer (OEM).
24    Specifies whether the key is an extended key, such as a function key or a key on the numeric keypad. The value is 1 if the key is an extended key; otherwise, it is 0.
25-28    Reserved.
29    Specifies the context code. The value is 1 if the ALT key is down; otherwise, it is 0.
30    Specifies the previous key state. The value is 1 if the key is down before the message is sent; it is 0 if the key is up.
31    Specifies the transition state. The value is 0 if the key is being pressed and 1 if it is being released.


For more information about the lParam parameter, see Keystroke Message Flags.

Return Values

To prevent Windows from passing the message to the rest of the hook chain or to the target window procedure, the return value must be a nonzero value. To allow Windows to pass the message to the target window procedure, bypassing the remaining procedures in the chain, the return value must be zero.

Remarks

An application installs the hook procedure by specifying the WH_KEYBOARD hook type and the address of the hook procedure in a call to the SetWindowsHookEx function.
KeyboardProc is a placeholder for the application-defined or library-defined function name.
برای برداشتن هوک نصب شده روی سیستم
کد:
The UnhookWindowsHookEx function removes a hook procedure installed in a hook chain by the SetWindowsHookEx function.

BOOL UnhookWindowsHookEx(

    HHOOK hhk     // handle of hook procedure to remove
   );    


Parameters

hhk

Identifies the hook to be removed. This parameter is a hook handle obtained by a previous call to SetWindowsHookEx.



Return Values

If the function succeeds, the return value is nonzero.
If the function fails, the return value is zero.

Remarks

The hook procedure can be in the state of being called by another thread even after UnhookWindowsHookEx returns. If the hook procedure is not being called concurrently, the hook procedure is removed immediately before UnhookWindowsHookEx returns.
ارجاع اصلاعات هوک
کد:
The CallNextHookEx function passes the hook information to the next hook procedure in the current hook chain. This function supersedes the DefHookProc function.

LRESULT CallNextHookEx(

    HHOOK hhk,    // handle to current hook
    int nCode,    // hook code passed to hook procedure
    WPARAM wParam,    // value passed to hook procedure
    LPARAM lParam     // value passed to hook procedure
   );    


Parameters

hhk

Identifies the current hook. An application receives this handle as a result of a previous call to the SetWindowsHookEx function.

nCode

Specifies the hook code passed to the current hook procedure. The next hook procedure uses this code to determine how to process the hook information.

wParam

Specifies the wParam value passed to the current hook procedure. The meaning of this parameter depends on the type of hook associated with the current hook chain.

lParam

Specifies the lParam value passed to the current hook procedure. The meaning of this parameter depends on the type of hook associated with the current hook chain.



Return Values

If the function succeeds, the return value is the value returned by the next hook procedure in the chain. The current hook procedure must also return this value. The meaning of the return value depends on the hook type. For more information, see the descriptions of the individual hook procedures.

Remarks

Hook procedures are installed in chains for particular hook types. CallNextHookEx calls the next hook in the chain.
Calling CallNextHookEx is optional. A hook procedure can call this function either before or after processing the hook information. If a hook procedure does not call CallNextHookEx, Windows does not call the hook procedures installed before the current hook procedure was installed.
اینم یه hook که برای دکمه escape هست که میتونین اونو برای تمام دکمه ها بکار ببرین و در قسمت که نوشته code// هر کاری که میخواهین در زمان اجرای اون کلید اجرا بشه منویسین
کد:
var
  Form1: TForm1;
  AppHook: HHook;


implementation


{$R *.dfm}


function KeyboardProc(code,wParam,lParam: Integer): Longint; stdcall;
begin
  if Code = HC_ACTION then
  begin
    if wParam = VK_ESCAPE then
    //code
  end;
  Result := CallNextHookEx(AppHook,Code,wParam,lParam);
end;


procedure TForm1.FormCreate(Sender: TObject);
begin
  AppHook := SetWindowsHookEx(WH_KEYBOARD,@KeyBoardProc,0,GetCurrentThreadId);
end;


procedure TForm1.FormDestroy(Sender: TObject);
begin
  UnhookWindowsHookEx(AppHook);
end;
goodluck
(آخرین ویرایش در این ارسال: ۱۰-اردیبهشت-۱۳۸۷, ۱۷:۲۷:۰۹، توسط lord_viper.)
۱۰-اردیبهشت-۱۳۸۷, ۱۷:۱۷:۴۷
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : aminbrleevb
aminbrleevb آفلاین
كاربر دو ستاره
**

ارسال‌ها: 73
موضوع‌ها: 14
تاریخ عضویت: فروردین ۱۳۸۷

تشکرها : 27
( 9 تشکر در 7 ارسال )
ارسال: #9
RE: کمک در مورد HOT kay
بزارین بیشتر توضیح بدم
من دارم یه کی لاگر درست میکنم با خاصیت hot key
یعنی من برای همه کلید ها یه hot key تعریف کردم
ولی وقتی برنامه رو باز می کنم کلید ها برای بقیه برنامه ها غیر فعال میشه
علت این کار هم اعتماد من به hotkey نسبت به سایر کیلاگر ها که با توابع دیگرو هوک تایمر ها کار می کنند هست
راستی آیا در وی بی تابعی وجود داره که بدون اینکه برنامه در حلقه ای باشه اگه یه کلید زده شد اونوقت برنامه فعال بشه
۱۳-اردیبهشت-۱۳۸۷, ۰۲:۴۳:۰۹
ارسال‌ها
پاسخ


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  چند تا سوال در مورد گرفتن كليد مورد نظر خارج ازمحيط فرم و... St4r-S4t 13 9,188 ۱۵-آذر-۱۳۸۴, ۱۴:۴۳:۲۰
آخرین ارسال: St4r-S4t

پرش به انجمن:


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

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