Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 17.08.2007, 21:41   #11
=LeonZone=
Форумчанин
 
Аватар для =LeonZone=
 
Регистрация: 15.08.2007
Сообщений: 118
По умолчанию

Плохо... Очень плохо!
=LeonZone= вне форума
Старый 17.08.2007, 22:04   #12
KORT
Вот я и
Форумчанин
 
Аватар для KORT
 
Регистрация: 07.04.2007
Сообщений: 501
По умолчанию

Попробуй вот так!!!
Код:
unit USBStateChange;
 
interface
 
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
 
type
TForm6 = class(TForm)
btnEnable: TButton;
btnDisable: TButton;
procedure btnEnableClick(Sender: TObject);
procedure btnDisableClick(Sender: TObject);
end;
 
var
Form6: TForm6;
 
implementation
 
{$R *.dfm}
 
type
PSP_CLASSINSTALL_HEADER = ^SP_CLASSINSTALL_HEADER;
SP_CLASSINSTALL_HEADER = record
cbSize: DWORD;
InstallFunction: Cardinal;
end;
PSP_PROPCHANGE_PARAMS = ^SP_PROPCHANGE_PARAMS;
 
SP_PROPCHANGE_PARAMS = record
ClassInstallHeader: SP_CLASSINSTALL_HEADER;
StateChange: DWORD;
Scope: DWORD;
HwProfile: DWORD;
end;
PSP_DEVINFO_DATA = ^SP_DEVINFO_DATA;
 
SP_DEVINFO_DATA = record
cbSize: DWORD;
ClassGuid: TGUID;
DevInst: DWORD;
Reserved: Longint;
end;
 
function SetupDiGetClassDevs(const ClassGuid: PGUID; Enumerator: PChar;
hwndParent: HWND; Flags: DWORD): DWORD; stdcall;
external 'Setupapi.dll' name 'SetupDiGetClassDevsA';
function SetupDiDestroyDeviceInfoList(DeviceInfoSet: DWORD): BOOL; stdcall;
external 'Setupapi.dll';
function SetupDiEnumDeviceInfo(DeviceInfoSet: DWORD; MemberIndex: DWORD;
DeviceInfoData: PSP_DEVINFO_DATA): BOOL; stdcall;
external 'Setupapi.dll';
function SetupDiCallClassInstaller(InstallFunction: DWORD;
DeviceInfoSet: DWORD; DeviceInfoData: PSP_DEVINFO_DATA): BOOL; stdcall;
external 'setupapi.dll';
function SetupDiGetDeviceRegistryProperty(DeviceInfoSet: DWORD;
DeviceInfoData: PSP_DEVINFO_DATA; Propertys: DWORD; PropertyRegDataType: PWORD;
PropertyBuffer: PByte; PropertyBufferSize: DWORD; RequiredSize: PWORD): BOOL; stdcall;
external 'Setupapi.dll' name 'SetupDiGetDeviceRegistryPropertyA';
function SetupDiSetClassInstallParams(DeviceInfoSet: DWORD;
DeviceInfoData: PSP_DEVINFO_DATA; ClassInstallParams: PSP_CLASSINSTALL_HEADER;
ClassInstallParamsSize: DWORD): BOOL; stdcall;
external 'setupapi.dll' name 'SetupDiSetClassInstallParamsA';
 
const
DICS_ENABLE = $00000001;
DICS_DISABLE = $00000002;
DIF_PROPERTYCHANGE = $00000012;
DICS_FLAG_GLOBAL = $00000001;
DIGCF_PRESENT = $00000002;
SPDRP_COMPATIBLEIDS = $00000002;
DISK_GUID: TGUID = '{4D36E967-E325-11CE-BFC1-08002BE10318}';
 
function ChangeDeviceState(AState: DWORD): Boolean;
var
pcp: SP_PROPCHANGE_PARAMS;
DevInfoData: SP_DEVINFO_DATA;
hDevInfo1: DWORD;
I, DataT, Buffersize: DWORD;
Buffer: PAnsiChar;
begin
Result := False;
pcp.ClassInstallHeader.cbSize := sizeof(SP_CLASSINSTALL_HEADER);
pcp.ClassInstallHeader.InstallFunction := DIF_PROPERTYCHANGE;
pcp.StateChange := AState;
pcp.Scope := DICS_FLAG_GLOBAL;
pcp.HwProfile := 0;
hDevInfo1 := SetupDiGetClassDevs(@DISK_GUID, nil, HWND(nil), DIGCF_PRESENT);
try
DevInfoData.cbSize := sizeof(SP_DEVINFO_DATA);
I := 0;
Buffersize := 500;
GetMem(Buffer, Buffersize);
try
while SetupDiEnumDeviceInfo(hDevInfo1, I, @DevInfoData) do
begin
SetupDiGetDeviceRegistryProperty(hDevInfo1, @DevInfoData,
SPDRP_COMPATIBLEIDS, @DataT, PByte(Buffer), Buffersize, nil);
if buffer = 'USBSTOR\Disk' then
begin
if not SetupDiSetClassInstallParams(hDevInfo1,
@DevInfoData, PSP_CLASSINSTALL_HEADER(@pcp), SizeOf(pcp)) then Exit;
if not SetupDiCallClassInstaller(
DIF_PROPERTYCHANGE, hDevInfo1, @DevInfoData) then Exit;
Result := True;
end;
Inc(I);
end;
finally
FreeMem(Buffer);
end;
finally
SetupDiDestroyDeviceInfoList(hDevInfo1);
end;
end;
 
procedure TForm6.btnEnableClick(Sender: TObject);
begin
if ChangeDeviceState(DICS_ENABLE) then
ShowMessage('Устройство включено');
end;
 
procedure TForm6.btnDisableClick(Sender: TObject);
begin
if ChangeDeviceState(DICS_DISABLE) then
ShowMessage('Устройство отключено');
end;
 
end.
Исходники программ - http:\\www.kort.3dn.ru
KORT вне форума
Старый 17.08.2007, 22:09   #13
=LeonZone=
Форумчанин
 
Аватар для =LeonZone=
 
Регистрация: 15.08.2007
Сообщений: 118
По умолчанию

О! Уже по делу! Позже попробую)
=LeonZone= вне форума
Старый 17.08.2007, 22:25   #14
KORT
Вот я и
Форумчанин
 
Аватар для KORT
 
Регистрация: 07.04.2007
Сообщений: 501
По умолчанию

Попробуй!!! Должно наверно работать...это я нашел в инете...надеюсь труды мои не прошли напрасно...
Исходники программ - http:\\www.kort.3dn.ru
KORT вне форума
Старый 17.08.2007, 23:45   #15
MadReason
Ищу работу
Форумчанин
 
Аватар для MadReason
 
Регистрация: 16.02.2007
Сообщений: 269
По умолчанию

оставь в диспетчере устройств два порта для клавы и мышки, а остальные отключи. и ограничь доступ на установку оборудования и т.д, тада заместо крысы и клавы они не смогут установить юсби-брелоки. должно сработать
Пишу на Delphi все что угодно, недорого, красиво, с комментариями
###icq 107335###
MadReason вне форума
Старый 18.08.2007, 11:00   #16
KORT
Вот я и
Форумчанин
 
Аватар для KORT
 
Регистрация: 07.04.2007
Сообщений: 501
По умолчанию

Особенно студенты - народ умный, они вытащут из USB шнур от клавы например и вставят флешку, скинут что им надо и не надо, а потом обратно клаву воткнут...
Исходники программ - http:\\www.kort.3dn.ru

Последний раз редактировалось KORT; 18.08.2007 в 11:43.
KORT вне форума
Старый 18.08.2007, 11:42   #17
=LeonZone=
Форумчанин
 
Аватар для =LeonZone=
 
Регистрация: 15.08.2007
Сообщений: 118
По умолчанию

2 MadReason
Классная мысль!

2 KORT
Ты, конечно, прав, но если я это замечу песец ему будет!
=LeonZone= вне форума
Старый 18.08.2007, 11:43   #18
KORT
Вот я и
Форумчанин
 
Аватар для KORT
 
Регистрация: 07.04.2007
Сообщений: 501
По умолчанию

А если нет????
Исходники программ - http:\\www.kort.3dn.ru
KORT вне форума
Старый 18.08.2007, 11:45   #19
=LeonZone=
Форумчанин
 
Аватар для =LeonZone=
 
Регистрация: 15.08.2007
Сообщений: 118
По умолчанию

Точно замечу! Ну а если нет, то надо попробовать код что ты дал...
=LeonZone= вне форума
Старый 18.08.2007, 11:46   #20
KORT
Вот я и
Форумчанин
 
Аватар для KORT
 
Регистрация: 07.04.2007
Сообщений: 501
По умолчанию

А скока компов в аудитории?
Исходники программ - http:\\www.kort.3dn.ru
KORT вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Взаимодействие flash и C#? mrakaziabra Общие вопросы .NET 3 16.07.2008 07:16
Воспроизведение Flash (*.swf) Airou Компоненты Delphi 2 19.05.2008 12:24
Macromedia Flash Constellation БД в Delphi 0 12.12.2007 15:53
Flash презентация Bob Marley HTML и CSS 2 12.04.2007 17:07