问题标签 [setforegroundwindow]

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 投票
0 回答
789 浏览

c# - 使用 SetForegroundWindow 聚焦窗口

我已经使用上面的代码将焦点放在另一个窗口上,使用目标窗口的句柄。上面的代码放在一个方法中,当按下快捷键时调用该方法。我面临的问题是焦点第一次卡在窗口上,即焦点没有转移到窗口中的其他控件(在标签按下时)。所以我必须使用鼠标将焦点放在窗口内。第二次按下快捷键时,焦点不再卡住,它在标签按下时正确移动。另请注意,我曾尝试使用 SetFocus,但遇到了同样的问题。

请建议代码有什么问题,或者我是否可以使用任何替代方法来实现相同的行为。谢谢。

0 投票
2 回答
12564 浏览

python - Python win32gui SetAsForegroundWindow 函数无法正常工作

我正在尝试编写一个通过搜索标题来查找窗口的程序。一旦它找到了窗口,它就会尝试把它带到前面。我正在使用win32guiAPI 来实现这一点。我能够让它在大多数情况下工作,但由于某种原因,如果任务管理器在前面,它就不起作用。我有以下示例代码。

我从多个在线资源拼凑而成。它似乎在大多数情况下都可以工作,但是对于任务管理器之类的某些窗口,它有时会起作用,但其余部分会失败。当它不能正常工作时,我只注意到应用程序图标呈黄色闪烁。是否有适当的方法来确保我感兴趣的窗口 100% 设置为前景?我不确定这是否相关,但我使用的是带有 Service Pack 1 的 Windows 7 Professional(32 位)。

0 投票
0 回答
263 浏览

c++ - SendInput 的第一个字符在应用程序中被阻止

所以我有一个适用于游戏的应用程序。在程序的一个阶段,它单击文本字段,输入一些文本,然后单击其他一些内容。

现在的问题是,有时输入的第一个字符被阻止。也就是说,如果我在文本字段中输入"This is a test" ,则会出现以下内容"his is a test"。它总是第一个消失的字符。将代码更改为仅打印 1 个字符后,当您在 windows 输入字段中输入无效字符时,我会听到经典的 windows 'bing' 声音。然而,我的所有角色都不是无效的。

无论如何,当我改变程序点击文本字段的方式时,这一切都开始发生了。在它移动光标之前,然后模拟一次点击。现在它只是模拟点击而不接触光标。

我设法为所有文本框解决了这个问题,除了以下情况:我的代码的一部分多次重新点击同一个文本框(所以它点击它,输入文本,做其他事情,点击同一个文本框,输入文字...等)。问题是第一次输入文本时,第一个字符永远不会丢失,随后的条目很有可能丢失第一个字符(但有时它们不是(可能有 5% 的时间))。

在每次点击和输入文本之间,会有延迟,我已经做了很长时间的实验(这涉及在 TypeInfo 中发送的击键之间的延迟)。这似乎不是时间问题。

以下是所有相关代码:

在以下代码中,xPos 和 yPos 是相对于我希望单击的屏幕的坐标。同时删除SetForegroundWindowInternal(ctrl_handle)导致第一个字符始终不会出现在所有文本字段中。代码取自:http ://www.cplusplus.com/forum/windows/63948/

 

这是在 main 中调用上述代码的方式:

0 投票
1 回答
744 浏览

python - 远程桌面连接 - SetForeground 窗口不工作

我有一个与此非常相似的问题:远程桌面连接中的 SetForegroundWindow 当我连接并观看 RDC 时一切正常,但当我没有时.. 没有任何反应。我正在使用python和pywinauto,尝试使用SendKeys方法:SetForegroundWindow返回0,之后与GetLastError相同,所以我不知道什么可能导致麻烦。

编辑:我还尝试了其他方法,例如 BringWindowToTop 或 SetActiveWindow,我还尝试在更改窗口之前发送 alt 键 - 没有任何效果。

0 投票
1 回答
3755 浏览

c# - Activate Window and Send Input using SetForegroundWindow and SendKeys in C#

What I'm trying to do is activate another application and send a key input to it to trigger a button. However this code doesn't seem to work. It looks like it can find the application but it does not activate it, and does not send the key.

And here is what I pull with Window Spy

Window Spy Info

Any help would be greatly appreciated. Thanks.

