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(); }
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(); } }