.exeファイルのアイコンを変更するには?


マサタロウ  2007-03-08 11:26:58  No: 135690

Visual Basic 5.0を使用しています。
コンパイルして作成した.exeファイルのアイコンを
変更する方法を考えています。
コンパイルしたファイルのアイコンを、
別のコンパイルした.exeファイルから変更する
様にしたいです。


ぎんが  2007-03-09 06:13:42  No: 135691

ソースを持っていないEXEのアイコンを変えたいってことですか?


魔界の仮面弁士  2007-03-09 08:07:51  No: 135692

手動操作で良いなら、PE Explorer 等のソフトを使って書き換えるとか。
http://www.heaventools.com/overview.htm

プログラムからとなると、exe ファイルの仕様について書かれた
http://www.microsoft.com/whdc/system/platform/firmware/PECOFF.mspx
http://www.interq.or.jp/chubu/r6/reasm/PE_FORMAT/intro.html
などの資料を参考に、Get# / Put# でゴリゴリすればできる……かも?


マサタロウ  2007-03-09 23:53:59  No: 135693

どうも。はじめまして。

>>ぎんが 様
  どちらの.exeファイルもオブジェクトを持ち、コードを記述します。

>>魔界の仮面弁士 様
  ページを見ましたが、英文で理解できなかったのと、
  .exeファイルの仕様についての記述を理解できませんでした。


通ってみた  2007-03-10 02:12:53  No: 135694

両方共自作のプログラムであれば、DDEやらでデータを渡して受け取ったら変更するようにすればいいと思いますが

>ページを見ましたが、英文で理解できなかったのと、
>.exeファイルの仕様についての記述を理解できませんでした。

がんばってください


マサタロウ  2007-03-10 11:51:11  No: 135695

>アイコンを変更する
とは、フォルダ内に表示されるアイコンの変更
のことで、実行時に最小化した時のアイコンの変更は
別の方法でやろうと思います。
DDEはEXEファイルを開かないといけない様なので、
ファイルを閉じた状態のフォルダに表示される
EXEファイルのアイコンの変更に使用できるのでしょうか?


へろ  2007-03-10 19:22:25  No: 135696

> DDEは(〜中略〜)EXEファイルのアイコンの変更に使用できるのでしょうか?

DDE自体はアイコンの件と関係ないと思います。
exe間でデータ通信を行う手段のひとつですので、おそらく

DDEで外から「アイコン画像と変更命令」を送り
それを受けたexe自身が自分のアイコンリソースを書き換える、

といった話でしょう。ただ、そうやっても質問の件はたぶん解決しません。
自身のリソースを「読む」ほうの関数ならあります(LoadRes〜関数)が、
リソースを「書き換える」関数はVBの組み込みにもAPIにもないですから。

既にコンパイルされているexe内のリソース書き換えは自前で行うしかないはず。
バイナリアクセスでexeファイルを開いてゴリゴリです。

その実行方法は既に魔界の仮面弁士さんのおっしゃるとおり。
提示されている「PE Explorer」はいわゆるリソースエディタです。
「リソースハッカー」「XN esourceEditor」などでも同等の事が出来ます。
これらのソフトはexe内のリソースファイルの中を閲覧するツールで、
アイコンや文字列やファイルなどを個別に抽出したり書き換えたり出来るものです。

これを使えば、アイコンを替える事は出来ます。ただし手動です。
どうしてもプログラムから同じ事をしたいなら、これらのツール作者が行った事と同じ事をするしか無いです。
つまりリソースファイルとは何なのかを理解し、どう書き換えればアイコンが替えられるのかを理解し、リソースファイルはexeファイルの中にどのように埋め込まれているのかを理解し、exe拡張子のファイルをバイナリで開いてゴリゴリ書き換えるという事です。
間違えればexeは正常に起動しないどころか、通常考えられないような動作をするかも。

> .exeファイルの仕様についての記述を理解できませんでした。

なら、それを自作のプログラムで行うのはまず無理ではないかと。
全部理解しろとは言いませんが、せめてリソースとは何かくらいは。

Windowsのエクスプローラやフォルダで表示されるアイコンの実体は、
ファイル内のリソース中に格納されているアイコンです。(exeファイルなの場合)
このため、質問内容を実行するにはリソースを書き換えるという方法が必要になります。


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加