예기치 않은 행위의 과정입니다.MainWindowHandle
문제
내가 하려고 했는데 이해 과정입니다.MainWindowHandle.
에 따라 MSDN;"주 창은 창 만들어지는 경우 프로세스가 시작됩니다.초기화 이후,다른 창을 열려 있는 것을 포함한 모달 및 TopLevel windows,지 첫 번째 창과 관련된 프로세스에 남아 있는 주요 창." (중점 추가)
하지만 디버깅하는 것으로 나타났 MainWindowHandle 듯 값을 변경하...내가 기대하지 않았고,특히 컨설팅 후 설명서를니다.
을 확인하는 행동을 만들었는 독립 WinForms 용 타이머를 확인하 MainWindowHandle 의"DEVENV"(Visual Studio)을 프로세스는 모든 100ms.
여기에 흥미로운 부분의 이 테스트는 응용 프로그램...
IntPtr oldHWnd = IntPtr.Zero;
void GetMainwindowHandle()
{
Process[] processes = Process.GetProcessesByName("DEVENV");
if (processes.Length!=1)
return;
IntPtr newHWnd = processes[0].MainWindowHandle;
if (newHWnd != oldHWnd)
{
oldHWnd = newHWnd;
textBox1.AppendText(processes[0].MainWindowHandle.ToString("X")+"\r\n");
}
}
private void timer1Tick(object sender, EventArgs e)
{
GetMainwindowHandle();
}
당신이 볼 수있는 가치의 MainWindowHandle 변경하는 경우(예를 들어)를 클릭합에서 드롭다운 메뉴 내부 VS.
아마 제가 오해했다.
할 수 있는 사람이 빛?
해결책
@일 연락,
나는 그것에 오류가 MSDN.당신은 분명히 볼 수 있습에서 Relfector,는"주요 창에서"확인합니다.NET 처럼 보인:
private bool IsMainWindow(IntPtr handle)
{
return (!(NativeMethods.GetWindow(new HandleRef(this, handle), 4) != IntPtr.Zero)
&& NativeMethods.IsWindowVisible(new HandleRef(this, handle)));
}
니다.순 코드를 열거 windows,그것은 분명 먼저 눈에 보이는 창(i.e최고 수준의 창의)이 기준입니다.
다른 팁
실제로 프로세스.MainWindowHandle 손잡이의 맨 위에 있는 창,아니지요"메인 창 처리"
제휴하지 않습니다 StackOverflow