iT邦幫忙

1

C語言執行外部程式問題

各位前輩好~
小弟我最近剛學習C語言有個問題想請教各位前輩,就在C語言裡面 要讓他執行外部程式例如chrome等等 一定要給他絕對路徑嗎?

如果不使用絕對路徑的話,要如何讓它執行外部程式呢?

懇請各位前輩為我解答 謝謝!!

看更多先前的討論...收起先前的討論...
外獅佬 iT邦大師 1 級 ‧ 2016-01-13 11:21:21 檢舉
試問一個問題:不用絕對路徑,你的程式怎麼知道要去哪裡找到執行檔?
littlemi7 iT邦新手 5 級 ‧ 2016-01-13 13:31:45 檢舉
是沒錯!! 可是我想說看有沒有語法 可以讓他自己去搜尋檔案安裝的路徑

假如我程式內寫chrome.exe然後讓他自己去尋找chrome.exe是在哪個路徑底下並且讓他執行

如沒有的話只能叫使用者配合我預先設定好的路徑了哭
外獅佬 iT邦大師 1 級 ‧ 2016-01-13 14:06:34 檢舉
Windows裡頭倒是有這麼個東西:
GetModuleFileName
請自行斟酌測試謝謝
WilliamHuang iT邦研究生 1 級 ‧ 2016-01-13 14:20:03
【**此則訊息已被站方移除**】
fillano iT邦超人 1 級 ‧ 2016-01-14 09:28:12 檢舉

The module must have been loaded by the current process.



所以GetModuleFileName()也沒用,而且他說的應該是動態載入的模組(dll或exe或其他,可能用LoadLibrary載入再去呼叫裡面定義好的函數,反正不是用執行的方式)

billtu iT邦新手 4 級 ‧ 2016-01-15 14:57:04 檢舉
HKEY_CURRENT_USER\Software\Microsoft\IntelliPoint\AppSpecific\chrome.exe

Path
littlemi7 iT邦新手 5 級 ‧ 2016-01-18 17:34:08 檢舉
我在思考該如何做會比較好,這隻程式是替朋友寫得所以可以慢慢測試,看哪種方式會比較好

感謝各位前輩為我解答^^~
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

4
wiseguy
iT邦超人 1 級 ‧ 2016-01-14 11:08:39
最佳解答
  1. 一定要絕對路徑。
  2. 絕對路徑是可以偵測的。OK? 比如:
    a. 取得執行檔本身的執行目錄後,再去判斷你要的執行檔是否放在一起
    b. 偵測你要的軟體安裝在哪,再去執行主程式
    c. 掃瞄你要執行的軟體是否在幾個常見的安裝目錄
    ...
0
尼克
iT邦大師 1 級 ‧ 2016-01-13 10:52:04

設定path應該你解決你的問題。

看更多先前的回應...收起先前的回應...
外獅佬 iT邦大師 1 級 ‧ 2016-01-13 10:56:44 檢舉

那也是絕對路徑.....

littlemi7 iT邦新手 5 級 ‧ 2016-01-13 11:27:32 檢舉

我目前是用這種方式寫的WinExec("D:\\Citrix XenCenter\\XenCenter.exe",SW_SHOW);,這種方式是屬於絕對路徑,如果我把程式拿到別台電腦上用,
那台電腦一樣有XenCenter這套軟體可是他安裝路徑卻不一樣的話這樣程式就無法執行了,那有什麼方法可以解決呢?

我的發問可以能解釋上有問題,應該這樣說會比較清楚 請各位前輩為我解答一下^^ 謝謝!!

外獅佬 iT邦大師 1 級 ‧ 2016-01-13 11:48:46 檢舉

那麼,path的設定是一條路,另外就是,可以放一個類似ini設定檔的方式,讀取這個設定檔。
每台電腦,你要做的事,就是改設定即可。

cpc0935 iT邦研究生 5 級 ‧ 2016-02-29 21:31:46 檢舉

讚

我要發表回答

立即登入回答