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

Вниз

выключить+включить устройство   Найти похожие ветки 

 
Ньюб2   (2005-12-27 13:48) [0]

не подскажет кто-нибудь как выключить+включить устройство, а именно USB модем из сотового телефона


 
WondeRu ©   (2005-12-27 14:21) [1]

перезапусти драйвер USB шнурка
net stop <drivername>
net start <drivername>


 
Ньюб2   (2005-12-27 14:27) [2]

а как узнать drivername ?


 
Rouse_ ©   (2005-12-27 14:39) [3]

Ну вот так примерно ищуться драйвера:

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, WinSvc, ComCtrls, StdCtrls, ExtCtrls, Types, CommCtrl;

type
 TfrmMain = class(TForm)
   lvReport: TListView;
   rgServiceState: TRadioGroup;
   sbCount: TStatusBar;
   Button1: TButton;
   procedure FormCreate(Sender: TObject);
   procedure rgServiceStateClick(Sender: TObject);
   procedure Button1Click(Sender: TObject);
 private
   procedure EnumDrivers(const State: DWORD);
 end;

var
 frmMain: TfrmMain;

implementation

{$R *.dfm}

procedure TfrmMain.EnumDrivers(const State: DWORD);
var
 hSCObject, hService: SC_HANDLE;
 lpServices, TmpEnum: PEnumServiceStatus;
 lpServiceConfig: PQueryServiceConfig;
 I, cbBuffSize, pcbBytesNeeded,
 lpServicesReturned, lpResumeHandle: DWORD;
begin
 lvReport.Items.BeginUpdate;
 try
   lvReport.Items.Clear;
   hSCObject := OpenSCManager(nil, nil, SC_MANAGER_ENUMERATE_SERVICE);
   if hSCObject <> 0 then
   try
     lpResumeHandle := 0;
     lpServices := nil;
     EnumServicesStatus(hSCObject, SERVICE_DRIVER, State,
       lpServices^, 0, pcbBytesNeeded, lpServicesReturned, lpResumeHandle);
     if GetLastError = ERROR_MORE_DATA then
     begin
       GetMem(lpServices, pcbBytesNeeded);
       try
         cbBuffSize := pcbBytesNeeded;
         if EnumServicesStatus(hSCObject, SERVICE_DRIVER, State,
           lpServices^, cbBuffSize, pcbBytesNeeded, lpServicesReturned, lpResumeHandle) then
         begin
           TmpEnum := lpServices;
           for I := 0 to lpServicesReturned - 1 do
           begin
             with lvReport.Items.Add do
             begin
               Caption := TmpEnum^.lpServiceName;
               SubItems.Add(TmpEnum^.lpDisplayName);
               case TmpEnum^.ServiceStatus.dwCurrentState of
                 SERVICE_RUNNING: SubItems.Add("Работает");
                 SERVICE_STOPPED: SubItems.Add("Остановлен");
               else
                 SubItems.Add("Неизвестно");
               end;
               hService := OpenService(hSCObject, TmpEnum^.lpServiceName,
                 SERVICE_QUERY_CONFIG);
               if hService <> 0 then
               try
                 QueryServiceConfig(hService, nil, 0, pcbBytesNeeded);
                 if GetLastError = ERROR_INSUFFICIENT_BUFFER then
                 begin
                   cbBuffSize := pcbBytesNeeded;
                   GetMem(lpServiceConfig, pcbBytesNeeded);
                   try
                     if QueryServiceConfig(hService, lpServiceConfig,
                       cbBuffSize, pcbBytesNeeded) then
                     begin
                       SubItems.Add(lpServiceConfig^.lpBinaryPathName);
                       case lpServiceConfig^.dwServiceType of
                         SERVICE_FILE_SYSTEM_DRIVER:
                           SubItems.Add("Драйвер файловой системы");
                         SERVICE_KERNEL_DRIVER:
                           SubItems.Add("Драйвер режима ядра");
                       else
                         SubItems.Add("Неизвестный тип драйвера");
                       end;
                       SubItems.Add(lpServiceConfig^.lpLoadOrderGroup);
                     end;
                   finally
                     FreeMem(lpServiceConfig);
                   end;
                 end;
               finally
                 CloseServiceHandle(hService);
               end;
             end;
             Inc(TmpEnum);
           end;
         end;
       finally
         FreeMem(lpServices);
       end;
     end;
   finally
     CloseServiceHandle(hSCObject);
   end;
 finally
   lvReport.Items.EndUpdate;
   sbCount.Panels.Items[0].Text := " Общее количество: " +
     IntToStr(lvReport.Items.Count);
 end;
end;

procedure TfrmMain.FormCreate(Sender: TObject);
begin
 rgServiceState.OnClick(nil);
end;

procedure TfrmMain.rgServiceStateClick(Sender: TObject);
begin
 if rgServiceState.ItemIndex = 0 then
   EnumDrivers(3)
 else
   EnumDrivers(rgServiceState.ItemIndex);
end;

end.


 
BiN ©   (2005-12-28 10:01) [4]


> WondeRu ©   (27.12.05 14:21) [1]


Не всякие драйвера,и уж точно не драйвер USB-устройства, можно остановить с помощью диспетчера служб.


> Ньюб2   (27.12.05 13:48)  
>
> не подскажет кто-нибудь как выключить+включить устройство,
>  а именно USB модем из сотового телефона


С помощью SetupDiSetClassInstallParams.
Пример вроде есть на http://www.yeahware.com/


 
Orinoko   (2005-12-30 12:40) [5]

Если быстро и по простому то с помощью программы DEVCON (made in MS)
С её помощью можно увидеть VendorID устройства и зная его включать/выключать разные устройства. вся работа из командной строки



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

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

Наверх




Память: 0.47 MB
Время: 0.011 c
2-1141026942
apl
2006-02-27 10:55
2006.03.19
Про отчеты


2-1141054657
DesperadO666
2006-02-27 18:37
2006.03.19
Access violation в рекурсивной процедуре


1-1139856622
Дубинка
2006-02-13 21:50
2006.03.19
Эмуляция клика


3-1138112255
HabarovSergey
2006-01-24 17:17
2006.03.19
ошибка сохранения записи(данные модифицированы).Как игнорировать?


15-1140196206
Kerk
2006-02-17 20:10
2006.03.19
А что вы знаете про Китай?





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