Войти

Показать полную графическую версию : [решено] Запуск файла при условии (определенном разрешении экрана)


timyr.dp
09-03-2012, 02:42
Помогите, пожалуйста, разобраться.
Хочу с помощью батника запускать EXE-шник при выполнении определенного условия. Но условие не простое, а именно: определение разрешения экрана.

Как определить разрешение экрана я нашел:
mshta "javascript:var o = new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1); o.Write(screen.width + 'x' + screen.height); close()" 1 | more

Результат выполнения:
C:\Users\user\Desktop>mshta "javascript:var o = new ActiveXObject('Scripting.Fi
leSystemObject').GetStandardStream(1); o.Write(screen.width + 'x' + screen.heigh
t); close()" 1 | more
1680x1050

Не могу сообразить как составить условие
ЕСЛИ переменная==1680x1050 start программа.ехе or переменная==1024x768 start программа2.ехе

Помогите кто чем может! :)

timyr.dp
09-03-2012, 03:31
Я вам не подскажу конкретно, но про какое условие вы говорите если нет альтернативы к действию? »
Даже не знаю.. А определение разрешения экрана и вывод результата может быть действием?

Задача такая:
В зависимости от разрешения экрана запускать определенную программу.

Что в итоге должно быть ELSE? Вроде как ELSE не может существовать без THEN.»
Я слабоват в программировании. Наверно ошибся, не ЕЩЕ (ELSE) а ИЛИ (or). Я даже не знаю, можно ли использовать в БАТниках "ИЛИ"

Iska
09-03-2012, 04:00
Не могу сообразить как составить условие »
timyr.dp, у Вас непонятное условие. Точнее, их там полтора.

Если условие одно — на равенство «1680x1050», то как-то так:
@echo off
setlocal enableextensions enabledelayedexpansion

for /f "usebackq delims=" %%i in (
`@"%SystemRoot%\system32\mshta.exe" "javascript:try {new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).Write(window.screen.width + 'x' + window.screen.height)}; catch (e){}; close();" ^
1^|more`
) do set sResolution=%%i

if defined sResolution (
if "%sResolution%" equ "1680x1050" (
start "" "%SystemRoot%\system32\calc.exe"
) else (
start "" "%SystemRoot%\system32\notepad.exe"
)
) else (
echo Can't determine resolution
)

endlocal
exit /b 0

yurfed
09-03-2012, 05:11
Iska, timyr.dp, я извиняюсь, случайно удалил своё сообщение, если вдруг не понятен "диалог" yurfed- timyr.dp выше.

Foreigner
09-03-2012, 10:23
ЕСЛИ переменная==1680x1050 start программа.ехе or переменная==1024x768 start программа2.ехе »

@echo off
setlocal

set "wmic=wmic desktopmonitor get screenwidth, screenheight /value"
for /f %%i in (' "%wmic%" ') do 1>nul set "%%i"

if "%screenwidth%x%screenheight%"=="1680x1050" start "" "notepad"
if "%screenwidth%x%screenheight%"=="1024x768" start "" "calc"

timyr.dp
09-03-2012, 14:47
@echo off setlocal set "wmic=wmic desktopmonitor get screenwidth, screenheight /value" for /f %%i in (' "%wmic%" ') do 1>nul set "%%i" if "%screenwidth%x%screenheight%"=="1680x1050" start "" "notepad" if "%screenwidth%x%screenheight%"=="1024x768" start "" "calc" »
Это сработало! Спасибо!

Fetser
20-08-2012, 11:58
Не для всех видеокарт работает
@echo off
setlocal
set "wmic=wmic desktopmonitor get screenwidth, screenheight /value"
for /f %%i in (' "%wmic%" ') do 1>nul set "%%i"
if "%screenwidth%x%screenheight%"=="1680x1050" start "" "notepad"
if "%screenwidth%x%screenheight%"=="1024x768" start "" "calc" »
А вот такой работает у меня везде

@echo off
setlocal

set "wmic=wmic desktopmonitor where 'ScreenWidth!=null and ScreenHeight!=null' get screenwidth, screenheight /value"
for /f %%i in (' "%wmic%" ') do 1>nul set "%%i"

if "%ScreenWidth%x%ScreenHeight%"=="1680x1050" start "" "notepad"
if "%ScreenWidth%x%ScreenHeight%"=="1024x768" start "" "calc"




© OSzone.net 2001-2012