Don't use ShellExecute, only ShellExecuteEx

git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@6867 212acab6-be3b-0410-9dea-997c60f758d6
This commit is contained in:
anders_k 2017-06-05 01:01:28 +00:00
parent 87980a831a
commit f5a9b401df
4 changed files with 19 additions and 4 deletions

View file

@ -103,6 +103,15 @@ static void NSISCALL SetActiveCtl(HWND hCtl)
SendMessage(g_hwnd, WM_NEXTDLGCTL, (WPARAM) hCtl, TRUE);
}
static BOOL NSISCALL LaunchURL(HWND hOwner, LPCTSTR URL, int ShowMode)
{
SHELLEXECUTEINFO sei;
sei.fMask = SEE_MASK_FLAG_NO_UI|SEE_MASK_FLAG_DDEWAIT;
sei.hwnd = hOwner, sei.nShow = SW_SHOWNORMAL;
sei.lpVerb = _T("open"), sei.lpFile = URL, sei.lpParameters=NULL, sei.lpDirectory = NULL;
return myShellExecuteEx(&sei);
}
static void NSISCALL NotifyCurWnd(UINT uNotifyCode)
{
if (m_curwnd)
@ -813,7 +822,7 @@ static INT_PTR CALLBACK LicenseProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPAR
if (tr.chrg.cpMax-tr.chrg.cpMin < COUNTOF(ps_tmpbuf)) {
SendMessage(hwLicense,EM_GETTEXTRANGE,0,(LPARAM)&tr);
SetCursor(LoadCursor(0, IDC_WAIT));
ShellExecute(hwndDlg,_T("open"),tr.lpstrText,NULL,NULL,SW_SHOWNORMAL);
LaunchURL(hwndDlg,tr.lpstrText,SW_SHOWNORMAL);
SetCursor(LoadCursor(0, IDC_ARROW));
}
}

View file

@ -874,12 +874,10 @@ static int NSISCALL ExecuteEntry(entry *entry_)
TCHAR *buf2=GetStringFromParm(0x22); // Parameters
GetStringFromParm(0x15); // For update_status_text_buf1
update_status_text_buf1(LANG_EXECSHELL);
sei.cbSize=sizeof(SHELLEXECUTEINFO);
sei.fMask=parm4;
sei.hwnd=g_hwnd, sei.nShow=parm3;
sei.lpVerb=buf0[0]?buf0:NULL, sei.lpFile=buf3, sei.lpParameters=buf2[0]?buf2:NULL, sei.lpDirectory=state_output_directory;
sei.lpIDList=NULL; // Must set this because SEE_MASK_INVOKEIDLIST might be set
if (!ShellExecuteEx(&sei))
if (!myShellExecuteEx(&sei))
{
log_printf5(_T("ExecShell: warning: error (\"%s\": file:\"%s\" params:\"%s\")=%d"),buf0,buf3,buf2,GetLastError());
exec_error++;

View file

@ -99,6 +99,13 @@ HANDLE NSISCALL myCreateProcess(TCHAR *cmd)
return ProcInfo.hProcess;
}
BOOL NSISCALL myShellExecuteEx(SHELLEXECUTEINFO*pSEI)
{
pSEI->cbSize = sizeof(SHELLEXECUTEINFO);
pSEI->lpIDList = NULL; // Must set this because SEE_MASK_INVOKEIDLIST might be set by ExecShell[Wait]
return ShellExecuteEx(pSEI);
}
/*BOOL NSISCALL my_SetWindowText(HWND hWnd, const TCHAR *val)
{
return SendMessage(hWnd,WM_SETTEXT,0,(LPARAM)val);

View file

@ -109,6 +109,7 @@ DWORD NSISCALL CreateRestrictedDirectory(LPCTSTR path);
DWORD NSISCALL CreateNormalDirectory(LPCTSTR path);
HANDLE NSISCALL myCreateProcess(TCHAR *cmd);
BOOL NSISCALL myShellExecuteEx(SHELLEXECUTEINFO*pSEI);
int NSISCALL my_MessageBox(const TCHAR *text, UINT type);
void NSISCALL myDelete(TCHAR *buf, int flags);