Jump to content
The simFlight Network Forums

mroschk

Members
  • Posts

    168
  • Joined

  • Last visited

Posts posted by mroschk

  1. I am glad that also I can help you a little bit.

    For me the Problem stays, because it is a bit more complicated.
    The code works fine if you take the Mouse and press a Button on the App which gives the Focus to the P3D.
    BUt for me, and my litte programm, it works a bit different. The Programm is a little "Talker" (lets say) between my Program and the FMC from Prosim737.
    So, the talker runs always minimized. Now i can call a page in the FMC and press there a LSK, which then should open GSX. (like a Remote control for GSX,
    because in my Homecockpit i dont want to use a Mouse)
    Ok, after that this command to open GSX is transported via a HttpListener to my talker, which then should activate P3D and send STRG+F12.

    Now, after my first test i wonder very very because the code, which works in the little test app ( where i click with the Mouse on the button to open the GSX menu (( little app has the Focus ))) did not work when i use the FMC...wonder wonder ... 🙂

    After that i put a testbutton on my talker app, which did exactly the same like the FMC calls or the little test app...and voila, it works ... more wonder wonder ???

    Now, it seams the app which should get the Focus by

                ShowWindow(windowHandle, WindowState.ShowNormal);
                SetForegroundWindow(windowHandle);

    must have the Focus to give the Focus to another windows.

    The Problem here ( for me ) is, that the Talker will never have the Focus.... so it is difficult.

    Thinking about a solution, but that is a Poblem, which only exists in my spezial environment and i have to sort that out myself.
    I just explained that for you and maybe it hels for further questions by other users.

    Matthias

    • Like 1
  2. Yes for sure, i have it updated

    image.png.bd6e88d239a754f0a4905e5b3c5a4e96.png

     

    I have also tried the new code, but it is doing the same...P3D is just "blinking".

    Before i get your great dll, i send this key via sendkeys and had also the problem with the focus. I have tried all the dll imports , 
    SetForegroundWindow, ShowWindow, GetWindowPlacement and so on, but othing works.
    FindWindow gives me all the time the MainWindowHandle, but anything else is not working with P3D, nothing will work.

    But now, view minutes ago, i found a solution that works for me:

            public enum WindowState
            {
                Hide = 0, ShowNormal = 1, ShowMinimized = 2, ShowMaximized = 3, ShowNoActivate = 4, Show = 5,
                Minimize = 6, ShowMinNoActive = 7, ShowNA = 8, Restore = 9, ShowDefault = 10
            }
    
            [DllImport("user32.dll")]
            public static extern int ShowWindow(IntPtr hWnd, WindowState wFlags);
    
            [DllImport("user32.dll")]
            private static extern int SetForegroundWindow(IntPtr hWnd);
    
            private void button1_Click(object sender, EventArgs e)
            {
                FS_Focus();
                FSUIPCConnection.SendKeyToFS(Keys.F12, SendModifierKeys.Control);
            }
    
            void FS_Focus()
            {
                Process[] SameProcesses = Process.GetProcessesByName("Prepar3D");
                IntPtr windowHandle = SameProcesses[0].MainWindowHandle;
    
                if (windowHandle == IntPtr.Zero)
                {
                    MessageBox.Show("Prepar3D is not running.");
                }
                ShowWindow(windowHandle, WindowState.ShowNormal);
                SetForegroundWindow(windowHandle);            
            }

    Maybe you can improve your dll with that and it helps a bit .

    Matthias

  3. Hello,

    thanks for the fast answer.

    I have used your Template for a short test to exclude the possibility my Programm did anything wrong.
    So i compiled a poor FSUIPC Test with 2 Buttons. One of them is using a Sleep, so that i can click on the FS Window.
    I uplad a little video and also the Video as a rar archive for the case it dosent load in the Explorer:

    http://starflight-virtual.de/Videos/20190116_131735.mp4

    http://starflight-virtual.de/Videos/20190116_131735.rar

    In the video you see the FS Symbol in the Tskbar is only "blinking" after i press the Button without delay.

    When i press the Button with delay and activate the FS window, then the GSX Manu comes up.

    Thanks

    Matthias

     

    Ps: Button code

            private void button1_Click(object sender, EventArgs e)
            {
                FSUIPCConnection.SendKeyToFS(Keys.F12, SendModifierKeys.Control);
            }
    
            private void button2_Click(object sender, EventArgs e)
            {
                System.Threading.Thread.Sleep(2000);
                FSUIPCConnection.SendKeyToFS(Keys.F12, SendModifierKeys.Control);
            }

     

  4. Hello again,

    a very litle problem.

    I try to send FSUIPCConnection.SendKeyToFS(Keys.F12, SendModifierKeys.Control);

    to Prepar3D v4.4 to open the GSX Menu, but P3D becomes the Focus, but the Key is not send or something.

    When i put a Sleep before the FSUIPCConnect command and click on the Prepar3D window to activate it, then it works.

    Have you any ideas ?

    Matthias

  5. Hello,

    thats so fast 🙂

    Hmmm...no, i need that FS becomes the Focus before the Key is send 🙂

    But i remember there was a DLL import and setforegroundwindow function for that.

    Ahh, one thing ... if i call FSUIPCConnection.... is there maybe any funktion in your dll to ceck if FSUIPC is available ( FS running ) or did your dll check that ?

    Matthias

  6. Hello again,

     

    i have a new/another Problem.

    I have to send "TAB+1" to Prepar3D to open my Doors.

    I found you thread: 

    but it dosent work for TAB+1

    i tried it with                  controlParameter.Value = (int)Keys.Tab + (49);

    Also Prepar3D does not become the Focus and also i can not send STRG with

    controlParameter.Value = (int)Keys.RControlKey + (49);

    but with 

    controlParameter.Value = 512 + 49;

    it works ???

    I just wonder why it works with 512 and not with Keys.RControlKey ???

    Can you please help here a bit ?7

    Thanks

    Matthias

     

  7. Hello Pete,

    in my little Programm i have to use the 64 it Managed Simconnect.dll for some reasons.

    But FSUIPCClient.dll, which i also need, is a 32 bit dll ... hmm...it is, as you know, not possible to use 32 bit dll's and 64bit dll's in the same Programm.

    So, i have downloaded the last SDK, it is 32 bit, hich is a big Problem.

    Is there a 64 bit version to import in my Programm?

    Thanks

    Matthias

  8. Hello,

    view Days ago i chnged from SharpDevelop to VS2017.

    That is my first NugetPackage i installed. Hope i did all right, but for the Moment i get no error when i try to compile the Programm with 

    FSUIPCConnection.WriteLVar(Name, NewValue)

    No i will try to see if it works.

    Thanks for the moment, i will come back 🙂

    Matthias

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use. Guidelines Privacy Policy We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.