예제 #1
0
        public WindowSync(Form form, IntPtr windowHandle, ILogger logger)
        {
            _form         = form;
            _windowHandle = windowHandle;
            _logger       = logger;

            _form.Invoke(new MethodInvoker(() =>
            {
                _form.ShowInTaskbar = true;
                NativeWindowMethods.SetWindowLong(_windowHandle, -8, _form.Handle);
            }));

            var placement = NativeWindowMethods.GetPlacement(_windowHandle);

            switch (placement.showCmd)
            {
            case ShowWindowCommands.Maximized:
                SyncWindowState("Maximized");
                break;

            case ShowWindowCommands.Minimized:
                SyncWindowState("Minimized");
                break;

            case ShowWindowCommands.Normal:
                SyncWindowState("Normal");
                break;
            }

            SyncWindowSize(true);

            SystemEvents.PowerModeChanged       += SystemEvents_PowerModeChanged;
            SystemEvents.DisplaySettingsChanged += SystemEvents_DisplaySettingsChanged;
        }
예제 #2
0
        private void OnTimerCallback(object state)
        {
            var placement = NativeWindowMethods.GetPlacement(_windowHandle);

            switch (placement.showCmd)
            {
            case ShowWindowCommands.Maximized:
                SyncWindowState("Maximized");
                break;

            case ShowWindowCommands.Minimized:
                SyncWindowState("Minimized");
                break;

            case ShowWindowCommands.Normal:
                SyncWindowState("Normal");
                break;
            }

            SyncWindowSize(true);
        }
예제 #3
0
        public WindowSync(Form form, IntPtr windowHandle, ILogger logger)
        {
            _form         = form;
            _windowHandle = windowHandle;
            _logger       = logger;

            _form.Invoke(new MethodInvoker(() =>
            {
                _form.ShowInTaskbar = true;
                NativeWindowMethods.SetWindowLong(_windowHandle, -8, _form.Handle);
                // Until the electron window starts reporting window changes, use a timer to keep them in sync
                //_syncTimer = new System.Threading.Timer(OnTimerCallback, null, 10, 10);
            }));

            var placement = NativeWindowMethods.GetPlacement(_windowHandle);

            switch (placement.showCmd)
            {
            case ShowWindowCommands.Maximized:
                SyncWindowState("Maximized");
                break;

            case ShowWindowCommands.Minimized:
                SyncWindowState("Minimized");
                break;

            case ShowWindowCommands.Normal:
                SyncWindowState("Normal");
                break;
            }

            SyncWindowSize(true);

            SystemEvents.PowerModeChanged       += SystemEvents_PowerModeChanged;
            SystemEvents.DisplaySettingsChanged += SystemEvents_DisplaySettingsChanged;
        }