Laden...

Forenbeiträge von STF-DIR Ingesamt 368 Beiträge

27.02.2023 - 17:04 Uhr

Hallo,

nein, das andere Program is nicht von mir. Es nennt sich Active Sky for Prepar3D von hifisimtech.

Wenn ich ALT+F4 drücke, dann kommt das kleine Fenster mit der Info das die Session beendet wird leider auch nicht.
Ich hab keine Idee wie ich das machen kann.

Der Developer ist leider auch nicht sehr hilfsbereit.

Matthias

19.02.2023 - 01:22 Uhr

Hello,

also ich hab den Process gefunden und identifiziert.


Process.GetProcessesByName(processName);
.
.
.

Dann mit CloseMainWindow beendet.
Das beenden funktioniert super.
Leider passiert dann genau das was ich im ersten Post beschrieben habe.
Wenn ich also den Prozess so beende und dann das Program neu starte, dann kommt da die
Meldung, das wohl noch eine Session offen ist.

Wenn ich das Programm normal, also über das "X" beende, dann kommt da auch noch ein kleines Fenster wo diese
Session geschlossen wird.
Das kommt aber nicht, wenn ich den Prozess über CloseMainWindow beende.

Gibt es da noch andere Möglichkeiten ?

Matthias

17.02.2023 - 20:41 Uhr

Hallo,

sorry für die späte Antwort und danke, werd ich versuchen.

Matthias

03.02.2023 - 19:52 Uhr

Hallo,

vielleicht kann ja jemand helfen.

Ich habe ein kleines Program ( client ), welches über das netzwerk mit meinm Server verbungen ist und dieser dann ein anderes Program startet, ist so eine Art Remote.

Das funktioniert ganz gut.

Das Problem ist, das ich das gestartete Program ordentlich schließen muss.
Das heißt, wenn ich in dem Program oben rechts auf das "X" klicke und es so beende, dann macht das noch so eine Art kleanup.
Man sieht dann auch das da noch ein kleines Fenster kurz auftaucht wo eine Session geschlossen wird.
Schließe ich das Program nun einfach indem ich den Task beende und starte es dann wieder, dann kommt da eine Meldung, das wohl noch eine Session offen ist.

Also die Frage ist, wie ich in C# das Program schlißen kann und es dann so beendet wird als ob man es über das "X" beendet, also ordentlich sozusagen.

Danke
Matthias

11.10.2022 - 23:59 Uhr

Hallo,

also ich danke für die Hinweise, aber entschuldige mich, das ich noch am Anfang damit stehe.

Matthias

11.10.2022 - 23:34 Uhr

Hallo,

ich hoffe ihr könnt mir bei einem kleinen Problem helfen ?
Ich muss eine xml datei erstellen, die dann von einem anderen programm gelesen wird.
Die datei muss am ende genau so aussehen:


<?xml version="1.0" encoding="utf-8"?>
<companyroutes>
<route name="EDDHEDDP01">EDDH AMLUH M852 POVEL Z94 KENIG T959 KOJEC EDDP</route>
</companyroutes>

Irgendwie finde ich aber nicht heraus, wie ich das hinbekomme?
Ich weiß nicht genau wie die Classe definiert sein muss, die ich dann serialisieren kann.


    [Serializable()]
    public class Companyroutes
    {
        public string route { get; set; }
        public string name { get; set; }        
    }

Ich hab es so versuch, aber das ergebnis hat nicht so sehr viel mit dem gewünschten xml format zu tun.

Könnt ihr mir da mal bitte auf die Sprünge helfen ?

Danke
Matthias

26.01.2022 - 11:46 Uhr

Tranks a lot, i will have a look at it

Matthias

26.01.2022 - 01:48 Uhr

Hallo,

danke für die ausführliche verständliche Antwort.
Dann lass ich das erst mal so.

Mich würde aber trotzdem die von dir erwähnte "Edge-Engine" interessieren.
Muss ich die Installieren oder soll das die "Webbrowser" komponente sein?
Die hatte zuerst getestet, aber da bekomme ich immer die blöden Script-Fehler. ( die einfach deaktivieren hab ich probiert, dann läd aber die Webseite nicht mehr )

Matthias

25.01.2022 - 22:49 Uhr

Hallo,
ich wusste nicht genau welches Forum ich wählen sollte und hoffe ich bin hier richtig, falls nicht ... sorry dafür.

Also eine Frage zu Cefsharp. Ich habe das noch nie benutzt oder gebraucht, aber jetzt muss ich in mein Project einen
Webbrowser einbinden, der Javascript und HTML5, also aktuelle Webseiten unterstützt.
Die Googlesuche sprach immer wieder von Cefsharp, also hab ich das installiert, funktioniert auch.

Mir ist aber aufgefallen, das ich im Ausgabepfad ( also Debug/Release ) sehr viele Dateien habe, siehe Anhnag.

Kann man das irgendwie unterbinden ?

Danke
Matthias

19.05.2021 - 15:19 Uhr

Hallo,

wie das Program auf 4.5 kommt weiß ich auch nicht so genau, ist aber auch nicht so tragisch.
Ich muss ja nur irgendwie die Berechnung in c# nachbauen. Wenn es da kleinere Abweichungen geben sollte
ist das nicht schlimm.

Matthias

19.05.2021 - 10:14 Uhr

Hallo,
ich hoffe ich habe die Überschrift richtig gewählt, denn ich habe keine richtige Ahnung wo ich bei meiner Frage ansetzen kann.

Also ich habe eine Tabelle ( siehe Anhang ).
In der ganz linken Spalte haben wir das Gewicht (rot), in der ersten oberen Zeile haben wir einen Punkt (blau), genannt Center of Gravity ( CG % ).
Diese beiden Werte sind gegeben, müssten aber noch interpoliert werden, da es auch Gewichte von z.B. 65000 Kg geben kann.
Gleiches gilt für den CG Wert.

Nun ist meine Frage wich ich das programmieren kann, das ich aus diesen beiden Werten auf den Trim Wert (gelb) kommen kann?
Wie mache ich das am besten?
Ich habe keine Ahnung wo/wie ich da anfangen soll?

Gegebene Werte könnten z.B. folgende sein:

Weight: 60283 Kg
CG : 23,2 %
Woraus sich ein Trim Wert von +4.5 ergeben sollte.

Danke euch
Matthias

05.12.2019 - 18:57 Uhr

Hallo,

eine Frage, ist es möglich, wenn man mit WPF über einen Webbrowser ein PDF anzeigen lässt,
das Kontextmenü zu verhindern und auch diese Menü ( keine Ahnung wie das heißt ) was am
oberen Rand erscheint? (siehe Anhang)

Ich hab gerade mit WPF angefangen, da ist also nur diser code im Grid:


    <Grid>
        <WebBrowser x:Name="webbrowser" HorizontalAlignment="Left" Height="409" VerticalAlignment="Top" Width="782"/>

    </Grid>

und das hier im code behind:


            webbrowser.Navigate(new System.Uri(@"\\FREENAS\freenas\Matthias\Downloads\online fliegen\LidoCharts\charts\charts\AGGH\[2-10] AFC AFC.pdf#toolbar=0&navpanes=0&statusbar=0&messages=0"));


mit

#toolbar=0&navpanes=0&statusbar=0&messages=0

kann man ja laut dieser seite:
https://www.adobe.com/content/dam/acom/en/devnet/acrobat/pdfs/pdf_open_parameters.pdf

einiges verhindern, aber anscheinend nicht das Kontextmenü und diese was ihr auf dem Bild seht.

Vielleicht hat ja jemand eine Idee?

Cefsharp habe ich nicht zum laufen bekommen und spirepdf, was ich in meiner Windows Forms app als freeware verwende da ich nur immer eine pdf Seite darstelle, scheint es für WPF nicht zu geben...

Danke
Matthias

21.10.2019 - 17:23 Uhr

Hallo,

keine Ahnung was mich mit dem englisch geritten hat, sorry.

Also SetForegroundwindow gibt beim ersten Versuch vom FMC aus TRUE und beim zweiten mal FALSE zurück.
Das Handle für den Prepar3d hab ich mir auch ausgeben lassen, das wird gefunden und ist auch das gleiche.

Komisch...

Wie bekommt man denn nun raus, warum das FALSE zurück gibt ??

21.10.2019 - 13:35 Uhr

Hello,

i tried the your solution and i also did a research for other solutions in this way, but nothing works.

Always, when i press the button in my App, then it works, but when i tried it from the other app ( FMC ) then it works only one times. When i tried it again it will not work.
I am running out of ideas whith all the ways to bring the Prepar3D window to focus.

Have you any other ideas ?

Matthias

20.10.2019 - 19:10 Uhr

Hallo,

nach langer Zeit habe ich mal wieder ein Problem, mit dem ich einfach nicht weiter komme.
Es ist auch etwas schwer zu erklären, aber ich hoffe ich kann es euch rüberbringen, so das ihr mir helfen könnt.

Also zur grundsätzlichen funktion:

Es gibt 3 Programme, ein FMC ( ganz links) den Prepar3D (mitte), und mein kleines Programm (rechts).
Über mein Programm kann ich die Türen an dem Flugzeug bedienen.
Das gleiche soll nun auch über das FMC gehen.

Funktionieren tut das ganz so, das ich in meinerm Programm auf einen Button für eine Tür drücke und dann wird diese geöffnet/geschlossen. Damit das aber funktioniert muss der Prepar3D den Focus haben, damit die Tastenkombination ( TAB+1 .. TAB+7) auch bei dem Prepar3d ankommt.

Wenn ich das ganze nun von meinem Programm mache, dann bekommt zuerst der Prepar3d den Focus:



        public static void ActivateApp(string processName)
        {
            Process[] p = Process.GetProcessesByName(processName);
            
            if (p.Count() > 0)
                SetForegroundWindow(p[0].MainWindowHandle);

        }

und dann wird die jeweilige Tastenkombination gesendet.

Funktioniert Super.

Nun kommt der komplizierte Teil:

Wenn ich das ganze über das FMC machen will, dann funktioniert das nur EIN MAL nachdem ich meini Program gestartet habe.
Dabei ist es auch egal, welches der Programme den Focus hat, das hab ich schon getestet.
Beende ich mein Programm, dann funktioniert es wieder ein mal und dann nicht mehr.
Ich hab das mal probiert und habe mein Programm, nachdem ich es das erste mal gestartet hatte, über den Prepar3d gelegt und dann im FMC eine Taste gedrückt. Danach sieht man wie mein Programm in den Hintergrund geht und der Prepar3d in den Focus kommt.
Das funktioniert aber nur ein mal ???

Also könnte man sagen, das der Code ansich funktioniert, aber nur genau ein mal.
Die Frage ist warum der gleiche Code nur einmal funktioniert???

Ich habe euch mal einen Screenshot von den 3 Programmen angehangen und hoffe ihr könnt helfen ?
Man sieht auf dem Bild auch, das in dem FMC ( ganz links ) eine "1" steht ( rot unterstrichen )
Das passiert, wenn ich im FMC versuche die Tür zu bedienen, NACHDEM es das erste mal funktioniert hatte. Nach dem ersten mal kommen die Tastenkombinationen dann nicht mehr im Prepar3D ( mittleres Fenster ) an, sondern das FMC behält sozusagen den Focus.

Ist etwas schwer zu erklären, hoffe ich konnte es einigermaßen verständlich rüber bringen?

Danke
Matthias

05.02.2019 - 16:27 Uhr

Skype4sharp bin ich grad am probieren.
Nach eingabe des richtigen Username+passwort kommt in dem Dos Fenster zuerst Login complete und dann Events set. Jedoch kurze Zeit später unterbricht der Debugger hier:


        private void blockUnauthorized()
        {
            if (authState != LoginState.Success)
            {
                throw new InvalidSkypeActionException("Not signed in");
            }
        }

Naja egal.

Keine Angst, das sollte keine weitere Frage sein.
Kannst das thema schließen ... und entschuldige, das ich hier etwas gefragt habe.

Matthias

05.02.2019 - 15:56 Uhr

Ja, aber nach Skype4com, nicht Skype4Sharp.
Ich schau es mir an.

Komisch, das auch die Nuget Package nicht geht...

Danke Dir
Matthias

05.02.2019 - 15:42 Uhr

Hallo,

da skype4com nicht mehr funktioniert wollte
ich mal fragen, ob es eine andere Möglichkeit gibt
als Ersatz für Skype4Com?

Matthias

26.01.2019 - 18:07 Uhr

Habs hinbekommen,

Danke
Matthias

26.01.2019 - 14:23 Uhr

Hallo,

ja hab ich schon probiert.
Leider blockiert meine GUI dann immer noch?

Matthias

26.01.2019 - 12:19 Uhr

Ahh, habs gerade gefunden.
Lag am eingestellten .NET Framework...

case closed 😃

Matthias

26.01.2019 - 11:45 Uhr

Hallo,

ich hab ein ganz komisches Problem.
Ich habe ein laufendes Project und wollte da einen Task einbauen. Dafür wollte ich erst mal probieren wie das ganze funktioniert und wollte mein Program mit folgendem Testcode compilieen und testen.


        private System.Threading.Tasks.Task<bool> isEven(int counter)
        {
            return System.Threading.Tasks.Task.FromResult(true);
        }

Komisch ist, das ich einen Fehler bekomme:> Fehlermeldung:

CS0117 "Task" enthält keine Definition für "FromResult".

Daraufhin habe ich mal eine neue Projektmappe erstellt zum testen und dort geht es.
Dann hab ich mal using System.Threading.Tasks; rausgenommen, aber das geht auch nicht.

Habt ihr eine Ahnung an was das liegt?

Matthias

24.01.2019 - 12:16 Uhr

Hallo,

danke für den Hinweis noch mal, ich schau es mir gerade genauer an.

Matthias

24.01.2019 - 01:13 Uhr

Hallo,

ach das ist ein Paket ... oh man.... ich hatte das gelesen, aber weil da "zum Beispiel" hab ich gar nicht in diese Richtung gedacht.

Danke dir !!

Matthias

24.01.2019 - 00:20 Uhr

Hallo,

ja genau, werd mal ein paar tutorials durchmachen um das ganze erst mal genau zu verstehen.
Ich danke dir bis dahin erst mal für die Hilfe !!

Eine letzte Frage hab ich aber noch.
Ich hab deinen Code oben mal in VS übernommen.
Leider meckert VS da immer an dem "Observable" rum und ich weiß nicht was ich da machen muss.
Eine fehlendes using scheint es nicht zu sein, oder doch ?
Mit dem Fehler nicht wirklich was anfangen. VS sagt nur, das Observable im aktuellen Context niht vorhanden ist... ?
Ich hab mal ein Bild davon angehanagen.

Ich wäre dir sehr dankbar, wenn du mir damit als letztes noch mal elfen könntest, denn da hing ich vorhin schon.

danke
Matthias

23.01.2019 - 23:13 Uhr

Hallo,

ja sorry, ich muss es ja auf die FSUIPC ummünzen.
Wie gesagt, ich hab nich nie was mit Task/async/await gemacht, aber jeder hat ja mal angefangen 😃
Geprüft wird hier:


        public async Task<bool> GetFsuipcState()
        {
            bool running = false;
            try
            {
                /// Hier wird geprüft ob eine Abfrage erfolgreich ist Wenn nicht
                /// bleibt running = false
                FSUIPCConnection.Process();
                running = true;
            }
            catch (Exception eex)
            {


            }
            return await Task.FromResult<bool>(running);
        }

Wenn FSUIPC.Process() funktioniert, dann wird running = true, ansonsten bleibt es false.
In dieser FSUIPC geschichte gibt es keine andere möglichkeit zu prüfen, ob eine Verbindung hergestellt werden kann oder nicht.

Matthias

23.01.2019 - 22:47 Uhr

Hallo,

danke, ich werd mir das mal zu gemüte führen.

Ich habe mich an deinem Code versucht, bin aber leider nicht ganz weiter gekommen.
Ich hab mal ein neues Project erstellt um das mal zu testen.
Allerdings funktioniert das ganze noch nicht so ganz.
Ich versteh nicht, wie ich die Änderung im connection status abfangen kann.
Leider hab ich mit Tasks und await/async noch keine erfahrungen, aber die kann man ja auch nur so sammeln.

Ich hab das mal absichtlich alles in eine Datei geschrieben, der Einfachheit halber.


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

using FSUIPC;

namespace TestObserver
{
    public class FsuipcInfo
    {
        public FsuipcInfo()
        {
        }

        public async Task<bool> GetFsuipcState()
        {
            bool running = false;
            try
            {
                /// Hier wird geprüft ob eine Abfrage erfolgreich ist Wenn nicht
                /// bleibt running = false
                FSUIPCConnection.Process();
                running = true;
            }
            catch (Exception eex)
            {


            }
            return await Task.FromResult<bool>(running);
        }
    }



    public class FsuipcHandler
    {
        public delegate void FsuipcState();
        public event FsuipcState OnFsuipcStateChanged;

        public async Task<bool> AccessFsuipcAsync()
        {
            FsuipcInfo fi = new FsuipcInfo();
            Task<bool> fiTast = fi.GetFsuipcState();
            bool running = await fiTast;

            if (OnFsuipcStateChanged != null)
            {
                OnFsuipcStateChanged();
            }

            return running;
        }

    }
    public partial class Form1 : Form
    {
        FsuipcHandler fh;
        public Form1()
        {
            InitializeComponent();
            fh = new FsuipcHandler();
            fh.OnFsuipcStateChanged += Fh_OnFsuipcStateChanged;
        }

        private void Fh_OnFsuipcStateChanged()
        {
            MessageBox.Show("OnFsuipcStateChanged");
        }

        private async void getFsuipcState()
        {
            await fh.AccessFsuipcAsync();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            getFsuipcState();
        }
    }

}

Nun hab ich zwar das event abonniert, aber wenn die Verbindung nicht zur verfügung steht dann passiert nix 😦

Vielleicht kannst du da noch mal kurz drüber schauen.
Da scheint irgendwie dieser Teil


    private async Task VerifyAsync()
    {
        var httpRequest = await ...;
        IsAvailable = httpRequest.Succeeded;
    }

zu fehlen, aber ich weiß leider nicht wie ich das implementieren kann?

Matthias

23.01.2019 - 18:19 Uhr

Hallo,

danke für die Antwort, dann mache ich das so.

Ich habe von Euch schon öfter den Hinweis bekommen das mein Code Designs nicht besonders ist.
Da ich mir das bisschen Wissen selber beigebracht habe und auch nur für mich benutze, habe ich mich darum noch nie so richtig gekümmert.

Habt ihr da einen guten Quellenhinweis für gutes Code Design?

Matthias

23.01.2019 - 15:03 Uhr

Hallo,

ich habe eine Klasse, die ein Event zur Verfügung stellt.
Beim instanzieren der klasse wird in deren Konstruktor eine Methode aufgerufen,welche prüft ob eine Verbindung zu einem Dienst verfügbar ist oder nicht.
falls nicht wird ein Timer gestartet, der dann immer wieder prüft ob die Verbindung hergestellt werden kann oder nicht.
Dabei wird dann das event gefeuert und in meiner Form wird dann ein Panel rot oder grün.

Soweit so gut, wenn die Verbindung beim starten ( instanzieren der Klasse ) noch nicht hergestellt werden kann funktioniert das ganze super.
Allerdings wenn die Verbindung beim instanzieren hergestellt werden kann wird ja der Timer gestoppt, und somit das event nicht gefeuert. ( mein statuspanel nicht aktualisiert )
Der Timer läuft erst wieder an, wenn eine Methode in der klasse aufgerufen wird und keine Verbindung mehr besteht.

In meiner Form instanziere ich also die klasse und rufe den Konstruktor auf, und DANACH abonniere ich aber erst das event.
Also wird das Statuspanel beim instanzieren der Klasse nicht aktualisiert, wenn schon eine Verbindung hergestellt wurde.

Mir fehlt jetzt ein bisschen der Ansatz wie man das lösen könnte, da der Timer ja auch nicht immer laufen soll.

Habt ihr eine Idee wie man das lösen kann ?

Matthias

20.01.2019 - 18:47 Uhr

Hallo,

für alle die auch danach suchen...
wenn man dort einen Haken setzt ( siehe Bild ) dann klappt es mit STRG+O + M

Matthias

20.01.2019 - 18:10 Uhr

Danke, ich schau mir die Tools mal an.
Will eben nicht, das alles zuklappt.

Matthias

20.01.2019 - 16:27 Uhr

Natürlich sehe ich da auch EIN zuklappen, aber nicht REGIONEN ZUKLAPPEN.
Falls du das dort siehst bin ich wirklich blind.

Matthias

20.01.2019 - 14:50 Uhr

Hallo,

würd ich j gerne, aber "NUR REGIONEN ZUKLAPPEN" gibt es ja nicht.
Darum geht es ja.

Matthias

20.01.2019 - 13:07 Uhr

Hallo,

STRG+M+O geht schon, ich wollte aber nur die Regionen zuklappen.

Matthias

20.01.2019 - 11:20 Uhr

Hallo,

echt lustig, da gibts auch nicht ... komisch.
VS2017 ist doch das letzte oder vielleicht liegt es auch an der Community Version die ich benutze?

Matthias

19.01.2019 - 17:34 Uhr

Hallo,

komisch, bei mir gibts da gar nix mit "region" ??

siehe bild

Hast du irgend ein Addon installiert?

Matthias

