[Release] CursorHook (Old Client Cursor Blink Lag)

02/27/2014 00:34 © Haydz#1
It has been a long time since I've released anything to the community whatsoever, so I figured I'd throw something out there that has plagued the community for quite some time.

What you will find here is a small DLL/Source I created to prevent the extremely frustrating cursor issues on older clients.

There is no need to replace your client cursors with the windows one or vice versa, this will give you your cursors back without the added fps problems.

It works by basically hooking the WndProc handler to override the GCL_HCURSOR value in a WNDCLASS structure and set the class cursor to the current cursor (achieved by hooking SetCursor).

Edit: Note that I haven't actually tested this extensively, just loaded up the start screen on the old 4351 client, but in theory it should work for any clients which have the issue.
02/27/2014 00:41 angel12345#2
I was having issues with this with my player base I'll try it out and if anything I'll link them to this post. Thanks for this is a really great release.
02/27/2014 01:27 Spirited#3
Ahhh, I see. Microsoft Detours. I love reading projects like these.
02/27/2014 15:40 Ultimation#4
This will probably cause a 1 day ban on modern clients
02/27/2014 16:22 © Haydz#5
Quote:
Originally Posted by Ultimation View Post
This will probably cause a 1 day ban on modern clients
Yeah, probably, although the issue doesn't actually occur on any client post 5300 ish.
02/27/2014 23:38 SteveRambo#6
Great release. I've always been a victim of the cursor lag on the old clients and I've never been bothered looking into what the cause of it is. Thanks for this, it's nice to see more and more useful stuff is starting to show up here on epvp again.
03/06/2014 21:20 Super Aids#7
Quote:
Originally Posted by SteveRambo View Post
Great release. I've always been a victim of the cursor lag on the old clients and I've never been bothered looking into what the cause of it is. Thanks for this, it's nice to see more and more useful stuff is starting to show up here on epvp again.
Just sad it's too late to save the community.
03/06/2014 21:25 SteveRambo#8
Quote:
Originally Posted by Super Aids View Post
Just sad it's too late to save the community.
Yeah probably :(
04/15/2014 20:44 Y u k i#9
Works perfectly fine on 4348!

Attached a Loader :) Put the StartConquer.exe and the MouseHook.dll into your conquer directory and run it.
05/20/2014 01:17 -impulse-#10
Doesn't work on 5018+. For some reason hooking the WndProc before being online crashes the client - it probably has something to do with the flash login screen.
05/20/2014 09:34 © Haydz#11
Quote:
Originally Posted by -impulse- View Post
Doesn't work on 5018+. For some reason hooking the WndProc before being online crashes the client - it probably has something to do with the flash login screen.
Possibly, I have since tested it on a 5035 client and it worked, so perhaps there is something different about 5018.

I will download it and have a look then get back to you.

Edit:
I have just tested from 5017 through till 5035 and it appears to work fine here.

If you get a chance can you try, commenting out the detoured SetCursor hook completely, and only hooking the WndProc. I recently learnt that you can simply pass NULL to WM_SETCURSOR to prevent windows changing the cursor and allow SetCursor to proceed as normal.
05/20/2014 11:10 -impulse-#12
Well, I assumed the issue was with 5018+ because it had the flash, but my actual issue is with 5065.

And I tried to figure out why and as far as I can tell no matter what is in the WndProc hook it still crashes. Just by hooking that function the client crashes, which is weird.

----------
Edit:

Turns out the crash came from the injection process for some reason creating a hook from a remotely created thread crashed the client.
The fix works as it's supposed to.

Thank you Haydz.
05/20/2014 15:47 KraHen#13
Quote:
Originally Posted by -impulse- View Post
Well, I assumed the issue was with 5018+ because it had the flash, but my actual issue is with 5065.

And I tried to figure out why and as far as I can tell no matter what is in the WndProc hook it still crashes. Just by hooking that function the client crashes, which is weird.

----------
Edit:

Turns out the crash came from the injection process for some reason creating a hook from a remotely created thread crashed the client.
The fix works as it's supposed to be.

Thank you Haydz.
Thanks for the heads up, I wanted to do the same thing. :)
05/26/2014 18:35 darkopp#14
how to use cursor hook ?
05/26/2014 19:22 Y u k i#15
Quote:
Originally Posted by darkopp View Post
how to use cursor hook ?
I attached a loader on the previous page, check it out :)