递归火山软件开发平台

标题: 程序_延时_内核 [打印本页]

作者: 乐易论坛    时间: 2024-9-15 21:22
标题: 程序_延时_内核
程序_延时_内核
  1. <火山程序 类型 = "通常" 版本 = 1 />

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

  14. }
复制代码



作者: yuangao    时间: 2024-9-15 22:28

程序_延时_内核 (5000)
// 界面延时 (5000)
标签1.标题 = "不卡死"

貌似窗口也卡住的, 新手还请谅解。

作者: Xelloss0618    时间: 2024-9-15 22:37
yuangao 发表于 2024-9-15 22:28
程序_延时_内核 (5000)
// 界面延时 (5000)
标签1.标题 = "不卡死"

Sleep (普通延时)函数的实现会调用到 ZwDelayExecution,所以这玩意的作用根本不是界面延时。
作者: yuangao    时间: 2024-9-15 23:25
Xelloss0618 发表于 2024-9-15 22:37
Sleep (普通延时)函数的实现会调用到 ZwDelayExecution,所以这玩意的作用根本不是界面延时。 ...

感谢,大佬的解释。
作者: 乐易论坛    时间: 2024-9-15 23:48
yuangao 发表于 2024-9-15 22:28
程序_延时_内核 (5000)
// 界面延时 (5000)
标签1.标题 = "不卡死"

这个不卡死的的说法 是从易语言的延时 延伸过来的 主要指的是 不暂停程序运行..:噜阿噜 备注啥的 直接复制的 懒得改了...
作者: yuangao    时间: 2024-9-17 08:41
乐易论坛 发表于 2024-9-15 23:48
这个不卡死的的说法 是从易语言的延时 延伸过来的 主要指的是 不暂停程序运行..:噜阿噜 备注啥的 直接复 ...

好,好,明白
作者: ziyoulang168    时间: 4 小时前
论坛里的这个复制代码不能用,请后台调配下@飞翔的企鹅 (, 下载次数: 0)




欢迎光临 递归火山软件开发平台 (https://bbs.voldp.com/) Powered by Discuz! X3.4