Button1: TButton;
Button2: TButton;
Edit1: TEdit;
Label1: TLabel;
procedureButton1Click(Sender: TObject);
procedureStopService(ServiceName: String);
procedureButton2Click(Sender: TObject);
procedureStartService(ServiceName: String);
private
{ Private declarations }
public
{ Public declarations }
end;
varForm1: TForm1;
implementation
{$R *.DFM}
procedureTForm1.Button1Click(Sender: TObject);
begin
StopService(Edit1.Text);
end;
procedureTForm1.StopService(ServiceName: String);
var
schService, schSCManager: DWORD;
p: PChar;
ss: _SERVICE_STATUS;
begin
p:= nil;
schSCManager:= OpenSCManager( nil, nil, SC_MANAGER_ALL_ACCESS);
ifschSCManager = 0 thenRaiseLastWin32Error;
try
schService:=OpenService(schSCManager, PChar(ServiceName), SERVICE_ALL_ACCESS);
ifschService = 0 thenRaiseLastWin32Error;
try
if notControlService(schService, SERVICE_CONTROL_STOP, SS) then RaiseLastWin32Error;
finally
CloseServiceHandle(schService);
end;
finally
CloseServiceHandle(schSCManager);
end;
end;
procedureTForm1.Button2Click(Sender: TObject);
begin
StartService(Edit1.Text);
end;
procedureTForm1.StartService(ServiceName: String);
var
schService, schSCManager: Dword;
p: PChar;
begin
p:= nil;
schSCManager:= OpenSCManager( nil, nil, SC_MANAGER_ALL_ACCESS);
ifschSCManager = 0 thenRaiseLastWin32Error;
try
schService:=OpenService(schSCManager, PChar(ServiceName), SERVICE_ALL_ACCESS);
ifschService = 0 thenRaiseLastWin32Error;
try
if notWinsvc.startService(schService, 0, p) thenRaiseLastWin32Error;
finally
CloseServiceHandle(schService);
end;
finally
CloseServiceHandle(schSCManager);
end;
end;
end.
functionRevealHint (Control: TControl): THintWindow;
{----------------------------------------------------------------}
{ Демонстрирует всплывающую подсказку для определенного элемента }
{ управления (Control), возвращает ссылку на hint-объект, }
{ поэтому в дальнейшем подсказка может быть спрятана вызовом }
{ RemoveHint (смотри ниже). }
{----------------------------------------------------------------}
var
ShortHint: string;
AShortHint: array[0..255] ofChar;
HintPos: TPoint;
HintBox: TRect;
begin
{ Создаем окно: }
Result := THintWindow.Create(Control);
{ Получаем первую часть подсказки до '|': }
ShortHint := GetShortHint(Control.Hint);
{ Вычисляем месторасположение и размер окна подсказки }
HintPos := Control.ClientOrigin;
Inc(HintPos.Y, Control.Height + 6); <<<< Смотри примечание ниже
HintBox := Bounds(0, 0, Screen.Width, 0);
DrawText(Result.Canvas.Handle, StrPCopy(AShortHint, ShortHint), -1, HintBox, DT_CALCRECT orDT_LEFT orDT_WORDBREAK orDT_NOPREFIX);
OffsetRect(HintBox, HintPos.X, HintPos.Y);
Inc(HintBox.Right, 6);
Inc(HintBox.Bottom, 2);
{ Теперь показываем окно: }
Result.ActivateHint(HintBox, ShortHint);
end; {RevealHint}
procedureRemoveHint ( varHint: THintWindow);
{----------------------------------------------------------------}
{ Освобождаем дескриптор окна всплывающей подсказки, выведенной }
{ предыдущим RevealHint. }
{----------------------------------------------------------------}
begin
Hint.ReleaseHandle;
Hint.Free;
Hint := nil;
end; {RemoveHint}
Строка с комментарием <<<<позиционирует подсказку ниже элемента управления. Это может быть изменено, если по какой-то причине вам необходима другая позиция окна с подсказкой.
Как использовать свои курсоры в программе? I
Nomadicпредлагает следующее:
{$R CURSORS.RES}
const
crZoomIn = 1;
crZoomOut = 2;
Screen.Cursors[crZoomIn] := LoadCursor(hInstance, 'CURSOR_ZOOMIN');
Screen.Cursors[crZoomOut] := LoadCursor(hInstance, 'CURSOR_ZOOMOUT');
С вашей программой должен быть слинкован файл ресурсов, содержащий соответствующие курсоры.
Как использовать свои курсоры в программе? II
С помощью программы Image Editor упакуйте курсор в RES-файл. В следующем примере подразумевается, что вы сохранили курсор в RES-файле как «cursor_1», и записали RES-файл с именем MYFILE.RES.
Читать дальше