특정 프로세스에 의해 생성된 모든 창을 열거하려면 다음 방법을 사용할 수 있습니다. 먼저 특정 프로세스의 프로세스 ID를 가져옵니다. 그런 다음 다음 코드에서 EnumerateProcessWindowHandles 메서드를 호출하여 프로세스에 속한 모든 창 핸들을 열거할 수 있습니다.
delegate bool EnumThreadDelegate(IntPtr hWnd, IntPtr lParam); [DllImport("user32.dll")] static extern bool EnumThreadWindows(int dwThreadId, EnumThreadDelegate lpfn, IntPtr lParam); static IEnumerable<IntPtr> EnumerateProcessWindowHandles(int processId) { var handles = new List<IntPtr>(); foreach (ProcessThread thread in Process.GetProcessById(processId).Threads) EnumThreadWindows(thread.Id, (hWnd, lParam) => { handles.Add(hWnd); return true; }, IntPtr.Zero); return handles; }
다음 예에서는 "explorer"라는 프로세스에 속하는 모든 창의 제목을 인쇄합니다.
const uint WM_GETTEXT = 0x000D; [DllImport("user32.dll", CharSet = CharSet.Auto)] static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, int wParam, StringBuilder lParam); static void Main(string[] args) { foreach (var handle in EnumerateProcessWindowHandles( Process.GetProcessesByName("explorer").First().Id)) { StringBuilder message = new StringBuilder(1000); SendMessage(handle, WM_GETTEXT, message.Capacity, message); Console.WriteLine(message); } }
위 내용은 .NET의 특정 프로세스에 속하는 모든 창을 열거하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!