Форум: "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.014 c