![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Обновление списка оборудования ОС [D7, WinXP]
Apophis © (2004-11-18 23:22:00)Подскажите, пожалуйста, как программно выполнить следующие действия (Win XP):
Мой компьютер --> Свойства --> Оборудование --> Диспетчер устройств --> !ОБНОВИТЬ! (да еще желательно и в фоне!)
Спасибо!
DC-AC (2004-11-20 14:48:00) [1]Я только привёл ответ. Сам я это не делал. Для Delphi сначала придётся поискать переведённый хидер Cfgmgr32.h содержащий описания структур и функций Cfgmgr32.dll или перевести его самому. На www.delpihi-jedi.org лежит много переведённых хидеров, сам пользовался Setupapi.pas. Скачай его, посмотри, может там что-нибудь похожее есть.
Apophis (2004-11-20 00:31:00) [2]DC-AC
Найти-то я нашел, а как сие на Делфях будет выглядеть? Какие типы переменных и как их вызывать?
-----------------------------------
BOOL ScanForHardwareChanges()
{
DEVINST devInst;
CONFIGRET status;
//
// Get the root devnode.
//
status = CM_Locate_DevNode(&devInst, NULL, CM_LOCATE_DEVNODE_NORMAL);
if (status != CR_SUCCESS) {
printf("CM_Locate_DevNode failed: %x\n", status);
return FALSE;
}
status = CM_Reenumerate_DevNode(devInst, 0);
if (status != CR_SUCCESS) {
printf("CM_Reenumerate_DevNode failed: %x\n", status));
return FALSE;
}
return TRUE;
}
-----------------------------------
Ну не сталкивался я Сями раньше :(
DC-AC (2004-11-19 08:26:00) [3]Когда-то на эту тему был такой ответ :
--------------------------------------------------------------------------------
N170 (04.04.04 18:27) [1]
Поищите в MSDN статью:
"HOWTO: Force Reenumeration of a Device Tree From an Application"
[PSS ID Number: 259697]
[Q259697]
Там есть ответ с примером кода.
--------------------------------------------------------------------------------
Юпитер (2004-11-19 01:54:00) [4]обновить не знаю но просто запустить.. это
Не получаца скрыть иконку внешней програмки
WinExec('C:\windows\system32\devmgmt.exe',0);
{хотя можно :) после запуска его скрыть и виртуально нажать сначала
на компьютер в списке и кнопку обновить}
//чтобы скрыть
ShowWindow(FindWindow(0, 'Диспетчер Устройств'),HIDE_WINDOW);
//чтобы закрыть
SendMessage(FindWindow(nil,'Диспетчер Устройств'), WM_CLOSE, 0, 0);
ниче не возможного :) еще существуют команды API только их надо искать... и комманды shell32 и user32...
Apophis (2004-11-18 23:42:00) [5]Ну надААА!!!
Так можно и как?
Defunct (2004-11-18 23:26:00) [6]Зачем???
да еще и в WinXP