#define WINVER 0x0500 #include #include /* gcc -mno-cygwin -mwindows ... */ void ErrorExit(LPTSTR lpszFunction, DWORD dw) { LPVOID lpMsgBuf; LPVOID lpDisplayBuf; //DWORD dw = GetLastError(); FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL, dw, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR) &lpMsgBuf, 0, NULL ); lpDisplayBuf = LocalAlloc(LMEM_ZEROINIT, strlen(lpMsgBuf)+strlen(lpszFunction)+40); wsprintf(lpDisplayBuf, "%s failed with error %d: %s", lpszFunction, dw, lpMsgBuf); MessageBox(NULL, lpDisplayBuf, "Error", MB_OK); LocalFree(lpMsgBuf); LocalFree(lpDisplayBuf); ExitProcess(dw); } int WINAPI WinMain (HINSTANCE hInst, HINSTANCE hPrev, LPSTR lpCmd, int nShow) { //int main (void) { BOOL xmouse = FALSE; DWORD status; if( !(status=SystemParametersInfo( SPI_GETACTIVEWINDOWTRACKING, 0, &xmouse, 0 )) ) { ErrorExit("Get mouse status",status); } if( !(status=SystemParametersInfo( SPI_SETACTIVEWNDTRKZORDER, 0, (PVOID)FALSE, SPIF_UPDATEINIFILE || SPIF_SENDWININICHANGE )) ) { ErrorExit("Set mouse status",status); } if( !(status=SystemParametersInfo( SPI_SETACTIVEWNDTRKTIMEOUT, 0, (PVOID)100, SPIF_UPDATEINIFILE || SPIF_SENDWININICHANGE )) ) { ErrorExit("Set mouse status",status); } xmouse = !xmouse; if( !(status=SystemParametersInfo( SPI_SETACTIVEWINDOWTRACKING, 0, (PVOID)xmouse, SPIF_UPDATEINIFILE || SPIF_SENDWININICHANGE )) ) { ErrorExit("Set mouse status",status); } printf( "X mouse is now %s.\n", xmouse ? "on" : "off" ); return 0; }