我可以更改其他正在运行的程序的属性吗?

时间:2011-04-07 19:35:21

标签: properties

简而言之,我想知道是否有办法从其他程序更改Windows窗体的显示属性。

例如,假设我有两个应用程序正在运行(分别为A和B),程序A有一个显示“重新调整程序B”的按钮。我的问题是,在程序A中按下该按钮是否有任何方法,我可以访问内存中的程序B并更改其窗体宽度和高度属性(或任何属性)?

我不一定需要源代码,(如果这甚至可能 - 会非常感激),主要是我只是好奇这样的事情是可能的(在任何语言/ IDE中) - 然后我可以下沉我是时候学习如何实现这个概念了。

我的猜测 - 出于明显的安全原因,不会......但如果你问我,最好问一个愚蠢的问题而不是假设一个愚蠢的答案。

非常感谢你在这个问题上的时间


获得窗口大小,像'TopMost'这样的属性怎么样?

再次感谢,


非常感谢大家的帮助!

2 个答案:

答案 0 :(得分:0)

如果窗口已经打开并且您的代码可以找到它,那么它可以调整它的大小。例如,右键单击任务栏的空白区域时排列窗口的代码可以执行此操作。

答案 1 :(得分:0)

您可以通过向其发送系统消息来调整其他程序的窗口大小。它由WinAPI函数

完成
LRESULT WINAPI SendMessage(
  __in  HWND hWnd,
  __in  UINT Msg,
  __in  WPARAM wParam,
  __in  LPARAM lParam
);

第一个参数是目标窗口的句柄。您可以使用其他API函数(如FindWindow)来获取它。

其次是消息代码 - 在你的情况下是WM_SIZE。

最后两个参数在此处描述http://msdn.microsoft.com/en-us/library/ms632646(v=vs.85).aspx

这适用于C ++ WinAPI。在.NET中,您可以使用P-Invoke来调用WinAPI函数。可以在http://www.pinvoke.net/

找到P-Invoke的声明

UPD :还有其他适合此功能的功能:SetWindowPos和MoveWindow

这是调整大小的示例。有关您可以执行的其他操作,请参阅此MSDN部分

http://msdn.microsoft.com/en-us/library/ff468919(v=VS.85).aspx

窗口内的大多数控件(按钮等..)也是窗口。您可以获得他们的句柄并以相同的方式控制它们