bool wxSocketMSWManager::OnInit() { LPCTSTR pclassname = NULL; int i; /* Create internal window for event notifications */ hWin = wxCreateHiddenWindow(&pclassname, CLASSNAME, wxSocket_Internal_WinProc); if (!hWin) return false; /* Initialize socket list */ for (i = 0; i < MAXSOCKETS; i++) { socketList[i] = NULL; } firstAvailable = 0; // we don't link with wsock32.dll statically to avoid // dependencies on it for all the application using wx even if they don't use // sockets #define WINSOCK_DLL_NAME wxT("wsock32.dll") gs_wsock32dll.Load(WINSOCK_DLL_NAME, wxDL_VERBATIM | wxDL_QUIET); if ( !gs_wsock32dll.IsLoaded() ) return false; wxDL_INIT_FUNC(gs_, WSAAsyncSelect, gs_wsock32dll); if ( !gs_WSAAsyncSelect ) return false; // finally initialize WinSock WSADATA wsaData; return WSAStartup((1 << 8) | 1, &wsaData) == 0; }
// Helper wrapping AssocQueryString() Win32 function: returns the value of the // given associated string for the specified extension (which may or not have // the leading period). // // Returns empty string if the association is not found. static wxString wxAssocQueryString(ASSOCSTR assoc, wxString ext, const wxString& verb = wxString()) { typedef HRESULT (WINAPI *AssocQueryString_t)(ASSOCF, ASSOCSTR, LPCTSTR, LPCTSTR, LPTSTR, DWORD *); static AssocQueryString_t s_pfnAssocQueryString = (AssocQueryString_t)-1; static wxDynamicLibrary s_dllShlwapi; if ( s_pfnAssocQueryString == (AssocQueryString_t)-1 ) { if ( !s_dllShlwapi.Load(wxT("shlwapi.dll"), wxDL_VERBATIM | wxDL_QUIET) ) s_pfnAssocQueryString = NULL; else wxDL_INIT_FUNC_AW(s_pfn, AssocQueryString, s_dllShlwapi); } if ( !s_pfnAssocQueryString ) return wxString(); DWORD dwSize = MAX_PATH; TCHAR bufOut[MAX_PATH] = { 0 }; if ( ext.empty() || ext[0] != '.' ) ext.Prepend('.'); HRESULT hr = s_pfnAssocQueryString ( wxASSOCF_NOTRUNCATE,// Fail if buffer is too small. assoc, // The association to retrieve. ext.t_str(), // The extension to retrieve it for. verb.empty() ? NULL : static_cast<const TCHAR*>(verb.t_str()), bufOut, // The buffer for output value. &dwSize // And its size ); // Do not use SUCCEEDED() here as S_FALSE could, in principle, be returned // but would still be an error in this context. if ( hr != S_OK ) { // The only really expected error here is that no association is // defined, anything else is not expected. The confusing thing is that // different errors are returned for this expected error under // different Windows versions: XP returns ERROR_FILE_NOT_FOUND while 7 // returns ERROR_NO_ASSOCIATION. Just check for both to be sure. if ( hr != HRESULT_FROM_WIN32(ERROR_NO_ASSOCIATION) && hr != HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND) ) { wxLogApiError("AssocQueryString", hr); } return wxString(); } return wxString(bufOut); }
bool wxTextEntry::AutoCompleteFileNames() { #ifdef HAS_AUTOCOMPLETE typedef HRESULT (WINAPI *SHAutoComplete_t)(HWND, DWORD); static SHAutoComplete_t s_pfnSHAutoComplete = (SHAutoComplete_t)-1; static wxDynamicLibrary s_dllShlwapi; if ( s_pfnSHAutoComplete == (SHAutoComplete_t)-1 ) { if ( !s_dllShlwapi.Load(wxT("shlwapi.dll"), wxDL_VERBATIM | wxDL_QUIET) ) { s_pfnSHAutoComplete = NULL; } else { wxDL_INIT_FUNC(s_pfn, SHAutoComplete, s_dllShlwapi); } } if ( !s_pfnSHAutoComplete ) return false; HRESULT hr = (*s_pfnSHAutoComplete)(GetEditHwnd(), SHACF_FILESYS_ONLY); if ( FAILED(hr) ) { wxLogApiError(wxT("SHAutoComplete()"), hr); return false; } return true; #else // !HAS_AUTOCOMPLETE return false; #endif // HAS_AUTOCOMPLETE/!HAS_AUTOCOMPLETE }
bool wxSocketMSWManager::OnInit() { static LPCTSTR pclassname = NULL; int i; /* Create internal window for event notifications */ hWin = wxCreateHiddenWindow(&pclassname, CLASSNAME, wxSocket_Internal_WinProc); if (!hWin) return false; /* Initialize socket list */ for (i = 0; i < MAXSOCKETS; i++) { socketList[i] = NULL; } firstAvailable = 0; // we don't link with wsock32.dll (or ws2 in CE case) statically to avoid // dependencies on it for all the application using wx even if they don't use // sockets #ifdef __WXWINCE__ #define WINSOCK_DLL_NAME wxT("ws2.dll") #else #define WINSOCK_DLL_NAME wxT("wsock32.dll") #endif gs_wsock32dll.Load(WINSOCK_DLL_NAME, wxDL_VERBATIM | wxDL_QUIET); if ( !gs_wsock32dll.IsLoaded() ) return false; #ifndef __WXWINCE__ wxDL_INIT_FUNC(gs_, WSAAsyncSelect, gs_wsock32dll); if ( !gs_WSAAsyncSelect ) return false; #else wxDL_INIT_FUNC(gs_, WSAEventSelect, gs_wsock32dll); if ( !gs_WSAEventSelect ) return false; wxDL_INIT_FUNC(gs_, WSACreateEvent, gs_wsock32dll); if ( !gs_WSACreateEvent ) return false; wxDL_INIT_FUNC(gs_, WSAWaitForMultipleEvents, gs_wsock32dll); if ( !gs_WSAWaitForMultipleEvents ) return false; wxDL_INIT_FUNC(gs_, WSAEnumNetworkEvents, gs_wsock32dll); if ( !gs_WSAEnumNetworkEvents ) return false; currSocket = 0; #endif // !__WXWINCE__/__WXWINCE__ // finally initialize WinSock WSADATA wsaData; return WSAStartup((1 << 8) | 1, &wsaData) == 0; }
void wxSocketMSWManager::OnExit() { /* Destroy internal window */ DestroyWindow(hWin); UnregisterClass(CLASSNAME, wxGetInstance()); WSACleanup(); gs_wsock32dll.Unload(); }
HTMLHELP GetHtmlHelpFunction() { static HTMLHELP s_htmlHelp = NULL; if ( !s_htmlHelp ) { static wxDynamicLibrary s_dllHtmlHelp(wxT("HHCTRL.OCX"), wxDL_VERBATIM); if ( !s_dllHtmlHelp.IsLoaded() ) { wxLogError(_("MS HTML Help functions are unavailable because the MS HTML Help library is not installed on this machine. Please install it.")); } else { s_htmlHelp = (HTMLHELP)s_dllHtmlHelp.GetSymbol(HTMLHELP_NAME); if ( !s_htmlHelp ) { wxLogError(_("Failed to initialize MS HTML Help.")); } } } return s_htmlHelp; }
void wxSocketMSWManager::OnExit() { #ifdef __WXWINCE__ /* Delete the threads here */ for(unsigned int i=0; i < currSocket; i++) CloseHandle(hThread[i]); #endif /* Destroy internal window */ DestroyWindow(hWin); UnregisterClass(CLASSNAME, wxGetInstance()); WSACleanup(); gs_wsock32dll.Unload(); }
//============================================================================= // Function: GetVolumes // Purpose: Generate and return a list of all volumes (drives) available. // Notes: //============================================================================= wxArrayString wxFSVolumeBase::GetVolumes(int flagsSet, int flagsUnset) { ::InterlockedExchange(&s_cancelSearch, FALSE); // reset #if wxUSE_DYNLIB_CLASS if (!s_mprLib.IsLoaded() && s_mprLib.Load(wxT("mpr.dll"))) { #ifdef UNICODE s_pWNetOpenEnum = (WNetOpenEnumPtr)s_mprLib.GetSymbol(wxT("WNetOpenEnumW")); s_pWNetEnumResource = (WNetEnumResourcePtr)s_mprLib.GetSymbol(wxT("WNetEnumResourceW")); #else s_pWNetOpenEnum = (WNetOpenEnumPtr)s_mprLib.GetSymbol(wxT("WNetOpenEnumA")); s_pWNetEnumResource = (WNetEnumResourcePtr)s_mprLib.GetSymbol(wxT("WNetEnumResourceA")); #endif s_pWNetCloseEnum = (WNetCloseEnumPtr)s_mprLib.GetSymbol(wxT("WNetCloseEnum")); } #endif wxArrayString list; //------------------------------- // Local and mapped drives first. //------------------------------- // Allocate the required space for the API call. const DWORD chars = GetLogicalDriveStrings(0, NULL); TCHAR* buf = new TCHAR[chars+1]; // Get the list of drives. GetLogicalDriveStrings(chars, buf); // Parse the list into an array, applying appropriate filters. TCHAR *pVol; pVol = buf; while (*pVol) { FilteredAdd(list, pVol, flagsSet, flagsUnset); pVol = pVol + wxStrlen(pVol) + 1; } // Cleanup. delete[] buf; //--------------------------- // Network Neighborhood next. //--------------------------- // not exclude remote and not removable if (!(flagsUnset & wxFS_VOL_REMOTE) && !(flagsSet & wxFS_VOL_REMOVABLE) ) { // The returned list will be sorted alphabetically. We don't pass // our in since we don't want to change to order of the local drives. wxArrayString nn; if (BuildRemoteList(nn, 0, flagsSet, flagsUnset)) { for (size_t idx = 0; idx < nn.GetCount(); idx++) list.Add(nn[idx]); } } return list; } // GetVolumes
// create the object wrapping the given renderer created from this DLL // // we take ownership of the pointer and will delete it (and also unload the // DLL) when we're deleted wxRendererFromDynLib(wxDynamicLibrary& dll, wxRendererNative *renderer) : wxDelegateRendererNative(*renderer), m_renderer(renderer), m_dllHandle(dll.Detach()) { }
bool InitSSL(void) /* FIXME: MT */ { static bool s_errMsgGiven = false; if(gs_SSL_loaded) return gs_SSL_available; String ssl_dll = READ_APPCONFIG(MP_SSL_DLL_SSL); String crypto_dll = READ_APPCONFIG(MP_SSL_DLL_CRYPTO); // it doesn't take long so nobody sees this message anyhow #if 0 STATUSMESSAGE((_("Trying to load SSL libraries '%s' and '%s'..."), crypto_dll.c_str(), ssl_dll.c_str())); #endif // 0 if ( !gs_dllCrypto.Load(crypto_dll) ) goto error; if ( !gs_dllSll.Load(ssl_dll) ) goto error; SSL_LOOKUP(SSL_new); SSL_LOOKUP(SSL_free); SSL_LOOKUP(SSL_set_rfd); SSL_LOOKUP(SSL_set_wfd); SSL_LOOKUP(SSL_set_read_ahead); SSL_LOOKUP(SSL_connect); SSL_LOOKUP(SSL_read); SSL_LOOKUP(SSL_write); SSL_LOOKUP(SSL_pending); SSL_LOOKUP(SSL_library_init); SSL_LOOKUP(SSL_load_error_strings); SSL_LOOKUP(SSL_CTX_new); SSL_LOOKUP(SSL_CTX_use_certificate); SSL_LOOKUP(SSL_CTX_use_PrivateKey); SSL_LOOKUP(SSL_CIPHER_get_name); SSL_LOOKUP(SSL_CIPHER_get_bits); SSL_LOOKUP(SSL_get_current_cipher); SSL_LOOKUP(SSL_get_fd); SSL_LOOKUP(SSL_set_fd); SSL_LOOKUP(SSL_get_error); SSL_LOOKUP(SSL_get_peer_certificate); SSL_LOOKUP(sk_num); SSL_LOOKUP(sk_value); SSL_LOOKUP(RAND_seed); SSL_LOOKUP(BIO_new_socket); SSL_LOOKUP(BIO_new_mem_buf); SSL_LOOKUP(BIO_free); SSL_LOOKUP(SSL_CTX_ctrl); SSL_LOOKUP(SSL_CTX_set_verify); SSL_LOOKUP(SSL_CTX_load_verify_locations); SSL_LOOKUP(SSL_CTX_set_default_verify_paths); SSL_LOOKUP(SSL_set_bio); SSL_LOOKUP(SSL_set_connect_state); SSL_LOOKUP(SSL_state); SSL_LOOKUP(SSL_ctrl); SSL_LOOKUP(ERR_load_crypto_strings); SSL_LOOKUP(TLSv1_server_method); SSL_LOOKUP(SSLv23_server_method); SSL_LOOKUP(SSL_CTX_set_cipher_list); SSL_LOOKUP(SSL_CTX_use_certificate_chain_file); SSL_LOOKUP(SSL_CTX_use_RSAPrivateKey_file); SSL_LOOKUP(SSL_CTX_set_tmp_rsa_callback); SSL_LOOKUP(SSL_accept); SSL_LOOKUP(X509_STORE_CTX_get_error); SSL_LOOKUP(X509_verify_cert_error_string); SSL_LOOKUP(X509_STORE_CTX_get_current_cert); SSL_LOOKUP(X509_get_subject_name); SSL_LOOKUP(X509_NAME_oneline); SSL_LOOKUP(X509_get_ext_d2i); SSL_LOOKUP(X509_free); SSL_LOOKUP(SSL_shutdown); SSL_LOOKUP(SSL_CTX_free); SSL_LOOKUP(RSA_generate_key); SSL_LOOKUP(TLSv1_client_method); SSL_LOOKUP(SSLv23_client_method); SSL_LOOKUP(EVP_PKEY_free); SSL_LOOKUP(PEM_read_bio_X509); SSL_LOOKUP(PEM_read_bio_PrivateKey); CRYPTO_LOOKUP(ERR_get_error); CRYPTO_LOOKUP(ERR_error_string); gs_SSL_available = gs_SSL_loaded = true; STATUSMESSAGE((_("Successfully loaded '%s' and '%s' - " "SSL authentication is now available."), crypto_dll.c_str(), ssl_dll.c_str())); ssl_onceonlyinit(); return true; error: if ( !s_errMsgGiven ) { ERRORMESSAGE((_("SSL authentication is not available."))); s_errMsgGiven = true; // show the log dialog first wxLog::FlushActive(); MDialog_Message ( _("You can change the locations of the SSL and crypto " "libraries in the Helpers page of the preferences dialog\n" "if you have these libraries in non default location" " or if they have some other names on your system."), NULL, "SSL tip", "SSLLibTip" ); } return false; }