自分の手元の環境では動作してますね。
とりあえず、陸さんのソースにpipeexecの詳細エラーを取得するように修正してみた。
#include "hspext.as"
#module
#uselib "kernel32"
#func FormatMessage "FormatMessageA" int, int, int, int, var, int, int
#cfunc GetLastError "GetLastError"
#defcfunc GetAPIError local strErr, local errCode
sdim strErr, 261 : errCode = GetLastError()
FormatMessage 0x1200, 0, errCode, 0, strErr, 260, 0
return strf("0x%08x : %s", errCode, strErr)
#global
exist "7z.exe"
if (strsize <= 0){
dialog "「7z.exe」が存在しません。", 1, "エラー"
end
}else{
exist "test.7z"
if (strsize <= 0){
dialog "解凍するアーカイブが存在しません。", 1, "エラー
end
}else{
filename = "./7z.exe x \"" + dirinfo(0) + "\\test.7z\" -o\"" + dirinfo(0) + "\\test\\\" -y"
sdim ln,4096
sdim buf,32000
pipeexec buf, filename, 1
if stat {
dialog "実行できませんでした\r\n" + GetAPIError(), 1, "エラー" : end
}
repeat
pipeget ln
if stat=0 : break
await 5
loop
dialog "解凍が完了しました。", 0, "完了"
end
}
}
---------------------------
エラー
---------------------------
実行できませんでした
0x00000002 : 指定されたファイルが見つかりません。
---------------------------
OK
---------------------------
みたいな感じで何か返ってくるはず (´・ω・`)