飛翔さんによるランチャーテンプレのレポートの次の報告。
マニュアル機能は、ファイルが存在しないとエラーで落ちますよね...(^^;;)エラーメッセージを出すだけにとどめておいてもいいかも。
ランチャーテンプレ使用レポート (星屑制作記@やっぱりMovableType Vol.2)より引用
これについては、 HSP 標準の exec 命令を使っていたのですが、これでは、ファイルが見つからないときに、 HSP 側のエラーダイアログが出て終了されてしまうんですよね。これを回避するには、 exec 命令を行う前にファイルが存在するかを確認すればいいのですが・・・ URL の可能性もあるし、どうしようかと思っていたときに見つけたのが ShellExecuteEx API です。exec 命令にとってかわって、この API を使おうかなと。
ShellExecuteEx API の実験スクリプト。
#include "shell32.as"
#include "kernel32.as"
lpFile = "notepad" // 開くファイル名
hInstApp = 0
// SHELLEXECUTEINFO構造体
dim shexec, 15
shexec. 0 = 60 // cbSize
shexec. 1 = $00000400 // fMask = SEE_MASK_FLAG_NO_UI
shexec. 2 = hWnd // hwnd
shexec. 3 = 0 // lpVerb
shexec. 4 = varptr( lpFile ) // lpFile
shexec. 5 = 0 // lpParameters
shexec. 6 = 0 // lpDirectory
shexec. 7 = 5 // nShow = SW_SHOW
shexec. 8 = varptr( hInstApp ) // hInstApp
shexec. 9 = 0 // lpIDList
shexec.10 = 0 // lpClass
shexec.11 = 0 // hkeyClass
shexec.12 = 0 // dwHotKey
shexec.13 = 0 // hIcon / hMonitor
shexec.14 = 0 // hProcess
ShellExecuteEx varptr( shexec )
GetLastError : ErrorCode = stat
if stat : mes "関数が成功しました" : else { mes "関数が失敗しました"
mes "hInstApp:"+hInstApp
mes "Error Code:"+ErrorCode
sdim ErrorMessage, 256
// $00001000 = FORMAT_MESSAGE_FROM_SYSTEM
FormatMessage $00001000, 0, ErrorCode, 0, varptr( ErrorMessage ), 256, 0
mes "Error Message:"+ErrorMessage
}
あと、メニューの実行内容についてですが、実行内容先で時間がかかっていると、なかなかリターンできないので、 PostMessage を使おうかな、と考えています。
余談ですが、今回スクリプトをHTML実体参照にエンコードするのに、エンコードマニアックスというwebツールを使ってみました。HTML実体参照・Base64・URLエンコード・MIME・uuencode・PHP Serialize・JavaScript・MD5・SHA1・unix passwd ひらがな・カタカナ・ローマ字・分かち書き、と一気に各種エンコードの結果を取得できるwebサービスです。とても便利です。