Cleaning up and release update

This commit is contained in:
linuxer 2020-11-07 17:46:33 +02:00
parent 062b22555c
commit d516e5d26a
Signed by: linuxer.gr
GPG Key ID: CCD2779140DF9E58
40 changed files with 15836 additions and 60829 deletions

13518
About.frm Executable file → Normal file

File diff suppressed because it is too large Load Diff

17181
About.lfm

File diff suppressed because it is too large Load Diff

View File

@ -1,10 +0,0 @@
{"version":1,"strings":[
{"hash":4691652,"name":"tform2.caption","sourcebytes":[65,98,111,117,116],"value":"About"},
{"hash":86477809,"name":"tform2.label1.caption","sourcebytes":[76,97,98,101,108,49],"value":"Label1"},
{"hash":86477810,"name":"tform2.label2.caption","sourcebytes":[76,97,98,101,108,50],"value":"Label2"},
{"hash":162329314,"name":"tform2.plurllabel2.caption","sourcebytes":[104,116,116,112,58,47,47,98,105,116,46,100,111,47,108,105,110,117,120,101,114],"value":"http://bit.do/linuxer"},
{"hash":112590572,"name":"tform2.plurllabel3.caption","sourcebytes":[104,116,116,112,115,58,47,47,119,105,107,105,46,102,114,101,101,112,97,115,99,97,108,46,111,114,103,47,70,80,67,95,109,111,100,105,102,105,101,100,95,76,71,80,76],"value":"https://wiki.freepascal.org/FPC_modified_LGPL"},
{"hash":4863637,"name":"tform2.button2.caption","sourcebytes":[67,108,111,115,101],"value":"Close"},
{"hash":86477811,"name":"tform2.label3.caption","sourcebytes":[76,97,98,101,108,51],"value":"Label3"},
{"hash":123144082,"name":"tform2.plurllabel1.caption","sourcebytes":[104,116,116,112,115,58,47,47,103,105,116,108,97,98,46,99,111,109,47,112,115,112,111,115,105,116,111,47,99,97,109,101,114,97,45,99,111,110,116,114,111,108,45,119,101,98,99,97,109,45,115,119,105,116,99,104,45,105,110,100,105,99,97,116,111,114],"value":"https://gitlab.com/psposito/camera-control-webcam-switch-indicator"}
]}

19
About.pas Executable file → Normal file
View File

@ -4,20 +4,25 @@ unit About;
{$warnings off}
{$hints off}
// Created at 23th of January 2020, by Linuxer (https://gitlab.com/psposito), from scratch with Free Pascal
// Copyright © 2020 linuxer <linuxer@artixlinux.org> <https://linuxer.gr>
// Created at 23th of January 2020, by Linuxer (https://gitlab.com/linuxergr), from scratch with Free Pascal
// Redesigned and further Developed at 28th of January 2020, by Initial developer
// to provide Camera and Mic status alone with On/Off and Mute/Unmute fuctions
// Developed further for intrusion feeling and logging at 2nd of February 2020, by Initial developer
// Developed for Blacklisting/Whitelisting functions for both camera & audio at 7th of February 2020, by Initial developer
// Finalized, except traslations at 15th of February 2020.
// Further Capabilities added alone with better Logging at 22nd of February 2020
// Development Ended at 5th of March 2020. Minor Updates will follow, if needed
// Essential Development Ended at 5th of March 2020. Minor Updates will follow, if needed
// Thanks to Ido Kanner idokan at@at gmail dot.dot com, libnotify has been added to the project, so to solve issues of notifiers and Qt5 on Linux
// https://forum.lazarus.freepascal.org/index.php/topic,52052.0.html
// Wayland and x11 operation confirmed too with the libnotify addition
// Further project development for the next major release 2.1.0, as from 3rd of Nov 2020 / ended at 6th of Nov 2020
interface
uses
{$IFDEF UNIX}
cthreads,
cthreads,
{$ENDIF}
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ExtCtrls, StdCtrls,
LCLIntf;
@ -71,17 +76,17 @@ end;
procedure TForm2.StaticText1Click(Sender: TObject);
begin
OpenUrl('https://operatingsystemsandsoftware.wordpress.com/');
OpenUrl('https://gitea.artixlinux.org/linuxer');
end;
procedure TForm2.StaticText2Click(Sender: TObject);
begin
OpenUrl('https://gitlab.com/psposito/camera-control-webcam-switch-indicator');
OpenUrl('https://wiki.freepascal.org/FPC_modified_LGPL');
end;
procedure TForm2.StaticText3Click(Sender: TObject);
begin
OpenUrl('https://wiki.freepascal.org/FPC_modified_LGPL');
OpenUrl('https://gitea.artixlinux.org/linuxer/camera-control-webcam-switch-indicator');
end;
end.
end.

428
CameraControl.ctpr Normal file
View File

@ -0,0 +1,428 @@
<?xml version="1.0" encoding="UTF-8"?>
<CONFIG>
<ProjectOptions>
<Version Value="12"/>
<General>
<SessionStorage Value="InProjectDir"/>
<Title Value="CameraControl"/>
<Scaled Value="True"/>
<ResourceType Value="res"/>
<UseXPManifest Value="True"/>
<XPManifest>
<DpiAware Value="True/PM_V2"/>
<ExecutionLevel Value="highestAvailable"/>
</XPManifest>
<Icon Value="0"/>
</General>
<VersionInfo>
<UseVersionInfo Value="True"/>
<MajorVersionNr Value="2"/>
<MinorVersionNr Value="1"/>
</VersionInfo>
<CustomData Count="15">
<Item0 Name="CT-Packager/copyright" Value="2020 Linuxer パスカリス スポシト"/>
<Item1 Name="CT-Packager/deb/ppa" Value="ppa:johndoe/use-your-own"/>
<Item2 Name="CT-Packager/deb/series" Value="Buster"/>
<Item3 Name="CT-Packager/deb/tpl_changelog" Value="?PACKAGE_NAME? (?FULLVERSION?) ?SERIES?; urgency=low
* Original version ?VERSION? packaged with lazdebian
-- ?MAINTAINER? &lt;?MAINTAINER_EMAIL?> ?DATER?
"/>
<Item4 Name="CT-Packager/deb/tpl_control" Value="Source: cameracontrol
Maintainer: Linuxer パスカリス スポシト &lt;linuxer@artixlinux.com>
Section: system
Priority: optional
Standards-Version: 2.1.0
Build-Depends: fpc, Typhon, lcl, lcl-utils, debhelper (>= 10), libqt5pas-dev
Package: cameracontrol
Architecture: amd64
Depends: libqt5pas1, libc
Version: 2.0.1
Description: Camera Control for Linux
Camera Control Webcam Switch Indicator.
It is a Desktop security application
for locking, unlocking Cameras, Webcams and Microphone,
for Video and Audio Capturing function.
You can also Blacklist or Whitelist the Kernel modules,
easily.
"/>
<Item5 Name="CT-Packager/deb/tpl_copyright" Value="Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Files: *
Copyright: ?COPYRIGHT?
License: &lt;https://wiki.freepascal.org/FPC_modified_LGPL>
FPC modified LGPL Version 2
FPC MODIFIED GNU LIBRARY GENERAL PUBLIC LICENSE
Copyright (C) 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
[This is the first released version of the library GPL. It is numbered 2 because it goes with version 2 of the ordinary GPL.]
Preamble
The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users.
This license, the Library General Public License, applies to some specially designated Free Software Foundation software, and to any other libraries whose authors decide to use it. You can use it for your libraries, too.
When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library, or if you modify it.
For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link a program with the library, you must provide complete object files to the recipients so that they can relink them with the library, after making changes to the library and recompiling it. And you must show them these terms so they know their rights.
Our method of protecting your rights has two steps: (1) copyright the library, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the library.
Also, for each distributor&apos;s protection, we want to make certain that everyone understands that there is no warranty for this free library. If the library is modified by someone else and passed on, we want its recipients to know that what they have is not the original version, so that any problems introduced by others will not reflect on the original authors&apos; reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that companies distributing free software will individually obtain patent licenses, thus in effect transforming the program into proprietary software. To prevent this, we have made it clear that any patent must be licensed for everyone&apos;s free use or not licensed at all.
Most GNU software, including some libraries, is covered by the ordinary GNU General Public License, which was designed for utility programs. This license, the GNU Library General Public License, applies to certain designated libraries. This license is quite different from the ordinary one; be sure to read it in full, and don&apos;t assume that anything in it is the same as in the ordinary license.
The reason we have a separate public license for some libraries is that they blur the distinction we usually make between modifying or adding to a program and simply using it. Linking a program with a library, without changing the library, is in some sense simply using the library, and is analogous to running a utility program or application program. However, in a textual and legal sense, the linked executable is a combined work, a derivative of the original library, and the ordinary General Public License treats it as such.
Because of this blurred distinction, using the ordinary General Public License for libraries did not effectively promote software sharing, because most developers did not use the libraries. We concluded that weaker conditions might promote sharing better.
However, unrestricted linking of non-free programs would deprive the users of those programs of all benefit from the free status of the libraries themselves. This Library General Public License is intended to permit developers of non-free programs to use free libraries, while preserving your freedom as a user of such programs to change the free libraries that are incorporated in them. (We have not seen how to achieve this as regards changes in header files, but we have achieved it as regards changes in the actual functions of the Library.) The hope is that this will lead to faster development of free libraries.
The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a &quot;work based on the library&quot; and a &quot;work that uses the library&quot;. The former contains code derived from the library, while the latter only works together with the library.
Note that it is possible for a library to be covered by the ordinary General Public License rather than by this special one. GNU LIBRARY GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License Agreement applies to any software library which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Library General Public License (also called &quot;this License&quot;). Each licensee is addressed as &quot;you&quot;.
A &quot;library&quot; means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables.
The &quot;Library&quot;, below, refers to any such software library or work which has been distributed under these terms. A &quot;work based on the Library&quot; means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term &quot;modification&quot;.)
&quot;Source code&quot; for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library.
Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does.
1. You may copy and distribute verbatim copies of the Library&apos;s complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library.
You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:
a) The modified work must itself be a software library.
b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change.
c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License.
d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful.
(For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.)
These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library.
In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.
3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy.
This option is useful when you wish to copy part of the code of the Library into a program that is not a library.
4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange.
If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code.
5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a &quot;work that uses the Library&quot;. Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License.
However, linking a &quot;work that uses the Library&quot; with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a &quot;work that uses the library&quot;. The executable is therefore covered by this License. Section 6 states terms for distribution of such executables.
When a &quot;work that uses the Library&quot; uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law.
If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.)
Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself.
6. As an exception to the Sections above, you may also compile or link a &quot;work that uses the Library&quot; with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer&apos;s own use and reverse engineering for debugging such modifications.
You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things:
a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable &quot;work that uses the Library&quot;, as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.)
b) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution.
c) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place.
d) Verify that the user has already received a copy of these materials or that you have already sent this user a copy.
For an executable, the required form of the &quot;work that uses the Library&quot; must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.
It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute.
7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things:
a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above.
b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work.
8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.
9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it.
10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients&apos; exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License.
11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library.
If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances.
It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice.
This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License.
12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License.
13. The Free Software Foundation may publish revised and/or new versions of the Library General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and &quot;any later version&quot;, you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation.
14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally.
NO WARRANTY
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY &quot;AS IS&quot; WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
"/>
<Item6 Name="CT-Packager/deb/tpl_rules" Value="#!/usr/bin/make -f
ROOT = $(CURDIR)/debian/?PACKAGE_NAME?
override_dh_auto_clean:
$(RM) -r lib
$(RM) lib *.res ?EXECUTABLE?
override_dh_auto_build:
typhoonbuild ?PROJECT?
override_dh_auto_install:
install -d -m 755 $(ROOT)/usr/bin
install -s -m 755 ?EXECUTABLE? $(ROOT)/usr/bin
%:
dh $@
"/>
<Item7 Name="CT-Packager/description" Value="Camera Control for Linux"/>
<Item8 Name="CT-Packager/description_long" Value="A small utility to switch your webcam on/off, microphone mute/unmute for Linux Desktops (Qt5, Gtk3 maybe in the future)
This project replaces the (camera monitor), for having the full webcam status and control on tray, by providing for both
camera and microphone switch functions aditionally.
In additions it warns for possible Malware / Intrusions"/>
<Item9 Name="CT-Packager/export_cmd" Value="?CP? *.ctpr ?TEMPFOLDER?/
?CP? *.ppr ?TEMPFOLDER?/
?CP? *.pas ?TEMPFOLDER?/
?CP? *.frm ?TEMPFOLDER?/
?CP? *.ico ?TEMPFOLDER?/
"/>
<Item10 Name="CT-Packager/maintainer" Value="linuxer"/>
<Item11 Name="CT-Packager/maintainer_email" Value="linuxer@artixlinux.org"/>
<Item12 Name="CT-Packager/package_name" Value="cameracontrol"/>
<Item13 Name="CT-Packager/tpl_makefile" Value="PREFIX = /usr/bin
# debuild will set DESTDIR to the fakeroot path and
# in the override rules we will change PREFIX to /usr
BINDIR = $(DESTDIR)$(PREFIX)/bin
.PHONY : all
all:
typhoonbuild ?PROJECT?
.PHONY : clean
clean:
$(RM) -r lib
$(RM) *.res
$(RM) ?EXECUTABLE?
.PHONY : install
install:
mkdir -p $(BINDIR)
install -s ?EXECUTABLE? $(BINDIR)/
"/>
<Item14 Name="CT-Packager/use_existing_makefile" Value="False"/>
</CustomData>
<MacroValues Count="1">
<Macro1 Name="LCLWidgetType" Value="qt5"/>
</MacroValues>
<BuildModes>
<Item Name="Default" Default="True"/>
<SharedMatrixOptions Count="4">
<Item1 ID="929861254421" Modes="Default" Type="IDEMacro" MacroName="LCLWidgetType" Value="qt5"/>
<Item2 ID="818688490619" Type="IDEMacro" MacroName="LCLWidgetType" Value="qt"/>
<Item3 ID="363546960373" Type="IDEMacro" MacroName="LCLWidgetType" Value="gtk2"/>
<Item4 ID="940918836164" Type="IDEMacro" MacroName="LCLWidgetType" Value="gtk3"/>
</SharedMatrixOptions>
</BuildModes>
<PublishOptions>
<Version Value="2"/>
<OpenInFileMan Value="True"/>
<UseFileFilters Value="True"/>
</PublishOptions>
<RunParams>
<FormatVersion Value="2"/>
</RunParams>
<RequiredPackages>
<Item>
<PackageName Value="bs_Utils"/>
</Item>
<Item>
<PackageName Value="pl_visualplanit"/>
</Item>
<Item>
<PackageName Value="pl_luicontrols"/>
</Item>
<Item>
<PackageName Value="pl_eccontrols"/>
</Item>
<Item>
<PackageName Value="pl_excontrols"/>
</Item>
<Item>
<PackageName Value="adLCLBase"/>
</Item>
<Item>
<PackageName Value="adLCL"/>
</Item>
</RequiredPackages>
<Units>
<Unit>
<Filename Value="CameraControl.ppr"/>
<FRMtype Value="0"/>
<IsPartOfProject Value="True"/>
</Unit>
<Unit>
<Filename Value="About.pas"/>
<FRMtype Value="200"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="Form2"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
</Unit>
<Unit>
<Filename Value="Logs.pas"/>
<FRMtype Value="200"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="Form3"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
</Unit>
<Unit>
<Filename Value="Reboot.pas"/>
<FRMtype Value="200"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="Form4"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
</Unit>
<Unit>
<Filename Value="RebootDialog.pas"/>
<FRMtype Value="200"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="Form5"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
</Unit>
<Unit>
<Filename Value="main.pas"/>
<FRMtype Value="200"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="Form1"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
<UnitName Value="Main"/>
</Unit>
<Unit>
<Filename Value="OutputForm.pas"/>
<FRMtype Value="200"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="Form6"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
</Unit>
<Unit>
<Filename Value="InputForm.pas"/>
<FRMtype Value="200"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="Form7"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
</Unit>
<Unit>
<Filename Value="MessageForm.pas"/>
<FRMtype Value="200"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="Form8"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
</Unit>
<Unit>
<Filename Value="PidsList.pas"/>
<FRMtype Value="200"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="Form9"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
</Unit>
<Unit>
<Filename Value="camera-web.png"/>
<FRMtype Value="0"/>
<IsPartOfProject Value="True"/>
</Unit>
<Unit>
<Filename Value="cameracontrol.bin"/>
<FRMtype Value="0"/>
<IsPartOfProject Value="True"/>
</Unit>
<Unit>
<Filename Value="CameraControl.sh"/>
<FRMtype Value="0"/>
<IsPartOfProject Value="True"/>
</Unit>
<Unit>
<Filename Value="libnotify.pas"/>
<IsPartOfProject Value="True"/>
</Unit>
</Units>
</ProjectOptions>
<CompilerOptions>
<Version Value="11"/>
<Target>
<Filename Value="../build/cameracontrol.bin"/>
</Target>
<SearchPaths>
<IncludeFiles Value="$(ProjOutDir)"/>
<UnitOutputDirectory Value="lib/$(TargetCPU)-$(TargetOS)"/>
</SearchPaths>
<CodeGeneration>
<TargetOS Value="linux"/>
<Optimizations>
<OptimizationLevel Value="3"/>
</Optimizations>
</CodeGeneration>
<Linking>
<Options>
<Win32>
<GraphicApplication Value="True"/>
</Win32>
</Options>
</Linking>
<Other>
<CustomOptions Value="-vd"/>
</Other>
</CompilerOptions>
<Debugging>
<Exceptions>
<Item>
<Name Value="EAbort"/>
</Item>
<Item>
<Name Value="ECodetoolError"/>
</Item>
<Item>
<Name Value="EFOpenError"/>
</Item>
</Exceptions>
</Debugging>
</CONFIG>

327
CameraControl.ctps Normal file
View File

