/////////////////////////////////////////////////////////////////////////////
-// Name: msw/utils.cpp
+// Name: src/msw/utils.cpp
// Purpose: Various utilities
// Author: Julian Smart
// Modified by:
#include "wx/log.h"
#endif //WX_PRECOMP
+#include "wx/msw/registry.h"
#include "wx/apptrait.h"
#include "wx/dynlib.h"
#include "wx/dynload.h"
// ----------------------------------------------------------------------------
// In the WIN.INI file
+#if (!defined(USE_NET_API) && !defined(__WXWINCE__)) || defined(__WXMICROWIN__)
static const wxChar WX_SECTION[] = wxT("wxWindows");
+#endif
+
+#if (!defined(USE_NET_API) && !defined(__WXWINCE__))
static const wxChar eUSERNAME[] = wxT("UserName");
+#endif
// ============================================================================
// implementation
// Can't assume we have NIS (PC-NFS) or some other ID daemon
// So we ...
- if ( (user = wxGetenv(wxT("USER"))) == NULL &&
- (user = wxGetenv(wxT("LOGNAME"))) == NULL )
+ if ( (user = wxGetenv(wxT("USER"))) == NULL &&
+ (user = wxGetenv(wxT("LOGNAME"))) == NULL )
{
// Use wxWidgets configuration data (comming soon)
GetProfileString(WX_SECTION, eUSERID, default_id, buf, maxSize - 1);
}
// Get user name e.g. Julian Smart
-bool wxGetUserName(wxChar *WXUNUSED_IN_WINCE(buf),
- int WXUNUSED_IN_WINCE(maxSize))
+bool wxGetUserName(wxChar *buf, int maxSize)
{
+ wxCHECK_MSG( buf && ( maxSize > 0 ), false,
+ _T("empty buffer in wxGetUserName") );
#if defined(__WXWINCE__)
- // TODO-CE
- return false;
+ wxLogNull noLog;
+ wxRegKey key(wxRegKey::HKCU, wxT("ControlPanel\\Owner"));
+ if(!key.Open(wxRegKey::Read))
+ return false;
+ wxString name;
+ if(!key.QueryValue(wxT("Owner"),name))
+ return false;
+ wxStrncpy(buf, name.c_str(), maxSize-1);
+ buf[maxSize-1] = _T('\0');
+ return true;
#elif defined(USE_NET_API)
CHAR szUserName[256];
if ( !wxGetUserId(szUserName, WXSIZEOF(szUserName)) )
return 0;
}
-HANDLE (WINAPI *lpfCreateToolhelp32Snapshot)(DWORD,DWORD) ;
-BOOL (WINAPI *lpfProcess32First)(HANDLE,LPPROCESSENTRY32) ;
-BOOL (WINAPI *lpfProcess32Next)(HANDLE,LPPROCESSENTRY32) ;
+typedef HANDLE (WINAPI *CreateToolhelp32Snapshot_t)(DWORD,DWORD);
+typedef BOOL (WINAPI *Process32_t)(HANDLE,LPPROCESSENTRY32);
+
+CreateToolhelp32Snapshot_t lpfCreateToolhelp32Snapshot;
+Process32_t lpfProcess32First, lpfProcess32Next;
static void InitToolHelp32()
{
lpfProcess32First = NULL;
lpfProcess32Next = NULL;
- HINSTANCE hInstLib = LoadLibrary( wxT("Kernel32.DLL") ) ;
- if( hInstLib == NULL )
- return ;
+#if wxUSE_DYNLIB_CLASS
+
+ wxDynamicLibrary dllKernel(_T("kernel32.dll"), wxDL_VERBATIM);
// Get procedure addresses.
// We are linking to these functions of Kernel32
// this code would fail to load under Windows NT,
// which does not have the Toolhelp32
// functions in the Kernel 32.
- lpfCreateToolhelp32Snapshot=
- (HANDLE(WINAPI *)(DWORD,DWORD))
- GetProcAddress( hInstLib,
-#ifdef __WXWINCE__
- wxT("CreateToolhelp32Snapshot")
-#else
- "CreateToolhelp32Snapshot"
-#endif
- ) ;
+ lpfCreateToolhelp32Snapshot =
+ (CreateToolhelp32Snapshot_t)dllKernel.RawGetSymbol(_T("CreateToolhelp32Snapshot"));
- lpfProcess32First=
- (BOOL(WINAPI *)(HANDLE,LPPROCESSENTRY32))
- GetProcAddress( hInstLib,
-#ifdef __WXWINCE__
- wxT("Process32First")
-#else
- "Process32First"
-#endif
- ) ;
+ lpfProcess32First =
+ (Process32_t)dllKernel.RawGetSymbol(_T("Process32First"));
- lpfProcess32Next=
- (BOOL(WINAPI *)(HANDLE,LPPROCESSENTRY32))
- GetProcAddress( hInstLib,
-#ifdef __WXWINCE__
- wxT("Process32Next")
-#else
- "Process32Next"
-#endif
- ) ;
+ lpfProcess32Next =
+ (Process32_t)dllKernel.RawGetSymbol(_T("Process32Next"));
- FreeLibrary( hInstLib ) ;
+#endif // wxUSE_DYNLIB_CLASS
}
// By John Skiff
return hwnd;
}
-