0 投票
1 回答
681 浏览

c# - c#将焦点从其他应用程序返回给父表单

我正在尝试从我的主应用程序的子窗体启动和 .exe,但问题是当我打开另一个 .exe 并完成它的工作(扫描指纹)并退出时,我的应用程序被最小化,所以我试试这个:

但它不起作用,我的主要应用程序失去了焦点,我找到了很多解决方案,但其中任何一个都对我有用,另一个 .exe 是我也在做的应用程序。

0 投票
0 回答
143 浏览

winapi - 需要在 e2e 测试中关闭“另存为”窗口。使用 C# 发送密钥

我需要使用 GUI 实现打印到文件的 e2e 自动化测试作为打印过程的仿真。我有

  1. 在 selenium 和 nunit 下运行的 Web 应用程序。它按下打印按钮。
  2. 安装在计算机上的打印应用程序。它将数据从网络服务器打印到用户的打印机或文件(默认 XPS Windows 打印机)以满足测试需要。
  3. 使用安装了 TFS 代理的专用服务器作为前台控制台应用程序的自动 e2e 测试过程“以管理员身份”运行。
  4. 我已注销,由调度程序在 CI 服务器上测试运行。

我必须:处理“文件另存为”窗口,该窗口必须保存打印的 xps 文件(如果使用 pdf 打印机,则为 pdf):

  1. 设置文件名。我使用 SendKyes.SendWait(myFileName)
  2. 按确定按钮。SendKyes.SendWait("{ENTER}")

    /li>

接下来是问题:

如果我登录到运行测试的专用服务器(通过 RDP),一切都很好,文件将被保存,因为窗口将被处理。

如果我从服务器注销,SetForeground 将返回 0 并且文件不会被保存,并且会打开窗口。

我知道 Windows 7+ 的 UAC 限制。UAC 完全被禁用。我们使用 Windows server 2012。我需要一些解决方法。也许来自 UAC 关于这个操作,改变寄存器,也许是一些方法或库......

我当然用

在设置中


更新

看起来这不是 UAC 问题,而是从 RDP 机器注销或最小化 rdp 窗口时的无 GUI 模式问题。windows 锁定桌面并在没有活动窗口的情况下设置 gui-free 模式

详细信息:通过远程桌面进行测试

解决方案之一 -在测试 GUI 时保持 RDP 连接

还有可能的变体来最小化 RDP 窗口,甚至在断开连接时尝试不锁定:

0 投票
0 回答
250 浏览

vsto - 如何使用 C# 将单词应用程序窗口缩小到前面?

我正在使用 vsto 为 office word 开发一个插件。我正在尝试将缩小的单词窗口重新带到前面。我尝试使用winapi函数SwitchToThisWindow、<code>SetForegroundWindow,SetWindowPos像这样

并且Application.Activate(),它的工作原理是像这样的所有其他功能,并且只会让它在任务栏中闪烁,而不是把它带到前面。

有没有什么办法解决这一问题?我也尝试发送键'alt + tab',但我不知道如何引导文字处理窗口。

0 投票
1 回答
430 浏览

windows - 使用 QQmlApplicationEngine 强制 QApplication 处于前台

即使弹出其他进程,我也试图强制我的应用程序保持领先地位。这是我的简化版本main

主文件

我需要一个解决方案WindowsLinux。但是优先级是前者,似乎没有Qt解决方案。这是我尝试过的:

ok返回true,但它似乎不起作用。外部进程在启动后仍然出现在应用程序的顶部。

加载的QML文件visibility设置为FullScreen. 它的类型是ApplicationWindow.

0 投票
2 回答
659 浏览

c# - 如何使用 SetForegroundWindow 实现 wpf 启动器

我正在尝试实现一个按钮命令,该命令在用户第一次单击该按钮时启动一个新的 WPF 应用程序,然后(当用户再次单击该按钮时)将其发送到前台(如果它已经在运行)。整个事情正在运行.Net v4.0

当启动的进程是一个普通的 WPF 应用程序时,我尝试做的工作正常,但如果启动的 WPF 应用程序有启动画面,它就不会很好。问题是SetForegroundWindow失败了,因为在这种特定情况下我无法检索正确的窗口句柄。你能建议一个修复或解决方法吗?假设您可以修改启动器和已启动 WPF 的源。

启动器视图模型中的相关代码