[USER] 'Fix' SetWindowsHookEx

Alexandre Julliard julliard at winehq.org
Mon Jun 14 18:30:28 CDT 2004

Lionel Ulmer <lionel.ulmer at free.fr> writes:

> Anyway, what I know is that the application explicitely puts the NULL
> parameter, so it's not a bug upstream. So either it's something that worked
> on Windows95 and not anymore (as the application is quite old) or a problem
> in Wine.
> I will try to run this application on my Win2K box to see if it works (or
> write a test to see if the call fails or not). I will alas not be able to
> test much more as I do not know th difference between a system-wide hook and
> another sort of hook :-)

A system-wide hook is called for all threads, as opposed to a
thread-local hook that only runs in the specified thread. A
system-wide hook needs a module handle because it may run in any
process context, so we need a way to load the proper dll in the
address space of the target process.

It may be that when the module handle is NULL Win95 falls back to a
thread-local hook, or does some other strange magic; NT refuses to set
a system-wide hook with a NULL module, so I'd expect your app to fail
on NT (except if it does a version check, in which case it should run
on Wine too if you set the Windows version to NT).

Alexandre Julliard
julliard at winehq.org

More information about the wine-devel mailing list