вообще то работает. только для вашей задачи слишком много НО.
void __fastcall TMainForm::FormCreate (TObject *Sender)
{
RegisterHotKey(Handle, HOT_KEY_COPY, 0, VK_F5); // сдираем текст по F5
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::FormDestroy (TObject *Sender)
{
UnregisterHotKey(Handle, HOT_KEY_COPY);
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::WMHotKey (TMessage &Msg)
{
if (Msg.LParamHi == VK_F5)
{
keybd_event(VK_CONTROL, 0, 0, 0);
keybd_event('C', 0, 0, 0);
keybd_event('C', 0, KEYEVENTF_KEYUP, 0);
keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0);
Sleep(1000); // задержка на обработку очереди
try
{
if (Clipboard()->HasFormat(CF_TEXT))
{
AnsiString Text = Clipboard()->AsText; // проверка на повторную вставку
if (PrevText != Text) { PrevText = Text; Memo1->PasteFromClipboard(); }
}
}
catch (...)
{ }
}
}
копирует текст отовсюду, и из Explorer и с рабочего стола (всякие GetForegroundWindow забыл стереть в прошлый раз )
прикол в том, что программа может о-о-очень долго разгрeбaть свою очередь сообщений - в примере Speep на 1сек стоит, обычно хватает.
специально в клиборд шпионе посмотрел - текст появляется ну очень неторопливо. но появляется