Форум: "WinAPI";
Текущий архив: 2004.09.12;
Скачать: [xml.tar.bz2];
ВнизUSB! Найти похожие ветки
← →
Le! (2004-07-21 12:54) [0]Народ как можно получить список всех устройств подключенных к USB портам???
← →
Le! (2004-07-22 09:28) [1]Удалено модератором
Примечание: Создание пустых сообщений
← →
N170 (2004-07-22 10:10) [2]Через ф-и группы Setup API.
Имена коих начинаются с SetupDi.....
← →
Le! (2004-07-22 10:49) [3]напиши хоть парочку! откуда ты их взял??
SetMetaFileBits
SetPaletteEntries
SetParent
SetPixel
SetPolyFillMode
SetProp
SetRect
SetRectEmpty
SetRectRgn
SetResourceHandler
SetROP2
SetScrollPos
SetScrollRange
SetSoundNoise
SetStretchBitMode
SetSwapAreaSize
SetSysColors
SetSystemPaletteUse
SetTextAlign
SetTextCharacterExtra
SetTextColor
SetTextJustification
SetTimer
SetViewportExt
SetViewportOrg
SetVoiceAccent
SetVoiceEnvelope
SetVoiceNote
SetVoiceQueueSize
SetVoiceSound
SetVoiceThreshold
SetWindowExt
SetWindowLong
SetWindowOrg
SetWindowPos
SetWindowsHook
SetWindowText
SetWindowWord
ShowCaret
ShowCursor
Нету тех которые начинаются с Setup!!!!
← →
MetalFan © (2004-07-22 11:15) [4]SetupDiCreateDeviceInfoList
SetupDiCreateDeviceInfoListEx
SetupDiCreateDeviceInterfaceRegKey
...
SetupDiOpenDeviceInterfaceRegKey
=======
MSDN 2002
← →
Le! (2004-07-22 11:44) [5]спасибо уже легче!!
← →
Le! (2004-07-22 11:46) [6]только подскажите какую надо подключить??
вообще откуда эти функции
← →
DC-AC (2004-07-22 12:13) [7]www.delphi-jedi.org по-моему...
← →
Le! (2004-07-22 12:34) [8]DIGCF_ALLCLASSES
DIGCF_DEVICEINTERFACE
DIGCF_PRESENT
DIGCF_PROFILE
почему он пишет что не знает ниодин из этих параметров????
← →
Le! (2004-07-22 12:44) [9]вот у него SetupDiGetClassDevs подключив библиотеку "setupapi.dll" он его узнал а вот последнее его свойство(DIGCF_ALLCLASSES, DIGCF_DEVICEINTERFACE,
DIGCF_PRESENT, DIGCF_PROFILE) не одно не хочет воспринимать! что не так?? библиотеку пробовал подключать и статически и динамически, если это на чтото влияет!!
← →
Le! (2004-07-22 15:36) [10]слушайте может кто нить здесь код оставить! может я не так что делаю!
← →
NorthMan © (2004-07-22 16:19) [11]На мой взгляд можно попробовать WMI функции использовать. Они позволяют почти любую инфу получать. Теория есть на MSDN и на русском. Есть компоненты NTSet на http://www.online-admin.com, тоже могут помочь
← →
DC-AC (2004-07-23 07:19) [12]1. Скачиваем файл setupapi.pas
2. В нём видим
const
DIGCF_DEFAULT = $00000001; // only valid with DIGCF_DEVICEINTERFACE
{$EXTERNALSYM DIGCF_DEFAULT}
DIGCF_PRESENT = $00000002;
{$EXTERNALSYM DIGCF_PRESENT}
DIGCF_ALLCLASSES = $00000004;
{$EXTERNALSYM DIGCF_ALLCLASSES}
DIGCF_PROFILE = $00000008;
{$EXTERNALSYM DIGCF_PROFILE}
DIGCF_DEVICEINTERFACE = $00000010;
{$EXTERNALSYM DIGCF_DEVICEINTERFACE}
3. пишем
implementation
uses SetupApi;
4. Всё...
← →
Le! (2004-07-23 13:28) [13]теперь след вопросы:
первое откуда скачать setupapi.pas, просто я какой то нашел у себя но не пошло выдало ошибку: Точка входа в процудуру SetupGetClassDevs не найдена в библиотеке DLL setupapi.dll!!!осюда следующий вопрос надо было писать так:
function SetupDiGetClassDevs(pClassGuid: Pointer;
Enumerator: PCHAR;
hwndParent: HWND;
Flags: DWORD):pointer;
stdcall; external "setupapi.dll";
← →
Le! (2004-07-23 13:30) [14]вернее надо было ли писать вот так! как указано выше!
← →
DC-AC (2004-07-23 16:58) [15]>первое откуда скачать setupapi.pas
Епрст, ну писал же www.delphi-jedi.org , а если пораскинуть мозгами, то www.delphi-jedi.org/APILIBRARY:694595
← →
Le! (2004-07-26 15:52) [16]А над ли делать для етой функции: external "setupapi.dll" или нет?
← →
Le! (2004-07-26 15:56) [17]и кстати здесь:
www.delphi-jedi.org/APILIBRARY:694595
setupapi.pas!
← →
Le! (2004-07-27 09:47) [18]народ почему не запускается, пишет какую то хрень и я вообще так сделал? с API никогда не сталкивался!!!
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, SetupApi;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
hInfo: pointer;
pClassGuid: Pointer;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
hInfo := SetupDiGetClassDevs(pClassGuid,NiL,0, cDIGCFPRESENT );
end;
end.
← →
Они (2004-07-27 14:41) [19]Наверно, переданы неверные параметры? Неинициализированный указатель, например.
HDEVINFO SetupDiGetClassDevs(
const GUID* ClassGuid,
PCTSTR Enumerator,
HWND hwndParent,
DWORD Flags
);
← →
Le! (2004-07-27 14:46) [20]то есть?
куда надо это впихнуть?
вот что надо исправить в моем примере чтобы заработало!!
← →
Они (2004-07-27 18:00) [21]>куда надо это впихнуть?
Ну, в параметр, наверно.
>вот что надо исправить в моем примере чтобы заработало!!
Всё, наверно. Это как варить суп из топора.
:)
← →
Они (2004-07-27 18:25) [22]Ну ладно. Вот примерчик. Для C++ Builder.
Следующий код перечисляет устройства и удаляет найденные в системе устройства, hardware id которых совпадает с указанным.
//---------------------------------------------------------------------------
// Удаляет все устройства с указанным id
void DeleteAllDevices(AnsiString hardware_id)
{
HDEVINFO DeviceInfoSet = SetupDiGetClassDevs(NULL,NULL,NULL,DIGCF_PROFILE|DIGCF_ALLCLASSES);
SP_DEVINFO_DATA DeviceInfoData;
#ifdef _DEBUG
AnsiString msg;
#endif
DeviceInfoData.cbSize = sizeof(SP_DEVINFO_DATA);
for (int i=0; SetupDiEnumDeviceInfo(DeviceInfoSet,i,&DeviceInfoData); i++)
{ // Цикл перечисления устройств
UCHAR *deviceid = GetDeviceRegistryProperty(DeviceInfoSet,&DeviceInfoData,SPDRP_HARDWAREID,NULL);
if (deviceid)
{
if (0==CompareStr(UpperCase(AnsiString((char *)deviceid)),UpperCase(hardware_id)))
{ // Наш Id!
#ifdef _DEBUG
msg = (AnsiString("Found device: ")+AnsiString((char *)deviceid));
OutputDebugString(msg.c_str());
#endif
if (!SetupDiRemoveDevice(DeviceInfoSet,&DeviceInfoData))
{
#ifdef _DEBUG
msg = (AnsiString("SetupDiRemoveDevice() failed, code = ")+IntToStr(GetLastError()));
OutputDebugString(msg.c_str());
#endif
} else
{
#ifdef _DEBUG
msg = (AnsiString("Устройство удалено"));
OutputDebugString(msg.c_str());
#endif
};
};
free(deviceid);
};
};
SetupDiDestroyDeviceInfoList(DeviceInfoSet);
}
Для устройств USB hardware id выглядит как "USB\VID_vvvv&PID_pppp&REV_rrrr"
где vvvv - код производителя, pppp - код продукта, rrrr - код релиза.
Например: "USB\VID_0123&PID_4567&REV_0089"
Иногда rev id пропускают.
← →
Le! (2004-07-28 11:05) [23]Я с API никогда не связывался! я не могу выполнить даже одну функцию! а тут сразу такой пример! спасибо! мне теперь забрираться пол года!
я спрашивал про тот код чтобы попататься выполнить хоть одну функцию а дальше я сам дойду!
у меня тот пример даже не запускается! а не то что ошибки выдает!
← →
Le! (2004-07-28 11:57) [24]а что не так в этом коде? нашел прогу которая переделывает из с++ в pas! начинаю исправлять ошибки и совсем закапываюсь!
procedure DeleteAllDevices(hardware_id: AnsiString);
var
DeviceInfoSet: HDEVINFO;
DeviceInfoData: SP_DEVINFO_DATA;
{$ifdef _DEBUG}
msg: AnsiString;
{$endif}
i: integer;
deviceid: pUCHAR;
begin
DeviceInfoSet:=SetupDiGetClassDevs(0{nil},0{nil},0{nil},DIGCF_PROFILE or DIGCF_ALLCLASSES);
DeviceInfoData.cbSize:= sizeof(SP_DEVINFO_DATA);
while{for}
i:=0;
{to} SetupDiEnumDeviceInfo(DeviceInfoSet,i, and DeviceInfoData)
{;}
inc(i);
do
begin
(* Цикл перечисления устройств*)
deviceid:=GetDeviceRegistryProperty(DeviceInfoSet, and DeviceInfoData,SPDRP_HARDWAREID,0{nil});
if deviceid<>0{nil} {<= !!!9}
then
begin
if 0=CompareStr(UpperCase(AnsiString({!!!a type cast? =>} {pchar(}deviceid)),UpperCase(hardware_id))
then
(* Наш Id!*)
{$ifdef _DEBUG}
begin
msg:= (AnsiString("Found device: ")+AnsiString({!!!a type cast? =>} {pchar(}deviceid));
OutputDebugString(msg.c_str());
{$endif}
if {not}0=SetupDiRemoveDevice(DeviceInfoSet, and DeviceInfoData)
then
{$ifdef _DEBUG}
begin
msg:= (AnsiString("SetupDiRemoveDevice() failed, code = ")+IntToStr(GetLastError()));
OutputDebugString(msg.c_str());
{$endif}
end;
else
{$ifdef _DEBUG}
begin
msg:= (AnsiString("Устройство удалено"));
OutputDebugString(msg.c_str());
{$endif}
end;
;
end;
;
free(deviceid);
end;
;
end;
;
SetupDiDestroyDeviceInfoList(DeviceInfoSet);
end;
← →
DC-AC (2004-07-29 07:29) [25]Тебе бы ручками научиться исправлять... Учебник по сям - и вперёд..
← →
Le! (2004-07-29 09:27) [26]Ручками получается хуже! хотя я уже дошел и SetupDiGetClassDevs у меня заработал! а как теперь посмотреть устройства которые он нашел (то есть как я понимаю в примерах выше вот это: DeviceInfoSet)и вывести их в какой нибудь memo или куда нить еще?? или это нереально??
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2004.09.12;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.057 c