Commit 3f07f717996979b01c70487e581d1d690de1a269
1 parent
73456807
Exists in
master
and in
5 other branches
Melhorando a carga de DLLs e plugins no windows
Showing
2 changed files
with
21 additions
and
3 deletions
Show diff stats
src/plugins/remotectl/calls.c
| @@ -139,8 +139,9 @@ | @@ -139,8 +139,9 @@ | ||
| 139 | AddDllDirectory = (HANDLE (*)(PCWSTR)) GetProcAddress(kernel,"AddDllDirectory"); | 139 | AddDllDirectory = (HANDLE (*)(PCWSTR)) GetProcAddress(kernel,"AddDllDirectory"); |
| 140 | RemoveDllDirectory = (BOOL (*)(HANDLE)) GetProcAddress(kernel,"RemoveDllDirectory"); | 140 | RemoveDllDirectory = (BOOL (*)(HANDLE)) GetProcAddress(kernel,"RemoveDllDirectory"); |
| 141 | 141 | ||
| 142 | - // Notify user in case of error loading protocol DLL | ||
| 143 | - errorMode = SetErrorMode(0); | 142 | + // Notify user in case of error loading protocol DLL |
| 143 | + // http://msdn.microsoft.com/en-us/library/windows/desktop/ms680621(v=vs.85).aspx | ||
| 144 | + errorMode = SetErrorMode(1); | ||
| 144 | 145 | ||
| 145 | memset(datadir,' ',4095); | 146 | memset(datadir,' ',4095); |
| 146 | datadir[4095] = 0; | 147 | datadir[4095] = 0; |
| @@ -165,8 +166,12 @@ | @@ -165,8 +166,12 @@ | ||
| 165 | 166 | ||
| 166 | trace("%s hModule=%p rc=%d",buffer,hModule,(int) GetLastError()); | 167 | trace("%s hModule=%p rc=%d",buffer,hModule,(int) GetLastError()); |
| 167 | 168 | ||
| 168 | - if(hModule == NULL) | 169 | + if(hModule == NULL) |
| 170 | + { | ||
| 171 | + // Enable DLL error popup and try again with full path | ||
| 172 | + SetErrorMode(0) | ||
| 169 | hModule = LoadLibraryEx(buffer,NULL,LOAD_LIBRARY_SEARCH_DEFAULT_DIRS|LOAD_LIBRARY_SEARCH_DLL_LOAD_DIR); | 173 | hModule = LoadLibraryEx(buffer,NULL,LOAD_LIBRARY_SEARCH_DEFAULT_DIRS|LOAD_LIBRARY_SEARCH_DLL_LOAD_DIR); |
| 174 | + } | ||
| 170 | 175 | ||
| 171 | rc = GetLastError(); | 176 | rc = GetLastError(); |
| 172 | 177 |
src/pw3270/plugin.c
| @@ -45,6 +45,10 @@ | @@ -45,6 +45,10 @@ | ||
| 45 | const gchar * name; | 45 | const gchar * name; |
| 46 | GError * err = NULL; | 46 | GError * err = NULL; |
| 47 | GList * lst = NULL; | 47 | GList * lst = NULL; |
| 48 | +#ifdef WIN32 | ||
| 49 | + UINT errorMode; | ||
| 50 | +#endif // WIN32 | ||
| 51 | + | ||
| 48 | 52 | ||
| 49 | trace("Loading plugins from %s",path); | 53 | trace("Loading plugins from %s",path); |
| 50 | 54 | ||
| @@ -59,6 +63,11 @@ | @@ -59,6 +63,11 @@ | ||
| 59 | return; | 63 | return; |
| 60 | } | 64 | } |
| 61 | 65 | ||
| 66 | +#ifdef WIN32 | ||
| 67 | + // http://msdn.microsoft.com/en-us/library/windows/desktop/ms680621(v=vs.85).aspx | ||
| 68 | + errorMode = SetErrorMode(1); | ||
| 69 | +#endif // WIN32 | ||
| 70 | + | ||
| 62 | name = g_dir_read_name(dir); | 71 | name = g_dir_read_name(dir); |
| 63 | while(name) | 72 | while(name) |
| 64 | { | 73 | { |
| @@ -104,6 +113,10 @@ | @@ -104,6 +113,10 @@ | ||
| 104 | name = g_dir_read_name(dir); | 113 | name = g_dir_read_name(dir); |
| 105 | } | 114 | } |
| 106 | 115 | ||
| 116 | +#ifdef WIN32 | ||
| 117 | + SetErrorMode(errorMode); | ||
| 118 | +#endif // WIN32 | ||
| 119 | + | ||
| 107 | g_dir_close(dir); | 120 | g_dir_close(dir); |
| 108 | 121 | ||
| 109 | if(lst) | 122 | if(lst) |