Воскресенье, 04.10.2026, 07:58
Вы вошли как Гость | Группа "Гости"Приветствую Вас Гость | RSS
Форма входа
Меню сайта
Главная » FAQ [ Добавить вопрос ]

Программирование Delphi [91]
Вопрос-Ответ по программированию

Воспользуйтесь функцией SystemParametersInfo(), переслав ей в качестве параметров - SPI_GETWORKAREA и адрес структуры типа TRect, куда будут передан полученный результат.
Пример :

 
             procedure TForm1.Button1Click(Sender: TObject); 
             var 
               r : TRect; 
             begin 
               SystemParametersInfo(SPI_GETWORKAREA, 
                                    0, 
                                    @r, 
                                    0); 
               Memo1.Lines.Add(IntToStr(r.Top)); 
               Memo1.Lines.Add(IntToStr(r.Left)); 
               Memo1.Lines.Add(IntToStr(r.Bottom)); 
               Memo1.Lines.Add(IntToStr(r.Right)); 
             end; 
Добавил: casperof

Ответ :
Вызовите функцию mciSendCommand (из библиотекиMMSystem) передав ей параметр MCI_SET_DOOR_CLOSED.
Пример :

 
             uses MMSystem; 
 
             procedure CloseCD(Drive : char); 
             var 
               mp : TMediaPlayer; 
             begin 
               result := false; 
               Application.ProcessMessages; 
               mp := TMediaPlayer.Create(nil); 
               mp.Visible := false; 
               mp.Parent := Application.MainForm; 
               mp.Shareable := true; 
               mp.DeviceType := dtCDAudio; 
               mp.FileName := Drive + ':'; 
               mp.Open; 
               Application.ProcessMessages; 
               mciSendCommand(mp.DeviceID,  
               MCI_SET, MCI_SET_DOOR_CLOSED, 0); 
               Application.ProcessMessages; 
               mp.Close; 
               Application.ProcessMessages; 
               mp.free; 
               result := true; 
             end; 
 
             procedure TForm1.Button1Click(Sender: TObject); 
             begin 
               CloseCD('D'); 
             end; 
Добавил: casperof

Вызовите функцию GetDiskFreeSpaceEx(). Возвращаемый функцией результат типа integers конвертируйте в doubles.
Пример :

 
             function GetDiskFreeSpaceEx(lpDirectoryName: PAnsiChar; 
               var lpFreeBytesAvailableToCaller : Integer; 
               var lpTotalNumberOfBytes: Integer; 
               var lpTotalNumberOfFreeBytes: Integer) : bool; 
               stdcall; 
               external kernel32 
               name 'GetDiskFreeSpaceExA'; 
 
             procedure GetDiskSizeAvail(TheDrive : PChar; 
                                        var TotalBytes : double; 
                                        var TotalFree : double); 
             var 
               AvailToCall : integer; 
               TheSize : integer; 
               FreeAvail : integer; 
             begin 
               GetDiskFreeSpaceEx(TheDrive, 
                                  AvailToCall, 
                                  TheSize, 
                                  FreeAvail); 
             {$IFOPT Q+} 
              {$DEFINE TURNOVERFLOWON} 
              {$Q-} 
             {$ENDIF} 
               if TheSize >= 0 then 
                 TotalBytes := TheSize else 
               if TheSize = -1 then begin 
                 TotalBytes := $7FFFFFFF; 
                 TotalBytes := TotalBytes * 2; 
                 TotalBytes := TotalBytes + 1; 
               end else 
               begin 
                 TotalBytes := $7FFFFFFF; 
                 TotalBytes := TotalBytes + abs($7FFFFFFF - TheSize); 
               end; 
 
               if AvailToCall >= 0 then 
                 TotalFree := AvailToCall else 
               if AvailToCall = -1 then begin 
                 TotalFree := $7FFFFFFF; 
                 TotalFree := TotalFree * 2; 
                 TotalFree := TotalFree + 1; 
               end else 
               begin 
                 TotalFree := $7FFFFFFF; 
                 TotalFree := TotalFree + abs($7FFFFFFF - AvailToCall); 
               end; 
             end; 
 
             procedure TForm1.Button1Click(Sender: TObject); 
             var 
               TotalBytes : double; 
               TotalFree : double; 
             begin 
               GetDiskSizeAvail('C:\', 
                                TotalBytes, 
                                TotalFree); 
               ShowMessage(FloatToStr(TotalBytes)); 
               ShowMessage(FloatToStr(TotalFree)); 
             end; 
Добавил: casperof

Вначале необходимо вызвать функцию FindWindow(), чтобы определить handle TaskBar. Затем вызвите функцию ShowWindow(), передав ей в качестве параметра костанту SW_HIDE.
Пример :

 
             procedure TForm1.Button1Click(Sender: TObject); 
             var 
               hTaskBar : THandle; 
             begin 
               hTaskbar := FindWindow('Shell_TrayWnd', Nil); 
               ShowWindow(hTaskBar, SW_HIDE); 
             end; 
 
             procedure TForm1.Button2Click(Sender: TObject); 
             var 
               hTaskBar : THandle; 
             begin 
               hTaskbar := FindWindow('Shell_TrayWnd', Nil); 
               ShowWindow(hTaskBar, SW_SHOWNORMAL); 
             end; 
Добавил: casperof

Воспользуйтесь функцией GetSystemMetrics(), переслав ей флаг SM_NETWORK.
Пример :

 
             procedure TForm1.Button1Click(Sender: TObject); 
             begin 
               if GetSystemMetrics(SM_NETWORK) AND $01 = $01 then 
                 ShowMessage('Machine is attached to network') else 
                 ShowMessage('Machine is not attached to network'); 
             end; 
Добавил: casperof

Наш опрос
С какого поисковика вам стал известен сайт?
Всего ответов: 28
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Поиск