Итак, я прикрепил игру к своему проекту с помощью следующего кода:
int pidint = Convert.ToInt32(PID2.Text);
Process p = Process.GetProcessById(pidint);
Thread.Sleep(1000);
p.WaitForInputIdle();
SetParent(p.MainWindowHandle, Game2Panel.Handle);
Она работает просто отлично, однако мне не нужен весь экран. Небольшая часть (точнее, панель состояния).
Я пытался переместить приложение, прикрепленное к моему проекту, чтобы на панели (которая соответствует размеру панели состояния) отображалось только бар здоровья. Однако это просто перемещает мой проект в целом.
private void button3_Click(object sender, EventArgs e)
{
IntPtr hWnd = this.Handle;
UInt32 pidint = Convert.ToUInt32(PID2.Text, 16);
uint processid = pidint;
uint threadid = GetWindowThreadProcessId((IntPtr)hWnd, out processid);
if (hWnd == IntPtr.Zero)
{
MessageBox.Show("Could not find this process.");
return;
}
// Set the window's position.
int width = int.Parse(txtWidth.Text);
int height = int.Parse(txtHeight.Text);
int x = int.Parse(txtX.Text);
int y = int.Parse(txtY.Text);
SetWindowPos(hWnd, IntPtr.Zero, x, y, width, height, 0);
}
Я также пытался перемещать Panel через Game2Panel.Left & Game2Panel.Top, но, очевидно, он просто перемещает Panel вокруг формы, а не ее содержимого. .