问题标签 [setwindowpos]

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 回答
72 浏览

c++ - 单击任意位置将最大化我用 setwindowpos() 隐藏的窗口

因此,我将其用于以全屏方式开始的游戏。我首先这样做是为了使其成为窗口模式:

之后,我希望能够隐藏窗口,为此我正在使用它:

那 EX_NOACTIVATE 只是一个测试,没有用。

问题是; 窗口完美隐藏,但是每当我单击(屏幕中的任何位置)时,隐藏的程序就会立即出现。我怎样才能防止这种情况?

0 投票
0 回答
69 浏览

c# - 如何移动不可见的应用程序

这是为 post Quit() 提供的答案之一的后续问题,导致 Access 暂时可见

答案建议我将窗口移出屏幕,以便看不到闪烁的窗口。

如果我理解问题 C# Process.MainWindowHandle 的公认答案总是返回 IntPtr 零

已更改其可见性 ( accApp.Visible = false;) 的应用程序没有/返回/初始化/... IntPtr,它将始终设置为零。

如何将此窗口/应用程序移出屏幕,以便用户永远看不到它。我不想让它可见,然后让我的程序弹出/将其移出屏幕。除非有办法阻止可见性延伸到用户的眼睛(永远不想看到窗口)。

理论上我可以以某种方式暂停屏幕渲染,使其可见,移动它然后恢复屏幕渲染吗?(怀疑这是一个很好的解决方案)

自从我上一篇文章以来,我已将创建应用程序的代码移到其单独的类中,以允许仅运行应用程序的一个实例,而不是以前为每个请求生成一个新应用程序的方式。

0 投票
1 回答
100 浏览

c# - 创建一个写字板实例并将其置于顶部 z 顺序,全部来自非前台应用程序

我正在使用语音操作软件(来自 Nuance 的 Dragon,或者可能是 Windows Speech Recognition(尚未尝试过))。

在操作中,用户(我)发出语音命令以使某事发生。对于这个问题,我正在尝试编写代码来启动一个简单的应用程序,例如记事本或写字板,以便它可以接收听写。另一种形式的语音命令切换应用程序以将后台应用程序(邮件、浏览器、电子表格等)带到前台,以便它可以接收语音输入。所以这不是一个“窃取焦点”的恶意软件场景;它是用户驱动的,但来自麦克风而不是键盘或鼠标。

我有一个 C# 应用程序(我们称之为 Creator),它创建了一个运行 WordPad 的新进程。我希望新创建的写字板实例在屏幕上显示为顶部窗口,就好像它是从“开始”菜单中创建的一样。

只要在创建写字板进程时 Creator 应用程序是前台应用程序,一切都会正常工作。在这种情况下,WordPad 实例按预期按 Z 顺序显示在 Creator 进程上方。

但是,如果 Creator 窗口在创建 WordPad 进程和实例时不是前台窗口,则新创建的 WordPad 实例不会出现在 Z 顺序的顶部。它出现在创建者窗口的顶部,但在创建写字板进程时,在 Z 顺序中创建者进程上方的任何其他窗口下方。

我已经阅读了很多帖子,并尝试了 , , , 和 的许多序列和变体SetForegroundWindowSetWindowPosShowWindow没有WindowRestore成功Focus。新创建的写字板实例始终创建在 Creator 窗口上方但在 Creator 窗口顶部的所有窗口下方。

我究竟做错了什么?

我理解焦点窃取的问题,下面的一位评论者提供了一个有用的链接,指向陈的一篇旧帖子。然而,Dragon 语音软件以某种方式完成了我想做的事情。“DragonBar”应用程序始终位于所有其他窗口的顶部,但允许我移动焦点并使用鼠标切换应用程序。(推断在顶部独立于作为前台应用程序是否正确?)

