乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 117|回复: 4

“将密钥发送到”对话框

[复制链接]

238

主题

769

帖子

33

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1721
发表于 2019-3-27 12:08:50 | 显示全部楼层 |阅读模式
我有一个vba代码,用于AutoCAD 2015。它能够在AutoCAD中激活一个命令,打开一个对话框。然后它将继续该对话框上的SendKey
我在2018年尝试了同样的事情,但SendKey在对话框中不起作用。但是,当我关闭对话框时,它会在命令行中运行sendkeys。不太清楚发生了什么。
谢谢您的帮助
  1. Sub Catchment()
  2. On Error Resume Next
  3. Set AcadApp = GetObject(, "AutoCAD.Application")
  4. If Err Then
  5. Err.Clear
  6. Set AcadApp = CreateObject("AutoCAD.Application")
  7. End If
  8. AppActivate AcadApp.Caption
  9. AcadApp.Visible = True
  10. AcadApp.Application.WindowState = acNorm
  11. AcadApp.ActiveSpace = acModelSpace
  12. If AcadApp.Documents.Count = 0 Then
  13. AcadApp.Documents.Add
  14. End If
  15. AcadApp.ActiveDocument.SendCommand "_CREATECATCHMENTFROMOBJECT" & vbCr
  16. End Sub
  17. Sub Catchment_Storm_SendKeys()
  18.    Dim myApp As String
  19. DoEvents
  20. Application.Wait (Now + TimeValue("0:00:01"))
  21. Sleep 250
  22. SendKeys "{TAB}{TAB}{TAB}{TAB}", True
  23. Sleep 250
  24. SendKeys "{ENTER}", True
  25. Sleep 250
  26. SendKeys "{TAB}{TAB}{TAB}{TAB}", True
  27. End Sub

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

238

主题

769

帖子

33

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1721
发表于 2019-3-27 13:50:16 | 显示全部楼层
有没有办法通过设定对话框中的标题来更改对话框的焦点?
回复

使用道具 举报

238

主题

769

帖子

33

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1721
发表于 2019-3-27 14:37:06 | 显示全部楼层

这是一个很好的例子https://stackoverflow.com/a/30353590
该链接引用的是Excel,但与此相同,Autocad/VBA将不会处理剩余的VBA语句,直到模式对话框被取消。
回复

使用道具 举报

238

主题

769

帖子

33

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1721
发表于 2019-3-27 14:40:51 | 显示全部楼层
我试着跟着。因此,我无法获得模态窗口的句柄,但我可以设置一个计时器,让VBA等待,直到离开窗口?像这样吗?
回复

使用道具 举报

1

主题

7

帖子

3

银币

初来乍到

Rank: 1

铜币
11
发表于 2019-3-27 14:47:46 | 显示全部楼层

我不这么认为。看起来您不会使用AutoCAD/VBA函数SendKeys,而是使用Windows API SendMessage函数。计时器有10毫秒的延迟,以便在调用TIMERPROC之前显示对话框。TIMERPROC函数使用FindWindow调用获得对话框的句柄,然后向它发出SendMessage。
这里有几个可能对您有用的链接:
https://www . Google . com/search?q = windows+消息+泵+VBA & rlz = 1c 1 gceu _ enus 820 us 820 & OQ = windows+消息+泵+vba&aqs=chrome..69i 57.8716 j0j 8 & sourceid = chrome & ie = UTF-8
https://docs . Microsoft . com/en-us/windows/desktop/API/winuser/nf-winuser-settimer
几年前,我使用Spy++查看操作系统中传递的消息...
https://docs . Microsoft . com/en-us/visual studio/debugger/introducing-spy-increment?view=vs-2017
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2024-11-22 05:56 , Processed in 0.145908 second(s), 62 queries .

© 2020-2024 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表