Задать вопрос
Audes
@Audes

Эмуляция Ctrl + V?

SenKeys мне не поможет, поэтому WinApi.

keybd_event(Keys.Control, 0, 0x1, UIntPtr.Zero);
keybd_event(Keys.V, 0, 0x1, UIntPtr.Zero);
keybd_event(Keys.V, 0, 0x2, UIntPtr.Zero);
keybd_event(Keys.Control, 0, 0x2, UIntPtr.Zero);

В статьях пишут, что это работает, у меня же прожимается только "v".
  • Вопрос задан
  • 3101 просмотр
Подписаться 1 Оценить 2 комментария
Решения вопроса 1
@Juninho
Попробуй
[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' );
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Можно еще вот так. Но для этого нужно Ctrl + C реализовать и использовать в нем для помещения в буфер Clipboard.SetDataObject().

private void textBox1_KeyDown(object sender, KeyEventArgs e)
        {
            if ((e.KeyCode == Keys.V) && (e.Modifiers == Keys.Control))
            {
                Clipboard.Clear();
                this.textBox1.Text =Clipboard.GetText();
            }

        }
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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