С Новым годом! Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.97/30: Рейтинг темы: голосов - 30, средняя оценка - 4.97
5 / 5 / 1
Регистрация: 02.05.2012
Сообщений: 53

Имитация нажатия ctrl + v через API

08.05.2012, 19:21. Показов 6384. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужно вставить текст в чужое приложение, решил вставлять через буфер обмену, соответственно нужно юзать API вставку. Пробовал так, но не работает. Помогите.
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
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.05.2012, 19:21
Ответы с готовыми решениями:

Не работает имитация нажатия CTRL+C
может есть у кого какие решения проблемы, у друга на компе пробывал, работает, у меня просто дописывает "а" и все...

Имитация нажатия клавиш
Доброго времени суток! Возможно ли в консольном приложении програмно нажать клавишу <Enter>?

Имитация нажатия мыши
Всем привет. Народ, подскажите со следующим вопросом. Необходимо имитировать нажатие левой кнопки мыши в заданной точке экрана. Нажатие...

9
123 / 121 / 6
Регистрация: 21.12.2011
Сообщений: 348
09.05.2012, 00:24
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[DllImport("user32.dll", SetLastError = true)]
private static extern void keybd_event( byte bVk, byte bScan, uint dwFlags, int dwExtraInfo );
 
private static void SendCtrlhotKey( char key ) {
  keybd_event(      0x11, 0,   0, 0);
  keybd_event( (byte)key, 0,   0, 0);
  keybd_event( (byte)key, 0, 0x2, 0);
  keybd_event(      0x11, 0, 0x2, 0);
}
 
// использовать вот так
SendCtrlhotKey( 'C' );
// использовать или так
SendCtrlhotKey( 'V' );
// использовать или так
SendCtrlhotKey( 'A' );
4
5 / 5 / 1
Регистрация: 02.05.2012
Сообщений: 53
09.05.2012, 12:29  [ТС]
Спасибо, тот что нужно но возникла другая проблема...
Таймер не выполняет условие 2 if -a. Уже мудрил как мог, но все равно не работает. почему он не выполняет 2 условие?
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
private void timer1_Tick(object sender, EventArgs e)
        {
           
            GetActiveWindow();
            if ( label2.Text == "Документ - WordPad")
            {
               if ((TbKeys.Text == textBox1.Text.ToUpper()) && (TbKeys.Text != ""))
                {
                    
                    Clipboard.SetText(textBox2.Text.ToString(),TextDataFormat.UnicodeText);
                    Thread.Sleep(30);
                    SendCtrlhotKey('V');                   
                   
                }
 
                if ((TbKeys.Text == textBox4.Text.ToUpper()) && (TbKeys.Text != ""))
                {
 
                    Clipboard.SetText(textBox3.Text.ToString(), TextDataFormat.UnicodeText);
                    Thread.Sleep(30);
                    SendCtrlhotKey('V');
                  }
                    
            
}
0
123 / 121 / 6
Регистрация: 21.12.2011
Сообщений: 348
09.05.2012, 12:54
Nikita_Serg, а зачем тебе 2 одинаковых if? по идее второй может не выполнятся, из-за изменения в TbKeys или что-то типа того.
0
5 / 5 / 1
Регистрация: 02.05.2012
Сообщений: 53
09.05.2012, 14:51  [ТС]
Цитата Сообщение от Savvy Посмотреть сообщение
Nikita_Serg, а зачем тебе 2 одинаковых if? по идее второй может не выполнятся, из-за изменения в TbKeys или что-то типа того.
В TbKeys отображается нажатая буква на клаве ( зделал хук. так что значение меняется переодически) И если она соответствует textBox1.text то надо вставить из буфера текст что находится в textBox2.text
А если TbKeys соответствует textBox4.text - то надо вставить текст из textBox3.text

Самое интересное, что если закоментировать 1 IF, то тогда 2 работает... почему так?

Добавлено через 10 минут
Помогите сделать это через swich() case....
0
123 / 121 / 6
Регистрация: 21.12.2011
Сообщений: 348
09.05.2012, 16:09
Nikita_Serg, попробуй отладчиком посмотри заходит ли во второй if(breakpoint поставь на label2.Text). Походу if второй отрабатывает, но вставка не происходит из-за того, что на textbox3 нет фокуса. Попробуй сделать вот так:
C#
1
2
3
4
5
6
7
8
9
if ((TbKeys.Text == textBox4.Text.ToUpper()) && (TbKeys.Text != ""))
{
  Clipboard.SetText(textBox3.Text.ToString(), TextDataFormat.UnicodeText);
  Thread.Sleep(30);
  textBox3.Focus();
  // или
  textbox3.SetFocus();
  SendCtrlhotKey('V');
}
И не надо делать ToString свойству Text.
пиши просто textbox.Text
0
5 / 5 / 1
Регистрация: 02.05.2012
Сообщений: 53
09.05.2012, 17:30  [ТС]
поставил breakpoint, не заходит во 2 if. Фокус не помогает
0
123 / 121 / 6
Регистрация: 21.12.2011
Сообщений: 348
09.05.2012, 17:52
ну значит в textbox4 не лежат такие же данные как и в tbkeys
0
5 / 5 / 1
Регистрация: 02.05.2012
Сообщений: 53
09.05.2012, 17:53  [ТС]
Цитата Сообщение от Savvy Посмотреть сообщение
ну значит в textbox4 не лежат такие же данные как и в tbkeys
лежат.... Если закоментивровать 1 if тогда работает... А через swich() case зделать возможно?
0
123 / 121 / 6
Регистрация: 21.12.2011
Сообщений: 348
09.05.2012, 20:25
Nikita_Serg, для switch нужны строковые константы, произвольные значения через него не работают.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.05.2012, 20:25
Помогаю со студенческими работами здесь

Имитация нажатия кнопки
Как сымитировать нажатие кнопки, но не определенному окну, а вообще?

Имитация нажатия кнопки на сайте
Всем привет. Предположим есть сайт, в нем есть поисковая система. В ней задаются некоторые параметры поиска, нажимается кнопка искать,...

Имитация нажатия на кнопки в стороннем приложении
Во общем ситуация такая, есть установщик, в нём кнопка старт, после нажатия на нее появляется соглашение, ну и дальше появляются разные...

Имитация нажатия ПКМ в стороннем приложении
Привет, понимаю что тема обсуждалась миллион раз, но я уже перерыл все что нашел и никак не дойдет что не так... Смотрите, смастерил хук на...

Имитация нажатия кнопки независимо от других приложений
Как имитировать нажатие кнопки в стороннем приложении, при этом не затрагивая работу пользователя? То есть, мне нужно сделать так -...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru