├── .gitignore
├── AutoTypeCustomFieldPicker.plgx
├── AutoTypeCustomFieldPicker.sln
├── AutoTypeCustomFieldPicker
├── AutoTypeCustomFieldPicker.csproj
├── AutoTypeCustomFieldPickerExt.cs
├── DlgPickCustomField.Designer.cs
├── DlgPickCustomField.cs
├── DlgPickCustomField.resx
├── MyFieldObject.cs
├── Properties
│ └── AssemblyInfo.cs
├── Resources
│ └── KeePass.exe
└── UpdateInfo.txt
├── README.md
├── licence.txt
└── plgx_create.bat
/.gitignore:
--------------------------------------------------------------------------------
1 | # Build Folders (you can keep bin if you'd like, to store dlls and pdbs)
2 | [Bb]in/
3 | [Oo]bj/
4 |
5 | # mstest test results
6 | TestResults
7 |
8 | ## Ignore Visual Studio temporary files, build results, and
9 | ## files generated by popular Visual Studio add-ons.
10 |
11 | # User-specific files
12 | *.suo
13 | *.user
14 | *.sln.docstates
15 |
16 | # Build results
17 | [Dd]ebug/
18 | [Rr]elease/
19 | x64/
20 | *_i.c
21 | *_p.c
22 | *.ilk
23 | *.meta
24 | *.obj
25 | *.pch
26 | *.pdb
27 | *.pgc
28 | *.pgd
29 | *.rsp
30 | *.sbr
31 | *.tlb
32 | *.tli
33 | *.tlh
34 | *.tmp
35 | *.log
36 | *.vspscc
37 | *.vssscc
38 | .builds
39 |
40 | # Visual C++ cache files
41 | ipch/
42 | *.aps
43 | *.ncb
44 | *.opensdf
45 | *.sdf
46 |
47 | # Visual Studio profiler
48 | *.psess
49 | *.vsp
50 | *.vspx
51 |
52 | # Guidance Automation Toolkit
53 | *.gpState
54 |
55 | # ReSharper is a .NET coding add-in
56 | _ReSharper*
57 |
58 | # NCrunch
59 | *.ncrunch*
60 | .*crunch*.local.xml
61 |
62 | # Installshield output folder
63 | [Ee]xpress
64 |
65 | # DocProject is a documentation generator add-in
66 | DocProject/buildhelp/
67 | DocProject/Help/*.HxT
68 | DocProject/Help/*.HxC
69 | DocProject/Help/*.hhc
70 | DocProject/Help/*.hhk
71 | DocProject/Help/*.hhp
72 | DocProject/Help/Html2
73 | DocProject/Help/html
74 |
75 | # Click-Once directory
76 | publish
77 |
78 | # Publish Web Output
79 | *.Publish.xml
80 |
81 | # NuGet Packages Directory
82 | packages
83 |
84 | # Windows Azure Build Output
85 | csx
86 | *.build.csdef
87 |
88 | # Windows Store app package directory
89 | AppPackages/
90 |
91 | # Others
92 | [Bb]in
93 | [Oo]bj
94 | sql
95 | TestResults
96 | [Tt]est[Rr]esult*
97 | *.Cache
98 | ClientBin
99 | [Ss]tyle[Cc]op.*
100 | ~$*
101 | *.dbmdl
102 | Generated_Code #added for RIA/Silverlight projects
103 |
104 | # Backup & report files from converting an old project file to a newer
105 | # Visual Studio version. Backup files are not needed, because we have git ;-)
106 | _UpgradeReport_Files/
107 | Backup*/
108 | UpgradeLog*.XML
109 |
--------------------------------------------------------------------------------
/AutoTypeCustomFieldPicker.plgx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/berrnd/KeePassAutoTypeCustomFieldPicker/35006f156190db1fd27a6946789f55e7ab9905e3/AutoTypeCustomFieldPicker.plgx
--------------------------------------------------------------------------------
/AutoTypeCustomFieldPicker.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 11.00
3 | # Visual Studio 2010
4 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AutoTypeCustomFieldPicker", "AutoTypeCustomFieldPicker\AutoTypeCustomFieldPicker.csproj", "{E6AC839D-012F-4339-B6E9-71EDF208720E}"
5 | EndProject
6 | Global
7 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
8 | Debug|Any CPU = Debug|Any CPU
9 | Release|Any CPU = Release|Any CPU
10 | EndGlobalSection
11 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
12 | {E6AC839D-012F-4339-B6E9-71EDF208720E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
13 | {E6AC839D-012F-4339-B6E9-71EDF208720E}.Debug|Any CPU.Build.0 = Debug|Any CPU
14 | {E6AC839D-012F-4339-B6E9-71EDF208720E}.Release|Any CPU.ActiveCfg = Release|Any CPU
15 | {E6AC839D-012F-4339-B6E9-71EDF208720E}.Release|Any CPU.Build.0 = Release|Any CPU
16 | EndGlobalSection
17 | GlobalSection(SolutionProperties) = preSolution
18 | HideSolutionNode = FALSE
19 | EndGlobalSection
20 | EndGlobal
21 |
--------------------------------------------------------------------------------
/AutoTypeCustomFieldPicker/AutoTypeCustomFieldPicker.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Debug
5 | AnyCPU
6 | 8.0.30703
7 | 2.0
8 | {E6AC839D-012F-4339-B6E9-71EDF208720E}
9 | Library
10 | Properties
11 | AutoTypeCustomFieldPicker
12 | AutoTypeCustomFieldPicker
13 | v4.0
14 | 512
15 |
16 |
17 |
18 | true
19 | full
20 | false
21 | bin\Debug\
22 | DEBUG;TRACE
23 | prompt
24 | 4
25 |
26 |
27 | pdbonly
28 | true
29 | bin\Release\
30 | TRACE
31 | prompt
32 | 4
33 |
34 |
35 |
36 | False
37 | .exe
38 | Resources\KeePass.exe
39 | False
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 | Form
51 |
52 |
53 | DlgPickCustomField.cs
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 | DlgPickCustomField.cs
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
81 |
--------------------------------------------------------------------------------
/AutoTypeCustomFieldPicker/AutoTypeCustomFieldPickerExt.cs:
--------------------------------------------------------------------------------
1 | using System.Windows.Forms;
2 | using KeePass.Plugins;
3 | using KeePass.Util;
4 |
5 | namespace AutoTypeCustomFieldPicker
6 | {
7 | public sealed class AutoTypeCustomFieldPickerExt : Plugin
8 | {
9 | private const string PLACEHOLDER = "{PICKCUSTOMFIELD}";
10 | private const string UPDATEURL = "https://raw.github.com/berrnd/KeePassAutoTypeCustomFieldPicker/master/AutoTypeCustomFieldPicker/UpdateInfo.txt";
11 |
12 | private IPluginHost PluginHost = null;
13 | private string CurrentPlaceholderResolved = string.Empty;
14 |
15 | public override bool Initialize(IPluginHost host)
16 | {
17 | this.PluginHost = host;
18 | if (this.PluginHost == null)
19 | return false;
20 |
21 | AutoType.FilterSendPre += this.AutoType_FilterSendPre;
22 | AutoType.SequenceQuery += this.AutoType_SequenceQuery;
23 |
24 | return true;
25 | }
26 |
27 | public override void Terminate()
28 | {
29 | AutoType.FilterSendPre -= this.AutoType_FilterSendPre;
30 | AutoType.SequenceQuery -= this.AutoType_SequenceQuery;
31 | }
32 |
33 | public override string UpdateUrl
34 | {
35 | get { return UPDATEURL; }
36 | }
37 |
38 | private void AutoType_FilterSendPre(object sender, AutoTypeEventArgs e)
39 | {
40 | if (!string.IsNullOrEmpty(this.CurrentPlaceholderResolved) && e.Entry.GetAutoTypeSequence().Contains(this.CurrentPlaceholderResolved))
41 | e.Entry.AutoType.DefaultSequence = e.Entry.AutoType.DefaultSequence.Replace(this.CurrentPlaceholderResolved, PLACEHOLDER);
42 | }
43 |
44 | private void AutoType_SequenceQuery(object sender, SequenceQueryEventArgs e)
45 | {
46 | if (e.Entry.GetAutoTypeSequence().Contains(PLACEHOLDER))
47 | {
48 | DlgPickCustomField picker = new DlgPickCustomField();
49 | picker.PickCustomField(PLACEHOLDER, e.Entry);
50 |
51 | if (picker.DialogResult == DialogResult.OK && picker.SelectedField != null)
52 | {
53 | this.CurrentPlaceholderResolved = picker.SelectedField.Value;
54 | e.Entry.AutoType.DefaultSequence = e.Entry.AutoType.DefaultSequence.Replace(PLACEHOLDER, picker.SelectedField.Value);
55 | }
56 | }
57 | }
58 | }
59 | }
60 |
--------------------------------------------------------------------------------
/AutoTypeCustomFieldPicker/DlgPickCustomField.Designer.cs:
--------------------------------------------------------------------------------
1 | namespace AutoTypeCustomFieldPicker
2 | {
3 | partial class DlgPickCustomField
4 | {
5 | ///
6 | /// Required designer variable.
7 | ///
8 | private System.ComponentModel.IContainer components = null;
9 |
10 | ///
11 | /// Clean up any resources being used.
12 | ///
13 | /// true if managed resources should be disposed; otherwise, false.
14 | protected override void Dispose(bool disposing)
15 | {
16 | if (disposing && (components != null))
17 | {
18 | components.Dispose();
19 | }
20 | base.Dispose(disposing);
21 | }
22 |
23 | #region Windows Form Designer generated code
24 |
25 | ///
26 | /// Required method for Designer support - do not modify
27 | /// the contents of this method with the code editor.
28 | ///
29 | private void InitializeComponent()
30 | {
31 | this.label_PlaceholderInfo = new System.Windows.Forms.Label();
32 | this.listBox_CustomFields = new System.Windows.Forms.ListBox();
33 | this.button_Cancel = new System.Windows.Forms.Button();
34 | this.button_OK = new System.Windows.Forms.Button();
35 | this.SuspendLayout();
36 | //
37 | // label_PlaceholderInfo
38 | //
39 | this.label_PlaceholderInfo.AutoSize = true;
40 | this.label_PlaceholderInfo.Location = new System.Drawing.Point(12, 9);
41 | this.label_PlaceholderInfo.Name = "label_PlaceholderInfo";
42 | this.label_PlaceholderInfo.Size = new System.Drawing.Size(196, 13);
43 | this.label_PlaceholderInfo.TabIndex = 0;
44 | this.label_PlaceholderInfo.Text = "Pick a custom field for placeholder \"{0}\"";
45 | //
46 | // listBox_CustomFields
47 | //
48 | this.listBox_CustomFields.FormattingEnabled = true;
49 | this.listBox_CustomFields.Location = new System.Drawing.Point(15, 25);
50 | this.listBox_CustomFields.Name = "listBox_CustomFields";
51 | this.listBox_CustomFields.Size = new System.Drawing.Size(276, 160);
52 | this.listBox_CustomFields.TabIndex = 1;
53 | this.listBox_CustomFields.DoubleClick += new System.EventHandler(this.listBox_CustomFields_DoubleClick);
54 | //
55 | // button_Cancel
56 | //
57 | this.button_Cancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
58 | this.button_Cancel.Location = new System.Drawing.Point(216, 191);
59 | this.button_Cancel.Name = "button_Cancel";
60 | this.button_Cancel.Size = new System.Drawing.Size(75, 23);
61 | this.button_Cancel.TabIndex = 2;
62 | this.button_Cancel.Text = "Cancel";
63 | this.button_Cancel.UseVisualStyleBackColor = true;
64 | this.button_Cancel.Click += new System.EventHandler(this.button_Cancel_Click);
65 | //
66 | // button_OK
67 | //
68 | this.button_OK.DialogResult = System.Windows.Forms.DialogResult.OK;
69 | this.button_OK.Location = new System.Drawing.Point(135, 191);
70 | this.button_OK.Name = "button_OK";
71 | this.button_OK.Size = new System.Drawing.Size(75, 23);
72 | this.button_OK.TabIndex = 3;
73 | this.button_OK.Text = "OK";
74 | this.button_OK.UseVisualStyleBackColor = true;
75 | this.button_OK.Click += new System.EventHandler(this.button_OK_Click);
76 | //
77 | // DlgPickCustomField
78 | //
79 | this.AcceptButton = this.button_OK;
80 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
81 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
82 | this.CancelButton = this.button_Cancel;
83 | this.ClientSize = new System.Drawing.Size(309, 229);
84 | this.Controls.Add(this.button_OK);
85 | this.Controls.Add(this.button_Cancel);
86 | this.Controls.Add(this.listBox_CustomFields);
87 | this.Controls.Add(this.label_PlaceholderInfo);
88 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
89 | this.MaximizeBox = false;
90 | this.MinimizeBox = false;
91 | this.Name = "DlgPickCustomField";
92 | this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
93 | this.Text = "PickCustomField | KeePass";
94 | this.ResumeLayout(false);
95 | this.PerformLayout();
96 |
97 | }
98 |
99 | #endregion
100 |
101 | private System.Windows.Forms.Label label_PlaceholderInfo;
102 | private System.Windows.Forms.ListBox listBox_CustomFields;
103 | private System.Windows.Forms.Button button_Cancel;
104 | private System.Windows.Forms.Button button_OK;
105 | }
106 | }
--------------------------------------------------------------------------------
/AutoTypeCustomFieldPicker/DlgPickCustomField.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using System.Windows.Forms;
3 | using KeePassLib;
4 | using KeePassLib.Security;
5 |
6 | namespace AutoTypeCustomFieldPicker
7 | {
8 | public partial class DlgPickCustomField : Form
9 | {
10 | public DlgPickCustomField()
11 | {
12 | InitializeComponent();
13 | }
14 |
15 | public MyFieldObject SelectedField;
16 |
17 | public void PickCustomField(string placeholder, PwEntry entry)
18 | {
19 | this.label_PlaceholderInfo.Text = string.Format(this.label_PlaceholderInfo.Text, placeholder);
20 |
21 | foreach (KeyValuePair item in entry.Strings)
22 | this.listBox_CustomFields.Items.Add(new MyFieldObject(item.Key, item.Value.ReadString()));
23 |
24 | this.ShowDialog();
25 | }
26 |
27 | private void button_OK_Click(object sender, System.EventArgs e)
28 | {
29 | if (this.listBox_CustomFields.SelectedItem != null)
30 | this.SelectedField = this.listBox_CustomFields.SelectedItem as MyFieldObject;
31 |
32 | this.Close();
33 | }
34 |
35 | private void listBox_CustomFields_DoubleClick(object sender, System.EventArgs e)
36 | {
37 | if (this.listBox_CustomFields.SelectedItem != null)
38 | this.SelectedField = this.listBox_CustomFields.SelectedItem as MyFieldObject;
39 |
40 | this.DialogResult = DialogResult.OK;
41 | this.Close();
42 | }
43 |
44 | private void button_Cancel_Click(object sender, System.EventArgs e)
45 | {
46 | this.Close();
47 | }
48 | }
49 | }
50 |
--------------------------------------------------------------------------------
/AutoTypeCustomFieldPicker/DlgPickCustomField.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
--------------------------------------------------------------------------------
/AutoTypeCustomFieldPicker/MyFieldObject.cs:
--------------------------------------------------------------------------------
1 | namespace AutoTypeCustomFieldPicker
2 | {
3 | public class MyFieldObject
4 | {
5 | public MyFieldObject(string key, string value)
6 | {
7 | this.Key = key;
8 | this.Value = value;
9 | }
10 |
11 | public string Key { get; set; }
12 | public string Value { get; set; }
13 |
14 | public override string ToString()
15 | {
16 | return this.Key;
17 | }
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/AutoTypeCustomFieldPicker/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // Allgemeine Informationen über eine Assembly werden über die folgenden
6 | // Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern,
7 | // die mit einer Assembly verknüpft sind.
8 | [assembly: AssemblyTitle("AutoTypeCustomFieldPicker")]
9 | [assembly: AssemblyDescription("Pick custom fields in an Auto-Type sequence (similar to {PICKCHARS})")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("Bernd Bestel")]
12 | [assembly: AssemblyProduct("KeePass Plugin")]
13 | [assembly: AssemblyCopyright("Copyright © 2013")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Durch Festlegen von ComVisible auf "false" werden die Typen in dieser Assembly unsichtbar
18 | // für COM-Komponenten. Wenn Sie auf einen Typ in dieser Assembly von
19 | // COM zugreifen müssen, legen Sie das ComVisible-Attribut für diesen Typ auf "true" fest.
20 | [assembly: ComVisible(false)]
21 |
22 | // Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird
23 | [assembly: Guid("c750ebd4-44a1-40a9-9895-7b548c66f9f8")]
24 |
25 | // Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten:
26 | //
27 | // Hauptversion
28 | // Nebenversion
29 | // Buildnummer
30 | // Revision
31 | //
32 | // Sie können alle Werte angeben oder die standardmäßigen Build- und Revisionsnummern
33 | // übernehmen, indem Sie "*" eingeben:
34 | // [assembly: AssemblyVersion("1.0.*")]
35 | [assembly: AssemblyVersion("1.0.0.0")]
36 | [assembly: AssemblyFileVersion("1.0.0.0")]
37 |
--------------------------------------------------------------------------------
/AutoTypeCustomFieldPicker/Resources/KeePass.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/berrnd/KeePassAutoTypeCustomFieldPicker/35006f156190db1fd27a6946789f55e7ab9905e3/AutoTypeCustomFieldPicker/Resources/KeePass.exe
--------------------------------------------------------------------------------
/AutoTypeCustomFieldPicker/UpdateInfo.txt:
--------------------------------------------------------------------------------
1 | :
2 | AutoTypeCustomFieldPicker:1.0.0.0
3 | :
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | KeePassAutoTypeCustomFieldPicker
2 | ================================
3 |
4 | Pick custom fields in an Auto-Type sequence (similar to `{PICKCHARS}`)
5 |
6 | Purpose
7 | -------
8 | On some sites, particularly banking related sites, there are login forms where you have to enter "The answer for security question 3 out of 5".
9 | In KeePass, you probably have stored these answers in custom fields.
10 |
11 | With the current `{PICKCHARS}` placeholder you can pick single chars out of a field.
12 | But for this use case you need a placeholder for a complete field value.
13 |
14 | Usage
15 | -----
16 | Just use the new placeholder `{PICKCUSTOMFIELD}` in an Auto-Type sequence.
17 | When you execute such a sequence, a window will popup and let you choose a custom field (just like `{PICKCHARS}` does).
18 | The value of the picked custom field will be replaced in the Auto-Type sequence.
19 |
20 | Installation
21 | -------------
22 | Just download the AutoTypeCustomFieldPicker.plgx file (see files above or [click here](https://github.com/berrnd/KeePassAutoTypeCustomFieldPicker/raw/master/AutoTypeCustomFieldPicker.plgx)), copy it to the KeePass application directory and restart KeePass.
23 |
24 | Limitations
25 | ------------
26 | - If you use `{PICKCUSTOMFIELD}` more than once in an Auto-Type sequence, the picker will only popup once und all placeholders will be replaced with the same value of the selected custom field (something like `{PICKCHARS:Password:ID=1}` is currently not implemented).
27 |
28 | ####Warning
29 | This is a "quick & dirty" implementation.
30 | But it works and will not harm your KeePass database or something like that.
31 | But anyways, use it at your own risk.
32 |
33 | ####Licence
34 | GPL v3 or later
35 |
--------------------------------------------------------------------------------
/licence.txt:
--------------------------------------------------------------------------------
1 | KeePassAutoTypeCustomFieldPicker is free software: you can redistribute it and/or modify
2 | it under the terms of the GNU General Public License as published by
3 | the Free Software Foundation, either version 3 of the License, or
4 | (at your option) any later version.
5 |
6 | KeePassAutoTypeCustomFieldPicker is distributed in the hope that it will be useful,
7 | but WITHOUT ANY WARRANTY; without even the implied warranty of
8 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9 | GNU General Public License for more details.
10 |
11 | You should have received a copy of the GNU General Public License
12 | along with KeePassAutoTypeCustomFieldPicker (GPL.txt). If not, see http://www.gnu.org/licenses/.
13 |
14 |
15 |
16 | KeePassAutoTypeCustomFieldPicker ist Freie Software: Sie können es unter den Bedingungen
17 | der GNU General Public License, wie von der Free Software Foundation,
18 | Version 3 der Lizenz oder (nach Ihrer Option) jeder späteren
19 | veröffentlichten Version, weiterverbreiten und/oder modifizieren.
20 |
21 | KeePassAutoTypeCustomFieldPicker wird in der Hoffnung, dass es nützlich sein wird, aber
22 | OHNE JEDE GEWÄHRLEISTUNG, bereitgestellt; sogar ohne die implizite
23 | Gewährleistung der MARKTFÄHIGKEIT oder EIGNUNG FÜR EINEN BESTIMMTEN ZWECK.
24 | Siehe die GNU General Public License für weitere Details.
25 |
26 | Sie sollten eine Kopie der GNU General Public License zusammen mit KeePassAutoTypeCustomFieldPicker
27 | erhalten haben (GPL.txt). Wenn nicht, siehe http://www.gnu.org/licenses/.
--------------------------------------------------------------------------------
/plgx_create.bat:
--------------------------------------------------------------------------------
1 | rem del AutoTypeCustomFieldPicker.plgx
2 | rem robocopy . .\AutoTypeCustomFieldPicker_Temp *.* /MIR
3 | rem
4 | rem rd /s /q AutoTypeCustomFieldPicker_Temp\AutoTypeCustomFieldPicker_Temp
5 | rem rd /s /q AutoTypeCustomFieldPicker_Temp\AutoTypeCustomFieldPicker\obj
6 | rem rd /s /q AutoTypeCustomFieldPicker_Temp\AutoTypeCustomFieldPicker\bin
7 | rem rd /s /q AutoTypeCustomFieldPicker_Temp\AutoTypeCustomFieldPicker\Resources
8 | rem
9 | rem AutoTypeCustomFieldPicker\Resources\KeePass.exe --plgx-create "AutoTypeCustomFieldPicker_Temp"
10 | rem ren AutoTypeCustomFieldPicker_Temp.plgx AutoTypeCustomFieldPicker.plgx
11 | rem
12 | rem rd /s /q AutoTypeCustomFieldPicker_Temp
13 |
14 | AutoTypeCustomFieldPicker\Resources\KeePass.exe --plgx-create
--------------------------------------------------------------------------------