MoveWindow 在 DeSmuME 的窗口上不做任何事情

MoveWindow doesn't do anything on DeSmuME's Window

提问人: 提问时间:5/20/2019 更新时间:5/20/2019 访问量:204

问:

我对 DeSmuME 的进程进行了基本测试,它根本没有导致任何变化,我至少期望它的 X/Y pos 更改为 0(屏幕左上角),但不,什么都没有,奇怪的是它得到了手柄,RECT 结构也适用于它,它设法让位置很好。MoveWindow(handle, 0, 0, 1280, 720, true)

[StructLayout(LayoutKind.Sequential)]
public struct RECT {
  public int left;
  public int top;
  public int right;
  public int bottom;
}
[DllImport("user32.dll", SetLastError = true)]
static extern bool GetWindowRect(IntPtr hWnd, ref RECT Rect);

[DllImport("user32.dll", SetLastError = true)]
static extern bool MoveWindow(IntPtr hWnd, int X, int Y, int Width, int Height, bool Repaint);
static void Main(string[] args) {
  Process[] processes = Process.GetProcessesByName("DeSmuME_X432R_x64");
  foreach (Process p in processes) {
    IntPtr handle = p.MainWindowHandle;
    RECT Rect = new RECT();
    if (GetWindowRect(handle, ref Rect)) {
      MoveWindow(handle, 0, 0, 1280, 720, true);
    }
    Console.WriteLine(Rect.right);
    Console.ReadLine();
  }
}
C# 移动窗口

评论

0赞 Martin 5/20/2019
在关注这是否是 DeSmuME 的问题之前,您是否已经证明您的代码可以在属于其他应用程序的 Windows 上运行?我怀疑这是您的代码问题,而不是 DeSmuME 的功能
0赞 5/20/2019
@Martin 我已经用记事本测试了它,它工作得很好
0赞 5/20/2019
我不太确定它可能捕获了 CONSOLE 窗口而不是 GUI 窗口。
0赞 Martin 5/20/2019
我刚刚自己测试了这段代码,运行确实成功地为我移动了窗口。它会调整它的大小,但随后窗口会自动恢复到默认大小MoveWindow
1赞 5/21/2019
好的,WaitForInputIdle + 强制以管理员身份运行现在可以正常工作,感谢您对其进行测试,以便@Martin +1 中磨练该问题

答: 暂无答案