@ -0,0 +1,327 @@
<?xml version="1.0" encoding="UTF-8"?>
<CONFIG>
<ProjectSession>
<Version Value="12"/>
<BuildModes Active="Default"/>
<Units>
<Unit>
<Filename Value="CameraControl.ppr"/>
<FRMtype Value="0"/>
<IsPartOfProject Value="True"/>
<EditorIndex Value="11"/>
<CursorPos Y="19"/>
<UsageCount Value="279"/>
<Loaded Value="True"/>
</Unit>
<Unit>
<Filename Value="About.pas"/>
<FRMtype Value="200"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="Form2"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
<EditorIndex Value="3"/>
<CursorPos X="127" Y="19"/>
<UsageCount Value="279"/>
<Loaded Value="True"/>
<LoadedDesigner Value="True"/>
</Unit>
<Unit>
<Filename Value="Logs.pas"/>
<FRMtype Value="200"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="Form3"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
<EditorIndex Value="4"/>
<CursorPos X="127" Y="19"/>
<UsageCount Value="279"/>
<Loaded Value="True"/>
<LoadedDesigner Value="True"/>
</Unit>
<Unit>
<Filename Value="Reboot.pas"/>
<FRMtype Value="200"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="Form4"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
<EditorIndex Value="5"/>
<CursorPos X="127" Y="19"/>
<UsageCount Value="279"/>
<Loaded Value="True"/>
<LoadedDesigner Value="True"/>
</Unit>
<Unit>
<Filename Value="RebootDialog.pas"/>
<FRMtype Value="200"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="Form5"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
<EditorIndex Value="6"/>
<CursorPos X="127" Y="19"/>
<UsageCount Value="279"/>
<Loaded Value="True"/>
<LoadedDesigner Value="True"/>
</Unit>
<Unit>
<Filename Value="main.pas"/>
<FRMtype Value="200"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="Form1"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
<UnitName Value="Main"/>
<IsVisibleTab Value="True"/>
<TopLine Value="20"/>
<CursorPos Y="47"/>
<UsageCount Value="279"/>
<Loaded Value="True"/>
<LoadedDesigner Value="True"/>
</Unit>
<Unit>
<Filename Value="OutputForm.pas"/>
<FRMtype Value="200"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="Form6"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
<EditorIndex Value="7"/>
<CursorPos X="127" Y="19"/>
<UsageCount Value="279"/>
<Loaded Value="True"/>
<LoadedDesigner Value="True"/>
</Unit>
<Unit>
<Filename Value="InputForm.pas"/>
<FRMtype Value="200"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="Form7"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
<EditorIndex Value="9"/>
<CursorPos X="127" Y="19"/>
<UsageCount Value="279"/>
<Loaded Value="True"/>
<LoadedDesigner Value="True"/>
</Unit>
<Unit>
<Filename Value="MessageForm.pas"/>
<FRMtype Value="200"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="Form8"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
<EditorIndex Value="10"/>
<CursorPos X="127" Y="19"/>
<UsageCount Value="279"/>
<Loaded Value="True"/>
<LoadedDesigner Value="True"/>
</Unit>
<Unit>
<Filename Value="PidsList.pas"/>
<FRMtype Value="200"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="Form9"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
<EditorIndex Value="8"/>
<CursorPos X="127" Y="19"/>
<UsageCount Value="247"/>
<Loaded Value="True"/>
<LoadedDesigner Value="True"/>
</Unit>
<Unit>
<Filename Value="camera-web.png"/>
<FRMtype Value="0"/>
<IsPartOfProject Value="True"/>
<EditorIndex Value="-1"/>
<WindowIndex Value="-1"/>
<TopLine Value="-1"/>
<CursorPos X="-1" Y="-1"/>
<UsageCount Value="226"/>
<DefaultSyntaxHighlighter Value="None"/>
</Unit>
<Unit>
<Filename Value="cameracontrol.bin"/>
<FRMtype Value="0"/>
<IsPartOfProject Value="True"/>
<EditorIndex Value="-1"/>
<WindowIndex Value="-1"/>
<TopLine Value="-1"/>
<CursorPos X="-1" Y="-1"/>
<UsageCount Value="226"/>
<DefaultSyntaxHighlighter Value="None"/>
</Unit>
<Unit>
<Filename Value="CameraControl.sh"/>
<FRMtype Value="0"/>
<IsPartOfProject Value="True"/>
<EditorIndex Value="2"/>
<CursorPos X="26" Y="31"/>
<UsageCount Value="224"/>
<Loaded Value="True"/>
<DefaultSyntaxHighlighter Value="Bash"/>
</Unit>
<Unit>
<Filename Value="libnotify.pas"/>
<IsPartOfProject Value="True"/>
<EditorIndex Value="1"/>
<CursorPos Y="4"/>
<UsageCount Value="35"/>
<Loaded Value="True"/>
</Unit>
<Unit>
<Filename Value="/usr/local/codetyphon/typhon/components/pl_lclextensions/source/include/delphicompat_gtk3.inc"/>
<FRMtype Value="0"/>
<EditorIndex Value="-1"/>
<TopLine Value="13"/>
<CursorPos X="2" Y="41"/>
<UsageCount Value="4"/>
</Unit>
<Unit>
<Filename Value="/usr/local/codetyphon/typhon/lcl/interfaces/gtk3/alllclintfunits.pas"/>
<FRMtype Value="0"/>
<UnitName Value="AllLCLIntfUnits"/>
<EditorIndex Value="-1"/>
<CursorPos X="3" Y="19"/>
<UsageCount Value="4"/>
</Unit>
<Unit>
<Filename Value="/usr/local/codetyphon/typhon/components/pl_LuiControls/source/luicontrols/presentationmanager.pas"/>
<FRMtype Value="0"/>
<UnitName Value="PresentationManager"/>
<EditorIndex Value="-1"/>
<CursorPos Y="6"/>
<UsageCount Value="9"/>
</Unit>
</Units>
<JumpHistory HistoryIndex="29">
<Position>
<Filename Value="main.pas"/>
<Caret Line="1762" Column="11" TopLine="1737"/>
</Position>
<Position>
<Filename Value="main.pas"/>
<Caret Line="1769" Column="6" TopLine="1743"/>
</Position>
<Position>
<Filename Value="RebootDialog.pas"/>
<Caret Line="12" Column="81" TopLine="8"/>
</Position>
<Position>
<Filename Value="main.pas"/>
<Caret Line="2058" Column="39" TopLine="2015"/>
</Position>
<Position>
<Filename Value="main.pas"/>
<Caret Line="279" Column="27" TopLine="205"/>
</Position>
<Position>
<Filename Value="main.pas"/>
<Caret Line="288" Column="11" TopLine="275"/>
</Position>
<Position>
<Filename Value="main.pas"/>
<Caret Line="25" Column="63" TopLine="16"/>
</Position>
<Position>
<Filename Value="main.pas"/>
<Caret Line="23" Column="10" TopLine="17"/>
</Position>
<Position>
<Filename Value="main.pas"/>
<Caret Line="2236" TopLine="2210"/>
</Position>
<Position>
<Filename Value="main.pas"/>
<Caret Line="296" Column="19" TopLine="289"/>
</Position>
<Position>
<Filename Value="main.pas"/>
<Caret Line="253" TopLine="212"/>
</Position>
<Position>
<Filename Value="main.pas"/>
<Caret Line="227" TopLine="186"/>
</Position>
<Position>
<Filename Value="main.pas"/>
<Caret Line="219" Column="7" TopLine="184"/>
</Position>
<Position>
<Filename Value="main.pas"/>
<Caret Line="205" Column="5" TopLine="187"/>
</Position>
<Position>
<Filename Value="main.pas"/>
<Caret Line="362" Column="111" TopLine="317"/>
</Position>
<Position>
<Filename Value="main.pas"/>
<Caret Line="360" Column="34" TopLine="333"/>
</Position>
<Position>
<Filename Value="main.pas"/>
<Caret Line="52" Column="33" TopLine="17"/>
</Position>
<Position>
<Filename Value="main.pas"/>
<Caret Line="49" TopLine="23"/>
</Position>
<Position>
<Filename Value="main.pas"/>
<Caret Line="225" TopLine="203"/>
</Position>
<Position>
<Filename Value="main.pas"/>
<Caret Line="117" Column="24" TopLine="104"/>
</Position>
<Position>
<Filename Value="main.pas"/>
<Caret Line="442" Column="20" TopLine="293"/>
</Position>
<Position>
<Filename Value="main.pas"/>
<Caret Line="432" Column="141" TopLine="425"/>
</Position>
<Position>
<Filename Value="main.pas"/>
<Caret Line="431" Column="125" TopLine="422"/>
</Position>
<Position>
<Filename Value="main.pas"/>
<Caret Line="239" Column="7" TopLine="219"/>
</Position>
<Position>
<Filename Value="main.pas"/>
<Caret Line="1868" Column="92" TopLine="1817"/>
</Position>
<Position>
<Filename Value="main.pas"/>
<Caret Line="363" Column="114" TopLine="330"/>
</Position>
<Position>
<Filename Value="libnotify.pas"/>
<Caret Line="25" Column="23"/>
</Position>
<Position>
<Filename Value="main.pas"/>
<Caret Line="363" Column="114" TopLine="315"/>
</Position>
<Position>
<Filename Value="main.pas"/>
<Caret Line="434" Column="15" TopLine="360"/>
</Position>
<Position>
<Filename Value="main.pas"/>
<Caret Line="7" Column="14"/>
</Position>
</JumpHistory>
<RunParams>
<FormatVersion Value="2"/>
<Modes ActiveMode=""/>
</RunParams>
</ProjectSession>
</CONFIG>

BIN
CameraControl.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

View File

@ -1,22 +1,35 @@
program CameraControl;
// Created at 23th of January 2020, by Linuxer (https://gitlab.com/psposito), from scratch with Free Pascal
// Redesigned and further Developed at 28th of January 2020, by Initial developer
// to provide Camera and Mic status alone with On/Off and Mute/Unmute fuctions
// Developed further for intrusion feeling and logging at 2nd of February 2020, by Initial developer
// Developed for Blacklisting/Whitelisting functions for both camera & audio at 7th of February 2020, by Initial developer
// Finalized, except traslations at 15th of February 2020.
// Further Capabilities added alone with better Logging at 22nd of February 2020
// Development Ended at 5th of March 2020. Minor Updates will follow, if needed
{$mode objfpc}{$H+}
{$warnings off}
{$hints off}
// Copyright © 2020 linuxer <linuxer@artixlinux.org> <https://linuxer.gr>
// Created at 23th of January 2020, by Linuxer (https://gitlab.com/linuxergr), from scratch with Free Pascal
// Redesigned and further Developed at 28th of January 2020
// to provide Camera and Mic status alone with On/Off and Mute/Unmute fuctions
// Developed further for intrusion feeling and logging at 2nd of February 2020
// Developed for Blacklisting/Whitelisting functions for both camera & audio at 7th of February 2020
// Finalized, except traslations at 15th of February 2020
// Further Capabilities added alone with better Logging at 22nd of February 2020
// Essential Development Ended at 5th of March 2020. Minor Updates will follow, if needed
// Thanks to Ido Kanner idokan at@at gmail dot.dot com, libnotify has been added to the project, so to solve issues of notifiers and Qt5 on Linux
// https://forum.lazarus.freepascal.org/index.php/topic,52052.0.html
// Wayland and x11 operation confirmed too with the libnotify addition
// Further project development for the next major release 2.1.0, as from 3rd of Nov 2020 / ended at 6th of Nov 2020
uses
{$IFDEF UNIX}
cthreads,
cthreads,
{$ENDIF}
{$IFDEF LINUX}
{$IFDEF FPC_CROSSCOMPILING}
{$IFDEF CPUARM}
{$linklib GLESv2}
{$ENDIF}
{$linklib libc_nonshared.a}
{$ENDIF}
{$ENDIF}
Interfaces, // this includes the LCL widgetset
Forms, Logs, About, Reboot, RebootDialog, OutputForm, Main, MessageForm,
InputForm, PidsList;
@ -37,4 +50,4 @@ begin
Application.CreateForm(TForm8, Form8);
Application.CreateForm(TForm9, Form9);
Application.Run;
end.
end.

27
CameraControl.sh Executable file → Normal file
View File

@ -1,22 +1,39 @@
#!/usr/bin/bash
export MYSECRET='mysecretkey'
export MYSECRET='sudopasswordtexxt'
package_type=$(command -v pacman || command -v apt || command -v yum)
distropack=${package_type:9}
if [[ ${package_type:9} == "apt" ]];
then
distro='Debian'
distro='Debian'
elif [[ ${package_type:9} == "pacman" ]];
then
distro='Arch'
else
else
distro='RPM'
fi
#echo $distropack
#echo $distro
/opt/CameraControl/cameracontrol.bin -$distro >/dev/null
cd $HOME/FPC\ Projects/CameraControl/build
session_type=$XDG_SESSION_TYPE
#QT_QPA_PLATFORM selection for xcb / wayland
if [[ ${session_type} -eq "x11" ]]; then
QT_QPA_PLATFORM=xcb /opt/CameraControl/cameracontrol.bin -$distro >/dev/null
exit 0
fi
if [[ ${session_type} -eq "wayland" ]]; then
QT_QPA_PLATFORM=wayland /opt/CameraControl/cameracontrol.bin >/dev/null
exit 0
fi
#qt_session=$QT_QPA_PLATFORM
# So use the line below for execution
#QT_QPA_PLATFORM=xcb /opt/CameraControl/cameracontrol.bin -$distro >/dev/null

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +0,0 @@
{"version":1,"strings":[
{"hash":69717380,"name":"tform6.caption","sourcebytes":[79,108,100,32,76,111,103,115,32,70,105,108,101,115,32,76,105,115,116],"value":"Old Logs Files List"},
{"hash":1371,"name":"tform6.button1.caption","sourcebytes":[79,107],"value":"Ok"}
]}

5708
InputForm.frm Executable file → Normal file

File diff suppressed because it is too large Load Diff

13
InputForm.pas Executable file → Normal file
View File

@ -4,20 +4,25 @@ unit InputForm;
{$warnings off}
{$hints off}
// Created at 23th of January 2020, by Linuxer (https://gitlab.com/psposito), from scratch with Free Pascal
// Copyright © 2020 linuxer <linuxer@artixlinux.org> <https://linuxer.gr>
// Created at 23th of January 2020, by Linuxer (https://gitlab.com/linuxergr), from scratch with Free Pascal
// Redesigned and further Developed at 28th of January 2020, by Initial developer
// to provide Camera and Mic status alone with On/Off and Mute/Unmute fuctions
// Developed further for intrusion feeling and logging at 2nd of February 2020, by Initial developer
// Developed for Blacklisting/Whitelisting functions for both camera & audio at 7th of February 2020, by Initial developer
// Finalized, except traslations at 15th of February 2020.
// Further Capabilities added alone with better Logging at 22nd of February 2020
// Development Ended at 5th of March 2020. Minor Updates will follow, if needed
// Essential Development Ended at 5th of March 2020. Minor Updates will follow, if needed
// Thanks to Ido Kanner idokan at@at gmail dot.dot com, libnotify has been added to the project, so to solve issues of notifiers and Qt5 on Linux
// https://forum.lazarus.freepascal.org/index.php/topic,52052.0.html
// Wayland and x11 operation confirmed too with the libnotify addition
// Further project development for the next major release 2.1.0, as from 3rd of Nov 2020 / ended at 6th of Nov 2020
interface
uses
{$IFDEF UNIX}
cthreads,
cthreads,
{$ENDIF}
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, TplLabelUnit,
LCLIntf, ExtCtrls, MaskEdit, Logs, Unix;
@ -70,4 +75,4 @@ begin
Form7.Hide;
end;
end.
end.

36
Logs.frm Executable file → Normal file
View File

