- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
编辑:为了我希望的清晰而编辑
有一个 GUI 应用程序只有一个主窗口。该主窗口的标题栏中有文本;我的任务是检索主窗口标题栏中的文本。
通常,如果用户已登录,应用程序会正常启动,我可以使用 PowerShell 通过调用 System.Diagnostic.Process.MainWindowTitle 获取主窗口的标题,没问题。
但是,我需要在没有用户登录时获取相同的信息。我打算编写一个脚本或一个小型控制台应用程序,由任务调度程序启动来执行此操作。这很奇怪,我知道:我需要在没有用户登录系统时启动这个应用程序,并在其唯一主窗口的标题栏中检索文本。
我知道当没有用户登录时,任务调度程序显然仍会尽职尽责地尝试运行脚本或可执行文件。但是,由于没有用户登录,这些预定的可执行文件或脚本将无法访问 Windows GUI 子系统。因此,如果计划任务试图启动需要绘制窗口的应用程序,那么,该窗口将不会被绘制。
这意味着我不能简单地安排一个脚本来启动这个 GUI 应用程序,在磁贴栏中获取文本然后终止应用程序(我不能这样做,因为应用程序永远不会绘制它的主窗口) .
我有一些想法,我希望对它们提出意见(或什至其他替代方案):
最简单但最不理想的方法是,我会尝试强制用户登录(即使没有实际用户)。这应该加载 GUI 子系统 并显示主窗口。捕获主窗口标题的文本后,我会再次注销。
在某些时候,应用程序将调用一些 Windows API 请求绘制一个窗口(由于前面提到的缺少 GUI 子系统,因此不会绘制)。也许我能以某种方式捕获这个请求,也许在这个请求中,我能找到主窗口标题?还是指向内存中的指针?什么?
这似乎不太可行,但也许我可以为机器本身建立一个 RDP。我的想法是,例如,当您将 RDP 连接到 headless 服务器时,服务器会生成可视化元素并将其发送回客户端。因此,当建立 RDP 连接时,GUI 子系统 应该处于事件状态以绘制需要发回的元素。在我的例子中,元素没有发送到任何地方,但我希望它们仍然会被创建,这样我就可以抓取窗口文本。
最后,我想说明我已经尝试过解析二进制文件的字符串,希望在编译时从存储在二进制文件中的主窗口标题中找到信息。但是,它不够可靠,无法持续使用。
如果有人真的读完了这幅墙纸文字,那就太棒了,谢谢你。我会采用任何语言的解决方案,但我最擅长 C++ 和 C#。
最佳答案
创建它以便暴露解决方案。
事实证明,System.Diagnostic.Process.MainWindowTitle 并不总是按预期运行。最后,我所要做的就是使用 EnumWindows 枚举顶级窗口并使用 GetWindowText 获取 GUI 应用程序的标题。
我编写了一个控制台应用程序来执行此操作,并且控制台应用程序能够启动 GUI 应用程序并获取其主窗口标题。它通过远程 PowerShell session 以及通过任务计划程序启动时工作。
不确定为什么 System.Diagnostic.Process.MainWindowTitle 与枚举顶部窗口和使用 GetWindowText 不同,但我想那是另一次了。
感谢所有伸出援手的人。
关于windows - 在 Windows 7 中,是否可以在用户未登录的情况下获取 GUI 应用程序主窗口的标题?我知道,立即回答是否定的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16906733/
https://github.com/mattdiamond/Recorderjs/blob/master/recorder.js中的代码 我不明白 JavaScript 语法,比如 (functio
在 iOS 7 及更早版本中,如果我们想在应用程序中找到 topMostWindow,我们通常使用以下代码行 [[[UIApplication sharedApplication] windows]
我已经尝试解决这个问题很长一段时间了:我无法访问窗口的 url,因为它位于另一个域上..有一些解决方案吗? function login() { var cb = window.ope
是否可以将 FFMPEG 视频流传递到 C# 窗口?现在它在新窗口中作为新进程打开,我只是想将它传递给我自己的 SessionWindow。 此时我像这样执行ffplay: public void E
我有一个名为 x 的矩阵看起来像这样: pTime Close 1 1275087600 1.2268 2 1275264000 1.2264 3 1275264300 1.2
在编译时,发生搜索,grep搜索等,Emacs会在单独的窗口中创建一个新的缓冲区来显示结果,有没有自动跳转到那个窗口的方法?这很有用,因为我可以使用 n 和 p 而不是 M-g n 和 M-g p 移
我有一个启动 PowerShell 脚本的批处理文件。 批处理文件: START Powershell -executionpolicy RemoteSigned -noexit -file "MyS
我有一个基于菜单栏的应用程序,单击图标时会显示一个窗口。在 Mac OS X Lion 上一切正常,但由于某种原因,在 Snow Leopard 和早期版本的 Mac OS X 上会出现错误。任何时候
在 macOS 中,如何在 Xcode 和/或 Interface Builder 中创建带有“集成标题栏和工具栏”的窗口? 这是“宽标题栏”类型的窗口,已添加到 OS X 10.10 Yosemit
在浏览器 (Chrome) 中 JavaScript: var DataModler = { Data: { Something: 'value' }, Process: functi
我有 3 个 html 页面。第 1 页链接到第 2 页,第 2 页链接到第 3 页(为了简单起见)。 我希望页面 2 中的链接打开页面 3 并关闭页面 1(选项卡 1)。 据我了解,您无法使用 Ja
当点击“创建节点”按钮时,如何打开一个新的框架或窗口?我希望新框架包含一个文本字段和下拉菜单,以便用户可以选择一个选项。 Create node Search node
我有一个用户控件,用于编辑应用程序中的某些对象。 我最近遇到一个实例,我想弹出一个新的对话框(窗口)来托管此用户控件。 如何实例化新窗口并将需要设置的任何属性从窗口传递到用户控件? 感谢您的宝贵时间。
我有一个Observable,它发出许多对象,我想使用window或buffer操作对这些对象进行分组。但是,我不想指定count参数来确定窗口中应包含多少个对象,而是希望能够使用自定义条件。 例如,
我有以下代码,它打开一个新的 JavaFX 阶段(我们称之为窗口)。 openAlertBox.setOnAction(e -> { AlertBox alert = AlertBox
我要添加一个“在新窗口中打开”上下文菜单项,该菜单项将以新的UIScene打开我的应用程序文档之一。当然,我只想在实际上支持多个场景的设备上显示该菜单项。 目前,我只是在检查设备是否是使用旧设备的iP
我正在尝试创建一个 AIR 应用程序来记录应用程序的使用情况,使用 AIR 从系统获取信息的唯一简单方法是使用命令行工具和抓取 标准输出 . 我知道像 这样的工具顶部 和 ps 对于 OS X,但它们
所以我有这个简单的 turtle 螺旋制作器,我想知道是否有一种方法可以打印出由该程序创建的我的设计副本。 代码: import turtle x= float(input("Angle: ")) y
我正在编写一个 C# WPF 程序,它将文本消息发送到另一个程序的窗口。我有一个宏程序作为我的键盘驱动程序 (Logitech g15) 的一部分,它已经这样做了,尽管它不会将击键直接发送到进程,而是
我尝试使用以下代码通过 UDP 发送,但得到了奇怪的结果。 if((sendto(newSocket, sendBuf, totalLength, 0, (SOCKADDR *)&sendAd
我是一名优秀的程序员,十分优秀!