19.01.2019 - 13:25 Uhr

Hallo,

sorry das ich das Thema noch mal rauskrame, aber ich bin grad auf VS2017 umgestiegen und würde gerne wissen wie ich NUR ALLE REGIONEN umschalten kann.

Bei STRG+M+O klapt es die Regionen nicht zu 😦
Also perfekt wäre wenn dabei die Regionen auch zugeklappt würden.

Matthias

05.01.2019 - 21:26 Uhr

hmm...ok, werd ich versuchen

Danke

05.01.2019 - 12:10 Uhr

Hallo noch mal,

wie ich geschrieben habe geht es jetzt zwar, aber ich finde einfach diese Events nicht, also nicht das, welches in dem Beispiel verwendet wird.

In diesem Beispiel hier:
https://www.prepar3d.com/SDKv4/sdk/simconnect_api/samples/text_menu.html

wird zum Beispiel in dieser Zeile:
hr = SimConnect_SubscribeToSystemEvent(hSimConnect, EVENT_TEXT_WINDOW_CREATED, "TextEventCreated");

Event_Text_Window_Created verwendet.

Also entweder suche ich auf der falschen seite:
https://docs.microsoft.com/en-us/previous-versions/microsoft-esp/cc526980(v%3dmsdn.10)

oder ich bin zu doof zum suchen 😃

Könnt ihr mir helfen, wo stehen denn diese Events zum geier 😃 ???

Matthias

03.01.2019 - 21:16 Uhr

Hallo,

hab die Lösung gefunden...es heißt:

TEXTWINDOW

super.... 😃

Danke euch
Matthias

03.01.2019 - 20:50 Uhr

Hallo,

also das müsste ein int sein, da das enum aus dem c++ Beispiel so aussieht:


enum EVENT_ID {
    EVENT1,
    EVENT2,
    EVENT_MENU_1,
    EVENT_TEXT_1,
    EVENT_MESSAGE_1,
    EVENT_TEXT_WINDOW_CREATED,
};

also hab ich das so in c# übernommen:


        enum EVENTS
        {
            PITOT_TOGGLE,
            FLAPS_INC,
            FLAPS_DEC,
            FLAPS_UP,
            FLAPS_DOWN,
            EVENT_TEXT_WINDOW_CREATED,
        };

Das sollte erst mal so richtig sein.

Dann wird das Event so in c++ registriert :


hr = SimConnect_SubscribeToSystemEvent(hSimConnect, EVENT_TEXT_WINDOW_CREATED, "TextEventCreated");

das hab ich dann zu denanderen, funktionierenden Events, in c# hinzugefügt:


                // subscribe to all four flaps controls
                simconnect.MapClientEventToSimEvent(EVENTS.FLAPS_UP, "FLAPS_UP");
                simconnect.AddClientEventToNotificationGroup(NOTIFICATION_GROUPS.GROUP0, EVENTS.FLAPS_UP, false);
                simconnect.MapClientEventToSimEvent(EVENTS.FLAPS_DOWN, "FLAPS_DOWN");
                simconnect.AddClientEventToNotificationGroup(NOTIFICATION_GROUPS.GROUP0, EVENTS.FLAPS_DOWN, false);
                simconnect.MapClientEventToSimEvent(EVENTS.FLAPS_INC, "FLAPS_INCR");
                simconnect.AddClientEventToNotificationGroup(NOTIFICATION_GROUPS.GROUP0, EVENTS.FLAPS_INC, false);
                simconnect.MapClientEventToSimEvent(EVENTS.FLAPS_DEC, "FLAPS_DECR");
                simconnect.AddClientEventToNotificationGroup(NOTIFICATION_GROUPS.GROUP0, EVENTS.FLAPS_DEC, false);

                simconnect.MapClientEventToSimEvent(EVENTS.EVENT_TEXT_WINDOW_CREATED, "EVENT_TEXT_WINDOW_CREATED");
                simconnect.AddClientEventToNotificationGroup(NOTIFICATION_GROUPS.GROUP0, EVENTS.EVENT_TEXT_WINDOW_CREATED, false);

soweit ich das sehe sollte das eigentlich so funktionieren, tut es aber leider nicht.
Der Fehler kommt hier:


        void simconnect_OnRecvException(SimConnect sender, SIMCONNECT_RECV_EXCEPTION data)
        {
            displayText("Exception received: " + data.dwException);
        }

und spuckt leider nur so ne blöde nummer aus.

Matthias

03.01.2019 - 19:43 Uhr

Ein kleines Problem gibt es aber:

in dem funktionierenden C++ Beispiel wird ein Event namens
EVENT_TEXT_WINDOW_CREATED
registriert.

Wenn ich das in meinem C# versuche, dann bekomme ich eine Fehlermeldung mit einer nummr (7)

Nun hab ch auf der SDK Seite nach dem Event gesucht. Das gibt es da gar nicht.
Die anderen gibt es, nur das eben nicht.

http://www.prepar3d.com/SDKv3/LearningCenter/utilities/variables/event_ids.html

Aber warum geht das denn dann in dem C++ programm, das verstehe ich nicht?
Ich versteh nicht woher die das in dem Beispiel haben?

Ich hab das enum angepasst und das Event da mit aufgenommen, aber das scheint so nicht richtig zu sein.

Matthias

03.01.2019 - 19:03 Uhr

Genau, da hast du Recht.
Muss mich erst mal in alles einlesen und versuchen zu verstehen.
Falls ich dann auch nicht mehr weiterkomme, dann melde ich mich noch mal.
Muss aber erst mal lesen, is ja auch nicht ganz wenig 😃

Connecten geht ja soweit, ich weiß nur noch nicht wie ich das Event_ID finde, welches ich abfangen muss. Die aus dem Beispiel hab ich in dem SDK gar nicht gefunden.
Keine Ahnung so richtig.

Also danke erst mal allen für die Hilfe
Matthias

03.01.2019 - 18:13 Uhr

...mir fehlt so ein bisschen der Ansatz wie ich überhaupt darauf reagieren kann, das dieses Fenster geöffnet wird. Das wär schon mal ein Anfang.

03.01.2019 - 18:00 Uhr

Naja,

da bin ich gerade dabei. Der code hier öffnet ein Fenster und reagiert dann auf das ausgewählte Item in dem Fenster.
Ich muss aber einfach nur reagieren, wenn ein Fenster geöffnet wird.
Arbeite mich da gerade durch und bin auch nicht gerade der Crack , weder in C# da gehts so, aber C++ gar nicht. 😃

Matthias

03.01.2019 - 17:27 Uhr

Hallo,

habs wiedergefunden, und das scheint das zu sein, was ich brauche.
Leider eben nur in C++....
Ich glaube ich brach da ein bisschen Hilfe das in C# zu übersetzen wenn möglich...?

Wäre echt hilfreich.

Hab die Datei mal angehangen
Matthias

03.01.2019 - 17:10 Uhr

Hallo,

also das Fenster sollte man über Simconnect auslesen können, muss halt rausfinden wie das geht. Ein Beispiel hab ich glaube ich schon gesehen, allerdings in C++. Keine Ahnung ob ich das auf C# ummünzen kann.

Das Fenster hat immer den gleichen Namen, sollte also gehen irgendwie.

Matthias

03.01.2019 - 15:38 Uhr

Oh Sorry,

nachdem ihr gleich wusstet was simconnect.dll ist dachte ich ihr wisst das es um den Prepar3D von
hier: https://prepar3d.com/
geht und GSX, ein Addon dafür von
hier: http://www.fsdreamteam.com/

Also der Prepar3D ( nachfolger vom guten alten FSX ) ist der Flugsimulator und das GSX ist ein AddOn, was das Be- und Entladen, sowie das Pushback macht.

Wenn man das GSX aktiviert, dann öffnet das so ein Simconnect Fenster, wo man dann die jeweilige funktion die man ausführen will , auswählen kann.
Genau dieses Simconnect Fenster will ich auslesen und die jeweilig angeboten Auswahlmöglichkeiten in meinem Programm darstellen. Sozusagen so eine Art Remote App für das GSX.

Jetzt muss ich hat einen weg finden, das Fenster auszulesen.

Matthias

03.01.2019 - 15:09 Uhr

Oh je, nach etlichen installationen geht es endlich 😃

Ihr scheint euch ja damit auszukennen.
Ziel ist es das Simconnect Fenster von GSX von fsdreamteam auszulesen.
Habt ihr da einen ansatz wie ich das mache?

Danke
Matthias

03.01.2019 - 12:22 Uhr

Hallo,

danke euch für die Antworten.

Ich bin gerade dabei VS zu installieren und hoffe es geht damit oder gibt es noch eine andere IDE die zu empfehlen ist ?

Matthias