草庐IT

python - Windows 中多显示器设置的每个屏幕都有不同的墙纸

coder 2024-06-08 原文

我正在使用:

ctypes.windll.user32.SystemParametersInfoA(SPI_SETDESKWALLPAPER,
                                           0, "picturefile", 0)

更换墙纸。

但我想知道是否有任何简单的方法可以在每个屏幕上放置不同的壁纸。

虽然此功能在 Windows 中不是标准功能,但有一些外部应用程序(如 ultramon)可以执行此操作。有人知道它是如何工作的吗?

如果我将两张图片合二为一然后将其设为墙纸,我认为它可能会起作用,但我仍然需要一种方法让一张图片横跨两个屏幕。

此外,我如何获取有关显示器设置、每个屏幕的分辨率及其位置的信息?就像您在 Windows 的 gui 显示设置中看到的一样,但是是数字。

最佳答案

  1. 将图像拼接成一个大图像后,您必须将墙纸模式设置为平铺,以便图像横跨桌面(否则它会在每个显示器上重新启动) .

    几种方法可以做到这一点:

    a) 使用 IActiveDesktop (它不需要需要使用 Active Desktop,别担心)。这是最好的,因为在 Win7 上新墙纸会淡入。

    您创建一个 IActiveDesktop/CLSID_ActiveDesktop COM 对象,然后调用 SetWallpaper、SetWallpaperOptions,最后调用 ApplyChanges。 (因为我不是 Python 开发人员,所以我不确定您是如何访问 COM 对象的,抱歉。)

    或者:

    b) 通过注册表。这不是很好,但效果很好。

    HKEY_CURRENT_USER\Control Panel\Desktop 下设置:

    • TileWallpaper 到 (REG_SZ) 1(即字符串“1”而不是数字 1)
    • WallpaperStyle 到 (REG_SZ) 0(即字符串“0”而不是数字 0)
    • 然后像您所做的那样调用 SystemParameterInfo(SPI_SETDESKTOPWALLPAPER...)。

    .

    顺便说一句,我正在查看的代码使用了 IActiveDesktop,如果失败则回退到注册表,通过了 SPIF_UPDATEINIFILE | SPIF_SENDCHANGE 作为 SystemParameterInfo 的最后一个参数;您当前传递的 0 可能是错误的。

  2. EnumDisplayMonitors是用于获取显示器详细信息的 Win32 API,包括它们的屏幕尺寸和彼此的相对位置。

    该 API 通过您必须提供的回调函数返回其结果。 (它为每个监视器调用一次。)我不是 Python 开发人员,所以我不确定如何从 Python 调用这样的函数。

    快速谷歌“Python EnumWindows”(EnumWindows 是一种常用的 API,以相同的方式返回结果)发现人们在谈论它,并使用 Lambda 函数进行回调,所以看起来这是可能的,但我将它留给更了解 Python 的人。

    注意:切记要处理彼此不相邻或不对齐的显示器。您编译的图像可能需要有空白区域,以使所有显示器上的内容正确排列。如果您四处移动其中一台显示器并对整个桌面进行 PrtScn 屏幕截图,您就会明白我在结果中的意思。

关于python - Windows 中多显示器设置的每个屏幕都有不同的墙纸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4467331/

