Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.01.09;
Скачать: CL | DM;

Вниз

Обновление списка оборудования ОС   Найти похожие ветки 

 
Apophis ©   (2004-11-18 23:22) [0]

Подскажите, пожалуйста, как программно выполнить следующие действия (Win XP):
Мой компьютер --> Свойства --> Оборудование --> Диспетчер устройств --> !ОБНОВИТЬ! (да еще желательно и в фоне!)

Спасибо!


 
Defunct ©   (2004-11-18 23:26) [1]

Зачем???
да еще и в WinXP


 
Apophis ©   (2004-11-18 23:42) [2]

Ну надААА!!!
Так можно и как?


 
Юпитер   (2004-11-19 01:54) [3]

обновить не знаю но просто запустить.. это
Не получаца скрыть иконку внешней програмки

 WinExec("C:\windows\system32\devmgmt.exe",0);
 {хотя можно :) после запуска его скрыть и виртуально нажать сначала
  на компьютер в списке и кнопку обновить}
//чтобы скрыть
ShowWindow(FindWindow(0, "Диспетчер Устройств"),HIDE_WINDOW);

//чтобы закрыть
SendMessage(FindWindow(nil,"Диспетчер Устройств"), WM_CLOSE, 0, 0);


ниче не возможного :) еще существуют команды API только их надо искать... и комманды shell32 и user32...


 
DC-AC   (2004-11-19 08:26) [4]

Когда-то на эту тему был такой ответ :
--------------------------------------------------------------------------------
N170   (04.04.04 18:27) [1]
Поищите в MSDN статью:
"HOWTO: Force Reenumeration of a Device Tree From an Application"
[PSS ID Number: 259697]
[Q259697]

Там есть ответ с примером кода.

--------------------------------------------------------------------------------


 
Apophis ©   (2004-11-20 00:31) [5]

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-20 14:48) [6]

Я только привёл ответ. Сам я это не делал. Для Delphi сначала придётся поискать переведённый хидер Cfgmgr32.h содержащий описания структур и функций Cfgmgr32.dll или перевести его самому. На www.delpihi-jedi.org лежит много переведённых хидеров, сам пользовался Setupapi.pas. Скачай его, посмотри, может там что-нибудь похожее есть.



Страницы: 1 вся ветка

Текущий архив: 2005.01.09;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.026 c
14-1103288551
shurik_212
2004-12-17 16:02
2005.01.09
Точка на цифровой клаве


14-1103255530
schooll
2004-12-17 06:52
2005.01.09
учебник FPC


1-1102430073
Aser
2004-12-07 17:34
2005.01.09
Как включить WordWrap в TSynEdit? (Delphi-подобный RichEdit)


9-1091386709
breakmaster
2004-08-01 22:58
2005.01.09
DXTimer


3-1102542933
Vemer
2004-12-09 00:55
2005.01.09
Работа с External Tables..