C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

EXEファイルに複数のアイコンを埋め込むには

[トピック内 15 記事 (1 - 15 表示)]  << 0 >>

■93237 / inTopicNo.1)  EXEファイルに複数のアイコンを埋め込むには
  
□投稿者/ じる (6回)-(2019/11/28(Thu) 22:52:00)

分類:[.NET 全般] 

VB2015で作成したプログラムで
プログラム自体のアイコンと
拡張子の関連付けしたファイル用にアイコンの
両方を、EXEファイルに埋め込みたいと考えています。



EXEファイルに複数のアイコンを埋め込む方法は
https://dobon.net/vb/dotnet/programing/embedwin32resource.html
このページに記述されているのですが、


1.Visual Studioのメニューから「ファイル」-「新規作成」-「ファイル」を選択する。
2.下図のようなダイアログが表示されるので、「ネイティブリソーステンプレート」を選択し、「開く」ボタンを押す。


というところまで進むと、

https://121ware.com/qasearch/1007/doc/answer/image/020/020781/020781a.png

というダイアログが表示され、
このページに書かれた手順を先に進めることができません。

どうすれば良いですか?

また、これはWindowsXP時代に古い記事ですが、
新しい方法ならもっと簡単に埋め込むことはできないでしょうか?


引用返信 編集キー/
■93240 / inTopicNo.2)  Re[1]: EXEファイルに複数のアイコンを埋め込むには
□投稿者/ 774RR (754回)-(2019/11/29(Fri) 09:28:33)
VisualStudio 2019 で VB FormApp の新規プロジェクトつくってみたけど
ソリューションエクスプローラー上で追加→新しい項目→アイコンファイルというメニューが選べたっす。
(それ以上のテストはしてない)

VS2015 で同じことができるかは未調査、やってみる価値はあるかも
引用返信 編集キー/
■93241 / inTopicNo.3)  Re[2]: EXEファイルに複数のアイコンを埋め込むには
□投稿者/ Hongliang (924回)-(2019/11/29(Fri) 09:40:01)
Express版のVisual Studioではありませんか? これにはリソースエディタ機能は含まれていないので、Visual Studioを使っての作業はできません。
ほかの手段を使って(提示ページであればrc.exeなど)リソースファイルを作成する必要があります。
引用返信 編集キー/
■93247 / inTopicNo.4)  Re[3]: EXEファイルに複数のアイコンを埋め込むには
□投稿者/ じる (7回)-(2019/11/29(Fri) 17:56:13)
VS Community 2015です。


私の環境では

ソリューションエクスプローラー上で追加→新しい項目→

でアイコンファイルは見つかりませんでした。

D&Dで読み込んで
リソースファイルとして登録する方法だと
アイコンして使うことはできないのでしょうか・・・?





引用返信 編集キー/
■93250 / inTopicNo.5)  Re[4]: EXEファイルに複数のアイコンを埋め込むには
□投稿者/ Azulean (1107回)-(2019/11/29(Fri) 21:38:05)
2019/11/29(Fri) 21:38:29 編集(投稿者)

No93247 (じる さん) に返信
> VS Community 2015です。

たとえば、C++ 系の言語をインストールしていないとか。
リソースエディタは C# や VB.NET の機能ではないので、C++ 系のコンポーネントが入っていない場合は使えないのかもしれません。

// 2015 から標準で C++ は入らない
引用返信 編集キー/
■93251 / inTopicNo.6)  Re[5]: EXEファイルに複数のアイコンを埋め込むには
□投稿者/ じる (8回)-(2019/11/30(Sat) 12:41:26)
ありがとうございます。

仰る通り、C++をインストールすると

ネイティブリソーステンプレート
を開けるようになりました。

まず、774RRさんが仰るように、アイコンファイルも試してみましたが、
こちらはアイコンの編集を行うだけで、リソースファイルとして埋め込む機能ではないように思います。


https://dobon.net/vb/dotnet/programing/embedwin32resource.html
http://hanatyan.sakura.ne.jp/vb2005/vb2013icon01.htm

それでこれらのページに従って手順を進めていったのですが、
ソリューションエクスプローラーで右クリックして
プロジェクトのアンロードをしようとしたのですが、
なぜか私の環境では、右クリックメニューにアンロードが表示されませんでした。

そのため、VSを終了した状態でvbprojファイルをメモ帳で開いて、
  <PropertyGroup>
    <Win32Resource>ResTempl1.res</Win32Resource>
  </PropertyGroup>

を指定の場所に書き入れました。

それでVSを再起動してビルドしようとしたのですが、

1>vbc : error BC2023: /win32icon と /win32resource を両方指定することはできません。
1>vbc : error BC37216: 競合するオプションが指定されました: Win32 リソース ファイル、Win32 マニフェスト。
========== すべてリビルド: 0 正常終了、1 失敗、0 スキップ ==========

