Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.97/34: Рейтинг темы: голосов - 34, средняя оценка - 4.97
2 / 2 / 0
Регистрация: 13.12.2011
Сообщений: 30
1

API-функция для вставки текста из буфера обмена

05.03.2012, 23:01. Показов 6513. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Привет) Нужно реализовать копирование значение textBox1.Text в буфер и после програмно вставить его... Запись в буфер сделал через Clipboard.SetWait(textBox1.Text) Какие идеи есть? как это можно сделать ? Вставить надо либо симитировав нажатие клавиш ctrl+v либо найти API функцию которая вставляет из буфера... кто может помочь?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.03.2012, 23:01
Ответы с готовыми решениями:

Изменить код для вставки текста из буфера обмена
День добрый! Не знаю ни один из этих языков, а powershell есть не у всех (win XP), хотелось бы...

Отслеживание вставки из буфера обмена
Необходимо отследить, а точнее перехватить вставку из буфера обмена. Я сделал хук вида...

Отлавливание вставки из буфера обмена
Необходимо отлавливать вставку из буфера обмена (в любое место). Желательно, чтобы отлов...

Форматирование вставки с буфера обмена
Не пинайте сильно за простой вопрос, но как сделать, чтобы автоматом информация с буфера обмена...

6
12 / 12 / 3
Регистрация: 16.11.2011
Сообщений: 19
06.03.2012, 08:12 2
Заинтересовавшись вопросом, заглянул в MSDN и нашел два метода:
http://msdn.microsoft.com/ru-r... kt5z4.aspx
http://msdn.microsoft.com/ru-r... bject.aspx
Пожалуйста пользуйтесь, если ещё самостоятельно не решили задачу.

C#
1
2
Clipboard.SetDataObject(textBox1.SelectedText); // скопировал текст в буфер
IDataObject iData = Clipboard.GetDataObject(); // вставил содержимое буфера в IDataObject
2
2 / 2 / 0
Регистрация: 13.12.2011
Сообщений: 30
06.03.2012, 15:27  [ТС] 3
Спасибо srvlion, но Ваш код не помог...
Пытаюсь вставить из буфера путем имитации нажатия клавиш ctrl+v . Использую следующий код, но прога не вставляет текст из буфера, а тупо пишет v . Что нужно поправить?
Код:
C#
1
2
3
4
5
6
7
8
9
10
11
12
        [DllImport("user32.dll")]
        public static extern void keybd_event(Keys bVk, byte bScan, UInt32 dwFlags, IntPtr dwExtraInfo);
 
        public const UInt32 KEYEVENTF_EXTENDEDKEY = 1;
        public const UInt32 KEYEVENTF_KEYUP = 2;
        private void button1_Click(object sender, EventArgs e)
        {
           keybd_event(Keys.Control, 0, 0, IntPtr.Zero);
            keybd_event(Keys.V, 0, 0, IntPtr.Zero);
            keybd_event(Keys.V, 0, KEYEVENTF_KEYUP, IntPtr.Zero);
            keybd_event(Keys.Control, 0, KEYEVENTF_KEYUP, IntPtr.Zero);
        }
0
6048 / 3457 / 335
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
06.03.2012, 17:54 4
david_13, отлавливай событие нажатия клавиш в нужном контроле и вставляй через класс Clipboard
0
2 / 2 / 0
Регистрация: 13.12.2011
Сообщений: 30
06.03.2012, 18:51  [ТС] 5
Мне обязательно нужно вставить именно через имитацию ctrl+v...
0
6048 / 3457 / 335
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
06.03.2012, 21:23 6
Цитата Сообщение от david_13 Посмотреть сообщение
Мне обязательно нужно вставить именно через имитацию ctrl+v...
C#
1
2
3
4
5
6
7
private void richTextBox1_KeyUp(object sender, KeyEventArgs e)
        {
            if (e.Control && e.KeyCode == Keys.V)
            { 
                //вставляй, что тебе мешает?
            }
        }
Добавлено через 2 минуты
кроме того, текстовые контролы изначально поддерживают вставку из буфера обмена без всяких доп приспособлений
1
0 / 0 / 0
Регистрация: 01.04.2015
Сообщений: 1
02.02.2016, 19:07 7
Нужно брать Keys.ControlKey вместо Keys.Control

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
        [DllImport("user32.dll")]
        public static extern void keybd_event(Keys bVk, byte bScan, UInt32 dwFlags, IntPtr dwExtraInfo);
       
        const uint KEYEVENTF_EXTENDEDKEY = 0x0001;
        const uint KEYEVENTF_KEYUP = 0x0002;
 
        private static void CtrlV()
        {
            //press the ctrl key
            keybd_event(Keys.ControlKey, 0x45, 0, IntPtr.Zero);
            //press the v key
            keybd_event(Keys.V, 0x45, 0, IntPtr.Zero);
 
            //release the v key
            keybd_event(Keys.V, 0x45, KEYEVENTF_KEYUP, IntPtr.Zero);
            //release the ctrl key
            keybd_event(Keys.ControlKey, 0x45, KEYEVENTF_KEYUP, IntPtr.Zero);
        }
0
02.02.2016, 19:07
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.02.2016, 19:07
Помогаю со студенческими работами здесь

Утилита для создания QR кодов для текста из буфера обмена
Утилита генерирует QR код из текста в буфере обмена. Полезно когда открыть ту же ссылку что на ПК...

Выполнение вставки из буфера обмена в произвольное активное окно
Здравствуйте товарищи! Подскажите как возможно реализовать вставку информации из буфера обмена в...

Получить изображение из буфера обмена через API
Здравствуйте, уважаемые форумчане. Поделитесь, пожалуйста, как получить изображение, находящееся в...

Вставка текста из буфера обмена
Всем привет! Появилась одна непроходимая задачка, пока что. В чем суть: Программно копируется...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru