This is a very general question:
I was wondering whether it is possible to find out whether an application (any kind of application no matter if it a delphi-application or java or whatever) was started by a user or by another application? And if it is possible and I see that an application was called by another one, can I find out what the “father” application is, that called the new programm?
Thnx in advance!
EDIT: Maybe it is too general – How can I see whether a Delphi application has a parent application with Delphi itself, e.g. one application was started by a service and I need to find that service?
Every single running application has a parent application, which launched it (except for root system process).
It is not possible to tell, whenever it is user who directly clicked on application to lauch it or not.
Example: take Explorer shell (not Internet Explorer).
You can double click on any application to launch it. The parent process will be explorer.exe.
You can right-click on any file and a bunch of context menu extenders will load. Some of them may launch external applications to, say, create a preview of video-file (I saw this, swear!). The parent process will be explorer.exe, but user didn’t indended to lauch any application. He just wants to view file’s properties. He didn’t even know, that applications were lauched!
Example: take Total Commander or any other two-panel file managers, which supports plugins for archives.
application to launch it. The parent
process will be totalcmd.exe.
(extract) few files from it to your
Documents folders. Corresponding
plugin may handle extraction by
itself or run invisible process to
handle all work. All you see is
progress bar in Total Commander. But
there is a new proces and its parent
is totalcmd.exe again.
There are no differences between cases 1 and 2 in both examples.
BTW, the definition “started by user” is unclear. You even may say that nothing can happen without user’s command. All those background processes in cases #2 were launched because user asked for it. Well, user didn’t asked for lauch explicitly, but he asked for operation itself.