点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
我正在用C#winforms构建应用程序。
如果我们按照元数据的思路考虑,我将尽我所能捕获有关用户打开会话的尽可能多的信息。
我已经获得了所需的所有会话信息。
现在我很好奇我可以捕获多少关于屏幕上可见数据的信息。
我的直觉是想对控件进行迭代,看看是否可以捕获文本框和标签。
但是,我在挣扎。
查看文档,我看到有各种各样的" FindBy"功能,但是只有当您已经知道各个控件的名称时,所有这些功能才被设计为有用。
有人知道我如何浏览/迭代用户区域中的所有控件并捕获其名称/值吗?
非常感谢您的提示!
:)
到目前为止的代码....
sap_helper类
{
公共静态字典
{
字典
GuiApplication sapGuiApp;
SapROTWr.CSapROTWrapper sapROTWrapper =新的SapROTWr.CSapROTWrapper();
object SapGuilRot = sapROTWrapper.GetROTEntry(" SAPGUI");
对象引擎= SapGuilRot.GetType()。InvokeMember(" GetSCriptingEngine",System.Reflection.BindingFlags.InvokeMethod,
null,SapGuilRot,null);
sapGuiApp =引擎为GuiApplication;
int i = sapGuiApp.Children.Count;
如果(sapGuiApp.Connections.Length> 0)
{
GuiConnection connection = sapGuiApp.Connections.ElementAt(0)作为GuiConnection;
foreach(连接中的GuiSession child_session.Children)
{
GuiSession session = child_session作为GuiSession; //connection.Children.ElementAt(0)作为GuiSession;
//填充用户定义的结构
SapInfoItem sii =新的SapInfoItem();
sii.system_name = session.Info.SystemName;
sii.client = session.Info.Client;
sii.program = session.Info.Program;
sii.screen_number = session.Info.ScreenNumber;
sii.handle = session.ActiveWindow.Handle;
sii.transaction = session.Info.Transaction;
//向字典集合中添加结构
sapInfo.Add(sii.handle.ToString(" X"),sii);
}
connection = null;
}
sapGuiApp = null;
SapGuilRot = null;
sapROTWrapper = null;
返回sapInfo;
}
}
您好,西蒙,
可以肯定,您可以很容易地理解扫描过程。 这是带有子过程GetID的递归调用。 在此子过程中,我将控件的ID,名称和文本(值)添加到outText变量中。我从一个会话的集合开始在主子过程中进行扫描。
在GetIDs函数中,我捕获了GuiUserArea并仅使用其中的控件。 GUIUserArea具有这样的ID-/app/con [0]/ses [0]/wnd [0]/usr/...希望以C#语法传输它没有问题。
这是SAP登录屏幕上的示例。
享受它。
干杯
Stefan
谢谢,没想到它使用了递归,对我来说功能完善。
一周热门 更多>