2010/05/05

ExerbでExe化したプログラムからIconデータを参照する

Rubyのスクリプトは ExerbでExeファイルにできるのだが、Exeファイルに含まれているIconデータを使おうとして苦労したので、まとめてみる。

まず、ExeファイルにIconデータを含ませる方法。Exerb Projectのページ(レシピリファレンス)にあるように、resourceブロックにicoファイルを記述すればよい。

プログラム中でresourceブロックに指定したicoファイルのデータを扱うにはどうすればよいか?下記のようなコードでicoデータを扱える。


  if defined? ExerbRuntime
      extractIconA = Win32API.new('shell32','ExtractIconA',
                                  'LPI','L')
      #*.exeからアイコン情報を取得
      ICON = extractIconA.Call(0, 
                      ExerbRuntime.filepath+File.dirname($0),
                      0)
  end

こうして取得したicoデータは、例えば create_trayicon()の第1引数に渡せば、 タスクトレイに表示されるアイコンとなる。

初め、ExerbRuntime.load_icon(0)とやってうまくいかなかった。引数の0が適切でなかったのかもしれないが、どうすればよかったのだろうか?



0 件のコメント :

コメントを投稿

Comments on Google+: