Я пытаюсь взаимодействовать с окном SAP GUI с помощью C #.Используя это решение здесь: решение , я успешно подключился к моему открытому окну GUI.Я могу отправить команду
frame.Maximize();
, которая увеличит окно, как и ожидалось.
Проблема возникает, когда я пытаюсь поместить некоторый текст в текстовое поле.
((GuiTextField)session.FindById("wnd[0]/tbar[0]/okcd")).Text = "InputText";
//or
GuiTextField targetField =
(GuiTextField)session.FindById("wnd[0]/tbar[0]/okcd");
//or
GuiTextField targetField =
(GuiTextField)session.FindById("wnd[0]/tbar[0]/okcd", "GuiTextField");
targetField.Text = "InputText";
Ошибка, которую я получаю:
System.InvalidCastException
HResult=0x80004002
Message=Unable to cast COM object of type 'System.__ComObject' to interface type 'sapfewse.GuiTextField'. This operation failed because the QueryInterface call on the COM component for the interface with IID '{B4D89EE3-6EFD-4F4C-9F42-AD42B71C8EB7}' failed due to the following error: No such interface supported (Exception from HRESULT: 0x80004002 (E_NOINTERFACE)).
Если я вместо этого попробую это:
var x = session.FindById("wnd[0]/tbar[0]/okcd");
, тогда мое окно наблюдения сообщит мне, что x имеет типGuiComponent, а не GuiTextField, как я надеялся.
Это запустится:
GuiComponent targetField = (GuiComponent)session.FindById("wnd[0]/tbar[0]/okcd");
, но затем targetField не имеет свойства текста.
Что мне нужно сделатьчтобы исправить это?Спасибо!