2014-09-18 4 views
-1

IE 용 자동화 소프트웨어를 개발 중입니다. SHDocvw를 시도했지만 IE의 사용 상태 때문에 제대로 작동하지 않았습니다.IE 자동화 (SendMessage 포함)

이제 Windows SendMessage를 사용하고 싶습니다.

[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] 
private static extern IntPtr SendMessage(IntPtr hwnd, uint Msg, IntPtr wParam, IntPtr lParam); 

private const Int32 WM_VSCROLL = 0x0115; 
private const Int32 SB_PAGEDOWN = 0x1; 

String procName = "iexplore"; 
var proc = Process.GetProcessesByName(procName)[0]; 
SendMessage(proc.MainWindowHandle,WM_VSCROLL, (IntPtr)SB_PAGEDOWN, IntPtr.Zero); 

간단히 IE 탭에서 스크롤하고 싶습니다. 왜 이것이 작동하지 않는지 해결책을 찾을 수 없습니다.

감사합니다.

답변

1

주 창에 WM_VSCROLL 메시지를 보내므로 실패합니다. 스크롤 막대가있는 창인 하위 컨트롤에 메시지를 보내야합니다.

EnumChildWindows을 사용하여 하위 창을 열거 할 수 있습니다.

또한 "iexplore"프로세스를 사용하여 여러 Internet Explorer 프로세스가 실행될 수 있으므로 작동하지 않는 MainWindowHandle을 가져옵니다. FindWindow을 사용해 주 창 핸들을 가져 오십시오.