.版本 2 .子程序 超级延时, , 公开, 高精度延时,cpu占用低,窗口不卡死,一次最大可延时几年 (无返回值) .参数 延时间隔, 整数型, , 1000微秒 = 1毫秒 ; 1000毫秒 = 1秒 .参数 延时单位, 整数型, 可空, 可空:毫秒 0 毫秒 1 微秒 2 秒 3 分 4 小时 5 天 .局部变量 hTimer, 整数型 .局部变量 int64, LARGE_INTEGER .局部变量 计次, 整数型 .判断开始 (延时单位 = 1) int64.QuadPart = -10 × 延时间隔 hTimer = CreateWaitableTimerA (0, 假, 0) SetWaitableTimer (hTimer, int64, 0, 0, 0, 假) .判断循环首 (MsgWaitForMultipleObjects (1, hTimer, 假, #INFINITE, #QS_ALLINPUT) ≠ #WAIT_OBJECT_0) 处理事件 () .判断循环尾 () _关闭对象 (hTimer) 返回 () .判断 (延时单位 = 0) 延时单位 = 1 .判断 (延时单位 = 2) 延时单位 = 1000 .判断 (延时单位 = 3) 延时单位 = 1000 × 60 .判断 (延时单位 = 4) 延时单位 = 1000 × 60 × 60 .判断 (延时单位 = 5) 延时单位 = 1000 × 60 × 60 × 24 .默认 .判断结束 int64.QuadPart = -10 × 延时间隔 × 1000 × 延时单位 hTimer = CreateWaitableTimerA (0, 假, 0) SetWaitableTimer (hTimer, int64, 0, 0, 0, 假) .判断循环首 (MsgWaitForMultipleObjects (1, hTimer, 假, #INFINITE, #QS_ALLINPUT) ≠ #WAIT_OBJECT_0) 处理事件 () .判断循环尾 () _关闭对象 (hTimer)
超级延时2
.版本 2 .子程序 超级延时, , , 高精度延时,cpu占用低,窗口不卡死 .参数 延时间隔, 小数型 .局部变量 hTimer, 整数型 .局部变量 int64, 长整数型 .局部变量 计次, 整数型 int64 = -10 × 延时间隔 × 1000 × 1000 hTimer = CreateWaitableTimerA (0, 假, 0) SetWaitableTimer (hTimer, int64, 0, 0, 0, 假) .判断循环首 (MsgWaitForMultipleObjects (1, hTimer, 假, -1, 255) ≠ 0) 处理事件 () .判断循环尾 () CloseHandle (hTimer)
DLL
.版本 2 .DLL命令 CreateWaitableTimerA, 整数型, , , 公开, 创建一个可等待的计时器对象。 .参数 lpSemaphoreAttributes, 整数型, , SECURITY_ATTRIBUTES,指定一个结构,用于设置对象的安全特性。如将参数声明为ByVal As Long,并传递零值,就可使用对象的默认安全设置。 .参数 bManualReset, 逻辑型, , Long,如果为TRUE,表示创建一个人工重置计时器;如果为FALSE,则创建一个自动重置计时器。 .参数 lpName, 整数型, , String,指定可等待计时器对象的名称。用vbNullString可创建一个未命名的计时器对象。如果已经存在拥有这个名字的一个可等待计时器,就直接打开现成的可等待计时器。这个名字可能不与一个现有的互斥体、事件、信号机或文件映射的名称相符。 .DLL命令 SetWaitableTimer, , , , , 启动一个可等待计时器。 .参数 hTimer, 整数型, , 用于指明你要设置的定时器。 .参数 pDueTime, 长整数型, 传址, 指明定时器何时应该第一次报时 .参数 lPeriod, 整数型, , 指明此后定时器应该间隔多长时间报时一次. .参数 pfnCompletionRoutine, 整数型 .参数 lpArgToCompletionRoutine, 整数型 .参数 fResume, 逻辑型 .DLL命令 MsgWaitForMultipleObjects, 整数型, , "MsgWaitForMultipleObjects", , 该函数等待内核对象或消息。 .参数 nCount, 整数型, , 指定列表中的句柄数量 .参数 pHandles, 整数型, 传址, 指定对象句柄组合中的第一个元素 .参数 fWaitAll, 逻辑型, , 如果为TRUE,表示除非对象同时发出信号,否则就等待下去。如果为FALSE,表示任何对象发出信号即可。 .参数 dwMilliseconds, 整数型, , 指定要等待的毫秒数。 .参数 dwWakeMask, 整数型, , 带有前缀的一个或多个常数,用于标识特定的消息类型。 .DLL命令 CloseHandle, 逻辑型, "kernel32 ", "CloseHandle", , 关闭一个内核对象。其中包括文件、文件映射、进程、线程、安全和同步对象等。涉及文件处理时,这个函数通常与vb的close命令相似。应尽可能的使用close,因为它支持vb的差错控制。注意这个函数使用的文件句柄与vb的文件编号是完全不同的 非零表示成功,零表示失败。会设置GetLastError .参数 HANDLE, 整数型 .DLL命令 FindWindowExA, 整数型, "user32.dll", , , 该函数获得一个窗口的句柄,该窗口的类名和窗口名与给定的字符串相匹配。这个函数查找子窗口,从排在给定的子窗口后面的下一个子窗口开始。在查找时不区分大小写。 .参数 hwndParent, 整数型, , 要查找的子窗口所在的父窗口的句柄(如果设置了hwndParent,则表示从这个hwndParent指向的父窗口中搜索子窗口)。如果hwndParent为 0 ,则函数以桌面窗口为父窗口,查找桌面窗口的所有子窗口。 .参数 hwndChildAfter, 整数型, , 子窗口句柄。查找从在Z序中的下一个子窗口开始。子窗口必须为hwndParent窗口的直接子窗口而非后代窗口。如果HwndChildAfter为NULL,查找从hwndParent的第一个子窗口开始。如果hwndParent 和 hwndChildAfter同时为NULL,则函数查找所有的顶层窗口及消息窗口。 .参数 lpszClass, 文本型, , 指向一个指定了类名的空结束字符串,或一个标识类名字符串的成员的指针。如果该参数为一个成员,则它必须为前次调用theGlobaIAddAtom函数产生的全局成员。 .参数 lpszWindow, 文本型, , 指向一个指定了窗口名(窗口标题)的空结束字符串。如果该参数为 NULL,则为所有窗口全匹配。 .DLL命令 GetWindowRect, 逻辑型, , , , 该函数返回指定窗口的边框矩形的尺寸。该尺寸以相对于屏幕坐标左上角的屏幕坐标给出。 .参数 hWnd, 整数型 .参数 lpRect, RECT, 传址 .DLL命令 MoveWindow, , , , , 功能是改变指定窗口的位置和大小。。 .参数 hWnd, 整数型, , 指定了窗口的句柄 .参数 x, 整数型, , 指定了CWnd的左边的新位置。 .参数 y, 整数型, , 指定了CWnd的顶部的新位置。 .参数 nWidth, 整数型, , 指定了CWnd的新宽度。 .参数 nHeight, 整数型, , 指定了CWnd的新高度。 .参数 bRepaint, 逻辑型, , 指定了是否要重画CWnd .DLL命令 SetWindowPos, , "user32.dll", "SetWindowPos", 公开, _窗口置最前 .参数 hwnd, 整数型, , 欲定位的窗口 .参数 hWndInsertAfter, 整数型, , 用于标识在z-顺序的此 CWnd 对象之前的 CWnd 对象。如果uFlags参数中设置了SWP_NOZORDER标记则本参数将被忽略。 .参数 x, 整数型, , 窗口新的x坐标。如hwnd是一个子窗口,则x用父窗口的客户区坐标表示 .参数 y, 整数型, , 窗口新的y坐标。如hwnd是一个子窗口,则y用父窗口的客户区坐标表示 .参数 cx, 整数型, , 指定新的窗口宽度 .参数 cy, 整数型, , 指定新的窗口高度 .参数 wFlags, 整数型, , 窗口尺寸和定位的标志。该参数可以是下列值的组合: .DLL命令 SetDllPathA, , "\attachment\DmReg.dll", "SetDllPathA", , 大漠注册函数 .参数 path, 文本型 .参数 mode, 整数型 .DLL命令 PostMessageA, , , "PostMessageA", 公开, 投递消息 .参数 hwnd, 整数型 .参数 消息号, 整数型 .参数 消息参数1, 整数型 .参数 消息参数2, 整数型 .DLL命令 CloseWindow, 整数型, "user32.dll", "CloseWindow", 公开, 窗口_最小化, 非0表示成功,0表示失败 .参数 hwnd, 整数型, , hwnd,欲最小化窗口的窗口句柄