Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Делимся опытом Наступив на грабли - сообщи другим! Обмен опытом разработки и ремонта электронных устройств.

 
Опции темы
Непрочитано 02.08.2018, 15:52  
Ara41
Почётный гражданин KAZUS.RU
 
Регистрация: 30.09.2006
Сообщений: 1,560
Сказал спасибо: 158
Сказали Спасибо 661 раз(а) в 431 сообщении(ях)
Ara41 на пути к лучшему
По умолчанию Re: Программное определение типа видеокарт

Сообщение от pasha_zv Посмотреть сообщение
а вот о "программо-оснащенности ТСа - я не в курсе.
а ТСу похоже пох
Ara41 вне форума  
Непрочитано 02.08.2018, 15:53  
mike-y-k
Модератор
 
Регистрация: 04.08.2010
Адрес: Москва СЗАО
Сообщений: 11,246
Сказал спасибо: 11,165
Сказали Спасибо 3,854 раз(а) в 2,925 сообщении(ях)
mike-y-k на пути к лучшему
По умолчанию Re: Программное определение типа видеокарт

pasha_zv, таки CLI утилиту на Delphi как-то излишне
А на C код потом можно и на разные варианты процессорной архитектуры перетаскивать

Что-то от ТС ничего больше не слышно… Решил он проблему или оставил ее для заката солнца вручную?
__________________
rtfm forever должно быть основой для каждого. Альтернатива грустна, поскольку метод слепого щенка успешно работает при весьма малом числе вариантов…

Последний раз редактировалось mike-y-k; 02.08.2018 в 16:50.
mike-y-k вне форума  
Непрочитано 02.08.2018, 16:00  
Ara41
Почётный гражданин KAZUS.RU
 
Регистрация: 30.09.2006
Сообщений: 1,560
Сказал спасибо: 158
Сказали Спасибо 661 раз(а) в 431 сообщении(ях)
Ara41 на пути к лучшему
По умолчанию Re: Программное определение типа видеокарт

Нажмите, чтобы открыть спойлер

Код:
'Инвентаризация компьютеров средствами WMI и VBScript (29.07.2009)
'Данные выводятся в отдельный файл CSV для последующей сборки общего отчета
'Подробности - см. http://zheleznov.info/invent_comp.htm
'Автор: Павел Железнов

'== НАСТРОЙКИ

'режим работы
'Const SILENT = False 'тихий режим отключен, будет запрошено имя компьютера
Const SILENT = True 'режим отчета о локальном компьютере без вывода диалогов

'где сохранять отчет
Const DATA_DIR = "comp\" 'локальный каталог + "\" в конце
'Const DATA_DIR = "\\10.xxx.xxx.xxx\Report$\Invent\comp\" 'сетевой ресурс + "\" в конце

'прочее
Const TITLE = "Инвентаризация компьютеров" 'заголовок диалоговых окон
Const DATA_EXT = ".csv" 'расширение файла отчета
Const HEAD_LINE = True 'выводить заголовки в первой строке CSV-файла

'не завершать скрипт аварийно
'закомментировать на время отладки
On Error Resume Next

'== ВЫПОЛНЕНИЕ

'объект для доступа к файловой системе
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")

'объект WMI
Dim wmio

'файл отчета
Dim tf

'узнать имя локального компьютера
Dim nwo, comp
Set nwo = CreateObject("WScript.Network")
comp = LCase(nwo.ComputerName)

'запросить имя удаленного компьютера
If Not SILENT Then
	comp = InputBox("Введите имя компьютера:", TITLE, comp)
	'проверить доступность компьютера
	If Unavailable(comp) Then
		MsgBox "Компьютер недоступен:" & vbCrLf & comp, vbExclamation, TITLE
		comp = ""
	End If
End If

'провести инвентаризацию
If Len(comp) › 0 Then InventComp(comp)

'если ошибка
If Len(Err.Description) › 0 Then _
	If Not SILENT Then MsgBox comp & vbCrLf & "Ошибка:" & vbCrLf & Err.Description, vbExclamation, TITLE

'== ПОДПРОГРАММЫ

