“将密钥发送到”对话框
我有一个vba代码,用于AutoCAD 2015。它能够在AutoCAD中激活一个命令,从而打开一个对话框。然后它将继续该对话框上的sendkeys2018年我也在尝试同样的事情,但sendkeys在对话框中不起作用。但是,当我关闭对话框时,它会在命令行中运行sendkeys。不太清楚发生了什么事。谢谢你的帮助
Sub Catchment()
On Error Resume Next
Set AcadApp = GetObject(, "AutoCAD.Application")
If Err Then
Err.Clear
Set AcadApp = CreateObject("AutoCAD.Application")
End If
AppActivate AcadApp.Caption
AcadApp.Visible = True
AcadApp.Application.WindowState = acNorm
AcadApp.ActiveSpace = acModelSpace
If AcadApp.Documents.Count = 0 Then
AcadApp.Documents.Add
End If
AcadApp.ActiveDocument.SendCommand "_CREATECATCHMENTFROMOBJECT" & vbCr
End Sub
Sub Catchment_Storm_SendKeys()
Dim myApp As String
DoEvents
Application.Wait (Now + TimeValue("0:00:01"))
Sleep 250
SendKeys "{TAB}{TAB}{TAB}{TAB}", True
Sleep 250
SendKeys "{ENTER}", True
Sleep 250
SendKeys "{TAB}{TAB}{TAB}{TAB}", True
End Sub
哈哈。这很有趣。我没有意识到几年前我问过这个问题
http://www.theswamp.org/index.php?topic=49598.msg547399#msg547399 卢兹。提示;我患有老年痴呆症';s,但在;至少我不知道';t有阿尔茨海默病';s“;模因
回到你的问题上来——这是模态与非模态的情况吗——也就是说,它在后者中会正常工作吗? 它是模态的。我必须单击“确定”按钮取消它。 有没有办法通过在对话框中定位标题来将焦点更改为对话框?
https://stackoverflow.com/a/30353590该链接引用的是Excel,但同样,在模式对话框关闭之前,Autocad/VBA不会处理剩余的VBA语句。 我试着跟随。因此,我无法获得模式窗口的句柄,但我可以放置一个计时器,让VBA等待到窗口外?像这样的?
我不';我不这么认为 ;看来你赢了';不要使用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
页:
[1]