#c# #winforms #excel #interop
#c# #винформы #excel #взаимодействие #winforms
Вопрос:
Когда мой код запущен, у меня появляется всплывающее окно messagebox из Excel, в котором есть повторная попытка, я просто хочу, чтобы мой код мог имитировать нажатие клавиши enter, если она всплывает, что он делает каждый раз. Это окно сообщения, которое появляется и замораживает мой код.
Я отключил один из них с помощью OLE-сообщения, но я все еще получаю это сообщение любым способом, чтобы имитировать нажатие кнопки повторить или ввести ключ, ?
//Turn off OLE Error Message
oXL.DisplayAlerts = false;
Комментарии:
1. Если вы пройдетесь по своему коду, кажется ли, что это случайно появляется в определенной строке?
Ответ №1:
Вы можете попробовать sendkeys, чтобы отправить нажатие клавиши в окно сообщения
Ответ №2:
InputSimulator — это очень гибкая (и надежная) оболочка, которая способна имитировать события клавиатуры и мыши.
Он скрывает отправку данных под капотом, но абстрагирует все вызовы PInvoke и другие сложности. Это ошибка в DLL, которая (для вашей ситуации) должна занимать только одну строку кода.
InputSimulator.SimulateKeyPress(VirtualKeyCode.ENTER);
Комментарии:
1. это довольно круто, я даже не знал, что это возможно. Спасибо
Ответ №3:
Мне интересно, вызвана ли проблема тем, что у вас большой цикл, который никогда не использует Application.DoEvents()
вызов? Что касается отклонения сообщения, которое кажется мне плохим способом решения проблемы.