stackoverflow에있는 코드 예제를 사용하여 SAP의 기존 인스턴스에 성공적으로 연결할 수있었습니다.스크립팅을 중지하는 방법은 무엇입니까?
그러나 SAP에서 연결을 끊고 스크립팅을 중지하는 방법에 관해서는 분실 상태입니다.
내 코드가 끝나면 SAP 창에서 여전히 작은 이발소 극을 구부려 볼 수 있습니다. 이는 여전히 연결되어 있음을 나타냅니다.
참고 : 사용자 세션을 종료하고 싶지 않습니다.
내 의도는 단순히 현재 연결에 연결하고, 세션에서 정보 양식을 가져온 다음 연결을 통해 내 참여를 해제하는 것입니다.
그리고 저는 이것을 '올바른'방식으로하고 싶습니다. 추측하고 사용자를 혼란에 빠지기보다는 말합니다.
public static Dictionary<string, SapInfoItem> get_sapInfo()
{
Dictionary<string, SapInfoItem> sapInfo = new Dictionary<string, SapInfoItem>();
GuiApplication sapGuiApp;
SapROTWr.CSapROTWrapper sapROTWrapper = new SapROTWr.CSapROTWrapper();
object SapGuilRot = sapROTWrapper.GetROTEntry("SAPGUI");
object engine = SapGuilRot.GetType().InvokeMember("GetSCriptingEngine", System.Reflection.BindingFlags.InvokeMethod,
null, SapGuilRot, null);
sapGuiApp = engine as GuiApplication;
GuiConnection connection = sapGuiApp.Connections.ElementAt(0) as GuiConnection;
foreach (GuiSession child_session in connection.Children)
{
GuiSession session = child_session as GuiSession; //connection.Children.ElementAt(0) as GuiSession;
SapInfoItem sii = new SapInfoItem();
sii.system_name = session.Info.SystemName;
sii.client = session.Info.Client;
sii.client = 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.CloseConnection();
return sapInfo;
}
내가 C#을 SAP 자동화 처리 이후 오랜 시간이되었습니다해야합니다, C#에서
입니다. 나는 프로세스를 죽이면'GuiApplication'을 폐기할지 기억이 나지 않습니다. 나는 거기에서 시작할 것이고 아마도 Gui 자동화를 멈추고 사용자에게 다시 제어권을 넘겨 주는지 확인하기 위해'Engine'의 Disposing을 시도 할 것이다. – tyh