というエラーが出て、実行することができません。

どのようにすれば良いですか?

引用返信 編集キー/
■93267 / inTopicNo.7)  Re[6]: EXEファイルに複数のアイコンを埋め込むには
□投稿者/ じる (9回)-(2019/12/01(Sun) 14:20:57)
https://docs.microsoft.com/ja-jp/dotnet/visual-basic/misc/bc2023

このページに
エラーの詳細が書かれてあるのですが
どうやってwin32icon のオプションを無効化するのか分かりません。

アプリケーションのアイコンの設定を規定のアイコンに変えて見ましたが
やはりうまくいきませんでした。

どうすれば良いですか?

引用返信 編集キー/
■93284 / inTopicNo.8)  Re[7]: EXEファイルに複数のアイコンを埋め込むには
□投稿者/ Hongliang (928回)-(2019/12/02(Mon) 16:31:34)
2019/12/02(Mon) 16:36:24 編集(投稿者)

/Win32Iconは、プロジェクトのプロパティのアプリケーションタブでアイコンを(既定のアイコン)に設定すれば消去できるかと思います。
もし駄目であれば、.vbproj内の<ApplicationIcon>...</ApplicationIcon>を削除してみてください。
/Win32Resourceを使う場合、Explorer等で表示されるアプリケーションのアイコンは、.resの中でIDが一番小さいアイコン(だったかな? とりあえず、.resの中のアイコンのどれか)になります。

マニフェストについては、.vbproj内の<ApplicationManifest>...</ApplicationManifest>を削除すればとりあえずビルドはできるようになるかと思います。
ちゃんとやろうとするならapp.manifestの内容を.resの中に取り込まないといけませんが…。
引用返信 編集キー/
■93285 / inTopicNo.9)  Re[8]: EXEファイルに複数のアイコンを埋め込むには
□投稿者/ じる (10回)-(2019/12/02(Mon) 20:41:59)
ありがとうございます。

昨日やった時は、
  <PropertyGroup>
    <Win32Resource>ResTempl1.res</Win32Resource>
  </PropertyGroup>
を入れたとしてもビルドはできませんが、VSの起動だけはできたのですが、
いまやると以下のエラーが出て起動すらできません
どうすれば良いでしょうか?

: error : 要素 <Project> の下の要素 <#text> は認識されていません。 xxxx.vbproj


引用返信 編集キー/
■93286 / inTopicNo.10)  Re[9]: EXEファイルに複数のアイコンを埋め込むには
□投稿者/ 魔界の仮面弁士 (2501回)-(2019/12/03(Tue) 08:47:50)
No93285 (じる さん) に返信
> : error : 要素 <Project> の下の要素 <#text> は認識されていません。 xxxx.vbproj

<Project> 要素の下に、空白文字(タブ、改行、スペース)以外のテキストが
誤って混入しているようです。バックアップしておいた .vbproj と比較してみてください。
引用返信 編集キー/
■93302 / inTopicNo.11)  Re[10]: EXEファイルに複数のアイコンを埋め込むには
□投稿者/ じる (11回)-(2019/12/03(Tue) 22:05:00)
Hongliangさん
魔界の仮面弁士 さん


うまく表示できました。
どうもありがとうございます。

> ちゃんとやろうとするならapp.manifestの内容を.resの中に取り込まないといけませんが…。

これが少し気になるのですが、
app.manifestの内容を.resの中に取り込まなかった場合、どうなりますか?

引用返信 編集キー/
■93477 / inTopicNo.12)  Re[11]: EXEファイルに複数のアイコンを埋め込むには
□投稿者/ じる (12回)-(2019/12/13(Fri) 19:18:43)
ここで、質問させていただいのですが、
問題は解決したと思ったのですが、
一つ問題が発生しました。

教えていただいた方法で
二つのファイルを取り込むことはできたのですが、
index0をEXEファイル表示用のアイコン
index1を拡張子の関連付けしたファイル用のアイコン
として使っているのですが、
拡張子の関連付けしたファイルの方は問題ないのですが、

アイコンファイルは16,32,64,128,256のマルチアイコンに設定してあるのですが、
肝心のEXEファイルにはなぜか32x32 pxのアイコンしか埋め込まれません。
VS上のアイコンエディタで確認すると
これらの5種類のアイコンが埋め込まれていることが確認できるのですが、
ファイルサイズからしてもresファイルにもマルチアイコンが含まれていると思います。
しかし、なぜかビルドしてみるとエクスプローラー上で解像度の小さなアイコンしか表示されません。
これは一体なぜでしょうか?
大きなアイコンも表示するにはどうしたら良いですか?
アイコンキャッシュをリセットしたりなどもしてみましたが
うまくいきませんでした。

