【HSP3】HSPのDPMXを取得するアレ

アレはアレなんでアレなんです。

アレはアレなんでアレなんです。

#module Win32EXE
#defcfunc IsWin32App str fname
tmp = 0
exist fname
if strsize == -1 : return 0
bload fname, tmp, 2, 0
if tmp == 0x5a4d /*MZ*/ : return 1
return 0
#defcfunc GetPEAddress str fname
if IsWin32App(fname) == 0 : return -1
tmp = 0 : pe_addr = 0
exist fname
if strsize == -1 : return -2
bload fname, pe_addr, 4, 0x3c // PE
bload fname, tmp, 2, pe_addr // PE
if tmp == 0x4550 : return pe_addr //
return -3
#defcfunc GetRSRCAddress str fname
pe = GetPEAddress(fname)
if pe < 0 : return -1
flg = 0 : sec = pe + 0xf8 : sdim s
exist fname
if strsize == -1 : return -2
// .rsrc
repeat
bload fname, s, 8, sec
if s == "" : break
if s == ".rsrc"{
flg = 1
break
}
sec += 40
loop
if flg == 0 : return -3
return sec
#deffunc GetRSRCData str fname, array rsrc_data
dim rsrc_data, 40/4
addr = GetRSRCAddress(fname)
if addr < 0 : return -1
exist fname
if strsize == -1 : return -2
bload fname, rsrc_data, 40, addr
return 0
#defcfunc GetDPMXAddress str fname
GetRSRCData fname, rsrc
if stat < 0 : return -1
exist fname
if strsize == -1 : return -2
tmp = 0
bload fname, tmp, 4, rsrc(5)+rsrc(4)
if tmp == 0x584d5044 /*DPMX*/ : return rsrc(5) + rsrc(4)
return -3
#global
// DPMX
mes GetDPMXAddress("hsptmp.exe")
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX