Beispiel #1
0
        protected override void WndProc(ref Message m)
        {
            switch (m.Msg)
            {
            case 0x0308:        // WM_DRAWCLIPBOARD
                if (ClipboardConverter.IsBusy)
                {
                    break;
                }
                ClipboardConverter.IsBusy = true;
                if (ClipboardConverter.IsUTF8)
                {
                    ClipboardConverter.IsUTF8 = false;
                    string text = ClipboardConverter.GetUTF8Text();
                    if (text == null)
                    {
                        break;
                    }
                    try
                    {
                        Clipboard.SetText(text);
                        ClipboardConverter.SetUTF8Text(text);
                    }
                    catch
                    {
                        // ExternalException : 요청한 클립보드 작업을 수행하지 못했습니다.
                    }
                }
                else
                {
                    ClipboardConverter.SetUTF8Text(Clipboard.GetText());
                }
                SendMessage(ClipboardConverter.ChainedWnd, m.Msg, m.WParam, m.LParam);
                ClipboardConverter.IsBusy = false;
                break;

            case 0x030D:        // WM_CHANGECBCHAIN
                if (ClipboardConverter.ChainedWnd == m.WParam)
                {
                    ClipboardConverter.ChainedWnd = m.LParam;
                }
                else
                {
                    SendMessage(ClipboardConverter.ChainedWnd, m.Msg, m.WParam, m.LParam);
                }
                break;
            }
            base.WndProc(ref m);
        }
Beispiel #2
0
 public void ProgramShutDown()
 {
     MainTrayIcon.Visible = false;
     KeyboardHooker.HookEnd();
     if (Settings.IsFixClipboard)
     {
         ClipboardConverter.FixEnd();
     }
     try
     {
         Application.Exit();
     }
     catch
     {
         Application.Exit();
     }
 }