Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Буфер обмена


Автор: Vikelf 9.5.2013, 20:28
Доброго времени суток, уважаемые форумчане. У меня возникла следующая проблема:

Код внутри кнопки:

int a, b;
a=1000;
b=555;

...

OpenClipboard;
EmptyClipboard();
AnsiString s = a;
Clipboard()->AsText = a;
keybd_event(VK_CONTROL, 0, 0 ,0);
keybd_event('V', 0, 0 ,0);
keybd_event('V', 0, KEYEVENTF_KEYUP,0);
keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP,0);
EmptyClipboard();
CloseClipboard;

...

OpenClipboard;
EmptyClipboard();
AnsiString x = b;
Clipboard()->AsText = b;
keybd_event(VK_CONTROL, 0, 0 ,0);
keybd_event('V', 0, 0 ,0);
keybd_event('V', 0, KEYEVENTF_KEYUP,0);
keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP,0);
EmptyClipboard();
CloseClipboard;

Программа должна заносить в буфер значения 2-х переменных поочередно, и поочередно вставлять их с помощью имитации комбинации клавиш CTRL+V, но почему то она вставляет оба раза второе значение (что интересно, именно не первое, что было бы логичнее, а второе), не знаю почему. Может кто подскажет. smile 

Автор: volatile 10.5.2013, 00:34
Цитата(Vikelf @  9.5.2013,  20:28 Найти цитируемый пост)
но почему то она вставляет оба раза второе значение 

Потому-что keybd_event - это асинхронная посылка комбинаций клавиш, когда она придет - никто не знает.
Внутри своей программы keybd_event  не нужно использовать.
Да и вообще, keybd_event - это последнее дело. 

Автор: Dem_max 10.5.2013, 17:51
Use SendInput
http://msdn.microsoft.com/en-us/library/windows/desktop/ms646310(v=vs.85).aspx

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)