Тема: Как передать фокус в форму, и послать "ENTER"?

При выполнении определенных команд в акаде открывается форма с запросом подтверждения. Как в эту фору послать enter
Это посылает в командную строку.
ThisDrawing.SendCommand vbCr

Re: Как передать фокус в форму, и послать "ENTER"?

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}"

Re: Как передать фокус в форму, и послать "ENTER"?

Также можно использовать

SW_SHOWNORMAL=1
ShowWindow WinWnd, SW_SHOWNORMAL

где WinWnd хэндл интерисующего окна

Re: Как передать фокус в форму, и послать "ENTER"?

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

Re: Как передать фокус в форму, и послать "ENTER"?

Уточнение.
При печати в файл появляется окно "куда сохранять".
и в Этом окне надо нажать Кнопку  "OK". " Эта кнопка уже в фокусе

Re: Как передать фокус в форму, и послать "ENTER"?

Активируете окно и посылаете.
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

Re: Как передать фокус в форму, и послать "ENTER"?

уважаемый SmeL
Я чегото запутался.
У меня выполняется команда Plot через ThisDrawing.SendCommand ("Plot...")
После чего появляется окно Акада (это не моя форма) с запросом куда сохранять. мне нужно только послать ENTER/
Плиз. Опиши нужную чать кода по подробней.
а то не могу врубиться

Re: Как передать фокус в форму, и послать "ENTER"?

> pif32
Запустите команду как "-plot", тогда все запросы будут приводится в командной строке, без появления диалога.

Re: Как передать фокус в форму, и послать "ENTER"?

> pif32
Вот с этого нужно было и начинать, что работаете с PLOT, уже ответил Сидор Лютый

Re: Как передать фокус в форму, и послать "ENTER"?

Да!.. для подавления диалога сохранения еще нужно будет временно выставить filedia в 0.

Re: Как передать фокус в форму, и послать "ENTER"?

> SmeL
А ведь вы зажилили ответ на этот вопрос, когда я тоже столкнулся с этой проблемой)))))):
https://www.caduser.ru/forum/topic25147.html

Re: Как передать фокус в форму, и послать "ENTER"?

> Сидор Лютый
:D а может я спал в это время, задавайте новый вопрос постараюсь ответить ;)

Re: Как передать фокус в форму, и послать "ENTER"?

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
Здесь запрос на сохранение.

Re: Как передать фокус в форму, и послать "ENTER"?

Запросы все в командной строке,кроме запроса на сохранение.

Re: Как передать фокус в форму, и послать "ENTER"?

pif32 пишет:

Запросы все в командной строке,кроме запроса на сохранение.

Еще раз: filedia = 0, и запрос имени файла для сохранения тоже будет в КС

Re: Как передать фокус в форму, и послать "ENTER"?

ThisDrawing.SetVariable "FILEDIA", 0
Не помогает

Re: Как передать фокус в форму, и послать "ENTER"?

ThisDrawing.SetVariable "FILEDIA", 0
ThisDrawing.SendCommand "-plot Y Model" & vbCr & "Jaws PDF Creator" & vbCr
ThisDrawing.SendCommand "A1" & vbCr
ThisDrawing.SendCommand "M" & vbCr 'M milimetr
....

Re: Как передать фокус в форму, и послать "ENTER"?

Вылезает откно от
Jaws PDF Creator
аналогично Acrobate Disc

Re: Как передать фокус в форму, и послать "ENTER"?

Эээээээ.. Я на "PublishToWeb JPG" испытывал. Там все нормально.
Видимо, придется обратиться к технологии SmeL-а:)

Re: Как передать фокус в форму, и послать "ENTER"?

ThisDrawing.SendCommand "-plot " & vbCrLf & vbCrLf & vbCrLf & vbCrLf & vbCrLf & vbCrLf

я вот этим распечатал Model :)

Re: Как передать фокус в форму, и послать "ENTER"?

Забыл сказать что я настроил Plot вначале через интерфейс, если возникнут проблемы с определением принтера по умолчанию то помогу :)

Re: Как передать фокус в форму, и послать "ENTER"?

тов. 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}"

Re: Как передать фокус в форму, и послать "ENTER"?

> pif32
А это не пробовали?

AppActivate Title
SendKeys "{ENTER}", True

где Title - имя окна, в которе надо послать Enter

Re: Как передать фокус в форму, и послать "ENTER"?

Все что я писал выше будет работать с не модальными формами из ACAD-а либо с любыми формами, но к примеру из DLL или сторонней апликации. т.к. модальные формы ACAD-а останавливают выполнения макроса пока они активны. А почему Вас не устраивает -plot. я распечатал через него, хотя поставил переходов на новую строку слишком много.

Re: Как передать фокус в форму, и послать "ENTER"?

А почему Вас не устраивает -plot.
А что вы имеете ввиду?