Suggestions required for solving a Java problem
I am working on a project from quite some time, during this time I have consulted different books, web sites, posted various messages on various forums but still unable to get the solution, actually the solution which I am aiming should be purely Java based, below I am first stating the scenario and than my questions, I would be waiting for replies from your side, please give me suggestions that how to make this thing possible and please help me finding some pure Java solution to this problem(if a pure java solution) exists), following is the scenario:
I want to make a Java application which is continuously running in memory, by “continuously running in memory” I mean that when ever I start my PC the application starts running at the back end just like a Windows Service without any user intervention and when the PC is closed the application will off course stops working like all other windows services. Now what this application has to do is to continuously monitoring all the key strokes pressed from the keyboard by the user, when ever a user presses Ctrl-F3 ( pressing Control key and F3 keys together) than a pop up message will appear on the screen but if the user presses some other key or a combination of different key strokes than nothing will happen. This is the complete scenario which I am facing, now the questions which I have are as follows:
1) How can I trap an event ( any particular key press event) from a Java program which is running in the windows service, handling key board events for a GUI based forms is quite simple but how can I trap an event for such a program, how can I bind my key press events to this program.
2) My second question is that how to add a Java program to a windows service so that every time I start my PC my program like all other services also starts running.
3) Last but not the least that I need a pure Java based solution, is this really possible and if not than what are the other ways to solve this scenario.
Thanking You in advance.
some approaches may be considered
The challenge has been considered before, though we do not see a great and efficient discussion in the many books. In a discussion in another Java group, an arrival of oopinion was that there is no way to detect system shutdown from outside of the Java Virtual Machine was the consensus of that discusion. I neither read it nor know for sure. I do know that in considering my own design I arrived at a single class, extending Thread, and running at a lower-priority could be used to watch the keyboard for some sort of data.
Trapping keyboard events from Java running as a background service ( a service ) suggests you are looking for a way to recieve the SIG_TERM and so on which do not exist at the level of the Java API, there exist in some programming languages a method of detecting when exit programs is broadcast to all running programs. Trapping keyboard events in my opinion will have to have some sort of window I would think. Is it necessary that the process run with no window?
Starting every time windows starts up is done by adding what is called a shell shortcut to the start up menu. Once you figure it out it is like any other typed text.
This task has been accomplished by the Apache server, it can be done but may involve much study. Being able to have a window makes idea much more accomplishable.