更改属于另一个进程的窗口的大小和位置

时间:2013-08-19 06:48:04

标签: c# winapi

我有一个已编译的c#控制台应用程序,我想有一个选项来更改某个窗口(* .exe,比如说,任务管理器)的位置和大小。 是否可以通过VS2010中提供的命名空间? 目标窗口没有以任何方式连接到VS编译的exe。

2 个答案:

答案 0 :(得分:2)

如评论中所述,您必须使用SetWindowPos函数。

您将需要窗口句柄。为此,您可以调用EnumWindows,使用GetWindowModuleFileName检查每个窗口的可执行文件名。

伪代码:

foreach window in EnumWindows()
    if GetWindowModuleFileName(window) == "program.exe"
        SetWindowPos(window, ...)

这些功能属于Windows API。要调用它们,您需要进行P / invoke(pinvoke.net可能会有很大的帮助。)

答案 1 :(得分:2)

很有可能:

  1. 要更改窗口位置或/和尺寸,您可以使用 SetWindowPos

    http://msdn.microsoft.com/en-us/library/windows/desktop/ms633545(v=vs.85).aspx

  2. 为了找出窗口的句柄(hWnd参数),你可能会发现它很有用

    FindWindow函数

    http://msdn.microsoft.com/en-us/library/windows/desktop/ms633499(v=vs.85).aspx

    EnumWindows的

    http://msdn.microsoft.com/en-us/library/windows/desktop/ms633497(v=vs.85).aspx