請問一下ShellexecuteEx的問題 |
尚未結案
|
willchen
初階會員 發表:64 回覆:81 積分:29 註冊:2003-05-23 發送簡訊給我 |
各位高手好,小弟有遇到一個問題,但我現在找不到好方法解決
問題大致上如下
我把程式寫在A程式的Listbox的OnDblClick的事件下,先開啟test.txt檔,
並存入一些資料到test.txt,之後在這個事件下我又用ShellExecuteEx
呼叫B執行同時B也讀取test.txt,並處理一些事情之後,再把資料存入test.txt
之後再呼叫B之後,再對test.txt作一些包裝,才結束這個OnDblClick 但小弟我發現,會發生A與B會同時搶test.txt的狀況(B在呼叫ShellExecuteEx時
有使用呼叫等待(即等待B結束才會回到A),請問這是什麼問題??
我把OnDblClick的事件貼出來給大家參考一下
if(!FileExists(CurrentDir "agent.tmp")) //agent.tmp檔案不在則建立 { int iFileHandle=FileCreate(CurrentDir "agent.tmp"); FileClose(iFileHandle); } TMemoryStream *tempstream=new TMemoryStream(); int left,right; //左右index; AnsiString Itemtext=ServerletList->Items->Strings[ServerletList->ItemIndex]; //服務主機的IP left=Itemtext.Pos("[") 1; right=Itemtext.Pos("]"); AnsiString ServerletIP=Itemtext.SubString(left,right-left); //End //服務程式名稱 left=Itemtext.Pos("<") 1; right=Itemtext.Pos(">"); AnsiString ServerletName=Itemtext.SubString(left,right-left); //End //Agentlet名稱 right=ServerletName.Pos(".")-1; AnsiString Agentletname=ServerletName.SubString(1,right) "_Agentlet.exe"; //End //呼叫ShellExecute前置作業 DWORD ExitCode; SHELLEXECUTEINFO ExecInfo; ZeroMemory(&ExecInfo,sizeof(ExecInfo)); ExecInfo.cbSize=sizeof(ExecInfo); ExecInfo.fMask=SEE_MASK_NOCLOSEPROCESS; ExecInfo.lpVerb="Open"; ExecInfo.lpFile=(Agentletname).c_str(); ExecInfo.lpParameters=NULL; ExecInfo.lpDirectory=(Agentletpath).c_str(); ExecInfo.hwnd=Application->Handle; ExecInfo.nShow=SW_SHOWNORMAL; //End //開agent.tmp檔存入ItemXXX Title 加入Title麻煩各位了,不吝指教 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |