设置程序窗口的位置

本文关键字:位置 窗口 程序 设置 | 更新日期: 2023-09-27 18:11:01

我正在构建一个运行在windows 8平板电脑上的c# wpf应用程序,我在我的应用程序中调用虚拟键盘,像这样:

Process.Start(Environment.GetFolderPath(Environment.SpecialFolder.System) + System.IO.Path.DirectorySeparatorChar + "osk.exe");

我想知道是否有一种方法可以在我第一次打开平板电脑时设置键盘窗口的位置。比如给Process.Start

添加XY坐标

谢谢

设置程序窗口的位置

操作OSK窗口需要您的进程处于高架运行状态。(OSK具有一定的特权,这意味着它不能被未被提升的进程操纵。)但是,如果你的应用程序是高架运行的,你应该会发现下面的代码可以工作。

请注意,您需要在启动OSK后找到OSK窗口,而不是在调用Start()之后从Process对象获取mainwindowwhandle。由于OSK启动的方式,您会发现Process对象上的HasExited属性为true,而MainWindowHandle不可用。

谢谢,

的家伙

private void buttonLaunchOSK_Click(object sender, EventArgs e)
{
    // Launch the OSK.
    Process.Start(Environment.GetFolderPath(Environment.SpecialFolder.System) + System.IO.Path.DirectorySeparatorChar + "osk.exe");
    // Wait a moment for the OSK window to be created.
    Thread.Sleep(200);
    // Find the OSK window. 
    IntPtr hwndOSK = Form1.FindWindow("OSKMainClass", null);
    // Move and size the OSK window.
    Form1.MoveWindow(hwndOSK, 0, 0, 800, 300, true);
}
[DllImport("user32.dll", SetLastError = true)]
public static extern IntPtr FindWindow(string className, string windowTitle);
[DllImport("user32.dll", SetLastError = true)]
internal static extern bool MoveWindow(IntPtr hWnd, int X, int Y, int nWidth, int nHeight, bool bRepaint);