Module: wine Branch: master Commit: 2c47b66b715e36dfc0ea4676b39fb803f3b15cd3 URL: http://source.winehq.org/git/wine.git/?a=commit;h=2c47b66b715e36dfc0ea4676b3...
Author: Jacek Caban jacek@codeweavers.com Date: Thu Oct 20 16:46:59 2011 +0200
ieframe: ieframe variant of IEWinMain is Unicode.
---
dlls/ieframe/iexplore.c | 23 ++++++++++++----------- dlls/shdocvw/shdocvw_main.c | 15 +++++++++++++-- programs/iexplore/Makefile.in | 2 +- programs/iexplore/main.c | 10 ++++++---- 4 files changed, 32 insertions(+), 18 deletions(-)
diff --git a/dlls/ieframe/iexplore.c b/dlls/ieframe/iexplore.c index d5fd56c..8dd6287 100644 --- a/dlls/ieframe/iexplore.c +++ b/dlls/ieframe/iexplore.c @@ -826,7 +826,7 @@ void released_obj(void) PostQuitMessage(0); }
-static BOOL create_ie_window(LPCSTR cmdline) +static BOOL create_ie_window(const WCHAR *cmdline) { InternetExplorer *ie; HRESULT hres; @@ -842,25 +842,24 @@ static BOOL create_ie_window(LPCSTR cmdline) IWebBrowser2_GoHome(&ie->IWebBrowser2_iface); }else { VARIANT var_url; - DWORD len; int cmdlen;
+ static const WCHAR nohomeW[] = {'-','n','o','h','o','m','e'}; + while(*cmdline == ' ' || *cmdline == '\t') cmdline++; - cmdlen = lstrlenA(cmdline); + cmdlen = strlenW(cmdline); if(cmdlen > 2 && cmdline[0] == '"' && cmdline[cmdlen-1] == '"') { cmdline++; cmdlen -= 2; }
- if(cmdlen == 7 && !memcmp(cmdline, "-nohome", 7)) { + if(cmdlen == sizeof(nohomeW)/sizeof(*nohomeW) && !memcmp(cmdline, nohomeW, sizeof(nohomeW))) { ie->nohome = TRUE; }else { V_VT(&var_url) = VT_BSTR;
- len = MultiByteToWideChar(CP_ACP, 0, cmdline, cmdlen, NULL, 0); - V_BSTR(&var_url) = SysAllocStringLen(NULL, len); - MultiByteToWideChar(CP_ACP, 0, cmdline, cmdlen, V_BSTR(&var_url), len); + V_BSTR(&var_url) = SysAllocStringLen(cmdline, cmdlen);
/* navigate to the first page */ IWebBrowser2_Navigate2(&ie->IWebBrowser2_iface, &var_url, NULL, NULL, NULL, NULL); @@ -1020,12 +1019,14 @@ static void release_dde(void) * * Only returns on error. */ -DWORD WINAPI IEWinMain(const char *szCommandLine, int nShowWindow) +DWORD WINAPI IEWinMain(const WCHAR *cmdline, int nShowWindow) { MSG msg; HRESULT hres;
- TRACE("%s %d\n", debugstr_a(szCommandLine), nShowWindow); + static const WCHAR embeddingW[] = {'-','e','m','b','e','d','d','i','n','g',0}; + + TRACE("%s %d\n", debugstr_w(cmdline), nShowWindow);
CoInitialize(NULL);
@@ -1037,8 +1038,8 @@ DWORD WINAPI IEWinMain(const char *szCommandLine, int nShowWindow)
init_dde();
- if(strcasecmp(szCommandLine, "-embedding")) { - if(!create_ie_window(szCommandLine)) { + if(strcmpiW(cmdline, embeddingW)) { + if(!create_ie_window(cmdline)) { CoUninitialize(); ExitProcess(1); } diff --git a/dlls/shdocvw/shdocvw_main.c b/dlls/shdocvw/shdocvw_main.c index 88fe5ed..db9034c 100644 --- a/dlls/shdocvw/shdocvw_main.c +++ b/dlls/shdocvw/shdocvw_main.c @@ -117,7 +117,9 @@ HRESULT WINAPI DllUnregisterServer(void) */ DWORD WINAPI IEWinMain(LPSTR szCommandLine, int nShowWindow) { - DWORD (WINAPI *pIEWinMain)(LPSTR,int); + DWORD (WINAPI *pIEWinMain)(const WCHAR*,int); + WCHAR *cmdline; + DWORD ret, len;
TRACE("%s %d\n", debugstr_a(szCommandLine), nShowWindow);
@@ -125,7 +127,16 @@ DWORD WINAPI IEWinMain(LPSTR szCommandLine, int nShowWindow) if(!pIEWinMain) ExitProcess(1);
- return pIEWinMain(szCommandLine, nShowWindow); + len = MultiByteToWideChar(CP_ACP, 0, szCommandLine, -1, NULL, 0); + cmdline = heap_alloc(len*sizeof(WCHAR)); + if(!cmdline) + ExitProcess(1); + MultiByteToWideChar(CP_ACP, 0, szCommandLine, -1, cmdline, len); + + ret = pIEWinMain(cmdline, nShowWindow); + + heap_free(cmdline); + return ret; }
/************************************************************************* diff --git a/programs/iexplore/Makefile.in b/programs/iexplore/Makefile.in index 9bdd85d..aa5ccbe 100644 --- a/programs/iexplore/Makefile.in +++ b/programs/iexplore/Makefile.in @@ -1,6 +1,6 @@ EXTRADEFS = -DWINE_NO_UNICODE_MACROS MODULE = iexplore.exe -APPMODE = -mwindows +APPMODE = -mwindows -municode IMPORTS = ieframe DELAYIMPORTS = advpack version
diff --git a/programs/iexplore/main.c b/programs/iexplore/main.c index 6065ba9..23a738f 100644 --- a/programs/iexplore/main.c +++ b/programs/iexplore/main.c @@ -25,7 +25,7 @@ #include "wine/unicode.h" #include "wine/debug.h"
-extern DWORD WINAPI IEWinMain(LPSTR, int); +extern DWORD WINAPI IEWinMain(const WCHAR*, int);
static BOOL check_native_ie(void) { @@ -68,13 +68,15 @@ static DWORD register_iexplore(BOOL doregister) return FAILED(hres); }
-int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE prev, LPSTR cmdline, int show) +int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE prev, WCHAR *cmdline, int show) { + static const WCHAR regserverW[] = {'r','e','g','s','e','r','v','e','r',0}; + static const WCHAR unregserverW[] = {'u','n','r','e','g','s','e','r','v','e','r',0};
if(*cmdline == '-' || *cmdline == '/') { - if(!strcasecmp(cmdline+1, "regserver")) + if(!strcmpiW(cmdline+1, regserverW)) return register_iexplore(TRUE); - if(!strcasecmp(cmdline+1, "unregserver")) + if(!strcmpiW(cmdline+1, unregserverW)) return register_iexplore(FALSE); }