1. Набираем команду codeby webinar. Набираем команду для организации и проведения вебинаров. Подробнее ...

    Скрыть объявление
  2. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление
  3. Получи 30.000 рублей. Для получения денег необходимо принять участие в конкурсе авторов codeby. С условиями и призами можно ознакомиться на этой странице ...

    Внимание! Регистрация авторов на конкурс закрыта.

    Скрыть объявление

ик порт

Тема в разделе "Delphi - программирование", создана пользователем Tsnok, 26 окт 2005.

Статус темы:
Закрыта.
  1. Tsnok

    Tsnok Гость

    Репутация:
    0
    Всем привет.
    Кто знает как можно из мод Дельфи проверить наличие ик порта.
    Не откажусь от примеров на С.

    Благодарю за помощь.
     
  2. zubr

    zubr Гость

    Репутация:
    0
    Вот код определения модемов в системе:
    Код:
    type
    SP_DEVINFO_DATA=record
     cbSize:DWord;
     ClassGuid:TGuid;
     DevInst:DWord; 
     Reserved:LongInt;
    end;
    
    PSP_DEVINFO_DATA=^SP_DEVINFO_DATA;
    PGuid=^TGuid;
    
    const
    DIGCF_ALLCLASSES=$00000004;
    DIGCF_PRESENT=$00000002;
    DIGCF_PROFILE=$00000008;
    DIGCF_DEVICEINTERFACE=$00000010;
    SPDRP_DEVICEDESC=$00000000;
    
    
    function SetupDiCreateDeviceInfoList(ClassGuid:PGuid;
     hwndParent:cardinal):Pointer; stdcall;
     external 'setupapi.dll';
    function SetupDiGetClassDevsExA(ClassGuid:PGuid; Enumerator:PChar;
     hwndParent:cardinal; Flags:DWord; DeviceInfoSet:Pointer;
     MachineName:PChar; Reserved:DWord):Pointer; stdcall;
     external 'setupapi.dll';
    function SetupDiGetDeviceRegistryPropertyA(DeviceInfoSet:Pointer;
     DeviceInfoData:PSP_DEVINFO_DATA; Property_:DWord; PropertyRegDataType:Pointer;
     PropertyBuffer:Pointer; PropertyBufferSize:cardinal; RequiredSize:Pointer):
     longbool; stdcall;
     external 'setupapi.dll';
    function SetupDiEnumDeviceInfo(DeviceInfoSet:Pointer; MemberIndex:DWord;
     var DeviceInfoData:SP_DEVINFO_DATA):longbool; stdcall;
     external 'setupapi.dll';
    function SetupDiDestroyDeviceInfoList(DeviceInfoSet:Pointer):longbool; stdcall;
     external 'setupapi.dll';
    
    
    procedure TForm1.Button2Click(Sender: TObject);
    var
    hAllDevices, hDev:Pointer;
    k:Integer;
    Data:SP_DEVINFO_DATA;
    dwInfo, dwRequired, sz:DWord;
    buf:PChar;
    g:TGuid;
    s:string;
    begin
    hDev:=SetupDiCreateDeviceInfoList(nil, 0);
    k:=GetLastError;
    ShowMessage(IntToStr(k));
    g:=StringToGuid('{4D36E96D-E325-11CE-BFC1-08002BE10318}');//это гуид модемов, тебе надо найти в MSDN гуид ИК-портов
    hAllDevices:=SetupDiGetClassDevsExA(@g, nil, 0, DIGCF_PRESENT {or DIGCF_ALLCLASSES},
    hDev, nil, 0);
    k:=GetLastError;
    ShowMessage(IntToStr(k));
    FillChar(Data, SizeOf(SP_DEVINFO_DATA), 0);
    Data.cbSize:=SizeOf(SP_DEVINFO_DATA);
    dwInfo:=0;
    If not SetupDiEnumDeviceInfo(hAllDevices, dwInfo, Data) then
    ShowMessage('Error');
    While SetupDiEnumDeviceInfo(hAllDevices, dwInfo, Data) do
    begin
    dwRequired:=0;
    If (not SetupDiGetDeviceRegistryPropertyA(hAllDevices, @Data, 
     SPDRP_DEVICEDESC,
     nil, nil, 0, @dwRequired)) and (GetLastError=ERROR_INSUFFICIENT_BUFFER) then
    begin
     sz:=dwRequired;
     buf:=StrAlloc(100);
     FillChar(buf^, 100, #0);
     If SetupDiGetDeviceRegistryPropertyA(hAllDevices, @Data, SPDRP_DEVICEDESC,
     nil, @buf^, 100, @dwRequired) then
     begin
     s:=string(buf);
     Memo1.Lines.Add(s);
     end;
     StrDispose(buf);
    end;
    inc(dwInfo);
    end;
    SetupDiDestroyDeviceInfoList(hAllDevices);
    SetupDiDestroyDeviceInfoList(hDev);
    end;
    В твоем случае надо заменить только гуид, или для отображения всего оборудования вместо гуид поставь nil
     
  3. Tsnok

    Tsnok Гость

    Репутация:
    0
    Спасибо!
    Все работает.
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей