c# - 获取运行Sap logon vb6的GuiApplication to c#

标签 c# vb6 sap

我必须将 vb6 程序迁移到 C# .net 3.5 用户启动 SAP 登录并进行身份验证, 然后他可以使用该工具使用该工具获取和插入数据 问题: 我可以用反射创建一个新的 GuiApplication,但我不能用它获取当前打开的 GuiSessions:/ 这是当前打开的 GuiApplication 和所有打开的 GuiSession 代码的 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

我用反射试了一下:

 GuiApplication Application = (GuiApplication)System.Activator.CreateInstance(Type.GetTypeFromProgID("SapGui.S‌​criptingCtrl.1"));

我有一个实例但没有现有的 session

最佳答案

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);


        }

使用此方法,您必须引用 SAP 安装的 sapgui 文件夹中的 SapROTWr.DLL。

关于c# - 获取运行Sap logon vb6的GuiApplication to c#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13729561/

相关文章:

c# - 将以毫秒为单位的日期时间转换为 double 或 int?

c# - ngen 是如何工作的?

vb6 - 如何区分 VB5 和 VB6 项目?

sap - 始终将 ALV 网格显示为 ALV 列表?

wcf - 在 SAP 中生成 WSDL Web 服务对象

c# - 日期时间滴答构造时钟前进潜在的错误

c# - 如何将 Windows 外观用于系统托盘上下文菜单?

vb6 - 如何在 Microsoft Tab 控件中移动选项卡?

vb.net - 获取windows中被删除的文件

java - 从Sqoop到Sap Hana的连接失败