ものえおさむ

C#で作る、あなただけのメモ帳 ~最終回~

2013-01-08 12:00:00

はじめに
このブログでは、"Windows アプリケーションってどう作るのかよくわからない" といったプログラマ向けに Visual C# 2008 Express Edition (無償) を使用した Windows アプリケーションに作り方について説明していました。


約 3 年ぶりの更新になります。


そしてようやくの最終回です。


なぜ最終回を書くまで、こんなに時間がかかったのかというと、私の担当するミッションがインターネット関連に変わるとともに、業務で MSDN ブログを始めることとなり、 そちらの方に注力することになったためです。


それから数年、てっきりこのブログは削除されているだろうと思っていたのですが、先日 Twitter で、このブログを読んでいたという方から「最終回を書いてほしい」というリクエストがあり、自分なりに心残りもあったので更新することになったわけです。


今回の記事は、前回の記事 (3 年以上前ですが) に書いたとおり、このブログで紹介したサンプルをカスタマイズしてしばらく私が実際に使っていたものの紹介になります。


もちろんアプリケーションの機能を説明するだけでなく、プロジェクトファイルをダウンロードして Visual Studio 2012 を使用して実際の動作とコードを確認することができます。

Visual Studio 2012 にも無償の Express エディションがあり、以下のリンクから入手することができます。


ダウンロード | Microsoft Visual Studio 2012
http://www.microsoft.com/visualstudio/jpn/downloads#d-2012-express


デスクトップ アプリケーションを開発するには Visual Studio 2012 Express for Windows Desktop を使用します。


この記事で紹介するサンプルプログラムのプロジェクトは以下から入手できますので、Visual Studio 2012 Express for Windows Desktop がインストールされた PC にダウンロードしてください。


ダウンロードした zip ファイル解凍し、ファイル myEditor.sln をダブルクリックしてソリューションを Visual Studio 2012 にロードします。


キーボードの [F5] キーを押下することでアプリケーションをデバッグ実行することができます。


 ちなみに今回のソリューションに含まれるファイル類は、2009 年当時に Visual Studio 2008  で作成したものを Visual Studio 2012 でコンバートしたものです。


 


C#で作る、あなただけのメモ帳サンプル- カスタマイズ例-



(サンプルアプリケーションを起動したところ)


今回のサンプル アプリケーションには、これまでこのブログで紹介してきたサンプルに以下の機能を追加しています。


なお画面ショットのダイアログを表示するには、サンプルアプリケーションのメニューで、[ツール] - [オプション] を選択します。


扱うファイルの拡張子の追加と削除機能


アプリケーションで編集対象とするファイルの拡張子を自由に追加/削除することができるようになっています。


具体的には、ファイルを開くダイアログボックスの、ファイルの種類を示すドロップダウンリストの内容を任意で指定することが可能です。


これにより未知の拡張子が付けられたテキスト形式のファイルを編集するときでも、いちいちアプリケーションのソースを変更してフィルタの種類を増やす必要はありません。



ファイルの暗号化


保存の際にファイルを NTFS 暗号化するか否かを選択できるようになっています。



NTFS 暗号化は、NTFS の暗号化ファイルシステム (EFS: Encrypting File System) の機能を利用するもので、この機能を使用すると、保存時に使用したユーザーアカウント以外からファイルをオープンすることができなくなります。


ただし、この機能は、OS がユーザーアカウントを管理する機能を搭載していることが前提であるため、Windows XP の Home エディションなどでは使用することはできませんのでご注意ください。


NTFS 暗号化の詳細については以下の内容をご参照ください。


暗号化ファイル システムの最善の使用方法
http://support.microsoft.com/kb/223316/ja


実装は、File クラスの Encrypt メソッドを使用しています。


詳細な説明と、使い方を示すサンプルコードについて以下のドキュメントをご参照ください。


File.Encrypt メソッド
http://msdn.microsoft.com/ja-jp/library/system.io.file.encrypt(v=VS.80).aspx


※画面ショットにある [Base 64 デコード...] についてはあとで説明します。
 


ファイルの自動保存


編集中のファイルを一定間隔で自動保存する機能を搭載しています。



編集中のファイルに上書きするか、作業ファイルに保存するか選択することができます。


作業ファイルに自動保存するようにした場合は、アプリケーションの exe のあるフォルダ下に自動的に作成される AutoSaved という名前のフォルダに作業中の内容が保存されます。


