Delphi - парачка кадофф |
Здравствуйте, гость ( Вход | Регистрация )
Delphi - парачка кадофф |
Mar 18 2007, 23:58
Сообщение
#1
|
|
Advanced Member Группа: Members Сообщений: 168 Регистрация: 13.9.2006 Пользователь №: 26251 |
Этот код делает скриншот вашего экрана и сохраняет его в файл:
В uses добавляем JPEG Код: var bmp: TBitmap; DC: HDC; Jpg: TJpegImage; Begin Try bmp:= TBitmap.Create; Jpg:= TJpegImage.Create; bmp.Height:=Screen.Height; bmp.Width:=Screen.Width; DC:=GetDC(0); bitblt(bmp.Canvas.Handle, 0, 0, Screen.Width, Screen.Height, DC, 0, 0, SRCCOPY); Jpg.Assign(Bmp); Jpg.SaveToFile('c:test.jpg'); ReleaseDC(0, DC); finally Bmp.Free; jpg.Free; End; End; С его помощью можете потрудиться сделать например программу отслежки за вторым пользователем (IMG:http://forum.iseekyou.im/style_emoticons/default/smile.gif) Если кому нада - этот код так же делает скриншот только он не в файл его сохраняет а в буфер обмена - одно и тоже что нажать принт скрин только програмно (IMG:http://forum.iseekyou.im/style_emoticons/default/smile.gif) Код: procedure CopyScreenToClipboard; var dx,dy : integer; hSourcDC,hDestDC, hBM, hbmOld : THandle; begin dx := screen.width; dy := screen.height; hSourcDC := CreateDC('DISPLAY',nil,nil,nil); hDestDC := CreateCompatibleDC(hSourcDC); hBM := CreateCompatibleBitmap(hSourcDC, dx, dy); hbmold:= SelectObject(hDestDC, hBM); BitBlt(hDestDC, 0, 0, dx, dy, hSourcDC, 0, 0, SRCCopy); OpenClipBoard(form1.handle); EmptyClipBoard; SetClipBoardData(CF_Bitmap, hBM); CloseClipBoard; SelectObject(hDestDC,hbmold); DeleteObject(hbm); DeleteDC(hDestDC); DeleteDC(hSourcDC); end; ---- Так же кому нада для разнообразия. Следующий код открывает дверцу CD-ROM'a в uses добавляем Mmsystem Код: mciSendString('Set cdaudio Door Open Wait', nil, 0, handle); А этот код закрывает лоток: так же в uses MMSystem (если нету) : mciSendString('Set cdaudio Door closed Wait', nil, 0, handle); А этот код добавляет вашу программу в автозапуск, притом в автозагрузке ее не будет - в реестре добавляет: var Registry:TREgistry; begin Registry:=TRegistry.Create; Registry.RootKey:=hkey_local_machine; Registry.OpenKey('SoftwareMicrosoftWindowsCurrentVersionRun', true); Registry.WriteString('svshost32', fname); Registry.CloseKey; Registry.Free; end; ну вобщем это так почуть чуть если ктот чтото надумает написать. Если будут интересные пополнения выложу (IMG:http://forum.iseekyou.im/style_emoticons/default/wink.gif) |
|
|
Mar 21 2007, 23:24
Сообщение
#2
|
|
Advanced Member Группа: Members Сообщений: 168 Регистрация: 13.9.2006 Пользователь №: 26251 |
Следующий код перезагружает компьютер
begin OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, ph); LookupPrivilegeValue(nil, 'SeShutdownPrivilege', tp.Privileges[0].Luid); tp.PrivilegeCount := 1; tp.Privileges[0].Attributes := 2; AdjustTokenPrivileges(ph, FALSE, tp, SizeOf(prevst), prevst, rl); ExitWindowsEx(EWX_REBOOT , 0); end; Работа с ini файлами ини файлы очь полезная штука. Если вы делаете программу то в большинстве случаев программа должна запоминать какой либо параметр и при запуске обратно его прочитать. Почему иногда лучше использовать INI-файлы, а не реестр? 1. INI-файлы можно просмотреть и отредактировать в обычном блокноте. 2. Если INI-файл хранить в папке с программой, то при переносе папки на другой компьютер настройки сохраняются. 3. Новичку в реестре можно запросто запутаться или (боже упаси), чего-нибудь не то изменить. Поэтому для хранения параметров настройки программы удобно использовать стандартные INI файлы Windows. Работа с INI файлами ведется при помощи объекта TIniFiles модуля IniFiles. Краткое описание методов объекта TIniFiles дано ниже. Constructor Create('d:test.INI'); Создать экземпляр объекта и связать его с файлом. Если такого файла нет, то он создается, но только тогда, когда произведете в него запись информации. WriteBool(const Section, Ident: string; Value: Boolean); Присвоить элементу с именем Ident раздела Section значение типа boolean WriteInteger(const Section, Ident: string; Value: Longint); Присвоить элементу с именем Ident раздела Section значение типа Longint WriteString(const Section, Ident, Value: string); Присвоить элементу с именем Ident раздела Section значение типа String ReadSection (const Section: string; Strings: TStrings); Прочитать имена всех корректно описанных переменных раздела Section (некорректно описанные опускаются) ReadSectionValues(const Section: string; Strings: TStrings); Прочитать имена и значения всех корректно описанных переменных раздела Section. Формат : имя_переменной = значение EraseSection(const Section: string); Удалить раздел Section со всем содержимым ReadBool(const Section, Ident: string; Default: Boolean): Boolean; Прочитать значение переменной типа Boolean раздела Section с именем Ident, и если его нет, то вместо него подставить значение Default. ReadInteger(const Section, Ident: string; Default: Longint): Longint; Прочитать значение переменной типа Longint раздела Section с именем Ident, и если его нет, то вместо него подставить значение Default. ReadString(const Section, Ident, Default: string): string; Прочитать значение переменной типа String раздела Section с именем Ident, и если его нет, то вместо него подставить значение Default. Free; Закрыть и освободить ресурс. Необходимо вызвать при завершении работы с INI файлом Property Values[const Name: string]: string; Доступ к существующему параметру по имени Name Пример Procedure TForm1.FormClose(Sender: TObject); var IniFile:TIniFile; begin IniFile := TIniFile.Create('d:test.INI'); { Создали экземпляр объекта } IniFile.WriteBool('Options', 'Sound', True); { Секция Options: Sound:=true } IniFile.WriteInteger('Options', 'Level', 3); { Секция Options: Level:=3 } IniFile.WriteString('Options' , 'Secret password', Pass); { Секция Options: в Secret password записать значение переменной Pass } IniFile.ReadSection('Options ', memo1.lines); { Читаем имена переменных} IniFile.ReadSectionValues('Options ', memo2.lines); { Читаем имена и значения } IniFile.Free; { Закрыли файл, уничтожили объект и освободили память } end; Источник: http://dmitry9.nm.ru/info/ Если будут вопросі спрашиваем (IMG:http://forum.iseekyou.im/style_emoticons/default/smile.gif) |
|
|
Текстовая версия | Сейчас: 6th January 2025 - 12:19 |