У меня есть
[DllImport("user32.dll", EntryPoint = "SetWindowPos")]
public static extern IntPtr SetWindowPos(string hWnd, int hWndInsertAfter, int x, int Y, int cx, int cy, int wFlags);
Моя проблема в том, что я хочу иметь возможность перемещать конкретное окно на основе текста внутри моей метки.
private void button1_Click(object sender, EventArgs e)
{
const short SWP_NOSIZE = 1;
const short SWP_NOZORDER = 0X4;
const int SWP_SHOWWINDOW = 0x0040;
Process[] processes = Process.GetProcesses();
foreach (var process in processes)
{
IntPtr handle = process.MainWindowHandle;
string Text = handle.ToString();
if (handle.ToString() == WindowTextBox.Text)
{
SetWindowPos(Text, 0, 0, 0, 0, 0, SWP_NOZORDER | SWP_NOSIZE | SWP_SHOWWINDOW);
}
}
}
Я знал, что это не сработает, но все равно хотел попробовать, как еще я смогу переместить окно на основе того, что находится внутри моего WindowTextBox? (имея дескриптор IntPtr в SetWindowPos(IntPtr hWnd, [...]) и просто изменяя
SetWindowPos(Text, 0, 0, 0, 0, 0, SWP_NOZORDER | SWP_NOSIZE | SWP_SHOWWINDOW);
to
SetWindowPos(handle, 0, 0, 0, 0, 0, SWP_NOZORDER | SWP_NOSIZE | SWP_SHOWWINDOW);
тоже не работает.) Любые предложения?
handle.ToString()
— это не то, что вы думаете. Вы должны отслеживать его и WindowTextBox.Text. - person harpo   schedule 09.09.2012