. NET 응용 프로그램이 현재 열려있는 모든 창 핸들을 잡고이 창을 이동/크기 조정할 수 있습니까?.NET 응용 프로그램에서 응용 프로그램 창을 잡고 이동 하시겠습니까?
필자는 P/Invoke를 사용하여 가능하다고 확신하지만,이 기능에 대한 관리되는 코드 래퍼가 있는지 궁금합니다.
. NET 응용 프로그램이 현재 열려있는 모든 창 핸들을 잡고이 창을 이동/크기 조정할 수 있습니까?.NET 응용 프로그램에서 응용 프로그램 창을 잡고 이동 하시겠습니까?
필자는 P/Invoke를 사용하여 가능하다고 확신하지만,이 기능에 대한 관리되는 코드 래퍼가 있는지 궁금합니다.
예, Windows API를 사용할 수 있습니다.
이 포스팅은 모든 창이 활성화 프로세스에서 처리하는 방법에 대한 정보가 있습니다 http://www.c-sharpcorner.com/Forums/ShowMessages.aspx?ThreadID=35545
using System;
using System.Diagnostics;
class Program
{
static void Main()
{
Process[] procs = Process.GetProcesses();
IntPtr hWnd;
foreach(Process proc in procs)
{
if ((hWnd = proc.MainWindowHandle) != IntPtr.Zero)
{
Console.WriteLine("{0} : {1}", proc.ProcessName, hWnd);
}
}
}
}
을 그리고 당신은 윈도우 API를 사용하여 창을 이동할 수 있습니다 여기에
[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);
...
MoveWindow((IntPtr)handle, (trackBar1.Value*80), 20 , (trackBar1.Value*80)-800, 120, true);
http://www.devasp.net/net/articles/display/689.html
이됩니다 MoveWindow 함수의 매개 변수 :윈도우, 우리는 위 코너 윈도우 핸들의 좌표 소요 MoveWindow 기능뿐만 아니라 화면 좌표에 기초 창 소정의 폭과 높이를 사용한다. MoveWindow 함수는 다음과 같이 정의된다
MoveWindow (HWND HWND, INT nX로, INT NY, INT nWidth, nHeight INT, BOOL bRepaint);
bRepaint 플래그 는 그려야하는 클라이언트 영역 있도록 클라이언트 영역 가 WM_PAINT 메시지가 전송되게 무효화해야하는지 여부를 판정한다. 여담 같이, 화면 좌표는 rcDesktop가 참조로 전달 형 RECT의 변수 인과 GetClientRect (GetDesktopWindow() & rcDesktop)과 같은 호출을 사용 를 얻을 수있다.
(http://windows-programming.suite101.com/article.cfm/client_area_size_with_movewindow)
+1 좋은 대답. –
는 기계 터크를 사용 - 단지 메시지 박스가 팝업 당신을 위해 그것을 할 사용자를 부탁드립니다. 자세한 지침을 제공하십시오. : P 죄송합니다, 여기에 자신을 즐겁게 ... –