Реестр. Считать значение REG_DWORD из реестра

0 // Read REG_DWORD
procedure TForm1.Button1Click(Sender: TObject);
 var
  Reg: TRegistry;
  RegKey: DWORD;
  Key: string;
 begin
  Reg := TRegistry.Create;
  try
  Reg.RootKey := HKEY_USERS;
  Key := '.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Internet Settings\URL History';
  if Reg.OpenKeyReadOnly(Key) then
    begin
    if Reg.ValueExists('DaysToKeep') then
      begin
      RegKey := Reg.ReadInteger('DaysToKeep');
      Reg.CloseKey;
      ShowMessage(IntToStr(RegKey));
    end;
  end;
 finally
  Reg.Free
 end;
end;

// Write REG_DWORD
procedure TForm1.Button2Click(Sender: TObject);
var
Reg: TRegistry;
Key: string;
begin
Reg := TRegistry.Create;
try
Reg.RootKey := HKEY_USERS;
Key := '.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Internet Settings\URL History';
if Reg.OpenKey(Key, True) then
begin
Reg.WriteInteger('DaysToKeep', 20);
Reg.CloseKey;
end;
finally
Reg.Free
end;
end;
 

Запуск от имени Администратора

1. Создаем первый файл с текстом (смотри ниже). И сохраняем как admin.manifestvar

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
 <dependency>
 <dependentAssembly>
 <assemblyIdentity type="Win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="X86" publicKeyToken="6595b64144ccf1df" language="*">
 </assemblyIdentity>
 </dependentAssembly>
 </dependency>
 <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
 <security>
 <requestedPrivileges>
 <requestedExecutionLevel level="requireAdministrator"></requestedExecutionLevel>
 </requestedPrivileges>
 </security>
 </trustInfo>
 <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
 <application>
 <!--The ID below indicates application support for Windows Vista -->
 <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
 <!--The ID below indicates application support for Windows 7 -->
 <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
 </application>
 </compatibility>
</assembly>

2. Создаем второй файл с текстом (смотри ниже). И сохраняем как admin.rc

1 24 "admin.manifest"

!!! Эти файлы должны находиться в папке проекта !!!


3. Теперь возьмем brcc32.exe Находится от примерно по такому пути (Зависит от версии делфи)
      C:\Program Files (x86)\Borland\Delphi7\Bin\brcc32.exe
  Помещаем этот файл в папку с проектом, и перемещаем файл admin.rc на файл brcc32.exe.
  В итоге должен был получиться файл admin.res

4. Пишем строку {$R admin.res} сразу за директивой {$R *.dfm}
 

Запись и чтение строк текста в\из текстового файла

var
  myFile : TextFile;
  text   : string;

begin
  AssignFile(myFile, 'Test.txt');    // Попытка открыть файл Test.txt для записи
  ReWrite(myFile);

  WriteLn(myFile, 'Hello');     // Запись нескольких известных слов в этот файл
  WriteLn(myFile, 'World');
 
  CloseFile(myFile);     // Закрытие файла

    Reset(myFile);         // Переооткрытие файла в режиме только для чтения

  while not Eof(myFile) do     // Показ содержимого файла
  begin
    ReadLn(myFile, text);
    ShowMessage(text);
  end;

 CloseFile(myFile);  // Закрытие файла в последний раз
end;

 

Компонента TTrayIcon

Кидаем на форму Button,
компонент TTrayIcon
компонент ApplicationEvents

Для начала нам нужно свернуть программу в трей, и разворачивать ее оттуда.
В компоненте ApplicationEvents выбираем событие OnMinimize и пишем следующий код:

procedure TForm1.ApplicationEvents1Minimize(Sender: TObject);
begin
TrayIcon1.visible := True;
//Убираем с панели задач
 ShowWindow(Handle,SW_HIDE);  // Скрываем программу
   ShowWindow(Application.Handle,SW_HIDE);  // Скрываем кнопку с TaskBar'а
SetWindowLong(Application.Handle, GWL_EXSTYLE,
GetWindowLong(Application.Handle, GWL_EXSTYLE) or (not WS_EX_APPWINDOW));
end;


Результат выполнения этого куска кода: при минимизации формы, в трее появится значок программы, и форма исчезнет.

