ちょっと楽に・・・
10年ほど前のちょっと懐かしいプログラムをみつけました。
エコは気にしつつも、印刷した書類が必要な機会があります。それも複数あると結構面倒な作業なんですよね。
コラムを書くにあたり、何かネタがないかと探していたら、10年近く前に作成した懐かしいソースが見つかりましたので紹介したいと思います。
当時、大量のファイルをたびたび印刷する必要があり、ファイルを開く、印刷をする、印刷が終わったらまたファイルを開く・・・を繰り返すのがとても面倒なため、なにか良い方法はないかと思い、自分で作ることにしました。
機能としては非常に単純で、30分もあれば作成できる簡単なプログラムです。
準備
このプログラムではShellExecuteというWindowsのAPIを使用します。APIとはApplication Program Interfaceの略で、簡単にいうとOSが用意している関数のことです。もしこのAPIが無い場合は、プログラムがファイルに関連付けられているアプリケーションを探し、そのアプリケーションで開く必要がありますが、このAPIを使うと1行で処理が可能です。
このShellExecuteというAPIを使うと、テキストファイル(*.txt)を「メモ帳」で開いたり、画像ファイル(*.bmp)を「ペイント」で開くなど、ファイルの拡張子に関連付けられたアプリケーションで、ファイルを実行することができます。また、引数をかえることにより、関連付けられたアプリケーションで印刷を行うことができます。今回のアプリケーションでは、この機能を使い、ファイルの拡張子によって、関連付けられたアプリケーションからの印刷を実現しています。
プログラミング
このプログラムは、元BorlandのDelphiという言語を使って作成しています。
まずはフォームにボタン、ドライブコンボボックス、ディレクトリ一覧、ファイル一覧のコンポーネントを配置し、ドライブ、ディレクトリ、ファイルの一覧が連動するように設定します。
次に印刷の機能の実装部分ですが、以下がボタンのClickイベントにソースになります。
i: integer;
begin
for i := 0 to FileListBox.Items.Count - 1 do begin
ShellExecute(Handle,'PRINT',pchar(FileListBox.Items.Strings[i]),'','',SW_SHOW);
end;
end;
ファイルの一覧分だけループを回し、ShellExecuteを呼ぶだけのシンプルなソースですが、これだけでまとめて印刷の機能が実現できています。これ以外のソースは一切ありません。自分用に作成したため、使い勝手はまったく考えていませんが・・・

また、ファイルを開くのと同じようにファイル名にURLを指定すると、指定したURLが関連付けられたブラウザーで起動することもできます。
最後に
非常に簡単なプログラムではありますが、このプログラムを使うことにより、ひたすらファイルを開き、印刷を行う単純作業から開放されます。仕事としてプログラムを書いていると楽しいことよりつらいことの方が多いこともありますが、本来プログラムというのは如何に楽をするかを考える、とても楽しいことだと思っています。
プログラムに興味のある方は、なにか身の回りの便利なツールから作ってみてはいかがでしょうか。

