问题标签 [systemevent]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
291 浏览

c# - 如何查找 WPF 窗口位置更改的原因?

每当我从休眠状态恢复计算机时,我的位置似乎会Window移动到屏幕顶部。我有以下记录我的窗口位置:

WindowTop是一个从文件中加载到内存中的属性,该文件跟踪Window上次关闭前的位置。每当这在启动时打印时,两个值都按预期正确。但是,从休眠状态恢复后,实际值会打印 0,而设置值仍然相同。这消除了加载不正确的设置值的原因。

每当计算机从休眠状态恢复时,我也尝试重新加载设置:

这也不能解决问题。但是,当我在MessageBox加载之前添加 a 时,它会Window在不正确的位置显示 ,然后它会正确加载设置并切换到正确的设置。由于我将窗口从原始位置移开,我可以在恢复时看到它会正确修复位置,然后不知何故,在解锁我的计算机后,它会自行移动到Top = 0. 奇怪的是,Left它根本不受这个问题的困扰。解决方案中这两个属性的所有用法都是相同的。普通 WPF 应用程序不会发生这种情况,所以我不确定如何进一步调查。奇怪的是,如果我只是手动锁定计算机,而不是通过休眠,则不会发生这种情况。

有没有办法找出是什么改变了我WindowTop财产?

编辑:我的解决方法是使用SystemEvents.SessionSwitchandSessionSwitchReason.SessionUnlock并从那里调用LoadUiSettings,但这仍然是围绕实际问题的创可贴。我仍然想弄清楚是什么原因导致它并从根本上解决它。

编辑2:如果窗口当前不可见,设置它仍然不会改变实际位置。我暂时覆盖了可见性,然后执行了以下操作:

我看到窗口在等待调整时出现一瞬间,然后在它再次消失后,我通过 UI 手动切换可见性,它再次位于顶部。当它已经在正确的位置时手动切换它不会产生这种行为。

0 投票
0 回答
134 浏览

c# - 从应用程序内启动新进程时未触发 .NET SystemEvents 方法

基本上,这个问题也总结了我的问题: SystemEvents.SessionEnding not fire until a Process (opened before) gets closed

但目前还没有答案。我有一个控制台应用程序,它从自身内部启动另一个进程。该应用程序还侦听 SystemEvents.SessionSwitch。如果我注释掉启动附加进程的代码,则会命中 SessionSwitch 的事件处理程序。但是,如果我取消注释启动附加进程的代码,则不会命中处理程序。我 100% 确信事件处理程序没有被命中是由于从我的应用程序中启动了一个新进程......我只是不知道为什么。

我将此标记为可能的多线程问题,因为上面发布的问题中的一些评论似乎表明了这一点。但是,我完全不确定是什么原因造成的。

这是一些代码。

ProcessManager 基本上会启动另一个“重复”进程,以查看当前进程是否退出(我知道这里的“重复”一词可能不准确)。这是一段摘录:

0 投票
1 回答
345 浏览

c# - 电源计划更改事件 beetwen 高性能、省电和平衡

我正在尝试弄清楚,如何在High PerformancePower SaverBalanced之间更改电源计划事件,我需要它来为每个计划更改我的应用程序的不同模式。我在这个方向上找到了一些解决方案,但没有得到想要的结果。

例如,如果我采用item.CurrentMhz记录处理器当前功率值的 ,它对于不同的目的很有用,但是这个输出并没有给我 Power Plan state public uint Number; MaxMhz; CurrentMhz; MhzLimit; MaxIdleState; CurrentIdleState;。例如CurrentIdleState,Power Saver 和 High Performance 计划是相等的。无论如何,如果我能以某种方式使用它,主要问题是我不能让它作为事件工作,只能作为条件结果。但实际上它不是电源计划状态,不同处理器的功率值不同。似乎对于这个目标来说,这不是获得预期结果的正确方法。

SystemEvents_PowerModeChanged对于这种情况也没有意义,如果电源线连接或断开,则仅发生电源状态更改事件。

PowerStatus powerStatus = SystemInformation.PowerStatus;哪个相同,但如果电源线连接或断开,则标识当前电源状态。

