Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2005.01.09;
Скачать: [xml.tar.bz2];

Вниз

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

 
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 вся ветка

Форум: "WinAPI";
Текущий архив: 2005.01.09;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.191 c
6-1098296927
papage
2004-10-20 22:28
2005.01.09
TIDHTTPSERVER, как слить файл


1-1103615593
race1
2004-12-21 10:53
2005.01.09
перенос


14-1103695590
ghg
2004-12-22 09:06
2005.01.09
Castalia 3.0


6-1097865516
vers
2004-10-15 22:38
2005.01.09
прокси на IdTCPServer


8-1096566017
ser_ega
2004-09-30 21:40
2005.01.09
CopyRect





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