[問題] shellexcute & shellexcuteEX 在window 7
看板C_and_CPP (C/C++)作者CRAZYFAN (why so serious)時間14年前 (2011/10/11 19:46)推噓0(0推 0噓 0→)留言0則, 0人參與討論串1/1
開發平台(Platform): VS2008
問題(Question):
目前程式執行的流程如下:
A程式執行起來處理到某處便會關閉,關閉後叫起B程式。
B程式初始化的時候會用Findwindow看A是否關閉,
若A有關閉則B做他要做的事,再B處理完後再叫起A。
開啟程式都是用shellexecute,在WinXP下均正常。
但在Win7下A可正確叫起B,B也正確執行工作,
但是無法再叫起A。可是若直接在Win7下執行B,
則B會正確執行工作且叫起A。
google的結果有些UAC的問題,可以將verb設成"runas",
,也有說用shellexecuteEX就可以了。可是若是使用者權限的問題,
那直接執行B應該也叫不起A啊,甚至A也根本叫不起B。
搞不太懂同樣的shellexecute為什麼有時候可以正確執行程式,
有時候卻不行。
預期的正確結果(Expected Output):
程式碼(Code):(請善用置底文網頁, 記得排版)
這邊附上B要叫起A時 shellexecuteEX shellexecute 所用參數
str是所要執行的程式的路徑。
順便問一下在A叫起B的時候所用的參數會影響到B叫起A嗎?
另外A叫起B是用ShellExecute參數都跟B叫起A時一樣,
只改執行檔的路徑。
ShellExecute(NULL,NULL,str,NULL,NULL,SW_SHOW);
CoInitializeEx (NULL,COINIT_APARTMENTTHREADED | COINIT_DISABLE_OLE1DDE);
SHELLEXECUTEINFO ShellInfo;
memset(&ShellInfo, 0, sizeof(ShellInfo));
ShellInfo.cbSize = sizeof(ShellInfo);
ShellInfo.hwnd = NULL;
ShellInfo.lpVerb = NULL;
ShellInfo.lpFile = str;
ShellInfo.nShow = SW_SHOWNORMAL;
ShellInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
BOOL bResult = ShellExecuteEx(&ShellInfo);
CoUninitialize();
補充說明(Supplement):
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 60.250.121.117
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章