Форум - Ответы     (  К темам )
 ?  Fred: Эмуляция нажатия кнопки PrintScreen (10-12-2002 06:15:20)
Привет.

Необходимо в программе изображение экрана послать в Clipboard. Так как это делается при нажатии клавиши PrintScreen. Буду очень благодарен, если кто подскажет как это сделать.

С уважением.
Fred. Vladivostok.
 Skolotovich (10-12-2002 11:12:50)
на сколько я помню -- это дебри WinAPI
советю искать хелпу по мессаджам винды там зто должно быть
 Павел (10-12-2002 12:20:34)
Если Вам нужно получить копию экрана, и поместить ее в компонент TImage
можете воспользоваться следующим кодом
(поместите на форму 2 кнопки Button1 и Button2 и 2 компонента типа TImage: Im1 и Im2. По нажатию кнопки Button1 копируем изображение в Im1, по нажатию кнопки Button2 копируем изображение в Im2)
(2 несколько разных способа - в способе 1 вы проще можете скопировать не весь рабочий стол, а только его часть, те координаты, которые укажите в BitBlt)

void __fastcall TForm1::Button1Click(TObject *Sender)
{
HDC ScreenDC;

ScreenDC = GetDC( 0 );
BitBlt( Im1->Canvas->Handle, 0, 0, Screen->Width, Screen->Height, ScreenDC, 0, 0, SRCCOPY);
ReleaseDC( 0, ScreenDC );
}
//---------------------------------------------------------------------------
// почти то-же самое, но чуть по-другому
void __fastcall TForm1::Button2Click(TObject *Sender)
{
HDC ScreenDC;
TCanvas* tc = new TCanvas;
ScreenDC = GetDC( 0 );
tc->Handle = ScreenDC;
Im2->Canvas->CopyRect(Im2->Canvas->ClipRect, tc, tc->ClipRect);
ReleaseDC( 0, ScreenDC );
delete tc;
}
//---------------------------------------------------------------------------
введите, посмотрите как работает
вроде никаких дебрей не наблюдается...
 Владимир (10-12-2002 14:46:54) http://cbuilder.ru
Программно нажать любую клавишу, например PrintScreen
Код клавиши PrintScreen - это VK_SNAPSHOT

// нажимаем
keybd_event(VK_SNAPSHOT, 0, 0, 0);

// и например помещаем изображение в компонент Image1
Image1->Picture->Assign(Clipboard());
Image1->Refresh();

 Fred (10-12-2002 21:53:06)
Отлично ! Прекрасно сработало. Это как раз то что мне и нужно было.
Всем большое спасибо за помощь.


support@cbuilder.ru