none
如何取得Shell呼叫指令的執行訊息 RRS feed

  • 問題

  • 如果我使用Shell來呼叫一個指令,如何可以取得該指令執行之後的結果?

    比如說執行netsh來更改系統IP,然後可以傳回指令執行成功與否。

    2006年3月24日 上午 08:11

解答

  • 由於你要執行的是 Command 命令,一般比較偷懶的方法會用輸出轉向,轉到檔案去:

    netsh interface ip set dns name ="區域連線" source = dhcp > temp.txt

    等到 ProcessId 處於無效狀態時,再去讀取檔案。

    通常呼叫前,會呼叫 cmd /c ,讓應用程式一執行完就關閉視窗,這樣比較好判斷 ProcessId 是否已經無效了。

    2006年3月25日 上午 01:52
    版主

所有回覆

  • 看來你是用VB6, Shell只是呼叫作用,要找回IP那要用上API了
    2006年3月24日 上午 08:38
  •  達Ming 寫信:
    看來你是用VB6, Shell只是呼叫作用,要找回IP那要用上API了

    我是使用VB.net 2005,可能我沒說清楚

    比如說我執行下列指令:netsh interface ip set dns name ="區域連線" source = dhcp

    然後設定他在背景執行,希望取得執行完之後的訊息

    或是是否有除了使用Shell之外的方式也能達到我要的結果?

    2006年3月24日 上午 08:52
  •  黯雲 寫信:

    如果我使用Shell來呼叫一個指令,如何可以取得該指令執行之後的結果?

    比如說執行netsh來更改系統IP,然後可以傳回指令執行成功與否。

     

    你可以透過 GetLastError() 得到最後錯誤傳回值

    有的時候不一定是錯誤, 如果你傳回 0 這就會得到 '0'

     

    希望對你有幫助

    2006年3月24日 下午 04:58
  • 由於你要執行的是 Command 命令,一般比較偷懶的方法會用輸出轉向,轉到檔案去:

    netsh interface ip set dns name ="區域連線" source = dhcp > temp.txt

    等到 ProcessId 處於無效狀態時,再去讀取檔案。

    通常呼叫前,會呼叫 cmd /c ,讓應用程式一執行完就關閉視窗,這樣比較好判斷 ProcessId 是否已經無效了。

    2006年3月25日 上午 01:52
    版主