Last Update : 2007/11/xx
「lhspicc.exe」(フリーウェア)は、無料のWindowsプログラミングツール「HSP」(Hot Soup Processor)で作成した実行ファイル(*.exe)やスクリーンセーバーファイル(*.scr)のアイコンを書き換えるコンソールプログラムです。たとえば、HSP用のコンパイラやスクリプトエディタなどを製作して、それにアイコン変更機能を実装したい場合なんかで利用できます。(自作ソフトに同封して配布するのはご自由に。)
普通にGUI上でアイコンを書き換えたい方は、拙作のアイコン変更ツール「Let's HSPIC!」をどぞー。このコンソールプログラムは、リソースエディタ「Resource Hacker」のような外部ツールは一切使いません。
「lhspicc.exe」が対応している動作環境は下のとおりです。OSにより制限があるので注意してください。つまりは、Windows 9x系OSでは利用できません。また、アイコンの書き換え対象となる実行ファイルにも制限があり、HSP3製実行ファイルのみの対応です。
|
|
OSが対応しているかをHSPのスクリプトコード上から確認するには、普通にHSPのsysinfo関数(sysinfo命令)をチェックするほかに、下のような方法でも可能です。
; 簡易? OSちぇっく(HSP3)
#uselib "kernel32"
#cfunc BeginUpdateResource "BeginUpdateResourceA" str, int
; 対応していない場合は 0 が返る
if varptr(BeginUpdateResource) = 0 {
mes "× 利用できませーん。"
} else {
mes "○ 利用できますー。"
}
アイコンファイル(*.ico)に関しては特に制約はありません。マルチアイコンタイプも適用できるようにしてあります。
「lhspicc.exe」はDOSコンソールプログラム、いわゆるコマンドプロンプト上で動作するものです。これをHSP(HSP2/HSP3)のスクリプト上からの呼び出すには、普通にexec命令やHSP拡張プラグインhspext.dllのpipeexec命令を利用します。
下は、HSP3でWindows APIを利用したタスク待ち実行を利用したサンプルです。タスク待ち実行は、HSP2のexec命令に存在したモード(モード1)でHSP3では機能が削除されてます。
; タスク実行待ち実行(HSP3) #uselib "shell32" #func global ShellExecuteEx "ShellExecuteEx" int #uselib "kernel32" #func WaitForSingleObject "WaitForSingleObject" int,int #func CloseHandle "CloseHandle" int sdim lpFile, 128 sdim lpParameters, 128 ; lhspicc.exeのファイルパス lpFile = "C:\\Hsp31\\lhspicc.exe" ; lhspicc.exeに渡すパラメータ lpParameters = "-e\"C:\\Hsp31\\hoge.exe\" -i\"C:\\Hsp31\\hoge.ico\"" ; コンソールの表示形式 (0=非表示、1=表示、2=最小化) nShow = 1 dim SHELLEXECUTEINFO, 15 SHELLEXECUTEINFO = 60, $40, hwnd, 0, varptr(lpFile), varptr(lpParameters), 0, nShow ShellExecuteEx varptr(SHELLEXECUTEINFO) WaitForSingleObject SHELLEXECUTEINFO.14, -1 CloseHandle SHELLEXECUTEINFO.14
; タスク実行待ち実行(HSP2) ; lhspicc.exeのファイルパス lpFile = "C:\\Hsp31\\lhspicc.exe" ; タスク実行待ちで exec ""+lpFile+" -e\"C:\\Hsp31\\hoge.exe\" -i\"C:\\Hsp31\\hoge.ico\"", 1
Copyright © 2005-2008 Kpan. All rights reserved.