|
程序_延时_内核
- <火山程序 类型 = "通常" 版本 = 1 />
- 方法 程序_延时_内核 <公开 静态 类型 = 逻辑型 注释 = "不占用cpu,窗口不卡死,不影响其它代码执行" @禁止流程检查 = 真 @输出名 = "SleepByNt">
- 参数 参_延时间隔 <类型 = 整数 注释 = "1000毫秒 = 1秒 留空为不等待" @默认值 = -1>
- {
- 变量 局_真实时间 <类型 = 长整数 @输出名 = "dwMilliseconds">
- @ typedef INT_P (WINAPI* ZwDelayExecution)(
- @ BOOL bAlertable,
- @ PLARGE_INTEGER dwMilliseconds
- @ );
- @ HMODULE timeNTDLL = GetModuleHandle(L"ntdll"); //取出NTDLL的句柄
- @ ZwDelayExecution pZwDelayExecution = (ZwDelayExecution)::GetProcAddress(timeNTDLL, "ZwDelayExecution");
- 局_真实时间 = -参_延时间隔 * 10000
- @ return pZwDelayExecution(false,(PLARGE_INTEGER)&dwMilliseconds) == 0;
- }
复制代码
|
|