//win32_api定义部分。
//申请内存地址
function new(nSize)
var string = array()
string["str"] = array("char" = nSize + 1, "value" = "")
return structmalloc(string)
end
//释放内存
function delete(address)
structfree(address)
end
//重置一段内存中值
function memset(address, value, nSize)
return dllcall("kernel32.dll", "long", "RtlFillMemory", "long", address, "long", nSize, "long", value)
end
function SECURITY_ATTRIBUTES()
var sa0 = array() //定义SECURITY_ATTRIBUTES结构.
sa0["nLength"] = array("long" = 1, "value" = 0)
sa0["lpSecurityDescriptor"] = array("long" = 1, "value" = 0)
sa0["bInheritHandle"] = array("long" = 1, "value" = 0)
return sa0
end
function STARTUPINFO()
var si0 = array() //定义STARTUP_INFO结构.
si0["cb"] = array("long" = 1, "value" = 0)
si0["lpReserved"] = array("long" = 1, "value" = 0)
si0["lpDesktop"] = array("long" = 1, "value" = 0)
si0["lpTitle"] = array("long" = 1, "value" = 0)
si0["dwX"] = array("long" = 1, "value" = 0)
si0["dwY"] = array("long" = 1, "value" = 0)
si0["dwXSize"] = array("long" = 1, "value" = 0)
si0["dwYSize"] = array("long" = 1, "value" = 0)
si0["dwXCountChars"] = array("long" = 1, "value" = 0)
si0["dwYCountChars"] = array("long" = 1, "value" = 0)
si0["dwFillAttribute"] = array("long" = 1, "value" = 0)
si0["dwFlags"] = array("long" = 1, "value" = 0)
si0["wShowWindow"] = array("short" = 1, "value" = 0)
si0["cbReserved2"] = array("short" = 1, "value" = 0)
si0["lpReserved2"] = array("long" = 1, "value" = 0)
si0["hStdInput"] = array("long" = 1, "value" = 0)
si0["hStdOutput"] = array("long" = 1, "value" = 0)
si0["hStdError"] = array("long" = 1, "value" = 0)
return si0
end
function PROCESS_INFORMATION()
var pi0 = array() //定义PROCESS_INFORMATION结构.
pi0["hProcess"] = array("long" = 1, "value" = 0)
pi0["hThread"] = array("long" = 1, "value" = 0)
pi0["dwProcessId"] = array("long" = 1, "value" = 0)
pi0["dwThreadId"] = array("long" = 1, "value" = 0)
return pi0
end
//创建管道
function CreatePipe(&readPipe, &writePipe, &lpPipeAttributes, nSize)
return dllcall("kernel32.dll", "long", "CreatePipe", "plong", readPipe, "plong", writePipe, "pstruct", lpPipeAttributes, "long", nSize)
end
//返回当前进程,在启动时,被指定的STARTUPINFO结构信息.
function GetStartupInfo(&STARTUPINFO) //引用传参.
return dllcall("kernel32.dll", "long", "GetStartupInfo", "pstruct", STARTUPINFO)
end
//创建新进程
function CreateProcess(lpApplicationName, lpCommandLine, lpProcessAttributes, lpThreadAttributes, bInheritHandles, dwCreationFlags, lpEnvironment, lpCurrentDirectory, &lpStartupInfo, &lpProcessInformation)
return dllcall("kernel32.dll", "long", "CreateProcessW", "long", lpApplicationName, "wchar *", lpCommandLine, "long", lpProcessAttributes, "long", lpThreadAttributes, "long", bInheritHandles, "long", dwCreationFlags, "long", lpEnvironment, "long", lpCurrentDirectory, "pstruct", lpStartupInfo, "pstruct", lpProcessInformation)
end
//关闭句柄
function CloseHandle(handle)
return dllcall("kernel32.dll", "long", "CloseHandle", "long", handle)
end
//读文件句柄,可以文件,管理,io这一系列的句柄内容
function ReadFile(hFile, lpBuffer, nNumberOfBytesToRead, &lpNumberOfBytesRead, lpOverlapped = 0)
return dllcall("kernel32.dll", "long", "ReadFile", "long", hFile, "long", lpBuffer, "long", nNumberOfBytesToRead, "plong", lpNumberOfBytesRead, "long", lpOverlapped)
end
|