# HG changeset patch # User Andre Heinecke # Date 1410948650 -7200 # Node ID 4a17c9f977d07676096d53fd7043d697f259180c # Parent a162f4cbba75a966595bcaee3e7cdce0d3981436 (issue54) Add parameter handling to desktopshellrun diff -r a162f4cbba75 -r 4a17c9f977d0 packaging/desktopshellrun.cpp --- a/packaging/desktopshellrun.cpp Wed Sep 17 10:57:54 2014 +0200 +++ b/packaging/desktopshellrun.cpp Wed Sep 17 12:10:50 2014 +0200 @@ -75,11 +75,12 @@ * * @param[in] disp The shell dispatcher to use for shell execute. * @param[in] fName The file that should be exectued. + * @param[in] param Optinal parameters to add. * * @returns true on success. */ static bool -shellexecute(IShellDispatch2 *disp, wchar_t *fName) +shellexecute(IShellDispatch2 *disp, wchar_t *fName, wchar_t *param) { BSTR bName = NULL, bParam = NULL, @@ -95,7 +96,7 @@ } bName = SysAllocString(fName); - bParam = SysAllocString(L""); + bParam = SysAllocString(param ? param : L""); bDir = SysAllocString(L""); bOp = SysAllocString(L""); @@ -163,7 +164,8 @@ UNUSED(hwndParent); UNUSED(string_size); HRESULT hr; - wchar_t *wbuf = NULL; + wchar_t *wbuf = NULL, + *params = NULL; IShellWindows *shellWindows = NULL; IShellBrowser *shellBrowser = NULL; IShellView *shellView = NULL; @@ -278,11 +280,17 @@ goto done; } - if (!shellexecute(shellDispatch, wbuf)) + if ((*stacktop)->next && (*stacktop)->next->text) + { + params = utf8_to_wchar((*stacktop)->next->text, strlen((*stacktop)->next->text)); + } + + if (!shellexecute(shellDispatch, wbuf, params)) { ERRORPRINTF ("Failed to execute."); } xfree (wbuf); + xfree (params); done: if (folderView) {