今天查一個(gè)問題,我們的產(chǎn)品在運(yùn)行是,點(diǎn)擊安裝,會(huì)報(bào)錯(cuò),找到一個(gè)結(jié)束進(jìn)程的控件processwork.dll
下載地址:
http://www.esanu.name/programs/NSISKillProcess.html 將processwork.dll放到Plugins目錄下,然后在NSIS代碼中加入如下函數(shù):
Function CloseParentWithUserApproval
Push $5
loop:
push "*.exe"
processwork::existsprocess
pop $5
IntCmp $5 0 done
MessageBox MB_RETRYCANCEL|MB_ICONSTOP “Your process must be closed during this installation.$\r$\n Close your process now, or press Retry to automatically close and continue or press Cancel to cancel the installation entirely.“ IDCANCEL BailOut
push "*.exe"
processwork::KillProcess
Sleep 2000
Goto loop
BailOut:
Abort
done:
Pop $5
FunctionEnd
新創(chuàng)建的非模態(tài)對(duì)話框,失去焦點(diǎn)時(shí)也會(huì)顯示在最前,使用很不方便。
取消此特性的方法如下:
(1)將Dialog的屬性“Application Window”設(shè)置為True,以便在對(duì)話框可見時(shí)在任務(wù)欄顯示圖標(biāo)。
(2)將Dialog的屬性“System Modal”和“Topmost”分別設(shè)置為False。
(3)創(chuàng)建代碼:
CDialog* pModeDlg = new CDialog(NULL);
pModeDlg ->Create(IDD_DIALOG_MODE, GetDesktopWindow());
pModeDlg ->ShowWindow(SW_SHOWNA);