open air application by window hotkeys - apache-flex

I am developing flex air application.I have to implement hot-key functionality in air application.
For example whenever user press any two keys like ctr and S keys the open flex air application.
and whenever user press any two keys like ctr and q keys then close flex air application.
Is it possible in flex?
Thanks

It's not possible for a not-running program to intercept key commands. As such you cannot tell the application to start on some key command; either the program needs to run already, or you need to set that key command to the OS (you can do that in Windows in the properties panel for example).
The other command is rather easy, just listen for KeyDown events and check if your combination was pressed; and if so, quit the application.

Not to my knowledge.
For this kind of functionality you need a daemon or a background process. Because in AIR it's not possible to listen for keys when not focused (alias key logger) it would have to be a native application (different versions for different OS).
An alternative would be to somehow set a key stroke in the OS configuration - but then again, this is very different on different OS, and it is not supported by AIR - a native process would be required, too.
If you want to make this simple, it's not possible, unless you really want to invest a lot of time to write these processes, one for each different OS.

Related

How to select specific element in Powerbuilder window using HP UFT

I am trying to record/automate an application developed in Sybase' Powerbuilder. I am currently using HP UFT v12.54.
Using the default recording process, the object spy is only seeing the area on my PB Window, not the specific field/dropdown. In short, I am unable to select a specific object in the window.
Please see the following image:
I am trying to select the Authorized Signatory field, but instead, UFT does not see the specific element, but the field area Customer Data instead. UFT just references the fields in the area by xy axis, not the specific object. Is this the default behaviour?
Additional info:
Application is developed in PowerBuilder v11.5
Any input would be appreciated.
if the first impediment is the modification of the application made in PB, then the next option would be to use a third application that supports applications made in PB. There is the TestComplete application that can do what you need. I leave you some information links.
http://testingbaires.com/testcomplete-automatizacion-de-testing/
https://smartbear.com/product/testcomplete/overview/
https://support.smartbear.com/testcomplete/docs/app-testing/desktop/power-builder/classic.html?q=powerbuilder#supported-powerbuilder-versions
I would personally modify the PB application by creating a module with the necessary battery of tests and running the study window with each and every case and applying an output report based on the needs, I understand that it would not be complicated.
The PowerBuilder's DataWindow control is a special custom-drawn control that cannot be accessed from outside of a PB application. It is internally managed and PB dynamically (re)uses the same windows edittext to get the input for one value at a time, while only drawing the rest of the data without using standard windows controls but a kind of canvas.
This is due to the initial portable design of PB (it used to be available for Solaris, MacOS and some other unices in the past) that implies a virtual machine like for Java (hence the pbvmxxx.dll for PB virtual machine).
I am afraid that from the outside, the only option to pilot a PB application would be to use sendkeys and mouse clicks, provided that the taborders are correct to access sequentially all the DW controls.
This is not the default behavior of UFT with power builder applications, you should either see a PBWindow Object or Proper Powerbuilder objects in the Object Spy.
According to the PAM, UFT 12.54 supports Powerbuilder 11.5+.
Below are the few things you can try
1) Make sure all of the latest patches are installed
2) Try to use record and run settings to open the power builder application. Once Record and run settings are set, click on record button and UFT will open the application. Then stop the recording, open object spy and check if its recognizing the objects after that.
3) Run UFT as admin. UFT needs the same privilege level as the application. So if you're application is running in higher privilege then UFT then UFT will not be able to recognize anything on the application.
If nothing works then you can open a ticket with HP, because powerbuilder 11.5 is supported by UFT 12.5.

Qt "monkey" Testing - simulate random clicks and keypresses

Is there a framework to simulate a deterministically pseudorandom series of clicks imposed upon a Qt application - in order to try to trigger any memory leaks, threading errors etc - typical monkey-testing?
Some exotic, monkey use for QTestLib?
Yes, you can use the useful unit test module. Look in particular at the class QTestEventList. Just provide the QWidget you want to test, or the QMainWindow or whatever subclass you want and add the list of events you want to generate. If you want to generate a sequence of points so that you can reproduce in case of failure, use qsrand() and qrand().
The Squish automated GUI testing framework can be used to do monkey clicking in your application. There are a couple of nice things about using Squish for this purpose:
Squish runs on Windows, Mac, Linux and Android
It logs whatever random steps it happens to perform as a script that can be re-run (monkey testing docs)
It has an option to take a screenshot on application crash (screenshot on failure settings docs)
Disadvantages: Squish is not free. Setting up Squish to run your application can be super-irritating, especially if your application requires specific build characteristics of Qt or Python.

