当 Teamviewer 登录时,c# set focus on running application 失败

标签 c# .net winforms focus

我想避免多次执行我的应用程序,并在下次启动应用程序时将焦点设置在已经运行的实例上。
我通过使用互斥体使应用程序成为单例,效果很好。但当我把它放在前面时遇到了一个问题。此代码取自这些 SO 答案:
https://stackoverflow.com/a/7358286/2505186
https://stackoverflow.com/a/2315093/2505186

SetForegroundWindow(hWnd);
ShowWindow(hWnd, SW_RESTORE);

一开始它总是无法将窗口置于前面。一段时间后,我发现它确实可以工作,但并不完全。唯一出现在前面的是这个小符号:

这是 Teamviewer 的叠加图标(我使用的是版本 8)。只有这个图标而不是我的应用程序被带到前面:

当我在 Teamviewer 上注销时,我的应用程序的焦点将按预期工作。 :-)

为什么 Teamviewer 登录后无法使用?
我需要执行哪些功能才能使其与 Teamviewer 一起使用?

我测试了 Sysinternals ProcessExplorer 的“置于前台”功能...它正在工作。所以他们必须使用能够克服这个问题的函数。

最佳答案

此按钮由 TeamViewer 在其他应用程序窗口中绘制。您可以在 TeamViewer 选项中禁用它:

选项 -> 高级 -> 计算机和联系人的高级设置 -> QuickConnect 按钮 -> 配置... -> 禁用“显示 QuickConnect 按钮”

关于当 Teamviewer 登录时,c# set focus on running application 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29165791/

相关文章:

c# - 常见操作的最佳实践 ASP.NET Controller

c# - C# : How to get the response stream? 中的套接字

c# - 如何获取 WPF 中组框中的控件列表

.net - 在 <link> 元素上使用 Razor 2 编写 RSS 失败

c# - 如何确定用户控件何时完全加载并显示?

c# - 如何将动态数据写入 MVC 3 Razor 中的页面布局?

.net - 用于运行测试和报告结果的框架用户界面

vb.net - 使用VB.net通过拖放将多个文件上传到FTP服务器时出现问题

c# - 抑制关于 :blank in Print Output of WinForms WebBrowser

winforms - 哪些文件需要用cefsharp winforms应用程序打包