示例#1
0
 private static IntPtr LowLevelKeyboardProc(int nCode, uint wParam, IntPtr lParam)
 {
     if (nCode >= 0)
     {
         HookClass.KBDLLHOOKSTRUCT structure = (HookClass.KBDLLHOOKSTRUCT)Marshal.PtrToStructure(lParam, typeof(HookClass.KBDLLHOOKSTRUCT));
         if (wParam == 257U)
         {
             frmControl openForm = (frmControl)Application.OpenForms["frmControl"];
             if (openForm != null)
             {
                 int count         = openForm.listVerses.Items.Count;
                 int selectedIndex = openForm.listVerses.SelectedIndices[0];
                 if (structure.vkCode == 34)
                 {
                     if (selectedIndex + 1 <= count - 1)
                     {
                         openForm.listVerses.Items[selectedIndex + 1].Selected = true;
                     }
                     return(HookClass.CallNextHookEx(HookClass.keyHook, 0, 0U, IntPtr.Zero));
                 }
                 if (structure.vkCode == 33)
                 {
                     if (selectedIndex - 1 >= 0)
                     {
                         openForm.listVerses.Items[selectedIndex - 1].Selected = true;
                     }
                     return(HookClass.CallNextHookEx(HookClass.keyHook, 0, 0U, IntPtr.Zero));
                 }
             }
         }
     }
     return(HookClass.CallNextHookEx(HookClass.keyHook, nCode, wParam, lParam));
 }
示例#2
0
文件: Hooker.cs 项目: lzz42/ZHello
        public void Main()
        {
            InLineHooker hooker = new InLineHooker();
            var          m1     = typeof(OrignClass).GetMethod("Add");
            var          m2     = typeof(HookClass).GetMethod("HookAdd");
            var          m3     = typeof(HookClass).GetMethod("Add");

            var max = typeof(OrignClass).GetMethod("Max");
            var min = typeof(HookClass).GetMethod("Min");

            //调用m1时将调用m2然后调用m3,m1函数体不会执行
            hooker.HookMethod(m1, m2, m3);

            var orig = new OrignClass();
            int t0   = orig.Add(11, 22);
            int t1   = orig.Add(11, 22);
            int t2   = orig.Add(33, 44);

            var hc = new HookClass();
            int tt = hc.Add(123, 123);

            int zz = orig.Max(10, 20, 30);
            int ww = hc.Min(10, 20, 30);

            //将函数max 替换为函数min
            hooker.ReplaceMethod(max, min);

            zz = orig.Max(10, 20, 30);
            ww = hc.Min(10, 20, 30);
        }
示例#3
0
 private void frmMain_Load(object sender, EventArgs e)
 {
     this._Refresh();
     foreach (FileSystemInfo file in new DirectoryInfo(this.sgPath).GetFiles("*.*", SearchOption.TopDirectoryOnly))
     {
         this.boxFind.AutoCompleteCustomSource.Add(file.Name);
     }
     this.saveImg.Visible     = false;
     this.boxFind.GotFocus   += new EventHandler(this.boxFind_GotFocus);
     this.listSongs.GotFocus += new EventHandler(this.boxFind_GotFocus);
     HookClass.StartHook();
 }
示例#4
0
 public static void StartHook()
 {
     HookClass.keyProc = new HookClass.HookProc(HookClass.LowLevelKeyboardProc);
     HookClass.keyHook = HookClass.SetWindowsHookEx(13, HookClass.keyProc, HookClass.GetModuleHandle((string)null), 0U);
 }