Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.04.16;
Скачать: CL | DM;

Вниз

Клавиатура Windows в Delphi   Найти похожие ветки 

 
Mozgan   (2006-03-31 11:19) [0]

Здравствуйте, Мастера! Скажите, пожалуйста, как можно перехватить нажатие кнопки PrintScreen (PrtScr). Мне нужно программно снять изображение экрана.


 
Mozgan   (2006-03-31 11:34) [1]

Не понимаю, куда все подевались :(


 
Turbid ©   (2006-03-31 12:23) [2]

Определись что именно тебе нужно - перехватить или программно нажать


 
Sysanin   (2006-03-31 12:23) [3]

Если тебе программно надо снять изображение с экрана, то зачем тебе перехватывать нажатие кнопки? Для получения изображения можешь юзать вот этот код


...
 var
ScreenDC: HDC;
bmp : TBitmap;
jpg : TJPEGImage;
 begin
pic_stream:= TMemoryStream.Create;
bmp := TBitmap.Create;
bmp.PixelFormat := pf24bit;
bmp.Width       := Screen.Width;
bmp.Height      := Screen.Height;
BitBlt(bmp.Canvas.Handle, 0, 0, Screen.Width, Screen.Height, GetDC(0), 0, 0, SRCCOPY);
 jpg := TJPEGImage.Create;
  jpg.Assign(bmp);
 jpg.ProgressiveEncoding := true;
  jpg.CompressionQuality := quarl_screen;
   jpg.Compress;
    bmp.Free;

           jpg.SaveToFile("temp.jpg");
            jpg.Free;                    

end;

Этот код сохранит тебе слепок экрана в формате jpg, вообщем брал из рабочей программы мот что лишнее будет...


 
Mozgan   (2006-03-31 14:00) [4]

Спасибо! У меня только не получилось откомпилить :(
Дельфи ругает, на неопределение ижентификаторов
pic_stream и quarl_screen.

в uses я добавил JPEG. Может что не добавилб а?
Подскажи пожалуйста.


 
Mozgan   (2006-03-31 14:07) [5]

Все ребят, догадался! Большое спасибо!!!!
Мастера, только один и последний :) вопрос: Как этот снимок сделать рисунком рабочего стола, т.е. отправить на десктоп?


 
Turbid ©   (2006-03-31 21:10) [6]

В принципе, все настройки на фоновый рисунок хранятся в реестре. Поэтому надо сначала скопировать картинку в какое-нибудь место (лучше в каталог Виндов) на случай удаления или переноса исходного файла. Информация по обоям хранится в разделе HKEY_CURRENT_USER\Control Panel\Desktop в параметрах TileWallpaper (если 1 - рисунок размножен, 0 - в центре), Wallpaper - путь к файлу обоев (gif, bmp, jpg), WallpaperStyle - если 2, то обои будут растянуты (отсутствует в 95 винде).
ПОсле установки всех занчений обновляешь рабочий стои и наслаждаешься эффектом.

Автор ответа: Garik
Взято с Vingrad.ru http://forum.vingrad.ru

--------------------------------------------------------------------------------

Смена обоев только на время текущего сеанса, после перезагрузки обои восстановятся:

var Wallpaper : string;
begin
 Wallpaper := "C:\windows\ACD Wallpaper.bmp";
 SystemParametersInfo (SPI_SETDESKWALLPAPER, 0, PChar(Wallpaper), SPIF_SENDCHANGE)
end;

Автор: p0s0l

--------------------------------------------------------------------------------

program wallpapr;
uses Registry, WinProcs;

procedure SetWallpaper(sWallpaperBMPPath:String;bTile:boolean);
var
 reg : TRegIniFile;
begin
// Изменяем ключи реестра
// HKEY_CURRENT_USER
//   Control Panel\Desktop
//     TileWallpaper (REG_SZ)
//     Wallpaper (REG_SZ)
 reg := TRegIniFile.Create("Control Panel\Desktop" );
 with reg do begin
   WriteString( "", "Wallpaper",  
     sWallpaperBMPPath );
   if( bTile )then
   begin
     WriteString("", "TileWallpaper", "1" );
   end else begin
     WriteString("", "TileWallpaper", "0" );
   end;
 end;
 reg.Free;
// Оповещаем всех о том, что мы  
// изменили системные настройки
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, Nil,  
 {Эта строка - продолжение предыдущей}SPIF_SENDWININICHANGE );
end;

// пример установки WallPaper по центру рабочего стола
SetWallpaper("c:\winnt\winnt.bmp", False );
//Эту строчку надо написать где-то в программе.

Взято из http://forum.sources.ru

--------------------------------------------------------------------------------

var  
 Reg: TRegIniFile;  
begin  
 Reg := TRegIniFile.Create("Control Panel");  
 Reg.WriteString("desktop", "Wallpaper", "c:\windows\mybmp.bmp");  
 Reg.WriteString("desktop", "TileWallpaper", "1");  
 Reg.Free;  
 SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, nil, SPIF_SENDWININICHANGE);  
end

Взято из http://forum.sources.ru


 
Turbid ©   (2006-03-31 21:15) [7]

Забыл сказать, все это взял с Delphi Russian Knowledge Base: http://www.drkb.ru/
Не поленись и скачай


 
Mozgan   (2006-03-31 21:18) [8]

В принципе, да.
Факт, что вне настройки в реестре копать нужно - это ясно.
Но вот где гарантия, что смена возможна файлов с расширением jpeg (jpg)?
Все работает коректно только с файлами bmp 8(



Страницы: 1 вся ветка

Текущий архив: 2006.04.16;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.03 c
2-1144137696
fast2
2006-04-04 12:01
2006.04.16
Где надо прописать переменную, чтоб ее "видели" все формы?


6-1136202876
system
2006-01-02 14:54
2006.04.16
Конвертироват KOI-8 R вида =D7=D3=C5 в WIN


2-1143785648
Рафик
2006-03-31 10:14
2006.04.16
Как мне Int в Hex перевести


2-1144137978
Julia
2006-04-04 12:06
2006.04.16
коды клавиш


2-1143709295
dera
2006-03-30 13:01
2006.04.16
Как "угадать" разрешение экрана пользователя