Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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.046 c
4-1090743349
ogf
2004-07-25 12:15
2004.09.12
хук на запуск прог


1-1093414880
first_may
2004-08-25 10:21
2004.09.12
Оverload


4-1091175026
Andriy Tysh
2004-07-30 12:10
2004.09.12
Включён ли "принтер по умолчанию"?


11-1080499633
nester
2004-03-28 22:47
2004.09.12
Как в рантайм у EditBox а добраться до свойства Options ?


3-1092810724
Belkova
2004-08-18 10:32
2004.09.12
Первичный ключ





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