'инвентаризация компьютера, заданного сетевым именем или IP-адресом
'сохранение отчета с указанным именем
Sub InventComp(compname)

	Set wmio = GetObject("WinMgmts:{impersonationLevel=impersonate}!\\" & compname & "\Root\CIMV2")

	'некоторые WMI-классы поддерживаются не во всех версиях Windows
	Dim build
	build = BuildVersion()

	'файл отчета
	Set tf = fso.CreateTextFile(DATA_DIR & compname & DATA_EXT, True)

	'первая строка - заголовки
	If HEAD_LINE Then tf.WriteLine "Секция отчета;Параметр;Номер экземпляра;Значение"

	'дата проверки
	tf.WriteLine "Компьютер;Дата проверки;1;" & Now

	Log "Win32_ComputerSystemProduct", _
		"UUID", "", _
		"Компьютер", _
		"UUID"

	Log "Win32_ComputerSystem", _
		"Name,Domain,PrimaryOwnerName,UserName,TotalPhysica  lMemory", "", _
		"Компьютер", _
		"Сетевое имя,Домен,Владелец,Текущий пользователь,Объем памяти (Мб)"

	Log "Win32_OperatingSystem", _
		"Caption,Version,CSDVersion,Description,RegisteredU  ser,SerialNumber,Organization,InstallDate", "", _
		"Операционная система", _
		"Наименование,Версия,Обновление,Описание,Зарегистри  рованный пользователь,Серийный номер,Организация,Дата установки"

	Log "Win32_BaseBoard", _
		"Manufacturer,Product,Version,SerialNumber", "", _
		"Материнская плата", _
		"Производитель,Наименование,Версия,Серийный номер"

	Log "Win32_BIOS", _
		"Manufacturer,Name,SMBIOSBIOSVersion,SerialNumber", "", _
		"BIOS", _
		"Производитель,Наименование,Версия,Серийный номер"

	'не определяется Core 2 в XP SP2, см. http://support.microsoft.com/kb/953955
	Log "Win32_Processor", _
		"Name,Caption,CurrentClockSpeed,ExtClock,L2CacheSiz  e,SocketDesignation,UniqueId", "", _
		"Процессор", _
		"Наименование,Описание,Частота (МГц),Частота FSB (МГц),Размер L2-кеша (кб),Разъем,UID"

	Log "Win32_PhysicalMemory", _
		"Capacity,Speed,DeviceLocator", "", _
		"Модуль памяти", _
		"Размер (Мб),Частота,Размещение"

	'пропускаются USB-диски
	Log "Win32_DiskDrive", _
		"Model,Size,InterfaceType", "InterfaceType ‹› 'USB'", _
		"Диск", _
		"Наименование,Размер (Гб),Интерфейс"

	'только локальные диски
	'пропускаются USB-диски, размер которых обычно NULL
	Log "Win32_LogicalDisk", _
		"Name,FileSystem,Size,FreeSpace,VolumeSerialNumber", "DriveType = 3 AND Size IS NOT NULL", _
		"Логический диск", _
		"Наименование,Файловая система,Размер (Гб),Свободно (Гб),Серийный номер"

	Log "Win32_CDROMDrive", _
		"Name", "", _
		"CD-привод", _
		"Наименование"

	'только для XP/2003 и выше
	'пропускаются "двойники", имеющие в названии слово "Secondary"
	If build ›= 2600 Then
		Log "Win32_VideoController", _
		"Name,AdapterRAM,VideoProcessor,VideoModeDescriptio  n,DriverDate,DriverVersion", "NOT (Name LIKE '%Secondary')", _
		"Видеоконтроллер", _
		"Наименование,Объем памяти (Мб),Видеопроцессор,Режим работы,Дата драйвера,Версия драйвера"
	Else 'для Windows 2000
		Log "Win32_VideoController", _
		"Name,AdapterRAM,VideoProcessor,VideoModeDescriptio  n,DriverDate,DriverVersion", "", _
		"Видеоконтроллер", _
		"Наименование,Объем памяти (Мб),Видеопроцессор,Режим работы,Дата драйвера,Версия драйвера"
	End If


	'только для XP/2003 и выше
	'пропускаются отключенные сетевые адаптеры, в том числе минипорты
	'пропускаются виртуальные адаптеры VMware
	If build ›= 2600 Then
		Log "Win32_NetworkAdapter", _
		"Name,AdapterType,PermanentAddress,MACAddress", "NetConnectionStatus › 0 AND NOT (Name LIKE 'VMware%')", _
		"Сетевой адаптер", _
		"Наименование,Тип,IP-адрес,MAC-адрес"
	Else 'для Windows 2000
		Log "Win32_NetworkAdapter", _
		"Name,PermanentAddress,MACAddress", "", _
		"Сетевой адаптер", _
		"Наименование,IP-адрес,MAC-адрес"
	End If

	Log "Win32_SoundDevice", _
		"Name", "", _
		"Звуковое устройство", _
		"Наименование"

	Log "Win32_SCSIController", _
		"Name", "", _
		"SCSI контроллер", _
		"Наименование"

	'только для XP/2003 и выше
	'пропускаются сетевые принтеры
	'условия "Local = True Or Network = False" недостаточно для принт-серверов, поэтому проверяется порт
	If build ›= 2600 Then
		Log "Win32_Printer", _
		"Name,PortName,ShareName", "(Local = True OR Network = False) AND (PortName LIKE '%USB%' OR PortName LIKE '%LPT%')", _
		"Принтер", _
		"Наименование,Порт,Сетевое имя"
	End If

	Log "Win32_PortConnector", _
		"ExternalReferenceDesignator,InternalReferenceDesig  nator", "", _
		"Разъем порта", _
		"Внешний,Внутренний"

	Log "Win32_Keyboard", _
		"Name,Description", "", _
		"Клавиатура", _
		"Наименование,Описание"

	Log "Win32_PointingDevice", _
		"Name", "", _
		"Мышь", _
		"Наименование"

	'закрыть файл 
	tf.Close
	If Not SILENT Then MsgBox "Отчет сохранен в файл:" & vbCrLf & DATA_DIR & compname & DATA_EXT, vbInformation, TITLE

