全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2924
推到 Plurk!
推到 Facebook!

以ShellExecute來執行特殊格式為輸入(但非參數)的問題

答題得分者是:aftcast
ouah
一般會員


發表:1
回覆:2
積分:0
註冊:2007-08-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-08-25 14:55:53 IP:140.116.xxx.xxx 訂閱
大家好:
標題可能有點怪,但我的問題是這樣的。
我在網路上抓到一個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);

也不見他在跑輸出的數據。

是我的語法寫錯了嗎,還是有哪些地方出問題呢?
還請大家能不吝指教。感謝~
編輯記錄
ouah 重新編輯於 2007-08-25 14:56:27, 註解 無‧
ouah 重新編輯於 2007-08-25 14:59:32, 註解 無‧
ouah 重新編輯於 2007-08-26 14:35:21, 註解 無‧
Stallion
版主


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-08-25 22:02:18 IP:211.22.xxx.xxx 未訂閱
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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-08-25 23:21:14 IP:203.204.xxx.xxx 訂閱
試看看, 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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-08-26 14:34:35 IP:140.116.xxx.xxx 訂閱
首先謝謝兩位板主的答覆。

真不好意思,沒說明清楚,我是使用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 ㄧ定是錯的,因此想請教一下大家。

謝謝。
編輯記錄
ouah 重新編輯於 2007-08-26 14:53:16, 註解 無‧
ouah 重新編輯於 2007-08-26 14:54:41, 註解 無‧
aftcast
站務副站長


發表:81
回覆:1485
積分:1763
註冊:2002-11-21

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-09-07 20:56:26 IP:60.248.xxx.xxx 訂閱
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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2007-09-10 16:41:42 IP:140.116.xxx.xxx 訂閱
首先感謝您的回覆,
我會試試您提供的做法的,感謝。

在文章中我的確是滿粗心的,連漏打s都沒看見,
問的問題可能也真的很基本,
可能是我找了很久的相關資料,從要怎麼從程式中執行某檔案一路過來,
方法不對或者其他原因,讓我找了很久卻無法達成我的目的,
因此後來想說就直接PO版問問看,
太急著想知道答案卻忽略了一些比較基本的東西。

在這裡跟各位前輩說聲抱歉。
文章內不ㄧ致的地方這點我ㄧ定改進,
但是至於問題基不基本這點我沒把握能ㄧ定做到,不過下次我定會再多做點功課再問。

還希望到時各位能不吝惜指教,感謝。

編輯記錄
ouah 重新編輯於 2007-09-10 16:43:16, 註解 無‧
ouah 重新編輯於 2007-09-10 16:43:51, 註解 無‧
系統時間:2024-04-26 5:04:31
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!