我必须将vb6程序迁移到C#.net 3.5用户启动SAP登录并进行身份验证,然后他可以使用该工具使用该工具获取和插入数据问题:我可以用反射创建一个新的GuiApplication,但我可以用它获取当前打开的GuiSessions:/这里是当前打开GuiApplication所有打开的GuiSessions的代码的vb6部分
Dim obj As Object
Set obj = CreateObject("SAPGUI")
Set obj = obj.GetScriptingEngine
If TypeName(obj) = "GuiApplication" Then
Set SapAutomationObject = obj
SapAutomationObject.AllowSystemMessages = False
Debug.Print "SAP Automation OK"
End If
Run Code Online (Sandbox Code Playgroud)
我试着反思:
GuiApplication Application = (GuiApplication)System.Activator.CreateInstance(Type.GetTypeFromProgID("SapGui.S??criptingCtrl.1"));
Run Code Online (Sandbox Code Playgroud)
我有一个实例,但没有现有的会话
小智 7
public static void testConnection()
{
SapROTWr.CSapROTWrapper sapROTWrapper = new SapROTWr.CSapROTWrapper();
object SapGuilRot = sapROTWrapper.GetROTEntry("SAPGUI");
object engine = SapGuilRot.GetType().InvokeMember("GetSCriptingEngine", System.Reflection.BindingFlags.InvokeMethod,
null, SapGuilRot, null);
SAPconnection.sapGuiApp = engine as GuiApplication;
GuiConnection connection = sapGuiApp.Connections.ElementAt(0) as GuiConnection;
GuiSession session = connection.Children.ElementAt(0) as GuiSession;
MessageBox.Show(session.Info.User + " !!||!! " + session.Info.Transaction);
}
Run Code Online (Sandbox Code Playgroud)
使用此方法,您必须引用SAP安装的sapgui文件夹中的SapROTWr.DLL.