以ShellExecute來執行特殊格式為輸入(但非參數)的問題 |
答題得分者是:aftcast
|
ouah
一般會員 發表:1 回覆:2 積分:0 註冊:2007-08-23 發送簡訊給我 |
大家好:
標題可能有點怪,但我的問題是這樣的。 我在網路上抓到一個binary,暫且叫他的名稱為prog.exe,他能吃pgm的圖檔作為輸入,然後對那圖檔作處理,並輸出處理結果。 根據該binary作者提供的說明,要執行該檔為到命令提示字元,該目錄下,打以下指令 prog < book.pgm > book.key (其中book.pgm為相同目錄下之圖檔,book.key為要存放輸出結果的檔案) 假設我這些檔案都存放在 E:\ 下,我嘗試著如此寫: ShellExecute(0, "open", "E:\\prog.exe < book.pgm > book.key", NULL, NULL, SW_SHOWNORMAL); 或 ShellExecute(0, "open", "E:\\prog.exe < E:\\book.pgm > E:\\book.key", NULL, NULL, SW_SHOWNORMAL); 但都不見其輸出檔book.key。或者,我這樣寫: ShellExecute(0, "open", "E:\\prog.exe < book.pgm", NULL, NULL, SW_SHOWNORMAL); 或 ShellExecute(0, "open", "E:\\prog.exe < E:\\book.pgm", NULL, NULL, SW_SHOWNORMAL); 也不見他在跑輸出的數據。 是我的語法寫錯了嗎,還是有哪些地方出問題呢? 還請大家能不吝指教。感謝~ |
Stallion
版主 發表:52 回覆:1600 積分:1995 註冊:2004-09-15 發送簡訊給我 |
1.你的程式大家都沒有?沒人知道你的參數這樣下對不對?!
2.按照你的說明,為何CONSOLE下的參數下法跟SHELLEXECUTE不一樣? 2.1 prog book.key 2.2 E:\\prog.exe < E:\\book.pgm > E:\\book.key 這樣兩個意思差很多! 2.3 還是在 ShellExecute 的命令列直接打 ShellExecute(0, "open", "E:\\prog.exe book.key", NULL, NULL, SW_SHOWNORMAL); 3.請參考~ ===================引 用 ouah 文 章=================== 大家好: 標題可能有點怪,但我的問題是這樣的。 我在網路上抓到一個binary,暫且叫他的名稱為prog.exe,他能吃pgm的圖檔作為輸入,然後對那圖檔作處理,並輸出處理結果。 根據該binary作者提供的說明,要執行該檔為到命令提示字元,該目錄下,打以下指令 prog (其中book.pgm為相同目錄下之圖檔,book.key為要存放輸出結果的檔案) 假設我這些檔案都存放在 E:\ 下,我嘗試著如此寫: ShellExecute(0, "open", "E:\\prog.exe < book.pgm > book.key", NULL, NULL, SW_SHOWNORMAL);或 ShellExecute(0, "open", "E:\\prog.exe < E:\\book.pgm > E:\\book.key", NULL, NULL, SW_SHOWNORMAL); 但都不見其輸出檔book.key。或者,我這樣寫: ShellExecute(0, "open", "E:\\prog.exe < book.pgm", NULL, NULL, SW_SHOWNORMAL); 或 ShellExecute(0, "open", "E:\\prog.exe < E:\\book.pgm", NULL, NULL, SW_SHOWNORMAL); 也不見他在跑輸出的數據。 是我的語法寫錯了嗎,還是有哪些地方出問題呢? 還請大家能不吝指教。感謝~ |
pcboy
版主 發表:177 回覆:1838 積分:1463 註冊:2004-01-13 發送簡訊給我 |
試看看, Delphi 目錄只要一個倒斜線, C 才是兩個
ShellExecute(0, "open", "E:\prog.exe < book.pgm > book.key", NULL, NULL, SW_SHOWNORMAL); 或 ShellExecute(0, "open", "E:\prog.exe < E:\book.pgm > E:\book.key", NULL, NULL, SW_SHOWNORMAL); ShellExecute(0, "open", "E:\prog.exe book.pgm book.key", NULL, NULL, SW_SHOWNORMAL); 或 ShellExecute(0, "open", "E:\prog.exe E:\book.pgm E:\book.key", NULL, NULL, SW_SHOWNORMAL);
------
能力不足,求助於人;有能力時,幫幫別人;如果您滿意答覆,請適時結案! 子曰:問有三種,不懂則問,雖懂有疑則問,雖懂而想知更多則問! |
ouah
一般會員 發表:1 回覆:2 積分:0 註冊:2007-08-23 發送簡訊給我 |
首先謝謝兩位板主的答覆。
真不好意思,沒說明清楚,我是使用C的。 又後來發現上面自己寫的東西好像和我一開始打的有出入(在命令提示字元下的命令那段 prog < book.pgm > book.key)。 (好像是論壇中 < 後面直接接的東西會不見) 我會重新修改。 另外,我用system指令做嘗試可行了,但還是想知道為什麼ShellExeute這樣會錯。 system("E:\\prog.exe < E:\\book.pgm > E:\\book.key" ); 還有想另外再問個問題,就是假設我現在有一堆圖檔,他們的名稱我已經用一個陣列存起來了。 那我要怎麼用ShellExecute,或System之類的語法,但裡面給定輸入部分(上面的 book.pgm ),是改用變數名稱呢? 比如說:"假設"我有一字串陣列叫做pic_sets,裡面存了我有的圖片名稱,book.pgm是存在pic_sets[1], 照上面這樣用 prog < pic_set[1] > book.key ㄧ定是錯的,因此想請教一下大家。 謝謝。 |
aftcast
站務副站長 發表:81 回覆:1485 積分:1763 註冊:2002-11-21 發送簡訊給我 |
ShellExecute 主要是用來開一個目錄夾或是一個檔案。不含參數。
system則是相當於開一個console環境,裡面的值則是你可以輸入的任何命令,比如說 dir 等,當然 < 或是 > 轉向也都可以含。不過這方式有個小小缺點,就是速度慢些,資源用多了些。 另可用execl之類的function也可以達成任務,它可以讓你把參數代入… 詳情請查文件。 >> prog < pic_set[1] > book.key 這一字是錯的,知道就好! 前輩驟似乎不太想理你這問題,可能是覺得你太粗心或是不認真或是太… 因為問題很基本,所以可見你基本功沒下。 首先你應該設一個字串變數,如szCmd,然後用字串相加的方式把 "prog < " 與pic_set[1]與"> book.key "加起來。放入szCmd 然後system(szCmd); 就搞定了! 話只能說到此,至於相加要注意的事,你就自己多用心吧! ===================引 用 ouah 文 章=================== 首先謝謝兩位板主的答覆。 真不好意思,沒說明清楚,我是使用C的。 又後來發現上面自己寫的東西好像和我一開始打的有出入(在命令提示字元下的命令那段? prog? < book.pgm? > book.key)。 (好像是論壇中 <!--直接接的東西會不見)? 我會重新修改。 另外,我用system指令做嘗試可行了,但還是想知道為什麼ShellExeute這樣會錯。 system("E:\\prog.exe < E:\\book.pgm? > E:\\book.key" ); 還有想另外再問個問題,就是假設我現在有一堆圖檔,他們的名稱我已經用一個陣列存起來了。 那我要怎麼用ShellExecute,或System之類的語法,但裡面給定輸入部分(上面的 book.pgm ),是改用變數名稱呢? 比如說:"假設"我有一字串陣列叫做pic_sets,裡面存了我有的圖片名稱,book.pgm是存在pic_sets[1], 照上面這樣用? prog < pic_set[1] > book.key ㄧ定是錯的,因此想請教一下大家。 謝謝。
------
蕭沖 --All ideas are worthless unless implemented-- C++ Builder Delphi Taiwan G+ 社群 http://bit.ly/cbtaiwan |
ouah
一般會員 發表:1 回覆:2 積分:0 註冊:2007-08-23 發送簡訊給我 |
首先感謝您的回覆,
我會試試您提供的做法的,感謝。 在文章中我的確是滿粗心的,連漏打s都沒看見, 問的問題可能也真的很基本, 可能是我找了很久的相關資料,從要怎麼從程式中執行某檔案一路過來, 方法不對或者其他原因,讓我找了很久卻無法達成我的目的, 因此後來想說就直接PO版問問看, 太急著想知道答案卻忽略了一些比較基本的東西。 在這裡跟各位前輩說聲抱歉。 文章內不ㄧ致的地方這點我ㄧ定改進, 但是至於問題基不基本這點我沒把握能ㄧ定做到,不過下次我定會再多做點功課再問。 還希望到時各位能不吝惜指教,感謝。 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |