public override void Close() { try { if (IntAppProcess.HasExited == false) { IntAppProcess.Kill(); } } catch (Exception ex) { Runtime.MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, Language.strIntAppKillFailed + Constants.vbNewLine + ex.Message, true); } try { if (IntAppProcess.HasExited == false) { IntAppProcess.Dispose(); } } catch (Exception ex) { Runtime.MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, Language.strIntAppDisposeFailed + Constants.vbNewLine + ex.Message, true); } base.Close(); }
private void CatchIntApp() { try { IntAppProcess.WaitForInputIdle(); int TryCount = 0; while ( !(IntAppProcess.MainWindowHandle != IntPtr.Zero && IntAppProcess.MainWindowTitle != "Default IME")) { if (TryCount >= Settings.Default.MaxPuttyWaitTime * 2) { break; } IntAppProcess.Refresh(); Thread.Sleep(500); TryCount++; } IntAppHandle = IntAppProcess.MainWindowHandle; Runtime.MessageCollector.AddMessage(Messages.MessageClass.InformationMsg, Language.strIntAppStuff, true); Runtime.MessageCollector.AddMessage(Messages.MessageClass.InformationMsg, string.Format(Language.strIntAppHandle, IntAppHandle.ToString()), true); Runtime.MessageCollector.AddMessage(Messages.MessageClass.InformationMsg, string.Format(Language.strIntAppTitle, IntAppProcess.MainWindowTitle), true); Runtime.MessageCollector.AddMessage(Messages.MessageClass.InformationMsg, string.Format(Language.strIntAppParentHandle, ParenrHandle.ToString()), true); Native.SetParent(IntAppHandle, ParenrHandle); Native.SetWindowLong(IntAppHandle, 0, Native.WS_VISIBLE); Native.ShowWindow(IntAppHandle, Convert.ToInt32(Native.SW_SHOWMAXIMIZED)); Resize(this, new EventArgs()); } catch (Exception ex) { Runtime.MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, Language.strIntAppConnectionFailed + Constants.vbNewLine + ex.Message); } }