AutoSaved フォルダのファイルは、ファイルの保存、アプリケーションの正常終了時に自動的に削除されますが、アプリケーションの異常終了などでファイルが残っている場合は、アプリケーションの次回起動時に作業ファイルの内容をロードするかどうかを聞いてきます。


サンプル アプリケーションでは、時間のカウントにタイマーコントロールを使用し、時間間隔の指定は Interval プロパティで、保存処理は Tick イベントで行っています、


タイマーについての詳しい説明と、使い方を示すサンプルコードについては、以下のドキュメントをご参照ください。


Timer クラス
http://msdn.microsoft.com/ja-jp/library/system.windows.forms.timer(v=VS.80).aspx


 


バイナリファイルの Base 64 エンコードとデコード


画像などの非テキストファイルを Base 64 エンコードし、テキストに変換する機能、そしてデコードして元のファイル形式に戻す機能を搭載してします。


この機能を使用するには、サンプル アプリケーションのテキスト エディター部分に目的のファイルをドラッグします。


 


 テキスト エディター部分にテキスト ファイル以外のファイルをドラッグすると、Base 64 エンコードするかメッセージボックスが表示されるのでエンコードする場合は [OK] ボタンをクリックします。



[ファイル] - [名前を付けて保存] を選択すると、仮の拡張子 *.bs64 のついたファイル名が付きますが、自分でもとのファイル名と、どのようなファイルであるかを覚えているのであれば変更してしまっても構いません。


Base 64 エンコードされたデータを元の形式に戻すには、メニュー[ファイル] - [Base64 デコードして保存] を選択します。



この時のファイル名が、このアプリケーションが付けたものであれば、自動で元のファイル名が付けられますが、変更している場合は、明示的に正しい拡張子を含んだ名前を付ける必要があります。


 この Base 64 のエンコード、デコードは System.Convert クラスの ToBase64String メソッドと FromBase64String メソッドを使用しています。


詳細な説明と使い方を示すサンプルコードについては、以下のドキュメントをご参照ください。


Convert クラス
http://msdn.microsoft.com/ja-jp/library/system.convert(v=vs.80).aspx


 


----- ----- ----- ----- ----- -----


さて、長い期間にわたってお送りしてきました C# を使用したメモ帳の作成なのですが、3 年の期間を空けて経ってようやく最終回を迎えることができました。


私は今、Internet Explorer やWindows ストア アプリ ( Windows 8 の新しい UI で動作するアプリです) の技術啓発をメインで行っていますので、今後 Windows フォーム アプリケーションについてなにか記事を書くことはおそらくないでしょう。


MSDN ブログのほうでは Windows ストア アプリの作成方法ついて記事を書いていますので、Windows 8 で動作するアプリを作成してみたい、という方はぜひ覗いてみてください。


monoe's blog
http://blogs.msdn.com/b/osamum/archive/2012/12/12/windowsstreapps-youtube.aspx


最後に、このブログを見て C# を始めた、Windows アプリケーションを作るようになった、という方々とたまにお会いする機会がありますが、非常に嬉しいかぎりです。


これまでの記事が仕事であれ趣味であれ、皆様の開発のお役に立てたのなら幸いです。


ご精読ありがとうございました。


※マイクロソフト社員のコミュニティ参加について


 

※このエントリは ブロガーにより投稿されたものです。朝日インタラクティブ および ZDNet Japan編集部の見解・意向を示すものではありません。
  • 4件のコメント
#1 qp   2013-01-09 13:51:11
>この記事で紹介するサンプルプログラムのプロジェクトは以下から入手できますので、

リンクが見当たらないんですが・・・
#2 j9   2013-02-13 23:58:24
すみません。
検索機能の回からのサンプルプロジェクトをSkyDriveからダウンロードしたいのですが、
古すぎるのかもう存在しないとかでダウンロードできません。
何らかの手段でダウンロードできるようにしていただきたいのですが…。
#3 ものえおさむ   2013-06-05 17:14:39
なぜかリンクが切れてしまっているようです。
以下にさらに機能を追加したものをあげましたのでお使いください。
(しかし、今見るとコードがまー、汚くて。。すみません)
http://blogs.msdn.com/b/osamum/archive/2013/01/10/web-editor-of-osamum.aspx
#4 pp   2013-06-07 17:25:11
 偶然見つけました。
完結した後で見つかったのはラッキーだったかな。
楽しんで拝見しました。
ご苦労様でした。
  • 新着記事
  • 特集
  • ブログ