আপনার প্রশ্নটি আমার আগ্রহ প্রকাশ করেছে, তাই আমি কিছুটা খনন করেছি এবং দুর্ভাগ্যক্রমে আমার কাছে আপনার কাছে সঠিক উত্তর নেই, আমি ভেবেছিলাম আমার যা আছে তা ভাগ করে দেই।
আমি 1998 সালে লিখিত কীবোর্ড হুক (ডেলফিতে) তৈরি করার এই উদাহরণটি পেয়েছি , তবে বেশ কয়েকটি টুইটের মাধ্যমে ডেলফি 2007-এ সংকলনযোগ্য।
এটি একটি কলের সাথে একটি কল রয়েছে SetWindowsHookEx
যা কলব্যাক ফাংশনটির মধ্য দিয়ে যায়, যা মূল স্ট্রোকগুলিকে আটকাতে পারে: এই ক্ষেত্রে, এটি মজা করার জন্য তাদের সাথে ঝাঁকুনি দিচ্ছে, বাম কার্সারটি ডানে বামে পরিবর্তন করা ইত্যাদি etc. এটির ফলাফল কোনও টিটাইমার ইভেন্টের ভিত্তিতে। আপনি যদি আগ্রহী হন তবে আমি ডেলফি 2007 ভিত্তিক কোডটি পোস্ট করতে পারি।
এটি ভাল নথিভুক্ত এবং মন্তব্য করা হয়েছে এবং আপনি সম্ভবত কোনও কী প্রেস চলছে সেখানে কাজ করার ভিত্তি হিসাবে এটি ব্যবহার করতে পারেন। কী স্ট্রোক প্রেরণকারী অ্যাপ্লিকেশনটির হ্যান্ডেলটি যদি আপনি পেয়ে থাকেন তবে আপনি সেভাবে এটি ট্র্যাক করতে পারেন। এই হ্যান্ডেলটি দিয়ে আপনি আপনার প্রয়োজনীয় তথ্য খুব সহজেই পেতে সক্ষম হবেন।
অন্যান্য অ্যাপ্লিকেশনগুলি তাদের শর্টকাটগুলি ধরে হটকিগুলি নির্ধারণের চেষ্টা করেছে যেহেতু সেগুলিতে একটি শর্টকাট কী থাকতে পারে যা হটকারির জন্য অন্য একটি শব্দ। তবে বেশিরভাগ অ্যাপ্লিকেশনগুলিতে এই সম্পত্তি সেট করার ঝোঁক থাকে না যাতে এটি বেশি পরিমাণে ফিরে না আসে। আপনি যদি সেই রুটে আগ্রহী হন, ডেলফির IShellLink
সিওএম ইন্টারফেসে অ্যাক্সেস রয়েছে যা আপনি শর্টকাটটি লোড করতে এবং এর হটকি পেতে ব্যবহার করতে পারেন:
uses ShlObj, ComObj, ShellAPI, ActiveX, CommCtrl;
procedure GetShellLinkHotKey;
var
LinkFile : WideString;
SL: IShellLink;
PF: IPersistFile;
HotKey : Word;
HotKeyMod: Byte;
HotKeyText : string;
begin
LinkFile := 'C:\Temp\Temp.lnk';
OleCheck(CoCreateInstance(CLSID_ShellLink, nil, CLSCTX_INPROC_SERVER, IShellLink, SL));
// The IShellLink implementer must also support the IPersistFile
// interface. Get an interface pointer to it.
PF := SL as IPersistFile;
// Load file into IPersistFile object
OleCheck(PF.Load(PWideChar(LinkFile), STGM_READ));
// Resolve the link by calling the Resolve interface function.
OleCheck(SL.Resolve(0, SLR_ANY_MATCH or SLR_NO_UI));
// Get hotkey info
OleCheck(SL.GetHotKey(HotKey));
// Extract the HotKey and Modifier properties.
HotKeyText := '';
HotKeyMod := Hi(HotKey);
if (HotKeyMod and HOTKEYF_ALT) = HOTKEYF_ALT then
HotKeyText := 'ALT+';
if (HotKeyMod and HOTKEYF_CONTROL) = HOTKEYF_CONTROL then
HotKeyText := HotKeyText + 'CTRL+';
if (HotKeyMod and HOTKEYF_SHIFT) = HOTKEYF_SHIFT then
HotKeyText := HotKeyText + 'SHIFT+';
if (HotKeyMod and HOTKEYF_EXT) = HOTKEYF_EXT then
HotKeyText := HotKeyText + 'Extended+';
HotKeyText := HotKeyText + Char(Lo(HotKey));
if (HotKeyText = '') or (HotKeyText = #0) then
HotKeyText := 'None';
ShowMessage('Shortcut Key - ' + HotKeyText);
end;
আপনি যদি সাফারি বুকস অনলাইনে অ্যাক্সেস পেয়ে থাকেন তবে স্টিভ টিক্সেইরা এবং জাভিয়ের পাচেকোর বোরল্যান্ড ডেল্ফি 6 বিকাশকারীদের গাইডে শর্টকাট / শেল লিঙ্কগুলির সাথে কাজ করার বিষয়ে একটি ভাল বিভাগ রয়েছে । আমার উপরের উদাহরণটি সেখান থেকে এবং এই সাইটটির একটি কসাই সংস্করণ ।
আশা করি এইটি কাজ করবে!
WM_HOTKEY
আপনি বার্তা লগটিতে বার্তাটি না দেখলে আপনার স্পাই ++ এর 32-বিট সংস্করণটি চালানোর প্রয়োজন হতে পারে ।