2010-04-30 78 views
1

我有一個用C++編寫的控制檯程序。現在,我想每次在控制檯中鍵入「手動」程序的用戶時,打開手動文檔(以.txt或.pdf)。我怎樣才能做到這一點?任何指向教程的鏈接都會有所幫助。謝謝用C++編程打開文檔

+3

在什麼平臺上? – 2010-04-30 15:53:06

+0

另外,您打算自己編寫查看器,還是要打開第三方查看器來顯示文檔內容。更多的細節可能有助於獲得您正在尋找的答案。 – 2010-04-30 15:55:54

+0

@James McNellis 我在Windows上編寫了它,但我也想在Linux機器上運行它。代碼可以獨立於平臺嗎?您只需更改應用程序參數,然後重新編譯源代碼。 @Rob 我打算在windows上使用記事本或在linux上使用gedit來打開它。 – James 2010-05-01 00:48:24

回答

2

假設你在Windows上,你正在尋找ShellExecute函數。 (使用 「開放式」 的動詞)

4

嘗試編譯這段代碼(Open.cpp)到Open.exe 然後,您可以用(例如)這些參數來執行:

打開 「C:\你的FILE.DOC」

打開 「C:\你的file.exe」

打開記事本

#include "windows.h" 

int main(int argc, char *argv[]) 
{ 
    ShellExecute(GetDesktopWindow(), "open", argv[1], NULL, NULL, SW_SHOWNORMAL); 
} 

解釋程序的:

  1. 你應該首先包括窗口 庫(WINDOWS.H)獲得 的ShellExecuteGetDesktopWindow功能。
  2. 的ShellExecute是與參數 的argv [1]即路徑要打開的文件
  3. lpOperation 參數代替"open"另一種選擇是 NULL執行該文件的功能。 "explore""find"也是 也是選項,但它們不是 用於打開文件。
  4. SW_SHOWNORMAL是常數 在正常模式下顯示程序(未 最小化或最大化)
+0

不會使用'start'與您的'open'相同嗎? – Blindy 2010-04-30 20:28:53

+0

是的,它是一樣的,但是我們想用'start'命令打開一個沒有依賴關係的程序/文件 – Zai 2010-04-30 20:49:48

1

在標準的,獨立於平臺的,C和C++可以使用system函數來傳遞的名一個應用程序來打開你的文件。

例如,使用Windows:

const char text_filename[] = "example.txt"; 
const char text_application[] = "notepad.exe"; 

std::string system_str; 
system_str = text_application; 
system_str += " "; 
system_str += text_filename; 

// Execute the application 
system(system_str.c_str()); 

您發送到system功能的文字是特定平臺。

+0

謝謝,它可行!當我嘗試使用Adobe打開PDF文件時失敗。它說「acrord32.exe不被識別爲內部或外部命令,可操作或程序批處理文件」。 – James 2010-05-01 01:10:10

1

在託管C++是它很容易

系統::診斷::過程::啓動(路徑);

完成!