目前,我可以在我的应用程序中接收用户的语音请求。我的问题是如何实现用户的请求以启动新进程(和写字板)并将它们从我的小 Creator 应用程序带到前台?只要在我收到用户请求时我的 Creator 应用程序是前台/顶级应用程序,一切都很好。但是,如果我在 Creator 不是前台应用程序时收到语音请求,我将无法执行用户请求的操作。谢谢你。

0 投票
1 回答
380 浏览

c# - 某些窗口的 Windows 桌面坐标系已关闭

我在为 Windows 开发一些软件时遇到了一个问题,这个问题与在屏幕上移动窗口有关。

基本上,我发现特定的窗口将始终不遵循坐标系。我有一个函数,它接受一个窗口和一个比率,然后将窗口放大到它可以的最大尺寸(以该比率)并且仍然在显示器的工作区域内(不超过边缘或任务栏)。

示例 1:函数按预期工作,将窗口(VSCode)的大小设置为 4:3 的最大大小,并将其放在屏幕的角落(使用 SetWindowPos 并为坐标传递 0,0) .

示例 2:完全相同的函数在不同的窗口 (Firefox) 上运行,它再次调整为 4:3 并设置为 0,0。但是,这一次您可以看到窗口并没有完全在角落里,准确地说是相差 8 个像素。如果我使用 api 调用获取窗口位置,它会返回 0,0,即使它显然不是。如果我自己手动将其卡入角落,则返回 -8,0。

我不知道出了什么问题或如何解决它。它总是发生在同一个窗口上,不太确定,但我认为它与窗口的标题栏类型有关。

我见过的唯一一个遇到这个问题的人在这里:https ://answers.microsoft.com/en-us/insider/forum/insider_wintp-insider_desktop/desktop-coordinate-system-is-broken/9e6fd9ab-6d27 -45e0-bb55-4c868cd6ac45

不幸的是,他从来没有得到真正的答案,所以我回到了原点。

那么,有什么想法可以始终如一地将窗户设置在角落里吗?我已经提出了一些 janky 解决方案,例如尝试动态查找窗口从角落偏移多少,但这并不是我真正想要依赖的东西。这只是Windows的一个错误,我被卡住了吗?

谢谢,如果您有任何问题,请告诉我!

0 投票
0 回答
60 浏览

c# - Windows 还原位置有时不起作用

我编写了一个简单的 C# 程序,它将打开的窗口的位置和大小保存到一个文件中,然后还可以从该文件中恢复它们(基于命令行参数)。这总是适用于某些程序而不适用于其他程序,我不知道为什么。

获取窗口位置 (x,y) 和大小 (w,h) 的部分使用此标准 Windows 函数

设置窗口大小和位置的部分使用这个标准的 Windows 函数

这些在代码中声明如下

其余的代码是不起眼的:将一些数据保存到文本文件中,从文本文件中读取一些数据。所有这些都是从在线示例中复制粘贴的,我是新手 C#/Windows 程序员。

该程序在某些程序上运行良好,而在其他程序上则完全没有。我可以将 Chrome 恢复到它的大小和位置,但不能恢复 Firefox,也不能恢复 Microsoft Edge。Visual Studio Code 有效,但 R Studio 无效。这让我很惊讶,因为(对 Windows 编程了解不多)我预计任何 Windows 程序的 GUI 部分都是用标准 Windows 库编码的,因此任何在 Windows 上运行的程序都会以SetWindowPos相同的方式响应。

为什么这适用于某些程序而不适用于其他程序?

我需要这样做,因为我有一个 4K 显示器,并且每次显示器关闭或超时时,Windows 都会以某种方式丢失大多数窗口的大小和位置。我单独发布了这个,没有解决方案,所以我写了自己的,这主要是有效的。 https://superuser.com/questions/1513288/windows-loses-window-position-on-large-monitor

如果有人感兴趣,源代码在 https://github.com/radumanolescu/WinPos

在具有可靠规格的 2019 年 PC 上运行完全修补的 Windows 10 Pro。