|
发表于 2015-12-4 03:53:46
|
显示全部楼层
修改了几个小地方 等待改成了循环判断 编辑框用户只能读 不能写 自动滚动到底部 自动选中最后一条输出
还有把最重要的输出给改掉了 提交字符串太慢 不如直接发送消息过去来的直接 实际上以后还可以支持数组的输出 遍历一下就好
再就是改了改输出框宽高的设置 然后没啥了 再就是我觉得应该在输出框的exe里弄个监测之类的 万一用户没点关闭 主程序异常退出了呢 那输出框留在那里好难看
也算是好久没碰代码的一个自己的小复习练习吧。不知道还有没有人记得我- -。好了就是这样各位晚安
已知改过的代码有俩BUG懒得写了……具体看注释
- 变量 句柄=数组()
- 功能 调试输出窗口_初始化()
- 句柄[0]=进程打开("rc:Pr.exe")
- 进程等待初始化(句柄[0],1000)
- 句柄[1]=枚举窗口("TForm1",1)//BUG1:此处按照窗口类名枚举窗口可能枚举到多个,造成冲突,建议写winapi,枚举进程ID下的窗口句柄.
- while(句柄[1]==0)
- 句柄[1]=枚举窗口("TForm1",1)
- end
- 句柄[2]=枚举窗口(句柄[1],3)
- 窗口发送消息(句柄[2],207,-1,0)//用户只读,不可编辑
- 窗口设置位置(句柄[1],6,9)
- 窗口设置大小(句柄[1],400,200)
- var 宽,高
- 窗口获取客户区(句柄[1],0,0,宽,高)
- 窗口设置大小(句柄[2],宽,高)
- 窗口设置标题(句柄[1],窗口获取标题(窗口获取自我句柄()))
- 窗口置顶(窗口获取自我句柄(),真)
- 结束
- 功能 调试输出窗口_销毁()
- windowpostmessage(句柄[1],16,0,0)
- 结束
- 功能 输出(内容)
- var len=dllcall("user32.dll","int","SendMessageW","int",句柄[2],"int",14,"int",0,"int",0)//取原长度
- var temp=""//BUG2:此处建议单独分配内存存放原编辑框内容,tc貌似因为Buffer太小的原因 输出多了总崩溃
- dllcall("user32.dll","int","SendMessageW","int",句柄[2],"int",13,"int",len+1,"pwchar *",temp)//获取编辑框原来的内容
- dllcall("user32.dll","int","SendMessageW","int",句柄[2],"int",12,"int",0,"wchar *",temp&内容&"\r\n")//设置新的
- dllcall("user32.dll","int","SendMessageW","int",句柄[2],"int",177,"int",len,"int",len+strlen(内容))//选中最后输出的一条方便复制
- dllcall("user32.dll","int","SendMessageW","int",句柄[2],"int",277,"int",7,"int",0)//滚动到最后一行
- 窗口设置焦点(句柄[1])
- 结束
复制代码 |
|