Shifting the Code further. Clear Logs --> Save and Clear Logs and Delete Old Logs Menu Option Added

This commit is contained in:
PSposito 2020-02-21 21:56:33 +02:00
parent baf50c4db3
commit f899e1bec1
No known key found for this signature in database
GPG Key ID: 92E2BB27E8617EFC
3 changed files with 697 additions and 265 deletions

298
main.frm
View File

@ -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 = {

View File

@ -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
View File

@ -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.