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

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

             procedure TForm1.Button1Click(Sender: TObject); 
             var 
               VolumeName, 
               FileSystemName     : array [0..MAX_PATH-1] of Char; 
               VolumeSerialNo     : DWord; 
               MaxComponentLength, 
               FileSystemFlags    : Integer; 
             begin 
               GetVolumeInformation('C:\',VolumeName,MAX_PATH,@VolumeSerialNo, 
                                    MaxComponentLength,FileSystemFlags, 
                                    FileSystemName,MAX_PATH); 
               Memo1.Lines.Add('VName = '+VolumeName); 
               Memo1.Lines.Add('SerialNo = $'+IntToHex(VolumeSerialNo,8)); 
               Memo1.Lines.Add('CompLen = '+IntToStr(MaxComponentLength)); 
               Memo1.Lines.Add('Flags = $'+IntToHex(FileSystemFlags,4)); 
               Memo1.Lines.Add('FSName = '+FileSystemName); 
             end; 
Добавил: casperof

Windows API функция GetDriveType().
Пример :

 
             procedure TForm1.Button1Click(Sender: TObject); 
             begin 
               case GetDriveType('C:\') of 
                 0              : ShowMessage('The drive type cannot be determined'); 
                 1              : ShowMessage('The root directory does not exist'); 
                 DRIVE_REMOVABLE:ShowMessage('The disk can be removed'); 
                 DRIVE_FIXED    : ShowMessage('The disk cannot be removed'); 
                 DRIVE_REMOTE   : ShowMessage('The drive is remote (network) drive'); 
                 DRIVE_CDROM    : ShowMessage('The drive is a CD-ROM drive'); 
                 DRIVE_RAMDISK  : ShowMessage('The drive is a RAM disk'); 
               end; 
             end; 
Добавил: casperof

Вы можете использовать функцию Windows API SetErrorMode() для отключения диалога Window's critical Error.
Пример :

 
             function IsDriveReady(DriveLetter : char) : bool; 
             var 
               OldErrorMode : Word; 
               OldDirectory : string; 
             begin 
               OldErrorMode := SetErrorMode(SEM_NOOPENFILEERRORBOX); 
               GetDir(0, OldDirectory); 
               {$I-} 
                 ChDir(DriveLetter + ':\'); 
               {$I+} 
                if IoResult <> 0 then 
                 Result := False  
                else 
                 Result := True; 
 
               ChDir(OldDirectory); 
               SetErrorMode(OldErrorMode); 
             end; 
 
             procedure TForm1.Button1Click(Sender: TObject); 
             begin 
               if not IsDriveReady('A') then 
                 ShowMessage('Drive Not Ready') else 
                 ShowMessage('Drive is Ready'); 
             end; 
 
Добавил: casperof

             begin 
                 Result := SysUtils.FindFirst(Path, Attr, SearchRec); 
                 while Result = 0 do 
                 begin 
                   ProcessSearchRec(SearchRec); 
                   Result :=  SysUtils.FindNext(SearchRec); 
                 end; 
                  SysUtils.FindClose(SearchRec); 
             end; 
Добавил: casperof

Использование фуекции Windows API FindWindow() - простейший способ нахождение окна, при условии, что известен его заголовок или имя оконного класса. Если Вам известна только часть заголовка окна (например 'Netscape - ' + 'какой-то неизвестный URL'), Вам нужно использовать функцию EnumWindows() для получения всех окон, затем вызывать функцию GetWindowsText() и GetClassName для поиска нужного окна. Следующий пример находит первое окно, содержащее совпадающую часть заголовка окна и полностью совпадающее название оконного класса (если он задан) и делает это окно активным.

 
             type 
               PFindWindowStruct = ^TFindWindowStruct; 
               TFindWindowStruct = record 
                 Caption : string; 
                 ClassName : string; 
                 WindowHandle : THandle; 
               end; 
 
             function EnumWindowsProc(hWindow : hWnd; 
                                      lParam  : LongInt) : Bool 
             {$IFDEF Win32} stdcall; {$ELSE} ; export; {$ENDIF} 
             var 
               lpBuffer : PChar; 
               WindowCaptionFound : bool; 
               ClassNameFound : bool; 
 
             begin 
               GetMem(lpBuffer, 255); 
               Result := True; 
               WindowCaptionFound := False; 
               ClassNameFound := False; 
 
               try 
                 if GetWindowText(hWindow, lpBuffer, 255) > 0 then 
                   if Pos(PFindWindowStruct(lParam).Caption, StrPas(lpBuffer)) > 0 
                    then WindowCaptionFound := true; 
 
                 if PFindWindowStruct(lParam).ClassName = '' then 
                   ClassNameFound := True else 
                     if GetClassName(hWindow, lpBuffer, 255) > 0 then 
                       if Pos(PFindWindowStruct(lParam).ClassName, StrPas(lpBuffer)) 
                        > 0 then ClassNameFound := True; 
 
                 if (WindowCaptionFound and ClassNameFound) then begin 
                   PFindWindowStruct(lParam).WindowHandle := hWindow; 
                   Result := False; 
                 end; 
 
               finally 
                 FreeMem(lpBuffer, sizeof(lpBuffer^)); 
               end; 
             end; 
 
             function FindAWindow(Caption : string; 
                                  ClassName : string) : THandle; 
             var 
               WindowInfo : TFindWindowStruct; 
 
             begin 
               with WindowInfo do begin 
                 Caption := Caption; 
                 ClassName := ClassName; 
                 WindowHandle := 0; 
                 EnumWindows(@EnumWindowsProc, LongInt(@WindowInfo)); 
                 FindAWindow := WindowHandle; 
               end; 
             end; 
 
             procedure TForm1.Button1Click(Sender: TObject); 
             var 
               TheWindowHandle : THandle; 
             begin 
               TheWindowHandle := FindAWindow('Netscape - ', ''); 
               if TheWindowHandle = 0 then 
                 ShowMessage('Window Not Found!') else 
                 BringWindowToTop(TheWindowHandle); 
             end; 
Добавил: casperof

Наш опрос
Сколько вам лет
Всего ответов: 20
Статистика

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