TC官方合作论坛

 找回密码
 立即注册
查看: 189|回复: 5

[已解决] 关于消息框跟随的问题?

[复制链接]
发表于 2020-11-13 13:54:09 | 显示全部楼层 |阅读模式

马上加入TC

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
我是菜鸟,很多设置都不懂,在使用的时候,消息框怎么跟随窗口呀?正常的如图一,窗口不动,消息框正中间,但是使用过程中,肯定会拖动窗口,就会出现图二的情况。怎么样设置成消息框跟随主窗口?注意:现在使用TC 7.0版本



图一.jpg
图二.jpg
回复

使用道具 举报

发表于 2020-11-18 19:46:20 | 显示全部楼层
本帖最后由 minews 于 2020-11-18 19:49 编辑

复习一下CBT钩子,下面的代码直接调用myMessageBox("测试内容","测试标题") 即可
写完发现TC连续弹出多个MessageBox不关闭,大约到8个就会崩溃.....测试系统为win10.

  1. var HHook, h
  2. var WH_CBT = 5
  3. var HCBT_ACTIVATE = 5
  4. var HCBT_CREATEWND = 3
  5. function myMessageBox(content, caption)
  6.     installHook()
  7.     dllcall("User32.dll", "long", "MessageBoxW", "long", windowgetmyhwnd(), "wchar *", content, "wchar *", caption, "long", 0)
  8.    
  9. end
  10. function installHook()
  11.     var hmod = dllcall("kernel32.dll", "long", "GetModuleHandleA", "long", 0)
  12.     h = callbackmalloc("hookProc", "hookproc")
  13.     traceprint("hookproc:" & h)
  14.     var threadId = dllcall("kernel32.dll", "long", "GetCurrentThreadId")
  15.     HHook = dllcall("user32.dll", "long", "SetWindowsHookExA", "long", WH_CBT, "callback", h, "long", hmod, "long", threadId)
  16.     traceprint("HHook:" & HHook)
  17. end

  18. function hookProc(nCode, wParam, lParam)
  19.     if(nCode == HCBT_ACTIVATE)
  20.         if(windowgetclass(wParam) == "#32770" && wParam != windowgetmyhwnd())
  21.             unInstallHook()
  22.             var x, y
  23.             windowgetpos(windowgetmyhwnd(), x, y)
  24.             windowsetpos(wParam, x + 100, y + 100)
  25.         end
  26.     end
  27.     return dllcall("user32.dll", "long", "CallNextHookEx", "long", HHook, "long", nCode, "long", wParam, "long", lParam)
  28. end

  29. function unInstallHook()
  30.     var ret = dllcall("user32.dll", "long", "UnhookWindowsHookEx", "long", HHook)
  31.     traceprint("UnhookWindowsHookEx:" & ret)
  32.     callbackfree(h)
  33. end
复制代码

回复 支持 反对

使用道具 举报

发表于 2020-11-14 09:41:41 | 显示全部楼层
先用这个,等高手回答
新建一个窗口
登录错误后
子界面句柄=控件.打开窗口("tc")


功能 初始化()
//这里添加你要执行的代码
x,y
    窗口句柄=窗口.自身句柄()
    窗口.获取位置(窗口句柄,x,y)
    窗口=控件.获得子界面句柄("tc")
    窗口.设置位置(窗口,x+119,y+72)   
功能结束

回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-20 08:50:43 | 显示全部楼层
minews 发表于 2020-11-18 19:46
复习一下CBT钩子,下面的代码直接调用myMessageBox("测试内容","测试标题") 即可
...

大佬,能用中文的不?我这小学文化,看不懂这么多英文哦。
回复 支持 反对

使用道具 举报

发表于 2020-11-20 18:00:45 | 显示全部楼层
复制粘贴就能用了
或者  TC开发工具上 英文转中文点一下 就好了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-21 17:18:02 | 显示全部楼层
minews 发表于 2020-11-20 18:00
复制粘贴就能用了
或者  TC开发工具上 英文转中文点一下 就好了

现在TC论坛估计缺少管理员了,很多连接都用不了,都没有及时更新。就连英文转中文的转换器也下载不了。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条

关闭

小黑屋|TC官方合作论坛 (苏ICP备18045623号)

GMT+8, 2020-12-4 22:21 , Processed in 0.034925 second(s), 26 queries .

Powered by 海安简单软件服务部

© 2008-2019 版权所有 保留所有权利

快速回复 返回顶部 返回列表