简易的QQ快捷回复:(获取到QQ的聊天窗口句柄,判断当前窗口是不是聊天窗口,是的话,通过句柄获取到窗口位置,将窗口“贴”到聊天的窗口旁。如果不是,当前窗口变成隐藏窗口,如果当前窗口是自身,则什么都不做。循环执行。)
样张知识点:
获取所有的窗口句柄:EnumWindows(通过枚举,获取系统中所有的窗口句柄) 注:他是一个回调的用法。需要我们传递一个子程序地址,这个函数每找到一个窗口,就会自动调用我们给他的子程序 指针。相当于调用我们的子程序。同时需要注意的是,这个子程序有明确的格式,必须按照格式来写,不然会出错。获取当前“前台”窗口句柄:GetForegroundWindow(前台:前台应用程序的活动窗口)设置窗口到“前台”:SetForegroundWindow获取窗口类名:GetClassName 取窗口标题:GetWindowText获取新窗口的位置:GetWindowRect发送消息:SendMessageA步骤:
1、使用EAPI工具查询出以上的DLL命令,并添加到易语言的Dll命令中。
2、创建普通窗口,输入下图命令。添加 程序集_QQ窗口句柄数组 用来记录添加多个符合条件的窗口句柄。 添加 子程序 回调_查找窗口句柄(这里开始查询窗口句柄)。设置参数、局部变量(查看下面补充)。设置 临时 变量为 取空白文本 命令。详细用法看图2。使用API_取得类名称、API_取窗口标题 命令 将 窗口的类名 和窗口标题提出来存储在缓冲区的局部变量中。使用精易编程助手,查看一下我们要获得QQ的窗口类名,设置判断,进行筛选出,然后输出调试,可以看到有很多相同的输出如图3。再进行判断,将找到的符合条件的筛选出存储到程序集_QQ窗口句柄数组中。最后设置返回值。
1补充:
2、添加子程序,作用是获取前台的窗口,设置变量,先清除数组(这里跟前面的不冲突,看到最后你就明白了)。使用 API_枚举父窗口 命令(这个命令必须要使用前面的 子程序 回调_查找窗口句柄图 2)。这里要记得修改 DLL命令的函数指针为子程序指针。不然会报错。临时变量前台窗口的值为 API_取前台窗口 命令,如果当前的窗口是自己,就返回空,啥也不干。添加 计次循环首 命令,未知变量设为i,变量次数为程序集的句柄数组的数量,判断 QQ窗口为当前的窗口,如果是,则使用 API_取窗口矩形 命令,定位到当前窗口的矩形大小,用法如图3。启动窗口的可视真,启动窗口移动到当前聊天的右边和加10个元素的顶边,程序集_当前QQ聊天窗口句柄的值为前台的窗口句柄。返回。最后输出 启动窗口的可视为假。这个程序的作用能实现,如果窗口为QQ的窗口则显示,如果不是则启动窗口隐藏。等待QQ窗口的出现。并定位到该窗口。
1233、添加 时钟 控件,设置周期事件如下图。这个功能能实现 启动窗口能每秒自动定义到QQ的窗口的旁边。
4、添加子程序 _导入回复信息 ,添加参数 路径,添加 局部变量,使用 读入文件 命令,能够读取 路径 ,这里就看出了参数的作用,上面写了,参数能作为外部接口。读取文件的内容后可以使用 分割文本 命令,对文本进行分割,添加 循环,然后将序列号使用 插入表项 命令 输出到超级列表框中,根据序列号,然后将分割的内容输出到超级列表框中。添加 子程序 如5。这里用到了 参数 路径 的 作用。
1235、此时,一个简介的快速回复窗口就制作完成,但是还没有设置双击文本消息双击输入到QQ的聊天框。使用 置剪辑板文本 命令复制出 列表框 的 现行选中行 命令中的选中项,索引的项为1。使用 API_发送消息 命令,将复制出的文本输出到该QQ聊天窗口的文本框中,信息的标识符为#WM_PASTE,(这里我也不知道为什么设置为这个。)到最后这里结束了。
12总结:学了取空白文本、API_取得类名称 、API_取窗口标题、 API_枚举父窗口 (需要回调子程序)、API_取前台窗口 、取窗口句柄、API_取窗口矩形、移动、取运行目录、读入文件、分割文本、插入表项 、置剪辑板文本、API_发送消息 命令。明白了如何制作QQ消息的快捷回复窗口的编程思路。今天就到这里,明天继续加油!