Как читать данные SAP HTMLViewer Control с помощью VBA или C#
Я пытаюсь автоматизировать задачу SAP, в которой HTMLViewercontrol используется для отображения некоторых данных и обновления при необходимости.
HTMLViewercontrol выглядит как показано ниже после загрузки.
Я пытался записать загрузку страницы, но, к сожалению, не получил никакого события на нем.
После того, как я почесал голову в течение нескольких часов, я попытался записать сценарий во время редактирования значений и получил сценарий ниже.
session.findById("wnd[0]/usr/cntlMAIN_CONTAINER/shellcont/shell/shellcont[1]/shell/shellcont[1]/shell/shellcont[1]/shell/shellcont[1]/shell").sapEvent "","COMMAND=NEW&ELEMENT=INP_I_5_I_=123456789&INP_I_6_I_=1.000&INP_I_7_I_=&INP_I_8_I_=16.99&INP_I_9_I_=16.99&INP_I_10_I_=5.50&INP_I_11_I_=","sapevent:A1F1"
session.findById("wnd[0]/usr/cntlMAIN_CONTAINER/shellcont/shell/shellcont[1]/shell/shellcont[1]/shell/shellcont[1]/shell/shellcont[1]/shell").sapEvent "","COMMAND=ENT&ELEMENT=INP_I_5_I_=123456789&INP_I_6_I_=1.000&INP_I_7_I_=&INP_I_8_I_=16.99&INP_I_9_I_=16.99&INP_I_10_I_=5.50&INP_I_11_I_=","sapevent:A1F1"
Я не понимаю, как я могу читать sapevent
значение до редактирования.
Может кто-нибудь, пожалуйста, поделитесь своим опытом в этом.
1 ответ
Решение
Мне удалось отредактировать данные в SAP HTMLViewer по следующему коду:
//Record the script.
//Assign `RecordFile` name as your choice
_session.RecordFile = @"SalesScript.vbs";
//Start recording
_session.Record = true;
//Get session window handle
var handle = _session.ActiveWindow.Handle;
//Set the handle as foreground.
if (SetForegroundWindow(handle))
{
//Send Enter key
SendKeys.SendWait("{ENTER}");
Thread.Sleep(1000);
}
//Get the recording file path to open and get the required fields from it.
var scriptPath = _session.RecordFile;
//Stop the recording.
_session.Record = false;
//You will get the recording script file. You can get the file contains by opening it with `StreamReader`
//Method to set SAP screen foreground.
[DllImport("user32.dll")]
public static extern bool SetForegroundWindow(
int hWnd // handle to window
);