Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Command line 在批处理文件中显示桌面时检测_Command Line_Batch File_Desktop_Command Prompt_Wallpaper - Fatal编程技术网

Command line 在批处理文件中显示桌面时检测

Command line 在批处理文件中显示桌面时检测,command-line,batch-file,desktop,command-prompt,wallpaper,Command Line,Batch File,Desktop,Command Prompt,Wallpaper,我的问题是,您能否检测到桌面当前是否在批处理脚本中可见(对于Vista) 想法是这样的:我正在为我的朋友写一个剧本作为恶作剧。你们中的一些人可能从Who医生那里听说过。我试图使脚本,使您每次回到桌面(如尽量减少您正在看的东西),墙纸改变到另一个 天使的形象,创造一种错觉,当你不看的时候,它在移动,就像在系列中一样 我的想法是检测桌面何时不可见,每次它再次可见时,壁纸将循环到下一张图像。问题是,我不知道该怎么做 除了实际的问题,任何关于效果的提示都是值得赞赏的 谢谢。好吧,这不是你想要的(不确定是

我的问题是,您能否检测到桌面当前是否在批处理脚本中可见(对于Vista)

想法是这样的:我正在为我的朋友写一个剧本作为恶作剧。你们中的一些人可能从Who医生那里听说过。我试图使脚本,使您每次回到桌面(如尽量减少您正在看的东西),墙纸改变到另一个 天使的形象,创造一种错觉,当你不看的时候,它在移动,就像在系列中一样

我的想法是检测桌面何时不可见,每次它再次可见时,壁纸将循环到下一张图像。问题是,我不知道该怎么做

除了实际的问题,任何关于效果的提示都是值得赞赏的


谢谢。

好吧,这不是你想要的(不确定是否可以检测到活动窗口)。。。但它有一些你一直在寻找的东西

基本上,它会在不到5分钟的时间内每x一次将您的壁纸更改为文件夹中的几个壁纸之一,其中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

您可以使用一个名为的Java库来实现这一点,该库进行屏幕模式匹配。你所要做的就是在桌面触发时按你希望的方式截屏桌面,然后将单元测试设置为5秒循环运行,始终检查桌面是否以某种方式显示,然后触发墙纸更改。因此,它将混合使用Java/JUnit/Sikuli和批处理脚本。此外,您还必须以某种方式将批处理脚本放入他们的启动程序列表中。

这是一个非常棒的主意。谢谢。但是我不知道该怎么做:(谢谢你的回复,但是,我已经想出了基于时间的方法(事实上,我目前正在我的电脑上测试它,现在是凌晨2:15,我吓死了:))主要问题是:基于时间改变它太随机了,可能会跳帧,这使得它不那么可怕。。而且,我也使用了上面的代码。有时有效,有时无效。。。不知道为什么。嗯。。首先感谢您的回复。但是,我认为当我计划启动脚本时,我无法完全控制他的GUI。而且,就我目前的困倦程度所知,这不能在无形中运行,这有点扼杀了恶作剧:)。不管怎样,谢谢……不,这实际上可以在无形中运行。当您从批处理脚本执行java时,只需使用javaw.exe,它就会在后台执行。另外,我认为你应该把它放在他的创业计划列表中,而不是安排它。好吧,这就消除了一个问题。但是,就我所知,如果他改变桌面上一个文件的位置,脚本就会失败,对吗?是的,我的意思是通过计划加入到启动列表中。睡意…Sikuli可以进行百分比模糊匹配,所以即使他们移动图标也可以。