private static bool Execute(AutoTypeCtx ctx) { if (ctx == null) { Debug.Assert(false); return(false); } string strSeq = ctx.Sequence; PwEntry pweData = ctx.Entry; if (pweData == null) { Debug.Assert(false); return(false); } if (!pweData.GetAutoTypeEnabled()) { return(false); } if (!AppPolicy.Try(AppPolicyId.AutoType)) { return(false); } if (NativeLib.IsUnix()) { if (!NativeMethods.TryXDoTool() && !NativeLib.IsWayland()) { MessageService.ShowWarning(KPRes.AutoTypeXDoToolRequired, KPRes.PackageInstallHint); return(false); } } PwDatabase pwDatabase = ctx.Database; bool bObfuscate = (pweData.AutoType.ObfuscationOptions != AutoTypeObfuscationOptions.None); AutoTypeEventArgs args = new AutoTypeEventArgs(strSeq, bObfuscate, pweData, pwDatabase); if (AutoType.FilterCompilePre != null) { AutoType.FilterCompilePre(null, args); } args.Sequence = SprEngine.Compile(args.Sequence, new SprContext( pweData, pwDatabase, SprCompileFlags.All, true, false)); // string strError = ValidateAutoTypeSequence(args.Sequence); // if(!string.IsNullOrEmpty(strError)) // { // MessageService.ShowWarning(args.Sequence + // MessageService.NewParagraph + strError); // return false; // } Application.DoEvents(); if (AutoType.FilterSendPre != null) { AutoType.FilterSendPre(null, args); } if (AutoType.FilterSend != null) { AutoType.FilterSend(null, args); } if (args.Sequence.Length > 0) { string strError = null; try { SendInputEx.SendKeysWait(args.Sequence, args.SendObfuscated); } catch (SecurityException exSec) { strError = exSec.Message; } catch (Exception ex) { strError = args.Sequence + MessageService.NewParagraph + ex.Message; } if (AutoType.SendPost != null) { AutoType.SendPost(null, args); } if (!string.IsNullOrEmpty(strError)) { try { MainForm mfP = Program.MainForm; if (mfP != null) { mfP.EnsureVisibleForegroundWindow(false, false); } } catch (Exception) { Debug.Assert(false); } MessageService.ShowWarning(strError); } } pweData.Touch(false); EntryUtil.ExpireTanEntryIfOption(pweData, pwDatabase); MainForm mf = Program.MainForm; if (mf != null) { // Always refresh entry list (e.g. {NEWPASSWORD} might // have changed data) mf.RefreshEntriesList(); // SprEngine.Compile might have modified the database; // pd.Modified is set by SprEngine mf.UpdateUI(false, null, false, null, false, null, false); if (Program.Config.MainWindow.MinimizeAfterAutoType && mf.IsCommandTypeInvokable(null, MainForm.AppCommandType.Window)) { UIUtil.SetWindowState(mf, FormWindowState.Minimized); } } return(true); }
private void AutoType_FilterSendPre(object sender, AutoTypeEventArgs e) { if (!string.IsNullOrEmpty(this.CurrentPlaceholderResolved) && e.Entry.GetAutoTypeSequence().Contains(this.CurrentPlaceholderResolved)) e.Entry.AutoType.DefaultSequence = e.Entry.AutoType.DefaultSequence.Replace(this.CurrentPlaceholderResolved, PLACEHOLDER); }
private static bool Execute(AutoTypeCtx ctx) { if(ctx == null) { Debug.Assert(false); return false; } string strSeq = ctx.Sequence; PwEntry pweData = ctx.Entry; if(pweData == null) { Debug.Assert(false); return false; } if(!pweData.GetAutoTypeEnabled()) return false; if(!AppPolicy.Try(AppPolicyId.AutoType)) return false; if(KeePassLib.Native.NativeLib.IsUnix()) { if(!NativeMethods.TryXDoTool()) { MessageService.ShowWarning(KPRes.AutoTypeXDoToolRequired, KPRes.PackageInstallHint); return false; } } PwDatabase pwDatabase = ctx.Database; bool bObfuscate = (pweData.AutoType.ObfuscationOptions != AutoTypeObfuscationOptions.None); AutoTypeEventArgs args = new AutoTypeEventArgs(strSeq, bObfuscate, pweData, pwDatabase); if(AutoType.FilterCompilePre != null) AutoType.FilterCompilePre(null, args); args.Sequence = SprEngine.Compile(args.Sequence, new SprContext( pweData, pwDatabase, SprCompileFlags.All, true, false)); // string strError = ValidateAutoTypeSequence(args.Sequence); // if(!string.IsNullOrEmpty(strError)) // { // MessageService.ShowWarning(args.Sequence + // MessageService.NewParagraph + strError); // return false; // } Application.DoEvents(); if(AutoType.FilterSendPre != null) AutoType.FilterSendPre(null, args); if(AutoType.FilterSend != null) AutoType.FilterSend(null, args); if(args.Sequence.Length > 0) { try { SendInputEx.SendKeysWait(args.Sequence, args.SendObfuscated); } catch(Exception excpAT) { MessageService.ShowWarning(args.Sequence + MessageService.NewParagraph + excpAT.Message); } } pweData.Touch(false); EntryUtil.ExpireTanEntryIfOption(pweData, pwDatabase); MainForm mf = Program.MainForm; if(mf != null) { // Always refresh entry list (e.g. {NEWPASSWORD} might // have changed data) mf.RefreshEntriesList(); // SprEngine.Compile might have modified the database; // pd.Modified is set by SprEngine mf.UpdateUI(false, null, false, null, false, null, false); } return true; }
private static bool Execute(string strSeq, PwEntry pweData) { Debug.Assert(strSeq != null); if(strSeq == null) return false; Debug.Assert(pweData != null); if(pweData == null) return false; if(!pweData.GetAutoTypeEnabled()) return false; if(!AppPolicy.Try(AppPolicyId.AutoType)) return false; if(KeePassLib.Native.NativeLib.IsUnix()) { if(!NativeMethods.TryXDoTool()) { MessageService.ShowWarning(KPRes.AutoTypeXDoToolRequired, KPRes.PackageInstallHint); return false; } } PwDatabase pwDatabase = null; try { pwDatabase = Program.MainForm.PluginHost.Database; } catch(Exception) { } bool bObfuscate = (pweData.AutoType.ObfuscationOptions != AutoTypeObfuscationOptions.None); AutoTypeEventArgs args = new AutoTypeEventArgs(strSeq, bObfuscate, pweData); if(AutoType.FilterCompilePre != null) AutoType.FilterCompilePre(null, args); args.Sequence = SprEngine.Compile(args.Sequence, true, pweData, pwDatabase, true, false); string strError = ValidateAutoTypeSequence(args.Sequence); if(strError != null) { MessageService.ShowWarning(strError); return false; } Application.DoEvents(); if(AutoType.FilterSendPre != null) AutoType.FilterSendPre(null, args); if(AutoType.FilterSend != null) AutoType.FilterSend(null, args); if(args.Sequence.Length > 0) { try { SendInputEx.SendKeysWait(args.Sequence, args.SendObfuscated); } catch(Exception excpAT) { MessageService.ShowWarning(excpAT); } } pweData.Touch(false); if(EntryUtil.ExpireTanEntryIfOption(pweData)) Program.MainForm.RefreshEntriesList(); // SprEngine.Compile might have modified the database; // pd.Modified is set by SprEngine Program.MainForm.UpdateUI(false, null, false, null, false, null, false); return true; }
private static bool Execute(AutoTypeCtx ctx) { if (ctx == null) { Debug.Assert(false); return(false); } string strSeq = ctx.Sequence; PwEntry pweData = ctx.Entry; if (pweData == null) { Debug.Assert(false); return(false); } if (!pweData.GetAutoTypeEnabled()) { return(false); } if (!AppPolicy.Try(AppPolicyId.AutoType)) { return(false); } if (KeePassLib.Native.NativeLib.IsUnix()) { if (!NativeMethods.TryXDoTool()) { MessageService.ShowWarning(KPRes.AutoTypeXDoToolRequired, KPRes.PackageInstallHint); return(false); } } PwDatabase pwDatabase = ctx.Database; bool bObfuscate = (pweData.AutoType.ObfuscationOptions != AutoTypeObfuscationOptions.None); AutoTypeEventArgs args = new AutoTypeEventArgs(strSeq, bObfuscate, pweData, pwDatabase); if (AutoType.FilterCompilePre != null) { AutoType.FilterCompilePre(null, args); } args.Sequence = SprEngine.Compile(args.Sequence, new SprContext( pweData, pwDatabase, SprCompileFlags.All, true, false)); // string strError = ValidateAutoTypeSequence(args.Sequence); // if(!string.IsNullOrEmpty(strError)) // { // MessageService.ShowWarning(args.Sequence + // MessageService.NewParagraph + strError); // return false; // } Application.DoEvents(); if (AutoType.FilterSendPre != null) { AutoType.FilterSendPre(null, args); } if (AutoType.FilterSend != null) { AutoType.FilterSend(null, args); } if (args.Sequence.Length > 0) { try { SendInputEx.SendKeysWait(args.Sequence, args.SendObfuscated); } catch (Exception excpAT) { MessageService.ShowWarning(args.Sequence + MessageService.NewParagraph + excpAT.Message); } } pweData.Touch(false); if (EntryUtil.ExpireTanEntryIfOption(pweData, pwDatabase)) { Program.MainForm.RefreshEntriesList(); } // SprEngine.Compile might have modified the database; // pd.Modified is set by SprEngine Program.MainForm.UpdateUI(false, null, false, null, false, null, false); return(true); }
private static bool Execute(string strSeq, PwEntry pweData) { Debug.Assert(strSeq != null); if (strSeq == null) { return(false); } Debug.Assert(pweData != null); if (pweData == null) { return(false); } if (!pweData.GetAutoTypeEnabled()) { return(false); } if (!AppPolicy.Try(AppPolicyId.AutoType)) { return(false); } if (KeePassLib.Native.NativeLib.IsUnix()) { if (!NativeMethods.TryXDoTool()) { MessageService.ShowWarning(KPRes.AutoTypeXDoToolRequired, KPRes.PackageInstallHint); return(false); } } PwDatabase pwDatabase = null; try { pwDatabase = Program.MainForm.PluginHost.Database; } catch (Exception) { } bool bObfuscate = (pweData.AutoType.ObfuscationOptions != AutoTypeObfuscationOptions.None); AutoTypeEventArgs args = new AutoTypeEventArgs(strSeq, bObfuscate, pweData); if (AutoType.FilterCompilePre != null) { AutoType.FilterCompilePre(null, args); } args.Sequence = SprEngine.Compile(args.Sequence, true, pweData, pwDatabase, true, false); string strError = ValidateAutoTypeSequence(args.Sequence); if (strError != null) { MessageService.ShowWarning(strError); return(false); } Application.DoEvents(); if (AutoType.FilterSendPre != null) { AutoType.FilterSendPre(null, args); } if (AutoType.FilterSend != null) { AutoType.FilterSend(null, args); } if (args.Sequence.Length > 0) { try { SendInputEx.SendKeysWait(args.Sequence, args.SendObfuscated); } catch (Exception excpAT) { MessageService.ShowWarning(excpAT); } } pweData.Touch(false); // SprEngine.Compile might have modified the database Program.MainForm.UpdateUI(false, null, false, null, false, null, false); return(true); }