Главная страница
    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.49 MB
Время: 0.011 c
2-1139920372
webpauk
2006-02-14 15:32
2006.03.05
ClientToScreen


1-1138612938
alsov
2006-01-30 12:22
2006.03.05
нестандартный StringGrid


1-1137522366
S_T_E_P_A_N___
2006-01-17 21:26
2006.03.05
Отладка DLL


4-1134626861
Alex_1234
2005-12-15 09:07
2006.03.05
Информация о версии в результирующем екзешнике...


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





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский