[問題] shellexcute & shellexcuteEX 在window 7

看板C_and_CPP (C/C++)作者 (why so serious)時間14年前 (2011/10/11 19:46), 編輯推噓0(000)
留言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
文章代碼(AID): #1Eb2oYuq (C_and_CPP)
文章代碼(AID): #1Eb2oYuq (C_and_CPP)