C# 移动外部程序的窗口相关的函数
[DllImport("user32.dll")]
public static extern int FindWindow(string lpClassName, string lpWindowName);
[DllImport("user32.dll")]
public static extern int GetTopWindow();
[DllImport("user32.dll")]
public static extern bool UpdateWindow(IntPtr hWnd);
[DllImport("user32.dll")]
public static extern int GetForegroundWindow();
[DllImport("user32.dll")]
public static extern int SendMessage(int hWnd, uint Msg, int wParam, int lParam);
[DllImport("User32.dll", ExactSpelling = true, CharSet = System.Runtime.InteropServices.CharSet.Auto)]
private static extern bool MoveWindow(IntPtr hWnd, int x, int y, int cx, int cy, bool repaint);
public const int WM_COMMAND = 0x0112;
public const int WM_CLOSE = 0xF060;
int screenIndex = 1;
Screen[] screens = Screen.AllScreens;
Process MCProcess = new Process();
MCProcess.StartInfo.FileName = lblFolderPath.Text + "\\" + listView3.Items[0].Text;
MCProcess.Start();
System.Threading.Thread.Sleep(500);
handle = GetForegroundWindow();
MoveWindow((IntPtr)handle,
screens[screenIndex].Bounds.Left + 10,
screens[screenIndex].Bounds.Top + 10,
1260,
1004,
true
);
GetForegroundWindow() 函数往往获取不到想要指定的窗口
int handle = 0;
if (m_Process.WaitForInputIdle(1000))
handle = FindWindow(null, "Free Virtual Keyboard - www.mediafreeware.com");
int keyborard_Width = Screen.PrimaryScreen.WorkingArea.Size.Width / 3;
int keyborard_Height = Screen.PrimaryScreen.WorkingArea.Size.Height / 4;
int WidthLocation = Screen.PrimaryScreen.WorkingArea.Size.Width/4;
int HeightLocation = Screen.PrimaryScreen.WorkingArea.Size.Height / 2 +13;
MoveWindow(
(IntPtr)handle,
WidthLocation,
HeightLocation,
keyborard_Width,
keyborard_Height,
true
);