[bat] [...] Zmiana rozdzielczości ekranu

0

Witam.

Szukam sposobu na zmianę rozdzielczości ekranu za pomocą poleceń wydawanych w dosie - zmieniana ma być rozdzielczość graficzna w komputerze.

Chcę do tego wykorzystać pliki *.bat (dosowe polecenia) i coś jeszcze al nie wiem co - wiem że jest możliwe wyłączenie komputera za pomocą pliku bat i mam nadzieję że da się też zmienić rozdzielczość - pytanie co jeszcze do tego zastosować lub co w cmd pozwoli na zmianę rozdzielczości ekranu ?

Nie pytajcie po co mi to - mam nadzieję że ktoś pomoże mi się z tym uporać :)

0

Ok nie ważne - już znalazłem rozwiązanie :

%windir%\System32\rundll32.exe NvCpl.dll,dtcfg setmode 1 1280 1024 32 75

Może komuś się jeszcze przyda :)

0

No i problem pozostał :(

Niestety na komputerze na którym chciałem uruchomić bata zmieniającego rozdzielczość nie ma pliku NVidii :(

Jak ktoś wie jak inaczej za pomocą Batch'a zmienić rozdzielczość będę wdzięczny za pomoc !!!! :)

0

Napisać własny program, który będzie ustawiał rozdzielczość na podstawie podanych argumentów. I potem prosto:

rozdzielczosc.exe 1200 800
0
Azarien napisał(a)

Napisać własny program, który będzie ustawiał rozdzielczość na podstawie podanych argumentów. I potem prosto:

rozdzielczosc.exe 1200 800

Wszytko fajnie ale gdybym mógł tak zrobić to już dano bym to zrobił :(

Problem polega na tym że nie mogę żadnego pliku wgrać ani wysłać na komputer co oznacza że nie mogę napisać sobie własnego programu który zrobi mi co mi się spodoba. Po blokowane mam wszystkie edytory tekstu jakie są dostępne w systemie - jedyny edytor jaki jest dostępny to Edit w którym pod CMD pisać mogę skrypty (restrykcje i blokady jak diabli a chce zmienić kilka rzeczy)

W związku z tym nadal pozostaje pytanie - Jak zmienić rozdzielczość ekranu w Windoows 2000/XP za pomocą plików *.bat *.vsb czy innych języków skryptowych standardowo dostępnych w tym systemie a gdzie "program" mogę napisać w edytorze tekstowym :)

0

Hmm, skoro sterowniki Nvidii miały taką opcję, to może sterowniki karty graficznej z docelowego komputera też ją mają? Zobacz, jakiej firmy karta jest tam zainstalowana i jaki to sterownik (mówiąc "sterownik" mam tu na myśli cały soft dostarczony przez producenta grafy, tj. panele kontrolne etc.). Potem poszperaj w dokumentacji sterownika, czy na stronie producenta. Może znajdziesz tam podobną opcję.

0

No właśnie juro tak zrobię o ile będę miał możliwość (restrykcje systemowe naprawdę ogromne :) ). Obecni szukam jeszcze innych możliwości ale ta co znalazłem okazuje się chyba jedyna :(

Znalazłem ciekawy sposób... bardzo "profesjonalny" ale działa... o ile w czasie ładowania profilu wyrobię się z czasem - zawsze można go zwiększyć :) ciekawe czy zadziała w pracy przy restrykcjach systemowych :)

Plik vbs :

strComputer="."
Set objWMIService = GetObject("winmgmts:\" &_
strComputer & "\root\cimv2")
Set colItems=objWMIService.ExecQuery("Select * from Win32_DisplayConfiguration",,48)
For Each objItem in colItems
DisplayHeight=objItem.PelsHeight
DisplayWidth=objItem.PelsWidth
Next
If(DisplayWidth<>1280)Or(DisplayHeight<>1024)Then
Set WshShell=WScript.CreateObject("WScript.Shell")
Set WshNetwork=WScript.CreateObject("WScript.Network")
WshShell.Run("%windir%\system32\control.exe desk.cpl @0,4")
WScript.Sleep 10000
WshShell.AppActivate("Display Properties")
WScript.Sleep 1000

WshShell.SendKeys"{LEFT}"
WScript.Sleep 10
WshShell.SendKeys"{LEFT}"
WScript.Sleep 10
WshShell.SendKeys"{LEFT}"
WScript.Sleep 10
WshShell.SendKeys"{LEFT}"
WScript.Sleep 10
WshShell.SendKeys"{LEFT}"
WScript.Sleep 10
WshShell.SendKeys"{LEFT}"
WScript.Sleep 10
WshShell.SendKeys"{LEFT}"
WScript.Sleep 10
WshShell.SendKeys"{LEFT}"
WScript.Sleep 10
WshShell.SendKeys"{LEFT}"
WScript.Sleep 10
WshShell.SendKeys"{LEFT}"
WScript.Sleep 10
WshShell.SendKeys"{LEFT}"
WScript.Sleep 10
WshShell.SendKeys"{LEFT}"
WScript.Sleep 10

WshShell.SendKeys"{RIGHT}"
WScript.Sleep 10
WshShell.SendKeys"{RIGHT}"
WScript.Sleep 10
WshShell.SendKeys"{RIGHT}"
WScript.Sleep 10
WshShell.SendKeys"{RIGHT}"
WScript.Sleep 10
WshShell.SendKeys"{RIGHT}"
WScript.Sleep 10
WshShell.SendKeys"{RIGHT}"
WScript.Sleep 10
WshShell.SendKeys"{RIGHT}"
WScript.Sleep 10
WshShell.SendKeys"{RIGHT}"
WScript.Sleep 10
WshShell.SendKeys"{RIGHT}"
WScript.Sleep 10

WshShell.SendKeys"{ENTER}"
WScript.Sleep 10
WshShell.SendKeys"{ENTER}"
WScript.Sleep 100
WshShell.SendKeys"{TAB}"
WScript.Sleep 10
WshShell.SendKeys"{ENTER}"
end if
WScript.Quit

Zawsze to jakaś alternatywa :) Szukam dalej sposobu krótszego i bardziej pewnego niż liczenie na to że zmieszczę się z czasem podczas symulowania wciskania klawiszy :)

0

A nie możesz zawołać admina, że chcesz inną rozdzielczość? ;-)

0
Azarien napisał(a)

A nie możesz zawołać admina, że chcesz inną rozdzielczość? ;-)

Hehehe :) A to się uśmiałem :)

Już widzę jak admin lata do mnie z każdą "pierd...ką" bo ja chce...:) Tym bardziej że po mnie usiądzie jeszcze inna osoba i też zmieni rozdzielczość... a mi się nie chce za każdym razem zmieniać jej po zalogowaniu :)

ok... na razie nie znalazłem rozwiązania takiego jak pierwsze Nvidii... Na razie zmieniam sobie skrypcik w vbs aby był lepszy a mniejszy i od razu po zalogowaniu uruchamiał kilka aplikacji od razu bo mi się nie chce :) Najpierw muszę się trochę Visual Basic Script poduczyć bo za nic nie uczyłem się dotąd ale już wygląda to mniej więcej tak :

strComputer="."
Set objWMIService = GetObject("winmgmts:\" &_
strComputer & "\root\cimv2")
Set colItems=objWMIService.ExecQuery("Select * from Win32_DisplayConfiguration",,48)
For Each objItem in colItems
DisplayHeight=objItem.PelsHeight
DisplayWidth=objItem.PelsWidth
Next
If(DisplayWidth<>1280)Or(DisplayHeight<>1024)Then
Set WshShell=WScript.CreateObject("WScript.Shell")
Set WshNetwork=WScript.CreateObject("WScript.Network")
WshShell.Run("rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,3")
WScript.Sleep 10000
WshShell.AppActivate("Display Properties")
WScript.Sleep 2000
'WshShell.SendKeys"{TAB}" ' Jeżeli nie ustawi focusu na belce ...
'WScript.Sleep 10
'WshShell.SendKeys"{TAB}" ' Jeżeli więcj niż jeden Monitor...
'WScript.Sleep 10

if SetScreenResolution(DisplayWidth,DisplayHeight) = "" Then 
   'Zacznij uruchamiać inne aplikacje robić kopie zapasowe itp :)
else 

end if

else
Set WshShell=WScript.CreateObject("WScript.Shell")
Set WshNetwork=WScript.CreateObject("WScript.Network")
' Ta opcja nie zadziała w robocie bo brak pliku NVCpl.dll.... - mi przydatne w domu abym nie zmieniał co chwilę ręcznie rozdziałki :)
WshShell.Run("%windir%\System32\rundll32.exe NvCpl.dll,dtcfg setmode 1 1024 768 32 85")
end if

Function SetScreenResolution(Width, Height)
Prawo=-1
If Width = 800 And Height = 600 Then Prawo = 7
If Width = 1024 And Height = 768 Then Prawo = 6
If Width = 1152 And Height = 864 Then Prawo = 5
If Width = 1280 And Height = 600 Then Prawo = 4
If Width = 1280 And Height = 720 Then Prawo = 3
If Width = 1280 And Height = 768 Then Prawo = 2
If Width = 1280 And Height = 960 Then Prawo = 1
If Width = 1280 And Height = 1024 Then Prawo = 0

if Prawo <> -1 Then
For intI = 0 to Prawo
WshShell.SendKeys"{RIGHT}"
WScript.Sleep 10
Next
WshShell.SendKeys"{ENTER}"
WScript.Sleep 10
WshShell.SendKeys"{TAB}"
WScript.Sleep 100
WshShell.SendKeys"{ENTER}"
SetScreenResolution = ""
end if
End Function

WScript.Quit

Trochę jeszcze pobawić się w kilka dodatkowych rzeczy i będzie ok :)

0

WshShell.SendKeys"{LEFT}"
WScript.Sleep 10
WshShell.SendKeys"{LEFT}"
WScript.Sleep 10
WshShell.SendKeys"{LEFT}"
WScript.Sleep 10
WshShell.SendKeys"{LEFT}"
WScript.Sleep 10
WshShell.SendKeys"{LEFT}"
WScript.Sleep 10
WshShell.SendKeys"{LEFT}"
WScript.Sleep 10
WshShell.SendKeys"{LEFT}"
WScript.Sleep 10
WshShell.SendKeys"{LEFT}"
WScript.Sleep 10
WshShell.SendKeys"{LEFT}"
WScript.Sleep 10
WshShell.SendKeys"{LEFT}"
WScript.Sleep 10
WshShell.SendKeys"{LEFT}"
WScript.Sleep 10
WshShell.SendKeys"{LEFT}"
WScript.Sleep 10

"Najpierw był chaos, a potem Bóg wymyślił pętlę"

0
Demonical Monk napisał(a)

"Najpierw był chaos, a potem Bóg wymyślił pętlę"

Dokładnie :)

Niestety nie znam VBScript'a jeszcze więc szukam po przykładach jaka jest składnia języka i powoli ją wykorzystuję :)

Baaa.... Nawet już Funkcji używam :-P

Ale i tak nie jest to to co bym chciał :(

OK... ale wracając do sprawy...

Grafika na kompie na którym chce uruchomić programy VBS to :

Intel (R) G33/G31 Express Chipset Family

A do niej jeszcze prostego przykładu jak dla NVidii nie znalazłem :(
Nie wiem też jakie sterowniki są tam wykorzystane bo restrykcje systemowe nie pozwalają zajrzeć mi do Menadżera urządzeń - nazwę grafiki mam też za pomocą VBS'a :)

Zobaczymy co się uda dalej zrobić :) Jakby co nadal liczę na czyjąś pomoc nawet jeżeli są to błache pomysły - pomysł zawsze pomysłem i może się przydać :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1