What about creating an other user32.dll in your exe directory with the same exported symbols that you need from the real user32.dll?
The exe would load your user32.dll since it is in the same folder, and your user32.dll would import the real one if needed
^ how do I try my user32.ll to import the real user32.dll?
On another note, I know loadlibrary and getprocaddress which calls the .dll and get the functions. Is there a way to all call the function in a dll without having to do getprocaddress for each function?
I'm pretty sure they work about the same. I usually do the second one. This assumes that you have Visual Studio set up correctly to work with the Windows SDK.