aww, CatShoe, you've finally cracked it for me. it wasn't anything about the "thedll.dll" part, that was just another typo, that was the part where the code was looking for the dll, LoadLibrary, rather than GetProcAddress. no, what you've just made me realise was the whole cout part. I was forgetting the whole problem of shared memory and while cout was printing for low level stuff, like WH_MOUSE_LL, it would only print to the proper console when my window was on focus. when I changed the dll to log to a file, it was firing the event globally.

thank you, thank you, thank you, this has been a headwrecker to me!