В настоящее время я разрабатываю средство просмотра изображений, которое позволяет пользователю вводить свой адрес электронной почты и получать изображения в цифровом виде. Меня беспокоит закрытие экранной клавиатуры. Я использую этот фрагмент кода для запуска процесса Windows:
string progFiles = @"C:\Program Files\Common Files\Microsoft Shared\ink";
string keyboardPath = Path.Combine(progFiles, "TabTip.exe");
Process keyboardProc = Process.Start(keyboardPath);
После чего я открываю VB InputBox, чтобы запросить адрес электронной почты (для чего я использую экранную клавиатуру, так как приложение будет отображаться на сенсорном экране). После этого приглашения я хочу автоматически закрыть процесс.
Я попытался закрыть процесс следующим образом:
keyboardProc.Kill();
keyboardProc.Dispose();
keyboardProc.Close();
keyboardProc = null;
Ни один из них не работает и просто выдает исключение:
An unhandled exception of type 'System.InvalidOperationException' occurred in System.dll
Additional information: Cannot process request because the process has exited.
Я также пытался идентифицировать процесс по идентификатору и закрыть его таким образом, тоже не сработало. Я также просмотрел: C#/.NET: закрытие другого процесс за пределами главного окна, но он тоже не заработал.. :(
Я новичок в С#, и это первый раз, когда я вызываю процесс Windows из кода - я что-то упустил?
Заранее большое спасибо!
.Kill()
у меня работает. Вы уверены, что убиваете его только один раз и больше ничего не делаете, что может вызвать исключение? - person pascalhein   schedule 30.05.2013keyboardProc.CloseMainWindow()
(MSDN) должен помочь. - person John Willemse   schedule 30.05.2013