솔루션
는 .NET에서이를 달성하기 위해 열거 된 Windows와 GetProcessById 기능의 조합으로이를 달성합니다. 고용됩니다. 다음 코드 스 니펫은이 솔루션을 구현하는 방법을 보여줍니다.
[dllimport ( "user32.dll")]
정적 외부 bool enumthreadwindows (int dwthreadid, enumthreaddelegate lpfn,
intptr lparam);
정적 iEenumerable 열거 프로세스 와인도 핸들 (int processID)
{
var handles = 새 목록 ();
foreach (processthread stread in process.getProcessById (processID) .threads)
enumthreadwindows (thread.id,
(hwnd, lparam) = & gt; {handles.add (hwnd); 진실을 반환하십시오. }, intptr.zero);
반환 핸들;
}
사용 예
제공된 코드는 Windows 탐색기 프로세스와 관련된 모든 Windows를 열거하는 방법을 보여줍니다.
[dllimport ( "user32.dll", charset = charset.auto)]
정적 extern intptr sendmessage (intptr hwnd, uint msg, int wparam,
StringBuilder lparam);
[Stathread]
정적 무효 메인 (String [] args)
{
foreach (열거적 인 프로세스 윈도 핸들의 var 핸들 (
process.getProcessesByName ( "탐색기"). First (). id))
{
StringBuilder Message = New StringBuilder (1000);
sendMessage (handle, wm_gettext, message.capacity, message);
Console.WriteLine (메시지);
}
}
이 솔루션을 사용하여 특정 프로세스에 속하는 모든 Windows를 효과적으로 열거하여 응용 프로그램의 사용자 인터페이스에 대한 귀중한 통찰력을 제공 할 수 있습니다.