Example #1
0
        public HotkeyHandler(int id, KeyModifiers modifiers, Keys key)
        {
            Id        = new HotkeyId(id);
            Modifiers = modifiers;
            Key       = key;

            ClipboardNotification.RegisterHotkeyHandler(this);
        }
        public static void Startup(string[] args)
        {
            App = new ApplicationViewModel(args);
            WindowManager.WindowPreviews.ThisApp = App;

            ClipboardNotification.StartListener();
            DragDropFileWatchers.Initialise();
            ApplicationFileWatcher.StartDocumentWatcher();
            //TheRInstance.StartWatcher();
        }
        public static void ShutdownApplication()
        {
            Information.Show("Shutting down application", "App");

            ClipboardNotification.ShutdownListener();
            DragDropFileWatchers.Shutdown();
            ApplicationFileWatcher.StopDocumentWatcher();
            //TheRInstance.StopWatcher();

            Application.Current?.Shutdown();
        }
Example #4
0
        public override void ProcessCommand(byte[] parameter, IConnectionInfo connectionInfo)
        {
            switch ((ClipboardManagerCommunication)parameter[0])
            {
            case ClipboardManagerCommunication.GetCurrentClipboard:
                var thread = new Thread(() =>
                {
                    var dataObject = Clipboard.GetDataObject();
                    if (dataObject == null)
                    {
                        ResponseByte((byte)ClipboardManagerCommunication.ResponseClipboardEmpty, connectionInfo);
                        return;
                    }
                    SendClipboardUpdate(ClipboardNotification.GetClipboardFormat(dataObject), dataObject,
                                        connectionInfo);
                });
                thread.SetApartmentState(ApartmentState.STA);     //important, else the clipboard Data is null
                thread.Start();
                break;

            case ClipboardManagerCommunication.StartListener:
                _connectionInfo = connectionInfo;
                ClipboardNotification.ClipboardUpdate += ClipboardNotificationOnClipboardUpdate;
                break;

            case ClipboardManagerCommunication.StopListener:
                ClipboardNotification.ClipboardUpdate -= ClipboardNotificationOnClipboardUpdate;
                break;

            case ClipboardManagerCommunication.ChangeClipboard:
                var clipboardData = _clipboardSerializer.Value.Deserialize <ClipboardData>(parameter, 1);

                thread = new Thread(() =>
                {
                    IDataObject dataObject = new DataObject();

                    if (!SetDataObjectData(clipboardData, dataObject))
                    {
                        var imageData = clipboardData as ImageClipboardData;
                        if (imageData != null)
                        {
                            //important, else we have a problem with disposing the image
                            using (var memoryStream = new MemoryStream(imageData.BitmapData))
                            {
                                using (var bitmap = Image.FromStream(memoryStream))
                                {
                                    dataObject.SetData(clipboardData.ClipboardFormat.ToString(), false, bitmap);
                                    Clipboard.SetDataObject(dataObject, true);
                                }
                            }
                            return;
                        }
                    }

                    Clipboard.SetDataObject(dataObject, true);
                    ResponseByte((byte)ClipboardManagerCommunication.ResponseClipboardChangedSuccessfully,
                                 connectionInfo);
                });
                thread.SetApartmentState(ApartmentState.STA);     //important, else that doesn't work
                thread.Start();
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
        }