Shifting the Code further. Clear Logs --> Save and Clear Logs and Delete Old Logs Menu Option Added
This commit is contained in:
parent
baf50c4db3
commit
f899e1bec1
298
main.frm
298
main.frm
|
@ -11337,7 +11337,7 @@ object Form1: TForm1
|
|||
end
|
||||
object TrayIcon3: TTrayIcon
|
||||
PopUpMenu = PopupMenu2
|
||||
Hint = 'External Events Log Status'
|
||||
Hint = 'Events Log Status'
|
||||
Visible = True
|
||||
OnClick = TrayIcon3Click
|
||||
Left = 400
|
||||
|
@ -11482,6 +11482,302 @@ object Form1: TForm1
|
|||
}
|
||||
OnClick = MenuItem12Click
|
||||
end
|
||||
object MenuItem34: TMenuItem
|
||||
Caption = 'Delete Old Logs'
|
||||
Bitmap.Data = {
|
||||
36240000424D3624000000000000360000002800000030000000300000000100
|
||||
2000000000000024000064000000640000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000100000004000000060000
|
||||
00090000000C0000000E0000000F000000120000001300000014000000140000
|
||||
0013000000120000000F0000000E0000000C0000000900000006000000040000
|
||||
0001000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
00050000000B00000010000000150000001A0000001F00000024000000280000
|
||||
002D000000310000003400000037000000390000003B0000003C0000003C0000
|
||||
003B000000390000003700000034000000310000002D00000028000000240000
|
||||
001F0000001A00000015000000100000000B0000000500000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000002000000090000
|
||||
000F00000015A2938AC9A8988FFFA8988FFFA8988FFFA8988FFFA8988FFFA898
|
||||
8FFFA8988FFFA8988FFFA8988FFFA8988FFFA8988FFFA8988FFFA8988FFFA898
|
||||
8FFFA8988FFFA8988FFFA8988FFFA8988FFFA8988FFFA8988FFFA8988FFFA898
|
||||
8FFFA8988FFFA8988FFFA3948BC8000000150000000F00000009000000020000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
00050000000BA8988FFFA8988FFFA8988FFFA8988FFFA8988FFFA8988FFFA898
|
||||
8FFFA8988FFFA8988FFFA8988FFFA8988FFFA8988FFFA8988FFFA8988FFFA898
|
||||
8FFFA8988FFFA8988FFFA8988FFFA8988FFFA8988FFFA8988FFFA8988FFFA898
|
||||
8FFFA8988FFFA8988FFFA8988FFF0000000B0000000500000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
000000000000A8988FFFA8988FFFA8988FFFA8988FFFA8988FFFA8988FFFA898
|
||||
8FFFA8988FFFA8988FFFA8988FFFA8988FFFA8988FFFA8988FFFA8988FFFA898
|
||||
8FFFA8988FFFA8988FFFA8988FFFA8988FFFA8988FFFA8988FFFA8988FFFA898
|
||||
8FFFA8988FFFA8988FFFA8988FFF000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
000000000000A8988FFFA8988FFFA8988FFFA8988FFF8E7C72FF857368FF8573
|
||||
68FF8D7B71FFA8988FFFA8988FFFA8988FFF8E7C72FF857368FF857368FF8D7B
|
||||
71FFA8988FFFA8988FFFA8988FFF8E7C72FF857368FF857368FF8D7B71FFA898
|
||||
8FFFA8988FFFA8988FFFA8988FFF000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
000000000000A8988FFFA8988FFFA8988FFFA8988FFF857368FF857368FF8573
|
||||
68FF857368FFA8988FFFA8988FFFA8988FFF857368FF857368FF857368FF8573
|
||||
68FFA8988FFFA8988FFFA8988FFF857368FF857368FF857368FF857368FFA898
|
||||
8FFFA8988FFFA8988FFFA8988FFF000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
000000000000A8988FFFA8988FFFA8988FFFA8988FFF857368FF857368FF8573
|
||||
68FF857368FFA8988FFFA8988FFFA8988FFF857368FF857368FF857368FF8573
|
||||
68FFA8988FFFA8988FFFA8988FFF857368FF857368FF857368FF857368FFA898
|
||||
8FFFA8988FFFA8988FFFA8988FFF000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
000000000000A8988FFFA8988FFFA8988FFFA8988FFF857368FF857368FF8573
|
||||
68FF857368FFA8988FFFA8988FFFA8988FFF857368FF857368FF857368FF8573
|
||||
68FFA8988FFFA8988FFFA8988FFF857368FF857368FF857368FF857368FFA898
|
||||
8FFFA8988FFFA8988FFFA8988FFF000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
000000000000A8988FFFA8988FFFA8988FFFA8988FFF857368FF857368FF8573
|
||||
68FF857368FFA8988FFFA8988FFFA8988FFF857368FF857368FF857368FF8573
|
||||
68FFA8988FFFA8988FFFA8988FFF857368FF857368FF857368FF857368FFA898
|
||||
8FFFA8988FFFA8988FFFA8988FFF000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
000000000000A8988FFFA8988FFFA8988FFFA8988FFF857368FF857368FF8573
|
||||
68FF857368FFA8988FFFA8988FFFA8988FFF857368FF857368FF857368FF8573
|
||||
68FFA8988FFFA8988FFFA8988FFF857368FF857368FF857368FF857368FFA898
|
||||
8FFFA8988FFFA8988FFFA8988FFF000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
000000000000A8988FFFA8988FFFA8988FFFA8988FFF857368FF857368FF8573
|
||||
68FF857368FFA8988FFFA8988FFFA8988FFF857368FF857368FF857368FF8573
|
||||
68FFA8988FFFA8988FFFA8988FFF857368FF857368FF857368FF857368FFA898
|
||||
8FFFA8988FFFA8988FFFA8988FFF000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
000000000000A8988FFFA8988FFFA8988FFFA8988FFF857368FF857368FF8573
|
||||
68FF857368FFA8988FFFA8988FFFA8988FFF857368FF857368FF857368FF8573
|
||||
68FFA8988FFFA8988FFFA8988FFF857368FF857368FF857368FF857368FFA898
|
||||
8FFFA8988FFFA8988FFFA8988FFF000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
000000000000A8988FFFA8988FFFA8988FFFA8988FFF857368FF857368FF8573
|
||||
68FF857368FFA8988FFFA8988FFFA8988FFF857368FF857368FF857368FF8573
|
||||
68FFA8988FFFA8988FFFA8988FFF857368FF857368FF857368FF857368FFA898
|
||||
8FFFA8988FFFA8988FFFA8988FFF000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
000000000000A8988FFFA8988FFFA8988FFFA8988FFF857368FF857368FF8573
|
||||
68FF857368FFA8988FFFA8988FFFA8988FFF857368FF857368FF857368FF8573
|
||||
68FFA8988FFFA8988FFFA8988FFF857368FF857368FF857368FF857368FFA898
|
||||
8FFFA8988FFFA8988FFFA8988FFF000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
000000000000A8988FFFA8988FFFA8988FFFA8988FFF857368FF857368FF8573
|
||||
68FF857368FFA8988FFFA8988FFFA8988FFF857368FF857368FF857368FF8573
|
||||
68FFA8988FFFA8988FFFA8988FFF857368FF857368FF857368FF857368FFA898
|
||||
8FFFA8988FFFA8988FFFA8988FFF000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
000000000000A8988FFFA8988FFFA8988FFFA8988FFF857368FF857368FF8573
|
||||
68FF857368FFA8988FFFA8988FFFA8988FFF857368FF857368FF857368FF8573
|
||||
68FFA8988FFFA8988FFFA8988FFF857368FF857368FF857368FF857368FFA898
|
||||
8FFFA8988FFFA8988FFFA8988FFF000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
000000000000A8988FFFA8988FFFA8988FFFA8988FFF857368FF857368FF8573
|
||||
68FF857368FFA8988FFFA8988FFFA8988FFF857368FF857368FF857368FF8573
|
||||
68FFA8988FFFA8988FFFA8988FFF857368FF857368FF857368FF857368FFA898
|
||||
8FFFA8988FFFA8988FFFA8988FFF000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
000000000000A8988FFFA8988FFFA8988FFFA8988FFF857368FF857368FF8573
|
||||
68FF857368FFA8988FFFA8988FFFA8988FFF857368FF857368FF857368FF8573
|
||||
68FFA8988FFFA8988FFFA8988FFF857368FF857368FF857368FF857368FFA898
|
||||
8FFFA8988FFFA8988FFFA8988FFF000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
000000000000A8988FFFA8988FFFA8988FFFA8988FFF857368FF857368FF8573
|
||||
68FF857368FFA8988FFFA8988FFFA8988FFF857368FF857368FF857368FF8573
|
||||
68FFA8988FFFA8988FFFA8988FFF857368FF857368FF857368FF857368FFA898
|
||||
8FFFA8988FFFA8988FFFA8988FFF000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
000000000000A8988FFFA8988FFFA8988FFFA8988FFF857368FF857368FF8573
|
||||
68FF857368FFA8988FFFA8988FFFA8988FFF857368FF857368FF857368FF8573
|
||||
68FFA8988FFFA8988FFFA8988FFF857368FF857368FF857368FF857368FFA898
|
||||
8FFFA8988FFFA8988FFFA8988FFF000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
000000000000A8988FFFA8988FFFA8988FFFA8988FFF857368FF857368FF8573
|
||||
68FF857368FFA8988FFFA8988FFFA8988FFF857368FF857368FF857368FF8573
|
||||
68FFA8988FFFA8988FFFA8988FFF857368FF857368FF857368FF857368FFA898
|
||||
8FFFA8988FFFA8988FFFA8988FFF000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
000000000000A8988FFFA8988FFFA8988FFFA8988FFF857368FF857368FF8573
|
||||
68FF857368FFA8988FFFA8988FFFA8988FFF857368FF857368FF857368FF8573
|
||||
68FFA8988FFFA8988FFFA8988FFF857368FF857368FF857368FF857368FFA898
|
||||
8FFFA8988FFFA8988FFFA8988FFF000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
000000000000988981FF988981FF988981FF988981FF78685EFF78685EFF7868
|
||||
5EFF78685EFF988981FF988981FF988981FF78685EFF78685EFF78685EFF7868
|
||||
5EFF988981FF988981FF988981FF78685EFF78685EFF78685EFF78685EFF9889
|
||||
81FF988981FF988981FF988981FF000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
000000000000988981FF988981FF988981FF988981FF7F7066FF78685EFF7868
|
||||
5EFF807067FF988981FF988981FF988981FF7F7066FF78685EFF78685EFF8070
|
||||
67FF988981FF988981FF988981FF7F7066FF78685EFF78685EFF807067FF9889
|
||||
81FF988981FF988981FF988981FF000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
000000000000988981FF988981FF988981FF988981FF988981FF988981FF9889
|
||||
81FF988981FF988981FF988981FF988981FF988981FF988981FF988981FF9889
|
||||
81FF988981FF988981FF988981FF988981FF988981FF988981FF988981FF9889
|
||||
81FF988981FF988981FF988981FF000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
000000000000988981FF988981FF988981FF988981FF988981FF988981FF9889
|
||||
81FF988981FF988981FF988981FF988981FF988981FF988981FF988981FF9889
|
||||
81FF988981FF988981FF988981FF988981FF988981FF988981FF988981FF9889
|
||||
81FF988981FF988981FF988981FF000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
000000000000988981FF988981FF988981FF988981FF988981FF988981FF9889
|
||||
81FF988981FF988981FF988981FF988981FF988981FF988981FF988981FF9889
|
||||
81FF988981FF988981FF988981FF988981FF988981FF988981FF988981FF9889
|
||||
81FF988981FF988981FF988981FF000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
00000000000000000000000000000000000000000000C5B6B0E6C5B6B0FFC5B6
|
||||
B0FFC5B6B0FFC5B6B0FFC5B6B0FFC5B6B0FFC5B6B0FFC5B6B0FFC5B6B0FFC5B6
|
||||
B0FFC5B6B0FFC5B6B0FFC5B6B0FFC5B6B0FFC5B6B0FFC5B6B0FFC5B6B0FFC5B6
|
||||
B0FFC5B6B0FFC5B6B0FFC5B6B0FFC5B6B0FFC5B6B0FFC5B6B0FFC5B6B0FFC5B6
|
||||
B0FFC5B6B0FFC5B6B0FFC5B6B0FFC5B6B0FFC5B6B0FFC5B6B0FFC4B6B0E70000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
00000000000000000000000000000000000000000000C6B5AFADC5B6B0FFC5B6
|
||||
B0FFC5B6B0FFC5B6B0FFC5B6B0FFC5B6B0FFC5B6B0FFC5B6B0FFC5B6B0FFC5B6
|
||||
B0FFC5B6B0FFC5B6B0FFC5B6B0FFC5B6B0FFC5B6B0FFC5B6B0FFC5B6B0FFC5B6
|
||||
B0FFC5B6B0FFC5B6B0FFC5B6B0FFC5B6B0FFC5B6B0FFC5B6B0FFC5B6B0FFC5B6
|
||||
B0FFC5B6B0FFC5B6B0FFC5B6B0FFC5B6B0FFC5B6B0FFC5B6B0FFC6B5AFAD0000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
00000000000000000000000000000000000000000000C6B4B03AC5B6B0FFC5B6
|
||||
B0FFC5B6B0FFC5B6B0FFC5B6B0FFC5B6B0FFC5B6B0FFC5B6B0FFC5B6B0FFC5B6
|
||||
B0FFC5B6B0FFC5B6B0FFC5B6B0FFC5B6B0FFC5B6B0FFC5B6B0FFC5B6B0FFC5B6
|
||||
B0FFC5B6B0FFC5B6B0FFC5B6B0FFC5B6B0FFC5B6B0FFC5B6B0FFC5B6B0FFC5B6
|
||||
B0FFC5B6B0FFC5B6B0FFC5B6B0FFC5B6B0FFC5B6B0FFC5B6B0FFC5B5B13E0000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000C5B6B0ABC5B6
|
||||
B0FFC5B6B0FFC5B6B0FFC5B6B0FFC5B6B0FFC5B6B0FFC5B6B0FFC5B6B0FFC5B6
|
||||
B0FFC5B6B0FFC5B6B0FFC5B6B0FFC5B6B0FFC5B6B0FFC5B6B0FFC5B6B0FFC5B6
|
||||
B0FFC5B6B0FFC5B6B0FFC5B6B0FFC5B6B0FFC5B6B0FFC5B6B0FFC5B6B0FFC5B6
|
||||
B0FFC5B6B0FFC5B6B0FFC5B6B0FFC5B6B0FFC5B6B0FFC5B6B0AB000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000C4B1B10DC5B5
|
||||
B0C2C5B6B0FFC5B6B0FFC5B6B0FFC5B6B0FFC5B6B0FFC5B6B0FFC5B6B0FFC5B6
|
||||
B0FFC5B6B0FFC5B6B0FFC5B6B0FFC5B6B0FFC5B6B0FFC5B6B0FFC5B6B0FFC5B6
|
||||
B0FFC5B6B0FFC5B6B0FFC5B6B0FFC5B6B0FFC5B6B0FFC5B6B0FFC5B6B0FFC5B6
|
||||
B0FFC5B6B0FFC5B6B0FFC5B6B0FFC5B6B0FFC5B5B0C2C4B1B10D000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
000000000000000000000000000000000000000000000000000000000000A898
|
||||
8FFFA8988FFFA8988FFF00000000000000000000000000000000000000000000
|
||||
00000000000000000000A8988FFFA8988FFFA8988FFF00000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
000000000000000000000000000000000000000000000000000000000000A898
|
||||
8FFFA8988FFFA8988FFF00000000000000000000000000000000000000000000
|
||||
00000000000000000000A8988FFFA8988FFFA8988FFF00000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
000000000000000000000000000000000000000000000000000000000000A898
|
||||
8FFFA8988FFFA8988FFFA5968F22000000000000000000000000000000000000
|
||||
000000000000A5968F22A8988FFFA8988FFFA8988FFF00000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
000000000000000000000000000000000000000000000000000000000000A898
|
||||
8FFFA8988FFFA8988FFFA8988FC2A5968F220000000000000000000000000000
|
||||
0000A5968F22A8988FC2A8988FFFA8988FFFA8988FFF00000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
000000000000000000000000000000000000000000000000000000000000A898
|
||||
8FDDA8988FFFA8988FFFA8988FFFA8988FFFA8988FFFA8988FFFA8988FFFA898
|
||||
8FFFA8988FFFA8988FFFA8988FFFA8988FFFA8988FDD00000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
000000000000000000000000000000000000000000000000000000000000A796
|
||||
8E3DA8988FDDA8988FFFA8988FFFA8988FFFA8988FFFA8988FFFA8988FFFA898
|
||||
8FFFA8988FFFA8988FFFA8988FFFA8988FDDA7968E3D00000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000
|
||||
}
|
||||
OnClick = MenuItem34Click
|
||||
end
|
||||
object MenuItem13: TMenuItem
|
||||
Caption = 'Clear Logs'
|
||||
Bitmap.Data = {
|
||||
|
|
1
main.lrj
1
main.lrj
|
@ -13,6 +13,7 @@
|
|||
{"hash":4691652,"name":"tform1.menuitem9.caption","sourcebytes":[65,98,111,117,116],"value":"About"},
|
||||
{"hash":315140,"name":"tform1.menuitem10.caption","sourcebytes":[69,120,105,116],"value":"Exit"},
|
||||
{"hash":110464019,"name":"tform1.menuitem12.caption","sourcebytes":[83,104,111,119,32,76,111,103,115],"value":"Show Logs"},
|
||||
{"hash":11479619,"name":"tform1.menuitem34.caption","sourcebytes":[68,101,108,101,116,101,32,79,108,100,32,76,111,103,115],"value":"Delete Old Logs"},
|
||||
{"hash":138516307,"name":"tform1.menuitem13.caption","sourcebytes":[67,108,101,97,114,32,76,111,103,115],"value":"Clear Logs"},
|
||||
{"hash":157543397,"name":"tform1.menuitem19.caption","sourcebytes":[77,105,99,114,111,112,104,111,110,101],"value":"Microphone"},
|
||||
{"hash":347301,"name":"tform1.menuitem20.caption","sourcebytes":[77,117,116,101],"value":"Mute"},
|
||||
|
|
663
main.pas
663
main.pas
|
@ -18,8 +18,9 @@ uses
|
|||
cthreads,
|
||||
{$ENDIF}
|
||||
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ExtCtrls, StdCtrls,
|
||||
Menus, PopupNotifier, UTF8Process, VpClock, Unix, process, About, Logs,
|
||||
Reboot, RebootDialog, DateUtils, LCLType, LCLTranslator;
|
||||
Menus, PopupNotifier, UTF8Process, ECSpinCtrls, TplTimerUnit, EpikTimer,
|
||||
VpClock, Unix, process, About, Logs, Reboot, RebootDialog, DateUtils, LCLType,
|
||||
LCLTranslator;
|
||||
|
||||
type
|
||||
|
||||
|
@ -59,6 +60,7 @@ type
|
|||
MenuItem31 : TMenuItem;
|
||||
MenuItem32 : TMenuItem;
|
||||
MenuItem33 : TMenuItem;
|
||||
MenuItem34: TMenuItem;
|
||||
MenuItem35 : TMenuItem;
|
||||
MenuItem39 : TMenuItem;
|
||||
MenuItem4 : TMenuItem;
|
||||
|
@ -88,6 +90,7 @@ type
|
|||
PopupNotifier8 : TPopupNotifier;
|
||||
PopupNotifier9 : TPopupNotifier;
|
||||
ProcessUTF8_1 : TProcessUTF8;
|
||||
Timer1 : TTimer;
|
||||
TrayIcon1 : TTrayIcon;
|
||||
TrayIcon2 : TTrayIcon;
|
||||
TrayIcon3 : TTrayIcon;
|
||||
|
@ -104,6 +107,7 @@ type
|
|||
procedure MenuItem31Click(Sender: TObject);
|
||||
procedure MenuItem32Click(Sender: TObject);
|
||||
procedure MenuItem33Click(Sender: TObject);
|
||||
procedure MenuItem34Click(Sender: TObject);
|
||||
procedure MenuItem3Click(Sender: TObject);
|
||||
procedure MenuItem4Click(Sender: TObject);
|
||||
procedure MenuItem6Click(Sender: TObject);
|
||||
|
@ -368,14 +372,14 @@ begin
|
|||
//write('m = ');
|
||||
//write(m);
|
||||
if CompareText(AStringList.Strings[n - 1], AStringList.Strings[n]) < 0 then
|
||||
Inc(l); // when l > m + 1 --> webcam captures ---> GetCameraSatus procedure below, is rewriten
|
||||
Inc(l); // when l < m - 1 --> webcam captures ---> GetCameraSatus procedure below, is rewriten
|
||||
//write(', l = '); // when l = m --> webcam on
|
||||
//writeln(l); // when V4L2Val = - 1 --> webcam off
|
||||
end;
|
||||
|
||||
VideoCardsCountNumber := l - m;
|
||||
|
||||
if (l >= m + 1) then
|
||||
if (l <= m + 1) then
|
||||
CaptureStatus := 1;
|
||||
|
||||
if (l = m) then
|
||||
|
@ -508,6 +512,7 @@ begin
|
|||
|
||||
if CamStatus = 2 then // -> Camera is Capturing
|
||||
begin
|
||||
ActionTime := now;
|
||||
PopUpWebcamCaptures;
|
||||
PopUpWebcamCaptStatus := true;
|
||||
ImageListCam1.GetIcon(1, TrayIcon5.Icon);
|
||||
|
@ -516,9 +521,6 @@ begin
|
|||
CamClicked := false;
|
||||
CamClicksCounter := 0;
|
||||
CamSavedStatus := 2;
|
||||
Logs.Form3.StringGrid1.InsertRowWithValues ( GridLine,[IntToStr(GridLine), FormatDateTime('dd/mm/yyyy, ', ActionTime)
|
||||
+ RightStr(DateTimeToStr(VPClock1.Time), 8), 'Camera is Captuting', IntToStr(VideoDevicesNumber)]);
|
||||
Inc(GridLine);
|
||||
end;
|
||||
|
||||
GetMicCaptureStatus;
|
||||
|
@ -624,9 +626,84 @@ begin
|
|||
Logs.Form3.Show;
|
||||
end;
|
||||
|
||||
procedure TForm1.MenuItem13Click(Sender: TObject); //ClearLogs;
|
||||
procedure DeleteOldLogs;
|
||||
var
|
||||
SearchResult : TSearchRec;
|
||||
LogsFilesList : TStringlist;
|
||||
DateString : String;
|
||||
|
||||
begin
|
||||
ImageListStatus.GetIcon(0, TrayIcon3.Icon);
|
||||
LogsFilesList := TStringList.Create;
|
||||
LogsFilesList.Clear;
|
||||
HomeDir := expandfilename('~/');
|
||||
DateString := FormatDateTime('DD/MM/YYYY-hh-mm-ss',now);
|
||||
FileDestDir := Concat(HomeDir,'.cameracontrol-', DateString, '.log');
|
||||
|
||||
if FindFirst(Concat(HomeDir,'.cameracontrol-*'), FaAnyFile, SearchResult) = 0 then
|
||||
begin
|
||||
repeat
|
||||
S := FpSystem(Concat('rm ', HomeDir, SearchResult.Name));
|
||||
LogsFilesList.Add(SearchResult.Name + ' Deleted');
|
||||
until FindNext(SearchResult) <> 0;
|
||||
|
||||
FindClose(SearchResult);
|
||||
|
||||
if LogsFilesList.Count >= 1 then
|
||||
ShowMessage('The following Old Log Filenames were deleted:' + sLineBreak + LogsFilesList.Text)
|
||||
else
|
||||
ShowMessage('There were not detected any Old Log Filenames');
|
||||
end;
|
||||
|
||||
LogsFilesList.Free;
|
||||
end;
|
||||
|
||||
procedure SaveLogs;
|
||||
var
|
||||
n : Integer;
|
||||
LogsStringList : TStringlist;
|
||||
DateString : String;
|
||||
|
||||
begin
|
||||
HomeDir := expandfilename('~/');
|
||||
DateString := FormatDateTime('DD/MM/YYYY-hh-mm-ss',now);
|
||||
FileDestDir := Concat(HomeDir,'.cameracontrol-', DateString, '.log');
|
||||
|
||||
LogsStringList := TStringList.Create;
|
||||
LogsStringList.Clear;
|
||||
|
||||
n := 0;
|
||||
|
||||
while n <= Logs.Form3.StringGrid1.RowCount - 1 do
|
||||
begin
|
||||
if Length(Form3.StringGrid1.Rows[n].Strings[0]) > 0 then
|
||||
LogsStringList.Add(Concat(Form3.StringGrid1.Rows[n].Strings[0],',', Form3.StringGrid1.Rows[n].Strings[1],',', Form3.StringGrid1.Rows[n].Strings[2],',' , Form3.StringGrid1.Rows[n].Strings[3]));
|
||||
Inc(n);
|
||||
end;
|
||||
|
||||
ShowMessage(LogsStringList.Text);
|
||||
|
||||
n:= 0;
|
||||
|
||||
while n <= LogsStringList.Count - 1 do
|
||||
begin
|
||||
FileString := LogsStringList.Strings[n];
|
||||
S := FpSystem(Concat('echo ' , FileString, ' >> ', FileDestDir));
|
||||
Inc(n);
|
||||
end;
|
||||
|
||||
LogsStringList.Free;
|
||||
end;
|
||||
|
||||
procedure TForm1.MenuItem34Click(Sender: TObject);
|
||||
begin
|
||||
DeleteOldLogs;
|
||||
end;
|
||||
|
||||
procedure TForm1.MenuItem13Click(Sender: TObject); //Save Current and Clear Logs;
|
||||
|
||||
begin
|
||||
SaveLogs;
|
||||
|
||||
Logs.Form3.StringGrid1.Clean;
|
||||
GridLine := 1;
|
||||
Logs.Form3.StringGrid1.InsertRowWithValues(0,['Number','DateTime Stamp', 'Event Description', 'Video Devices Number']);
|
||||
|
@ -636,7 +713,7 @@ begin
|
|||
if MicClicked then
|
||||
MicClicked := false;
|
||||
|
||||
//CamClicksCounter := 1;
|
||||
CamClicksCounter := 1;
|
||||
end;
|
||||
|
||||
procedure TForm1.MenuItem27Click(Sender: TObject); // Blaclist Camera and Reboot
|
||||
|
@ -1064,266 +1141,324 @@ begin
|
|||
VideoCapt := true;
|
||||
end;
|
||||
|
||||
procedure TForm1.VpClock1SecondChange(Sender: TObject); // Check Statuses and External Events Notifications and Logs
|
||||
procedure CheckEvents; // Check Statuses and External Events Notifications and Logs
|
||||
var
|
||||
HackedTime : TDateTime;
|
||||
// Str : String;
|
||||
|
||||
begin
|
||||
with Form1 do
|
||||
begin
|
||||
|
||||
if FromMain = true then
|
||||
begin
|
||||
ActionTime := now;
|
||||
Logs.Form3.StringGrid1.InsertRowWithValues ( GridLine,[IntToStr(GridLine), FormatDateTime('dd/mm/yyyy, ', ActionTime)
|
||||
+ RightStr(DateTimeToStr(ActionTime), 8), 'Application Started', ' ']);
|
||||
Inc(GridLine);
|
||||
// Reload Final Icons... (cthreads, and -O3 build level not enough? lol)
|
||||
ImageListCam1.GetIcon(CameraIcon, TrayIcon5.Icon);
|
||||
ImageListStatus.GetIcon(0, TrayIcon3.Icon);
|
||||
ImageListCam.GetIcon(2, TrayIcon1.Icon);
|
||||
ImageListMic.GetIcon(MicIcon, TrayIcon2.Icon);
|
||||
ImageListSystem.GetIcon(0, TrayIcon4.Icon);
|
||||
|
||||
if CamStatus = 0 then
|
||||
begin
|
||||
ActionTime := now;
|
||||
Logs.Form3.StringGrid1.InsertRowWithValues ( GridLine,[IntToStr(GridLine), FormatDateTime('dd/mm/yyyy, ', ActionTime)
|
||||
+ RightStr(DateTimeToStr(ActionTime), 8), 'Camera is Off', IntToStr(VideoDevicesNumber)]);
|
||||
Inc(GridLine);
|
||||
end;
|
||||
|
||||
if CamStatus = 1 then
|
||||
begin
|
||||
ActionTime := now;
|
||||
Logs.Form3.StringGrid1.InsertRowWithValues ( GridLine,[IntToStr(GridLine), FormatDateTime('dd/mm/yyyy, ', ActionTime)
|
||||
+ RightStr(DateTimeToStr(ActionTime), 8), 'Camera is On', IntToStr(VideoDevicesNumber)]);
|
||||
Inc(GridLine);
|
||||
end;
|
||||
|
||||
if CamStatus = 2 then
|
||||
begin
|
||||
ActionTime := now;
|
||||
Logs.Form3.StringGrid1.InsertRowWithValues ( GridLine,[IntToStr(GridLine), FormatDateTime('dd/mm/yyyy, ', ActionTime)
|
||||
+ RightStr(DateTimeToStr(ActionTime), 8), 'Camera is Captuting', IntToStr(VideoDevicesNumber)]);
|
||||
Inc(GridLine);
|
||||
end;
|
||||
|
||||
If MicStatus = true then
|
||||
begin
|
||||
ActionTime := now;
|
||||
Logs.Form3.StringGrid1.InsertRowWithValues ( GridLine,[IntToStr(GridLine), FormatDateTime('dd/mm/yyyy, ', ActionTime)
|
||||
+ RightStr(DateTimeToStr(ActionTime), 8), 'Microphone is Unmuted', IntToStr(VideoDevicesNumber)]);
|
||||
Inc(GridLine);
|
||||
end;
|
||||
|
||||
If MicStatus = false then
|
||||
begin
|
||||
ActionTime := now;
|
||||
Logs.Form3.StringGrid1.InsertRowWithValues ( GridLine,[IntToStr(GridLine), FormatDateTime('dd/mm/yyyy, ', ActionTime)
|
||||
+ RightStr(DateTimeToStr(ActionTime), 8), 'Microphone is Muted', IntToStr(VideoDevicesNumber)]);
|
||||
Inc(GridLine);
|
||||
end;
|
||||
|
||||
FromMain := false;
|
||||
end;
|
||||
|
||||
GetVideoCards;
|
||||
GetCameraStatus;
|
||||
|
||||
if RebootNeededFlag = true then
|
||||
begin
|
||||
RebootNeededDialog;
|
||||
//RebootNeededFlag := false;
|
||||
end;
|
||||
|
||||
//----------------------------------------------------------------- Oldies but Goodies -----------------------------------------------------------------------//
|
||||
//------------------------------------------------------------------------------------------------------------------------------------------------------------//
|
||||
// VideoCardsCountNumber = 0 & V4L2Val = -1 -> CamStatus = 0 -> Camera is off
|
||||
// VideoCardsCountNumber = 0 & V4L2Val = 0 -> CamStatus = 1 -> Camera is On
|
||||
// VideoCardsCountNumber = 1 & V4L2Val = 0 -> CamStatus = 2 -> CameraCapturing
|
||||
|
||||
//Str := 'VidCardsNum = ' + IntToStr(VideoCardsCountNumber) +
|
||||
// ' /dev/video1/ = ' + BoolToStr(DirectoryExists('/dev/video1/')) +
|
||||
// ' V4L2Val = ' + IntToStr(V4L2Val) +
|
||||
// ' CamStatus = ' + IntToStr(CamStatus) +
|
||||
// ' CamSavedStat = ' + IntToStr(CamSavedStatus);
|
||||
//
|
||||
//writeln(Str);
|
||||
|
||||
//writeln('VidCardsNum = ', IntToStr(VideoCardsCountNumber), ' CamStatus = ', CamStatus, ' CamSavedStat = ', CamSavedStatus, ' V4L2Val = ', IntToStr(V4L2Val));
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------------------------------------------------//
|
||||
|
||||
if (CamStatus = 2) and (CamSavedStatus = 0) then // Webcam Captures from Off
|
||||
begin
|
||||
ImageListCam1.GetIcon(1, TrayIcon5.Icon);
|
||||
PopupNotifier2.Hide;
|
||||
if PopUpWebcamCaptStatus = false then
|
||||
begin
|
||||
ActionTime := now;
|
||||
PopUpWebcamCaptures;
|
||||
PopUpWebcamCaptStatus := true;
|
||||
PopUpWebcamCapturing;
|
||||
TrayIcon5.Hint := 'Camera On' + LineEnding + 'Camera is Enabled and Capturing';
|
||||
VideoCapt := true;
|
||||
CamSavedStatus := 2;
|
||||
Logs.Form3.StringGrid1.InsertRowWithValues ( GridLine,[IntToStr(GridLine), FormatDateTime('dd/mm/yyyy, ', ActionTime)
|
||||
+ RightStr(DateTimeToStr(VPClock1.Time), 8), 'Camera is Captuting from Off', IntToStr(VideoDevicesNumber)]);
|
||||
Inc(GridLine);
|
||||
end;
|
||||
end;
|
||||
|
||||
if (CamStatus = 2) and (CamSavedStatus = 1) then // Webcam Captures from On
|
||||
begin
|
||||
ActionTime := now;
|
||||
ImageListCam1.GetIcon(1, TrayIcon5.Icon);
|
||||
PopupNotifier2.Hide;
|
||||
PopUpWebcamCaptures;
|
||||
PopUpWebcamCaptStatus := true;
|
||||
PopUpWebcamCapturing;
|
||||
TrayIcon5.Hint := 'Camera On' + LineEnding + 'Camera is Enabled and Capturing';
|
||||
VideoCapt := true;
|
||||
CamSavedStatus := 2;
|
||||
Logs.Form3.StringGrid1.InsertRowWithValues ( GridLine,[IntToStr(GridLine), FormatDateTime('dd/mm/yyyy, ', ActionTime)
|
||||
+ RightStr(DateTimeToStr(VPClock1.Time), 8), 'Camera is Captuting from On', IntToStr(VideoDevicesNumber)]);
|
||||
Inc(GridLine);
|
||||
end;
|
||||
|
||||
if ((CamStatus = 1) and (CamSavedStatus = 1) and (CamClicked = true) and (CamClicksCounter= 1)) then // Webcam is On, User Clicked
|
||||
begin
|
||||
ActionTime := now;
|
||||
PopUpWebcamOn;
|
||||
ImageListCam1.GetIcon(2, TrayIcon5.Icon);
|
||||
PopUpWebcamCaptStatus := false;
|
||||
PopUpWebcamNoCapturing;
|
||||
PopUpWebcamCaptStatus := true;
|
||||
CamClicked := false;
|
||||
CamClicksCounter := 0;
|
||||
Logs.Form3.StringGrid1.InsertRowWithValues ( GridLine, [IntToStr(GridLine), FormatDateTime('dd/mm/yyyy, ', ActionTime)
|
||||
+ RightStr(DateTimeToStr(VPClock1.Time), 8), 'Camera is On, by the User', IntToStr(VideoDevicesNumber)]);
|
||||
Inc(GridLine);
|
||||
end;
|
||||
|
||||
if (CamStatus = 1) and (CamSavedStatus = 2) then // Webcam Stopped Capturing from On
|
||||
begin
|
||||
ImageListCam1.GetIcon(2, TrayIcon5.Icon);
|
||||
if (VideoCapt = true) then
|
||||
begin
|
||||
ActionTime := now;
|
||||
PopUpWebcamNotCapturing;
|
||||
PopUpWebcamNoCapturing;
|
||||
PopUpWebcamCaptStatus := false;
|
||||
VideoCapt := false;
|
||||
CamSavedStatus := 1;
|
||||
Logs.Form3.StringGrid1.InsertRowWithValues ( GridLine,[IntToStr(GridLine), FormatDateTime('dd/mm/yyyy, ', ActionTime)
|
||||
+ RightStr(DateTimeToStr(VPClock1.Time), 8), 'Camera Stopped Captuting', IntToStr(VideoDevicesNumber)]);
|
||||
Inc(GridLine);
|
||||
end;
|
||||
end;
|
||||
|
||||
//if (VideoCardsCountNumber = 1) and (CamStatus = 2) and (CamSavedStatus = 1) and (V4L2Val = 0) then
|
||||
// begin
|
||||
// ImageListCam1.GetIcon(2, TrayIcon5.Icon);
|
||||
// if (VideoCapt = true) then
|
||||
// begin
|
||||
// PopUpWebcamNotCapturing;
|
||||
// PopUpWebcamNoCapturing;
|
||||
// PopUpWebcamCaptStatus := false;
|
||||
// VideoCapt := false;
|
||||
// CamSavedStatus := 1;
|
||||
// end;
|
||||
// end;
|
||||
|
||||
if ((CamStatus = 0) and (CamSavedStatus <= 2) and (CamClicked = true) and (CamClicksCounter= 1)) then // Webcam disabled, User Clicked
|
||||
begin
|
||||
ActionTime := now;
|
||||
ImageListCam1.GetIcon(0, TrayIcon5.Icon);
|
||||
PopUpNoWebcam;
|
||||
CamClicked := false;
|
||||
CamClicksCounter := 0;
|
||||
Logs.Form3.StringGrid1.InsertRowWithValues ( GridLine, [IntToStr(GridLine), FormatDateTime('dd/mm/yyyy, ', ActionTime)
|
||||
+ RightStr(DateTimeToStr(VPClock1.Time), 8), 'Camera is Off, by the User', IntToStr(VideoDevicesNumber)]);
|
||||
Inc(GridLine);
|
||||
end;
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////// Hacking Checks ////////////////////////////////////////////////////////////////////////////////////////
|
||||
//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------//
|
||||
|
||||
if ((CamStatus = 1) and (CamSavedStatus = 0) and (CamClicked = false) and (CamClicksCounter= 0)) then // Webcam went On from Off, No User Clicked -> Hacked
|
||||
begin
|
||||
HackedTime := now;
|
||||
PopUpWebcamHacked;
|
||||
|
||||
Logs.Form3.StringGrid1.InsertRowWithValues ( GridLine, [IntToStr(GridLine), FormatDateTime('dd/mm/yyyy, ', HackedTime)
|
||||
+ RightStr(DateTimeToStr(VPClock1.Time), 8), 'Camera Hacked to On', IntToStr(VideoDevicesNumber)]);
|
||||
|
||||
ImageListStatus.GetIcon(1, TrayIcon3.Icon);
|
||||
ImageListCam1.GetIcon(2, TrayIcon5.Icon);
|
||||
|
||||
//CamClicksCounter := 1;
|
||||
//CamClicked := false;
|
||||
CamSavedStatus := 1;
|
||||
//PopUpWebcamCaptStatus := false;
|
||||
PopUpWebcamNoCapturing;
|
||||
PopUpWebcamCaptStatus := true;
|
||||
Inc(GridLine);
|
||||
end;
|
||||
|
||||
//if ((VideoDevicesNumber = 0) and (CamStatus = 1) and (CamSavedStatus = 1) and (V4L2Val = -1) and (CamClicked = false) and (CamClicksCounter= 0)) then // Webcam went On from Off, No User Clicked -> Hacked
|
||||
// begin
|
||||
// HackedTime := now;
|
||||
// PopUpWebcamHacked;
|
||||
//
|
||||
// Logs.Form3.StringGrid1.InsertRowWithValues ( GridLine, [IntToStr(GridLine), FormatDateTime('dd/mm/yyyy, ', HackedTime)
|
||||
// + RightStr(DateTimeToStr(VPClock1.Time), 8), 'Camera Hacked to On', IntToStr(VideoDevicesNumber)]);
|
||||
//
|
||||
// ImageListStatus.GetIcon(1, TrayIcon3.Icon);
|
||||
//
|
||||
// ImageListCam1.GetIcon(2, TrayIcon5.Icon);
|
||||
//
|
||||
// //CamClicksCounter := 1;
|
||||
// //CamClicked := false;
|
||||
// CamSavedStatus := 1;
|
||||
// //PopUpWebcamCaptStatus := false;
|
||||
// PopUpWebcamNoCapturing;
|
||||
// PopUpWebcamCaptStatus := true;
|
||||
// Inc(GridLine);
|
||||
// end;
|
||||
|
||||
if ((CamStatus = 0) and (CamSavedStatus = 1) and (CamClicked = false) and (CamClicksCounter= 0)) then // Webcam went Off from On, No User Clicked -> Hacked
|
||||
begin
|
||||
HackedTime := now;
|
||||
PopUpWebcamHacked;
|
||||
|
||||
Logs.Form3.StringGrid1.InsertRowWithValues ( GridLine, [IntToStr(GridLine), FormatDateTime('dd/mm/yyyy, ', HackedTime)
|
||||
+ RightStr(DateTimeToStr(VPClock1.Time), 8), 'Camera Hacked to Off', IntToStr(VideoDevicesNumber)]);
|
||||
ImageListStatus.GetIcon(1, TrayIcon3.Icon);
|
||||
|
||||
ImageListCam1.GetIcon(0, TrayIcon5.Icon);
|
||||
|
||||
//CamClicksCounter := 1;
|
||||
//CamClicked := false;
|
||||
CamSavedStatus := 0;
|
||||
//PopUpWebcamCaptStatus := false;
|
||||
PopUpWebcamNoCapturing;
|
||||
PopUpWebcamCaptStatus := true;
|
||||
Inc(GridLine);
|
||||
end;
|
||||
|
||||
if ((CamStatus = 1) and (CamSavedStatus = 0) and (CamClicked = false) and (CamClicksCounter = 0)) then // Webcam disabled (Off), No User Clicked -> Hacked
|
||||
begin
|
||||
HackedTime := now;
|
||||
|
||||
Logs.Form3.StringGrid1.InsertRowWithValues ( GridLine, [IntToStr(GridLine), FormatDateTime('dd/mm/yyyy, ', HackedTime)
|
||||
+ RightStr(DateTimeToStr(VPClock1.Time), 8), 'Camera Hacked to Off', IntToStr(VideoDevicesNumber)]);
|
||||
ImageListStatus.GetIcon(1, TrayIcon3.Icon);
|
||||
ImageListCam1.GetIcon(0, TrayIcon5.Icon);
|
||||
|
||||
CamSavedStatus := -1;
|
||||
//PopUpWebcamCaptStatus := false;
|
||||
PopUpWebcamNoCapturing;
|
||||
PopUpWebcamHacked;
|
||||
PopUpWebcamCaptStatus := false;
|
||||
//CamClicked := false;
|
||||
//CamClicksCounter := 1;
|
||||
Inc(GridLine);
|
||||
end;
|
||||
|
||||
GetMicCaptureStatus;
|
||||
|
||||
if ((isMicOn = true) and (MicStatus = false) and (MicClicked = true) and (MicClicksCounter = 1)) then
|
||||
begin
|
||||
ImageListMic.GetIcon(0, TrayIcon2.Icon);
|
||||
MicClicked := false;
|
||||
MicClicksCounter := 0;
|
||||
ActionTime := now;
|
||||
end;
|
||||
|
||||
if ((isMicOn = true) and (MicStatus = false) and (MicClicked = false) and (MicClicksCounter = 0)) then
|
||||
begin
|
||||
ImageListStatus.GetIcon(1, TrayIcon3.Icon);
|
||||
ImageListMic.GetIcon(0, TrayIcon2.Icon);
|
||||
HackedTime := now;
|
||||
//ShowMessage('Microphone hacked !!! Please Check Log');
|
||||
PopUpMicHacked;
|
||||
Logs.Form3.StringGrid1.InsertRowWithValues ( GridLine,[IntToStr(GridLine), FormatDateTime('dd/mm/yyyy, ', HackedTime)
|
||||
+ RightStr(DateTimeToStr(VPClock1.Time), 8), 'Microphone Hacked to Unmuted', 'None']);
|
||||
MicStatus := true;
|
||||
Inc(GridLine);
|
||||
|
||||
end;
|
||||
|
||||
if ((isMicOn = false) and (MicStatus = true) and (MicClicked = true) and (MicClicksCounter = 1)) then
|
||||
begin
|
||||
ImageListMic.GetIcon(1, TrayIcon2.Icon);
|
||||
MicClicked := false;
|
||||
MicClicksCounter := 0;
|
||||
end;
|
||||
|
||||
if ((isMicOn = false) and (MicStatus = true) and (MicClicked = false) and (MicClicksCounter = 0)) then
|
||||
begin
|
||||
ImageListMic.GetIcon(1, TrayIcon2.Icon);
|
||||
ImageListStatus.GetIcon(1, TrayIcon3.Icon);
|
||||
HackedTime := now;
|
||||
//ShowMessage('Microphone hacked !!! Please Check Log');
|
||||
PopUpMicHacked;
|
||||
Logs.Form3.StringGrid1.InsertRowWithValues ( GridLine,[IntToStr(GridLine), FormatDateTime('dd/mm/yyyy, ', HackedTime)
|
||||
+ RightStr(DateTimeToStr(VPClock1.Time), 8), 'Microphone Hacked to Muted', 'None']);
|
||||
MicStatus := false;
|
||||
Inc(GridLine);
|
||||
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TForm1.VpClock1SecondChange(Sender: TObject);
|
||||
|
||||
begin
|
||||
if FromMain = true then
|
||||
begin
|
||||
// Reload Final Icons... (cthreads, and -O3 build level not enough? lol)
|
||||
ImageListCam1.GetIcon(CameraIcon, TrayIcon5.Icon);
|
||||
ImageListStatus.GetIcon(0, TrayIcon3.Icon);
|
||||
ImageListCam.GetIcon(2, TrayIcon1.Icon);
|
||||
ImageListMic.GetIcon(MicIcon, TrayIcon2.Icon);
|
||||
ImageListSystem.GetIcon(0, TrayIcon4.Icon);
|
||||
FromMain := false;
|
||||
end;
|
||||
|
||||
GetVideoCards;
|
||||
GetCameraStatus;
|
||||
|
||||
if RebootNeededFlag = true then
|
||||
begin
|
||||
RebootNeededDialog;
|
||||
//RebootNeededFlag := false;
|
||||
end;
|
||||
|
||||
//------------------------------------------------------------ Oldies but Goodies ----------------------------------------------------------------------------//
|
||||
//------------------------------------------------------------------------------------------------------------------------------------------------------------//
|
||||
// VideoCardsCountNumber = 0 & V4L2Val = -1 -> CamStatus = 0 -> Camera is off
|
||||
// VideoCardsCountNumber = 0 & V4L2Val = 0 -> CamStatus = 1 -> Camera is On
|
||||
// VideoCardsCountNumber = 1 & V4L2Val = 0 -> CamStatus = 2 -> CameraCapturing
|
||||
|
||||
//Str := 'VidCardsNum = ' + IntToStr(VideoCardsCountNumber) +
|
||||
// ' /dev/video1/ = ' + BoolToStr(DirectoryExists('/dev/video1/')) +
|
||||
// ' V4L2Val = ' + IntToStr(V4L2Val) +
|
||||
// ' CamStatus = ' + IntToStr(CamStatus) +
|
||||
// ' CamSavedStat = ' + IntToStr(CamSavedStatus);
|
||||
//
|
||||
//writeln(Str);
|
||||
|
||||
//writeln('VidCardsNum = ', IntToStr(VideoCardsCountNumber), ' CamStatus = ', CamStatus, ' CamSavedStat = ', CamSavedStatus, ' V4L2Val = ', IntToStr(V4L2Val));
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------------------------------------------------//
|
||||
|
||||
if ((CamStatus = 1) and (CamSavedStatus = 1) and (CamClicked = true) and (CamClicksCounter= 1)) then // Webcam is On, User Clicked
|
||||
begin
|
||||
ActionTime := now;
|
||||
PopUpWebcamOn;
|
||||
ImageListCam1.GetIcon(2, TrayIcon5.Icon);
|
||||
PopUpWebcamCaptStatus := false;
|
||||
PopUpWebcamNoCapturing;
|
||||
PopUpWebcamCaptStatus := true;
|
||||
CamClicked := false;
|
||||
CamClicksCounter := 0;
|
||||
Logs.Form3.StringGrid1.InsertRowWithValues ( GridLine, [IntToStr(GridLine), FormatDateTime('dd/mm/yyyy, ', ActionTime)
|
||||
+ RightStr(DateTimeToStr(VPClock1.Time), 8), 'Camera is On, by the User', IntToStr(VideoDevicesNumber)]);
|
||||
Inc(GridLine);
|
||||
end;
|
||||
|
||||
if (CamStatus = 2) and (CamSavedStatus = 1) then // Webcam Captures
|
||||
begin
|
||||
ActionTime := now;
|
||||
ImageListCam1.GetIcon(1, TrayIcon5.Icon);
|
||||
Form1.PopupNotifier2.Hide;
|
||||
PopUpWebcamCaptures;
|
||||
PopUpWebcamCaptStatus := true;
|
||||
PopUpWebcamCapturing;
|
||||
Form1.TrayIcon5.Hint := 'Camera On' + LineEnding + 'Camera is Enabled and Capturing';
|
||||
VideoCapt := true;
|
||||
CamSavedStatus := 2;
|
||||
Logs.Form3.StringGrid1.InsertRowWithValues( GridLine,[IntToStr(GridLine), FormatDateTime('dd/mm/yyyy, ', ActionTime)
|
||||
+ RightStr(DateTimeToStr(VPClock1.Time), 8), 'Camera is Captuting', IntToStr(VideoDevicesNumber)]);
|
||||
Inc(GridLine);
|
||||
end;
|
||||
|
||||
if (CamStatus = 2) and (CamSavedStatus = 0) then // Webcam Captures
|
||||
begin
|
||||
ImageListCam1.GetIcon(1, TrayIcon5.Icon);
|
||||
Form1.PopupNotifier2.Hide;
|
||||
if PopUpWebcamCaptStatus = false then
|
||||
begin
|
||||
PopUpWebcamCaptures;
|
||||
PopUpWebcamCaptStatus := true;
|
||||
PopUpWebcamCapturing;
|
||||
Form1.TrayIcon5.Hint := 'Camera On' + LineEnding + 'Camera is Enabled and Capturing';
|
||||
VideoCapt := true;
|
||||
CamSavedStatus := 2;
|
||||
end;
|
||||
end;
|
||||
|
||||
if (CamStatus = 1) and (CamSavedStatus = 2) then // Webcam Stopped Capturing
|
||||
begin
|
||||
ImageListCam1.GetIcon(2, TrayIcon5.Icon);
|
||||
if (VideoCapt = true) then
|
||||
begin
|
||||
ActionTime := now;
|
||||
PopUpWebcamNotCapturing;
|
||||
PopUpWebcamNoCapturing;
|
||||
PopUpWebcamCaptStatus := false;
|
||||
VideoCapt := false;
|
||||
CamSavedStatus := 1;
|
||||
Logs.Form3.StringGrid1.InsertRowWithValues( GridLine,[IntToStr(GridLine), FormatDateTime('dd/mm/yyyy, ', ActionTime)
|
||||
+ RightStr(DateTimeToStr(VPClock1.Time), 8), 'Camera Stopped Captuting', IntToStr(VideoDevicesNumber)]);
|
||||
Inc(GridLine);
|
||||
end;
|
||||
end;
|
||||
|
||||
//if (VideoCardsCountNumber = 1) and (CamStatus = 2) and (CamSavedStatus = 1) and (V4L2Val = 0) then
|
||||
// begin
|
||||
// ImageListCam1.GetIcon(2, TrayIcon5.Icon);
|
||||
// if (VideoCapt = true) then
|
||||
// begin
|
||||
// PopUpWebcamNotCapturing;
|
||||
// PopUpWebcamNoCapturing;
|
||||
// PopUpWebcamCaptStatus := false;
|
||||
// VideoCapt := false;
|
||||
// CamSavedStatus := 1;
|
||||
// end;
|
||||
// end;
|
||||
|
||||
if ((CamStatus = 0) and (CamSavedStatus <= 2) and (CamClicked = true) and (CamClicksCounter= 1)) then // Webcam disabled, User Clicked
|
||||
begin
|
||||
ActionTime := now;
|
||||
ImageListCam1.GetIcon(0, TrayIcon5.Icon);
|
||||
PopUpNoWebcam;
|
||||
CamClicked := false;
|
||||
CamClicksCounter := 0;
|
||||
Logs.Form3.StringGrid1.InsertRowWithValues ( GridLine, [IntToStr(GridLine), FormatDateTime('dd/mm/yyyy, ', ActionTime)
|
||||
+ RightStr(DateTimeToStr(VPClock1.Time), 8), 'Camera is Off, by the User', IntToStr(VideoDevicesNumber)]);
|
||||
Inc(GridLine);
|
||||
end;
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////// Hacking Checks ////////////////////////////////////////////////////////////////////////////////////////
|
||||
//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------//
|
||||
|
||||
if ((CamStatus = 1) and (CamSavedStatus = 0) and (CamClicked = false) and (CamClicksCounter= 0)) then // Webcam went On from Off, No User Clicked -> Hacked
|
||||
begin
|
||||
HackedTime := now;
|
||||
PopUpWebcamHacked;
|
||||
|
||||
Logs.Form3.StringGrid1.InsertRowWithValues ( GridLine, [IntToStr(GridLine), FormatDateTime('dd/mm/yyyy, ', HackedTime)
|
||||
+ RightStr(DateTimeToStr(VPClock1.Time), 8), 'Camera Hacked to On', IntToStr(VideoDevicesNumber)]);
|
||||
|
||||
ImageListStatus.GetIcon(1, TrayIcon3.Icon);
|
||||
|
||||
ImageListCam1.GetIcon(2, TrayIcon5.Icon);
|
||||
|
||||
//CamClicksCounter := 1;
|
||||
//CamClicked := false;
|
||||
CamSavedStatus := 1;
|
||||
//PopUpWebcamCaptStatus := false;
|
||||
PopUpWebcamNoCapturing;
|
||||
PopUpWebcamCaptStatus := true;
|
||||
Inc(GridLine);
|
||||
end;
|
||||
|
||||
//if ((VideoDevicesNumber = 0) and (CamStatus = 1) and (CamSavedStatus = 1) and (V4L2Val = -1) and (CamClicked = false) and (CamClicksCounter= 0)) then // Webcam went On from Off, No User Clicked -> Hacked
|
||||
// begin
|
||||
// HackedTime := now;
|
||||
// PopUpWebcamHacked;
|
||||
//
|
||||
// Logs.Form3.StringGrid1.InsertRowWithValues ( GridLine, [IntToStr(GridLine), FormatDateTime('dd/mm/yyyy, ', HackedTime)
|
||||
// + RightStr(DateTimeToStr(VPClock1.Time), 8), 'Camera Hacked to On', IntToStr(VideoDevicesNumber)]);
|
||||
//
|
||||
// ImageListStatus.GetIcon(1, TrayIcon3.Icon);
|
||||
//
|
||||
// ImageListCam1.GetIcon(2, TrayIcon5.Icon);
|
||||
//
|
||||
// //CamClicksCounter := 1;
|
||||
// //CamClicked := false;
|
||||
// CamSavedStatus := 1;
|
||||
// //PopUpWebcamCaptStatus := false;
|
||||
// PopUpWebcamNoCapturing;
|
||||
// PopUpWebcamCaptStatus := true;
|
||||
// Inc(GridLine);
|
||||
// end;
|
||||
|
||||
if ((CamStatus = 0) and (CamSavedStatus = 1) and (CamClicked = false) and (CamClicksCounter= 0)) then // Webcam went Off from On, No User Clicked -> Hacked
|
||||
begin
|
||||
HackedTime := now;
|
||||
PopUpWebcamHacked;
|
||||
|
||||
Logs.Form3.StringGrid1.InsertRowWithValues ( GridLine, [IntToStr(GridLine), FormatDateTime('dd/mm/yyyy, ', HackedTime)
|
||||
+ RightStr(DateTimeToStr(VPClock1.Time), 8), 'Camera Hacked to Off', IntToStr(VideoDevicesNumber)]);
|
||||
ImageListStatus.GetIcon(1, TrayIcon3.Icon);
|
||||
|
||||
ImageListCam1.GetIcon(0, TrayIcon5.Icon);
|
||||
|
||||
//CamClicksCounter := 1;
|
||||
//CamClicked := false;
|
||||
CamSavedStatus := 0;
|
||||
//PopUpWebcamCaptStatus := false;
|
||||
PopUpWebcamNoCapturing;
|
||||
PopUpWebcamCaptStatus := true;
|
||||
Inc(GridLine);
|
||||
end;
|
||||
|
||||
if ((CamStatus = 1) and (CamSavedStatus = 0) and (CamClicked = false) and (CamClicksCounter = 0)) then // Webcam disabled (Off), No User Clicked -> Hacked
|
||||
begin
|
||||
HackedTime := now;
|
||||
|
||||
Logs.Form3.StringGrid1.InsertRowWithValues ( GridLine, [IntToStr(GridLine), FormatDateTime('dd/mm/yyyy, ', HackedTime)
|
||||
+ RightStr(DateTimeToStr(VPClock1.Time), 8), 'Camera Hacked to Off', IntToStr(VideoDevicesNumber)]);
|
||||
ImageListStatus.GetIcon(1, TrayIcon3.Icon);
|
||||
ImageListCam1.GetIcon(0, TrayIcon5.Icon);
|
||||
|
||||
CamSavedStatus := -1;
|
||||
//PopUpWebcamCaptStatus := false;
|
||||
PopUpWebcamNoCapturing;
|
||||
PopUpWebcamHacked;
|
||||
PopUpWebcamCaptStatus := false;
|
||||
//CamClicked := false;
|
||||
//CamClicksCounter := 1;
|
||||
Inc(GridLine);
|
||||
end;
|
||||
|
||||
GetMicCaptureStatus;
|
||||
|
||||
if ((isMicOn = true) and (MicStatus = false) and (MicClicked = true) and (MicClicksCounter = 1)) then
|
||||
begin
|
||||
ImageListMic.GetIcon(0, TrayIcon2.Icon);
|
||||
MicClicked := false;
|
||||
MicClicksCounter := 0;
|
||||
ActionTime := now;
|
||||
end;
|
||||
if ((isMicOn = true) and (MicStatus = false) and (MicClicked = false) and (MicClicksCounter = 0)) then
|
||||
begin
|
||||
ImageListStatus.GetIcon(1, TrayIcon3.Icon);
|
||||
ImageListMic.GetIcon(0, TrayIcon2.Icon);
|
||||
HackedTime := now;
|
||||
//ShowMessage('Microphone hacked !!! Please Check Log');
|
||||
PopUpMicHacked;
|
||||
Logs.Form3.StringGrid1.InsertRowWithValues ( GridLine,[IntToStr(GridLine), FormatDateTime('dd/mm/yyyy, ', HackedTime)
|
||||
+ RightStr(DateTimeToStr(VPClock1.Time), 8), 'Microphone Hacked to Unmuted', 'None']);
|
||||
MicStatus := true;
|
||||
Inc(GridLine);
|
||||
|
||||
end;
|
||||
|
||||
if ((isMicOn = false) and (MicStatus = true) and (MicClicked = true) and (MicClicksCounter = 1)) then
|
||||
begin
|
||||
ImageListMic.GetIcon(1, TrayIcon2.Icon);
|
||||
MicClicked := false;
|
||||
MicClicksCounter := 0;
|
||||
end;
|
||||
if ((isMicOn = false) and (MicStatus = true) and (MicClicked = false) and (MicClicksCounter = 0)) then
|
||||
begin
|
||||
ImageListMic.GetIcon(1, TrayIcon2.Icon);
|
||||
ImageListStatus.GetIcon(1, TrayIcon3.Icon);
|
||||
HackedTime := now;
|
||||
//ShowMessage('Microphone hacked !!! Please Check Log');
|
||||
PopUpMicHacked;
|
||||
Logs.Form3.StringGrid1.InsertRowWithValues ( GridLine,[IntToStr(GridLine), FormatDateTime('dd/mm/yyyy, ', HackedTime)
|
||||
+ RightStr(DateTimeToStr(VPClock1.Time), 8), 'Microphone Hacked to Muted', 'None']);
|
||||
MicStatus := false;
|
||||
Inc(GridLine);
|
||||
|
||||
end;
|
||||
|
||||
CheckEvents;
|
||||
end;
|
||||
|
||||
end.
|
Loading…
Reference in New Issue