2017-01-10 4 views
-1

私は、Wordで幅広いマニュアルを役に立つ絵で書いたWindows Formsアプリケーションを持っています。 .exeファイルに.docxを含めて、ユーザーがWordのマニュアルを開くためにアプリケーションのボタンをクリックできるようにする方法はありますか?WindowsアプリケーションにWord文書を添付することはできますか?

+0

確かに、出力ディレクトリにそのディレクトリを組み込み、そこからシェル起動時のprocess.startコマンドを使用して開く必要があります。 –

+0

ありがとうございました。私はそれを調べます。 – Forklift

+1

@ rory.apは正しいですが、Word文書ではなくPDFを推奨します。あなたのユーザーがそれを読むことができるより良い機会があります。私は、例えば、私が使っているどのコンピュータにもWordのコピーを持っていない。 – adv12

答えて

1

「添付」の代わりに、「埋め込み」を意味すると思います。

はい、埋め込みリソースとして保存することができます。 Win32のPEリソースとして

  • は、.NET Win32プログラムのリソースを埋め込むには、3つの方法があります。これは.NETコード内には組み込まれていないので(P/Invoke(DllImport)が必要です)、他のプログラムがそのリソースにアクセスできることを意味します。

  • エンベデッドリソースストリームは直接格納されているため、.NET FrameworkのAssembly.GetManifestResourceStream() APIを使用してアクセスします。これは最速の方法です(バイト配列の代わりにStreamとして公開されているため、不必要にメモリにロードされません)。
  • Byte[]として、.resx/.resourcesリソース内にあります。ファイルが別の抽象でラップされ、Streamの代わりにByte[]として公開されているため、Visual Studioでファイルをより簡単に管理できるため、これは最適ではありません。

私はGetManifestResourceStream方法をお勧めしますので、この操作を行います。

プロジェクトで
  1. は、プロジェクト(ソリューションエクスプローラでWord文書を含める>>)すべてのファイル>(あなたのドキュメント、右クリックを表示インクルードファイル
  2. ファイルを選択し、[プロパティ]を開き、[組み込みリソース]を選択します。
  3. プロジェクトルートの相対フォルダパスは、リソースのドット区切りの名前プレフィックスに変換されるのでファイルがMy Project\Documents\Readme.docであれば、リソース名eは​​になります。 You can override thisですが、要素を使用して.csprojファイルを直接編集する必要があります。
  4. ビルドすると、*.docファイルが埋め込まれます。あなたのコードで

、次の操作を行います。私はそれが保証されていないとして、あなたが知っている限り、ユーザは(Wordがインストールされているということ.docまたは.docxファイルを使用することはお勧めしません

// use a GUID generator to create a new GUID in a string literal (do not run `Guid.NewGuid()` or `new Guid()` at runtime!) to create a globally unique filename so you don't accidentally overwrite other files 
const String _myFileName = "12345.doc"; 

static void ShellInvokeReadmeDocument() { 

    String destFileName = Path.Combine(Path.GetTempPath(), _myFileName); 
    if(!File.Exists(destFileName)) { 

     Assembly assembly = Assembly.GetExecutingAssembly(); // change as appropriate 
     using(Stream source = assembly.GetManifestResourceStream("Documents.Readme.doc")) 
     using(Stream destination = File.OpenWrite(destFileName)) { 

      source.CopyTo(destination); 
     } 
    } 

    Process.Start(destFileName); 
} 

注意をご顧客はそれを持っています)。

Windowsのワードパッドには、必ず.docファイルを開く機能がありません。 Windows 7以降では、ワードパッドは.docxファイルのみを開き、すべての書式設定オプションをサポートしているわけではありません.Windows Vistaおよびそれ以前のワードパッドでは.docxファイルを開くことができません。

互換性を最大限にしたい場合は、.pdfファイルを使用して、印刷ページの書式設定とレイアウトを保存するか、.rtfファイルを使用することをおすすめします。

このファイルがヘルプまたはドキュメントファイルを構成する場合は、.chmファイルを代わりに使用する必要があります。このファイルは、Windows 98以降のすべてのWindowsバージョンで構造化され完全にサポートされています。また、.chmファイルをWinForms 「これは何?」ボタンとツールチップ(.chmファイルは、Windows Vistaの後にWindowsでサポートされていないファイル.hlpと混同しないでください)。

関連する問題