End Sub

'составить WQL-запрос, выполнить и записать строку в CSV-файл
'входные параметры:
'from - класс WMI
'sel - свойства WMI, через запятую
'where - условие отбора или пустая строка
'sect - соответствующая секция отчета
'param - соответствующие параметры внутри секции отчета, через запятую
'для отображения в кратных единицах, нужно их указать в скобках
Sub Log(from, sel, where, sect, param)

	Const RETURN_IMMEDIATELY = 16
	Const FORWARD_ONLY = 32

	Dim query, cls, item, prop
	query = "Select " & sel & " From " & from

	If Len(where) › 0 Then query = query & " Where " & where
	Set cls = wmio.ExecQuery(query,, RETURN_IMMEDIATELY + FORWARD_ONLY)

	Dim props, names, num, value
	props = Split(sel, ",")
	names = Split(param, ",")

	num = 1 'номер экземпляра
	For Each item In cls
		For i = 0 To UBound(props)

			'взять значение
			Set prop = item.Properties_(props(i))
			value = prop.Value

			'без проверки на Null возможнен вылет с ошибкой
			If IsNull(value) Then
				value = ""

			'если тип данных - массив, собрать в строку
			ElseIf IsArray(value) Then
				value = Join(value,",")

			'если указана кратная единица измерения, перевести значение
			ElseIf Right(names(i), 4) = "(Мб)" Then
				value = CStr(Round(value / 1024 ^ 2))
			ElseIf Right(names(i), 4) = "(Гб)" Then
				value = CStr(Round(value / 1024 ^ 3))

			'если тип данных - дата, преобразовать в читаемый вид
			ElseIf prop.CIMType = 101 Then
				value = ReadableDate(value)
			End If

			'вывести в файл непустое значение, заменить спецсимвол ";"
			value = Trim(Replace(value, ";", "_"))
			If Len(value) › 0 Then tf.WriteLine sect & ";" & names(i) & ";" & num & ";" & value

		Next 'i

		'перейти к следующему экземпляру
		num = num + 1
	Next 'item

End Sub

