線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:3895
推到 Plurk!
推到 Facebook!

使用shellexecute時有問題

尚未結案
甘蔗夫
一般會員


發表:76
回覆:19
積分:19
註冊:2004-08-25

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-11-20 15:51:33 IP:61.228.xxx.xxx 未訂閱
Dear 大大: 我使用shellEexcute去呼叫"xcopy" command,當我執行的path是在諸如Document and Setting(長檔名)下時, 每次都會有問題,因此我就使用getshortpathneame此API將長檔名變為短檔名再將其交給SHELLEXECUTE帶入"xcopy"的參數,但每次執行雖能複製成功,但"xcopy" 好像會一直hold在memory上,這該怎樣解決,然而在其他沒長檔名的路徑都非常正常
Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-11-20 21:10:47 IP:211.22.xxx.xxx 未訂閱
當路徑名稱中間有空白字元時,用雙引號括起來~
甘蔗夫
一般會員


發表:76
回覆:19
積分:19
註冊:2004-08-25

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-11-20 22:05:05 IP:218.166.xxx.xxx 未訂閱
引言: 當路徑名稱中間有空白字元時,用雙引號括起來~ >< face="Verdana, Arial, Helvetica"> 我試過了,如果將其由shellexecute帶入xcopy,遇到有空白字元(如program files和document and setting)會有問題
RedSnow
版主


發表:79
回覆:1322
積分:845
註冊:2003-12-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-11-20 22:35:14 IP:61.230.xxx.xxx 未訂閱
甘蔗夫 您好:    參數內含有空白字元,除了要使用雙引號括起來之外,雙引號本身也是參數的一部份,因此參數的雙引號以及目錄分隔字元都要再加上一個反斜線,我不知道您實際是如何設定的,以下是以前面的例子來說明: "Xcopy \"c:\\program files\\Zip\\*.zip\" c:" 7 天天敲鍵盤 v 時時按滑鼠 8
Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-11-20 22:37:01 IP:211.22.xxx.xxx 未訂閱
我試了一下,要括號成這樣才可以! < class="code"> AnsiString temp = "\"C:\\Program Files\\Winzip\\*.*\" C:\\Temp"; ::ShellExecute(NULL,"open","XCopy.exe",temp.c_str() ,NULL,SW_SHOWNORMAL); ----------------------- Practice makes perfect.
甘蔗夫
一般會員


發表:76
回覆:19
積分:19
註冊:2004-08-25

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-11-21 00:12:39 IP:218.166.xxx.xxx 未訂閱
引言: 我試了一下,要括號成這樣才可以! < class="code"> AnsiString temp = "\"C:\\Program Files\\Winzip\\*.*\" C:\\Temp"; ::ShellExecute(NULL,"open","XCopy.exe",temp.c_str() ,NULL,SW_SHOWNORMAL); ----------------------- Practice makes perfect.
可否請妳試試 AnsiString temp = "/Y \"C:\\Program Files\\Winzip\\a.txt \\\\192.1.1.2\\c$\\Program Files\\Winzip\\\"" ::ShellExecute(NULL,"open","XCopy.exe",temp.c_str() ,NULL,SW_SHOWNORMAL); 我的情形是要透過shellexecute把參數帶給"xcopy"command把一個檔案複制到另一個pc的相同目錄(我的環境設定已經可以這樣做),只是遇到有空字元的路徑都會有問題,所以我使用getshortpathname此api將長檔名轉為短檔名,執行結果雖有複製成功但發現"xcopy"command都會hold在memory,使得電腦好像當機,而且在執行xcopy之前如果目地pc之目的folder沒有先自行create(因為"xcopy"command會自行幫目的pc來create)在執行"xcopy"之後會變成轉為短檔名的名子而跟來源目錄不相同 TStringList *Path = new TStringList; char *AbsolutePath= new char[255]; char *filename= new char[255]; GetShortPathName(.......,AbsolutePath,255); GetShortPathName(.......,filename,255); AnsiString PathName; PathName=StringReplace(AbsolutePath,":"," ", TReplaceFlags()<CommaText=PathName; Argu="/Y/E " String(AbsolutePath) String(filename) " " "\\\\192.1.1.1\\" Path->Strings[0] "$" APath->Strings[1]; ShellExecute(NULL,NULL,"xcopy",Argu.c_str(),NULL,SW_SHOWNOACTIVATE); (Path->Strings[0]="c",Path->Strings[1]為不加磁碟代號的目的路徑) 發表人 - 甘蔗夫 於 2005/11/21 00:14:14
系統時間:2024-04-25 19:56:04
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!