我正在用C#编写一个播放电影的应用程序.我需要弄清楚如何使用C#禁用屏幕保护程序和电源选项.
我知道Windows SDK API有一个名为SetThreadExecutionState()的函数可用于执行此操作,但是,我不知道是否有更好的方法来执行此操作.如果没有,我如何将此功能合并到C#中?
在我的Galaxy Nexus上,我可以在系统偏好设置中点按此按钮以启动我当前选择的白日梦.

有没有办法通过Intent在应用程序中重现此功能?我没有白日梦服务,但我想让用户开始他们喜欢的白日梦.
我正在使用Xcode的屏幕保护程序模板为OS X开发屏幕保护程序.通过检查系统屏幕保护程序的包内容,我发现屏幕保护程序的系统首选项列表中使用的缩略图来自屏幕保护程序包中的两个文件:
thumbnail.png (90x58)
thumbnail@2x.png (180x116)
Run Code Online (Sandbox Code Playgroud)
我创建了两个这些尺寸的图像,并将它们放在我的屏幕保护程序包中.但是,我的视网膜屏幕上的"系统偏好设置"面板似乎加载了非视网膜资产.以下是thumbnail@2x.png图像的QuickLook预览旁边的"系统偏好设置"面板的屏幕截图:
我没有想法.任何人都知道可能导致这种情况的原因以及如何阻止它?我尝试过的事情:
thumbnail.png- 结果相同.如果您检查系统屏幕保护程序的软件包,您会发现这两个缩略图文件不会在Finder中报告维度.如果你用Sketch打开它们,它们对于那个应用程序显示为90x58.(尽管Photoshop将@ 2x资产显示为180x116).来自系统屏幕保护程序的缩略图已经应用了光泽效果,而我的缩略图会自动获得该效果,即使图像资源不包含它也是如此.
我开始认为面板加载/绘制这些图像的方式有点可疑.也许有人知道我不知道的事情?
我正在尝试在Windows XP上使用Visual C++ 2008 Express Edition SP1编译屏幕保护程序.我收到一个运行时错误:"程序入口点ChangeWindowMessageFilter()无法位于动态链接库USER32.dll中." 据我所知,这是因为微软篡改了VS 2008中包含的scrnsave.lib库来调用特定于Vista的函数,该函数在XP上失败,因为该函数不存在.
定义WINVER似乎没有做任何事情.
我该如何解决这个问题?
我想在我的应用程序运行时禁用屏幕保护程序.怎么做?禁用/启用屏幕保护程序的最佳位置在哪里?在第一个活动?在application.java中?
在 Linux 中禁用屏幕保护程序的更好的跨 DE 方法是什么?我在这里找到了一些东西,但它仅适用于 gnome-screensaver。我想知道是否有任何方法可以模拟击键或某些 X.Org API 来禁用屏幕保护程序激活。
我已经做了几个月的轻微OpenGL编程,现在我想使用xscreensaver库编写一个屏幕保护程序.
我在问这个之前看过如何开发linux屏幕保护程序,但我认为这个问题不够具体.
我已经做了什么 -
我下载了xscreensaver源代码并阅读了README.hacking.我在源的hacks目录中使用greynetic.c(其中一个屏幕保护程序jwz建议用于理解自述文件中的xscreensaver)的代码.
我阅读了这个网页 - http://www.dis.uniroma1.it/~liberato/screensaver/simplesquares.html(来自链接问题的答案之一).我下载了simplesquares.c代码,我正在尝试运行它.
我的问题是什么 -
注意:您必须在gcc命令中添加-lX11,以便在编译simplesquares.c时链接X11库.否则它将返回未定义的引用错误.
编辑:
在编译屏幕保护程序greynetic.c时,它返回一些错误,其中一些我在这里重现:
greynetic.c:(.text+0x4f): undefined reference to `XGetWindowAttributes'
greynetic.c:(.text+0xa6): undefined reference to `get_boolean_resource'
greynetic.c:(.text+0xd9): undefined reference to `get_pixel_resource'
greynetic.c:(.text+0x112): undefined reference to `get_pixel_resource'
greynetic.c:(.text+0x13e): undefined reference to `get_integer_resource'
greynetic.c:(.text+0x185): undefined reference to `XCreateGC'
greynetic.c:(.text+0x1dd): undefined reference to `XCreatePixmapFromBitmapData'
Run Code Online (Sandbox Code Playgroud)
这可能是一个链接错误.
我正在制作一个自定义 *.saver 应用程序,我想添加我自己的缩略图以显示在屏幕保护程序名称上方(左栏中的瓢虫图片)。我怎么做?

我从这里得到了这个 mac 屏幕保护程序示例。
我将其更改为显示图像而不是 textField。
问题是:它可以显示任何 Xcode 对象,例如 textView。textField、Button 等...但它无法在 imageView 上加载图像。(它可以在 Xcode 调试版本上加载图像,但不能在 mac 屏幕保护程序上的发布版本上加载图像)
发布构建截图
这是我显示图像的代码:
let imageView = NSImageView(frame: self.frame)
imageView.image = NSImage(named: "Image")
imageView.layer?.backgroundColor = NSColor.red.cgColor
imageView.backgroundColor(.red)
addSubview(imageView)
DispatchQueue.main.async {
imageView.frame = CGRect(x: 100, y: 100, width: 200, height: 100)
self.setNeedsDisplay(imageView.frame)
}
Run Code Online (Sandbox Code Playgroud)
我很确定它无法访问图像文件,但我该如何解决这个问题?实际上,屏幕保护程序的行为非常奇怪,当我在 ImageView 之后添加另一个 UI 元素时,它们都没有显示在屏幕上。
macOS 屏幕保护程序有什么问题?(我从一些网站下载了一些第三方屏幕保护程序,它们也是黑屏。)
我正在与例外作斗争
Fatal Exception: java.lang.RuntimeException: Unable to start activity ComponentInfo{net.hubalek.android.apps.reborn.pro/android.service.dreams.DreamActivity}: java.lang.ClassCastException: android.os.BinderProxy cannot be cast to android.service.dreams.DreamService$DreamServiceWrapper
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3792)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3968)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2307)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:246)
at android.app.ActivityThread.main(ActivityThread.java:8512)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:602)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1130)
Run Code Online (Sandbox Code Playgroud)
此问题是搭载 Android 11 的三星设备所独有的。有人知道如何修复它吗?除了对运行 Android 11 的三星手机禁用此功能外。
恐怕它超出了我的代码范围。
源代码DreamActivity似乎非常简单 - https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/service/dreams/DreamActivity.java
screensaver ×10
android ×3
macos ×3
cocoa ×2
linux ×2
winapi ×2
xcode ×2
c ×1
c# ×1
daydream ×1
dreamservice ×1
objective-c ×1
opengl ×1
python ×1
swift ×1
visual-c++ ×1
xorg ×1