所以我不确定,如果有任何有用的解决方案,我怎样才能在电源计划更改之间获得这个事件。

0 投票
1 回答
104 浏览

c# - SystemEvents.SessionSwitch 在 Windows 8 中崩溃,但在 Windows 10 中有效

我正在开发一个WPF应用程序并遇到一个非常奇怪的问题:

SystemEvents.SessionSwitch += SystemEvents_SessionSwitch;用来检测计算机的屏幕锁定事件。该代码在Windows 10. 但在Windows 8. 我得到的错误窗口是“你的应用程序已停止工作”,没有任何异常代码。我在其他Windows 10和其他上尝试过Windows 8,得到了相同的结果。有任何想法吗?

0 投票
0 回答
172 浏览

macos - 为什么使用 {control down} 的键码 126 在 Mac OSX 10.12.1 上的苹果脚本在 OSX 10.12.3 上运行时不起作用?

上面的苹果脚本适用于 OSX 10.12.3 但不适用于 OSX 10.12.1,“向上”和“向上控制”的键码 126 是 osx 任务控制的快捷方式。请建议。

0 投票
0 回答
984 浏览

c# - SystemEvents.DisplaySettingsChanged 没有收到 HDMI 到达/移除事件?

我正在尝试使用以下代码跟踪 HDMI 显示器的连接/移除。DisplaySettingChanged但是,大多数监视器不会触发该事件。大多数时候不会引发 HDMI 监视器移除事件。

活动报名:

方法:

例如,使用Acer S240HL显示器时,我在通过 HDMI 连接和断开显示器时收到一个事件。但是对于戴尔 SE2216H,从 HDMI 端口断开显示器时,我没有收到任何事件。

注意:我使用的是 Windows 10 Enterprise 2016 LTSB 操作系统。

0 投票
1 回答
1007 浏览

c# - 休眠程序中的所有线程,除了 C# 中的当前/主线程

主要问题是:除了当前/主线程之外,如何使程序中运行的所有线程休眠?

我有通过 EF 使用连接到 MS SQL Server 的程序,问题是有时当程序运行时,当我们将计算机置于睡眠模式并唤醒时它会崩溃,问题似乎是与 DB 的连接。当连接尚未恢复时,程序可能会尝试从数据库中获取一些数据。想法是检测事件,PowerModeChanged当我们检测到Suspend模式时,除当前之外的所有线程都应该进入睡眠状态,直到下一个事件Resume。我不知道如何让与当前线程不同的线程进入睡眠状态或以编程方式保持工作。我找到了这个:

但我没有找到正确的施法方法,或者通过 ID 找到它们,并且能够让它们入睡。

有没有办法做到这一点?

PS 下面还有一些代码(SystemEvents_PowerModeChanged 函数,尚未完成):

0 投票
1 回答
48 浏览

bash - 如何编写脚本以在每次 macOS 关闭时删除所有日志?

我知道如何使用终端命令“sudo rm -r /var/log”删除所有日志文件,但是如何为系统事件设置它,因此,每次系统关闭时都要清除?

0 投票
1 回答
397 浏览

c# - 关机前等待保存完成

我有一个记录一些用户数据的应用程序。如果用户注销工作站,则需要保存此信息。

该程序是一个 windows 窗体 c# 应用程序。

目前我正试图通过下面的这个函数来做到这一点,它可以工作到 95%,但不能达到 100%。

我也尝试了该功能,但这根本不起作用。我不明白为什么。有什么提示吗?我完全被困在这里。

0 投票
2 回答
1801 浏览

c# - 找不到源“y”中事件 ID“x”的描述。从 eventvwr C# 读取“系统”事件日志

我有一小段代码可以从 eventvwr 读取“系统”事件

这很好用,但对于少数事件日志,我会收到类似的消息

当我打开 eventvwr 时,我可以看到那里的描述。

我以管理员身份运行此代码。

谁能帮我弄清楚为什么我会收到这样的消息进行描述。提前致谢

有类似的帖子,但没有人提出这个问题。例如这个

“找不到源 Y 中事件 ID X 的描述。”