Я работаю над автоматизацией Internet Explorer, и часть ее включает загрузку файлов с сайта, который размещен на asp 2.0 и использует аутентификацию на основе форм, поэтому для создания сквозной автоматизации я использовал автоматизацию браузера.
Мне удалось перейти к шагу, на котором я могу щелкнуть URL-адрес, который вызывает диалоговое окно «Загрузка файла» в браузере, затем я пытался использовать SendKeys, чтобы нажать кнопку «Сохранить», но безрезультатно это былоне работает.
Вот код, в котором я использую метод FindWindow для получения указателя hWnd в диалоге загрузки файлов, а затем с помощью setActiveWindow я делаю его активным окном, чтобы над ним работали команды SendKeysзатем с помощью SendKeys я попытался отправить Alt + S, но это не сработало.Я заметил, что Tab, Escape и Enter работают, но затем кнопка Enter on Save не работает.
[DllImport("user32.dll", SetLastError = true)]
static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool SetForegroundWindow(IntPtr hWnd);
[DllImport("user32.dll", SetLastError = true)]
static extern IntPtr SetActiveWindow(IntPtr hWnd);
private void Form1_Load(object sender, EventArgs e)
{
IntPtr hwnd = FindWindow(null, "File Download");
IntPtr nullptr = (IntPtr)0;
if (hwnd != nullptr)
{
SetActiveWindow(hwnd);
SendKeys.SendWait("%S");
}
}
Используя тот же код, я смог получить доступ к блокноту, изменив значение в FindWindow на «Untitled»- Блокнот ".
Нужно ли делать что-то другое, так как это диалоговое окно, а теперь окно?Я использую IE8.
Это альтернативный код, который я попробовал после ответа.
IntPtr hwnd = FindWindow(null, "File Download");
IntPtr hokBtn = IntPtr.Zero;
hokBtn = FindWindowEx(hwnd, hokBtn, "Button", IntPtr.Zero);
hokBtn = FindWindowEx(hwnd, hokBtn, "Button", IntPtr.Zero);
uint id = GetDlgCtrlID(hokBtn);
SetActiveWindow(hwnd);
IntPtr res = SendMessage(hokBtn, (int)0x00F5, 0, IntPtr.Zero);
if (res.ToInt32() == 1)
MessageBox.Show("success");
Для ясности добавляю экран диалога.
альтернативный текст http://www.freeimagehosting.net/uploads/4f23586401.png