Du hast eine Konsolenapplikation erstellt, und darin läuft dann keine Nachrichtenbearbeitungsschleife (message queue).
Probiere mal z.B. eine WinForms-Applikation.
Habe ich auch schon versucht, leider ohne Erfolg. Echt ärgerlich ;(
Hallo zusammen,
ich bin grade dabei eine Verbindung von einer Userform ins SAP zu erstellen.
Mit meinem momentanen Code bekomme ich auch eine Verbindung, allerdings ist das SAP Fenster in einer komischen Ansicht (Buttons werden zum Beispiel nicht angezeigt) Siehe Screenshot. Weiß jemand woran das liegt?
Hier meine Main:
public static void login(string myclient, string mylogin, string mypass, string mylang)
{
GuiTextField client = (GuiTextField)SAPActive.SapSession.ActiveWindow.FindByName("RSYST-MANDT", "GuiTextField");
GuiTextField login = (GuiTextField)SAPActive.SapSession.ActiveWindow.FindByName("RSYST-BNAME", "GuiTextField");
GuiTextField pass = (GuiTextField)SAPActive.SapSession.ActiveWindow.FindByName("RSYST-BCODE", "GuiPasswordField");
GuiTextField language = (GuiTextField)SAPActive.SapSession.ActiveWindow.FindByName("RSYST-LANGU", "GuiTextField");
client.SetFocus();
client.Text = myclient;
login.SetFocus();
login.Text = mylogin;
pass.SetFocus();
pass.Text = mypass;
language.SetFocus();
language.Text = mylang;
//Press the green checkmark button which is about the same as the enter key
GuiButton btn = (GuiButton)SapSession.FindById("/app/con[0]/ses[0]/wnd[0]/tbar[0]/btn[0]");
btn.SetFocus();
btn.Press();
}
public static void openSAP(string env)
{
SAPActive.SapGuiApp = new GuiApplication();
string connectString = null;
if (env.ToUpper().Equals("DEFAULT"))
{
connectString = "R3Q ECC Testsystem EHP8";
}
else
{
connectString = env;
}
SAPActive.SapConnection = SAPActive.SapGuiApp.OpenConnection(connectString, Sync: true);
SAPActive.SapSession = (GuiSession)SAPActive.SapConnection.Sessions.Item(0); }
Die Buttons sind allerdings vorhanden. Wenn man lange genug mit der Maus über dem Button sit, erscheint ein Tooltip und der Button funktioniert dann auch. Ich hab ehct keine Ahnung woran das liegt :(
Interessanter Code.... da scheint jemand (vermutlich ein Kollege von Dir..?) von einer anderen Programmiersprache zu kommen und versucht dortige Muster auf C# umzumünzen ;-)
)
Videotutorial Ich wollte den Code jetzt etwas anpassen aber komm hier nicht weiter
Zitat von Abt
Was für Dich eine "Hauptklasse" ist weiß ich nicht
Ich meinte damit nur die Klasse meiner Hauptuserform
Zitat von Abt
Wo auch immer das Image Objekt verwaltet wird; wird wohl nicht richtig verwaltet.
Die ImageToString Methode und SetGeneralVars sitzen beide in der 2. Klasse.
Das Bild wird in der Hauptklasse geöffnet und in eine Variable gespecihert und dann über SetGeneralVars an die zweite Klasse übergeben.
ich habe leider mit meinem Code ein kleines Problem und komme nicht weiter.
Ich habe eine Userform mit mehreren Buttons. Dazu eine PictureBox
Das Bild wird wie folgend hochgeladen:
Drücke ich auf den Button Save wird das Bild in einen String umgewandelt und zusammen mit den Infos aus den Textboxen in einer Datei gespeichert:
private string ImageToString(Image img, ImageFormat imgFormat)
{
string sImg;
MemoryStream MS = new MemoryStream();
img.Save(MS, imgFormat); //Hier tritt der Fehler auf!!!!
sImg = Convert.ToBase64String(MS.ToArray());
MS.Close();
return sImg;
}
Über einen Öffnen Button kann ich jetzt die Inhalte der Textboxen und der PictureBox wieder mit den Inhalten der Datei befüllen. Drücke ich jetzt direkt wieder auf Speichern (weil ich irgendwelche Textboxen geändert habe) bekomme ich den im Titel genannten Fehler. Wenn ich aber erneut ein Bild auswähle bekomme ich diesen Fehler nicht.
Löscht man die Zeile fs.Close(); oder kommentiert sie aus, verschwindet der Fehler.
herbivore
Das Problem sit, das ich dieseLÖsung nicht nutzen kann, weilin dem Code kein fs.close() vorhanden ist :(
Aber ich werde nochmal ein neues thema mit meinem code eröffnen. Vllt reden wir ja auch aneinander vorbei :)
Hallo zusammen,
kann mir jemand weiterhelfen? Ich habe eigentlich den identischen Code wie oben beschrieben und auch das identische Fehlerbild. Leider hilft es auch nichts den MemoryStream offen zu halten. Also wenn ich die Zeile MS.Close() auskommentiere tritt der Fehler immernoch auf.