电脑之家PCHome.Net给软件重新打包加载流氓插件的能力惊人!
很久以前我就使用过一个共享软件叫做Windows 脚本大师,这个软件不但完全兼容VBS,而且在功能上有了扩充,由于需要注册,总是用一段时间就删除了。
今天有事要使用它提供的某些函数,就在电脑之家PCHome.Net下载了一个,令我惊讶的是,在下载时,迅雷就提示说有流氓插件(它什么时候还有这个功能了),问是否继续,因为以前用过,不记得有插件,所以没有当回事,谁料到安装后,系统中自动加载了8个流氓插件,有几个甚至没有听过,但是确定一点的是:安装过程中没有任何提示,安装后计算机系统基本崩溃,CPU使用率达到85%以上,计算机基本上不能工作。万般无奈之下,只得将它的主要动态链接库xxsystem.dll备份了下来,删除windows脚本大师,删除所有的流氓插件。计算机几经重启后,终于恢复正常。
为了能使用windows脚本大师提供的功能,我只得手动注册xxsystem.dll(xxsystem.xy),倒也好估计从此后不需要注册这个软件了就可以永远使用了。希望作者不要找我的麻烦,我这也是迫不得已。正常情况下,我一定会在试用期内删除掉该软件的,呵呵(需要的朋友可以到我的网盘下载)。
现在将其提供的一些比较有用的函数简介如下:
系统函数
1. 使长时间循环或死循环时,让主程序有响应 xy_DoEvent()
2. 等待ms毫秒时间,等待时程序无任何响应 xy_Sleep(ByVal ms As Long)
3. 等待ms毫秒时间,等待时程序有响应xy_wait(ByVal ms As Long)
4. 得到 (X,Y)坐标的位置的颜色值xy_GetPixel(ByVal hdc As Long, ByVal x As Long, ByVal y As
Long) As Long 返回值:为RGB颜色值
参数说明:参数hdc表示设备环境句柄,x表示屏幕的水平坐标,y表示屏幕的垂直坐标
5. 查找窗口句柄xy_FindWindow(ByVal lpClassName As String, ByVal lpWindowName As
String) As Long 参数说明:参数lpClassName为窗口类名,参数lpWindowName为窗口名
返回值:为找到的窗口句柄值,未找到返回0。
6. 得到整个窗口的设备环境句柄 xy_GetWindowDC(ByVal hwnd As Long) As Long
参数说明:参数hwnd为窗口句柄
返回值:为设备环境的句柄
7. 得到窗口设备环境句柄xy_GetDC(ByVal hwnd As Long) As Long
参数说明:参数 hwnd为窗口句柄
返回值:为设备环境的句柄
8. 释放设备环境资源 xy_ReleaseDC(ByVal hwnd As Long, ByVal hdc As Long) As Long
参数说明:参数hwnd为窗口句柄,参数hdc为设备环境句柄
返回值:释放成功返回1,没有释放成功返回0
9. 给窗口发送一个消息xy_PostMessage(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam
As Long, ByVal lParam As Long) As Long
参数说明:参数hwnd为窗口句柄,参数wMsg为消息值,参数wParam为辅助信息,参数lParam为辅助信息
返回值:函数成功返回非0,失败返回0
10. 给窗口发送一个消息,执行完成后才返回
xy_SendMessage(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long,
ByVal lParam As Long) As Long
参数说明:参数hwnd为窗口句柄,参数 wMsg为消息值,参数 wParam为辅助信息,参数 lParam为辅助信息
返回值:返回值依赖于发送的消息
11. 设置窗口位置和大小 xy_SetWindowPos(ByVal hwnd As Long, ByVal hWndInsertAfter As Long,
ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal
wFlags As Long) As Long
参数说明:参数hwnd为窗口句柄,参数hWndInsertAfter表示窗口的顺序,取值意思如下:
Public Const HWND_BOTTOM = 1——表示置最底层
Public Const HWND_NOTOPMOST = -2——表示非最高层
Public Const HWND_TOP = 0——表示置顶层
Public Const HWND_TOPMOST = -1——表示置最顶层
参数X表示窗口新的水平位置坐标;参数Y表示窗口新的垂直位置坐标
参数cx表示新的窗口宽度;参数cy表示新的窗口高度
参数wFlags表示取值标志,取值意思如下:
Public Const SWP_NOSIZE = &H1——表示忽略cx、cy参数
Public Const SWP_NOMOVE = &H2——表示忽略x、y参数
Public Const SWP_SHOWWINDOW = &H40——表示显示窗口
Public Const SWP_HIDEWINDOW = &H80——表示隐藏窗口
12. 窗口列表中寻找与指定条件相符的第一个子窗口
xy_FindWindowEx(ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String,
ByVal lpsz2 As String) As Long
参数说明:找到则返回窗口的句柄。如未找到相符窗口,则返回零。
hWnd1—在其中查找子的父窗口。如设为零,表示使用桌面窗口(通常说的顶级窗口都被认为是桌面的子窗口,所以也会对它们进行查找)
hWnd2—从这个窗口后开始查找。这样便可利用对FindWindowEx的多次调用找到符合条件的所有子窗口。如设为零,表示从第一个子窗口开始搜索
lpsz1—欲搜索的类名。VbNullString表示忽略
lpsz2—欲搜索的类名。VbNullString表示忽略
13. 返回系统目录xy_GetSystemDirectory() As String
14. 返回Windows目录 xy_GetWindowsDirectory() As String
15. 获得代表整个屏幕的一个窗口(桌面窗口)句柄 xy_GetDesktopWindow() As Long
16. 得到屏幕宽度xy_GetScreenWidth() As Long
17. 得到屏幕高度 xy_GetScreenHeight() As Long
18. 设置窗体透明度
xy_SetWindowAlpha(ByVal hwnd As Long, ByVal bAlpha As Byte) As Long
参数说明:hwnd为要设置透明度的窗体,bAlpha为设置的透明度,取0表示全透明,取255表示不透明,取100左右一般半透明效果。
19. 得到屏幕上任意一点的颜色值
xy_GetScreenPixel(ByVal x As Long, ByVal y As Long) As Long
20. 设置窗口的标题名xy_SetWindowText(ByVal hwnd As Long, ByVal Text As String)
参数说明:hwnd窗口句柄,Text要设置的窗口标题名
21. 控制窗口的可见性 xy_ShowWindow(ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
返回值:如窗口之前是可见的,则返回TRUE(非零),否则返回FALSE(零)
hwnd —窗口句柄,要向这个窗口应用由nCmdShow指定的命令
nCmdShow—为窗口指定可视性方面的一个命令。请用下述任何一个常数
SW_HIDE = 0 隐藏窗口,活动状态给令一个窗口
SW_MINIMIZE = 6 最小化窗口,活动状态给令一个窗口
SW_RESTORE = 9 用原来的大小和位置显示一个窗口,同时令其进入活动状态
SW_SHOW = 5 用当前的大小和位置显示一个窗口,同时令其进入活动状态
SW_SHOWMAXIMIZED = 3 最大化窗口,并将其激活
SW_SHOWMINIMIZED = 2 最小化窗口,并将其激活
SW_SHOWMINNOACTIVE = 7 最小化一个窗口,同时不改变活动窗口
SW_SHOWNA = 8 用当前的大小和位置显示一个窗口,不改变活动窗口
SW_SHOWNOACTIVATE = 4 用最近的大小和位置显示一个窗口,同时不改变活动窗口
SW_SHOWNORMAL = 1 与SW_RESTORE相同
鼠标键盘函数
1. 模拟鼠标事件xy_mouse_event(ByVal dwFlags As Long)
参数说明:参数dwFlags,表示鼠标动作,取值意义如下:
&H2—表示左键按下;&H4—表示左键放开;&H8—表示右键按下;&H10—表示右键放开
2. 移动鼠标的位置 xy_SetCursorPos(ByVal x As Long, ByVal y As Long) As Long
参数说明:参数X表示屏幕的水平坐标,参数Y表示屏幕的垂直坐标
返回值:非零表示成功,零表示失败。
3. 得到按键的状态,使用户从死循环中退出
xy_GetKeyState(ByVal nVirtKey As Long) As Boolean
参数说明:如果nVirtKey表示的键处于按下状态,函数返回true,否则返回false
4. 将鼠标捕获设置到指定的窗口。在鼠标按钮按下的时候,这个窗口会为当前应用程序或整个系统接收所有鼠标输入 xy_SetCapture(ByVal hwnd
As Long) As Long
参数说明:参数hwnd,要接收所有鼠标输入的窗口的句柄
返回值:之前拥有鼠标捕获的窗口的句柄
5. 为当前的应用程序释放鼠标捕获 xy_ReleaseCapture() As Long
返回值:TRUE(非零)表示成功,零表示失败
6. 将指针限制到指定区 xy_ClipCursor(ByVal left As Long, ByVal top As Long, ByVal right As
Long, ByVal bottom As Long) As Long
返回值:非零表示成功,零表示失败。
7.相对移动鼠标位置 xy_MoveMouseOpposite(ByVal x As Long, ByVal y As Long)
参数:x表示鼠标水平移动的位置(x为负数向左移动,x为正数向右移动),y表示鼠标垂直移动的位置(y为负数向上移动,y为正数向下移动)
8. 得到鼠标当前在屏幕上的位置 xy_GetCursorPos(x As Variant, y As Variant)
参数:x返回屏幕水平坐标位置,y返回屏幕垂直坐标位置
对话框函数
1. 重启系统对话框:xy_SHRestartSystemDialog() As Long
返回值:选择“取消”按钮,则返回值7。