Entering Passive Mode

カテゴリ 'C++, C' の記事
< 1 2 3 4 5 6 >

フォルダリンクを作成する

さて、フォルダリンクをプログラムから作成してみよう。
手作業でも作成できるのだが、少し手間がかかるので、
別途ユーティリティ化しておけば便利である。

まずは、ヘッダファイル。カテゴリは、FolderLink とし、
作成関数は FolderLinkCreate と命名することにする。

========== folderlink.h ==========

/* インクルードガード */
#ifndef folderlink_h_included
#define folderlink_h_included

フォルダリンクを利用する

フォルダリンク 中身

今まで紹介したフォルダの特殊化を利用すると、
色々な場所の特殊フォルダやネットワークプレースを
シェルのフォルダツリーの好きな場所に集めることができる。

例えば、デスクトップやマイドキュメントなどに、
特殊化したフォルダを作成しておけば、
通常のショートカットと同じように使うことができる上に、
エクスプローラでツリー表示した際に、
そのままフォルダを展開できるというメリットがある。

では、幾つか作ってみよう。

ネットワークプレース

ネットワークプレース

シェルの名前空間には、「マイネットワーク」がある。
これも特殊フォルダだ。

確か Windows 2000 以降だったかな。
「ネットワークプレース」の追加という機能が追加され、
ファイルサーバの共有フォルダや FTP サーバ、
HTTP の WEBDAV などのアイコンを登録することができる。

これらのアイコンは、ネットワークプレースと呼ばれ、
好きな名前をつけて登録することができる。
これを使うと、ネットワーク上にある色々なフォルダに、
エクスプローラから簡単にアクセスできるようになるのだ。

ファイルフォルダの特殊化

特殊フォルダ 特殊化解除

シェル名前空間を拡張するためには、
高度なプログラミングと設定が必要になる。
特に、自分が作成した新しい特殊フォルダを、
名前空間の自由な場所に追加するのは大変である。

そのため Windows には、既存のファイルフォルダを
特殊なフォルダとして機能させるための仕組みがある。
これらのフォルダは、基本的にはファイルフォルダなのだが、
エクスプローラ上で表示すると通常の表示とは異なる。

例えば、フォント、タスク、アセンブリ、
インターネット一時キャッシュ、オフラインフォルダ等だ。

ディレクトリとフォルダ

エクスプローラ

ディレクトリとフォルダ。この言葉の違いは何だろうか。

Windows では、主にフォルダという表現が使われているが、
その前身である MS-DOS や UNIX では、
ディレクトリという表現が使われている。

ディレクトリとは、ファイルを分類・整理するため、
複数のファイルをまとめる事ができる入れ物である。
ディレクトリには別のディレクトリも格納できるため、
ファイルを木構造に階層化することができる。
…とまあ、この程度は基礎なので解説するまでもないか。

ショートカットを作成する

インストーラやランチャーなどのプログラムでは、
ショートカットを作成する必要に迫られる場合がある。
今度は、ショートカットを作ってみよう。

まずはプロトタイプ宣言。

========== lnkfile.h (partial) ==========

HRESULT ShortcutCreate(const wchar_t *fileName, const wchar_t *target);

========== end of lnkfile.h (partial) ==========

実際にファイルから読み出す

続いて、関数を呼び出す側を作ろう。

プログラムとして実行できるように、
C 言語の起動関数を定義し、
実際にコンパイルして実行してみよう。

起動関数は、program.c で定義することにする。
Visual C++ + Windows 開発専用なので、
Unicode に特化して書いてみよう。

========== program.c ==========

ショートカットを読む

昨日の続き。

最近の言語では、クラスが名前空間で整理されており、
利用側が空間やクラス単位で宣言を取り込むことができる。

C 言語では、関数を使う側のファイルで、
関数のプロトタイプ宣言が含まれたヘッダファイルを、
必要なだけ選択して取り込む必要がある。

そのためには、どの関数がどのヘッダに宣言されているか、
事前にしっておく必要がある。
まあ、片っ端から取り込むことはできるのだが、
それをするとコンパイル時間が増加してしまう。

ショートカットを C 言語で読む準備

では、C 言語とWINAPI を使って、
ショートカットファイルを読んでみよう
以前に、C# でショートカットを読んだが、
今日はこれの C 言語版である。

http://mixi.jp/view_diary.pl?id=166475473&owner_id=2300658

前にやったのに、また取り上げるのはちょっと嫌だが、
C# では裏で隠蔽してくれていたことを、
C 言語では全て自力で実装する必要があるため、
ちょうど良い対比となるからいいとするか。

Windows のショートカット

ショートカット

Windows にも基本的なリンク機能が存在する。
これは「ショートカット」と呼ばれるファイルだ。

・プログラム情報ファイル (*.pif)
・ショートカット (*.lnk)
・インターネットショートカット (*.url)

これらのショートカットは、ファイルの一種であり、
それぞれ専用の拡張子を持つ。

プログラム情報ファイルは、MS-DOS ファイル用であり、
実行時に割り当てるメモリ量などの情報を内部に持つ。

< 1 2 3 4 5 6 >
このページのトップへ戻る
© 2008 Project Loafer/Project Fireball and all blog writers. Powered by Nucleus CMS