手抄报 安全手抄报 手抄报内容 手抄报图片 英语手抄报 清明节手抄报 节约用水手抄报

脚本开发教程:按键多线程脚本启动指定窗口

时间:2024-10-27 11:29:08

1、我们用记事本来做例子。实现功能:1、点击记事本窗口按下f7之后,启动窗口大小渐变线程。每格半秒递增窗口的大小。2、点击记事本窗口按下f8之后,关闭窗口所对应的线程。

2、按F7启动线程1、使用waitkey(等待按任意键命令),判断是否按下F7。F7的按键码=118代码如下:Key=WaitKey()Ifkey=118Then//执行后续代码EndIf

3、使用MousePoint(得到鼠标指向的窗口句柄命令),获取窗口句柄。获取窗口句柄之后,我们还需要做一个判断,判断当前获取的窗口是不是要绑定的窗口。如果要绑定的游戏的窗口标题是变化的,我们就判断它的类名。类名不一样的话就重新等待按下F7键,重新获取鼠标指向的窗口句柄。记事本的类名=“Notepad”代码如下:DoKey=WaitKey()///////////按下了F7启动线程按钮///////////////Ifkey=118Then//////获取窗口类名,如果类名不是记事本的类名,则退出循环,重新等待按键////////////hwnd=Plugin.Window.MousePoint()sClass=Plugin.Window.GetClass(Hwnd)Ifsclass<>"Notepad"ThenExitDoEndIfEndifLoop

4、启动线程,将窗口句柄和线程id记录到ini文件中。启动线程之后,为了提示线程是否启动,修改记事本的窗口标题为"线程启动成功"另外:气泡提示、屏幕输出等方式都能起到提示的作用。修改了标题之后,将窗口句柄和线程id记录到ini文件中。为什么要用ini文件记录呢?环境变量不是更方便吗?一般情况下,环境变量确实方便多了,但是当多个脚本整合到同一个小精灵的时候,环境变量相同就会产生干扰。而且,脚本退出之后环境变量会清空,如果我们二次开启脚本还需要使用到上一次的窗口句柄,环境变量是不能实现的。

5、CallPlugin.File.WriteINI("窗口句柄",hwnd,hwnd,"C:\记录.ini")//记录窗口句柄CallPlugin.File.WriteINI("线程ID",hwnd,线程ID,"C:\记录.ini")//记录线程id 这里记录线程id的时候,把“线程id”小节名下的键值名称设置为窗口句柄,以便于后面结束线程时,根据当前鼠标指向窗口的句柄,找到ini记录里对应的线程id。将线程id记录到ini文件之前,我们需要先判断下当前所获取到的窗口句柄,是否之前已经启动过线程,用当前的窗口句柄值在ini文件中找对应的线程id,如果返回值不为空则说明该窗口之前启动过线程,关闭掉线程。(如果不关闭之前开启的线程,会造成一个窗口重复启动多个线程的情况,浪费cpu资源。)

6、代码如下:线程ID=BeginThread(大小)//启动线程callP盟敢势袂lugin.Window.SetText(hwnd荑樊综鲶,"线程启动成功!")//修改标题提示绑定成功CallPlugin.File.WriteINI("窗口句柄",hwnd,hwnd,"C:\记录.ini")//记录窗口句柄xc=Plugin.File.readINI("线程ID",hwnd,"C:\记录.ini")//获取线程id,看看是不是空的,如果不是空的,说明此窗口绑定过线程,关闭线程Ifxc<>""ThenStopThreadxcEndIfCallPlugin.File.WriteINI("线程ID",hwnd,线程ID,"C:\记录.ini")//记录线程id

7、按下F8结束线程判断按下的键是否是F8,如果是,则获取鼠标指向窗口的窗口句柄。判断ini文件中线程id的记录,是否有该窗口句柄对应的线程id,有的话,则停止此线程,没有则提示该窗口没有启动过线程。

8、代码如下:DoIfkey=119Then/////////////获取窗口句柄,看下ini文件中,是否有该窗口句柄的线程id的记录,有的话则停止,没有的话则提示该窗口没有启动过线程////////////hwnd=Plugin.Window.MousePoint()关闭线程id=Plugin.File.readINI("线程ID",hwnd,"C:\记录.ini")If关闭线程id=""ThenMessageBox"当前窗口没启动过线程。"ExitDoElseStopThread关闭线程id//关闭线程callPlugin.Window.SetText(hwnd,"停止!")EndIfEndIfLooprning�000�ߊ��:p>EndIfEndifLoop

9、被线程启动的子程序子程序命名为:大小。功能:用于改变记事本的窗口大小。从宽100,高100,每隔半秒钟递增一次。直到窗口大小为宽1000,高1000代码如下:////////////////窗口大小渐变////////////////////////Sub大小()窗口句柄=hwndFori=0To90CallPlugin.Window.Size(窗口句柄,100+i*10,100+i*10)Delay500NextEndSub

10、整体代码:Dimenvhwndhwnd=0For3RunApp"Notepad"NextBeginThread启动Su芟鲠阻缒b启动()DoDoKey=WaitKey()///////////按下了F7启动线程按钮///////////////Ifkey=118Then//////获取窗口类名,如果类名不是记事本的类名,则退出循环,重新等待按键////////////hwnd=Plugin.Window.MousePoint()sClass=Plugin.Window.GetClass(Hwnd)Ifsclass<>"Notepad"ThenExitDoEndIf线程ID=BeginThread(大小)//启动线程callPlugin.Window.SetText(hwnd,"线程启动成功!")//修改标题提示绑定成功CallPlugin.File.WriteINI("窗口句柄",hwnd,hwnd,"C:\记录.ini")//记录窗口句柄xc=Plugin.File.readINI("线程ID",hwnd,"C:\记录.ini")//获取线程id,看看是不是空的,如果不是空的,说明此窗口绑定过线程,关闭线程Ifxc<>""ThenStopThreadxcEndIfCallPlugin.File.WriteINI("线程ID",hwnd,线程ID,"C:\记录.ini")//记录线程idEndIf//////////////按下f8停止线程按钮///////////////////Ifkey=119Then/////////////获取窗口句柄,看下ini文件中,是否有该窗口句柄的线程id的记录,有的话则停止,没有的话则提示该窗口没有启动过线程////////////hwnd=Plugin.Window.MousePoint()关闭线程id=Plugin.File.readINI("线程ID",hwnd,"C:\记录.ini")If关闭线程id=""ThenMessageBox"当前窗口没启动过线程。"ExitDoElseStopThread关闭线程id//关闭线程callPlugin.Window.SetText(hwnd,"停止!")EndIfEndIfLoopLoopEndSub////////////////窗口大小渐变////////////////////////Sub大小()窗口句柄=hwndFori=0To90CallPlugin.Window.Size(窗口句柄,100+i*10,100+i*10)Delay500NextEndSub

© 手抄报圈