'преобразование даты формата DMTF в читаемый вид (ДД.ММ.ГГГГ)
'http://msdn.microsoft.com/en-us/library/aa389802.aspx
Function ReadableDate(str)
'объект недоступен в Windows 2000, поэтому см. далее
'	Dim dto
'	Set dto = CreateObject("WbemScripting.SWbemDateTime")
'	dto.Value = str
'	ReadableDate = dto.GetVarDate(True)
	ReadableDate = Mid(str, 7, 2) & "." & Mid(str, 5, 2) & "." & Left(str, 4)
End Function

'узнать версию (билд) WMI-сервера
'вернуть целое число
Function BuildVersion()
	Dim cls, item
	Set cls = wmio.ExecQuery("Select BuildVersion From Win32_WMISetting")
	For Each item In cls
		BuildVersion = CInt(Left(item.BuildVersion, 4))
	Next
End Function

'проверить доступность компьютера в сети
'вернуть True, если адрес недоступен
Function Unavailable(addr)
	Dim wmio, ping, p
	Set wmio = GetObject("WinMgmts:{impersonationLevel=impersonate}")
	Set ping = wmio.ExecQuery("SELECT StatusCode FROM Win32_PingStatus WHERE Address = '" & addr & "'")
	For Each p In ping
		If IsNull(p.StatusCode) Then
			Unavailable = True
		Else
			Unavailable = (p.StatusCode ‹› 0)
		End If
	Next
End Function

vbs скрипт для инвентаризации. Оставлю его тут, чтобы потом не искать, пригодится потом. Вырезать название видеокарты - останется десяток строк.
Ara41 вне форума  
Непрочитано 02.08.2018, 23:09  
estet
Почётный гражданин KAZUS.RU
 
Аватар для estet
 
Регистрация: 17.05.2005
Адрес: Украина
Сообщений: 1,958
Сказал спасибо: 292
Сказали Спасибо 494 раз(а) в 359 сообщении(ях)
estet на пути к лучшему
По умолчанию Re: Программное определение типа видеокарт

Сообщение от mike-y-k Посмотреть сообщение
Что-то от ТС ничего больше не слышно…
Может, задача
Сообщение от vigo1974 Посмотреть сообщение
удаленно шить нужным биосом
перешла в более актуальную плоскость, кто знает? ИМХО не так много живых 470-570 осталось, чтобы их еще и перешивать под старость. В наших барахолках 460-470 "на распай" были в ассортименте еще с 12 года
estet вне форума  
Непрочитано 02.08.2018, 23:15  
pasha_zv
Прописка
 
Аватар для pasha_zv
 
Регистрация: 14.12.2006
Адрес: Ставрополь - Донское
Сообщений: 252
Сказал спасибо: 111
Сказали Спасибо 186 раз(а) в 76 сообщении(ях)
pasha_zv на пути к лучшему
По умолчанию Re: Программное определение типа видеокарт

а зачем всё это? майнинг?
так есть и готовые решения с тремя видюхами....
pasha_zv вне форума  
Непрочитано 03.08.2018, 00:53  
Ara41
Почётный гражданин KAZUS.RU
 
Регистрация: 30.09.2006
Сообщений: 1,560
Сказал спасибо: 158
Сказали Спасибо 661 раз(а) в 431 сообщении(ях)
Ara41 на пути к лучшему
По умолчанию Re: Программное определение типа видеокарт

Сообщение от pasha_zv Посмотреть сообщение
а зачем всё это? майнинг?
майнинг, конечно. Зачем еще?

Последний раз редактировалось Ara41; 03.08.2018 в 09:43.
Ara41 вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Определение типа усилителя JeckVi Электроника - это просто 16 22.02.2010 17:49
Определение м/с micoss Делимся опытом 0 30.11.2009 21:49
Программное определение типа EEPROM Jendoss Микроконтроллеры, АЦП, память и т.д 3 24.03.2009 18:44
Подскажите пожалуйста интерфейс типа 232 на 500 метров Muzicant Микроконтроллеры, АЦП, память и т.д 9 16.02.2008 11:37


Часовой пояс GMT +4, время: 15:59.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot