Как выключить/включить PC Speaker?
Выключить:
SyStemParametersInfo(SPI_SETBEEP,0,nil,SPIF_UPDATEINIFILE);
Включить:
SyStemParametersInfo(SPI_SETBEEP,1,nil,SPIF_UPDATEINIFILE);
Как программно переключать раскладку клавиатуры?
LoadKeyboardLayout('00000409', KLF_ACTIVATE); // английский LoadKeyboardLayout('00000419', KLF_ACTIVATE); // русский
Как в Delphi определить, где установлена Windows?
Для определения директории установки Windows можно воспользоваться функцией
GetWindowsDirectory
Пример:
var Windir : String; WindirP : PChar; . . . . . WinDirP := StrAlloc(MAX_PATH); Res := GetWindowsDirectory(WinDirP, MAX_PATH); if Res > 0 then WinDir := StrPas(WinDirP);
Как получить список доступных шрифтов?
Вы можете получить два списка доступных шрифтов. Один список для экранных шрифтов, а второй - для шрифтов принтера. Списки доступных шрифтов находятся в свойствах:
property Fonts: TStrings;
объектов TScreen и TPrinter, соответственно.
Пример:
USES Printers; ............ procedure TForm1.FormCreate(Sender: TObject); begin ListBox1.Items := Screen.Fonts; ListBox2.Items := Printer.Fonts; end;
Как получить иконку из .EXE или .DLL файла?
Процесс получения иконок из .EXE, .DLL или .ICO файлов полностью идентичен. Различие только в том, что в .ICO файле может храниться только одна иконка, а в .EXE и .DLL несколько. Для получения иконок из файлов, в модуле ShellAPI, есть функция:
function ExtractIcon(Inst: THandle; FileName: PChar; IconIndex: Word): HIcon;
где
Inst - указатель на приложение вызвавшее функцию,
FileName - имя файла из которого необходимо получить иконку,
IconIndex - номер необходимой иконки.
Если функция возвращает значение не равное нулю, то в файле есть следующая иконка.
Пример:
В данном примере в компонент Image1 выводится иконка запущенного файла.
USES ShellAPI; ............ procedure TForm1.FormCreate(Sender: TObject); VAR A: ARRAY [0..78] OF Char; begin {Получение имени запущенного файла} StrPCopy(A, ParamStr(0)); {Вывод на экран нулевой иконки из файла} Image1.Picture.Icon.Handle := ExtractIcon(HInstance, A, 0); end;