Articles of 事件

使用事件在Windows中观看,设置和获取主动语言

我想要控制Windows 7中的活动input语言。我希望能够设置它,获取它,并在更改时得到通知。 我可以使用Windows进程监视器logging的事件来实现此目的吗? 是否有一个特定的事件,我应该过滤到看到这些事件? 更新 :如果你提供了代码,如果可能的话,我更喜欢Python。

发送本机事件

我正试图发送本机MouseEvents和KeyEvents到一个Java应用程序。 我已经想出了如何在AWT中这样做: KeyEvent k = new KeyEvent(j, KeyEvent.KEY_TYPED, 1, 0, KeyEvent.VK_UNDEFINED, 'k'); j.requestFocus(); java.awt.Toolkit.getDefaultToolkit().getSystemEventQueue().postEvent(k); j是你的组件。 事情是这样的,这只适用于Java / AWT组件。 我试图在DJ Native Browser中模拟鼠标按键或按键,但是在这里不起作用,可能是因为这个浏览器不使用AWT。 有没有一种方法,我可以发送本地Windows事件的应用程序,而不会影响我的实际键盘和鼠标? 显然awt.Robot是明显的答案,但它会影响Windows鼠标和键盘。 如果做到这一点的方式是依赖于操作系统的,那就OK了。 只要它在Windows 64位上工作,这是没有问题的。 另一种可能性是在AWT上运行的java swing浏览器,但除了DJNative之外,我还没有find一个工作的最新的浏览器,更不用说在AWT上运行的浏览器了。 build议? 谢谢

如何正确地“合并/清除”导出的窗口事件日志?

我正在寻找关于如何改进在导出的.evt文件中删除Windows事件日志条目的过程的想法/build议。 我们每天从多台机器上收集导出的Windows日志。 然后将这些数据传输到一个单独的工具进行归档,分析等。我们的过程使用#年份和date对每个日志文件进行重命名,并对这些日志文件进行归档。 因此,对于“服务器1”机器,例如,我们将每天的日志提供给像这样的文件: Server1_2016_001_Application.evt Server1_2016_002_Application.evt Server1_2016_003_Application.evt …等等。 我们为每个日志types(系统,安全,以及其他一些)执行此操作。 为了避免大量的重复,我一直在使用wevtutil来生成这些文件的缩减副本,如下所示: wevtutil epl "Application.evt" "Server1_2016_003_Application.evt" "/q:*[System[TimeCreated[@SystemTime>='2016-01-02T00:00:00.000Z' and @SystemTime<='2016-01-02T23:59:59.999Z']]]" /lf:true /ow:true 但是这个和我做的其他尝试是笨拙的; “003”导出可能没有从第3天开始的所有条目,因为我无法控制何时在源上导出日志。 我可以改为处理前一天的条目,但有时候我们希望/需要查看事件,直到日志被导出。 所以我想找出一种方法来确定LAST日志条目是在给定的文件中,以便第二天我可以查询只有在该条目后发生的事件。 IOW,对于每台机器的每个事件日志types,我想要捕获最后一个条目的时间标签等,并将该信息保存到磁盘,以便第二天,我可以读取和使用该信息作为起点一天的处理。

如何获得一个自动重置事件的状态与C + +?

说,如果我创build了这样一个事件: HANDLE hGlobalEvent = ::CreateEvent(NULL, FALSE, FALSE, NULL); 有没有可能通过它的处理来改变它的状态?

安排任务以监视某个进程启动

我试图把两个应用程序绑在一起,这样当一个应用程序启动时,另一个应用程序也会启动。 我期望在“事件”>“应用程序”下面的“任务计划程序”中find它,但是只有一些应用程序具有事件源。 所以我研究并发现,你可以通过注册一个WMI事件来检测一个进程的开始。 Register-WMIEvent -Query "SELECT * FROM __InstanceCreationEvent WITHIN 3 WHERE TargetInstance ISA 'Win32_Process' AND TargetInstance.Name = 'notepad.exe'" -sourceIdentifier 'NotepadStarted' -action {if(!(ps AutoHotKey)) { start Automator.ahk}} 然而,这意味着运行所有的时间,这意味着后台powershell.exe进程,WMI轮询每3秒( WITHIN 3 – 是的,我确实需要它尽快回应)。 个人电脑对于这项工作是足够强大的,但是如果将来我想观看多个应用程序,这种方法可能会使用太多的资源。 有没有更好的方式来观察Windows上的进程启动? 没有在后台连续轮询或运行脚本,而只是简单地安排一个任务,以响应已启动的记事本事件?

如何处理在Windows上Perl的exception程序终止

我在Windows上有一个Perl程序,需要在退出时执行清理操作。 我使用sigtrap编写了一个信号处理程序,但它并不总是工作。 我可以拦截Ctrl-C,但是如果机器重新启动或程序以其他方式死亡,信号处理程序和END块都不会运行。 我读过Windows没有真正的信号,在Windows上的信号处理在Perl中是一种破解。 我的问题是,如何处理exception终止的Windows方式? 我想运行我的清理代码,不pipe程序如何终止(为什么不能被捕获)。 我读过Windows使用事件而不是信号,但是我找不到有关如何在Perl中处理Windows事件的信息。 不幸的是,我没有权限从CPAN安装模块,所以我将不得不使用vanilla ActiveState Perl。 为了使事情更有趣,我使用的大多数机器都只有Perl 5.6.1。 编辑:我会很感激任何答案,即使他们需要CPAN模块或更新版本的Perl。 我想了解Perl中的Windows事件处理,并欢迎任何信息。

debugging断言失败。 expression式(stream!= NULL)

我收到以下错误: debugging断言失败。 expression式(stream!= NULL)文件:f:\ dd \ vctools / crty_bld / self_x86 \ crt \ src \ fwrite.c 和4个线程创build时CPU使用率为100%。 该代码在一段时间内工作正常,然后给出这个错误。 该代码是一个使用WSAWaitforMultipleEvents()的UDP单服务器/多客户端应用程序。 编辑: debugging器在fwrite.c中触发一个断点 if(size ==0 || count == 0) return 0; // just checking for stream != NULL here // rest of the validation is in _fwrite_nolock() **_VALIDATE_RETURN( (stream != NULL) ,EINVAL, 0);** /*Debugger triggered a […]

使用Register-WmiEvent使用PowerShhell 4.0捕获Windows 8.1系统事件/触发器?

我正在尝试编写一个高效的 Windows 8.1 PowerShell 4.0脚本,它将捕获/触发两种types的事件。 我想能够捕捉这些事件/触发器,所以我可以做一些事情,如运行脚本或开始/停止服务或其他东西。 我想要捕捉/触发的事件是: 插入/拔出电源线(电池充电/放电) 硬件(如Surface Pro 2 Type Cover 2)连接/断开 我的意思是脚本不应该有一个无限循环来定期检查状态。 我会假设我应该能够写一些事件,以捕获Windows生成它们的事件? 到目前为止,我已经了解到,我可以使用Register-WmiEvent PowerShell cmdlet来订阅WMI事件。 我认为这是做这件事最有效的方法,所以我不必不断地进行调查,而是对事件做出反应。 如果是这样,注册事件时使用-query还是-class更好? 我所看到的唯一区别是,当使用Register-WmiEvent -query "Select * From Win32_PowerManagementEvent where EventType=10" (例如Register-WmiEvent -query "Select * From Win32_PowerManagementEvent where EventType=10" )时显然很容易过滤事件。 我会担心如何捕捉我以后需要的特定事件。 现在我试图找出如何捕捉/触发事件。

Windows窗体线程和事件 – ListBox更新迅速,但进度条经历了巨大的延迟

我们的团队正在创build一个新的招聘工作stream程系统来取代旧的。 我负责将旧数据迁移到新的模式中。 我已经决定通过创build一个小的Windows窗体项目来做到这一点,因为架构是截然不同的,直接的TSQL脚本不是一个适当的解决scheme。 执行该工作的主要密封类“ImportController”声明以下委托事件: public delegate void ImportProgressEventHandler(object sender, ImportProgressEventArgs e); public static event ImportProgressEventHandler importProgressEvent; 主窗口使用新线程在该类中启动一个静态方法: Thread dataProcessingThread = new Thread(new ParameterizedThreadStart(ImportController.ImportData)); dataProcessingThread.Name = "Data Importer: Data Processing Thread"; dataProcessingThread.Start(settings); ImportProgressEvent args携带一个string消息,进度条的最大int值和当前进度int值。 Windows窗体描述事件: ImportController.importProgressEvent += new ImportController.ImportProgressEventHandler(ImportController_importProgressEvent); 并以这种方式使用自己的代理来响应事件: private delegate void TaskCompletedUIDelegate(string completedTask, int currentProgress, int progressMax); private void ImportController_importProgressEvent(object sender, ImportProgressEventArgs e) { […]

Windows新事件添加到内存中的事件

新的应用程序被添加到内存/任务栏时,有没有办法获得一些Windows事件? 我可以通过遍历Process.GetProcesses()来运行应用程序(虽然,由于某种原因,explorer进程将被排除),但这意味着我必须每隔几秒检查一次新进程,这不是很好。 我想知道是否有任何中断,我可以在C#应用程序中接收,然后调用函数来读取进程? 任何代码示例将是伟大的。 谢谢。