Flex listen to Operating system events when not in focus

Is there a way that a flex based application (in the browser or AIR) can listen to windows events (or any other OS) when it is not in focus?
Lets say that my AIR application is minimized and I want her to be notified when ever new data was copied to the clipboard?
No way, otherwise every ad in your browser would be potential keylogger. Not even AIR app can do that out the box. If your AIR app is native, it can run processes - so you could run helper application to watch OS events.

Send data to Com port from a web page

I'm new to web development so please, could you help me to understand if I'm working in the right direction?
There will be a webpage intended for our customers (not intranet) from where they can print labels. Some of the larger customers will have special label printers where configuration and printing using COM-port is the only acceptable option. Basically we have very limited knowledge and control over their environment.
The web-page itself will be a pretty simple html-page or more complex AJAX.
After the customer inputs all the data and happens to chose this type of printing we have following tasks:
1) get data about the printers on the customer's system installed to a comport and if possible get printer settings (like paper size and orientation). Ideally would like to be able to adjust the settings, but if it is a pain can just put into requirements that your printer must be installed to COM1 and configured correctly.
2) send commands and read answers and send PCL code to the selected com port
As I understand I'll need to install something on the customer's machine to be able to talk to com port and get any settings. Just HTML+Javascript are not capable of doing that. Right?
I found RXTX library which seems to communicate to com port on most platforms. Can it be called from JavaScript or I still need to do a Java plugin? Are there technologies other than Java plugin that would solve the task?
The web-page will be used in different environment - platforms and web-browsers. We would like to minimize the number of customized solutions. Will Java allow us to do the same plugin for all environments with minimal customization?
If we require the user to install a plugin will the user be prompted with our credentials to confirm the installation? Will our web-site require higher trust settings?
Thanks for you help!
Well, I've had to do this in the past. Here is what I did and the circumstances
1) I knew that our customers were in a windows environment so I wrote win32 software to handle the printing.
2) I created a file format to be read by the win32 software that allowed me to specify print parameters and the label data. XML works ok for things like this.
3) My web app created a file in the format used by the win32 software and returned it to the user when they clicked on the "Print Labels" button. The file extension on the file returned was registered by the installer of the win32 software. That means when their browser looked for a default app handler for that file, it found my win32 software.
Bottom line is that the browser is handing off the printer communications to a native application instead of talking directly to the printer.
Obviously you need to be able to dictate your end user's are using a windows machine (or mac or whatever you can write native code). Associating a file extension with my program and returning that file to the user was the key to making the process work for me.
Whether your native code sends pcl directly to the printer or translates into a print api (like the win32 api as mine does) is another consideration.
Another approach you could consider is instead of sending PCL codes, you could create a PDF of the document. Format the document to the size and orientation of the label printer. The user will still have to hit the print button, but that might work. I have done this for printing to bar code printers and it works fine. Sometimes getting the margin and orientation correct is a little tricky, but that can be figured out.

How does Adobe CONNECTNOW load and run acaddin?

I am looking for options to download, Install and run a custom plugin/add-on(an exe or an installer) from my Flash Movie similar to how the connectnow does that?
When we initiate the screen sharing for the first time, connectnow prompts us for mandatory add-in by showing the message "To use this application, you need the Adobe ConnectNow Add-in.Would you like to install it now?". Once we agree, it downloads and installs acaddin.exe at the location %USERPROFILE%\Application Data\Macromedia\Flash Player\www.macromedia.com\bin\acaddin on our local machine. Then automatically launches the acaddin.exe and allows the user to close the browser window from where the acaddin.exe was launched.
From the next time onwards, when we login to connectnow, it launches the exe directly.
In this context:
If I were to load my own exe/add-in from flash, How can I acheive that?
How does connectnow application/flash determine whether an add-in was already installed or not?
Connect, and I assume ConnectNow, use hidden, undocumented, private APIs for much of their functionality.
You will not be able to do this.
The best you can hope for is to pass the location of your executable to the browser as a local URL and let the browser handle it. I assume in most cases the browser will reject its' execution. Can you imagine the potential for abuse of such a feature?
Instead of using a browser based app, you may want to investigate using AIR and Native Process.

Resources