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 | 139 | AddDllDirectory = (HANDLE (*)(PCWSTR)) GetProcAddress(kernel,"AddDllDirectory"); |
140 | 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 | 146 | memset(datadir,' ',4095); |
146 | 147 | datadir[4095] = 0; |
... | ... | @@ -165,8 +166,12 @@ |
165 | 166 | |
166 | 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 | 173 | hModule = LoadLibraryEx(buffer,NULL,LOAD_LIBRARY_SEARCH_DEFAULT_DIRS|LOAD_LIBRARY_SEARCH_DLL_LOAD_DIR); |
174 | + } | |
170 | 175 | |
171 | 176 | rc = GetLastError(); |
172 | 177 | ... | ... |
src/pw3270/plugin.c
... | ... | @@ -45,6 +45,10 @@ |
45 | 45 | const gchar * name; |
46 | 46 | GError * err = NULL; |
47 | 47 | GList * lst = NULL; |
48 | +#ifdef WIN32 | |
49 | + UINT errorMode; | |
50 | +#endif // WIN32 | |
51 | + | |
48 | 52 | |
49 | 53 | trace("Loading plugins from %s",path); |
50 | 54 | |
... | ... | @@ -59,6 +63,11 @@ |
59 | 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 | 71 | name = g_dir_read_name(dir); |
63 | 72 | while(name) |
64 | 73 | { |
... | ... | @@ -104,6 +113,10 @@ |
104 | 113 | name = g_dir_read_name(dir); |
105 | 114 | } |
106 | 115 | |
116 | +#ifdef WIN32 | |
117 | + SetErrorMode(errorMode); | |
118 | +#endif // WIN32 | |
119 | + | |
107 | 120 | g_dir_close(dir); |
108 | 121 | |
109 | 122 | if(lst) | ... | ... |