HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2007
0701
ららアイコンの抽出8解決


らら

リンク

2007/7/1(Sun) 18:43:30|NO.9207

任意に指定したアイコンをリソースとして含んでいる 「exe」や「dll」から特定の
アイコンを指定して、抽出して後に「.ico」として保存するには、どうすれば
よいのでしょうか?



この記事に返信する


Kpan

リンク

2007/7/2(Mon) 21:25:25|NO.9215

一番楽なのが、iconrewr.dllプラグインに放り投げる方法でしょうか?


プラグインなしでやるなら、Win32 API関数使ってイメージを描画して、
http://yokohama.cool.ne.jp/chokuto/urawaza/drawicon.html

それをICOフォーマット形式で出力させるような自前処理を用意する?
(標準命令にはBMP保存しかないので



らら

リンク

2007/7/2(Mon) 23:18:09|NO.9224

ご回答ありがとうございます

プラグインは使わずにしたいので、iconrewr.dll は使わない線で行きたいと思っています。
API関数でアイコンを抽出することはできますが、
API関数で描画した後、ICOフォーマット形式で出力させるような自前処理を用意する
方法が良く分かりません。単に、アイコンを描画し、拡張子を「.ico」にして
保存するわけでもないですし・・



anonimo

リンク

2007/7/3(Tue) 01:23:09|NO.9225

出来ないやつに限って「プラグインはなし」とか言うやつ多すぎない?
出来ないやつに限って「プラグインはなし」とか言うやつ多すぎない?

掲示板で教えてもらって「プラグインなしで作りました」とか自慢したいのか。
そう言うと「勉強のため」とか「コンテストではプラグインの使用は...」とか言い出すんだよな。
フォーマットもろくに調べもしないでよく「勉強のため」とか言えるなって思うよ。
結局「調べても見つかりませんでした」なんだろ?
調べられることも技術のうちなんだから、
調べられないなら黙ってプラグイン使えばいいって本当に思う。
こういう「プラグインなし」派の人はプラグイン有害信者なんだろうか。
何のためにプラグインがあると思ってるんだろう。
こんな作っても邪魔扱いしかされないプラグインを作ってる作者とか悲しいだろうね。



pizza

リンク

2007/7/3(Tue) 02:53:05|NO.9230

↓でも保存出来るみたいです。(Me,HSP3.0aで確認しました)


#include "shell32.as" #uselib "ole32.dll" #func IIDFromString "IIDFromString" wstr, var #uselib "shlwapi.dll" #func SHCreateStreamOnFile "SHCreateStreamOnFileA" sptr, int, int #uselib "oleaut32.dll" #func OleCreatePictureIndirect "OleCreatePictureIndirect" int, int, int, int #define IID_IPicture "{7BF80980-BF32-101A-8BBB-00AA00300CAB}" #usecom IPicture IID_IPicture #comfunc IPicture_SaveAsFile 15 comobj, int, int #enum PICTYPE_ICON = 3 #define STGM_READWRITE 2 #define STGM_CREATE 0x1000 dimtype pic, vartype("comobj"), 1 dimtype stream, vartype("comobj"), 1 dim pictdesc, 5 dialog "ico", 17 if stat == 0 : end path = refstr ext = getpath(path, 2) if ext != ".ico" : path += ".ico" // 電卓のアイコン取得 ExtractIconEx "calc.exe", 0, varptr(hIcon), 0, 1 if hIcon == 0 : end // アイコンハンドルからピクチャオブジェクト作成 pictdesc(0) = 20 // 構造体のサイズ pictdesc(1) = PICTYPE_ICON pictdesc(2) = hIcon // 保存したいアイコンのハンドル dim iid, 4 IIDFromString IID_IPicture, iid OleCreatePictureIndirect varptr(pictdesc), varptr(iid), 1, varptr(pic) if varuse(pic) == 0 : goto *lb_end // ストリーム作成 SHCreateStreamOnFile path, STGM_READWRITE|STGM_CREATE, varptr(stream) if varuse(stream) == 0 : goto *lb_end // 保存 IPicture_SaveAsFile pic, stream, 1, varptr(size) mes "保存しました" *lb_end if varuse(pic) : delcom pic if varuse(stream) : delcom stream stop



誰かさん

リンク

2007/7/3(Tue) 03:11:11|NO.9231

pizzaさんありがとうございます。
自分で調べるの面倒だったんでここで解答でるの待ってました。
これからもぼくの代わりに調べてください。お願いします。

やっぱ自分で調べたってこうやって教えてくれるヤツがいるんだから自分で調べるとか時間の無駄無駄www
適当に質問して待ってりゃ自分の作りたいプログラム教えてくれるんだから。
ほんとプログラミングとか超簡単www12歳でも出来るわコレww
マウスプログラミングっていうの?こういうの。
キーボードなくても、右クリックでコピペして切り貼りして完成wwww



らら

リンク

2007/7/3(Tue) 09:29:25|NO.9233

pizzaさん、ご回答ありがとうございます

このスクリプトでは、アイコンを「.exe」から抽出しても、
いざ「.ico」で保存すると、アイコン画像が乱れるのですが、これはXPの
半透明アイコンには対応していないということなのでしょうか?



pizza

リンク

2007/7/3(Tue) 20:20:16|NO.9239

> これはXPの半透明アイコンには対応していないということなのでしょうか?

大きいアイコンを保存しているので、エクスプローラが小さいアイコン表示(一覧、詳細)
になっていると綺麗に表示できないのかも?

http://hp.vector.co.jp/authors/VA016117/rsrc2icon.html
の方法ではどうでしょう?

サンプルファイルを解凍してRsrc2Icon.exeのウィンドウにD&Dすると
アイコンが保存されます。

ただ、この方法ではリソースの列挙にコールバック関数(EnumResNameProc)が必要になります。
(リソース名を知らない場合)

DLLを使わずにコールバック関数を使う方法は↓
http://yokohama.cool.ne.jp/chokuto/urawaza/mcn/index.html

> ICOフォーマット形式で出力させるような自前処理を用意する方法が良く分かりません

HSPでやってる所がありました。
http://members.at.infoseek.co.jp/kawanokeiji/hsp3x/hsp3x64.htm



らら

リンク

2007/7/5(Thu) 22:15:46|NO.9269

pizzaさん、ありがとうございます
参考にして、がんばってみます



ONION software Copyright 1997-2021(c) All rights reserved.