- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我有一系列相当复杂的应用程序,这些应用程序依赖于在前台切换应用程序的能力。
我的问题是,在前台切换应用程序每 5 或 6 次,它根本无法使应用程序前进。 GetLastError 不报告任何问题。我经常看到正确的应用程序在前台闪烁片刻,然后之前的应用程序就可见了。
我有一个我有源代码的管理器应用程序,它产生并控制了大约 4 个我没有源代码的应用程序。它产生/控制的应用程序之一也是产生/控制大约 5 个应用程序的管理器。
这是一种信息亭设计,因此用户甚至没有键盘或鼠标,只有一个触摸屏。
我已经尝试了 Win32 调用的每一种组合来控制它们,我只是没有想法。
我的第一次尝试是:
SetWindowPos(hApp, HWND_TOPMOST, NULL, NULL, NULL, NULL, SWP_NOMOVE | SWP_NOSIZE);
SetWindowPos(hApp, HWND_NOTOPMOST, NULL, NULL, NULL, NULL, SWP_NOMOVE | SWP_NOSIZE);
我的第二次尝试是:
SetForegroundWindow(hApp);
SetActiveWindow(hApp);
SetFocus(hApp);
我的第三次尝试: DWORD dwThreadID = GetWindowThreadProcessId(hApp, NULL); AttachThreadInput(dwThreadID, GetCurrentThreadId(), true);
SetForegroundWindow(hApp);
SetActiveWindow(hApp);
SetFocus(hApp);
AttachThreadInput( dwThreadID, GetCurrentThreadId(), false);
我的第四次尝试:
DWORD dwThreadID = GetWindowThreadProcessId(hApp, NULL);
AttachThreadInput( dwThreadID, GetCurrentThreadId(), true);
SetWindowPos(hApp, HWND_TOPMOST, NULL, NULL, NULL, NULL, SWP_NOMOVE | SWP_NOSIZE);
SetWindowPos(hApp, HWND_NOTOPMOST, NULL, NULL, NULL, NULL, SWP_NOMOVE | SWP_NOSIZE);
SetForegroundWindow(hApp);
SetActiveWindow(hApp);
SetFocus(hApp);
AttachThreadInput( dwThreadID, GetCurrentThreadId(), false);
在窗口切换方面,我觉得我错过了一个重要的陷阱。我知道只有前台进程可以切换窗口,但是当我的主管理器程序正在生成并启动我需要控制的所有其他进程时,我觉得它应该能够移动这些窗口。任何建议或意见表示赞赏。
最佳答案
我遇到了同样的问题,我不想弄乱线程。在实验中,我观察到一个简单的技巧,可以让 SetForegroundWindow() 以预期的方式工作。这是我所做的:
关于c++ - Win32 SetForegroundWindow 不可靠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3772233/
使用 powershell 代码,我尝试更改窗口的位置(工作正常)并将此窗口“始终位于顶部”。 请在下面找到我的代码: Import-Module C:/install/WASP/wasp.dll f
这个问题已经有答案了: Bring to forward window when minimized (2 个回答) 已关闭 8 年前。 无法找到有关此主题的任何好的答案,所以也许有人可以帮助我。我正
我刚刚编写了简单的脚本来启动应用程序,并且我正在尝试使用“SendKeys”模块将击键发送到该应用程序。有一个“快照”按钮,但我无法让 Python 单击“快照”按钮,因为新窗口没有焦点。所以我计划使
我正在尝试启动一个应用程序并将其置于最前面。但是,应用程序启动正常,但最终会落后启动应用程序。请注意,在已运行的最小化应用程序上使用类似的方法效果很好(为简洁起见,从该示例中删除了该代码)——它仅在启
我有一个用 C# 编写的应用程序,它向另一个程序发送 key 。为此,我在发送有效的键之前调用了 SetForegroundWindow 方法。问题是当我使用 RDC 连接到计算机并最小化 RDC 窗
我使用这个问题 How to force C# .net app to run only one instance in Windows? 将我的 C# Windows 应用程序限制为一次只允许一个实
我正在使用 C# 应用来监听全局组合键 (ctrl+F9),这会将特定窗口置于最前面。 这是我用来将窗口置于最前面的代码,它仅在由 Button 事件触发时有效: private void b
目前,我正在尝试使用 JNA 将非 Java 应用程序设置为焦点,我发现了以下代码。 import com.sun.jna.platform.win32.User32; import com.sun.
我正在开发一个消息传递工具。消息窗口是整个应用程序的一部分。当有消息传来时,我需要窗口转到前面。我正在使用这段代码: if( m_hwnd == NULL || !::IsWindow(m_h
我写了一个图像匹配 C++ 工具,它是一个通知区域工具(无可见窗口)。它获得了另一个窗口的句柄并将其聚焦,然后匹配它保存的图像。现在这个工具正在完善,但我关注的程序的制作者(不是我写的)推送了一个更新
我有一系列相当复杂的应用程序,这些应用程序依赖于在前台切换应用程序的能力。 我的问题是,在前台切换应用程序每 5 或 6 次,它根本无法使应用程序前进。 GetLastError 不报告任何问题。我经
这是我想做的: 1)用用户名打开一个应用程序 2)提供一些输入 3)为具有不同用户名的应用程序打开第二个窗口 4)再输入一些信息 5)切换到第一个应用程序窗口,做一些事情 6)切换到第二个应用 我正在
我知道这听起来很邪恶,但我的意图根本不是这个。 用户点击“延迟拍摄”并开始倒计时,在此期间他们将焦点转到另一个应用程序,然后在倒计时之后用户希望我的应用程序收回焦点。 SetForegroundWin
谁能给我解释一下 setactivewindow 和 setforegroundwindow 有什么区别(使用来自 www.pinvoke.net/# 的 pinvoke 初看,您可以告诉我它设置了事
BringWindowToTop , SetForegroundWindow , SwitchToThisWindow , SetWindowPos , ShowWindow 所有这些都被描述为显示和
我注意到 Haskell Win32 api没有 SetForegroundWindow 函数,而且我对 haskell 不够熟练,无法自己添加此功能。是否有任何方法可以使用 haskell 复制它,
我正在寻找使用 FindWindow() 和 SetForegroundWindow() 切换到不同应用程序的旧 User32.dll 版本的替代方案. 我确实找到了使用 Process.GetPro
我在使用 PInvoke 的 .NET 中使用 SetForegroundWindow API。 当我在 Visual Studio 中调试时使用 API 时,它工作得很好。但是当应用程序正常运行时它
我是 SFML Team 的一员我们目前正在研究“请求”窗口焦点的功能。目标是在 Windows、OS X 和 Linux 上获得非常相似的行为。 对于 Windows,一个人得到相当简单的 SetF
我正在尝试使用 c# 将进程窗口设置为前台/焦点(从当时没有焦点的应用程序),因此我使用的是 user32.dll static extern bool SetForegroundWindow(Int
我是一名优秀的程序员,十分优秀!