Clicks going to background window in Adobe AIR app on OS X High Sierra - air

We have a fairly large AIR desktop application (captive AIR, using Runtime version 21).
Recently our QA have confirmed and reproduced an odd report by a Mac user:
When the app is in full screen, running on OS X High Sierra, then some clicks on the main user interface go through to whatever application is running behind the window. Whatever background window has been clicked, it will jump to the front and the click is processed, e.g. if the click was sent to a Finder window and happened to be in the location of a favorites folder, that folder will be opened as if you clicked it when the Finder window was open.
If no window is behind our app at the click location, the desktop will receive focus.
This is not consistent and even clicks in the same spot (as much as one can hit the same pixel twice) sometimes go to the background window and sometimes end up, as expected, in our window.
I know that this sound weird but it's been verified both by our QA and by me and another developer working on different machines.
Ideas would be most welcome.

Answering my own question after some trial and error:
Upgrading to AIR SDK 28 solved the problem.
Bonus tip: Avoid Adobe AIR. Great technology, zero support, dead forums.

Related

Make form visible on Windows Lockscreen

TL;DR Can I make a VB.net form visible on the Windows lock screen [i.e. when a user hits WIN+L]?
I wrote an alert system that notifies staff of a 'lockdown' in vb.net. This has been tested in drills a few times but today it was noted that the 'alert window' does not appear when the screen is locked.
The alert window does make an alarm sound, which can still be heard even when the computer is locked but this is dependant on the machine having speakers that are turned on...
The workstations are running Windows 7.
Edit
I am not looking to spawn a separate process, just get the 'lockdown.vb' form showing on top of the windows lock screen.
Googling this has just given me a load of tutorials on making a lockscreen...which is not what I'm after, hence the question. :-)

Oracle MAF: Clicking on Input text fields in a dialogue popups causing random crashes under Windows 10 Anniversary Edition

We have implemented a tablet-based application using Oracle MAF. The application runs on Windows UWP. When it was rolled out last year, it has been working fine until the customers upgraded Windows UWP on their laptops to Windows Anniversary edition. After some investigation, We found the following issues:
When user clicks on input text fields in a popup dialogue, the
application randomly crashes (not always but frequently).
When user clicks on input text fields in a normal window (i.e. not in a popup dialogue), and if the screen resolution is scaled (e.g. 150%), the
application also randomly crashes.
When screen resolution is not scaled (i.e. 100%), clicking on input text fields in a normal window
does not seem to cause crash. However, clicking on input text fields
in a popup dialogue can still cause crash.
We could not find any useful/relevant info in Windows log or in our application log.
We have also tested our application with the latest Windows Creator Edition and MAF 2.4.1, we found that the chances of random crashing seemed to have decreased, but crashing could still happen.
We have checked the Oracle MAF certification information at http://www.oracle.com/technetwork/developer-tools/maf/documentation/maf241certmatrix-3746359.html.
It states that "Any tablet or desktop running Windows 10 with Intel processor" are supported. Our customers' laptop specs are:
Lenovo Yoga with Intel Core i5 processor;
Windows 10 Anniversary Edition;
Full High Resolution screen (1920x1080)
Therefore, we believe the customer laptops provide certified runtime environment for MAF applications.
We have researched various technical forums. There seems to be little information about using MAF under Windows UWP environment.
Because our application has been used in production, and the customer corporate mandate is to use Windows 10 Anniversary edition, the customer expressed grave concerns to us for choosing MAF as the mobile platform technology, and we are now under enormous pressure to fix this issue. Any suggestions and pointers will be highly appreciated.
If you can create a reusable test case, my recommendation to you is to lodge a Service Request with Oracle Support so Oracle's development teams can look at this.
We have done further investigation on the issue "input text field causing crash on Windows 10 Anniversary Edition". This time we used the demo CompGallery application from Oracle. We navigated to the "text box" tab, clicked on the text box in "outside a form", entered some text, then clicked on "inside a form" text box. The application crashed (or repeat the above sequence a couple of times on Windows Creator Edition, the application would crash). Note by using "tab" key or screen tapping to navigate between input text fields, we can avoid crashing. With extra clicks on different input text fields before entering text, we can avoid crashing as well.
The CompGallery screen is shown below:
We then looked at the Windows log, not much details were revealed. It contains an event related to the failure of edgethtml.dll, as shown in the screenshot below.

Windows 8 .net focus issue form.activate has different behaviour when running with debugger

