Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001
- Название:Советы по Delphi. Версия 1.4.3 от 1.1.2001
- Автор:
- Жанр:
- Издательство:неизвестно
- Год:неизвестен
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001 краткое содержание
…начиная с 1001. Смотрите другие файлы…
Советы по Delphi. Версия 1.4.3 от 1.1.2001 - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
functionSmallFonts:Boolean;
{! проверить} proceduresetWallPaper( constfileName: string; tile:boolean);
{***************************МОНИТОР********************************************}
procedureRunCurrentScreenSaver;
//use application:TApplication object
proceduremonitorState(state:boolean);
{***************************КЛАВИАТУРА*****************************************}
procedureRussianKbdLayout;
procedureEnglishKbdLayout;
procedureUkrainianKbdLayout;
{***************************МЫШЬ***********************************************}
//относительные координаты в абсолютные - function ClientToScreen(Pt:TPoint):TPoint;
proceduremouseEmul(absPoint:TPoint; up,down:boolean);
proceduremouseCursor(visi:boolean);
//просимулировать нажатие клавиши мыши
{! Не проверено} procedureSendMouseClick(x,y:integer;wHandle:THandle);
{**8*************************ДИСКОВЫЕ ФУНКЦИИ**********************************}
//8FAT,FAT32,CDFS,NWCOMPA
//0-"A",1-"B",2-"C"
functionGetFileSysName(Drive : Byte) : String;
functionGetVolumeName(Drive : Byte) : String;
functionDriveExists(Drive : Byte) : Boolean;
//'?';'Path2 does not exists';'Removable';'Fixed';'Remote';'CD-ROM';'RAMDISK'
functionCheckDriveType(Drive : Byte) : String;
//Определение готовности дисковода к работе
functionDiskInDrive( constDrive: char): Boolean;
functionHDDSerialNum( constdrivePath: string{'C:\'}):integer;
{***************************CD-ROM*********************************************}
functiongetCdromPath: string;
procedureCDROMOpen;
procedureCDROMClose;
{***************************REGISTRY*******************************************}
procedureStartFromRegistry(appName,appPath: string);
//запускается до WindowsLogon
procedureStartServiceFromRegistry(appName,appPath: string);
procedureStartFromWinIni(appPath: string);
functionIsInstalled (FileExe: String): Boolean;
IMPLEMENTATION
(*
Вопрос:
Можно ли как-то уменьшить мерцание при перерисовке компонента?
Ответ:
Если добавить флаг csOpaque (непрозрачный) к свойству ControlStyle компонента - то фон компонента перерисовываться не будет.
Пример:
constructor TMyControl.Create;
begin
inherited;
//проверка "if not inIDE" должна быть вставлена в том случае, когда TMyControl - компонент
//чтобы среда IDE Delphi не глючила на этапе разработки
if not inIDE then ControlStyle := ControlStyle + [csOpaque];
end;
...
procedure Register;
begin
RegisterComponents('MyGraphics', [TMyControl]);
inIDE:=True;
end;
*)
proceduremouseCursor(visi:boolean);
VarCState:Integer;
Begin
CState:= ShowCursor(True);
ifvisi then begin
//Включение курсора
whileCState<0 doCState:=ShowCursor(True);
end else begin
//Выключение курсора
whileCstate >= 0 doCstate := ShowCursor(False);
end;
End;
//Cache,Cookies,Desktop,Favorites,Fonts,Personal,Programs,SendTo,Start Menu,Startup
functionShellFolder( constfolderType: string): string;
varregistry:TRegistry;
begin
result:='';
Registry := TRegistry.Create;
try
Registry.RootKey := HKey_Current_User;
Registry.OpenKey('Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders', False);
result:= Registry.ReadString(folderType);
finally
Registry.Free;
end;
end;
procedureSetWallpaper( constfileName: string;tile:boolean);
varReg: TRegIniFile;
begin
Reg:=TRegIniFile.Create('Control Panel');
Reg.WriteString('desktop', 'Wallpaper', fileName);
iftile thenReg.WriteString('desktop', 'TileWallpaper', '1')
elseReg.WriteString('desktop', 'TileWallpaper', '0');
Reg.Free;
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, nil, SPIF_SENDWININICHANGE);
end;
{procedure setWallPaper(fileName:string);
begin
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, pChar(fileNAme), 0);
end;}
procedurerefreshWindowsDesktop;
begin
SendMessage(FindWindow('Progman', 'Program Manager'), WM_COMMAND, $A065, 0);
end;
proceduremouseEmul(absPoint:TPoint; up,down:boolean);
begin
//Положение курсора мыши задается в "абсолютных" координатах ("Mickeys"),
//где 65535 "Mickeys" равно ширине экрана.
absPoint.x := Round(absPoint.x * (65535 / Screen.Width));
absPoint.y := Round(absPoint.y * (65535 / Screen.Height));
{Переместим курсор мыши}
Mouse_Event(MOUSEEVENTF_ABSOLUTE orMOUSEEVENTF_MOVE, absPoint.x, absPoint.y, 0, 0);
ifdown thenMouse_Event(MOUSEEVENTF_ABSOLUTE orMOUSEEVENTF_LEFTDOWN, absPoint.x, absPoint.y, 0, 0);
ifup thenMouse_Event(MOUSEEVENTF_ABSOLUTE orMOUSEEVENTF_LEFTUP, absPoint.x, absPoint.y, 0, 0);
end;
//просимулировать нажатие клавиши мыши
procedureSendMouseClick(x,y:integer;wHandle:THandle);
begin
sendmessage(wHandle, WM_LBUTTONDOWN, MK_LBUTTON, x+(y shl16));
sendmessage(wHandle, WM_LBUTTONUP, MK_LBUTTON, x+(y shl16));
application.processMessages;
end;
proceduremonitorState(state:boolean);
begin
ifstate thenSendMessage(Application.Handle, wm_SysCommand, SC_MonitorPower, -1)
elseSendMessage(Application.Handle, wm_SysCommand, SC_MonitorPower, 0);
end;
procedureexecWait( constcomLine: string);
var
si:Tstartupinfo;
p:Tprocessinformation;
begin
fillChar(Si, SizeOf(Si), 0);
withSi do begin
cb := SizeOf(Si);
dwFlags := startf_UseShowWindow;
wShowWindow := 4;
end;
Createprocess( nil, pChar(comLine), nil, nil, false, Create_default_error_mode, nil, nil, si, p);
Waitforsingleobject(p.hProcess, infinite);
end;
procedureshellExec( constfileName: string);
begin
shellExecute(0, Nil, pChar(fileName), Nil, Nil, SW_NORMAL);
end;
procedureDelay(msecs : DWORD);
var
FirstTick : DWORD;
begin
FirstTick:=GetTickCount;
repeat
Application.ProcessMessages;
untilGetTickCount-FirstTick >= msecs;
end;
functionHDDSerialNum( constdrivePath: string{'C:\'}):integer;
var
SerialNum:Pdword;
a,b:Dword;
buffer: array[0..255] ofchar;
begin
result:=0;
new(SerialNum);
ifgetVolumeInformation(pChar(drivePath), buffer, sizeof(buffer), SerialNum, a, b, nil, 0) thenresult:=SerialNum^;
Dispose(SerialNum);
end;
//фактически определяется запущена ли сейчас среда Delphi
functionisDelphiRunning:boolean;
varH1, H2, H3, H4 : Hwnd;
const
A1 : array[0..12] ofchar = 'TApplication'#0;
Интервал:
Закладка: