From: Katayama Hirofumi MZ Date: Sun, 24 Jun 2018 17:46:06 +0000 (+0900) Subject: [SHELL32] Implement OpenAs_RunDLLA/W (#628) X-Git-Tag: 0.4.11-dev~382 X-Git-Url: https://git.reactos.org/?p=reactos.git;a=commitdiff_plain;h=cc8b2717ae8dce0fff79d2b601c78d683f32027d [SHELL32] Implement OpenAs_RunDLLA/W (#628) CORE-14751 --- diff --git a/dll/win32/shell32/shlexec.cpp b/dll/win32/shell32/shlexec.cpp index bfbec4b704a..67c10f317ca 100644 --- a/dll/win32/shell32/shlexec.cpp +++ b/dll/win32/shell32/shlexec.cpp @@ -3,6 +3,7 @@ * * Copyright 1998 Marcus Meissner * Copyright 2002 Eric Pouech + * Copyright 2018 Katayama Hirofumi MZ * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -2288,17 +2289,32 @@ EXTERN_C HINSTANCE WINAPI WOWShellExecute(HWND hWnd, LPCSTR lpVerb, LPCSTR lpFil } /************************************************************************* - * OpenAs_RunDLLA [SHELL32.@] + * OpenAs_RunDLLW [SHELL32.@] */ -EXTERN_C void WINAPI OpenAs_RunDLLA(HWND hwnd, HINSTANCE hinst, LPCSTR cmdline, int cmdshow) +EXTERN_C void WINAPI +OpenAs_RunDLLW(HWND hwnd, HINSTANCE hinst, LPCWSTR cmdline, int cmdshow) { - FIXME("%p, %p, %s, %d\n", hwnd, hinst, debugstr_a(cmdline), cmdshow); + OPENASINFO info; + TRACE("%p, %p, %s, %d\n", hwnd, hinst, debugstr_w(cmdline), cmdshow); + + ZeroMemory(&info, sizeof(info)); + info.pcszFile = cmdline; + info.pcszClass = NULL; + info.oaifInFlags = OAIF_ALLOW_REGISTRATION | OAIF_REGISTER_EXT | OAIF_EXEC; + + SHOpenWithDialog(hwnd, &info); } /************************************************************************* - * OpenAs_RunDLLW [SHELL32.@] + * OpenAs_RunDLLA [SHELL32.@] */ -EXTERN_C void WINAPI OpenAs_RunDLLW(HWND hwnd, HINSTANCE hinst, LPCWSTR cmdline, int cmdshow) +EXTERN_C void WINAPI +OpenAs_RunDLLA(HWND hwnd, HINSTANCE hinst, LPCSTR cmdline, int cmdshow) { - FIXME("%p, %p, %s, %d\n", hwnd, hinst, debugstr_w(cmdline), cmdshow); + LPWSTR pszCmdLineW = NULL; + TRACE("%p, %p, %s, %d\n", hwnd, hinst, debugstr_a(cmdline), cmdshow); + + __SHCloneStrAtoW(&pszCmdLineW, cmdline); + OpenAs_RunDLLW(hwnd, hinst, pszCmdLineW, cmdshow); + SHFree(pszCmdLineW); }