引用返信 編集キー/
■93499 / inTopicNo.13)  Re[12]: EXEファイルに複数のアイコンを埋め込むには
□投稿者/ 魔界の仮面弁士 (2530回)-(2019/12/15(Sun) 18:57:24)
No93477 (じる さん) に返信
> エクスプローラー上で解像度の小さなアイコンしか表示されません。

エクスプローラーのアイコンビューで、「中アイコン」や「大アイコン」を
指定した場合も、小さいアイコンが拡大表示されてしまいますか?

https://www.ipentec.com/document/windows-explorer-types-of-icon-selected-for-explorer-icon-display
https://blog.goo.ne.jp/apoke/e/0fbade2345c02b66debb1238f514c19f
http://multix.jp/icon-view-size/


> アイコンファイルは16,32,64,128,256のマルチアイコンに設定してあるのですが、

解像度の高いアイコンと低いアイコンの格納順を入れ替えてみたら変わりますか?
(影響があるかどうかは未確認ですが)

昔は、低スペック環境を優先するためあのか、低解像度アイコンを先に格納したものが
多かったのですが、最近は高解像度版が先に格納されている場合もあるようで。


Visual Studio 2015 Image Library - "Edit_grey.ico"
https://www.microsoft.com/en-us/download/details.aspx?id=35825

#0: 32bit, 256×256 背景色 A=00,R=00,G=00,B=00
#1: 8 bit, 48 × 48
#2: 8 bit, 32 × 32
#3: 8 bit, 16 × 16
#4: 32bit, 256×256 背景色 A=00,R=C0,G=C0,B=C0
#5: 32bit, 64 × 64
#6: 32bit, 48 × 48
#7: 32bit, 32 × 32
#8: 32bit, 16 × 16


Visual Studio 2015 Image Library - "Azure_blue.ico"

#0: 8 bit, 256×256
#1: 8 bit, 64 × 64
#2: 8 bit, 48 × 48
#3: 8 bit, 32 × 32
#4: 8 bit, 24 × 24
#5: 32bit, 256×256
#6: 32bit, 64 × 64
#7: 32bit, 48 × 48
#8: 32bit, 32 × 32
#9: 32bit, 24 × 24
#10:32bit, 16 × 16


Visual Studio 6.0 Image Library - "ARW02DN.ICO"

#0: 4 bit, 32 × 32
#1: 4 bit, 16 × 16


Visual Studio 6.0 Image Library - "CLOCK05.ICO"

#0: 1 bit, 32 × 32
#1: 4 bit, 32 × 32 平面的デザイン
#2: 4 bit, 32 × 32 立体的デザイン


Windows 10 CALC.EXE version 10.0.18362.1 - "IDI_CALC"

#0: 32bit, 16 × 16
#1: 32bit, 32 × 32
#2: 32bit, 48 × 48
引用返信 編集キー/
■93500 / inTopicNo.14)  Re[13]: EXEファイルに複数のアイコンを埋め込むには
□投稿者/ じる (13回)-(2019/12/15(Sun) 21:38:49)
> エクスプローラーのアイコンビューで、「中アイコン」や「大アイコン」を
> 指定した場合も、小さいアイコンが拡大表示されてしまいますか?

そういうことです。



> 解像度の高いアイコンと低いアイコンの格納順を入れ替えてみたら変わりますか?

自分で作成したPNGファイルからImageMagickを使ってICOファイルを生成しているのですが、
格納順は不明です。
どのようにすれば確認できますか?
VS上で見ると上から順に256→16になっていますが、
これは格納順なのでしょうか?
D&Dしてもアイコンの移動はできませんが、
どのようにすれば格納順を変更できますか?

引用返信 編集キー/
■93564 / inTopicNo.15)  Re[14]: EXEファイルに複数のアイコンを埋め込むには
□投稿者/ じる (15回)-(2019/12/22(Sun) 15:27:44)
試してみたのですが、
仰る通り、アイコンサイズを降順ではなく、昇順にすると
EXEに埋め込んだアイコン二つとも正常にマルチアイコンとして表示されるようになりました。

ただ、大きな問題ではないのですが、気になる点としては
アイコンサイズを降順とした場合
ICOファイルをエクスプローラーで見るとマルチアイコンとして正常に表示されていたのですが、
昇順にすると16x16の小さなアイコンしか表示されません。

また、なぜか、
マルチアイコンを全てPNGにすると上記の問題は起こるのですが、
ICO特有のビットマップ形式にするとこの問題は起こらなくなります。
その分ファイルサイズが大きくなってしまいますが。

これはWindowsの仕様上、こういうものなのでしょうか?


引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