乐筑天下

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

“将密钥发送到”对话框

[复制链接]

238

主题

769

帖子

33

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1721
发表于 2019-3-27 12:08:50 | 显示全部楼层 |阅读模式
我有一个vba代码,用于AutoCAD 2015。它能够在AutoCAD中激活一个命令,从而打开一个对话框。然后它将继续该对话框上的sendkeys
2018年我也在尝试同样的事情,但sendkeys在对话框中不起作用。但是,当我关闭对话框时,它会在命令行中运行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 | 显示全部楼层
哈哈。这很有趣。我没有意识到几年前我问过这个问题
http://www.theswamp.org/index.php?topic=49598.msg547399#msg547399
回复

使用道具 举报

238

主题

769

帖子

33

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1721
发表于 2019-3-27 14:37:06 | 显示全部楼层
卢兹。提示;我患有老年痴呆症's,但在;至少我不知道't有阿尔茨海默病's“;模因
回到你的问题上来——这是模态与非模态的情况吗——也就是说,它在后者中会正常工作吗?
回复

使用道具 举报

238

主题

769

帖子

33

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1721
发表于 2019-3-27 14:40:51 | 显示全部楼层
它是模态的。我必须单击“确定”按钮取消它。
回复

使用道具 举报

1

主题

7

帖子

3

银币

初来乍到

Rank: 1

铜币
11
发表于 2019-3-27 14:47:46 | 显示全部楼层
有没有办法通过在对话框中定位标题来将焦点更改为对话框?
回复

使用道具 举报

238

主题

769

帖子

33

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1721
发表于 2019-3-28 09:27:22 | 显示全部楼层

https://stackoverflow.com/a/30353590该链接引用的是Excel,但同样,在模式对话框关闭之前,Autocad/VBA不会处理剩余的VBA语句。
回复

使用道具 举报

1

主题

7

帖子

3

银币

初来乍到

Rank: 1

铜币
11
发表于 2019-3-28 09:34:54 | 显示全部楼层
我试着跟随。因此,我无法获得模式窗口的句柄,但我可以放置一个计时器,让VBA等待到窗口外?像这样的?
回复

使用道具 举报

238

主题

769

帖子

33

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1721
发表于 2019-3-28 13:04:14 | 显示全部楼层

我不'我不这么认为 看来你赢了'不要使用AutoCAD/VBA函数SendKeys,而是使用Windows API SendMessage函数 计时器是一个10毫秒的延迟,允许在调用TIMERPROC之前显示对话框 TIMERPROC函数使用FindWindow调用获取对话框的句柄,然后向其发出SendMessage
这里有几个你可能会觉得有用的链接:
https://www.google.com/search?q=windows+消息+泵+vba&rlz=1C1GCEU_enUS820US820&oq=windows+消息+泵+vba&aqs=铬.69i57.8716j0j8&sourceid=chrome&ie=UTF-8https://docs.microsoft.com/en-us/windows/desktop/api/winuser/nf-winuser-settimer几年前,我使用Spy++查看在操作系统中传递的消息…https://docs.microsoft.com/en-us/visualstudio/debugger/introducing-spy-increment?view=vs-2017
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-13 02:34 , Processed in 0.374895 second(s), 68 queries .

© 2020-2025 乐筑天下

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