Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.03.05;
Скачать: [xml.tar.bz2];

Вниз

Какой модуль надо подключить?   Найти похожие ветки 

 
kvz   (2006-02-16 10:45) [0]

Какой модуль надо подключить для работы следующих функций:
OpenSCManager, OpenService, StartService, ControlService?


 
kaZaNoVa ©   (2006-02-16 10:48) [1]

WinSvc


 
Reindeer Moss Eater ©   (2006-02-16 10:49) [2]

Поиск по pas файлам содержащим нужный текст отменили?


 
kvz   (2006-02-16 10:58) [3]

Спасибо!


 
VirEx ©   (2006-02-19 08:44) [4]

помочь? консольная

program SCMTestApp;

{$APPTYPE CONSOLE}

uses
 SysUtils,
 Winsvc,  //для работы с сервисами
 Windows; //для распознавания ошибок

//===================================================
// далее идут вспомогательные процедуры и функции
//

//установка драйвера
function InstallDriver(scm :SC_HANDLE;DrvName,DrvPath:PChar):string;
var
 Service:SC_HANDLE;
begin
//создаем сервис
Service:=CreateService(scm, //дескриптор создаваемого сервиса
DrvName,                    //имя сервиса (для системы)
DrvName,                    //имя сервиса для вывода на экран
SERVICE_ALL_ACCESS,         //тип доступа (полный)
SERVICE_KERNEL_DRIVER,      //тип сервиса (драйвер)
SERVICE_DEMAND_START,       //тип запуска (по опросу)
SERVICE_ERROR_NORMAL,       //реакция системы на ошибку
DrvPath,                    //путь к *.sys файлу
nil,nil,nil,nil,nil);       //здесь не используются

if scm<>0 then result:="Install driver OK" else
 //вывод ошибок
 case GetLastError of
 ERROR_ACCESS_DENIED:        result:="ERROR_ACCESS_DENIED";
 ERROR_CIRCULAR_DEPENDENCY:  result:="ERROR_CIRCULAR_DEPENDENCY";
 ERROR_DUP_NAME:             result:="ERROR_DUP_NAME";
 ERROR_INVALID_HANDLE:       result:="Driver fail install";
 ERROR_INVALID_NAME:         result:="ERROR_INVALID_NAME";
 ERROR_INVALID_PARAMETER:    result:="ERROR_INVALID_PARAMETER";
 ERROR_INVALID_SERVICE_ACCOUNT: result:="ERROR_INVALID_SERVICE_ACCOUNT";
 ERROR_SERVICE_EXISTS:       result:="Driver already install";
 end;
//закрываем сервис
CloseServiceHandle(Service);
end;

//удаление драйвера
function RemoveDriver(scm :SC_HANDLE;DrvName:PChar):string;
var
 Service:SC_HANDLE;
begin
//открываем сервис
Service:=OpenService(scm,DrvName,SERVICE_ALL_ACCESS);
if Service=0 then result:="Driver not install" else
if DeleteService(Service) then result:="Driver remove OK";
//закрываем сервис
CloseServiceHandle(Service);
end;

//запуск драйвера
function StartDriver(scm :SC_HANDLE;DrvName:PChar):string;
var
 Service:SC_HANDLE;
 arg:PChar;
begin
arg:=nil;
//открываем сервис
Service:=OpenService(scm,DrvName,SERVICE_ALL_ACCESS);
if Service=0 then result:="Driver not install" else
 if StartService(Service,0,arg) then result:="Driver start OK" else
 //вывод ошибок
 case GetLastError of
 ERROR_INVALID_HANDLE:         result:="ERROR_INVALID_HANDLE";
 ERROR_PATH_NOT_FOUND:         result:="ERROR_PATH_NOT_FOUND";
 ERROR_SERVICE_ALREADY_RUNNING:result:="Driver already start";
 ERROR_SERVICE_DATABASE_LOCKED:result:="ERROR_SERVICE_DATABASE_LOCKED";
 ERROR_SERVICE_DEPENDENCY_DELETED: result:="ERROR_SERVICE_DEPENDENCY_DELETED";
 ERROR_SERVICE_DEPENDENCY_FAIL:result:="ERROR_SERVICE_DEPENDENCY_FAIL";
 ERROR_SERVICE_DISABLED:       result:="ERROR_SERVICE_DISABLED";
 ERROR_SERVICE_LOGON_FAILED:   result:="ERROR_SERVICE_LOGON_FAILED";
 ERROR_SERVICE_MARKED_FOR_DELETE: result:="ERROR_SERVICE_MARKED_FOR_DELETE";
 ERROR_SERVICE_NO_THREAD:      result:="ERROR_SERVICE_NO_THREAD";
 ERROR_SERVICE_REQUEST_TIMEOUT:result:="ERROR_SERVICE_REQUEST_TIMEOUT";
 end;
