2011-04-14 78 views
0

顯然這應該是可能的。例如在使用NOTEPAD或HxD的文件上打開和操作。但是,它們不都是文本文件嗎?如何指定使用WINDOWS API打開文件和使用文件進行操作的文本編輯器。這當然不是在「CreateFile」中。用不同的文本編輯器打開文件

+0

文件本身不能嵌入編輯器應在第一次/下一次編輯時使用哪個編輯器的規範,除非它可以給定與特定編輯器關聯的文件擴展名。 – 2011-04-14 05:23:26

回答

0

希望我能理解你的問題...最簡單的方法是啓動所需的編輯器並將文件名作爲參數傳遞,而不是「調用」該文件(該文件將啓動與文件類型)。例如,notepad.exe mytextfile.txtgvim.exe mytextfile.txt

如果編輯器不在%PATH%上,則需要使用完整路徑文件名。

0

你準備怎麼做?你可以:

  1. 維護,您希望安裝的編輯列表,並有條目在系統的PATH(壞主意)
  2. 有一個編輯器/要使用編輯器,查詢Windows註冊表找到編輯器的安裝路徑(使用RegGetValue),然後啓動編輯器CreateProcess)(一個更好的主意)
  3. 查詢註冊表以獲取給定文件類型的默認編輯器,然後使用CreateProcess啓動該編輯器。 (最好主意)

但這一切都取決於你的目標是什麼。基於需求

所以,只是讓我們在同一頁上,從C++

編輯,你想:

  1. 以一個命令行參數的C++應用程序(文件名)
  2. 打開,在任意編輯文件
  3. 發現當用戶已經改變了一個文件
  4. 操作上的文件內容

這是正確的嗎?

如果是這樣,你可以:

  1. 使用Boost libs to compute a CRC在文件中的當前數據
  2. 啓動使用我最初在緊湊循環和sleep如此描述
  3. 棒的方法之一編輯你不會咀嚼資源,而最初計算的CRC匹配循環中每次迭代計算的一次。

當然,有各種(這只是描述我可能使用的算法的一種超級簡單的方式),例如:

  1. 如果用戶沒有更改文件,會發生什麼情況?
  2. 如果找不到文件,會發生什麼情況?

我確定有很多不同的方法可以做到這一點,但這是目前我能想到的最簡單的方法(雖然仍然能夠相當確定所做的更改)。

免責聲明:我還沒有實現這樣的事情,所以我可能會完全關閉基地;)

+0

我明白了,我希望。 – Jake 2011-04-14 05:14:19

0

您是否正在尋找Windows上的ShellExecute()ShellExecuteEx()的API?他們將啓動爲文件註冊的任何程序(通常基於文件名擴展)。

相關問題