2014-09-18 2 views
-1

Я разрабатываю программное обеспечение автоматизации для IE. Я пробовал SHDocvw, но он работал плохо, из-за напряженного состояния IE.IE Automation with 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» для получения MainWindowHandle, который может не работать, поскольку может быть запущен несколько процессов Internet Explorer. Попробуйте использовать FindWindow, чтобы получить ручку главного окна.

Смежные вопросы