人们可以建议的一个解决方案是定期寻找一个特殊的"屏幕保护程序"桌面,如果它存在,那么将其计为运行的屏幕保护程序.
但显然所有屏幕保护程序都不是这种情况,因为一些提到的桌面总是存在.
有更可靠的解决方案吗?
我有一个由于错误条件而弹出的对话框.我希望对话框保持打开状态至少30秒,并在收到最后一个用户输入(鼠标或键盘)后关闭30秒.
我可以通过检查GetLastInputInfo返回的值并在超过30秒之前关闭对话框来实现这一点,但是如果当用户没有使用鼠标或键盘30秒时弹出对话框,则GetLastInputInfo测试通过立即,对话框立即再次关闭.我可以用另一个计时器做到这一点,但我认为在对话框打开之前模拟鼠标移动或者发出一个(无害的)按键要简单得多.它也可能具有将系统从屏幕保护程序中踢出的优点.
什么是最简单的1行Delphi代码片段来实现这一目标?
当我不再使用图形会话时,屏幕保护程序会自动锁定它并关闭屏幕电源以节省能源。
我希望它保持锁定会话状态但不关闭屏幕电源,这可能吗?
我将Ubuntu 18.04与默认的gnome显示管理器一起使用。
谢谢,
马蒂亚斯
在 Windows 中,屏幕保护程序只是一个带有转储在 system32 中的.scr扩展名的可执行文件,它由三个开关控制(我认为是 /p、/c 和 /s)。
屏幕保护程序如何在 Mac OS X 和 Linux 上工作?它们在 Mac OS X 和 Linux(Gnome、KDE、Ubuntu 或任何不同之处)中的工作方式相似还是完全不同?
另外,它们可以用 C#/Mono 开发吗?
我有一个用bash编写的脚本,我需要采取不同的路由,以防屏幕保护程序当前正在运行.这是Linux与Xorg和KDE.脚本是从cron调用的,它连接到DISPLAY =:0.
任何提示/想法如何检查屏幕保护程序的状态?
我正在编写在Windows上运行的屏幕保护程序.
在预览模式下,Windows以这种方式调用程序:
Screensaver.exe /p ParentWindowHandle
但是,当我在我的程序中进行此调用时:
BOOL res = GetClientRect(parentWindowHandle, rect)
res为FALSE,rect为NULL,我得到ERROR_INVALID_WINDOW_HANDLE
了GetLastError()
GetWindowRect
给了我相同的结果.
但是,如果我拨打电话BOOL res = IsWindow(parentWindowHandle)
,我会得到res == TRUE.这不是说我有一个有效的窗口句柄吗?
代码如下所示:
int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PWSTR pCmdLine, int nCmdShow)
{
unsigned int handle = GetHandleFromCommandLine(pCmdLine); // Custom function (tested and approved :) )
HWND parentWindowHandle = (HWND) handle;
LPRECT rect = NULL;
BOOL res = GetClientRect(parentWindowHandle, rect);
// here, rect == NULL, res == FALSE and GetLastError() returns ERROR_INVALID_WINDOW_HANDLE
// ...
// ... …
Run Code Online (Sandbox Code Playgroud) 我正在疯狂地寻找启动屏幕保护程序活动的方法,该活动可以从“设置”>“显示”>“屏幕保护程序”启动。我想从 ADB 模拟单击屏幕保护程序选项中的“立即启动”选项,因为我需要配置一些电视以根据需要快速启动屏幕保护程序。
我使用 Android x86 Nougat stable 通过 Intel 棒连接所有这些设备,我可以通过 wifi 进行 adb,没有任何问题,我什至安装了 Simple SSH,以便在需要时通过 SSH 进行访问。
键事件正在工作,但没有键事件来启动屏幕保护程序,只是模拟电源关闭按钮,这会导致无线连接断开,无论在睡眠/省电设置中配置什么。
有机会解决这个问题吗?
谢谢!
我正在尝试对我的 macOS 屏幕保护程序项目进行协同设计,以消除“身份不明的开发人员”警告消息。苹果的文档和苹果论坛上的这个人都说你应该使用“开发者ID应用程序”签名证书来做到这一点。但这似乎对我不起作用。
当我按照Apple 关于如何测试正确签名的说明进行操作时,我得到的响应如下:
Screensaver.saver: rejected (the code is valid but does not seem to be an app)
Run Code Online (Sandbox Code Playgroud)
我的签名设置如下所示:
我不确定此时我还应该尝试什么。我主要担心未来 Mac 应用程序必须经过签名/公证的传言,这对屏幕保护程序意味着什么?
我正在使用Cocoa的ScreenSaver API编写屏幕保护程序.它是为64位arch编译的,我在Lion上运行它.
为了启用配置,我在主视图中添加了以下内容:
- (BOOL)hasConfigureSheet
{
return YES;
}
- (NSWindow*)configureSheet
{
if (configureSheet == nil) {
if (![NSBundle loadNibNamed: @"WTConfigureSheet" owner: self]) {
NSLog(@"Failed to load config sheet");
return nil;
}
}
ScreenSaverDefaults *defaults =
[ScreenSaverDefaults defaultsForModuleWithName: WTModuleName];
backgroundColorWell.color = [defaults objectForKey: @"BackgroundColor"];
lightLetterColorWell.color = [defaults objectForKey: @"LightLetterColor"];
darkLetterColorWell.color = [defaults objectForKey: @"DarkLetterColor"];
return configureSheet;
}
Run Code Online (Sandbox Code Playgroud)
新安装保护程序后,单击"选项"使配置页不显示为工作表,而是在屏幕上自由浮动,没有边框.否则,它会正常工作并在被解雇后消失.
当我再次单击"选项"时,配置页再次出现,这次正确显示为首选项窗口的一页.然后立即冻结,以便我无法点击任何控件.
有谁知道导致这种行为的原因是什么?
screensaver ×10
winapi ×2
windows ×2
adb ×1
android ×1
c# ×1
c++ ×1
cocoa ×1
code-signing ×1
delphi ×1
delphi-2006 ×1
gdm ×1
gnome ×1
kde ×1
keypress ×1
linux ×1
macos ×1
mono ×1
mouseevent ×1
ubuntu-18.04 ×1
x11 ×1
xcode ×1