易语言实现类似QQ式样的停靠窗口
系统结构:初始化子类,销毁子类,新窗口过程,鼠标钩子处理过程,安装鼠标HOOK,卸载鼠标HOOK,LowLevelMouseProc,调用子程序,顶收缩或展开,左收缩或展开,右收缩或展开,窗口收缩或展开,SetWindowLong,CallWindowProc,CallNextHookEx,复制内存,WaitForSingleObject,SetWindowsHookEx,UnhookWindowsHookEx,CreateEvent,CloseHandle,SetEvent,ResetEvent,GetCurrentThreadId,GetModuleHandle,
======窗口程序集1
| |
| |------ __启动窗口_创建完毕
| |
| |------ 初始化子类
| |
| |------ 销毁子类
| |
| |------ 新窗口过程
| |
| |------ __启动窗口_将被销毁
| |
| |------ 鼠标钩子处理过程
| |
| |------ 安装鼠标HOOK
| |
| |------ 卸载鼠标HOOK
| |
| |------ LowLevelMouseProc
| |
| |------ 调用子程序
| |
| |------ 顶收缩或展开
| |
| |------ 左收缩或展开
| |
| |------ 右收缩或展开
| |
| |------ 窗口收缩或展开
| |
| |------ _选择框1_被单击
| |
| |
======调用的Dll
| |
| |---[dll]------ SetWindowLong
| |
| |---[dll]------ CallWindowProc
| |
| |---[dll]------ CallNextHookEx
| |
| |---[dll]------ 复制内存
| |
| |---[dll]------ WaitForSingleObject
| |
| |---[dll]------ SetWindowsHookEx
| |
| |---[dll]------ UnhookWindowsHookEx
| |
| |---[dll]------ CreateEvent
| |
| |---[dll]------ CloseHandle
| |
| |---[dll]------ SetEvent
| |
| |---[dll]------ ResetEvent
| |
| |---[dll]------ GetCurrentThreadId
| |
| |---[dll]------ GetModuleHandle
调用的DLL命令:
.DLL命令 SetWindowLong, 整数型, "user32", "SetWindowLongA", , 设置窗口属性
.参数 hwnd, 整数型
.参数 nIndex, 整数型
.参数 dwNewLong, 整数型
.DLL命令 CallWindowProc, 整数型, "user32", "CallWindowProcA", , 窗口过程回调函数相关
.参数 lpPrevWndFunc, 整数型
.参数 hwnd, 整数型
.参数 Msg, 整数型
.参数 wParam, 整数型
.参数 lParam, 整数型
.DLL命令 CallNextHookEx, 整数型, , "CallNextHookEx", , 放行HOOK消息
.参数 hHook, 整数型
.参数 ncode, 整数型
.参数 wParam, 整数型
.参数 lParam, 整数型
.DLL命令 复制内存, 整数型, "kernel32", "RtlMoveMemory"
.参数 pDest, 整数型, , 目标
.参数 pSrc, 整数型, , 源
.参数 ByteLen, 整数型, , 长度
.DLL命令 WaitForSingleObject, 整数型, , "WaitForSingleObject"
.参数 hHandle, 整数型
.参数 dwMilliseconds, 整数型
.DLL命令 SetWindowsHookEx, 整数型, , "SetWindowsHookExA", , 安装钩子。成功返回钩子处理过程句柄,失败返回0
.参数 idHook, 整数型, , 钩子类型
.参数 lpfn, 整数型, , 钩子处理过程地址.dwThreadId=0或为非当前进程创建的线程ID,处理过程应该放在一个DLL中
.参数 hmod, 整数型, , 应用程序实例句柄。包含钩子处理过程的DLL实例句柄。如果dwThreadId为当前进程创建的线程ID或钩子处理过程在当前进程内,该参数应为NULL
.参数 dwThreadId, 整数型, , 要安装钩子的线程ID。如果为0,则为系统全部线程安装钩子
.DLL命令 UnhookWindowsHookEx, 整数型, , "UnhookWindowsHookEx", , 移除钩子.成功返回非0,失败返回0
.参数 hHook, 整数型, , 欲移除的钩子句柄
.DLL命令 CreateEvent, 整数型, , "CreateEventA"
.参数 lpEventAttributes, 整数型
.参数 bManualReset, 整数型
.参数 bInitialState, 整数型
.参数 lpName, 文本型
.DLL命令 CloseHandle, 整数型, , "CloseHandle"
.参数 hObject, 整数型
.DLL命令 SetEvent, 整数型, , "SetEvent"
.参数 hEvent, 整数型
.DLL命令 ResetEvent, 整数型, , "ResetEvent"
.参数 hEvent, 整数型
.DLL命令 GetCurrentThreadId, 整数型, , "GetCurrentThreadId", , 取当前线程ID
.DLL命令 GetModuleHandle, 整数型, , "GetModuleHandleA", , 取模块句柄。成功返回模块句柄,失败返回0
.参数 lpModuleName, 整数型, , 模块名字符串指针。
注:本站源码主要来源于网络收集。如有侵犯您的利益,请联系我们,我们将及时删除!
部分源码可能含有危险代码,(如关机、格式化磁盘等),请看清代码在运行。
由此产生的一切后果本站均不负责。源码仅用于学习使用,如需运用到商业场景请咨询原作者。
使用本站源码开发的产品均与本站无任何关系,请大家遵守国家相关法律。