X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/2e38557f30bcba97a6eaa45e8c6dc0c4357b7bff..46a5010a06b09318878c33a0a6a532f419ea063d:/src/msw/utils.cpp diff --git a/src/msw/utils.cpp b/src/msw/utils.cpp index 986e6602bf..b70c622689 100644 --- a/src/msw/utils.cpp +++ b/src/msw/utils.cpp @@ -5,8 +5,8 @@ // Modified by: // Created: 04/01/98 // RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license +// Copyright: (c) Julian Smart +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// // ============================================================================ @@ -180,6 +180,7 @@ bool wxGetFullHostName(wxChar *buf, int maxSize) // shouldn't use winsock.dll (a.k.a. ws2_32.dll) at all so only use this // code if we link with it anyhow #if wxUSE_SOCKETS + WSADATA wsa; if ( WSAStartup(MAKEWORD(1, 1), &wsa) == 0 ) { @@ -215,6 +216,7 @@ bool wxGetFullHostName(wxChar *buf, int maxSize) return TRUE; } } + #endif // wxUSE_SOCKETS #endif // Win32 @@ -652,8 +654,6 @@ bool wxSetEnv(const wxString& var, const wxChar *value) // process management // ---------------------------------------------------------------------------- -#ifdef __WIN32__ - // structure used to pass parameters from wxKill() to wxEnumFindByPidProc() struct wxFindByPidParams { @@ -689,11 +689,8 @@ BOOL CALLBACK wxEnumFindByPidProc(HWND hwnd, LPARAM lParam) return TRUE; } -#endif // __WIN32__ - int wxKill(long pid, wxSignal sig, wxKillError *krc) { -#ifdef __WIN32__ // get the process handle to operate on HANDLE hProcess = ::OpenProcess(SYNCHRONIZE | PROCESS_TERMINATE | @@ -830,25 +827,19 @@ int wxKill(long pid, wxSignal sig, wxKillError *krc) // the return code is the same as from Unix kill(): 0 if killed // successfully or -1 on error - if ( sig == wxSIGNONE ) - { - if ( ok && rc == STILL_ACTIVE ) - { - // there is such process => success - return 0; - } - } - else // not SIGNONE + // + // be careful to interpret rc correctly: for wxSIGNONE we return success if + // the process exists, for all the other sig values -- if it doesn't + if ( ok && + ((sig == wxSIGNONE) == (rc == STILL_ACTIVE)) ) { - if ( ok && rc != STILL_ACTIVE ) + if ( krc ) { - // killed => success - return 0; + *krc = wxKILL_OK; } + + return 0; } -#else // Win16 - wxFAIL_MSG( _T("not implemented") ); -#endif // Win32/Win16 // error return -1; @@ -876,7 +867,7 @@ bool wxShell(const wxString& command) return wxExecute(cmd, wxEXEC_SYNC) == 0; } -// Shutdown or reboot the PC +// Shutdown or reboot the PC bool wxShutdown(wxShutdownFlags wFlags) { #ifdef __WIN32__ @@ -884,27 +875,27 @@ bool wxShutdown(wxShutdownFlags wFlags) if ( wxGetOsVersion(NULL, NULL) == wxWINDOWS_NT ) // if is NT or 2K { - // Get a token for this process. - HANDLE hToken; + // Get a token for this process. + HANDLE hToken; bOK = ::OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken) != 0; if ( bOK ) { - TOKEN_PRIVILEGES tkp; + TOKEN_PRIVILEGES tkp; - // Get the LUID for the shutdown privilege. + // Get the LUID for the shutdown privilege. ::LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, - &tkp.Privileges[0].Luid); + &tkp.Privileges[0].Luid); - tkp.PrivilegeCount = 1; // one privilege to set - tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; + tkp.PrivilegeCount = 1; // one privilege to set + tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; - // Get the shutdown privilege for this process. + // Get the shutdown privilege for this process. ::AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, - (PTOKEN_PRIVILEGES)NULL, 0); + (PTOKEN_PRIVILEGES)NULL, 0); - // Cannot test the return value of AdjustTokenPrivileges. + // Cannot test the return value of AdjustTokenPrivileges. bOK = ::GetLastError() == ERROR_SUCCESS; } } @@ -927,7 +918,7 @@ bool wxShutdown(wxShutdownFlags wFlags) return FALSE; } - bOK = ::ExitWindowsEx(EWX_SHUTDOWN | EWX_FORCE | EWX_REBOOT, 0) != 0; + bOK = ::ExitWindowsEx(EWX_SHUTDOWN | EWX_FORCE | EWX_REBOOT, 0) != 0; } return bOK; @@ -1020,7 +1011,7 @@ wxString wxGetOsDescription() int wxGetOsVersion(int *majorVsn, int *minorVsn) { -#if defined(__WIN32__) && !defined(__SC__) +#if defined(__WIN32__) static int ver = -1, major = -1, minor = -1; if ( ver == -1 ) @@ -1108,6 +1099,8 @@ void wxUsleep(unsigned long milliseconds) #else // !Win32 if (gs_inTimer) return; + if (miliseconds <= 0) + return; wxTheSleepTimer = new wxSleepTimer; gs_inTimer = TRUE; @@ -1126,6 +1119,8 @@ void wxSleep(int nSecs) { if (gs_inTimer) return; + if (nSecs <= 0) + return; wxTheSleepTimer = new wxSleepTimer; gs_inTimer = TRUE; @@ -1321,7 +1316,11 @@ static HCURSOR gs_wxBusyCursor = 0; // new, busy cursor static HCURSOR gs_wxBusyCursorOld = 0; // old cursor static int gs_wxBusyCursorCount = 0; +#ifdef __DIGITALMARS__ +extern "C" HCURSOR wxGetCurrentBusyCursor() +#else extern HCURSOR wxGetCurrentBusyCursor() +#endif { return gs_wxBusyCursor; }