Я пробовал MS UI AF, и я не уверен, что вы подразумеваете под гораздо лучшим решением. Это все равно что играть в йенгу, будучи завязанным.

делаю:

Мое главное намерение состоит в том, чтобы включить дружественный к пользователюtext to speech для личного использования на Win 7. Подход должен работать в Google Chrome, VS и Eclipse.

Пример кода:

Следующий код создает глобальный хук клавиатуры дляctrl + alt + space, называется hookEvent. Если событие запускается, оно начинает / прекращает говорить содержимое буфера обмена (которое может быть обновлено с помощьюctrl + c ).

    /// <summary>
    /// KeyboardHook from: http://www.liensberger.it/web/blog/?p=207
    /// </summary>
    private readonly KeyboardHook hook = new KeyboardHook();
    private readonly SpeechSynthesizer speaker = //
        new SpeechSynthesizer { Rate = 3, Volume = 100 };

    private void doSpeaking(string text)
    {
        // starts / stops speaking, while not blocking UI
        if (speaker.State != SynthesizerState.Speaking)
            speaker.SpeakAsync(text);
        else
            speaker.SpeakAsyncCancelAll();
    }
    private void hookEvent(object sender, KeyPressedEventArgs e)
    {
        this.doSpeaking(Convert.ToString(Clipboard.GetText()));
    }
    public Form1()
    {
        InitializeComponent();
        hook.KeyPressed += new EventHandler<KeyPressedEventArgs>(hookEvent);
        hook.RegisterHotKey(ModifierKeysx.Control|ModifierKeysx.Alt, Keys.Space);
    }
Вопрос:

Я бы предпочел не использовать буфер обмена. Или, по крайней мере, восстановить значение после, что-то вроде:

    [MethodImpl(MethodImplOptions.Synchronized)]
    private string getSelectedTextHACK()
    {
        object restorePoint = Clipboard.GetData(DataFormats.UnicodeText);
        SendKeys.SendWait("^c");
        string result = Convert.ToString(Clipboard.GetText());
        Clipboard.SetData(DataFormats.UnicodeText, restorePoint);

        return result;
    }

Какие у меня варианты?

Редактировать:

К моему удивлению, я обнаружил, что мой читатель буфера обмена - лучший путь. Я создал приложение для области уведомлений, которое реагирует на щелчок левой кнопкой мыши (говорящий буфер обмена) и щелчок правой кнопкой мыши (открывается меню). В меню пользователь может выбрать скорость, говорить или создать аудиофайл.

Ответы на вопрос(2)

Ваш ответ на вопрос