2013-07-12 2 views
3

Вопрос в том, можете ли вы определить, отображается ли рабочий стол в пакетном сценарии (для Vista)?Обнаружение, когда рабочий стол отображается в пакетном файле

Идея такова: я пишу сценарий как шалость для своего друга. Некоторые из вас могут услышать о Weeping Angels от Doctor Who. Я пытаюсь сделать сценарий таким образом, чтобы каждый раз, когда вы возвращались на рабочий стол (например, сводя к минимуму то, что вы искали), обои меняют на другое изображение ангела, создавая иллюзию, что он движется, когда вы не смотрите, просто как в серии.

Моя идея состояла в том, чтобы обнаружить, когда рабочий стол не виден, и каждый раз, когда он снова становится видимым, обои будут переходить к следующему изображению. Проблема в том, что я не знаю, как это сделать.

Помимо фактического вопроса, любые советы относительно эффекта оцениваются.

спасибо.

+0

Это такая удивительная идея. –

+0

Спасибо. Но я понятия не имею, как это сделать :( – LuckyHorseCoin

ответ

1

Ну, это не совсем то, что вы просили (не уверен, что можно обнаружить активное окно) ... но в нем есть некоторые части, которые вы искали.

В основном это сменит ваши обои на один из нескольких, у вас есть в папке каждые x менее 5 минут, где x - случайное число. сообщите мне, есть ли у вас какие-либо идеи о том, как изменить его/предложения/вопросы.

@echo off 
rem random number of milliseconds (0-5 minutes) 
SET /A time=%RANDOM% * (300000/32768) 
echo waiting %time% ms 
PING 1.1.1.1 -n 1 -w %TIME% >NUL 
echo done 

rem index between 1 and 5 
SET /A WALL_INDEX = %random% %% 5 + 1 
rem create a folder with many wallpapers in it, and name them 1.png, 2.png, 3.png ... x.png 
set WALL="C:\%WALL_INDEX%.png" 

rem this is how you change the wallpaper, i stole this from some random site, but I tested it and it seemed to work... usually. 
@echo off 
reg add "hkcu\control panel\desktop" /v wallpaper /t REG_SZ /d "" /f 
rem sets the wallpaper to the path in %WALL% 
reg add "hkcu\control panel\desktop" /v wallpaper /t REG_SZ /d %WALL% /f 
reg delete "hkcu\Software\Microsoft\Internet Explorer\Desktop\General" /v WallpaperStyle /f 
reg add "hkcu\control panel\desktop" /v WallpaperStyle /t REG_SZ /d 0 /f 
RUNDLL32.EXE user32.dll,UpdatePerUserSystemParameters 
+1

Спасибо за ваш ответ, но я уже понял, как это сделать на основе времени (на самом деле, я сейчас тестирую его на своем ПК, это 2:15 утра, и Я боюсь до смерти :)) Основные проблемы: изменение его на основе времени слишком случайное и, скорее всего, скачок кадров, которые делают его менее пугающим. А также я тоже использовал код выше. Иногда это работает, а иногда и нет ... Не знаю, почему. – LuckyHorseCoin

1

Вы можете сделать это с помощью библиотеки Java под названием Sikuli, которая делает поиск по шаблону экрана. Все, что вы делаете, - это скриншот рабочего стола, который вы хотите, чтобы он появлялся, когда он вызывает триггер, а затем устанавливает, чтобы модульный тест выполнялся в 5-секундном цикле, всегда проверяя, что рабочий стол отображается определенным образом, а затем запускает изменение обоев , Таким образом, он собирается использовать сочетание Java/JUnit/Sikuli и пакетного сценария. Кроме того, вам нужно будет как можно скорее запустить пакетный скрипт в списке запуска.

+0

Umm .. Прежде всего, спасибо за ваш ответ. Но я не думаю, что у меня будет полный контроль над его графическим интерфейсом, когда я планирую сценарий для запуска. Кроме того, насколько я понимаю с моим нынешним уровнем сонливости, это нельзя было запустить невидимо, что вроде бы убивает шалость :). Спасибо в любом случае ... – LuckyHorseCoin

+0

Нет, это действительно может быть запущено невидимо. Когда вы запускаете java из пакетного скрипта, просто используйте javaw.exe, и он выполняется в фоновом режиме. Кроме того, вместо того, чтобы планировать его, я думаю, вам нужно было бы поместить его в свой список программ запуска. – djangofan

+0

Ну, это устраняет одну из проблем. Но опять же, насколько я понимаю, если он изменит расположение даже одного файла на своем рабочем столе, сценарий не удастся, исправьте? И да, я имел в виду добавление в список запуска по расписанию. Сонливость ... – LuckyHorseCoin