@Espleth

Взаимодействие программы с системой. Как такое сделать?

Хочу написать программу, которая бы взаимодействовала с системой. Например, что бы при нажатии ctrl+c выделенный текст копировался бы не только в буфер обмена, но и в собственный буфер обмена программы. И тому подобные функции. Реализуемо ли такое на c#?
  • Вопрос задан
  • 2544 просмотра
Решения вопроса 2
aush
@aush
Реализуемо. Для этого конкретного примера вам нужно будет поставить глобальный хук через WinAPI (blogs.msdn.com/b/toub/archive/2006/05/03/589423.aspx, https://gist.github.com/Stasonix/3181083)

Хук нужно использовать, если вы хотите, чтобы этот функционал работал и в ситуации, когда пользователь копирует из любой другой программы, не только вашей (ваша в это время работает в фоне).
Ответ написан
Реализуемо, можно и без WinAPI.
Необходимо определить обработчик нажатия клавиш, а что бы знать какой текст выделен используйте поле SelectedText.
//Собственно сам обработчик 
        private void keydown(object sender, KeyEventArgs e)
        {
            var type = sender.GetType();
            if (e.Control && e.KeyCode == Keys.C)
            {
                if (type == typeof(TextBox))
                {
                    textBox2.Text = (sender as TextBox).SelectedText;
                }
                if (type == typeof(RichTextBox))
                {
                    textBox2.Text = (sender as RichTextBox).SelectedText;
                }
            }
        }
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы