У меня есть приложение Windows Form, которое при запуске запускает Firefox, захватывает процесс и дескриптор окна и делает захват экрана Firefox, сохраняет его на диск (temp.bmp) и вызывает ProcessGetWindow. Я в основном использую MiSelectRects в MODI, чтобы захватить прямоугольник вокруг слова, которое я ищу, а затем я использую AutoIT, чтобы щелкнуть мышью по слову.MODI MiSelectRects получает неправильные координаты
Проблема в том, что мои координаты отключены примерно на 10 пикселей сверху.
Любые идеи, что может быть неправильным? Вот функция, которая выполняет обработку. Я прокомментировал обработку AutoIT, и я просто отлаживаю сообщение MessageBox, чтобы показать мне фактические координаты. Затем я подтверждаю это с помощью инструмента «Информация о окнах» AutoIT, и он определенно отключен ... Я что-то делаю неправильно или что-то привнесено в MODI?
public void ProcessGetWindow(Bitmap image)
{
Document modiDoc = null;
MiDocSearch modiSearch = null;
IMiSelectableItem modiTextSel = null;
MiSelectRects modiSelectRects = null;
MiSelectRect modiSelectRect = null;
MiRects modiRects = null;
int intSelInfoPN;
string intSelInfoTop;
int intSelInfoBottom;
string intSelInfoLeft;
int intSelInfoRight;
// Load an existing image file.
modiDoc = new Document();
modiDoc.Create(@"C:\\temp.bmp");
// Perform OCR.
modiDoc.Images[0].OCR();
// Search for the selected word.
modiSearch = new MiDocSearch();
modiSearch.Initialize(modiDoc, "Click Me", 0, 0, false, false);
modiSearch.Search(null, ref modiTextSel);
try
{
modiSelectRects = modiTextSel.GetSelectRects();
}
catch (COMException)
{
MessageBox.Show("Me thinks that the OCR didn't work right!");
}
foreach (MiSelectRect mr in modiSelectRects)
{
//intSelInfoPN = mr.PageNumber.ToString();
intSelInfoTop = mr.Top.ToString();
//intSelInfoBottom = mr.Bottom;
intSelInfoLeft = mr.Left.ToString();
//intSelInfoRight = mr.Right;
/*AutoItX3 auto = new AutoItX3();
auto.AutoItSetOption("MouseCoordMode", 2);
auto.MouseClick("", intSelInfoLeft, intSelInfoTop, 1, 80);*/
MessageBox.Show("Coordinates: " + intSelInfoLeft + ", " + intSelInfoTop, "Coordinates", MessageBoxButtons.OK);
}
//string textResult = modiTextSel.Text;
//MessageBox.Show(textResult, "Search Results", MessageBoxButtons.OK);
// Close this dialog.
Application.Exit();
}
FYI, Microsoft устарел MODI. Когда ваши пользователи перейдут на Office 2010, у вас возникнут проблемы. – TrueWill