2017-05-06 62 views
0

我想要我的程序使主窗體的另一個進程有一個最小的窗口大小。是否可以設置另一個進程窗體的MinimumSize屬性? C#

我有正確的窗口句柄,並嘗試設置窗口的大小,如果它小於我想要的大小, 但這種方式它是完全閃爍。

的MoveWindow()使其閃爍太多, SetWindowPos()藏漢


using System; 
using System.Diagnostics; 
using System.Windows.Forms; 


namespace myProgram 
{ 
    public partial class Form1 : Form 
    { 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void Form1_Load(object sender, EventArgs e) 
    { 
     foreach (var process in Process.GetProcessesByName("myTarget")) 
     { 
     var handle = process.MainWindowHandle; // gets all instances of the target game 
     // Something like SetWindowProperty(handle, MinimumSize, new Size(500, 500)) would be perfect 
     // or: setting the size with 
      // MoveWindow() - flashes horribly 
      // SetWindowPos() - flashes horribly aswell 
      // something else? 
     } 
    } 
    } 
} 

我想一個解決方案,它是光滑,不閃爍或看可怕。

目標程序是一個遊戲,具有相當大的窗口形式。

+0

看來你的問題對我來說還不清楚。你有什麼樣的地方可以參考你需要的嗎? – Muj

+0

您可能需要實現全局系統鉤子,截取並修改'WM_GETMINMAXINFO'中的'lParam'。我不認爲這在C#中是可能的。 – bansi

+0

請參閱此[Win32 GUI閃爍調整大小](http://stackoverflow.com/questions/2036599/win32-gui-flickering-on-resize)問題。
Rainmaker

回答

0

您正在尋找MoveWindow。看起來像:

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

其中hWnd是要調整大小的應用程序。

+0

使用這將使我的目標閃光燈,這是我不想要的。 – TheElderScroller

相關問題