GuiUserArea中的C#迭代控件

2020-08-14 02:09发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)我正在用C#winforms构建...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我正在用C#winforms构建应用程序。

如果我们按照元数据的思路考虑,我将尽我所能捕获有关用户打开会话的尽可能多的信息。


我已经获得了所需的所有会话信息。


现在我很好奇我可以捕获多少关于屏幕上可见数据的信息。
我的直觉是想对控件进行迭代,看看是否可以捕获文本框和标签。

但是,我在挣扎。

查看文档,我看到有各种各样的" FindBy"功能,但是只有当您已经知道各个控件的名称时,所有这些功能才被设计为有用。


有人知道我如何浏览/迭代用户区域中的所有控件并捕获其名称/值吗?


非常感谢您的提示!

:)




到目前为止的代码....



sap_helper类


{

公共静态字典 get_sapInfo()

{

字典 sapInfo =新字典();

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;

}


}


2条回答
超级大咸鱼
2020-08-14 02:51

谢谢,没想到它使用了递归,对我来说功能完善。

私有Sub EnfoqueObjeto(集合,busqueda作为String)
 '我应该将其转换为布尔型递归以在找到字符串后退出
 '-指令---------------------------------------------------  -------
 关于错误继续
 '-变量-----------------------------------------------  --------
 昏暗的我,孩子
 'Debug.Print" -------"
 如果InStr(1,collection.ID(),"/img/usr/",1)然后
 'Debug.Print collection.ID()
 'Debug.Print"#"&collection.Name()
 'Debug.Print" @"&collection.Text()
   如果collection.Text()= busqueda然后
     'Debug.Print collection.ID()
     collection.SetFocus
   万一
 其他
 万一
 设置Child = collection.Children()
 如果IsObject(Child)然后
   如果Child.Count()> 0然后
     对于i = 0到Child.Count()-1
     EnfoqueObjeto Child.Item(CInt(i)),busqueda
     下一个
   万一
 万一
 结束子
 'call ... EnfoqueObjeto objSess.FindById(" wnd [1]"),"/img/LISTA PMS" 

一周热门 更多>