Как программно нажать Enter Key в Powerbuilder - PullRequest
0 голосов
/ 10 мая 2018

У меня есть браузер объектов OLE, в котором есть окно всплывающего сообщения с открываемым мной веб-сайтом, и я хочу программно вызвать клавишу ввода для автоматического закрытия окна сообщения.

Ответы [ 2 ]

0 голосов
/ 11 мая 2018

Если это окно сообщения, вы можете попробовать отправить (32770, 16, 0, 0), где «16» - это десятичное значение для WM_CLOSE, а «32770» - дескриптор для окна сообщения.

0 голосов
/ 10 мая 2018

Поскольку это функциональность в OLE, я думаю, что вам нужно либо управлять этим диалогом через OLE API, и, если в нем нет нужного инструментария, единственный другой путь - это "обойти" OLE непосредственно в Windows.

Таким образом, ответ, вероятно, будет одинаковым для большинства языков программирования Windows - в случае, если у вас недостаточно большой аудитории, привязанной к одному тегу PowerBuilder.Большой вопрос в том, знаете ли вы название этого диалога?

Идея не сильно отличается от нажатия кнопки в любом диалоговом окне на веб-основе, которое открывает банку с «правильной или неправильной дилеммой» и вы уверены, что «делаю это по правильным причинам.

Определенные части PB будут определять внешнюю функцию примерно так:

PUBLIC FUNCTION unsignedlong FindWindow (long  &
   classname, string windowname) LIBRARY "user32.dll" &
   ALIAS FOR FindWindowW

Затем добавьте код, чтобы использовать ее:

unsignedlong hwnd

hwnd = FindWindow( 0, "Window Title if known if not hahaha" )
if hwnd = 0 then
   // fml^2 ("fml squared" originated here now- shared conscious test #1 )
else
   // Yes! Now we have the Windows API, or Post, Send might work fine.
   // Send(hwnd, 273, 0, Handle(cb_OK)) or similar
end if
...