Тема: Как передать фокус в форму, и послать "ENTER"?
При выполнении определенных команд в акаде открывается форма с запросом подтверждения. Как в эту фору послать enter
Это посылает в командную строку.
ThisDrawing.SendCommand vbCr
Информационный портал для профессионалов в области САПР
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Форумы CADUser → Программирование → VBA → Как передать фокус в форму, и послать "ENTER"?
Чтобы отправить ответ, вы должны войти или зарегистрироваться
При выполнении определенных команд в акаде открывается форма с запросом подтверждения. Как в эту фору послать enter
Это посылает в командную строку.
ThisDrawing.SendCommand vbCr
Const HWND_TOPMOST = -1 Const HWND_NOTOPMOST = -2 Const SWP_NOSIZE = &H1 Const SWP_NOMOVE = &H2 Const SWP_NOACTIVATE = &H10 Const SWP_SHOWWINDOW = &H40 Private Declare Sub SetWindowPos Lib "User32" (ByVal hWnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) '---- SetWindowPos Me.hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE Or SWP_SHOWWINDOW Or SWP_NOMOVE Or SWP_NOSIZE SendKeys "{ENTER}"
Также можно использовать
SW_SHOWNORMAL=1 ShowWindow WinWnd, SW_SHOWNORMAL
где WinWnd хэндл интерисующего окна
Private Declare Function SetActiveWindow Lib "user32.dll" (ByVal hwnd As Long) As Long SetActiveWindow WinWnd 'для поста по выше Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
Уточнение.
При печати в файл появляется окно "куда сохранять".
и в Этом окне надо нажать Кнопку "OK". " Эта кнопка уже в фокусе
Активируете окно и посылаете.
SendKeys "{ENTER}"
если к примеру нужно переместить фокус на другой объект в активной форма, то
SendKeys "{TAB}"
если хотите послать сообщение более "изящно" и без промаха, то воспользуйтесь API (но это совсем другая история)
Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
уважаемый SmeL
Я чегото запутался.
У меня выполняется команда Plot через ThisDrawing.SendCommand ("Plot...")
После чего появляется окно Акада (это не моя форма) с запросом куда сохранять. мне нужно только послать ENTER/
Плиз. Опиши нужную чать кода по подробней.
а то не могу врубиться
> pif32
Запустите команду как "-plot", тогда все запросы будут приводится в командной строке, без появления диалога.
> pif32
Вот с этого нужно было и начинать, что работаете с PLOT, уже ответил Сидор Лютый
Да!.. для подавления диалога сохранения еще нужно будет временно выставить filedia в 0.
> SmeL
А ведь вы зажилили ответ на этот вопрос, когда я тоже столкнулся с этой проблемой)))))):
https://www.caduser.ru/forum/topic25147.html
> Сидор Лютый
:D а может я спал в это время, задавайте новый вопрос постараюсь ответить ;)
ThisDrawing.SendCommand "-plot Y Model" & vbCr & "Jaws PDF Creator" & vbCr
ThisDrawing.SendCommand "A1" & vbCr
ThisDrawing.SendCommand "M" & vbCr 'M milimetr
ThisDrawing.SendCommand "L" & vbCr
ThisDrawing.SendCommand "Y" & vbCr 'Plot upSide YN
ThisDrawing.SendCommand "W" & vbCr 'Plot area Window
ThisDrawing.SendCommand Str(mini(0)) & "," & Str(mini(1)) & vbCr ThisDrawing.SendCommand Str(maxi(0)) & "," & Str(maxi(1)) & vbCr ThisDrawing.SendCommand "F" & vbCr 'Fit
ThisDrawing.SendCommand "C" & vbCr 'Center
ThisDrawing.SendCommand "Y" & vbCr
ThisDrawing.SendCommand vbCr 'plot stlyl name
ThisDrawing.SendCommand "Y" & vbCr
ThisDrawing.SendCommand "A" & vbCr
ThisDrawing.SendCommand "N" & vbCr
ThisDrawing.SendCommand "N" & vbCr
ThisDrawing.SendCommand "Y" & vbCr
Здесь запрос на сохранение.
Запросы все в командной строке,кроме запроса на сохранение.
Запросы все в командной строке,кроме запроса на сохранение.
Еще раз: filedia = 0, и запрос имени файла для сохранения тоже будет в КС
ThisDrawing.SetVariable "FILEDIA", 0
Не помогает
ThisDrawing.SetVariable "FILEDIA", 0
ThisDrawing.SendCommand "-plot Y Model" & vbCr & "Jaws PDF Creator" & vbCr
ThisDrawing.SendCommand "A1" & vbCr
ThisDrawing.SendCommand "M" & vbCr 'M milimetr
....
Вылезает откно от
Jaws PDF Creator
аналогично Acrobate Disc
Эээээээ.. Я на "PublishToWeb JPG" испытывал. Там все нормально.
Видимо, придется обратиться к технологии SmeL-а:)
ThisDrawing.SendCommand "-plot " & vbCrLf & vbCrLf & vbCrLf & vbCrLf & vbCrLf & vbCrLf
я вот этим распечатал Model :)
Забыл сказать что я настроил Plot вначале через интерфейс, если возникнут проблемы с определением принтера по умолчанию то помогу :)
тов. SmeL
а ранее приведенный код как использовать.
2. Если какой нибудь сонвертор в PDF, без вывода запроса на сохранение.
Const HWND_TOPMOST = -1
Const HWND_NOTOPMOST = -2
Const SWP_NOSIZE = &H1
Const SWP_NOMOVE = &H2
Const SWP_NOACTIVATE = &H10
Const SWP_SHOWWINDOW = &H40
Private Declare Sub SetWindowPos Lib "User32" (ByVal hWnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long)
'----
SetWindowPos Me.hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE Or SWP_SHOWWINDOW Or SWP_NOMOVE Or SWP_NOSIZE
SendKeys "{ENTER}"
> pif32
А это не пробовали?
AppActivate Title SendKeys "{ENTER}", True
где Title - имя окна, в которе надо послать Enter
Все что я писал выше будет работать с не модальными формами из ACAD-а либо с любыми формами, но к примеру из DLL или сторонней апликации. т.к. модальные формы ACAD-а останавливают выполнения макроса пока они активны. А почему Вас не устраивает -plot. я распечатал через него, хотя поставил переходов на новую строку слишком много.
А почему Вас не устраивает -plot.
А что вы имеете ввиду?
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Форумы CADUser → Программирование → VBA → Как передать фокус в форму, и послать "ENTER"?
Форум работает на PunBB, при поддержке Informer Technologies, Inc