I have written a WinForms driver safety application for a windows tablet device that will blank the screen (display a full screen blank topmost window) when it detects that the car is moving at say more that 15km/h (using the tablets GPS).
The software has worked fine under Windows 7 but I'm struggling a bit to get it working under Windows 8. My first challenge is to display the blank screen when the Metro start menu is currently displayed. So if the user has the Metro start menu displayed and the car starts moving > 15 km/h my blank screen should display... I need to steal the focus from the metro interface and display my blank window on the desktop.
To test this I wrote a simple vb.net app in 2010. It had a form with a timer firing every 3 seconds. In the Tick event I had the code:
Beep()
Me.Activate()
When I ran this with the debugger and pressed the windows key to show the Metro Start Menu, it worked... The focus switched back to the desktop (and my window). However, when I ran this without the debugger and did the same thing I could hear the beeps but the focus never switched back to the desktop.
Any ideas why the behaviour would be different? Any ideas on how I replicate the same behaviour I get when the debugger is attached?
I have tried a few things like AppActivate, setting the form TopMost, BringToFront but unfortunately this hasn't worked.
The only half solution I have come up with is to send a windows button keystroke but this has other issues.
Windows specifically tries to prevent applications from stealing the foreground from other apps. See the SetForegroundWindow documentation for commentary on this and the factors that can let an application come to the foreground (all of the methods you are trying essentially come down to a SetForegroundWindow call).
Note that one of the explicit blocking circumstances is "The foreground process is not a Modern Application or the Start Screen."
This works for you when debugging because "The process is being debugged" is one of the cases which explicitly allows foreground privileges.
Because this is a generally user-unfriendly thing to do there isn't a good general purpose way to bypass this behaviour and steal the foreground.
Likewise, normal apps cannot run on top of Modern applications or the start screen.
You may be better off locking the system by calling the LockWorkStation function.

The form fails to popup in windows 8

I have a chat application written in VB.net which is used to chat between users who are connected in LAN inside a office . The application popups whenever user gets new chat message. It works fine in windows XP. But sometimes in windows 8 the application fails to popup the chat window. So my chat window is not appearing at the top when popup occurs for new messages.
I have tried using setwindowspos, form.Show(), form.BringToFront() which can bring the form to topmost. But sometimes this will not work properly.
So is there any other method other than those three(which i have mentioned above) i have used which can make the form popup and bring it to front.
Your WinForms app is a desktop application, so it's likely that the reason the pop-up is not being displayed in Windows 8 is because the desktop is not visible.
Remember that Windows 8 brings with it a whole new Start Screen interface and relegates the desktop to an alternate mode. All desktop applications still run, but they run in this separate mode and cannot interact with the new Metro applications (or whatever they're calling them nowadays). Yes, it's too bad that the usability folks at Microsoft didn't listen to Larry Tesler and have decided instead to mode us in, but c'est la vie.
So anyway, the pop-up is still being displayed, but it's being displayed on the desktop, which is not visible. Bringing it to the top isn't doing any good because it's already at the top of all the other windows on the desktop. If you click on the "Desktop" tile in the Start Screen, you should see your window.
Fixing this problem is going to take some work. Forcing a focus switch to the desktop mode is a horrible idea from a usability perspective, and I'm not sure it's even possible. A better solution would be to look into using Toast notifications instead, which can be done from a desktop application.

In WinRT how to create an application that is always visible?

With windows 8, is it possible to create an application that is always visible? For instance, in previous versions of windows, there is the task bar with quick launch icons. Can I create something similar to the quick launch icons that are always on the screen?
If you are referring to a Windows 8 Store app then the answer is no. You can have a live tile and toast notifications that provides updates to the user which may cause the user to launch your application.
A good article to read to understand how your Windows Store apps will run on Windows 8 go here to learn about Application lifecycle (Windows Store apps). This will explain the App execution state.
It is not possible in the RT version, but the same is possible in the desktop version. If you have a desktop app, you can pin it to the taskbar. But any Window store app cannot be pinned to the taskbar. What you can do instead is move the app to the beginning of your Home screen, so anytime you click the Windows button your app will be visible right in front.
Do you mean always visible in the Star Menu screen? If so, you can add tile updating functionality to your application. As long as the user has the application pinned to the Start Menu, he would see the updates. Check the link below for an introductory tutorial.
http://blogs.msdn.com/b/windowsappdev/archive/2012/04/16/creating-a-great-tile-experience-part-1.aspx
"Quick Launch" has a very specific meaning, which you may or may not have been referring to in your question.
Below is the Quick Launch bar in Windows 8 - essentially a toolbar pointing to a location in your %AppData% directory. Prior to Windows 7 it was available by default, but the ability to now pin items directly to the taskbar rather supersedes it. Here's how you can restore Quick Launch if you really want to :)
It's, of course, available only in the Desktop mode and not on the Modern UI, where pinning a tile is the best you can hope for, and it's all up to the user to pin it AND to determine where it shows up on their Start Screen.
Another option worth mentioning (although more like system tray than quick launch) is lock screen presence. If the user chooses so and your app supports that, he can add it to his lock screen:
either as a a badge (up to 7 apps)
or as a tile notification (single app only)
This is not a way for the user to quickly start your app (other answers have already covered these options) but a way to stay visible and keep your user informed.