/* @param moduleName — Module name or path. @param exportName @param retType @param argTypes @param abiOrOptions */ function EZ生成NativeFunction(exportName: string, retType: NativeFunctionReturnType, argTypes: [] | NativeFunctionArgumentType[], abiOrOptions: NativeABI | NativeFunctionOptions = "default", moduleName: string = "Kernel32.dll", ) { let address = Module.findExportByName(moduleName, exportName); return new NativeFunction(address!, retType, argTypes, abiOrOptions); } export default class Kernel32 { private static address_GetCurrentThreadId: NativePointerValue | null; static GetCurrentThreadId(): number { if (this.address_GetCurrentThreadId == null) { this.address_GetCurrentThreadId = Module.findExportByName("Kernel32.dll", "GetCurrentThreadId"); } return new NativeFunction(this.address_GetCurrentThreadId!, "int", [])(); } private static func_Sleep: AnyFunction; static Sleep(dwMilliseconds: number): void { // void Sleep( // [in] DWORD dwMilliseconds // ); if (this.func_Sleep == null) { let address = Module.findExportByName("Kernel32.dll", "Sleep"); this.func_Sleep = new NativeFunction(address!, "void", ["int"]); } return this.func_Sleep(dwMilliseconds); } }