| 
			
				|  | Cheat Engine The Official Site of Cheat Engine
 
 
 |  
 
	
		| View previous topic :: View next topic |  
		| Author | Message |  
		| samuri25404 Grandmaster Cheater
 
  Reputation: 7 
 Joined: 04 May 2007
 Posts: 955
 Location: Why do you care?
 
 | 
			
				|  Posted: Tue Feb 05, 2008 6:48 pm    Post subject: [C#] Mouse Hook! |   |  
				| 
 |  
				| Ok, I'm going to get straight to the point, because I have things that I need to do (*cough*homework*cough*) 
 Now, this is going to show you how to modify my keyboard hook that I posted before to support mouse clicks as well.
 
 First, we need to go ahead and declare the unmanaged structs:
 
 
  	  | Code: |  	  | [StructLayout(LayoutKind.Sequential)]
 private struct POINT
 {
 public int x;
 public int y;
 }
 
 [StructLayout(LayoutKind.Sequential)]
 private struct MSLLHOOKSTRUCT
 {
 public POINT pt;
 public uint mouseData;
 public uint flags;
 public uint time;
 public IntPtr dwExtraInfo;
 }
 
 | 
 
 Then, let's go ahead and declare our WM enum, with the Mouse messages:
 
 
  	  | Code: |  	  | public enum WM
 {
 WM_LBUTTONDOWN  = 0x0201,
 WM_LBUTTONUP    = 0x0202,
 WM_MOUSEMOVE    = 0x0200,
 WM_MOUSEWHEEL   = 0x020A,
 WM_RBUTTONDOWN  = 0x0204,
 WM_RBUTTONUP    = 0x0205
 }
 
 | 
 
 Next, we need to modify our KeyHandler (I'll be using the one without customizable hotkeys, just for simplicity's sake--do note that it is possible to create something like that, and it wouldn't be very hard, you just have to use your brain
  .): 
 
  	  | Code: |  	  | public static void KeyHandler(IntPtr wParam, IntPtr lParam)
 {
 int key = Marshal.ReadInt32(lParam);
 
 Hook.VK vk = (Hook.VK)key;
 
 if (vk == null) //it's a mouse option
 {
 DoMouse(wParam, lParam);
 return;
 }
 
 switch(vk)
 {
 case Hook.VK.F5: MessageBox.Show("You pressed F5!");
 break;
 
 case Hook.VK.F6: MessageBox.Show("You pressed F6!");
 break;
 
 //etc...
 
 default: break;
 }
 }
 
 | 
 
 And let's create our mouse handler
 
 
  	  | Code: |  	  | public static void DoMouse(IntPtr wParam, IntPtr lParam)
 {
 Hook.WM wm = (Hook.WM)wParam;
 
 if (wm == null) return;
 
 //get our structure
 
 Hook.MSLLHOOKSTRUCT mouse_params = (Hook.MSLLHOOKSTRUCT)Marshal.PtrToStructure(lParam, typeof(Hook.MSLLHOOKSTRUCT));
 
 LblX.Text = mouse_params.pt.X;
 LblY.Text = mouse_params.pt.Y;
 }
 
 | 
 
 ~~
 
 Hope I've helped someone.
 
 CREDITS
 
 This was highly influenced by this
 article--meaning that I DID NOT WRITE MOST OF THIS CODE, I SIMPLY BROUGHT IT HERE FOR OTHERS TO USE.
 _________________
 
 |  |  
		| Back to top |  |  
		|  |  
		| Flyte Peanuts!!!!
 
  Reputation: 6 
 Joined: 19 Apr 2006
 Posts: 1887
 Location: Canada
 
 | 
			
				|  Posted: Tue Feb 05, 2008 7:22 pm    Post subject: |   |  
				| 
 |  
				| I would like to point out that not everything you write should end up in this section. Something short and too the point such as this is better of in the normal programming section.   |  |  
		| Back to top |  |  
		|  |  
		| samuri25404 Grandmaster Cheater
 
  Reputation: 7 
 Joined: 04 May 2007
 Posts: 955
 Location: Why do you care?
 
 | 
			
				|  Posted: Tue Feb 05, 2008 8:19 pm    Post subject: |   |  
				| 
 |  
				| =P 
 It may be short and to the point, but it could quite possibly help someone. It follows the same ideas as the keyboard hook, but okey.
 
 I'll keep that in mind. =p
 _________________
 
 |  |  
		| Back to top |  |  
		|  |  
		|  |  
  
	| 
 
 | You cannot post new topics in this forum You cannot reply to topics in this forum
 You cannot edit your posts in this forum
 You cannot delete your posts in this forum
 You cannot vote in polls in this forum
 You cannot attach files in this forum
 You can download files in this forum
 
 |  |