Главная страница
    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.47 MB
Время: 0.042 c
2-1143910155
He3Hauka
2006-04-01 20:49
2006.04.16
TreeView


2-1143483718
Shopot
2006-03-27 22:21
2006.04.16
Помогите разобраться с TChart ом.


5-1129761486
bosia
2005-10-20 02:38
2006.04.16
Проблема перехода из режима Design Time в Run Time


2-1143833817
kilonet
2006-03-31 23:36
2006.04.16
Добавление записей в удалённую БД (ADO)


1-1142228039
Glex
2006-03-13 08:33
2006.04.16
Браузер на основе TWebBrowser.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский