как я пользуюсь библиотеками Python в C++?

Чтобы ответить на этот вопрос для вашего класса SunAwtFrame, вопрос слишком неясен. Но у вашего кода есть некоторые проблемы.

  1. _WinWaitActivate() с Sleep(15000) не требуется, поскольку вы можете использовать WinWaitActive($sTitle, $sText, $iTimeout) с тайм-аутом 15 секунд в качестве третьего параметра.
  2. Ваша проблема с остановкой должна состоять в строке 21. Вы не можете добавить новую строку в параметре функции без использования & _ в конце строки. Используйте функцию, подобную _sendKeystrokesSeveralTimes(), чтобы избежать таких длинных значений параметров.
  3. Вы также можете сократить действие MouseMove(), а затем MouseClick(), выполнив MouseClick('left', 268, 363) до целевой позиции мыши.

Вот переработанная версия вашего кода:

#include-once
#include <IE.au3>

Global $sLogin  = InputBox('Security Check', 'Enter your login', '')
Global $sPasswd = InputBox('Security Check', 'Enter your password.', '', '-')
Global $oIE     = _IECreate('https://******************', 0, 0, 1, 1)
Global $oLinks  = _IETagNameGetCollection($oIE, 'input')

Func _clickButtonRun()
    For $oLink In $oLinks
        If String($oLink.type) == 'button' And String($oLink.value) == 'RUN' Then
            _IEAction($oLink, 'click')
            ExitLoop
        EndIf
    Next
EndFunc

Func _sendKeystrokesSeveralTimes($sKey, $iHowOften = 1)
    For $i = 1 To $iHowOften Step 1
        Send($sKey)
        Sleep(200) ; to increase the robustness wait a bit between each input/send
    Next
EndFunc

_clickButtonRun()
_IELoadWait($oIE, 1000)
WinWaitActive('Oracle Fusion Middleware Forms Services', '', 15)
_sendKeystrokesSeveralTimes($sLogin)
_sendKeystrokesSeveralTimes('{TAB}')
_sendKeystrokesSeveralTimes($sPasswd)
_sendKeystrokesSeveralTimes('{TAB}')
_sendKeystrokesSeveralTimes('PROD9')
_sendKeystrokesSeveralTimes('{ENTER}')
WinWaitActive('My Window', '', 5)
_sendKeystrokesSeveralTimes('{TAB}')
_sendKeystrokesSeveralTimes('{DOWN}', 11)
_sendKeystrokesSeveralTimes('{UP}')
_sendKeystrokesSeveralTimes('{RIGHT}')
_sendKeystrokesSeveralTimes('{DOWN}', 4)
_sendKeystrokesSeveralTimes('{RIGHT}')
_sendKeystrokesSeveralTimes('{DOWN}', 2)
_sendKeystrokesSeveralTimes('{RIGHT}')
_sendKeystrokesSeveralTimes('{DOWN}', 5)
_sendKeystrokesSeveralTimes('{RIGHT}')
_sendKeystrokesSeveralTimes('{DOWN}', 4)
_sendKeystrokesSeveralTimes('{ENTER}')
_sendKeystrokesSeveralTimes('03/01/2019')
_sendKeystrokesSeveralTimes('{TAB}', 3)
MouseClick('left', 268, 363)
9
задан sundeep 17 November 2008 в 22:18
поделиться

4 ответа

Можно также попробовать Повышение. Библиотека Python; который имеет эту возможность. Этой библиотекой главным образом пользуются для представления C++ Python, но можно использовать наоборот.

12
ответ дан 4 December 2019 в 07:36
поделиться

Хотя вызов C++ освобождает из Python, более нормально - можно назвать модуль Python от C++, в основном назвав Python intepreter и иметь его, выполняют источник Python. Это называют, встраивая

Кроме того, boost.python библиотека делает это очень легким.

15
ответ дан 4 December 2019 в 07:36
поделиться

Я не попытался непосредственно вызвать функции Python от C++, но здесь являюсь некоторыми альтернативными идеями...

Обычно легче назвать код C++ с высокоуровневого языка как Python, чем наоборот. Если Вы интересуетесь этим подходом, то Вы могли создать кодовую базу C++ и получить доступ к ней из Python. Вы могли или непосредственно использовать внешний API, обеспеченный Python [он должен быть описан где-нибудь в документах Python] или использовать инструмент как БОЛЬШОЙ ГЛОТОК для автоматизации C, ++-to-Python переносящего процесс.

В зависимости от того, как Вы хотите пользоваться библиотекой, Вы могли альтернативно создать сценарии Python, которые Вы называете от C++ с должностным лицом* функции.

1
ответ дан 4 December 2019 в 07:36
поделиться

Пирекс может чисто использоваться с этой целью. В выпуске исходного кода существует пример.

1
ответ дан 4 December 2019 в 07:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: