none
Process Start Einstellung RRS feed

  • Frage

  • Hallo

    Kurzer Hintergrund:
    Meine Anwendung versendet Mails über die Notes API. Da die Meine Anwendung eine mögliche Form eines MDI ist muss diese wie das übergeordnete MDI-Formular mit der Zielplatform Any-Cpu komiliert werden um überall lauffähig zu sein.

    Da die Notes API jedoch nur 32 Bit unterstützt kann ich nicht direkt von meiner Anwendung auf diese Zugreifen.
    Als Umweg wird daher für den Email Versan selbst eine kleine 32 Bit exe gestartet welche dies erledigt. Funktioniert soweit auch sehr gut jedoch gibt es beim starten der Exe ein kleines Problem.

    Wird diese vom Visual Studio aus gestartet erscheint bei der von Lotus Notes getriggerten Passwort eingabe eine Windows Form dafür. Wird diese jedoch von meiner Anwendung aus gestartet öffnet sich diese Passworteingabe als Konsole.

    Grundsätzlich ist das Versandprogramm ein Konsolenprogramm welches mit Ausgabetyp: Windows-Anwendung kompeliert wird um keine Konsole anzuzeigen.

    In meinem Programm würde ich die so erstellte Exe einfach mittels System.Diagnostics.Process.Start(pfad, argumente);

    Da ich dabei wie gesagt ein anderes unerwünschte Verhalten habe als beim Start aus dem VS suche ich nach einer Möglichkeit dies zu ändern.

    Es ist es möglich hier etwas zu verändern?

    Danke
    Reinhard

    Mittwoch, 19. September 2012 11:48

Antworten

  • Hi Reinhard,

    probiere mal dein Programm als Windows Form zu erstellen, beim Show die Me.Visible = Fals und dann die Notes API auszuführen.

    MFG

    Björn 

    • Als Antwort markiert lolsharp Mittwoch, 19. September 2012 15:00
    Mittwoch, 19. September 2012 14:31
  • So hab nun die für mich perfekte Lösung gefunden.

    Habe diese Anleitung befolgt:http://msdn.microsoft.com/en-us/library/Aa984417

    Mein Code wird im Konstruktor der Form ausgeführt und das Main der neuen Klasse enthält nur

            public static void Main(string[] args)
            {
                Form1 f1 = new Form1(args);
            }

    mfg
    Reinhard

    • Als Antwort markiert lolsharp Donnerstag, 20. September 2012 06:50
    Donnerstag, 20. September 2012 06:50

Alle Antworten

  • Hi Reinhard,

    ich denk die eleganteste Lösung ist hier dein Programm als x86 zu kompilieren und die API direkt einzubinden. Ist auch überall lauffähig.

    MFG

    Björn

    • Als Antwort markiert lolsharp Mittwoch, 19. September 2012 12:12
    • Tag als Antwort aufgehoben lolsharp Mittwoch, 19. September 2012 12:12
    Mittwoch, 19. September 2012 12:08
  • Das MDI kann ich nicht als x86 kompelieren da zu viel dahinter liegt.
    Wenn ich meinen Teil als x86 kompelieren lässt es sich bei einem 64bit Rechner nicht in das MDI einfügen. (Könnte sein das dies durch den Einbindungsvorgang umgangen werden könnte, kenne mich dabei allerdings nicht wirklichaus da dies durch eine Standardfunktion welche nur Pfad und Form-Namen braucht erledigt wird.)

    Deshalb auch überhaupt der Umweg über ein eigenes Programm

    Mittwoch, 19. September 2012 12:16
  • Hallo lolsharp,

    hast du es mal mit "AnyCPU" probiert? Das läuft sowohl auf 32- als auch auf 64-Bit.


    Viele Grüße Holger M. Rößler


    Mittwoch, 19. September 2012 12:47
  • Dann läuft das Programm aber nicht die Notes API ;). (zumindest nicht auf einem 64 Bit System)
    Ist auch nicht das wirklich Problem.

    Ich möchte beim starten des Zusatz Programms durch mein Programm das gleiche Verhalten wie
    beim starten der zusatz Programms im Debugger.

    Das Programm läuft in einem Teil der Notes API auf ein Problem (fehlendes Passwort und startet daher einen Dialog).

    Bei einem Start aus dem VS kommt dieser:

    Bei einem Start über System.Diagnostics.Process.Start diesen

    Ich möchte jedoch auch beim externen start den ersten Dialog angezeigt bekommen.
    Es muss irgendwelche unterschiede geben die zu diesem Ergebnis führen.

    mfg
    Reinhard

    Mittwoch, 19. September 2012 13:11
  • Hi Reinhard,

    probiere mal dein Programm als Windows Form zu erstellen, beim Show die Me.Visible = Fals und dann die Notes API auszuführen.

    MFG

    Björn 

    • Als Antwort markiert lolsharp Mittwoch, 19. September 2012 15:00
    Mittwoch, 19. September 2012 14:31
  • Ok Danke das Ganze funktioniert so schon mal :). Code in den Konstruktor kopiert und ausführen lassen läuft perfekt. Wo ist der erste Punkt(Event?) in dem ich eine Form wieder schliessen kann?

    Mich würde jetzt noch interressieren warum das so ist.
    Ich dachte eigentlich das durch das Kompilieren als Windows Anwendung die Einstellung im Code festgelegt wird und nicht nur eine temporäre Einstellung für das Ausführen im VS.

    Danke
    Reinhard

    Mittwoch, 19. September 2012 15:00
  • So hab nun die für mich perfekte Lösung gefunden.

    Habe diese Anleitung befolgt:http://msdn.microsoft.com/en-us/library/Aa984417

    Mein Code wird im Konstruktor der Form ausgeführt und das Main der neuen Klasse enthält nur

            public static void Main(string[] args)
            {
                Form1 f1 = new Form1(args);
            }

    mfg
    Reinhard

    • Als Antwort markiert lolsharp Donnerstag, 20. September 2012 06:50
    Donnerstag, 20. September 2012 06:50