如何放置屏幕键盘窗口?

用户名

使用ShellExecuteEx()启动osk.exe之后,我想相对于数据输入字段放置键盘窗口,以使其不覆盖它们。

调用前如何设置osk的窗口位置?

另外,完成后如何让应用程序隐藏osk?

肯·怀特

您可以使用窗口类“ OSKMainClass”使用FindWindow来获取窗口句柄,然后在该句柄上使用SetWindowPos将其定位到所需的坐标。(您可能需要使用控件的ClientToScreen方法转换为适当的坐标,但我会让您弄清楚该部分。)

// Off the top of my head - not at a machine that has a Delphi compiler at
// the moment.
var
  OSKWnd: HWnd;
begin
  OSKWnd := FindWindow(PChar('OSKMainClass'), nil);
  if OSKWnd <> 0 then
  begin
    SetWindowPos(OSKWnd, 
                 HWND_BOTTOM, 
                 NewPos.Left, 
                 NewPos.Top, 
                 NewPos.Width,
                 NewPos.Height, 
                 0);
  end;
end;

摘自与同一主题相关CodeProject文章的部分代码我使用AutoHotKey的Window Spy实用程序获取了窗口类。

笔记:

  1. 雷米·勒博(Remy Lebeau)在评论中指出,您应该确保使用CreateProcess()或,ShellExecuteEx()以便您可以取回可WaitForInputIdle()在调用之前传递给它的进程句柄FindWindow()否则,FindWindow()可能在OSK创建窗口之前发生对的调用

  2. mghie在评论中指出,他唯一可以使它起作用的方法就是以管理员身份运行该应用程序。否则,对的调用SetWindowPos()导致“访问被拒绝(5)”。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何放置屏幕键盘窗口?

来自分类Dev

如何使用键盘控制KDE中的窗口放置?

来自分类Dev

如何使用键盘控制KDE中的窗口放置?

来自分类Dev

仅使用键盘即可将窗口快速放置到另一个屏幕

来自分类常见问题

如何关闭屏幕键盘?

来自分类Dev

如何在14.04中使用键盘快捷键并排放置3个窗口?

来自分类Dev

使用键盘在屏幕周围驱动窗口

来自分类Dev

在辅助屏幕上放置弹出窗口

来自分类Dev

在第二屏幕上放置弹出窗口

来自分类Dev

克隆屏幕后,如何在C#的顶部放置一个全屏窗口?

来自分类Dev

如何使窗口大于屏幕?

来自分类Dev

显示键盘时,将广告放置在屏幕底部

来自分类Dev

使用Logitech K780键盘和Windows 10,如何捕获和打印当前窗口而不是整个屏幕

来自分类Dev

如何在Flutter应用中放置一个叠加屏幕并要求用户弹出弹出窗口以查看课程?

来自分类Dev

如何使标题适合屏幕窗口?

来自分类Dev

如何从窗口获取屏幕截图?

来自分类Dev

如何阻止鹿角屏幕键盘打开?

来自分类Dev

如何使用C#更改屏幕键盘

来自分类Dev

如何更改登录屏幕的键盘布局?

来自分类Dev

如何使用屏幕键盘获取选定的QTextEdit?

来自分类Dev

如何移动Windows 8屏幕键盘?

来自分类Dev

如何在登录时禁用屏幕键盘?

来自分类Dev

如何在GNU屏幕中禁用键盘绑定/键盘绑定?

来自分类Dev

如何将BoxLayout放置在屏幕顶部

来自分类Dev

如何将UICollectionViewCell放置在屏幕底部?

来自分类Dev

如何在屏幕右侧放置div元素

来自分类Dev

如何将gridView放置在屏幕中心

来自分类Dev

如何使用键盘移动RemoteApp窗口?

来自分类Dev

如何在Tkinter中放置TopLevel窗口?

Related 相关文章

热门标签

归档