Чтобы вернуть форму на экран, напишем следующий код:

procedure TForm1.TrayIcon1DblClick(Sender: TObject);
begin
TrayIcon1.ShowBalloonHint;
ShowWindow(Handle,SW_RESTORE);
SetForegroundWindow(Handle);
TrayIcon1.Visible := False;
end;


Результат выполнения этого куска кода: по двойному клику по иконке в трее, форма вернется на экран, а значок исчезнет из трея.

Теперь научим программу посылать нам уведомления. Рассмотрим на примере кнопки:

procedure TForm1.Button2Click(Sender: TObject);
begin
TrayIcon1.visible := True; // делаем значок в трее видимым
trayicon1.balloontitle := ('Текст 1');
trayicon1.balloonhint := ('Текст 2');
trayicon1.showballoonHint;// показываем наше уведомление
end;
 

Создание массива Button и Label во время выполнения программы и перемещение по форме

Пример создания массива Кнопок (Button) и Меток (Label) во время выполнения программы и перемещение их по форме
 

Компоненты TServerSocket и TClientSocket в Delphi XE

Возвращение компонентов TServerSocket TClientSocket на свое место в палитре компонентов Delphi XE необходимо проделать следующие действия:
- Вы главном меню среду выбираем "Component — Install Packages", далее жмем на кнопочку "Add"

- выбираем файл C:Program Files/Embarcadero/RAD Studio/8.0/bin/dclsockets150.bpl
Компоненты находятся в разделе "Internet".
 

Расположение и размер TaskBar. Количество и разрешение мониторов

uses
  ... ShellApi ...

var
  ....
  Monitors : word;
  Monit_X, Monit_Y : array [1..2] of word;

  DataBar: TAppBarData;
  TaskBar_H : Integer;
  TaskBar_W : Integer;
  TaskBar_L : Integer;
  TaskBar_T : Integer;
  pos_bar : Char;
  ...

procedure Tfm_main.FormCreate(Sender: TObject);
begin
...
// Определяемся с мониторами
Monitors := Screen.MonitorCount;
for i := 1 to Monitors do
  begin
  Monit_X[i] := Screen.Monitors[i - 1].Width;
  Monit_Y[i] := Screen.Monitors[i - 1].Height;
  end;
// определяемся с TaskBar
DataBar.hWnd := FindWindow('Shell_TrayWnd', nil);
DataBar.cbSize := SizeOf(TAppBarData);
if DataBar.hWnd <> 0 then
  if SHAppBarMessage(ABM_GETTASKBARPOS, DataBar) = 1 then
    begin
    TaskBar_H := DataBar.rc.Bottom - DataBar.rc.Top;
    TaskBar_W := DataBar.rc.Right - DataBar.rc.Left;
    TaskBar_L := DataBar.rc.Left;
    TaskBar_T := DataBar.rc.Top;
    end;
  if (TaskBar_H = Monit_Y[1])and(TaskBar_L < 10) then Pos_bar := 'L';
  if (TaskBar_H = Monit_Y[1])and(TaskBar_L > 10) then Pos_bar := 'R';
  if (TaskBar_W = Monit_X[1])and(TaskBar_T < 10) then Pos_bar := 'T';
  if (TaskBar_W = Monit_X[1])and(TaskBar_T > 10) then Pos_bar := 'B';
...
end;
 

Системные кнопки формы. Перехват

Type TMain = class(TForm)
....
  public
    { Public declarations }
    procedure WMSize(var Message: TWMSize); message WM_SIZE;

.....

procedure Tform1.WMSize(var Message: TWMSize);
begin
inherited;
if WindowState = wsMaximized then
  begin
  ....
  end;
if WindowState = wsMinimized then
  begin
  ....
  end;
if WindowState = wsNormal then
  begin
  ....
  end;

end;
 

Определить форма активна или нет (получила или потеряла фокус)

type
//...
private
{ Private declarations }
procedure WMNCACTIVATE(var M: TWMNCACTIVATE); message WM_NCACTIVATE;
end;

implementation

//...

procedure TForm1.WMNCACTIVATE(var M: TWMNCACTIVATE);
begin
inherited;
if M.Active then caption:='Form active'
                    else caption:='Form not active' ;
end;