@ -1,13 +1,12 @@
object Form3: TForm3
Left = 468
Height = 684
Height = 438
Top = 45
Width = 1129
Width = 722
BorderStyle = bsToolWindow
Caption = 'Events Logged'
ClientHeight = 684
ClientWidth = 1129
DesignTimePPI = 150
ClientHeight = 438
ClientWidth = 722
Icon.Data = {
BE2500000000010001003030000001002000A825000016000000280000003000
0000600000000100200000000000002400006400000064000000000000000000
@ -314,21 +313,22 @@ object Form3: TForm3
3C46
}
Position = poScreenCenter
LCLVersion = '7.0'
LCLVersion = '7.2'
object Button1: TButton
Left = 0
Height = 56
Top = 624
Width = 1129
Height = 36
Top = 399
Width = 722
Caption = 'Close'
OnClick = Button1Click
ParentFont = False
TabOrder = 0
end
object StringGrid1: TStringGrid
Left = 2
Height = 600
Top = 16
Width = 1126
Left = 1
Height = 384
Top = 10
Width = 720
AutoAdvance = aaDown
Color = clDefault
ColCount = 4
@ -337,14 +337,14 @@ object Form3: TForm3
RowCount = 1
ScrollBars = ssAutoVertical
TabOrder = 1
TitleFont.Height = -21
TitleFont.Height = -13
TitleFont.Name = 'Sans'
TitleImageList = Form1.ImageListStatus
ColWidths = (
56
273
523
255
36
175
335
163
)
Cells = (
4

363
Logs.lfm
View File

@ -1,363 +0,0 @@
object Form3: TForm3
Left = 468
Height = 684
Top = 45
Width = 1129
BorderStyle = bsToolWindow
Caption = 'Events Logged'
ClientHeight = 684
ClientWidth = 1129
DesignTimePPI = 150
Icon.Data = {
BE2500000000010001003030000001002000A825000016000000280000003000
0000600000000100200000000000002400006400000064000000000000000000
0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000010000
00010000000100000001FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000010000
0004000000080000000B0000000D0000000F0000001100000012000000130000
0013000000130000001300000012000000110000000F0000000D0000000B0000
00080000000400000001FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF0000000002000000080000000C000000100000
0014000000170000001A0000001D000000200000002200000023000000240000
002500000025000000240000002300000022000000200000001D0000001A0000
001700000014000000100000000C0000000800000002FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0000000002000000090000000E00000013000000180000001C0C0C
0C292B29257632302AA3373530C9383631E7383730F2383631F6373630FA3634
2EFD36342EFD373630FA383631F6383630F2373631E637362FC831302BA12C29
25750D0D07270000001C00000018000000130000000E0000000900000002FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00000000050000000B00000010000000160000001C070707242F2D288D3734
2FF3464541F65F5F5CFF6D6E6CFF7C7E7CFF8A8C8AFF959997FFA2A5A3FFAFB2
B0FFB0B3B1FFA7AAA8FF9D9F9EFF949694FF8A8C8AFF7C7D7BFF70706EFF4F4F
4AF636342EF22F2D2789000000230000001B00000016000000100000000B0000
0005FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
0003000000090000000F000000150000001B000000212A28236D393832F65354
53FF626462FF676968FF6F7270FF767978FF7E817FFF858987FF8C908EFF9397
95FF929694FF8C908EFF858886FF7F8381FF7A7D7CFF767977FF747776FF8285
83FF777977FF3F3E39F628252367000000200000001B000000150000000F0000
000900000003FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
00040000000A00000010000000160000001C0000002234322DD140423FFF4F51
50FF575A58FF606261FF686B69FF707372FF797C7AFF818583FF898D8BFF9296
94FF919593FF888C8AFF7E8280FF757977FF6C6F6EFF626664FF595C5BFF4F53
51FF626463FF5A5C5AFF32312CCB00000026000000200000001B000000140000
000C00000004FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
0001000000080000000D00000013000000190000001E36332EEE434644FF4F51
50FF575A58FF606261FF676A68FF6D706FFF747775FF797D7BFF7F8281FF868A
88FF868987FF7F8381FF787C7AFF727674FF6A6D6CFF626664FF595C5BFF4F53
51FF4B4E4DFF5E5F5EFF35342DF117171758191919531A1A1A4D1B1B1B430E0E
0E35000000270000001D00000004FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF0000000001000000070000000D000000120000001733322DAA3F403CFE4F51
50FF565957FF5D5F5EFF606361FF626564FF646765FF676A68FF6A6D6BFF6F72
70FF6F7371FF6C6F6DFF676B69FF646866FF626564FF5E6260FF585B5AFF4F53
51FF4D4F4EFF464744FF40413CF7535654EA535654EA535654E9525654EC5357
55F6535755FE525553DD3E3E3E2DFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF0000000002000000080000000D2E2B2859393833F34E50
4FFF525553FF525453FF505251FF505252FF5E615EFF676B69FF6F7271FF797E
7BFF7A7E7CFF6F7271FF676A69FF5E6160FF525554FF515553FF525454FF4D51
4FFF464948FF383732F22E2B28530000000D0000000800000002000000010000
000C1111111E525554D454575689FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000011717170B363530DC4040
3EFC494B49FF5E605FFF7C7F7EFF878D8BFFA6A9A8FFBCBEBDFFCBCCCBFFD5D6
D6FFD5D6D6FFCACCCBFFBBBEBDFFA5A8A6FF888D8BFF7B7F7DFF5F6361FF4A4D
4BFF3E3E3BFC37342ED71C1C1C09FFFFFF00FFFFFF00000000080909091D494E
4C6C535655DB5356549D80808002FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF003A3A342C5355
51F9838786FFAEB1B0FFDBDCDCFFEFEFEFFFEEEEEEFFECECECFFEAEAEAFFE8E8
E8FFE8E8E8FFEAEAEAFFECECECFFEEEEEEFFEFEFEFFFDADBDBFFADB0AFFF8488
86FF565754F73C3C3522FFFFFF00FFFFFF00FFFFFF0041484452525754DD5357
55B053585337FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF008288882F898E8CE6ACAF
AEFBE6E6E6FFEFEFEFFFE7E7E7FFE0E0E0FFDEDEDEFFDDDDDDFFDCDCDCFFDCDC
DCFFDCDCDCFFDCDCDCFFDDDDDDFFDEDEDEFFE0E0E0FFE7E7E7FFEFEFEFFFE6E7
E6FFAFB2B1F88B8F8DE0868C862AFFFFFF00FFFFFF00515754C24C4E4C680000
0001FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00868C895D8E9391F5D7D9D8FEEEEE
EEFFE2E2E2FFDBDBDBFFD9D9D9FFD7D7D7FFD6D6D6FFD5D5D5FFD4D4D4FFD4D4
D4FFD4D4D4FFD4D4D4FFD5D5D5FFD6D6D6FFD7D7D7FFD9D9D9FFDBDBDBFFE2E2
E2FFEEEEEEFFD7D8D7FE8E9290F4888B8B56FFFFFF0054585443515653912C2C
2C1700000002FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF008C918F66989D9BF6E5E5E5FFE7E7E7FFD9D9
D9FFD6D6D6FFD3D3D3FFD1D1D1FFCFCFCFFFCECECEFFCDCDCDFFCCCCCCFFCCCC
CCFFCCCCCCFFCCCCCCFFCDCDCDFFCECECEFFCFCFCFFFD1D1D1FFD3D3D3FFD6D6
D6FFD9D9D9FFE7E7E7FFE4E4E4FF969B99F68C8E8E5FFFFFFF005155553C5156
535F47474712FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00888F8C49949897F6E6E6E6FFE1E1E1FFD4D4D4FFD1D1
D1FFCECECEFFCCCCCCFFC9C9C9FFC8C8C8FFC6C6C6FFC5C5C5FFC4C4C4FFC4C4
C4FFC4C4C4FFC4C4C4FFC5C5C5FFC6C6C6FFC8C8C8FFC9C9C9FFCCCCCCFFCECE
CEFFD1D1D1FFD4D4D4FFE1E1E1FFE5E6E6FF949897F5898D8D43FFFFFF004E59
591755555521FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF008A918A25909694F4DEE0DFFFE0E0E0FFD1D1D1FFCDCDCDFFCACA
CAFFC7C7C7FFC4C4C4FFC2C2C2FFC2C2C2FFCECECEFFDDDDDDFFE9E9E9FFF3F3
F3FFF3F3F3FFE9E9E9FFDDDDDDFFCECECEFFC2C2C2FFC2C2C2FFC4C4C4FFC7C7
C7FFCACACAFFCDCDCDFFD1D1D1FFE1E1E1FFDEE0DFFF909795F28A928A23FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00909794BCCBCCCCFDE2E2E2FFCECECEFFCACACAFFC6C6C6FFC3C3
C3FFC2C2C2FFC5C5C5FFC9C9C9FFE0E0E0FFE6E6E6FFADADADFF747473FF3737
35FF373735FF747473FFADADACFFE6E6E6FFE0E0E0FFC9C9C9FFC5C5C5FFC2C2
C2FFC3C3C3FFC6C6C6FFCACACAFFCECECEFFE2E2E2FFCBCCCBFD919693B9FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF008D9491439EA3A1F4E6E7E7FFCFCFCFFFC7C7C7FFC3C3C3FFC3C3C3FFC6C6
C6FFC8C8C8FFD1D1D1FFE7E7E7FFAAAAA9FF20201EFF3E3D3BFF51504EFF6564
62FF656462FF52504EFF3E3D3BFF232221FFA9A9A9FFE7E7E7FFD1D1D1FFC8C8
C8FFC5C5C5FFC2C2C2FFC3C3C3FFC7C7C7FFCFCFCFFFE7E7E7FF9CA09EF58C94
903EFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00939997CED3D5D4FFD7D7D7FFC6C6C6FFC1C1C1FFC5C5C5FFC8C8C8FFCBCB
CBFFCFCFCFFFE2E2E2FF5A5A59FF2B2B29FF5F5D5BFF594D42FF523D2DFF553A
28FF573E2BFF574232FF594B42FF5F5E5CFF2D2C2AFF5A5A59FFE2E2E2FFCFCF
CFFFCBCBCBFFC8C8C8FFC5C5C5FFC1C1C1FFC6C6C6FFD9D9D9FFD2D3D3FF9499
96CAFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF008F99
8F19989D9AF7E5E5E5FFC6C6C6FFC2C2C2FFC6C6C6FFCACACAFFCDCDCDFFD1D1
D1FFDCDCDCFF939392FF292826FF5E5A55FF503A29FF453828FF31716FFF18A9
B6FF18ACBAFF357878FF4E4334FF513A29FF5E5A56FF2B2A28FF90908FFFDCDC
DCFFD1D1D1FFCDCDCDFFCACACAFFC6C6C6FFC2C2C2FFC7C7C7FFE4E4E4FF979C
99F88B979716FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF009297
956CB8BBBAF7DBDBDBFFC2C2C2FFC7C7C7FFCBCBCBFFCFCFCFFFD3D3D3FFD7D7
D7FFC4C4C3FF1A1918FF53524FFF503928FF442D1CFF364F49FF3E5A58FF4D5A
56FF54615CFF486562FF415E59FF4C3625FF513928FF545250FF191917FFC0C0
BFFFD7D7D7FFD3D3D3FFCFCFCFFFCBCBCBFFC7C7C7FFC2C2C2FFDBDBDBFFB7BA
B8F592979565FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00999D
9BC0D0D1D1FFCFCFCFFFC7C7C7FFCBCBCBFFD0D0D0FFD4D4D4FFD8D8D8FFDBDB
DBFF727271FF31302EFF504339FF482E1DFF38281CFF3B352EFF474642FF5C5B
59FF6B6A68FF5D5B59FF4F4841FF47372CFF472E1CFF514338FF32312FFF7272
71FFDBDBDBFFD8D8D8FFD4D4D4FFCFCFCFFFCBCBCBFFC7C7C7FFCFCFCFFFCFD0
CFFF989C9BB7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00999E
9DDFD7D7D7FFCDCDCDFFCBCBCBFFCFCFCFFFD4D4D4FFD8D8D8FFDDDDDDFFE1E1
E1FF3D3D3BFF3B3A37FF4E3828FF402C1CFF30241BFF31302CFF363532FF1313
12FF161615FF464543FF474542FF3F342CFF3F2B1CFF4F3928FF3D3B39FF3D3D
3BFFE0E0E0FFDDDDDDFFD8D8D8FFD4D4D4FFCFCFCFFFCBCBCBFFCDCDCDFFD5D6
D5FF999E9CD8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00999E
9DF4DFDFDFFFCCCCCCFFCECECEFFD3D3D3FFD8D8D8FFDDDDDDFFE1E1E1FFE5E5
E5FF161614FF434240FF4E3321FF3C2A1CFF2A231BFF2A2926FF0D0D0CFF0000
00FF000000FF10100FFF3E3C39FF352C26FF3B291CFF4E3320FF454442FF1616
14FFE5E5E5FFE1E1E1FFDDDDDDFFD8D8D8FFD3D3D3FFCECECEFFCCCCCCFFDDDE
DEFF999F9EEEFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00AAAAAA03999F
9CFEE5E5E5FFCECECEFFD2D2D2FFD7D7D7FFDCDCDCFFE1E1E1FFE6E6E6FFEAEA
EAFF161614FF3E3D3AFF4D3320FF3C2A1CFF2A231BFF1F1D1AFF0A0A09FF0000
00FF000000FF0C0C0BFF302E2BFF2B221AFF3B291CFF4D321FFF3F3E3BFF1616
14FFEAEAEAFFE5E5E5FFE1E1E1FFDCDCDCFFD7D7D7FFD2D2D2FFCECECEFFE4E4
E4FF9AA09DFCFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF009CA2
9FF5E2E2E2FFD3D3D3FFD5D5D5FFDADADAFFE0E0E0FFE5E5E5FFE9E9E9FFEEEE
EEFF41413FFF2E2D2AFF493424FF402C1CFF2F241BFF2A2724FF51504EFF6362
62FF646363FF545351FF292724FF2F241BFF3F2B1CFF4B3524FF2F2E2BFF4141
3FFFEEEEEEFFE9E9E9FFE4E4E4FFDFDFDFFFDADADAFFD5D5D5FFD2D2D2FFE1E1
E1FF9CA39FF0FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF009FA5
A3E0DDDEDEFFD7D7D7FFD8D8D8FFDDDDDDFFE3E3E3FFE8E8E8FFEDEDEDFFF2F2
F2FF7D7D7CFF242320FF42352AFF472E1CFF38281CFFA19D9AFFD4D4D3FFD4D4
D3FFD4D4D3FFD4D4D3FFA19D9AFF38271CFF462E1CFF43352BFF252421FF7D7D
7CFFF2F2F2FFEDEDEDFFE8E8E8FFE2E2E2FFDDDDDDFFD7D7D7FFD7D7D7FFDBDC
DCFF9FA5A3D9FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00A0A7
A4C4D7D8D8FFDDDDDDFFDADADAFFE0E0E0FFE5E5E5FFEBEBEBFFF0F0F0FFF5F5
F5FFD9D9D9FF171614FF2E2C29FF493120FF432D1CFFC1BCB9FFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFC1BCB9FF432D1CFF493120FF302D2AFF151513FFD5D5
D4FFF5F5F5FFF0F0F0FFEBEBEBFFE5E5E5FFDFDFDFFFDADADAFFDDDDDDFFD5D6
D6FFA1A6A4BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00A0A7
A571C2C5C4F8E5E5E5FFDCDCDCFFE2E2E2FFE7E7E7FFEDEDEDFFF1F2F3FFF5F8
F8FFFCFEFEFF8F908FFF1E1E1CFF312C27FF48301FFF5A4333FFAEA6A0FFE4E2
E0FFE4E2E0FFAEA6A0FF594333FF48301FFF312C27FF1E1E1CFF8C8C8BFFFDFD
FDFFF8F8F8FFF2F2F2FFEDEDEDFFE7E7E7FFE1E1E1FFDCDCDCFFE5E5E5FFC2C5
C4F6A0A7A26BFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF009EA7
A71DA9AEABF6EBEBEBFFDEDEDEFFE3E3E3FFE8E9E9FFE8EEEFFFD9F0F3FFCCF3
F7FFD8F8FCFFECFAFCFF434644FF1B1A18FF23211FFF392B20FF452F1EFF4B30
1DFF4B301DFF452F1EFF392A20FF252320FF1B1B19FF444442FFFDFDFDFFFFFF
FFFFFAFAFAFFF4F4F4FFEFEFEFFFE9E9E9FFE3E3E3FFDEDEDEFFEBEBEBFFA8AD
ABF79DA7A71AFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00A6ACAAD5DDDEDEFFE6E6E6FFE4E4E4FFE6E9E9FFD0ECEFFF53D1C7FF0AC2
B6FF1FC5B8FFA0E8E7FFECFAFBFF90908FFF141412FF181715FF1A1916FF1F1D
1BFF1F1E1BFF1A1916FF171614FF161514FF8F8F8EFFFDFDFDFFFFFFFFFFFFFF
FFFFFBFBFBFFF5F5F5FFEFEFEFFFEAEAEAFFE4E4E4FFE6E6E6FFDCDDDDFFA7AC
ABD1FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00A4ABA84CB5BAB8F4EEEEEEFFE4E5E5FFE2E9EAFFA3E2E3FF03C6BCFF88E8
EFFF2DD2D7FF36CABEFFDDF9FCFFFFFFFFFFDBDBDBFF80807FFF434341FF1717
15FF171715FF434341FF80807FFFDBDBDBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFCFCFCFFF6F6F6FFF0F0F0FFEAEAEAFFE5E5E5FFEEEEEEFFB3B9B7F4A4AB
A846FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00ACB1AFC5D9DBDAFEECEDEDFFE2E9EAFFA3E2E3FF03CABEFF79E7
EEFF25D4D7FF35CABEFFDDF9FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFBFBFBFFF6F6F6FFF0F0F0FFEAEAEAFFEDEDEDFFD9DBDAFEACB1AFC2FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00A8AEAE2CB0B6B3F5EAEAEAFFEBEEEEFFCEEBEEFF4CCDC4FF07C6
B7FF19C6B7FF9DE7E6FFEEFCFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFAFAFAFFF4F4F4FFEFEFEFFFEFEFEFFFEAEAEAFFB1B6B3F4AAB0AA2AFFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00ACB5AF56B7BEBCF6EEF0F0FFE9F0F1FFD7EFF2FFCAF0
F5FFD7F7FBFFEDFCFDFFFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFE
FEFFF8F8F8FFF3F3F3FFF1F1F1FFEFEFEFFFB7BDBAF6AEB2B24FFFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00B1B8B676C0C4C2F5EFEFEFFFF3F5F5FFF3F6
F6FFF8FAFAFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFB
FBFFF6F6F6FFF5F5F5FFEFF0F0FFBEC3C0F6B0B7B56EFFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00B5BCB96EBAC0BEF6E9EBEAFFF7F7
F7FFF8F8F8FFFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFFF8F8
F8FFF7F7F7FFEAEBEBFEB9C1BDF5B5BAB767FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00B4BDB93ABAC0BEECD7DA
D9F7F4F5F5FFFAFAFAFFFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFFFAFAFAFFF4F5
F5FFD7DAD9F6B9C1BEEAB7BCBC35FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00B6C8B60EBCC2
C082C0C7C4F4DBDFDEF9F2F3F3FFEADDD3FFC59E7FFFBC8C67FFB98760FFB682
5AFFB6825AFFB98760FFBC8D67FFC69F80FFEADED4FFF1F3F2FFDBDFDEF8BFC7
C3F4BDC3C17FBFBFBF0CFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00C3C3C311C2C8C47EC5CBC8D8A86E41FFBC8657FFC39064FFC49163FFC592
64FFC59264FFC49062FFC39063FFBA8355FFAA7043FEC5CCC8D6C1CAC57CBFBF
BF10FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00A96C3DBDB88255FACFA57EFFD8B28DFFD9B3
8FFFD8B18DFFD9B48FFFD3AA84FFB88457FAA86C3DB8FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00AA552B06A5673783A76939D4A56635F8B077
49F5B1794AF5A86C3CF7A66838D2A566367FAA552B06FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FF000001A363
3224A8663323FF000001FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00000000000000202000000000000046690000000000002056000000000000
6D61000000000000222F00000000000020200000000000006574000000000000
22330000000000006C750000000000002220000000000000653D000000000000
3E0A0000000000003C2F0000000000006F6E0000000000002020000000000000
69740000000000000A20000000000000203C0000000000006D65000000000000
3D22000000000000617300000000000020200000000000006172000000000000
653D000000000000546F00000000000022350000000000002020000000000000
506F00000000000032340000000000002020000000000000696F000000000000
2020000000000000466900000000000020560000000000005265000000000000
616C000000000000222F00000000000020200000000000006574000000000000
22380000000000006D6E0000000000000A200000000000002F50000000000000
6E32000000000000202000000000000074690000000000002020000000000000
3C46
}
Position = poScreenCenter
LCLVersion = '7.0'
object Button1: TButton
Left = 0
Height = 56
Top = 624
Width = 1128
Caption = 'Close'
OnClick = Button1Click
TabOrder = 0
end
object StringGrid1: TStringGrid
Left = 2
Height = 600
Top = 16
Width = 1126
Color = clDefault
ColCount = 4
ParentFont = False
RowCount = 1
ScrollBars = ssAutoVertical
TabOrder = 1
TitleFont.Height = -21
TitleFont.Name = 'Sans'
TitleImageList = Form1.ImageListStatus
ColWidths = (
56
273
523
255
)
Cells = (
4
0
0
'No.'
1
0
'DateTime Stamp'
2
0
'Event Description'
3
0
'Video Devices Number'
)
end
end

View File

@ -1,4 +0,0 @@
{"version":1,"strings":[
{"hash":167347876,"name":"tform3.caption","sourcebytes":[69,118,101,110,116,115,32,76,111,103,103,101,100],"value":"Events Logged"},
{"hash":4863637,"name":"tform3.button1.caption","sourcebytes":[67,108,111,115,101],"value":"Close"}
]}

13
Logs.pas Executable file → Normal file
View File

@ -4,20 +4,25 @@ unit Logs;
{$warnings off}
{$hints off}
// Created at 23th of January 2020, by Linuxer (https://gitlab.com/psposito), from scratch with Free Pascal
// Copyright © 2020 linuxer <linuxer@artixlinux.org> <https://linuxer.gr>
// Created at 23th of January 2020, by Linuxer (https://gitlab.com/linuxergr), from scratch with Free Pascal
// Redesigned and further Developed at 28th of January 2020, by Initial developer
// to provide Camera and Mic status alone with On/Off and Mute/Unmute fuctions
// Developed further for intrusion feeling and logging at 2nd of February 2020, by Initial developer
// Developed for Blacklisting/Whitelisting functions for both camera & audio at 7th of February 2020, by Initial developer
// Finalized, except traslations at 15th of February 2020.
// Further Capabilities added alone with better Logging at 22nd of February 2020
// Development Ended at 5th of March 2020. Minor Updates will follow, if needed
// Essential Development Ended at 5th of March 2020. Minor Updates will follow, if needed
// Thanks to Ido Kanner idokan at@at gmail dot.dot com, libnotify has been added to the project, so to solve issues of notifiers and Qt5 on Linux
// https://forum.lazarus.freepascal.org/index.php/topic,52052.0.html
// Wayland and x11 operation confirmed too with the libnotify addition
// Further project development for the next major release 2.1.0, as from 3rd of Nov 2020 / ended at 6th of Nov 2020
interface
uses
{$IFDEF UNIX}
cthreads,
cthreads,
{$ENDIF}
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, Grids, StdCtrls,
VpClock;
@ -50,4 +55,4 @@ begin
Form3.Close;
end;
end.
end.

6904
MessageForm.frm Executable file → Normal file

File diff suppressed because it is too large Load Diff

13
MessageForm.pas Executable file → Normal file
View File

@ -4,20 +4,25 @@ unit MessageForm;
{$warnings off}
{$hints off}
// Created at 23th of January 2020, by Linuxer (https://gitlab.com/psposito), from scratch with Free Pascal
// Copyright © 2020 linuxer <linuxer@artixlinux.org> <https://linuxer.gr>
// Created at 23th of January 2020, by Linuxer (https://gitlab.com/linuxergr), from scratch with Free Pascal
// Redesigned and further Developed at 28th of January 2020, by Initial developer
// to provide Camera and Mic status alone with On/Off and Mute/Unmute fuctions
// Developed further for intrusion feeling and logging at 2nd of February 2020, by Initial developer
// Developed for Blacklisting/Whitelisting functions for both camera & audio at 7th of February 2020, by Initial developer
// Finalized, except traslations at 15th of February 2020.
// Further Capabilities added alone with better Logging at 22nd of February 2020
// Development Ended at 5th of March 2020. Minor Updates will follow, if needed
// Essential Development Ended at 5th of March 2020. Minor Updates will follow, if needed
// Thanks to Ido Kanner idokan at@at gmail dot.dot com, libnotify has been added to the project, so to solve issues of notifiers and Qt5 on Linux
// https://forum.lazarus.freepascal.org/index.php/topic,52052.0.html
// Wayland and x11 operation confirmed too with the libnotify addition
// Further project development for the next major release 2.1.0, as from 3rd of Nov 2020 / ended at 6th of Nov 2020
interface
uses
{$IFDEF UNIX}
cthreads,
cthreads,
{$ENDIF}
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, TplLabelUnit,
LCLIntf, ExtCtrls, Logs, Unix;
@ -57,4 +62,4 @@ begin
//Form8.Hide;
end;
end.
end.

4935
OutputForm.frm Executable file → Normal file

File diff suppressed because it is too large Load Diff

15
OutputForm.pas Executable file → Normal file
View File

@ -1,21 +1,28 @@
unit OutputForm;
{$mode objfpc}{$H+}
{$warnings off}
{$hints off}
// Created at 23th of January 2020, by Linuxer (https://gitlab.com/psposito), from scratch with Free Pascal
// Copyright © 2020 linuxer <linuxer@artixlinux.org> <https://linuxer.gr>
// Created at 23th of January 2020, by Linuxer (https://gitlab.com/linuxergr), from scratch with Free Pascal
// Redesigned and further Developed at 28th of January 2020, by Initial developer
// to provide Camera and Mic status alone with On/Off and Mute/Unmute fuctions
// Developed further for intrusion feeling and logging at 2nd of February 2020, by Initial developer
// Developed for Blacklisting/Whitelisting functions for both camera & audio at 7th of February 2020, by Initial developer
// Finalized, except traslations at 15th of February 2020.
// Further Capabilities added alone with better Logging at 22nd of February 2020
// Development Ended at 5th of March 2020. Minor Updates will follow, if needed
// Essential Development Ended at 5th of March 2020. Minor Updates will follow, if needed
// Thanks to Ido Kanner idokan at@at gmail dot.dot com, libnotify has been added to the project, so to solve issues of notifiers and Qt5 on Linux
// https://forum.lazarus.freepascal.org/index.php/topic,52052.0.html
// Wayland and x11 operation confirmed too with the libnotify addition
// Further project development for the next major release 2.1.0, as from 3rd of Nov 2020 / ended at 6th of Nov 2020
interface
uses
{$IFDEF UNIX}
cthreads,
cthreads,
{$ENDIF}
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, TplLabelUnit,
LCLIntf, ExtCtrls, Logs, Unix;
@ -51,4 +58,4 @@ begin
Form6.Hide;
end;
end.
end.

51
PidsList.frm Executable file → Normal file
View File

@ -1,21 +1,20 @@
object Form9: TForm9
Left = 584
Height = 320
Height = 205
Top = 48
Width = 340
Width = 218
BorderStyle = bsToolWindow
Caption = 'Camera Control - Killed Pids '
ClientHeight = 320
ClientWidth = 340
DesignTimePPI = 150
ClientHeight = 205
ClientWidth = 218
Font.Style = [fsBold]
Position = poScreenCenter
LCLVersion = '7.0'
LCLVersion = '7.2'
object Button1: TButton
Left = 0
Height = 56
Top = 256
Width = 338
Height = 36
Top = 164
Width = 216
Caption = 'Οκ'
Font.Style = [fsBold]
OnClick = Button1Click
@ -25,10 +24,8 @@ object Form9: TForm9
object Image1: TImage
Left = 0
Height = 64
Top = 16
Top = 10
Width = 64
Constraints.MaxHeight = 64
Constraints.MaxWidth = 64
Picture.Data = {
07544269746D61708A3F0000424D8A3F0000000000008A0000007C0000004000
00003F0000000100200003000000003F0000130B0000130B0000000000000000
@ -542,39 +539,39 @@ object Form9: TForm9
}
end
object Label1: TLabel
Left = 136
Height = 26
Top = 71
Width = 58
Left = 87
Height = 20
Top = 45
Width = 34
Caption = 'None'
Font.Style = [fsBold]
ParentColor = False
ParentFont = False
end
object ScrollBar1: TScrollBar
Left = 319
Height = 232
Top = 16
Left = 204
Height = 148
Top = 10
Width = 13
Kind = sbVertical
PageSize = 0
TabOrder = 1
end
object Label2: TLabel
Left = 104
Height = 26
Top = 16
Width = 154
Left = 67
Height = 20
Top = 10
Width = 93
Caption = 'Pids Numbers'
Font.Style = [fsBold]
ParentColor = False
ParentFont = False
end
object Bevel1: TBevel
Left = 95
Height = 18
Top = 49
Width = 166
Left = 61
Height = 12
Top = 31
Width = 106
Shape = bsBottomLine
Style = bsRaised
end

13
PidsList.pas Executable file → Normal file
View File

@ -4,20 +4,25 @@ unit PidsList;
{$warnings off}
{$hints off}
// Created at 23th of January 2020, by Linuxer (https://gitlab.com/psposito), from scratch with Free Pascal
// Copyright © 2020 linuxer <linuxer@artixlinux.org> <https://linuxer.gr>
// Created at 23th of January 2020, by Linuxer (https://gitlab.com/linuxergr), from scratch with Free Pascal
// Redesigned and further Developed at 28th of January 2020, by Initial developer
// to provide Camera and Mic status alone with On/Off and Mute/Unmute fuctions
// Developed further for intrusion feeling and logging at 2nd of February 2020, by Initial developer
// Developed for Blacklisting/Whitelisting functions for both camera & audio at 7th of February 2020, by Initial developer
// Finalized, except traslations at 15th of February 2020.
// Further Capabilities added alone with better Logging at 22nd of February 2020
// Development Ended at 5th of March 2020. Minor Updates will follow, if needed
// Essential Development Ended at 5th of March 2020. Minor Updates will follow, if needed
// Thanks to Ido Kanner idokan at@at gmail dot.dot com, libnotify has been added to the project, so to solve issues of notifiers and Qt5 on Linux
// https://forum.lazarus.freepascal.org/index.php/topic,52052.0.html
// Wayland and x11 operation confirmed too with the libnotify addition
// Further project development for the next major release 2.1.0, as from 3rd of Nov 2020 / ended at 6th of Nov 2020
interface
uses
{$IFDEF UNIX}
cthreads,
cthreads,
{$ENDIF}
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, ExtCtrls;
@ -57,4 +62,4 @@ begin
end;
end.
end.

View File

@ -8,7 +8,7 @@
- For all of the above to be succeded, `the sudo password is necessary to be provided on a copy of /opt/CameraControl.sh to your Home folder`, edited as shown here with the correct sudo password at the sudopasswordtext field.
![Screenshot](https://imgur.com/UkxsDi3.png)
![Screenshot](https://i.imgur.com/iJzG3z3.png)
- RPM is not valid yet. I do not have any feedback and testing from such distributions.
@ -17,10 +17,10 @@
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
# Some screenshots (but also see the latest [release videos](https://gitlab.com/psposito/camera-control-webcam-switch-indicator/-/blob/master/README.md#video-demos) below:
### Some screenshots (but also see the latest [release videos](https://gitlab.com/psposito/camera-control-webcam-switch-indicator/-/blob/master/README.md#video-demos) below:
(Leftside of images is the System Blacklist/Whitelist added functions, Camera / Microphone Shield status tray icon, Microphone Staus Icon and the last is the Camera Control tray icon):
### Note: Some of them belong to previous versions, but are more, or less, the same outputs, except that from 2.0.2 Release, are normal Windovw Forms, not messages.
#### Note: Some of them belong to previous versions, but are more, or less, the same outputs, except that from 2.0.2 Release, are normal Windovw Forms, not messages.
- Microphone Unmuted, Camera On:
@ -103,23 +103,23 @@
![Screenshot](https://imgur.com/bUjoU0j.png)
# Video Demos:
### Video Demos:
- ## The Big Release 2.0.2 Demo
- #### The Big Release 2.0.2 Demo
- [![Release 2.0.2 Demo](http://img.youtube.com/vi/8b2H3lYPNc8/0.jpg)](http://www.youtube.com/watch?v=8b2H3lYPNc8 "Camera Control 2.0-2")
- [![Release 2.0.2 Demo](http://img.youtube.com/vi/8b2H3lYPNc8/0.jpg)](http://www.youtube.com/watch?v=8b2H3lYPNc8)
- ### Release 2.0.1
#### Demo
- [![Release 2.0-1 Demo](http://img.youtube.com/vi/V-VOqm7Cbi8/0.jpg)](http://www.youtube.com/watch?v=V-VOqm7Cbi8 "Release 2.0-1 Demo")
- [![Release 2.0-1 Demo](http://img.youtube.com/vi/V-VOqm7Cbi8/0.jpg)](http://www.youtube.com/watch?v=V-VOqm7Cbi8)
#### Further Information for the release
- [![Release 2.0-1 Info](http://img.youtube.com/vi/2F9eMjQEzGc/0.jpg)](http://www.youtube.com/watch?v=2F9eMjQEzGc "Release 2.0-1 Info")
- [![Release 2.0-1 Info](http://img.youtube.com/vi/2F9eMjQEzGc/0.jpg)](http://www.youtube.com/watch?v=2F9eMjQEzGc)
- #### [Previous Videos at Youtube Playlist](https://www.youtube.com/playlist?list=PLAG2B-41QEHVhg2O8flo-gUIE1Mfg8iRt))
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
# Prerequisites
### Prerequisites
#### For Desktops not based on Gtk, but on Qt i.e. KDE, LxQt etc, it may be neccessary to be installed, for proper appearance of icons, menus e.t.c., the following package:
@ -139,6 +139,6 @@
#### Select the name(s) from the above list, by the name of your Distribution (either major or derived from), respectively.
# Further Details at the [Wiki](https://git.disroot.org/linuxer.gr/camera-control-webcam-switch-indicator/wiki/Home)
### Further Details at the [Wiki](https://gitlab.com/linuxer.gr/camera-control-webcam-switch-indicator/-/wikis/Project-History-and-other-Details)
#### For Project Releases, please add the [RSS Atom Feeds link](https://gitlab.com/psposito/camera-control-webcam-switch-indicator/-/tags?feed_token=hAsTBdxnMmMiYYCvGoHN&format=atom), to your RSS Feed Reader.

37
Reboot.frm Executable file → Normal file
View File

@ -1,13 +1,12 @@
object Form4: TForm4
Left = 455
Height = 332
Height = 213
Top = 45
Width = 474
Width = 303
BorderStyle = bsToolWindow
Caption = 'Sytem Reboot'
ClientHeight = 332
ClientWidth = 474
DesignTimePPI = 150
ClientHeight = 213
ClientWidth = 303
Icon.Data = {
BE2500000000010001003030000001002000A825000016000000280000003000
0000600000000100200000000000002400006400000064000000000000000000
@ -314,35 +313,37 @@ object Form4: TForm4
767F
}
Position = poScreenCenter
LCLVersion = '7.0'
LCLVersion = '7.2'
object ListBox1: TListBox
Left = 0
Height = 248
Top = 16
Width = 472
Height = 159
Top = 10
Width = 302
Font.Style = [fsBold]
ItemHeight = 0
ParentFont = False
ScrollWidth = 470
ScrollWidth = 298
TabOrder = 0
TopIndex = -1
end
object Button1: TButton
Left = 56
Height = 56
Top = 272
Width = 117
Left = 36
Height = 36
Top = 174
Width = 74
Caption = 'Reboot'
OnClick = Button1Click
ParentFont = False
TabOrder = 1
end
object Button2: TButton
Left = 288
Height = 56
Top = 272
Width = 117
Left = 184
Height = 36
Top = 174
Width = 74
Caption = 'Cancel'
OnClick = Button2Click
ParentFont = False
TabOrder = 2
end
end

View File

@ -1,348 +0,0 @@
object Form4: TForm4
Left = 455
Height = 318
Top = 45
Width = 474
BorderStyle = bsToolWindow
Caption = 'Sytem Reboot'
ClientHeight = 318
ClientWidth = 474
DesignTimePPI = 150
Icon.Data = {
BE2500000000010001003030000001002000A825000016000000280000003000
0000600000000100200000000000002400006400000064000000000000000000
0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000010000
00010000000100000001FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000010000
0004000000080000000B0000000D0000000F0000001100000012000000130000
0013000000130000001300000012000000110000000F0000000D0000000B0000
00080000000400000001FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF0000000002000000080000000C000000100000
0014000000170000001A0000001D000000200000002200000023000000240000
002500000025000000240000002300000022000000200000001D0000001A0000
001700000014000000100000000C0000000800000002FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0000000002000000090000000E00000013000000180000001C0C0C
0C292B29257632302AA3373530C9383631E7383730F2383631F6373630FA3634
2EFD36342EFD373630FA383631F6383630F2373631E637362FC831302BA12C29
25750D0D07270000001C00000018000000130000000E0000000900000002FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00000000050000000B00000010000000160000001C070707242F2D288D3734
2FF3464541F65F5F5CFF6D6E6CFF7C7E7CFF8A8C8AFF959997FFA2A5A3FFAFB2
B0FFB0B3B1FFA7AAA8FF9D9F9EFF949694FF8A8C8AFF7C7D7BFF70706EFF4F4F
4AF636342EF22F2D2789000000230000001B00000016000000100000000B0000
0005FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
0003000000090000000F000000150000001B000000212A28236D393832F65354
53FF626462FF676968FF6F7270FF767978FF7E817FFF858987FF8C908EFF9397
95FF929694FF8C908EFF858886FF7F8381FF7A7D7CFF767977FF747776FF8285
83FF777977FF3F3E39F628252367000000200000001B000000150000000F0000
000900000003FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
00040000000A00000010000000160000001C0000002234322DD140423FFF4F51
50FF575A58FF606261FF686B69FF707372FF797C7AFF818583FF898D8BFF9296
94FF919593FF888C8AFF7E8280FF757977FF6C6F6EFF626664FF595C5BFF4F53
51FF626463FF5A5C5AFF32312CCB00000026000000200000001B000000140000
000C00000004FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
0001000000080000000D00000013000000190000001E36332EEE434644FF4F51
50FF575A58FF606261FF676A68FF6D706FFF747775FF797D7BFF7F8281FF868A
88FF868987FF7F8381FF787C7AFF727674FF6A6D6CFF626664FF595C5BFF4F53
51FF4B4E4DFF5E5F5EFF35342DF117171758191919531A1A1A4D1B1B1B430E0E
0E35000000270000001D00000004FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF0000000001000000070000000D000000120000001733322DAA3F403CFE4F51
50FF565957FF5D5F5EFF606361FF626564FF646765FF676A68FF6A6D6BFF6F72
70FF6F7371FF6C6F6DFF676B69FF646866FF626564FF5E6260FF585B5AFF4F53
51FF4D4F4EFF464744FF40413CF7535654EA535654EA535654E9525654EC5357
55F6535755FE525553DD3E3E3E2DFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF0000000002000000080000000D2E2B2859393833F34E50
4FFF525553FF525453FF505251FF505252FF5E615EFF676B69FF6F7271FF797E
7BFF7A7E7CFF6F7271FF676A69FF5E6160FF525554FF515553FF525454FF4D51
4FFF464948FF383732F22E2B28530000000D0000000800000002000000010000
000C1111111E525554D454575689FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000011717170B363530DC4040
3EFC494B49FF5E605FFF7C7F7EFF878D8BFFA6A9A8FFBCBEBDFFCBCCCBFFD5D6
D6FFD5D6D6FFCACCCBFFBBBEBDFFA5A8A6FF888D8BFF7B7F7DFF5F6361FF4A4D
4BFF3E3E3BFC37342ED71C1C1C09FFFFFF00FFFFFF00000000080909091D494E
4C6C535655DB5356549D80808002FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF003A3A342C5355
51F9838786FFAEB1B0FFDBDCDCFFEFEFEFFFEEEEEEFFECECECFFEAEAEAFFE8E8
E8FFE8E8E8FFEAEAEAFFECECECFFEEEEEEFFEFEFEFFFDADBDBFFADB0AFFF8488
86FF565754F73C3C3522FFFFFF00FFFFFF00FFFFFF0041484452525754DD5357
55B053585337FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF008288882F898E8CE6ACAF
AEFBE6E6E6FFEFEFEFFFE7E7E7FFE0E0E0FFDEDEDEFFDDDDDDFFDCDCDCFFDCDC
DCFFDCDCDCFFDCDCDCFFDDDDDDFFDEDEDEFFE0E0E0FFE7E7E7FFEFEFEFFFE6E7
E6FFAFB2B1F88B8F8DE0868C862AFFFFFF00FFFFFF00515754C24C4E4C680000
0001FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00868C895D8E9391F5D7D9D8FEEEEE
EEFFE2E2E2FFDBDBDBFFD9D9D9FFD7D7D7FFD6D6D6FFD5D5D5FFD4D4D4FFD4D4
D4FFD4D4D4FFD4D4D4FFD5D5D5FFD6D6D6FFD7D7D7FFD9D9D9FFDBDBDBFFE2E2
E2FFEEEEEEFFD7D8D7FE8E9290F4888B8B56FFFFFF0054585443515653912C2C
2C1700000002FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF008C918F66989D9BF6E5E5E5FFE7E7E7FFD9D9
D9FFD6D6D6FFD3D3D3FFD1D1D1FFCFCFCFFFCECECEFFCDCDCDFFCCCCCCFFCCCC
CCFFCCCCCCFFCCCCCCFFCDCDCDFFCECECEFFCFCFCFFFD1D1D1FFD3D3D3FFD6D6
D6FFD9D9D9FFE7E7E7FFE4E4E4FF969B99F68C8E8E5FFFFFFF005155553C5156
535F47474712FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00888F8C49949897F6E6E6E6FFE1E1E1FFD4D4D4FFD1D1
D1FFCECECEFFCCCCCCFFC9C9C9FFC8C8C8FFC6C6C6FFC5C5C5FFC4C4C4FFC4C4
C4FFC4C4C4FFC4C4C4FFC5C5C5FFC6C6C6FFC8C8C8FFC9C9C9FFCCCCCCFFCECE
CEFFD1D1D1FFD4D4D4FFE1E1E1FFE5E6E6FF949897F5898D8D43FFFFFF004E59
591755555521FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF008A918A25909694F4DEE0DFFFE0E0E0FFD1D1D1FFCDCDCDFFCACA
CAFFC7C7C7FFC4C4C4FFC2C2C2FFC2C2C2FFCECECEFFDDDDDDFFE9E9E9FFF3F3
F3FFF3F3F3FFE9E9E9FFDDDDDDFFCECECEFFC2C2C2FFC2C2C2FFC4C4C4FFC7C7
C7FFCACACAFFCDCDCDFFD1D1D1FFE1E1E1FFDEE0DFFF909795F28A928A23FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00909794BCCBCCCCFDE2E2E2FFCECECEFFCACACAFFC6C6C6FFC3C3
C3FFC2C2C2FFC5C5C5FFC9C9C9FFE0E0E0FFE6E6E6FFADADADFF747473FF3737
35FF373735FF747473FFADADACFFE6E6E6FFE0E0E0FFC9C9C9FFC5C5C5FFC2C2
C2FFC3C3C3FFC6C6C6FFCACACAFFCECECEFFE2E2E2FFCBCCCBFD919693B9FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF008D9491439EA3A1F4E6E7E7FFCFCFCFFFC7C7C7FFC3C3C3FFC3C3C3FFC6C6
C6FFC8C8C8FFD1D1D1FFE7E7E7FFAAAAA9FF20201EFF3E3D3BFF51504EFF6564
62FF656462FF52504EFF3E3D3BFF232221FFA9A9A9FFE7E7E7FFD1D1D1FFC8C8
C8FFC5C5C5FFC2C2C2FFC3C3C3FFC7C7C7FFCFCFCFFFE7E7E7FF9CA09EF58C94
903EFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00939997CED3D5D4FFD7D7D7FFC6C6C6FFC1C1C1FFC5C5C5FFC8C8C8FFCBCB
CBFFCFCFCFFFE2E2E2FF5A5A59FF2B2B29FF5F5D5BFF594D42FF523D2DFF553A
28FF573E2BFF574232FF594B42FF5F5E5CFF2D2C2AFF5A5A59FFE2E2E2FFCFCF
CFFFCBCBCBFFC8C8C8FFC5C5C5FFC1C1C1FFC6C6C6FFD9D9D9FFD2D3D3FF9499
96CAFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF008F99
8F19989D9AF7E5E5E5FFC6C6C6FFC2C2C2FFC6C6C6FFCACACAFFCDCDCDFFD1D1
D1FFDCDCDCFF939392FF292826FF5E5A55FF503A29FF453828FF31716FFF18A9
B6FF18ACBAFF357878FF4E4334FF513A29FF5E5A56FF2B2A28FF90908FFFDCDC
DCFFD1D1D1FFCDCDCDFFCACACAFFC6C6C6FFC2C2C2FFC7C7C7FFE4E4E4FF979C
99F88B979716FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF009297
956CB8BBBAF7DBDBDBFFC2C2C2FFC7C7C7FFCBCBCBFFCFCFCFFFD3D3D3FFD7D7
D7FFC4C4C3FF1A1918FF53524FFF503928FF442D1CFF364F49FF3E5A58FF4D5A
56FF54615CFF486562FF415E59FF4C3625FF513928FF545250FF191917FFC0C0
BFFFD7D7D7FFD3D3D3FFCFCFCFFFCBCBCBFFC7C7C7FFC2C2C2FFDBDBDBFFB7BA
B8F592979565FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00999D
9BC0D0D1D1FFCFCFCFFFC7C7C7FFCBCBCBFFD0D0D0FFD4D4D4FFD8D8D8FFDBDB
DBFF727271FF31302EFF504339FF482E1DFF38281CFF3B352EFF474642FF5C5B
59FF6B6A68FF5D5B59FF4F4841FF47372CFF472E1CFF514338FF32312FFF7272
71FFDBDBDBFFD8D8D8FFD4D4D4FFCFCFCFFFCBCBCBFFC7C7C7FFCFCFCFFFCFD0
CFFF989C9BB7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00999E
9DDFD7D7D7FFCDCDCDFFCBCBCBFFCFCFCFFFD4D4D4FFD8D8D8FFDDDDDDFFE1E1
E1FF3D3D3BFF3B3A37FF4E3828FF402C1CFF30241BFF31302CFF363532FF1313
12FF161615FF464543FF474542FF3F342CFF3F2B1CFF4F3928FF3D3B39FF3D3D
3BFFE0E0E0FFDDDDDDFFD8D8D8FFD4D4D4FFCFCFCFFFCBCBCBFFCDCDCDFFD5D6
D5FF999E9CD8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00999E
9DF4DFDFDFFFCCCCCCFFCECECEFFD3D3D3FFD8D8D8FFDDDDDDFFE1E1E1FFE5E5
E5FF161614FF434240FF4E3321FF3C2A1CFF2A231BFF2A2926FF0D0D0CFF0000
00FF000000FF10100FFF3E3C39FF352C26FF3B291CFF4E3320FF454442FF1616
14FFE5E5E5FFE1E1E1FFDDDDDDFFD8D8D8FFD3D3D3FFCECECEFFCCCCCCFFDDDE
DEFF999F9EEEFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00AAAAAA03999F
9CFEE5E5E5FFCECECEFFD2D2D2FFD7D7D7FFDCDCDCFFE1E1E1FFE6E6E6FFEAEA
EAFF161614FF3E3D3AFF4D3320FF3C2A1CFF2A231BFF1F1D1AFF0A0A09FF0000
00FF000000FF0C0C0BFF302E2BFF2B221AFF3B291CFF4D321FFF3F3E3BFF1616
14FFEAEAEAFFE5E5E5FFE1E1E1FFDCDCDCFFD7D7D7FFD2D2D2FFCECECEFFE4E4
E4FF9AA09DFCFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF009CA2
9FF5E2E2E2FFD3D3D3FFD5D5D5FFDADADAFFE0E0E0FFE5E5E5FFE9E9E9FFEEEE
EEFF41413FFF2E2D2AFF493424FF402C1CFF2F241BFF2A2724FF51504EFF6362
62FF646363FF545351FF292724FF2F241BFF3F2B1CFF4B3524FF2F2E2BFF4141
3FFFEEEEEEFFE9E9E9FFE4E4E4FFDFDFDFFFDADADAFFD5D5D5FFD2D2D2FFE1E1
E1FF9CA39FF0FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF009FA5
A3E0DDDEDEFFD7D7D7FFD8D8D8FFDDDDDDFFE3E3E3FFE8E8E8FFEDEDEDFFF2F2
F2FF7D7D7CFF242320FF42352AFF472E1CFF38281CFFA19D9AFFD4D4D3FFD4D4
D3FFD4D4D3FFD4D4D3FFA19D9AFF38271CFF462E1CFF43352BFF252421FF7D7D
7CFFF2F2F2FFEDEDEDFFE8E8E8FFE2E2E2FFDDDDDDFFD7D7D7FFD7D7D7FFDBDC
DCFF9FA5A3D9FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00A0A7
A4C4D7D8D8FFDDDDDDFFDADADAFFE0E0E0FFE5E5E5FFEBEBEBFFF0F0F0FFF5F5
F5FFD9D9D9FF171614FF2E2C29FF493120FF432D1CFFC1BCB9FFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFC1BCB9FF432D1CFF493120FF302D2AFF151513FFD5D5
D4FFF5F5F5FFF0F0F0FFEBEBEBFFE5E5E5FFDFDFDFFFDADADAFFDDDDDDFFD5D6
D6FFA1A6A4BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00A0A7
A571C2C5C4F8E5E5E5FFDCDCDCFFE2E2E2FFE7E7E7FFEDEDEDFFF1F2F3FFF5F8
F8FFFCFEFEFF8F908FFF1E1E1CFF312C27FF48301FFF5A4333FFAEA6A0FFE4E2
E0FFE4E2E0FFAEA6A0FF594333FF48301FFF312C27FF1E1E1CFF8C8C8BFFFDFD
FDFFF8F8F8FFF2F2F2FFEDEDEDFFE7E7E7FFE1E1E1FFDCDCDCFFE5E5E5FFC2C5
C4F6A0A7A26BFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF009EA7
A71DA9AEABF6EBEBEBFFDEDEDEFFE3E3E3FFE8E9E9FFE8EEEFFFD9F0F3FFCCF3
F7FFD8F8FCFFECFAFCFF434644FF1B1A18FF23211FFF392B20FF452F1EFF4B30
1DFF4B301DFF452F1EFF392A20FF252320FF1B1B19FF444442FFFDFDFDFFFFFF
FFFFFAFAFAFFF4F4F4FFEFEFEFFFE9E9E9FFE3E3E3FFDEDEDEFFEBEBEBFFA8AD
ABF79DA7A71AFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00A6ACAAD5DDDEDEFFE6E6E6FFE4E4E4FFE6E9E9FFD0ECEFFF53D1C7FF0AC2
B6FF1FC5B8FFA0E8E7FFECFAFBFF90908FFF141412FF181715FF1A1916FF1F1D
1BFF1F1E1BFF1A1916FF171614FF161514FF8F8F8EFFFDFDFDFFFFFFFFFFFFFF
FFFFFBFBFBFFF5F5F5FFEFEFEFFFEAEAEAFFE4E4E4FFE6E6E6FFDCDDDDFFA7AC
ABD1FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00A4ABA84CB5BAB8F4EEEEEEFFE4E5E5FFE2E9EAFFA3E2E3FF03C6BCFF88E8
EFFF2DD2D7FF36CABEFFDDF9FCFFFFFFFFFFDBDBDBFF80807FFF434341FF1717
15FF171715FF434341FF80807FFFDBDBDBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFCFCFCFFF6F6F6FFF0F0F0FFEAEAEAFFE5E5E5FFEEEEEEFFB3B9B7F4A4AB
A846FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00ACB1AFC5D9DBDAFEECEDEDFFE2E9EAFFA3E2E3FF03CABEFF79E7
EEFF25D4D7FF35CABEFFDDF9FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFBFBFBFFF6F6F6FFF0F0F0FFEAEAEAFFEDEDEDFFD9DBDAFEACB1AFC2FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00A8AEAE2CB0B6B3F5EAEAEAFFEBEEEEFFCEEBEEFF4CCDC4FF07C6
B7FF19C6B7FF9DE7E6FFEEFCFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFAFAFAFFF4F4F4FFEFEFEFFFEFEFEFFFEAEAEAFFB1B6B3F4AAB0AA2AFFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00ACB5AF56B7BEBCF6EEF0F0FFE9F0F1FFD7EFF2FFCAF0
F5FFD7F7FBFFEDFCFDFFFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFE
FEFFF8F8F8FFF3F3F3FFF1F1F1FFEFEFEFFFB7BDBAF6AEB2B24FFFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00B1B8B676C0C4C2F5EFEFEFFFF3F5F5FFF3F6
F6FFF8FAFAFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFB
FBFFF6F6F6FFF5F5F5FFEFF0F0FFBEC3C0F6B0B7B56EFFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00B5BCB96EBAC0BEF6E9EBEAFFF7F7
F7FFF8F8F8FFFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFFF8F8
F8FFF7F7F7FFEAEBEBFEB9C1BDF5B5BAB767FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00B4BDB93ABAC0BEECD7DA
D9F7F4F5F5FFFAFAFAFFFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFFFAFAFAFFF4F5
F5FFD7DAD9F6B9C1BEEAB7BCBC35FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00B6C8B60EBCC2
C082C0C7C4F4DBDFDEF9F2F3F3FFEADDD3FFC59E7FFFBC8C67FFB98760FFB682
5AFFB6825AFFB98760FFBC8D67FFC69F80FFEADED4FFF1F3F2FFDBDFDEF8BFC7
C3F4BDC3C17FBFBFBF0CFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00C3C3C311C2C8C47EC5CBC8D8A86E41FFBC8657FFC39064FFC49163FFC592
64FFC59264FFC49062FFC39063FFBA8355FFAA7043FEC5CCC8D6C1CAC57CBFBF
BF10FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00A96C3DBDB88255FACFA57EFFD8B28DFFD9B3
8FFFD8B18DFFD9B48FFFD3AA84FFB88457FAA86C3DB8FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00AA552B06A5673783A76939D4A56635F8B077
49F5B1794AF5A86C3CF7A66838D2A566367FAA552B06FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FF000001A363
3224A8663323FF000001FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00000000000000767F000000000000767F000000000000767F000000000000
767F000000000000767F000000000000767F000000000000767F000000000000
767F000000000000767F000000000000767F000000000000767F000000000000
767F000000000000767F000000000000767F000000000000767F000000000000
767F000000000000767F000000000000767F000000000000767F000000000000
767F000000000000767F000000000000767F000000000000767F000000000000
767F000000000000767F000000000000767F000000000000767F000000000000
767F000000000000767F000000000000767F000000000000767F000000000000
767F000000000000767F000000000000767F000000000000767F000000000000
767F000000000000767F000000000000767F000000000000767F000000000000
767F000000000000767F000000000000767F000000000000767F000000000000
767F000000000000767F000000000000767F000000000000767F000000000000
767F
}
Position = poScreenCenter
LCLVersion = '7.0'
object ListBox1: TListBox
Left = 8
Height = 248
Top = 16
Width = 464
Font.Style = [fsBold]
ItemHeight = 0
ParentFont = False
ScrollWidth = 460
TabOrder = 0
TopIndex = -1
end
object Button1: TButton
Left = 56
Height = 39
Top = 272
Width = 117
Caption = 'Reboot'
OnClick = Button1Click
TabOrder = 1
end
object Button2: TButton
Left = 288
Height = 39
Top = 272
Width = 117
Caption = 'Cancel'
OnClick = Button2Click
TabOrder = 2
end
end

View File

@ -1,5 +0,0 @@
{"version":1,"strings":[
{"hash":3882900,"name":"tform4.caption","sourcebytes":[83,121,116,101,109,32,82,101,98,111,111,116],"value":"Sytem Reboot"},
{"hash":93034084,"name":"tform4.button1.caption","sourcebytes":[82,101,98,111,111,116],"value":"Reboot"},
{"hash":77089212,"name":"tform4.button2.caption","sourcebytes":[67,97,110,99,101,108],"value":"Cancel"}
]}

13
Reboot.pas Executable file → Normal file
View File

@ -4,20 +4,25 @@ unit Reboot;
{$warnings off}
{$hints off}
// Created at 23th of January 2020, by Linuxer (https://gitlab.com/psposito), from scratch with Free Pascal
// Copyright © 2020 linuxer <linuxer@artixlinux.org> <https://linuxer.gr>
// Created at 23th of January 2020, by Linuxer (https://gitlab.com/linuxergr), from scratch with Free Pascal
// Redesigned and further Developed at 28th of January 2020, by Initial developer
// to provide Camera and Mic status alone with On/Off and Mute/Unmute fuctions
// Developed further for intrusion feeling and logging at 2nd of February 2020, by Initial developer
// Developed for Blacklisting/Whitelisting functions for both camera & audio at 7th of February 2020, by Initial developer
// Finalized, except traslations at 15th of February 2020.
// Further Capabilities added alone with better Logging at 22nd of February 2020
// Development Ended at 5th of March 2020. Minor Updates will follow, if needed
// Essential Development Ended at 5th of March 2020. Minor Updates will follow, if needed
// Thanks to Ido Kanner idokan at@at gmail dot.dot com, libnotify has been added to the project, so to solve issues of notifiers and Qt5 on Linux
// https://forum.lazarus.freepascal.org/index.php/topic,52052.0.html
// Wayland and x11 operation confirmed too with the libnotify addition
// Further project development for the next major release 2.1.0, as from 3rd of Nov 2020 / ended at 6th of Nov 2020
interface
uses
{$IFDEF UNIX}
cthreads,
cthreads,
{$ENDIF}
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, ExtCtrls, Logs,
Unix, MessageForm;
@ -292,4 +297,4 @@ begin
FpSystem('reboot');
end;
end.
end.

48
RebootDialog.frm Executable file → Normal file
View File

@ -1,13 +1,12 @@
object Form5: TForm5
Left = 533
Height = 460
Height = 294
Top = 45
Width = 571
Width = 365
BorderStyle = bsToolWindow
Caption = 'Reboot or Quit Application'
ClientHeight = 460
ClientWidth = 571
DesignTimePPI = 150
ClientHeight = 294
ClientWidth = 365
Icon.Data = {
BE2500000000010001003030000001002000A825000016000000280000003000
0000600000000100200000000000002400006400000064000000000000000000
@ -314,41 +313,44 @@ object Form5: TForm5
0000
}
Position = poScreenCenter
LCLVersion = '7.0'
LCLVersion = '7.2'
object Button1: TButton
Left = 32
Height = 56
Top = 400
Width = 184
Left = 21
Height = 36
Top = 256
Width = 118
Caption = 'Reboot'
Default = True
OnClick = Button1Click
ParentFont = False
TabOrder = 0
end
object Button2: TButton
Left = 312
Height = 56
Top = 400
Width = 184
Left = 200
Height = 36
Top = 256
Width = 118
Caption = 'Quit'
OnClick = Button2Click
ParentFont = False
TabOrder = 1
end
object ListBox1: TListBox
Left = 8
Height = 337
Top = 15
Width = 560
Left = 5
Height = 215
Top = 10
Width = 358
ItemHeight = 0
ScrollWidth = 558
ParentFont = False
ScrollWidth = 354
TabOrder = 2
TopIndex = -1
end
object StaticText1: TStaticText
Left = 88
Height = 27
Top = 360
Width = 380
Left = 57
Height = 17
Top = 231
Width = 243
Caption = 'V4L2 limitations, forcing for Reboot'
Font.Color = clBlue
Font.Style = [fsItalic, fsUnderline]

View File

@ -1,361 +0,0 @@
object Form5: TForm5
Left = 533
Height = 453
Top = 45
Width = 571
Anchors = [akTop]
BorderStyle = bsToolWindow
Caption = 'Reboot or Quit Application'
ClientHeight = 453
ClientWidth = 571
DesignTimePPI = 150
Icon.Data = {
BE2500000000010001003030000001002000A825000016000000280000003000
0000600000000100200000000000002400006400000064000000000000000000
0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000010000
00010000000100000001FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000010000
0004000000080000000B0000000D0000000F0000001100000012000000130000
0013000000130000001300000012000000110000000F0000000D0000000B0000
00080000000400000001FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF0000000002000000080000000C000000100000
0014000000170000001A0000001D000000200000002200000023000000240000
002500000025000000240000002300000022000000200000001D0000001A0000
001700000014000000100000000C0000000800000002FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0000000002000000090000000E00000013000000180000001C0C0C
0C292B29257632302AA3373530C9383631E7383730F2383631F6373630FA3634
2EFD36342EFD373630FA383631F6383630F2373631E637362FC831302BA12C29
25750D0D07270000001C00000018000000130000000E0000000900000002FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00000000050000000B00000010000000160000001C070707242F2D288D3734
2FF3464541F65F5F5CFF6D6E6CFF7C7E7CFF8A8C8AFF959997FFA2A5A3FFAFB2
B0FFB0B3B1FFA7AAA8FF9D9F9EFF949694FF8A8C8AFF7C7D7BFF70706EFF4F4F
4AF636342EF22F2D2789000000230000001B00000016000000100000000B0000
0005FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
0003000000090000000F000000150000001B000000212A28236D393832F65354
53FF626462FF676968FF6F7270FF767978FF7E817FFF858987FF8C908EFF9397
95FF929694FF8C908EFF858886FF7F8381FF7A7D7CFF767977FF747776FF8285
83FF777977FF3F3E39F628252367000000200000001B000000150000000F0000
000900000003FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
00040000000A00000010000000160000001C0000002234322DD140423FFF4F51
50FF575A58FF606261FF686B69FF707372FF797C7AFF818583FF898D8BFF9296
94FF919593FF888C8AFF7E8280FF757977FF6C6F6EFF626664FF595C5BFF4F53
51FF626463FF5A5C5AFF32312CCB00000026000000200000001B000000140000
000C00000004FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
0001000000080000000D00000013000000190000001E36332EEE434644FF4F51
50FF575A58FF606261FF676A68FF6D706FFF747775FF797D7BFF7F8281FF868A
88FF868987FF7F8381FF787C7AFF727674FF6A6D6CFF626664FF595C5BFF4F53
51FF4B4E4DFF5E5F5EFF35342DF117171758191919531A1A1A4D1B1B1B430E0E
0E35000000270000001D00000004FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF0000000001000000070000000D000000120000001733322DAA3F403CFE4F51
50FF565957FF5D5F5EFF606361FF626564FF646765FF676A68FF6A6D6BFF6F72
70FF6F7371FF6C6F6DFF676B69FF646866FF626564FF5E6260FF585B5AFF4F53
51FF4D4F4EFF464744FF40413CF7535654EA535654EA535654E9525654EC5357
55F6535755FE525553DD3E3E3E2DFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF0000000002000000080000000D2E2B2859393833F34E50
4FFF525553FF525453FF505251FF505252FF5E615EFF676B69FF6F7271FF797E
7BFF7A7E7CFF6F7271FF676A69FF5E6160FF525554FF515553FF525454FF4D51
4FFF464948FF383732F22E2B28530000000D0000000800000002000000010000
000C1111111E525554D454575689FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000011717170B363530DC4040
3EFC494B49FF5E605FFF7C7F7EFF878D8BFFA6A9A8FFBCBEBDFFCBCCCBFFD5D6
D6FFD5D6D6FFCACCCBFFBBBEBDFFA5A8A6FF888D8BFF7B7F7DFF5F6361FF4A4D
4BFF3E3E3BFC37342ED71C1C1C09FFFFFF00FFFFFF00000000080909091D494E
4C6C535655DB5356549D80808002FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF003A3A342C5355
51F9838786FFAEB1B0FFDBDCDCFFEFEFEFFFEEEEEEFFECECECFFEAEAEAFFE8E8
E8FFE8E8E8FFEAEAEAFFECECECFFEEEEEEFFEFEFEFFFDADBDBFFADB0AFFF8488
86FF565754F73C3C3522FFFFFF00FFFFFF00FFFFFF0041484452525754DD5357
55B053585337FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF008288882F898E8CE6ACAF
AEFBE6E6E6FFEFEFEFFFE7E7E7FFE0E0E0FFDEDEDEFFDDDDDDFFDCDCDCFFDCDC
DCFFDCDCDCFFDCDCDCFFDDDDDDFFDEDEDEFFE0E0E0FFE7E7E7FFEFEFEFFFE6E7
E6FFAFB2B1F88B8F8DE0868C862AFFFFFF00FFFFFF00515754C24C4E4C680000
0001FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00868C895D8E9391F5D7D9D8FEEEEE
EEFFE2E2E2FFDBDBDBFFD9D9D9FFD7D7D7FFD6D6D6FFD5D5D5FFD4D4D4FFD4D4
D4FFD4D4D4FFD4D4D4FFD5D5D5FFD6D6D6FFD7D7D7FFD9D9D9FFDBDBDBFFE2E2
E2FFEEEEEEFFD7D8D7FE8E9290F4888B8B56FFFFFF0054585443515653912C2C
2C1700000002FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF008C918F66989D9BF6E5E5E5FFE7E7E7FFD9D9
D9FFD6D6D6FFD3D3D3FFD1D1D1FFCFCFCFFFCECECEFFCDCDCDFFCCCCCCFFCCCC
CCFFCCCCCCFFCCCCCCFFCDCDCDFFCECECEFFCFCFCFFFD1D1D1FFD3D3D3FFD6D6
D6FFD9D9D9FFE7E7E7FFE4E4E4FF969B99F68C8E8E5FFFFFFF005155553C5156
535F47474712FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00888F8C49949897F6E6E6E6FFE1E1E1FFD4D4D4FFD1D1
D1FFCECECEFFCCCCCCFFC9C9C9FFC8C8C8FFC6C6C6FFC5C5C5FFC4C4C4FFC4C4
C4FFC4C4C4FFC4C4C4FFC5C5C5FFC6C6C6FFC8C8C8FFC9C9C9FFCCCCCCFFCECE
CEFFD1D1D1FFD4D4D4FFE1E1E1FFE5E6E6FF949897F5898D8D43FFFFFF004E59
591755555521FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF008A918A25909694F4DEE0DFFFE0E0E0FFD1D1D1FFCDCDCDFFCACA
CAFFC7C7C7FFC4C4C4FFC2C2C2FFC2C2C2FFCECECEFFDDDDDDFFE9E9E9FFF3F3
F3FFF3F3F3FFE9E9E9FFDDDDDDFFCECECEFFC2C2C2FFC2C2C2FFC4C4C4FFC7C7
C7FFCACACAFFCDCDCDFFD1D1D1FFE1E1E1FFDEE0DFFF909795F28A928A23FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00909794BCCBCCCCFDE2E2E2FFCECECEFFCACACAFFC6C6C6FFC3C3
C3FFC2C2C2FFC5C5C5FFC9C9C9FFE0E0E0FFE6E6E6FFADADADFF747473FF3737
35FF373735FF747473FFADADACFFE6E6E6FFE0E0E0FFC9C9C9FFC5C5C5FFC2C2
C2FFC3C3C3FFC6C6C6FFCACACAFFCECECEFFE2E2E2FFCBCCCBFD919693B9FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF008D9491439EA3A1F4E6E7E7FFCFCFCFFFC7C7C7FFC3C3C3FFC3C3C3FFC6C6
C6FFC8C8C8FFD1D1D1FFE7E7E7FFAAAAA9FF20201EFF3E3D3BFF51504EFF6564
62FF656462FF52504EFF3E3D3BFF232221FFA9A9A9FFE7E7E7FFD1D1D1FFC8C8
C8FFC5C5C5FFC2C2C2FFC3C3C3FFC7C7C7FFCFCFCFFFE7E7E7FF9CA09EF58C94
903EFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00939997CED3D5D4FFD7D7D7FFC6C6C6FFC1C1C1FFC5C5C5FFC8C8C8FFCBCB
CBFFCFCFCFFFE2E2E2FF5A5A59FF2B2B29FF5F5D5BFF594D42FF523D2DFF553A
28FF573E2BFF574232FF594B42FF5F5E5CFF2D2C2AFF5A5A59FFE2E2E2FFCFCF
CFFFCBCBCBFFC8C8C8FFC5C5C5FFC1C1C1FFC6C6C6FFD9D9D9FFD2D3D3FF9499
96CAFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF008F99
8F19989D9AF7E5E5E5FFC6C6C6FFC2C2C2FFC6C6C6FFCACACAFFCDCDCDFFD1D1
D1FFDCDCDCFF939392FF292826FF5E5A55FF503A29FF453828FF31716FFF18A9
B6FF18ACBAFF357878FF4E4334FF513A29FF5E5A56FF2B2A28FF90908FFFDCDC
DCFFD1D1D1FFCDCDCDFFCACACAFFC6C6C6FFC2C2C2FFC7C7C7FFE4E4E4FF979C
99F88B979716FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF009297
956CB8BBBAF7DBDBDBFFC2C2C2FFC7C7C7FFCBCBCBFFCFCFCFFFD3D3D3FFD7D7
D7FFC4C4C3FF1A1918FF53524FFF503928FF442D1CFF364F49FF3E5A58FF4D5A
56FF54615CFF486562FF415E59FF4C3625FF513928FF545250FF191917FFC0C0
BFFFD7D7D7FFD3D3D3FFCFCFCFFFCBCBCBFFC7C7C7FFC2C2C2FFDBDBDBFFB7BA
B8F592979565FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00999D
9BC0D0D1D1FFCFCFCFFFC7C7C7FFCBCBCBFFD0D0D0FFD4D4D4FFD8D8D8FFDBDB
DBFF727271FF31302EFF504339FF482E1DFF38281CFF3B352EFF474642FF5C5B
59FF6B6A68FF5D5B59FF4F4841FF47372CFF472E1CFF514338FF32312FFF7272
71FFDBDBDBFFD8D8D8FFD4D4D4FFCFCFCFFFCBCBCBFFC7C7C7FFCFCFCFFFCFD0
CFFF989C9BB7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00999E
9DDFD7D7D7FFCDCDCDFFCBCBCBFFCFCFCFFFD4D4D4FFD8D8D8FFDDDDDDFFE1E1
E1FF3D3D3BFF3B3A37FF4E3828FF402C1CFF30241BFF31302CFF363532FF1313
12FF161615FF464543FF474542FF3F342CFF3F2B1CFF4F3928FF3D3B39FF3D3D
3BFFE0E0E0FFDDDDDDFFD8D8D8FFD4D4D4FFCFCFCFFFCBCBCBFFCDCDCDFFD5D6
D5FF999E9CD8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00999E
9DF4DFDFDFFFCCCCCCFFCECECEFFD3D3D3FFD8D8D8FFDDDDDDFFE1E1E1FFE5E5
E5FF161614FF434240FF4E3321FF3C2A1CFF2A231BFF2A2926FF0D0D0CFF0000
00FF000000FF10100FFF3E3C39FF352C26FF3B291CFF4E3320FF454442FF1616
14FFE5E5E5FFE1E1E1FFDDDDDDFFD8D8D8FFD3D3D3FFCECECEFFCCCCCCFFDDDE
DEFF999F9EEEFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00AAAAAA03999F
9CFEE5E5E5FFCECECEFFD2D2D2FFD7D7D7FFDCDCDCFFE1E1E1FFE6E6E6FFEAEA
EAFF161614FF3E3D3AFF4D3320FF3C2A1CFF2A231BFF1F1D1AFF0A0A09FF0000
00FF000000FF0C0C0BFF302E2BFF2B221AFF3B291CFF4D321FFF3F3E3BFF1616
14FFEAEAEAFFE5E5E5FFE1E1E1FFDCDCDCFFD7D7D7FFD2D2D2FFCECECEFFE4E4
E4FF9AA09DFCFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF009CA2
9FF5E2E2E2FFD3D3D3FFD5D5D5FFDADADAFFE0E0E0FFE5E5E5FFE9E9E9FFEEEE
EEFF41413FFF2E2D2AFF493424FF402C1CFF2F241BFF2A2724FF51504EFF6362
62FF646363FF545351FF292724FF2F241BFF3F2B1CFF4B3524FF2F2E2BFF4141
3FFFEEEEEEFFE9E9E9FFE4E4E4FFDFDFDFFFDADADAFFD5D5D5FFD2D2D2FFE1E1
E1FF9CA39FF0FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF009FA5
A3E0DDDEDEFFD7D7D7FFD8D8D8FFDDDDDDFFE3E3E3FFE8E8E8FFEDEDEDFFF2F2
F2FF7D7D7CFF242320FF42352AFF472E1CFF38281CFFA19D9AFFD4D4D3FFD4D4
D3FFD4D4D3FFD4D4D3FFA19D9AFF38271CFF462E1CFF43352BFF252421FF7D7D
7CFFF2F2F2FFEDEDEDFFE8E8E8FFE2E2E2FFDDDDDDFFD7D7D7FFD7D7D7FFDBDC
DCFF9FA5A3D9FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00A0A7
A4C4D7D8D8FFDDDDDDFFDADADAFFE0E0E0FFE5E5E5FFEBEBEBFFF0F0F0FFF5F5
F5FFD9D9D9FF171614FF2E2C29FF493120FF432D1CFFC1BCB9FFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFC1BCB9FF432D1CFF493120FF302D2AFF151513FFD5D5
D4FFF5F5F5FFF0F0F0FFEBEBEBFFE5E5E5FFDFDFDFFFDADADAFFDDDDDDFFD5D6
D6FFA1A6A4BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00A0A7
A571C2C5C4F8E5E5E5FFDCDCDCFFE2E2E2FFE7E7E7FFEDEDEDFFF1F2F3FFF5F8
F8FFFCFEFEFF8F908FFF1E1E1CFF312C27FF48301FFF5A4333FFAEA6A0FFE4E2
E0FFE4E2E0FFAEA6A0FF594333FF48301FFF312C27FF1E1E1CFF8C8C8BFFFDFD
FDFFF8F8F8FFF2F2F2FFEDEDEDFFE7E7E7FFE1E1E1FFDCDCDCFFE5E5E5FFC2C5
C4F6A0A7A26BFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF009EA7
A71DA9AEABF6EBEBEBFFDEDEDEFFE3E3E3FFE8E9E9FFE8EEEFFFD9F0F3FFCCF3
F7FFD8F8FCFFECFAFCFF434644FF1B1A18FF23211FFF392B20FF452F1EFF4B30
1DFF4B301DFF452F1EFF392A20FF252320FF1B1B19FF444442FFFDFDFDFFFFFF
FFFFFAFAFAFFF4F4F4FFEFEFEFFFE9E9E9FFE3E3E3FFDEDEDEFFEBEBEBFFA8AD
ABF79DA7A71AFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00A6ACAAD5DDDEDEFFE6E6E6FFE4E4E4FFE6E9E9FFD0ECEFFF53D1C7FF0AC2
B6FF1FC5B8FFA0E8E7FFECFAFBFF90908FFF141412FF181715FF1A1916FF1F1D
1BFF1F1E1BFF1A1916FF171614FF161514FF8F8F8EFFFDFDFDFFFFFFFFFFFFFF
FFFFFBFBFBFFF5F5F5FFEFEFEFFFEAEAEAFFE4E4E4FFE6E6E6FFDCDDDDFFA7AC
ABD1FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00A4ABA84CB5BAB8F4EEEEEEFFE4E5E5FFE2E9EAFFA3E2E3FF03C6BCFF88E8
EFFF2DD2D7FF36CABEFFDDF9FCFFFFFFFFFFDBDBDBFF80807FFF434341FF1717
15FF171715FF434341FF80807FFFDBDBDBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFCFCFCFFF6F6F6FFF0F0F0FFEAEAEAFFE5E5E5FFEEEEEEFFB3B9B7F4A4AB
A846FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00ACB1AFC5D9DBDAFEECEDEDFFE2E9EAFFA3E2E3FF03CABEFF79E7
EEFF25D4D7FF35CABEFFDDF9FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFBFBFBFFF6F6F6FFF0F0F0FFEAEAEAFFEDEDEDFFD9DBDAFEACB1AFC2FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00A8AEAE2CB0B6B3F5EAEAEAFFEBEEEEFFCEEBEEFF4CCDC4FF07C6
B7FF19C6B7FF9DE7E6FFEEFCFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFAFAFAFFF4F4F4FFEFEFEFFFEFEFEFFFEAEAEAFFB1B6B3F4AAB0AA2AFFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00ACB5AF56B7BEBCF6EEF0F0FFE9F0F1FFD7EFF2FFCAF0
F5FFD7F7FBFFEDFCFDFFFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFE
FEFFF8F8F8FFF3F3F3FFF1F1F1FFEFEFEFFFB7BDBAF6AEB2B24FFFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00B1B8B676C0C4C2F5EFEFEFFFF3F5F5FFF3F6
F6FFF8FAFAFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFB
FBFFF6F6F6FFF5F5F5FFEFF0F0FFBEC3C0F6B0B7B56EFFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00B5BCB96EBAC0BEF6E9EBEAFFF7F7
F7FFF8F8F8FFFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFFF8F8
F8FFF7F7F7FFEAEBEBFEB9C1BDF5B5BAB767FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00B4BDB93ABAC0BEECD7DA
D9F7F4F5F5FFFAFAFAFFFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFFFAFAFAFFF4F5
F5FFD7DAD9F6B9C1BEEAB7BCBC35FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00B6C8B60EBCC2
C082C0C7C4F4DBDFDEF9F2F3F3FFEADDD3FFC59E7FFFBC8C67FFB98760FFB682
5AFFB6825AFFB98760FFBC8D67FFC69F80FFEADED4FFF1F3F2FFDBDFDEF8BFC7
C3F4BDC3C17FBFBFBF0CFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00C3C3C311C2C8C47EC5CBC8D8A86E41FFBC8657FFC39064FFC49163FFC592
64FFC59264FFC49062FFC39063FFBA8355FFAA7043FEC5CCC8D6C1CAC57CBFBF
BF10FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00A96C3DBDB88255FACFA57EFFD8B28DFFD9B3
8FFFD8B18DFFD9B48FFFD3AA84FFB88457FAA86C3DB8FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00AA552B06A5673783A76939D4A56635F8B077
49F5B1794AF5A86C3CF7A66838D2A566367FAA552B06FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FF000001A363
3224A8663323FF000001FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000
}
Position = poScreenCenter
LCLVersion = '7.0'
object Button1: TButton
Left = 32
Height = 39
Top = 400
Width = 184
Caption = 'Reboot'
Default = True
OnClick = Button1Click
TabOrder = 0
end
object Button2: TButton
Left = 312
Height = 39
Top = 400
Width = 184
Caption = 'Quit'
OnClick = Button2Click
TabOrder = 1
end
object ListBox1: TListBox
Left = 8
Height = 337
Top = 15
Width = 560
ItemHeight = 0
ScrollWidth = 558
TabOrder = 2
TopIndex = -1
end
object plURLLabel1: TplURLLabel
Cursor = crHandPoint
Left = 96
Height = 26
Top = 360
Width = 356
Caption = 'V4L2 limitations, forcing for Reboot'
Font.Color = clBlue
Font.Style = [fsUnderline]
ParentColor = False
ParentFont = False
OnClick = plURLLabel1Click
end
end

View File

@ -1,6 +0,0 @@
{"version":1,"strings":[
{"hash":67309710,"name":"tform5.caption","sourcebytes":[82,101,98,111,111,116,32,111,114,32,81,117,105,116,32,65,112,112,108,105,99,97,116,105,111,110],"value":"Reboot or Quit Application"},
{"hash":93034084,"name":"tform5.button1.caption","sourcebytes":[82,101,98,111,111,116],"value":"Reboot"},
{"hash":363524,"name":"tform5.button2.caption","sourcebytes":[81,117,105,116],"value":"Quit"},
{"hash":175211220,"name":"tform5.plurllabel1.caption","sourcebytes":[86,52,76,50,32,108,105,109,105,116,97,116,105,111,110,115,44,32,102,111,114,99,105,110,103,32,102,111,114,32,82,101,98,111,111,116],"value":"V4L2 limitations, forcing for Reboot"}
]}

15
RebootDialog.pas Executable file → Normal file
View File

@ -1,21 +1,28 @@
unit RebootDialog;
{$mode objfpc}{$H+}
{$warnings off}
{$hints off}
// Created at 23th of January 2020, by Linuxer (https://gitlab.com/psposito), from scratch with Free Pascal
// Copyright © 2020 linuxer <linuxer@artixlinux.org> <https://linuxer.gr>
// Created at 23th of January 2020, by Linuxer (https://gitlab.com/linuxergr), from scratch with Free Pascal
// Redesigned and further Developed at 28th of January 2020, by Initial developer
// to provide Camera and Mic status alone with On/Off and Mute/Unmute fuctions
// Developed further for intrusion feeling and logging at 2nd of February 2020, by Initial developer
// Developed for Blacklisting/Whitelisting functions for both camera & audio at 7th of February 2020, by Initial developer
// Finalized, except traslations at 15th of February 2020.
// Further Capabilities added alone with better Logging at 22nd of February 2020
// Development Ended at 5th of March 2020. Minor Updates will follow, if needed
// Essential Development Ended at 5th of March 2020. Minor Updates will follow, if needed
// Thanks to Ido Kanner idokan at@at gmail dot.dot com, libnotify has been added to the project, so to solve issues of notifiers and Qt5 on Linux
// https://forum.lazarus.freepascal.org/index.php/topic,52052.0.html
// Wayland and x11 operation confirmed too with the libnotify addition
// Further project development for the next major release 2.1.0, as from 3rd of Nov 2020 / ended at 6th of Nov 2020
interface
uses
{$IFDEF UNIX}
cthreads,
cthreads,
{$ENDIF}
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, TplLabelUnit,
LCLIntf, Logs, Unix;
@ -69,4 +76,4 @@ begin
S := FpSystem('reboot');
end;
end.
end.

View File

@ -1,6 +0,0 @@
{"version":1,"strings":[
{"hash":3882900,"name":"tform5.caption","sourcebytes":[83,121,116,101,109,32,82,101,98,111,111,116],"value":"Sytem Reboot"},
{"hash":93034084,"name":"tform5.button1.caption","sourcebytes":[82,101,98,111,111,116],"value":"Reboot"},
{"hash":77089212,"name":"tform5.button2.caption","sourcebytes":[67,97,110,99,101,108],"value":"Cancel"},
{"hash":259754595,"name":"tform5.plurllabel1.caption","sourcebytes":[80,114,111,106,101,99,116,39,115,32,87,105,107,105,32,45,32,86,52,76,50,32,76,105,109,105,116,97,116,105,111,110,115],"value":"Project's Wiki - V4L2 Limitations"}
]}

View File

@ -1,40 +0,0 @@
program cameracontrol;
// Created at 23th of January 2020, by Linuxer (https://gitlab.com/psposito), from scratch with Free Pascal
// Redesigned and further Developed at 28th of January 2020, by Initial developer
// to provide Camera and Mic status alone with On/Off and Mute/Unmute fuctions
// Developed further for intrusion feeling and logging at 2nd of February 2020, by Initial developer
// Developed for Blacklisting/Whitelisting functions for both camera & audio at 7th of February 2020, by Initial developer
// Finalized, except traslations at 15th of February 2020.
// Further Capabilities added alone with better Logging at 22nd of February 2020
// Development Ended at 5th of March 2020. Minor Updates will follow, if needed
{$mode objfpc}{$H+}
{$warnings off}
{$hints off}
uses
{$IFDEF UNIX}
cthreads,
{$ENDIF}
Interfaces, // this includes the LCL widgetset
Forms, Logs, About, Reboot, RebootDialog, OutputForm, Main, MessageForm,
InputForm, PidsList;
{$R *.res}
begin
RequireDerivedFormResource:=True;
Application.Scaled:=True;
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form2);
Application.CreateForm(TForm3, Form3);
Application.CreateForm(TForm4, Form4);
Application.CreateForm(TForm5, Form5);
Application.CreateForm(TForm6, Form6);
Application.CreateForm(TForm7, Form7);
Application.CreateForm(TForm8, Form8);
Application.CreateForm(TForm9, Form9);
Application.Run;
end.

315
libnotify.pas Normal file
View File

@ -0,0 +1,315 @@
{ libnotify binding for Free Pascal
Copyright (C) 2011 Ido Kanner idokan at@at gmail dot.dot com
This library is free software; you can redistribute it and/or modify it
under the terms of the GNU Library General Public License as published by
the Free Software Foundation; either version 2 of the License, or (at your
option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License
for more details.
You should have received a copy of the GNU Library General Public License
along with this library; if not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
}
unit libnotify;
{$mode fpc}{$PACKRECORDS C}
interface
uses ctypes, glib2, gdk2pixbuf;
const
NOTIFY_LIBRARY = 'libnotify';
// Should be part of GTK but it is not binded to FPC :(
type
GVariant = record end;
GfreeFunc = procedure(data : gpointer); cdecl;
{ notification.h }
const
(**
* NOTIFY_EXPIRES_DEFAULT:
*
* The default expiration time on a notification.
*)
NOTIFY_EXPIRES_DEFAULT = -1;
(**
* NOTIFY_EXPIRES_NEVER:
*
* The notification never expires. It stays open until closed by the calling API
* or the user.
*)
NOTIFY_EXPIRES_NEVER = 0;
type
P_NotifyNotificationPrivate = ^T_NotifyNotificationPrivate;
T_NotifyNotificationPrivate = record end;
PNotifyNotificationPrivate = P_NotifyNotificationPrivate;
NotifyNotificationPrivate = T_NotifyNotificationPrivate;
P_NotifyNotification = ^T_NotifyNotification;
T_NotifyNotification = record
parent_object : TGObject;
priv : PNotifyNotificationPrivate;
end;
PNotifyNotification = P_NotifyNotification;
TNotifyNotification = T_NotifyNotification;
TNotificationProc = procedure (Notification : PNotifyNotification); cdecl;
P_NotifyNotificationClass = ^T_NotifyNotificationClass;
T_NotifyNotificationClass = record
parent_class : TGObjectClass;
// Signals
Notification : TNotificationProc;
end;
PNotifyNotificationClass = P_NotifyNotificationClass;
TNotifyNotificationClass = T_NotifyNotificationClass;
function notify_notification_get_type : GType; cdecl; external NOTIFY_LIBRARY;
function m_notify_type_notification : GType; cdecl; inline;
function M_NOTIFY_NOTIFICATION(o : pointer) : PGTypeInstance; cdecl; inline;
function M_NOTIFY_NOTIFICATION_CLASS(k : Pointer) : Pointer; cdecl; inline;
function M_NOTIFY_IS_NOTIFICATION(o : Pointer) : Boolean; cdecl; inline;
function M_NOTIFY_IS_NOTIFICATION_CLASS(k : pointer) : Boolean; cdecl; inline;
function M_NOTIFY_NOTIFICATION_GET_CLASS(o : Pointer) : PGTypeClass; cdecl; inline;
const
(**
* NotifyUrgency:
* @NOTIFY_URGENCY_LOW: Low urgency. Used for unimportant notifications.
* @NOTIFY_URGENCY_NORMAL: Normal urgency. Used for most standard notifications.
* @NOTIFY_URGENCY_CRITICAL: Critical urgency. Used for very important notifications.
*
* The urgency level of the notification.
*)
NOTIFY_URGENCY_LOW = 0;
NOTIFY_URGENCY_NORMAL = 1;
NOTIFY_URGENCY_CRITICAL = 2;
type
NotifyUrgency = cint;
(**
* NotifyActionCallback:
* @notification:
* @action:
* @user_data:
*
* An action callback function.
*)
NotifyActionCallback = procedure(notification : PNotifyNotification;
action : PChar;
user_data : gpointer); cdecl;
(*
/**
* NOTIFY_ACTION_CALLBACK:
* @func: The function to cast.
*
* A convenience macro for casting a function to a #NotifyActionCallback. This
* is much like G_CALLBACK().
*/
#define NOTIFY_ACTION_CALLBACK(func) ((NotifyActionCallback)(func))
*)
function notify_notification_new(summary, body, icon : PChar) : PNotifyNotification;
cdecl; external NOTIFY_LIBRARY;
function notify_notification_update(notification : PNotifyNotification;
summary, body, icon : PChar) : gboolean;
cdecl; external NOTIFY_LIBRARY;
function notify_notification_show(notification : PNotifyNotification;
error : PPGError) : gboolean;
cdecl; external NOTIFY_LIBRARY;
procedure notify_notification_set_timeout(notification : PNotifyNotification;
timeout : gint);
cdecl; external NOTIFY_LIBRARY;
procedure notify_notification_set_category(notification : PNotifyNotification;
category : PChar);
cdecl; external NOTIFY_LIBRARY;
procedure notify_notification_set_urgency(notification : PNotifyNotification;
urgency : NotifyUrgency);
cdecl; external NOTIFY_LIBRARY;
procedure notify_notification_set_icon_from_pixbuf(
notification : PNotifyNotification;
icon : PGdkPixbuf);
cdecl; external NOTIFY_LIBRARY;
procedure notify_notification_set_image_from_pixbuf(
notification : PNotifyNotification;
pixbuf : PGdkPixbuf);
cdecl; external NOTIFY_LIBRARY;
procedure notify_notification_set_hint_int32(notification : PNotifyNotification;
key : PChar;
value : gint);
cdecl; external NOTIFY_LIBRARY;
procedure notify_notification_set_hint_uint32(notification : PNotifyNotification;
key : PChar;
value : guint);
cdecl; external NOTIFY_LIBRARY;
procedure notify_notification_set_hint_double(notification : PNotifyNotification;
key : PChar;
value : gdouble);
cdecl; external NOTIFY_LIBRARY;
procedure notify_notification_set_hint_string(notification : PNotifyNotification;
key : PChar;
value : PChar);
cdecl; external NOTIFY_LIBRARY;
procedure notify_notification_set_hint_byte(notification : PNotifyNotification;
key : PChar;
value : guchar);
cdecl; external NOTIFY_LIBRARY;
procedure notify_notification_set_hint_byte_array(
notification : PNotifyNotification;
key : PChar;
value : Pguchar;
len : gsize);
cdecl; external NOTIFY_LIBRARY;
procedure notify_notification_set_hint(notification : PNotifyNotification;
key : PChar;
value : GVariant);
cdecl; external NOTIFY_LIBRARY;
procedure notify_notification_set_app_name(notification : PNotifyNotification;
app_name : PChar);
cdecl; external NOTIFY_LIBRARY;
procedure notify_notification_clear_hints(notification : PNotifyNotification);
cdecl; external NOTIFY_LIBRARY;
procedure notify_notification_add_action(notification : PNotifyNotification;
action,
label_ : PChar;
callback : NotifyActionCallback;
user_data : gpointer;
free_funch : GFreeFunc);
cdecl; external NOTIFY_LIBRARY;
procedure notify_notification_clear_actions(notification : PNotifyNotification);
cdecl; external NOTIFY_LIBRARY;
function notify_notification_close(notification : PNotifyNotification;
error : PPGError) : gboolean;
cdecl; external NOTIFY_LIBRARY;
function notify_notification_get_closed_reason(
notification : PNotifyNotification) : gint;
cdecl; external NOTIFY_LIBRARY;
{ notify-enum-types.h }
(* enumerations from "notification.h" *)
function notify_urgency_get_type : GType;
cdecl; external NOTIFY_LIBRARY;
function M_NOTIFY_TYPE_URGENCY : GType; cdecl; inline;
{ notify-features.h }
(* compile time version *)
const
NOTIFY_VERSION_MAJOR = 0;
NOTIFY_VERSION_MINOR = 7;
NOTIFY_VERSION_MICRO = 3;
(* check whether a version equal to or greater than
* major.minor.micro is present.
*)
function M_NOTIFY_CHECK_VERSION(major, minor, micro : cint) : Boolean; cdecl; inline;
{ notify.h }
function notify_init(app_name : PChar) : gboolean;
cdecl; external NOTIFY_LIBRARY;
procedure notify_uninit; cdecl; external NOTIFY_LIBRARY;
function notify_is_initted : gboolean; cdecl; external NOTIFY_LIBRARY;
function notify_get_app_name : PChar; cdecl; external NOTIFY_LIBRARY;
procedure notify_set_app_name(app_name : PChar); cdecl; external NOTIFY_LIBRARY;
function notify_get_server_caps : PGList; cdecl; external NOTIFY_LIBRARY;
function notify_get_server_info(ret_name, ret_vendor, ret_version : PPChar) : gboolean;
cdecl; external NOTIFY_LIBRARY;
implementation
function m_notify_type_notification : GType; cdecl;
begin
m_notify_type_notification := notify_notification_get_type;
end;
function M_NOTIFY_NOTIFICATION(o : pointer): PGTypeInstance; cdecl;
begin
// #define NOTIFY_NOTIFICATION(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), NOTIFY_TYPE_NOTIFICATION, NotifyNotification))
M_NOTIFY_NOTIFICATION := G_TYPE_CHECK_INSTANCE_CAST(o, m_notify_type_notification);
end;
function M_NOTIFY_NOTIFICATION_CLASS(k: Pointer): Pointer; cdecl;
begin
//#define NOTIFY_NOTIFICATION_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), NOTIFY_TYPE_NOTIFICATION, NotifyNotificationClass))
M_NOTIFY_NOTIFICATION_CLASS := G_TYPE_CHECK_CLASS_CAST(k, m_notify_type_notification);
end;
function M_NOTIFY_IS_NOTIFICATION(o: Pointer): Boolean; cdecl;
begin
// #define NOTIFY_IS_NOTIFICATION(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), NOTIFY_TYPE_NOTIFICATION))
M_NOTIFY_IS_NOTIFICATION := G_TYPE_CHECK_INSTANCE_TYPE(o, m_notify_type_notification);
end;
function M_NOTIFY_IS_NOTIFICATION_CLASS(k: pointer): Boolean; cdecl;
begin
// #define NOTIFY_IS_NOTIFICATION_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), NOTIFY_TYPE_NOTIFICATION))
M_NOTIFY_IS_NOTIFICATION_CLASS := G_TYPE_CHECK_CLASS_TYPE(k, m_notify_type_notification);
end;
function M_NOTIFY_NOTIFICATION_GET_CLASS(o: Pointer): PGTypeClass; cdecl;
begin
// #define NOTIFY_NOTIFICATION_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), NOTIFY_TYPE_NOTIFICATION, NotifyNotificationClass))
M_NOTIFY_NOTIFICATION_GET_CLASS := G_TYPE_INSTANCE_GET_CLASS(o, m_notify_type_notification);
end;
function M_NOTIFY_TYPE_URGENCY: GType; cdecl;
begin
M_NOTIFY_TYPE_URGENCY := notify_urgency_get_type;
end;
function M_NOTIFY_CHECK_VERSION(major, minor, micro: cint): Boolean; cdecl;
begin
{
#define NOTIFY_CHECK_VERSION(major,minor,micro) \
(NOTIFY_VERSION_MAJOR > (major) || \
(NOTIFY_VERSION_MAJOR == (major) && NOTIFY_VERSION_MINOR > (minor)) || \
(NOTIFY_VERSION_MAJOR == (major) && NOTIFY_VERSION_MINOR == (minor) && \
NOTIFY_VERSION_MICRO >= (micro)))
}
M_NOTIFY_CHECK_VERSION := ((NOTIFY_VERSION_MAJOR > major) or
((NOTIFY_VERSION_MAJOR = major) and
(NOTIFY_VERSION_MINOR > minor)) or
((NOTIFY_VERSION_MAJOR = major) and
(NOTIFY_VERSION_MINOR = minor) and
(NOTIFY_VERSION_MICRO >= micro)));
end;
end.

11462
main.frm

File diff suppressed because it is too large Load Diff

View File

@ -1,36 +0,0 @@
{"version":1,"strings":[
{"hash":5073153,"name":"tform1.caption","sourcebytes":[70,111,114,109,49],"value":"Form1"},
{"hash":77085825,"name":"tform1.menuitem1.caption","sourcebytes":[67,97,109,101,114,97],"value":"Camera"},
{"hash":1374,"name":"tform1.menuitem3.caption","sourcebytes":[79,110],"value":"On"},
{"hash":21958,"name":"tform1.menuitem4.caption","sourcebytes":[79,102,102],"value":"Off"},
{"hash":250751524,"name":"tform1.menuitem2.caption","sourcebytes":[80,97,115,115,119,111,114,100,32,82,101,115,101,116],"value":"Password Reset"},
{"hash":157543397,"name":"tform1.menuitem5.caption","sourcebytes":[77,105,99,114,111,112,104,111,110,101],"value":"Microphone"},
{"hash":347301,"name":"tform1.menuitem6.caption","sourcebytes":[77,117,116,101],"value":"Mute"},
{"hash":96816293,"name":"tform1.menuitem7.caption","sourcebytes":[85,110,109,117,116,101],"value":"Unmute"},
{"hash":117465251,"name":"tform1.menuitem25.caption","sourcebytes":[83,121,115,116,101,109,32,65,99,116,105,111,110,115],"value":"System Actions"},
{"hash":207031364,"name":"tform1.menuitem27.caption","sourcebytes":[66,108,97,99,107,108,105,115,116,32,67,97,109,101,114,97,32,97,110,100,32,82,101,98,111,111,116],"value":"Blacklist Camera and Reboot"},
{"hash":190521492,"name":"tform1.menuitem29.caption","sourcebytes":[87,104,105,116,101,108,105,115,116,32,67,97,109,101,114,97,32,97,110,100,32,82,101,98,111,111,116],"value":"Whitelist Camera and Reboot"},
{"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":73785566,"name":"tform1.menuitem36.caption","sourcebytes":[82,101,115,101,116,32,83,104,105,101,108,100,32,73,99,111,110],"value":"Reset Shield Icon"},
{"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":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"},
{"hash":96816293,"name":"tform1.menuitem21.caption","sourcebytes":[85,110,109,117,116,101],"value":"Unmute"},
{"hash":77085825,"name":"tform1.menuitem14.caption","sourcebytes":[67,97,109,101,114,97],"value":"Camera"},
{"hash":1374,"name":"tform1.menuitem15.caption","sourcebytes":[79,110],"value":"On"},
{"hash":21958,"name":"tform1.menuitem16.caption","sourcebytes":[79,102,102],"value":"Off"},
{"hash":250751524,"name":"tform1.menuitem17.caption","sourcebytes":[80,97,115,115,119,111,114,100,32,82,101,115,101,116],"value":"Password Reset"},
{"hash":262051617,"name":"tform1.menuitem40.caption","sourcebytes":[83,121,115,116,101,109,32,67,97,109,101,114,97],"value":"System Camera"},
{"hash":207031364,"name":"tform1.menuitem41.caption","sourcebytes":[66,108,97,99,107,108,105,115,116,32,67,97,109,101,114,97,32,97,110,100,32,82,101,98,111,111,116],"value":"Blacklist Camera and Reboot"},
{"hash":190521492,"name":"tform1.menuitem42.caption","sourcebytes":[87,104,105,116,101,108,105,115,116,32,67,97,109,101,114,97,32,97,110,100,32,82,101,98,111,111,116],"value":"Whitelist Camera and Reboot"},
{"hash":196188387,"name":"tform1.menuitem31.caption","sourcebytes":[83,121,115,116,101,109,32,65,117,100,105,111,32,67,97,114,100,115],"value":"System Audio Cards"},
{"hash":226721332,"name":"tform1.menuitem32.caption","sourcebytes":[66,108,97,99,107,108,105,115,116,32,65,117,100,105,111,32,97,110,100,32,82,101,98,111,111,116],"value":"Blacklist Audio and Reboot"},
{"hash":250860404,"name":"tform1.menuitem33.caption","sourcebytes":[87,104,105,116,101,108,105,115,116,32,65,117,100,105,111,32,97,110,100,32,82,101,98,111,111,116],"value":"Whitelist Audio and Reboot"},
{"hash":4691652,"name":"tform1.menuitem44.caption","sourcebytes":[65,98,111,117,116],"value":"About"},
{"hash":315140,"name":"tform1.menuitem45.caption","sourcebytes":[69,120,105,116],"value":"Exit"},
{"hash":185423705,"name":"tform1.menuitem13.caption","sourcebytes":[75,105,108,108,32,67,97,112,116,117,114,105,110,103,32,40,85,115,101,114,32,77,111,100,101,41],"value":"Kill Capturing (User Mode)"},
{"hash":200734201,"name":"tform1.menuitem37.caption","sourcebytes":[75,105,108,108,32,67,97,112,116,117,114,105,110,103,32,40,83,117,100,111,41],"value":"Kill Capturing (Sudo)"},
{"hash":49173897,"name":"tform1.menuitem38.caption","sourcebytes":[73,110,112,117,116,32,67,97,112,116,117,114,101,32,80,97,115,115,119,111,114,100,32,40,83,117,100,111,41],"value":"Input Capture Password (Sudo)"}
]}

283
main.pas
View File

@ -4,25 +4,50 @@ unit Main;
{$warnings off}
{$hints off}
// Created at 23th of January 2020, by Linuxer (https://gitlab.com/psposito), from scratch with Free Pascal
// Copyright © 2020 linuxer <linuxer@artixlinux.org> <https://linuxer.gr>
// Created at 23th of January 2020, by Linuxer (https://gitlab.com/linuxergr), from scratch with Free Pascal
// Redesigned and further Developed at 28th of January 2020, by Initial developer
// to provide Camera and Mic status alone with On/Off and Mute/Unmute fuctions
// Developed further for intrusion feeling and logging at 2nd of February 2020, by Initial developer
// Developed for Blacklisting/Whitelisting functions for both camera & audio at 7th of February 2020, by Initial developer
// Finalized, except traslations at 15th of February 2020.
// Further Capabilities added alone with better Logging at 22nd of February 2020
// Development Ended at 5th of March 2020. Minor Updates will follow, if needed
// Essential Development Ended at 5th of March 2020. Minor Updates will follow, if needed
// Thanks to Ido Kanner idokan at@at gmail dot.dot com, libnotify has been added to the project, so to solve issues of notifiers and Qt5 on Linux
// https://forum.lazarus.freepascal.org/index.php/topic,52052.0.html
// Wayland and x11 operation confirmed too with the libnotify addition
// Further project development for the next major release 2.1.0, as from 3rd of Nov 2020 / ended at 6th of Nov 2020
interface
uses
{$IFDEF UNIX}
cthreads,
cthreads,
{$ENDIF}
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ExtCtrls, StdCtrls,
Menus, PopupNotifier, UTF8Process, UniqueInstance, VpClock, Unix, process,
About, Logs, Reboot, RebootDialog, OutputForm, MessageForm, InputForm, PidsList,
DateUtils, LCLType, LCLTranslator, BaseUnix;
DateUtils, LCLType, LCLTranslator, BaseUnix, Math, libnotify, fpTimer;
{ TNotifier }
Type
TNotifier = class
private
{$IFDEF LINUX}
LNotifier : PNotifyNotification;
{$ELSE}
LocalTimer : TFPTimer;
PopupNotifier: TPopupNotifier;
procedure TimerFinished( Sender : TObject );
{$ENDIF}
public
procedure ShowTheMessage(const Title, Message : string; IconIndex : String; ShowTime : integer = 6000);
destructor Destroy; Override;
constructor Create();
end;
type
@ -142,7 +167,7 @@ type
end;
var
ReleaseNo : String = '2.0.3';
ReleaseNo : String = '2.1.0';
Form1 : TForm1;
S : LongInt;
MicSwitchStr : String;
@ -200,8 +225,6 @@ var
implementation
procedure RebootSystem; forward;
procedure AskPassword; forward;
Procedure AppendLogs; forward;
@ -210,6 +233,107 @@ Procedure AppendLogs; forward;
{ TForm1 }
Procedure TNotifier.ShowTheMessage(const Title, Message : string; IconIndex : String; ShowTime : integer);
begin
{$IFDEF LINUX}
notify_init(argv[0]);
LNotifier := notify_notification_new (pchar(Title), pchar(Message), pchar(IconIndex)); //'dialog-warning'));
notify_notification_set_timeout(LNotifier, ShowTime); // figure is mS
notify_notification_show (LNotifier, nil);
notify_uninit;
Destroy;
// Should also check for errors and use TPopupNotifier if Notify won't work
// But that will have to wait until I find a Linux where it does not work .....
{$ELSE}
// For the future to be further develop to set x,y position ----> POSSIBLE TODO ON NEXT RELEASES
// Non Linux must use TPopupNotifier
PopupNotifier := TPopupNotifier.Create(nil);
PopupNotifier.Text := Message;
PopupNotifier.Title := Title;
PopupNotifier.show;
LocalTimer := TFPTimer.create(nil);
LocalTimer.Interval := ShowTime;
LocalTimer.OnTimer:= @TimerFinished;
LocalTimer.Enabled := True;
{$ENDIF}
end;
{$IFNDEF LINUX}
procedure TNotifier.TimerFinished( Sender : TObject );
begin
// writeln('Timer finished');
LocalTimer.Enabled := false;
PopupNotifier.hide;
Destroy;
end;
{$ENDIF}
destructor TNotifier.Destroy;
begin
{$IFNDEF LINUX}
freeandnil(PopupNotifier);
freeandnil(LocalTimer);
{$ENDIF}
inherited Destroy;
end;
constructor TNotifier.Create();
begin
inherited Create();
end;
procedure RunsAsRoot(CommandLine:String);
var
Proc: TProcess;
CharBuffer: array [0..511] of char;
ReadCount: integer;
ExitCode: integer;
SudoPassword: string;
begin
WriteLn('Please enter the sudo password:');
Readln(SudoPassword);
ExitCode := -1; //Start out with failure, let's see later if it works
Proc := TProcess.Create(nil); //Create a new process
try
Proc.Options := [poUsePipes, poStderrToOutPut]; //Use pipes to redirect program stdin,stdout,stderr
Proc.CommandLine := CommandLine; //Run ls /root as root using sudo
// -S causes sudo to read the password from stdin.
Proc.Execute; //start it. sudo will now probably ask for a password
// write the password to stdin of the sudo program:
SudoPassword := SudoPassword + LineEnding;
Proc.Input.Write(SudoPassword[1], Length(SudoPassword));
SudoPassword := '%*'; //short string, hope this will scramble memory a bit; note: using PChars is more fool-proof
SudoPassword := ''; // and make the program a bit safer from snooping?!?
// main loop to read output from stdout and stderr of sudo
while Proc.Running or (Proc.Output.NumBytesAvailable > 0) or
(Proc.Stderr.NumBytesAvailable > 0) do
begin
// read stdout and write to our stdout
while Proc.Output.NumBytesAvailable > 0 do
begin
ReadCount := Min(512, Proc.Output.NumBytesAvailable); //Read up to buffer, not more
Proc.Output.Read(CharBuffer, ReadCount);
Write(StdOut, Copy(CharBuffer, 0, ReadCount));
end;
// read stderr and write to our stderr
while Proc.Stderr.NumBytesAvailable > 0 do
begin
ReadCount := Min(512, Proc.Stderr.NumBytesAvailable); //Read up to buffer, not more
Proc.Stderr.Read(CharBuffer, ReadCount);
Write(StdErr, Copy(CharBuffer, 0, ReadCount));
end;
end;
ExitCode := Proc.ExitStatus;
finally
Proc.Free;
Halt(ExitCode);
end;
end;
procedure AdjustBalloonPosition;
var
BaloonWidth : Integer;
@ -224,50 +348,111 @@ begin
NewWidth := Width div 2 - BaloonWidth - 130;
Height := Screen.Monitors[0].Height;
NewHeight := Height div 2 - BaloonHeight - 50;
writeln('Width = ' + intToStr(Width) + ' Height = ' + intToStr(Height));
end;
procedure PopUpWebcamOn;
var
PopNotifier : TNotifier;
begin
Form1.PopupNotifier2.Text := 'Camera is On' + LineEnding + 'Video Device: /dev/video' + IntToStr(CountNumber)+ '/';
Form1.PopupNotifier2.ShowAtPos(NewWidth , NewHeight - 325 div 2 - 20);
Form1.TrayIcon5.Hint := 'Camera Status' + LineEnding + 'Camera is On';
{$IFNDEF LINUX}
Form1.PopupNotifier2.Text := 'Camera is On' + LineEnding + 'Video Device: /dev/video' + IntToStr(CountNumber)+ '/';
Form1.PopupNotifier2.ShowAtPos(NewWidth , NewHeight - 325 div 2 - 20);
Form1.TrayIcon5.Hint := 'Camera Status' + LineEnding + 'Camera is On';
{$ENDIF}
{$IFDEF LINUX}
PopNotifier := TNotifier.Create;
PopNotifier.ShowTheMessage('Camera is On','Video Device: /dev/video' + IntToStr(CountNumber)+ '/', 'camera-web', 6000);
Form1.TrayIcon5.Hint := 'Camera Status' + LineEnding + 'Camera is On';
{$ENDIF}
end;
procedure PopUpWebcamOff;
var
PopNotifier : TNotifier;
begin
Form1.PopupNotifier1.Text := 'No Camera' + LineEnding + 'Video Device: /dev/video' + IntToStr(CountNumber)+ '/';
Form1.PopupNotifier1.ShowAtPos(NewWidth , NewHeight - 325 div 2 - 20);
Form1.TrayIcon5.Hint := 'Camera Status' + LineEnding + 'Camera is Disabled';
{$IFNDEF LINUX}
Form1.PopupNotifier1.Text := 'No Camera' + LineEnding + 'Video Device: /dev/video' + IntToStr(CountNumber)+ '/';
Form1.PopupNotifier1.ShowAtPos(NewWidth , NewHeight - 325 div 2 - 20);
Form1.TrayIcon5.Hint := 'Camera Status' + LineEnding + 'Camera is Disabled';
{$ENDIF}
{$IFDEF LINUX}
PopNotifier := TNotifier.Create;
PopNotifier.ShowTheMessage('No Camera / Camera is Off','Video Device: /dev/video' + IntToStr(CountNumber)+ '/', 'camera-web', 6000);
Form1.TrayIcon5.Hint := 'Camera Status' + LineEnding + 'Camera is On';
{$ENDIF}
end;
procedure PopUpWebcamCaptures;
var
PopNotifier : TNotifier;
begin
Form1.PopupNotifier7.Text := 'Camera is Capturing' + LineEnding + 'Video Device: /dev/video'
+ IntToStr(CountNumber)+ '/' + LineEnding + 'Application Name: ' + CaptureAppName;
Form1.PopupNotifier7.ShowAtPos(NewWidth , NewHeight - 325 div 2 - 20);
Form1.TrayIcon5.Hint := 'Camera Status' + LineEnding + 'Camera is Capturing' + LineEnding + CaptureAppName;
{$IFNDEF LINUX}
Form1.PopupNotifier7.Text := 'Camera is Capturing' + LineEnding + 'Video Device: /dev/video'
+ IntToStr(CountNumber)+ '/' + LineEnding + 'Application Name: ' + CaptureAppName;
Form1.PopupNotifier7.ShowAtPos(NewWidth , NewHeight - 325 div 2 - 20);
Form1.TrayIcon5.Hint := 'Camera Status' + LineEnding + 'Camera is Capturing' + LineEnding + CaptureAppName;
{$ENDIF}
{$IFDEF LINUX}
PopNotifier := TNotifier.Create;
PopNotifier.ShowTheMessage('Camera is Capturing','Video Device: /dev/video' + IntToStr(CountNumber)+ '/', 'camera-video', 6000);
Form1.TrayIcon5.Hint := 'Camera Status' + LineEnding + 'Camera is Capturing';
{$ENDIF}
end;
procedure PopUpWebcamNotCapturing;
var
PopNotifier : TNotifier;
begin
Form1.PopupNotifier6.Text := 'Camera is not Capturing' + LineEnding + 'Video Device: /dev/video' + IntToStr(CountNumber)+ '/';
Form1.PopupNotifier6.ShowAtPos(NewWidth , NewHeight - 325 div 2 - 20);
Form1.TrayIcon5.Hint := 'Camera On' + LineEnding + 'Camera is Enabled, but is not Capturing';
{$IFNDEF LINUX}
Form1.PopupNotifier6.Text := 'Camera is not Capturing' + LineEnding + 'Video Device: /dev/video' + IntToStr(CountNumber)+ '/';
Form1.PopupNotifier6.ShowAtPos(NewWidth , NewHeight - 325 div 2 - 20);
Form1.TrayIcon5.Hint := 'Camera On' + LineEnding + 'Camera is Enabled, but is not Capturing';
{$ENDIF}
{$IFDEF LINUX}
PopNotifier := TNotifier.Create;
PopNotifier.ShowTheMessage('Camera is not Capturing','Video Device: /dev/video' + IntToStr(CountNumber)+ '/', 'camera-video', 6000);
Form1.TrayIcon5.Hint := 'Camera Status' + LineEnding + 'Camera is enabled but is not Capturing';
{$ENDIF}
end;
procedure PopUpWebcamHacked;
var
PopNotifier : TNotifier;
begin
Form1.PopupNotifier8.Text := 'Camera is Hacked' + LineEnding + 'Video Device: /dev/video' + IntToStr(CountNumber)+ '/' + LineEnding + 'Check Logs';
Form1.PopupNotifier8.ShowAtPos(NewWidth , NewHeight - 325 div 2 - 20);
Form1.TrayIcon5.Hint := 'Camera Status' + LineEnding + 'Camera is Hacked' + LineEnding + 'Check Logs';
{$IFNDEF LINUX}
Form1.PopupNotifier8.Text := 'Camera is Hacked' + LineEnding + 'Video Device: /dev/video' + IntToStr(CountNumber)+ '/' + LineEnding + 'Check Logs';
Form1.PopupNotifier8.ShowAtPos(NewWidth , NewHeight - 325 div 2 - 20);
Form1.TrayIcon5.Hint := 'Camera Status' + LineEnding + 'Camera is Hacked' + LineEnding + 'Check Logs';
{$ENDIF}
{$IFDEF LINUX}
PopNotifier := TNotifier.Create;
PopNotifier.ShowTheMessage('Camera is Hacked','Video Device: /dev/video' + IntToStr(CountNumber)+ '/', 'dialog-warning', 6000);
Form1.TrayIcon5.Hint := 'Camera Status' + LineEnding + 'Camera is Hacked , Check Logs';
{$ENDIF}
end;
procedure PopUpMicHacked;
var
PopNotifier : TNotifier;
begin
Form1.PopupNotifier9.Text := 'Microphone is Hacked' + LineEnding + 'Alsa Driver Changed Status';
Form1.PopupNotifier9.ShowAtPos(NewWidth , NewHeight - 325 div 2 - 20);
Form1.TrayIcon5.Hint := 'Microphone Status' + LineEnding + 'Microphone is Hacked' + LineEnding + 'Check Logs';
{$IFNDEF LINUX}
Form1.PopupNotifier9.Text := 'Microphone is Hacked' + LineEnding + 'Alsa Driver Changed Status';
Form1.PopupNotifier9.ShowAtPos(NewWidth , NewHeight - 325 div 2 - 20);
Form1.TrayIcon5.Hint := 'Microphone Status' + LineEnding + 'Microphone is Hacked' + LineEnding + 'Check Logs';
{$ENDIF}
{$IFDEF LINUX}
PopNotifier := TNotifier.Create;
PopNotifier.ShowTheMessage('Microphone is Hacked','Alsa Driver Changed Status', 'dialog-warning', 6000);
Form1.TrayIcon5.Hint := 'Microphone Status' + LineEnding + 'Microphone is Hacked , Check Logs';
{$ENDIF}
end;
procedure PopUpNoWebcam;
@ -286,20 +471,40 @@ begin
end;
procedure PopUpMicOn;
var
PopNotifier : TNotifier;
begin
Form1.PopupNotifier3.Text := 'Microphone is Unmuted' + LineEnding + 'Alsa Driver Status: cap';
Form1.PopupNotifier3.ShowAtPos(NewWidth, NewHeight);
Form1.TrayIcon2.Hint := 'Microphone Status & Menu' + LineEnding + 'Microphone is Unmuted';
{$IFNDEF LINUX}
Form1.PopupNotifier3.Text := 'Microphone is Unmuted' + LineEnding + 'Alsa Driver Status: cap';
Form1.PopupNotifier3.ShowAtPos(NewWidth, NewHeight);
Form1.TrayIcon2.Hint := 'Microphone Status & Menu' + LineEnding + 'Microphone is Unmuted';
{$ENDIF}
{$IFDEF LINUX}
PopNotifier := TNotifier.Create;
PopNotifier.ShowTheMessage('Microphone is Unmuted','Alsa Driver Status: cap', 'audio-input-microphone-high', 6000);
Form1.TrayIcon2.Hint := 'Microphone Status & Menu' + LineEnding + 'Microphone is Unmuted';
{$ENDIF}
end;
procedure PopUpMicOff;
var
PopNotifier : TNotifier;
begin
Form1.PopupNotifier4.Text := 'Microphone is Muted' + LineEnding + 'Alsa Driver Status: nocap';
Form1.PopupNotifier4.ShowAtPos(NewWidth , NewHeight);
Form1.TrayIcon2.Hint := 'Microphone Status & Menu' + LineEnding + 'Microphone is Muted';
{$IFNDEF LINUX}
Form1.PopupNotifier4.Text := 'Microphone is Muted' + LineEnding + 'Alsa Driver Status: nocap';
Form1.PopupNotifier4.ShowAtPos(NewWidth , NewHeight);
Form1.TrayIcon2.Hint := 'Microphone Status & Menu' + LineEnding + 'Microphone is Muted';
{$ENDIF}
{$IFDEF LINUX}
PopNotifier := TNotifier.Create;
PopNotifier.ShowTheMessage('Microphone is Muted','Alsa Driver Status: nocap', 'audio-input-microphone-low-zero', 6000);
Form1.TrayIcon2.Hint := 'Microphone Status & Menu' + LineEnding + 'Microphone is Muted';
{$ENDIF}
end;
procedure GetDistrName;
procedure GetDistrName; // This will be altered after testing on different distros, so to eliminate the $distro on CameraControl.sh
var
AStringList : TStringList;
AProcess : TProcess;
@ -452,7 +657,7 @@ begin
//StrLength := 0;
if (Length(Password2) > 0) and (HasPassword = true) then // Full test command is: lsof /dev | grep video && ls /dev/ | grep v4l
Str2 := Concat('echo ', Password2, ' | sudo -S sh -c "lsof /dev | grep video"')
Str2 := Concat('echo ', Password2, ' | sudo -S sh -c "lsof /dev | grep video"')
else
Str2 := Concat('lsof /dev/ ' , '|' , ' grep video');
@ -1286,7 +1491,7 @@ begin
Inc(GridLine);
end;
//procedure ClearLogs; //Save Current and Clear Logs, not used on build
//procedure ClearLogs; // Save Current and Clear Logs, not used on build
//
//begin
// SaveLogs;
@ -1701,6 +1906,9 @@ begin
About.Form2.ListBox1.Items.Add('StartUp Shell Script to auto provide Sudo Password and Operating');
About.Form2.ListBox1.Items.Add('System as parameters and many other improvements, Done at 5th of');
About.Form2.ListBox1.Items.Add('March 2020');
About.Form2.ListBox1.Items.Add(' ');
About.Form2.ListBox1.Items.Add('Shifted to Qt5 completely as from 6th of Noc 2020, for better Linux');
About.Form2.ListBox1.Items.Add('notifications support, as from 2.1.0 and after release');
About.Form2.Show;
end;
@ -1889,6 +2097,7 @@ begin
if (CamStatus = 2) and (CamSavedStatus = 0) then // Webcam Captures from Off
begin
ImageListCam1.GetIcon(1, TrayIcon5.Icon);
Sleep(6000);
PopupNotifier2.Hide;
if PopUpWebcamCaptStatus = false then
begin
@ -1910,6 +2119,7 @@ begin
begin
ActionTime := now;
ImageListCam1.GetIcon(1, TrayIcon5.Icon);
Sleep(6000);
PopupNotifier2.Hide;
PopUpWebcamCaptures;
PopUpWebcamCaptStatus := true;
@ -1996,6 +2206,7 @@ begin
begin
ActionTime := now;
ImageListCam1.GetIcon(1, TrayIcon5.Icon);
//Sleep(6000);
PopupNotifier2.Hide;
PopUpWebcamCaptures;
PopUpWebcamCaptStatus := false;
@ -2247,4 +2458,4 @@ begin
CheckEvents;
end;
end.
end.

124
notifier.pas Normal file
View File

@ -0,0 +1,124 @@
unit notifier;
{$mode objfpc}{$H+}
{ Copyright (C) 2017-2020 David Bannon
License:
This code is licensed under BSD 3-Clause Clear License, see file License.txt
or https://spdx.org/licenses/BSD-3-Clause-Clear.html
------------------
A trivial unit that uses libnotify on Linux and a timed out TPopupNotify on other platforms.
Does very little, on linux it just calls libnotify, https://github.com/ik5/libnotify-fpc
On Non-Linux, it calls TPopupNotifier, sets a timer and removes the Popup after the set
time (in mS). In both cases, it then destroys itself !
Yes, you call create but YOU DO NOT FREE it !
To use it, grab libnotify.pas, add it and this unit to your Lazarus project and do
something like this -
procedure TForm1.Button2Click(Sender: TObject);
var
Notifier : TNotifier;
begin
Notifier := TNotifier.Create;
Notifier.ShowTheMessage('This is Title', 'and this is the message', 15000); // 15 seconds
// Note, don't free it, it frees itself.
end;
On Linux, multitheading must be enabled, in the project (lpr) file, add
{$DEFINE UseCThreads} immediatly above the first "uses" line.
On Linux, to compile you need the dev version of libnotify but at run time all
that is needed is libnotify and it appears to be installed on most if not all distros.
On tomboy-ng, my model is that "oh, you might like to know" type notifications take the common
6 seconds. Things the end user might really need to know, such as sync drive not being available
I give 12 seconds. Something, really urgent (I don't have any) might get longer. Its incorrect
to leave messages that really don't need user action there for very long.
}
interface
uses
Classes, SysUtils, fpTimer{$ifdef Linux}, libnotify{$else}, PopupNotifier {$endif} ;
Type
{ TNotifier }
TNotifier = class
private
{$ifdef LINUX}
LNotifier : PNotifyNotification;
{$else}
LocalTimer : TFPTimer;
PopupNotifier: TPopupNotifier;
procedure TimerFinished( Sender : TObject );
{$endif}
public
procedure ShowTheMessage(const Title, Message : string; ShowTime : integer = 6000);
destructor Destroy; Override;
constructor Create();
end;
implementation
procedure TNotifier.ShowTheMessage(const Title, Message : string; ShowTime : integer);
begin
{$ifdef LINUX}
notify_init(argv[0]);
LNotifier := notify_notification_new (pchar(Title), pchar(Message), pchar('dialog-information'));
notify_notification_set_timeout(LNotifier, ShowTime); // figure is mS
notify_notification_show (LNotifier, nil);
notify_uninit;
Destroy;
// Should also check for errors and use TPopupNotifier if Notify won't work
// But that will have to wait until I find a Linux where it does not work .....
{$else}
// Non Linux must use TPopupNotifier
PopupNotifier := TPopupNotifier.Create(nil);
PopupNotifier.Text := Message;
PopupNotifier.Title := Title;
PopupNotifier.show;
LocalTimer := TFPTimer.create(nil);
LocalTimer.Interval := ShowTime;
LocalTimer.OnTimer:= @TimerFinished;
LocalTimer.Enabled := True;
{$endif}
end;
{$ifndef LINUX}
procedure TNotifier.TimerFinished( Sender : TObject );
begin
// writeln('Timer finished');
LocalTimer.Enabled := false;
PopupNotifier.hide;
Destroy;
end;
{$endif}
destructor TNotifier.Destroy;
begin
{$ifndef LINUX}
freeandnil(PopupNotifier);
freeandnil(LocalTimer);
{$endif}
inherited Destroy;
end;
constructor TNotifier.Create();
begin
inherited Create();
end;
end.