Module: wine Branch: master Commit: fd1bdb14a4eb2a055a1529b2d2abf4239da40167 URL: http://source.winehq.org/git/wine.git/?a=commit;h=fd1bdb14a4eb2a055a1529b2d2...
Author: Jay Yang jkelleyy@gmail.com Date: Sat Jun 11 17:42:21 2011 -0400
explorer: Use the command line arguments.
---
programs/explorer/explorer.c | 32 +++++++++++++++++++++++++++++++- 1 files changed, 31 insertions(+), 1 deletions(-)
diff --git a/programs/explorer/explorer.c b/programs/explorer/explorer.c index 91347eb..6411c16 100644 --- a/programs/explorer/explorer.c +++ b/programs/explorer/explorer.c @@ -160,6 +160,36 @@ static void register_explorer_window_class(void) RegisterClassExW(&window_class); }
+static IShellFolder* get_starting_shell_folder(parameters_struct* params) +{ + IShellFolder* desktop,*folder; + LPITEMIDLIST root_pidl; + HRESULT hres; + + SHGetDesktopFolder(&desktop); + if(!params->root || (strlenW(params->root)==0)) + { + return desktop; + } + hres = IShellFolder_ParseDisplayName(desktop,NULL,NULL, + params->root,NULL, + &root_pidl,NULL); + + if(FAILED(hres)) + { + return desktop; + } + hres = IShellFolder_BindToObject(desktop,root_pidl,NULL, + &IID_IShellFolder, + (void**)&folder); + if(FAILED(hres)) + { + return desktop; + } + IShellFolder_Release(desktop); + return folder; +} + static int copy_path_string(LPWSTR target, LPWSTR source) { INT i = 0; @@ -290,7 +320,7 @@ int WINAPI wWinMain(HINSTANCE hinstance, ExitProcess(EXIT_FAILURE); } register_explorer_window_class(); - SHGetDesktopFolder(&folder); + folder = get_starting_shell_folder(¶meters); make_explorer_window(folder); IShellFolder_Release(folder); while(GetMessageW( &msg, NULL, 0, 0 ) != 0)