【问题标题】:How do I change another program's window's size?如何更改另一个程序的窗口大小?
【发布时间】:2011-12-09 09:33:25
【问题描述】:

如何从我的 C# 程序中更改另一个程序(比如 Skype 的)窗口的大小?

【问题讨论】:

  • 如果你把这个问题分成两个(1.如何影响另一个进程的窗口;2.如何改变任何窗口的大小)你应该能够在 Stack Overflow 上找到答案。 PS:如果国外的应用程序打开了几个窗口怎么办?你想操纵哪一个?

标签: c# winapi


【解决方案1】:

你可以使用MoveWindow(其中hWnd是你要移动的窗口):

[DllImport("user32.dll", SetLastError = true)]
internal static extern bool MoveWindow(IntPtr hWnd, int X, int Y, int nWidth, int nHeight, bool bRepaint);

MoveWindow(ApplicationHandle, 600, 600, 600, 600, true);

如果您不知道窗口指针,可以使用FindWindow 功能。

MSDN SetWindowPos(与 MoveWindow 非常相似)也值得一读。

【讨论】:

  • ApplicationHandle 是什么?这个是哪里来的?
【解决方案2】:

需要获取其他程序的窗口句柄,使用Process.MainWindowHandle或者FindWindow

有了这个,您可以PInvokeSetWindowPos() 移动、调整大小、更改 Z 顺序或窗口的最小/最大/恢复状态。

【讨论】:

    【解决方案3】:

    我会使用 Windows Api SetWindowPos

    看看这个:Using SetWindowPos in C# to move windows around

    当然,首先您应该知道要调整大小的窗口的句柄,这可以通过多种方式完成,例如通过名称获取进程然后获取该进程的 MainWindow 或使用 EnumWindowFindWindow APIs

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-07-08
      • 2012-12-10
      • 1970-01-01
      • 2013-02-06
      • 2019-08-09
      • 2020-10-14
      • 1970-01-01
      相关资源
      最近更新 更多