It might be useful to post the terminal output when running our app with wine (run it from console, if you don't do already). There should be some error messages from wine, especially if it doesn't run at all. Can you explain in simple words, why you need SetWindowsHookEx? I assume, you want the user to be able to control your application by pressing certain keys, even if the application doesn't have focus (could your app keep the focus?). One possible workaround for linux might be to extend your app with a socket, that accepts commands (in form of text messages like "play"). Additionally you'd need an xlib application running in the background, that captures keyboard events, like in [1] or [2]. After the user pressed a key for play, the xlib application would have to connect to the port of your app, sending the command "play", then your app could do the necessary stuff. This approach comes without warranty, I'm not sure, if it would work perfectly. And it would be some work, but probably the best you can do, if you need it running in a few weeks on linux (without Windows VMs). [1] http://stackoverflow.com/questions/4037230/global-hotkey-with-x11-xlib [2] http://kaizer.se/wiki/keybinder/