开源
功能说明:基于易语言的多窗口垂直滚动控制程序
本程序是一个基于易语言(E语言)开发的小型工具软件,其主要功能是检测当前系统桌面所有非自身窗口,并通过界面按钮或滚动条控件实现对这多个窗口的批量、同步垂直位移操作。
### 一、程序核心功能逻辑
该程序通过模拟鼠标滚轮或点击按钮的交互,动态获取屏幕上除本程序外所有其他窗口的句柄,并依据特定的 Y 轴偏移量调整这些窗口在屏幕上的显示位置。程序本质上是一个简易的“多窗口位置调整器”或“窗口卷帘机”。
#### 1. 初始化与数据收集
程序启动时,会利用 `__启动窗口_创建完毕 XP 风格` 子程序进行初始化设置。它定义了一个全局数组 `句柄数组` 用于临时存储枚举到的目标窗口句柄,并使用 `枚举窗口 D` 调用系统的 `EnumWindows` API。当遍历过程中间件检测到有效的窗口句柄(排除自身)后,将其加入列表。这里的 `枚举过程` 作为回调函数,确保只保留非零句柄到处理队列中。
#### 2. 窗口移动机制
移动逻辑封装在私有子程序 `窗口移动` 中。该过程接收目标窗口句柄及 X、Y 轴的偏移量。内部首先通过 `窗口取边框` 获取窗口当前的矩形边界(Left, Top, Right, Bottom),计算出当前的宽度和高度,最后使用 `MoveWindow` 配合 Windows API 将新坐标应用到指定句柄上,实现物理位置的偏移。
#### 3. 事件触发方式
程序提供了三种主要的方式来触发动作:
* **单步/逐行切换:** “超级按钮 1”和“超级按钮 2”分别对应 Y 轴方向的负向(向上移 -3)和正向(向下移 +3)微调。这两个操作实际上是让界面下方的任务栏或其他固定元素能够随着其他窗口的整体升降而滚动。
* **滑动条联动:** 程序中实现了一个名为 `_纵向滚动条 1_位置被改变` 的事件响应机制。当用户拖动界面上的纵向滚动条时,程序会实时计算滚动条当前位置与记录变量 `滚动条位置` 的差值,并将这个差值作为 `Y 轴偏移量` 批量施加给所有已采集的非自身窗口。
* **参数配置:** “超级按钮 3”提供了一个输入框界面,允许用户动态设置界面滚动条的最大范围参数,从而实现更大跨度的快速定位。
### 二、关键技术点总结
1. **句柄枚举与过滤**:程序利用了 `EnumWindows` 这样的底层 API 来探测桌面上的活动应用程序。特别需要注意的是循环中的判断条件 `如果真 (句柄数组 [a] = 取窗口句柄 ())`,这显式排除了程序自身的句柄,防止程序因为修改自己的层级而导致 UI 更新逻辑死锁。
2. **相对位移算法**:所有的坐标变换均基于 `MoveWindow` 命令,结合 `GetWindowRect` 获取原始状态,确保了多开环境下的稳定性。代码片段显示的 `宽度2 = 位置 2.右边 - 位置 2.左边` 等计算保证了调整后的窗口不会发生拉伸变形。
3. **状态保持**:程序使用了类变量 `滚动条位置` 来记录上一次处理的基准点,从而确保只有在真正需要滚动时才重新计算批量位移,避免无意义的重复渲染。
### 三、程序标题总结
根据上述分析,该程序的标题最贴切的描述应该是:
**
全系统非自身窗口批量垂直滚轮控制器**
或者更通俗地称为:
**
易语言编写的全屏多层级窗口堆叠管理工具**
此程序解决了在多任务处理场景下,面对屏幕上有大量重叠或并排窗口导致重要通知被遮挡的问题,提供了一种不依赖特定运行库(仅用原生+XP 风格库)的轻量级解决方案,常用于需要监控或展示后台多个长页面信息的场景中。通过对除自身外的所有窗口做统一的 `y + delta` 运算,实现了类似网页“无限滚动的背景遮罩层”效果,使当前操作的 GUI 始终能引导视线聚焦于特定制表区域,同时保留了底层界面的视觉提示功能。
======窗口程序集1
| |
| |------ __启动窗口_创建完毕
| |
| |------ 窗口移动
| |
| |------ _超级按钮1_被单击
| |
| |------ 枚举窗口
| |
| |------ 枚举过程
| |
| |------ _超级按钮2_被单击
| |
| |------ _纵向滚动条1_位置被改变
| |
| |------ _超级按钮3_被单击
| |
| |
======调用的Dll
| |
| |---[dll]------ 移动窗口
| |
| |---[dll]------ 枚举窗口D
| |
| |---[dll]------ 窗口取边框
注:本站源码主要来源于网络收集。如有侵犯您的利益,请联系我们,我们将及时删除!
部分源码可能含有危险代码,(如关机、格式化磁盘等),请看清代码在运行。
由此产生的一切后果本站均不负责。源码仅用于学习使用,如需运用到商业场景请咨询原作者。
使用本站源码开发的产品均与本站无任何关系,请大家遵守国家相关法律。