ホーム
|
アプリケーション | Tips | ダウンロード | プログラム
| コラム

CBアプリ工房


アプリケーション > ランチャーの作り方を教えて [ 1 | 2 ]

ランチャーの作り方を教えて - 2/2

更新 : 2009/01/05

 


まず OpenDialog1 からファイル名を取得し、Image1 にアイコンを表示できるように TPicture オブジェクト(アイコン、ビットマップなどのグラフィックが入っています)の内容をアイコングラフィック(.ico)に指定しておきます(Picture->Icon)。
そして ExtractAssociatedIcon 関数で選ばれたファイルのアイコンハンドルを取得します。

この Win32API 関数は、Windows によってアプリケーションに提供されるハンドル(HInstance)と実行可能パス付きファイル名の入る文字列(OpenDialog1->FileName.c_str())、アイコンの ID が格納されるポインタ(&n)を指定することで、関連付けられているアイコンのハンドルを返します。

以上で取得したアイコンが Image1 に表示されます。
取得したファイル名を変数 appname に代入しておきます。


void __fastcall TForm1::Save1Click(TObject *Sender)
{
    WORD n;
    // ファイル名が取得できなければ終了
    if (!OpenDialog1->Execute()) return;

    // Image1 にアイコンを表示
    Image1->Picture->Icon->Handle = 
                          ExtractAssociatedIcon(
                          HInstance,
                          OpenDialog1->FileName.c_str(), 
                          &n);
    // ファイル名を保持
    appname = OpenDialog1->FileName;
}

ついで、ポップアップメニューにアプリを削除するコードを追加します。

削除コードは、appname に登録したファイル名を削除して、Image1 に表示されているアイコンを消します。


void __fastcall TForm1::Delete1Click(TObject *Sender) 
{
    // ファイル名を削除
    appname = "";

    // アイコンを消す
    Image1->Picture = NULL;
}

最後に、ランチャーに登録したアプリを起動するコードを書きます。

アプリ名が登録されていなければイベントを終わりにします。
登録されていれば、ShellExecute 関数に、名前を渡してアプリを起動させます。

関数の引数を順番に見ていきます。
Application->Handle ですが、このプロパティでアプリケーションのメインフォームのウィンドウハンドルにアクセスできます。
次の引数には、"open" か "print" が指定でき、appname.c_str() は、オープンするファイル名。NULL 二つは、実行可能ファイルのパラメータとデフォルトディレクトリです。最後の引数には、オープン時にファイルを表示するかどうかを指定します。


void __fastcall TForm1::Image1Click(TObject *Sender) 
{
    // 登録ファイルがなければ終了
    if (appname == "") return; 

    //アプリを起動
    ShellExecute(Application->Handle,
                 "open",
                 appname.c_str(),
                 NULL,
                 NULL,
                 SW_SHOW);
}

コンパイルして実行してみてください。ランチャーがちゃんと機能しましたか?
ランチャーの作成は以上です。お疲れ様でした。



今後の課題
今回作成したランチャーは、実用で使うには機能不足です。
実際には、複数アプリの登録内容が保持でき、再起動後復元されなければ意味がありません。また、アプリの登録/削除/移動などがマウスのドラッグ&ドロップで操作できれば便利です。

これらを考えるとまだまだ工夫する必要があります。時間のある方はぜひ拡張してみてください。


ダウンロードのページからフリーウエア  Launch2 がダウンロードできます。参考にしてください。イメージ画像を貼り付けておきます。

ダウンロードソフト Launch2

以上のコードは、ご自由にお使いいただいて結構です。ただし、コードを使用した結果、問題が生じても責任はいっさい負いかねますのでご了承ください。



[ ホーム | ページトップ | 前へ | ブック | リンク | サイトマップ ]
Copyright(c) 2003 Shibu All rights reserved.