//закрываем сервис
CloseServiceHandle(Service);
end;

//остановка драйвера
function StopDriver(scm :SC_HANDLE;DrvName:PChar):string;
var
 Service:SC_HANDLE;
 ServStatus:TServiceStatus;
begin
//открываем сервис
Service:=OpenService(scm,DrvName,SERVICE_ALL_ACCESS);
if Service=0 then result:="Driver not install" else
 if ControlService(Service,SERVICE_CONTROL_STOP,ServStatus) then result:="Driver stop OK" else
 //вывод ошибок
 case GetLastError of
 ERROR_INVALID_HANDLE:         result:="ERROR_INVALID_HANDLE";
 ERROR_ACCESS_DENIED:            result:="ERROR_ACCESS_DENIED";
 ERROR_DEPENDENT_SERVICES_RUNNING:result:="ERROR_DEPENDENT_SERVICES_RUNNING";
 ERROR_INVALID_SERVICE_CONTROL:  result:="ERROR_INVALID_SERVICE_CONTROL";
 ERROR_SERVICE_CANNOT_ACCEPT_CTRL:result:="ERROR_SERVICE_CANNOT_ACCEPT_CTRL";
 ERROR_SERVICE_NOT_ACTIVE:       result:="Driver already stopped";
 ERROR_SERVICE_REQUEST_TIMEOUT:  result:="ERROR_SERVICE_REQUEST_TIMEOUT";
 end;
//закрываем сервис
CloseServiceHandle(Service);
end;

//помощь о командах
procedure Help;
begin
Writeln("-------------------------------");
Writeln("|Test drivers from SCM meneger|");
Writeln("-------------------------------");
Writeln("Commands:");
Writeln("1 - Install driver");
Writeln("2 - Start   driver");
Writeln("3 - Stop    driver");
Writeln("4 - Remove  driver");
Writeln("99 - exit");
Writeln("-------------------------------");
end;
//
// вспомогательные процедуры и функции заканчиваются здесь,
// далее идёт главная процедура программы
// (в языке C/C++ она называется Main)
//===================================================

var
 i:integer;
 scm_:SC_HANDLE;//дескриптор SCM менеждера
 status:string; //строка статуса (для вывода)
begin
//запуск SCM менеждера
scm_:=OpenSCManager(nil,nil,SC_MANAGER_ALL_ACCESS);

if scm_<>0 then WriteLn("SCM Manager start OK")//успешный запуск
else begin
 WriteLn("SCM Manager start fail");//показываем ошибку на экране
 readln;// до ввода любого символа
 exit;  // выход из программы
end;

status:="";
Help; // выводим меню команд при старте
repeat
//цикл, до тех пор, пока не будет
//введена цифра 99
begin
  readln(i);// запоминаем код команды
  Help;     // выводим меню команд после ввода команды
  case i of
  //команды
     1: status:=InstallDriver(scm_,"Example","D:\Example\objchk_wxp_x86\i386\Example.sys ");
     2: status:=StartDriver  (scm_,"Example");
     3: status:=StopDriver   (scm_,"Example");
     4: status:=RemoveDriver (scm_,"Example");
  end;
  Writeln("Driver status="+Status);//статус результата команды
  Write(">"); //командное приглашение
end;
until i=99;

//останавливаем SCM менеждер
CloseServiceHandle(scm_);
end.



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2006.03.05;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.013 c
2-1139929093
Толян
2006-02-14 17:58
2006.03.05
Как разделить поле в Excel


1-1138957761
t0mk4
2006-02-03 12:09
2006.03.05
Image1. как вывести только один кусок картинки?


8-1127516032
pr0t0n
2005-09-24 02:53
2006.03.05
Delphi and PhotoShop


4-1134741007
MixAnOL
2005-12-16 16:50
2006.03.05
Управление чужим приложением


2-1140088376
Id
2006-02-16 14:12
2006.03.05
TIBBlobStream





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский