Текущий архив: 2005.07.31;
Скачать: CL | DM;
ВнизКак узнать какие программы на компьютере установлены? и как вывес Найти похожие ветки
← →
MadGhost © (2005-04-28 14:29) [0]Уважаемые мастера. Помогите пожалуйста в следующем вопросе.
Надо узнать какие программы установленны на компьютере, т.е. когда мы заходим в Пуск-Настройка-Панель управления-Установка и Удаление программ, там вылазит список программ, как мне узнать (где взять) этот список.
2. Как узнать какое железо установленно на компьютере? Свойства Мой компьютер-Диспетчер устройств, этот список нужен.
Помогите пожалуйста.
← →
alpet © (2005-04-28 15:10) [1]1. В реестре. Ключ вроде "HKLM\Software\Microsoft\Current Version\Uninstall", а его подключи - программы которые зарегистрированны.
← →
MadGhost © (2005-04-28 16:36) [2]аха, с этим разобрались :) спасибо.
остался вопрос как узнать какие железки установлены на компьютере?
← →
dmitry501 © (2005-04-29 04:48) [3]MadGhost © (28.04.05 16:36) [2]
Возможно эта статья из MSDN тебе поможетEnumerating Current Devices
Applications can use the SetupDiGetClassDevsEx function to retrieve the list of current devices. The following example function demonstrates how to retrieve this list.
HDEVINFO DoDeviceEnum( GUID InterfaceClassGuid
)
/*
Routine Description:
Retrieves the device information set that contains that contains
the devices of the specified class.
Parameters:
InterfaceClassGuid - The interface class GUID.
Return Value:
If the function succeeds, the return value is a handle to the
device information set.
If the function fails, the return value is zero.
*/
{
HDEVINFO DeviceInfoSet;
HDEVINFO NewDeviceInfoSet;
// Create a device information set that will be the container for
// the device interfaces.
DeviceInfoSet = SetupDiCreateDeviceInfoList(NULL, NULL);
if(DeviceInfoSet == INVALID_HANDLE_VALUE) {
Err = GetLastError();
printf( "SetupDiCreateDeviceInfoList failed: %lx.\n", Err );
return 0;
}
// Retrieve the device information set for the interface class.
NewDeviceInfoSet = SetupDiGetClassDevsEx( InterfaceClassGuid,
NULL,
NULL,
DIGCF_PRESENT | DIGCF_DEVICEINTERFACE,
DeviceInfoSet,
NULL,
NULL
);
if(NewDeviceInfoSet == INVALID_HANDLE_VALUE)
{
Err = GetLastError();
printf( "SetupDiGetClassDevsEx failed: %lx.\n", Err );
return 0;
}
return NewDeviceInfoSet;
}
After you have registered to receive device interface notification messages, you can call this function to obtain a device information set that contains the current list of device interfaces. When you receive a DBT_DEVICEARRIVAL event, you can use the SetupDiOpenDeviceInterface function to add the device interface to the device information set. When you receive a DBT_DEVICEREMOVECOMPLETE event, you can use the SetupDiDeleteDeviceInterfaceData function to delete the device interface from the device information set.
← →
MadGhost © (2005-04-29 10:35) [4]во :))) почти замечательно, спасибо.
осталось только разобраться с параметром InterfaceClassGuid
что он есть и с чем его есть?
← →
alpet © (2005-04-29 13:53) [5]Код приведенной функции ориентирован на получение информации для конкретного устройства. Параметр InterfaceClassGuid - CLASSID этого устройства.
Из параметров SetupDiGetClassDevsEx:
If the DIGCF_DEVICEINTERFACE flag is set, ClassGuid represents an interface class; otherwise, ClassGuid represents a setup class.
If the DIGCF_ALLCLASSES flag is set, this parameter is ignored and the resulting list contains devices of all installed classes.
Получается если тебе нужна информация по всем устройствам - этот параметр тебе не нужен. Так что изучай функцию SetupDiGetClassDevs(Ex).
← →
Chiburg (2005-06-03 01:45) [6]
dmitry501 © (29.04.05 04:48) [3]
Возможно эта статья из MSDN тебе поможет
А можна популярнее для неопытного?
во :))) почти замечательно, спасибо.
Поделись откровением, пожалуйста!
← →
Грубич Женя (2005-06-03 11:24) [7]Подскажите, пожалуйста, что мне делать с этим сишным кодом, если я хочу написаь приложение с вышеупомянутыми возможностями (списк программ и девайсов) на Делфи.
← →
Neznaika © (2005-06-03 11:28) [8]>>Как узнать какие программы на компьютере установлены?
Искать все *.exe на винте :)
← →
dmitry501 © (2005-06-03 11:50) [9]Chiburg (03.06.05 1:45) [6]
Грубич Женя (03.06.05 11:24) [7]
Ну вот так примерно....
use SetupAPI;
.............................
const
INVALID_HDEVINFO_VALUE = POINTER(DWORD(-1));
GUID_DEVINTERFACE_DISPLAY_ADAPTER: TGUID = "{5b45201d-f2f2-4f3b-85bb-30ff1f953599}";
var
DeviceInfoSet : HDEVINFO;
NewDeviceInfoSet : HDEVINFO;
NewDeviceInterfaceData : SP_DEVICE_INTERFACE_DATA;
Dummy : TGUID;
i:Cardinal;
begin
// Создаем пустой device information set
DeviceInfoSet := SetupDiCreateDeviceInfoList(NIL,0);
if DeviceInfoSet = INVALID_HDEVINFO_VALUE then
begin
ShowMessage(Format("SetupDiGetClassDevsEx failed: %s", [SysErrorMessage(GetLastError)]));
exit;
end;
// Получаем информацию о классе устройств
NewDeviceInfoSet := SetupDiGetClassDevsEx(NIL,
NIL,
0,
DIGCF_PRESENT OR DIGCF_DEVICEINTERFACE OR DIGCF_ALLCLASSES,
DeviceInfoSet,
NIL,
NIL);
if NewDeviceInfoSet = INVALID_HDEVINFO_VALUE then
begin
ShowMessage(Format("SetupDiGetClassDevsEx failed: %s", [SysErrorMessage(GetLastError)]));
exit;
end;
// Получаем информацию об устройствах (только о первом дисплее!)
ZeroMemory(@NewDeviceInterfaceData, Sizeof(NewDeviceInterfaceData));
NewDeviceInterfaceData.cbSize := sizeof(SP_DEVICE_INTERFACE_DATA);
if NOT SetupDiEnumDeviceInterfaces(NewDeviceInfoSet,
NIL,
GUID_DEVINTERFACE_DISPLAY_ADAPTER,
0,
NewDeviceInterfaceData) then
begin
ShowMessage(Format("SetupDiEnumDeviceInterfaces failed: %s", [SysErrorMessage(GetLastError)]));
exit;
end;
и т.д..............................
Чтобы это заработало, нужно скачать заголовочные файлы (Setup and Device Installer API interface) для Delphi.
Например здесь [ftp://delphi-jedi.org/api/Setupapi.zip]
← →
Chiburg (2005-06-03 13:38) [10]
dmitry501 © (03.06.05 11:50) [9]
Спасибо, сейчас попробую.
Чтобы это заработало, нужно скачать заголовочные файлы (Setup and Device Installer API interface) для Delphi.
Например здесь [ftp://delphi-jedi.org/api/Setupapi.zip]
Исправьте если вру, но по-моему, setupapi.dll - стандартная библиотека винды, или это не совсем то?
← →
dmitry501 © (2005-06-06 04:57) [11]Chiburg (03.06.05 13:38) [10]
Исправьте если вру, но по-моему, setupapi.dll - стандартная библиотека винды, или это не совсем то?
Да
Страницы: 1 вся ветка
Текущий архив: 2005.07.31;
Скачать: CL | DM;
Память: 0.48 MB
Время: 0.034 c