Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.04.2013, 18:53   #1
PonyHunter
Новичок
Джуниор
 
Регистрация: 20.04.2013
Сообщений: 1
По умолчанию winapi clipboard

Задача: послать стороннему приложению, (в данном случае игра на directx) в окно ввода, комбинацию клавиш ctrl + v, перед этим скопировав в буфер обмена какой нибудь текст. При этом приложение находится в свернутом состоянии, то есть не получает фокуса. С этим проблем нет, вставка текста работает. Только вот вставляется не тот текст который я копирую в буфер обмена, а тот текст который был в буфере до этого. То есть приложение по непонятно каким причинам игнорирует последнее изменение буфера обмена и в поле ввода копируется текст как будто буфер обмена не изменялся. Как решить эту проблему и заставить приложение копировать текст который я сам помещаю в буфер обмена.

Ниже прилагаю часть кода которая непосредственно отвечает за вставку текста из буфера обмена.

Код:
procedure SendMsg;
begin

// копируем содержимое memo1 в буфер обмена
 Clipboard.Clear;
 Form1.Memo1.SelectAll;
 Form1.Memo1.CopyToClipboard;

// кликаем в поле ввода в окне другой программы для того чтобы оно стало активным для ввода
 PostMessage(Handler, WM_LBUTTONDOWN, MK_LBUTTON, MAKELparam(EditX, EditY));
 sleep(100);
 PostMessage(Handler, WM_LBUTTONUP, 0, MAKELparam(EditX, EditY));
 sleep(1000);

// посылаем окну комбинацию ctrl + v
 keybd_event(VK_CONTROL,0,0,0);
 sleep(100);
 PostMessage(Handler, WM_KEYDOWN, Ord('V'), $002F0001);
 sleep(100);
 PostMessage(Handler, WM_KEYUP, Ord('V'), $C02F0001);
 sleep(100);
 keybd_event(VK_CONTROL,0,KEYEVENTF_KEYUP,0);
 sleep(100);

// нажимаем ентер
 PostMessage(Handler, WM_KEYDOWN, VK_RETURN, $00000001);
 sleep(100);
 PostMessage(Handler, WM_KEYUP, VK_RETURN, $C0000001);
 sleep(100);

end;
PonyHunter вне форума Ответить с цитированием
Старый 28.04.2013, 16:18   #2
Eo0le
 
Аватар для Eo0le
 
Регистрация: 28.04.2013
Сообщений: 8
По умолчанию

OpenClipboard, SetClipboardData

http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx
C++ (WinAPI) & PHP & Asm & Java & Python & HTML/CSS/JS & NTLDR
Eo0le вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
IdFTP + Clipboard weech Работа с сетью в Delphi 4 29.11.2012 10:31
clipboard-invalid format Abricosko Помощь студентам 4 05.06.2010 14:22
Работа с clipboard ВикторР Microsoft Office Excel 1 25.02.2010 22:07
Clipboard [Qj] Общие вопросы .NET 1 21.08.2009 18:50