有关python - Windows 中多显示器设置的每个屏幕都有不同的墙纸的更多相关文章

  1. ruby - 在 Ruby 程序执行时阻止 Windows 7 PC 进入休眠状态 - 2

    我需要在客户计算机上运行Ruby应用程序。通常需要几天才能完成(复制大备份文件)。问题是如果启用sleep,它会中断应用程序。否则,计算机将持续运行数周,直到我下次访问为止。有什么方法可以防止执行期间休眠并让Windows在执行后休眠吗?欢迎任何疯狂的想法;-) 最佳答案 Here建议使用SetThreadExecutionStateWinAPI函数,使应用程序能够通知系统它正在使用中,从而防止系统在应用程序运行时进入休眠状态或关闭显示。像这样的东西:require'Win32API'ES_AWAYMODE_REQUIRED=0x0

  2. python - 如何使用 Ruby 或 Python 创建一系列高音调和低音调的蜂鸣声? - 2

    关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。

  3. ruby-on-rails - Rails 编辑表单不显示嵌套项 - 2

    我得到了一个包含嵌套链接的表单。编辑时链接字段为空的问题。这是我的表格:Editingkategori{:action=>'update',:id=>@konkurrancer.id})do|f|%>'Trackingurl',:style=>'width:500;'%>'Editkonkurrence'%>|我的konkurrencer模型:has_one:link我的链接模型:classLink我的konkurrancer编辑操作:defedit@konkurrancer=Konkurrancer.find(params[:id])@konkurrancer.link_attrib

  4. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

    我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

  5. ruby-on-rails - 使用 Sublime Text 3 突出显示 HTML 背景语法中的 ERB? - 2

    所以我在关注Railscast,我注意到在html.erb文件中,ruby代码有一个微弱的背景高亮效果,以区别于其他代码HTML文档。我知道Ryan使用TextMate。我正在使用SublimeText3。我怎样才能达到同样的效果?谢谢! 最佳答案 为SublimeText安装ERB包。假设您安装了SublimeText包管理器*,只需点击cmd+shift+P即可获得命令菜单,然后键入installpackage并选择PackageControl:InstallPackage获取包管理器菜单。在该菜单中,键入ERB并在看到包时选择

  6. ruby-on-rails - link_to 不显示任何 rails - 2

    我试图在索引页中创建一个超链接,但它没有显示,也没有给出任何错误。这是我的index.html.erb代码。ListingarticlesTitleTextssss我检查了我的路线,我认为它们也没有问题。PrefixVerbURIPatternController#Actionwelcome_indexGET/welcome/index(.:format)welcome#indexarticlesGET/articles(.:format)articles#indexPOST/articles(.:format)articles#createnew_articleGET/article

  7. ruby-on-rails - 如何在 Rails View 上显示错误消息? - 2

    我是rails的新手,想在form字段上应用验证。myviewsnew.html.erb.....模拟.rbclassSimulation{:in=>1..25,:message=>'Therowmustbebetween1and25'}end模拟Controller.rbclassSimulationsController我想检查模型类中row字段的整数范围,如果不在范围内则返回错误信息。我可以检查上面代码的范围,但无法返回错误消息提前致谢 最佳答案 关键是您使用的是模型表单,一种显示ActiveRecord模型实例属性的表单。c

  8. ruby - 在 Windows 机器上使用 Ruby 进行开发是否会适得其反? - 2

    这似乎非常适得其反,因为太多的gem会在window上破裂。我一直在处理很多mysql和ruby​​-mysqlgem问题(gem本身发生段错误,一个名为UnixSocket的类显然在Windows机器上不能正常工作,等等)。我只是在浪费时间吗?我应该转向不同的脚本语言吗? 最佳答案 我在Windows上使用Ruby的经验很少,但是当我开始使用Ruby时,我是在Windows上,我的总体印象是它不是Windows原生系统。因此,在主要使用Windows多年之后,开始使用Ruby促使我切换回原来的系统Unix,这次是Linux。Rub

  9. Python 相当于 Perl/Ruby ||= - 2

    这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Pythonconditionalassignmentoperator对于这样一个简单的问题表示歉意,但是谷歌搜索||=并不是很有帮助;)Python中是否有与Ruby和Perl中的||=语句等效的语句?例如:foo="hey"foo||="what"#assignfooifit'sundefined#fooisstill"hey"bar||="yeah"#baris"yeah"另外,类似这样的东西的通用术语是什么?条件分配是我的第一个猜测,但Wikipediapage跟我想的不太一样。

  10. ruby-on-rails - 有没有办法为 CarrierWave/Fog 设置上传进度指示器? - 2

    我在Rails应用程序中使用CarrierWave/Fog将视频上传到AmazonS3。有没有办法判断上传的进度,让我可以显示上传进度如何? 最佳答案 CarrierWave和Fog本身没有这种功能;你需要一个前端uploader来显示进度。当我不得不解决这个问题时,我使用了jQueryfileupload因为我的堆栈中已经有jQuery。甚至还有apostonCarrierWaveintegration因此您只需按照那里的说明操作即可获得适用于您的应用的进度条。 关于ruby-on-r

随机推荐