Показать полную графическую версию : Вывод значений определенного ключа реестра на экран
VoinLuny
13-06-2012, 14:17
Дорогие форумчане!
Снова взываю к вашей помощи!
Нужен батник который покажет текущее разрешение в десятеричной системе.
Благодаря многоуважаемому Iska я сумел перейти в нужную ветку http://forum.oszone.net/thread-235369.html
@echo off
setlocal enableextensions enabledelayedexpansion
set sPath=HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Hardware Profiles\0001\System\CurrentControlSet\Control\VIDEO
for /f "delims==" %%i in ('reg.exe query "%sPath%" ^| find.exe "{"') do (
reg.exe query "%%i" >> tmp.txt && set sPath2=%%i\0000
goto :Teminate
)
:Teminate
for /f "delims==" %%y in ('reg.exe query "%sPath2%" ^| find.exe "Mon"') do (
reg.exe query "%%y" >> tmp.txt && set sPath3=%%y
goto :Teminate2
pause
)
:Teminate2
echo INFO: Dannye hranyatsya v vetke %sPath3%
pause
endlocal
pause
exit /b 0
rem Перенаправление вывода в temp.txt для того, чтобы не засорять окно ненужными данными
теперь проблема следующая: как вытащить 2 параметра: DefaultSettings.XResolution и DefaultSettings.YResolution причем чтобы они отобразились в виде 1024 и 768 а не 0x*****. Помогите пожалуйста!
VoinLuny, быть может, будет вариант проще. Что это такое (каков физический смысл):
DefaultSettings.XResolution и DefaultSettings.YResolution »
и почему Вы их извлекаете именно из реестра?
wmic desktopmonitor get screenheight, screenwidth
VoinLuny
13-06-2012, 16:51
Iska, потому что на мой взгляд это наиболее универсальный источник подобной информации. Предложите другой вариант, если он у Вас есть, и если он будет проще - я им с удовольствием воспользуюсь, хотя, говоря по правде, хотелось бы уже завершить данным методом.
VoinLuny, вопрос был про:
Что это такое (каков физический смысл): »
Если про то, что я думаю — коллега RostVY выше (http://forum.oszone.net/post-1933569.html#post1933569) предложил вариант.
VoinLuny
13-06-2012, 17:54
Iska, что Вы подразумеваете под физическим смыслом? Для чего вообще всё это надо?
:offtopic: Поясню:
В универе дали задание по предмету УИРС(Учебно-исследовательская работа студента) заделать такую программу, которая будет выводить на экран информацию о графических настройках: Расширение, глубина и т.д....
При этом реализация на любом языке программирования но без применения сторонних библиотек.
Поскольку я человек далекий от программирования, но имевший некий опыт общения с .bat и примерно представлявший себе, что это такое - я решил именно посредством .bat файла и реализовать данное задание. Источником, по объективным причинам, я выбрал реестр, как источник наиболее полной и точной информации обо всем, что только можно захотеть узнать о данном компьютере.
Вот вам суть.
Смысл всех моих извращений, так сказать. Искренне надеюсь на вашу помощь. Метод предложенный RostVY, безусловно действенен, но мне кажется, что преподавателя смутит программа из 2 строчек кода, хотелось бы добить уже методом, который я выбрал изначально.
если 2 строчки вас смущают и "реализация на любом языке программирования", могу предложить на Delphi на больше строчек
program scr;
{$APPTYPE CONSOLE}
uses
Windows, SysUtils, Forms;
var TempDC: HDC;
begin
TempDC:=GetDC(GetDesktopWindow);
writeln(IntToStr( Screen.Width )+' x '+IntToStr( Screen.Height ) + ' x ' + IntToStr(GetDeviceCaps(TempDC, BITSPIXEL)));
end.
VoinLuny
13-06-2012, 18:13
RostVY, Благодарю, это хорший вариант, НО
я помимо того, что хочу выполнить задание - хочу и понять для себя, как это делать. Это опыт. Просто поскольку я новичок, мне нужна помощь. У Вас нет идей, как бы добить вариант с батником? Вариант с дельфи я оставлю, на крайний случай, спасибо! :)
Foreigner
13-06-2012, 19:11
VoinLuny,
@echo off
setlocal
set "wmic=wmic desktopmonitor get screenheight, screenwidth /value"
for /f %%i in (' "%wmic%" ') do 1>nul set "%%i"
echo %screenwidth%x%screenheight%
Метод предложенный RostVY, безусловно действенен, но мне кажется, что преподавателя смутит программа из 2 строчек кода, »
Если преподаватель вменяемый — то не смутит: Wbem (http://en.wikipedia.org/wiki/Web-Based_Enterprise_Management) — это стандарт. Смотрите предыдущий пост коллеги Foreigner.
заделать такую программу, которая будет выводить на экран информацию о графических настройках: Расширение, глубина и т.д.... »
Выбирайте:
wmic.exe DesktopMonitor get /value
wmic.exe Path Win32_DisplayConfiguration get /value
wmic.exe Path Win32_DisplayControllerConfiguration get /value
wmic.exe Path Win32_VideoController get /value
wmic.exe Path Win32_VideoController assoc /ResultClass:CIM_VideoControllerResolution
Можно сделать и на WSH/PoSH.
VoinLuny
13-06-2012, 22:02
Foreigner, Iska, я вполне четко изложил то, что мне необходимо. ПОЖАЛУЙСТА, помогите мне реализовать мой метод. Там ведь осталось совсем немного...мне просто нужна подсказка. Как вывести на экран значение ключа реестра? wmic это хорошо, но мы не ищем легких путей :)
@echo off
setlocal enableextensions enabledelayedexpansion
set sPath=HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Hardware Profiles\0001\System\CurrentControlSet\Control\VIDEO
for /f "delims=" %%i in ('reg.exe query "%sPath%" ^| find.exe "{"') do (
for /f "tokens=1,3 delims= " %%j in (
'reg.exe query "%%i\0000" ^| findstr.exe /i /c:"DefaultSettings.XResolution" /c:"DefaultSettings.YResolution"'
) do set /a i%%j = %%k
goto :Teminate
)
:Teminate
if defined iDefaultSettings.XResolution echo XResolution: %iDefaultSettings.XResolution%
if defined iDefaultSettings.YResolution echo YResolution: %iDefaultSettings.YResolution%
endlocal
exit /b 0
Вопрос остаётся тем же — каков физический смысл этих величин?
VoinLuny
13-06-2012, 22:57
Iska, Вы как преподаватель по физике :)
Я, по правде говоря, не понимаю, что Вы хотите услышать :)
Что определяют эти параметры? Что меняется при их изменении?
Словосочетание физический смысл применимо к разрешению экрана для меня как производная от супа :)
Iska, Вы как преподаватель по физике
Я, по правде говоря, не понимаю, что Вы хотите услышать
Что определяют эти параметры? Что меняется при их изменении? »
VoinLuny, у меня, например, отображается 800x600 (а у Вас?). И мне сие ни о чём не говорит. Вот придёт lxa85 (http://forum.oszone.net/member.php?userid=44365), он Вам объяснит, что преподаватель первым делом спросит у Вас — «А что это за цифры?» И что Вы ему ответите?
VoinLuny
13-06-2012, 23:39
Что разрешение экрана - величина показывающая какое количество точек растрового изображения (пикселей) умещается на единицу площади (в некоторых случаях длины) данного устройства отображения. (Википедия)
А чем всё-таки был вызван данный вопрос? Преподавателя в первую очередь интересует, чтобы информация, которую он хочет получить, отображалась и отображалась корректно. Ему не интересно спрашивать каждого, кто принес ему такую программу, что такое разрешение. Это несколько не его предмет :)
А чем всё-таки был вызван данный вопрос? »
Тем, что мне непонятно, что это за цифры. Это не текущее моё разрешение, не минимально/максимально возможное. Вот я и спрашиваю — что это за цифры. Понятно, что это разрешение. Но — какое? Что эти цифры означают в реальности? Вы можете сказать? Я — не могу.
Вы, кстати, не написали, что показывает данный пакетный файл (http://forum.oszone.net/post-1933739.html#post1933739) у Вас.
VoinLuny
14-06-2012, 00:01
Iska, Ну с учетом конфигурации моего компьютера - это всё же моё текущее разрешение должно отображаться. Данная программа пока не запускалась на тестовой машине, поэтому дать её вывод пока не могу (сейчас пишу с другого компьютера). Я думаю Вы прекрасно понимаете, что на каждом компьютере свой реестр и не существует двух идентичных. Я пишу программу сейчас под свой нетбук, чтобы на нем показать работоспособную программу преподавателю. Чтобы написать универсальную программу - нужно больше сил и времени - сейчас несколько не до того.
Не должно быть никакой разницы, с какой машины запускать пакетный файл. Сие на конечный результат не должно влиять. Иначе получается не программа, а вывод единственного, заранее известного, результата.
Так что, не стесняйтесь, запускайте на той машине, на которой сидите сейчас, выкладывайте, что получилось, и попробуйте объяснить полученный результат.
VoinLuny
14-06-2012, 02:22
Iska, а всё просто. На этой машине она не работает, по той причине, что разделы реестра называются по разному и в программе указаны разделы для реестра нетбука. Например тот самый проблемный раздел из прошлой нашей с Вами темы, который начинается с { он всегда разный и их может быть несколько. Может быть не только 0000 но и 0001 и т.д....для того, чтобы Ваш код заработал на моем текущем компьютере, его нужно преобразовывать. Например HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Hardware Profiles\0001\System\CurrentControlSet\Control\VIDEO у меня но компьютере пуст. Поэтому завтра я уже смогу протестировать все на конечной машине, на которой кстати так же используется 0000 а не 0001 профиль и предоставлю Вам на суд результаты :)
VoinLuny, ну, так я свою речь веду как раз о том. Нужно определить, почему на одной машине «0000», на другой «0001» и что-нибудь ещё — на третьей. Определить, какие значения подразделов могут быть. Научиться выбирать среди них правильный. Тогда получится программа. А так… :wild:
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.