As Cloudstr kept reminding me, DxWnd has a problem when running iconized on system tray and Windows XP explorer gets killed: when you restart explorer (going to taskmanager and running the new application "explorer") the DxWnd icon is lost while the process is still running, so the only way to unblock the situation is going back to taskmanager again, kill DxWnd process and start it again.
It should be noted that the IconTray class borrowed from Chris Maunder work on codeproject has recovery actions implemented by listening to the icon tray creation event, but the whole mechanism works very well on any platform but Windows XP.
So far, I found a very limited workaround: since DxWnd and the SystemTray class are able to detect the problem, the attached release counts how many animation cycles occur in a failure state and, after a few attempts failed on XP, restores the DxWnd window.
Be aware that the problem still exists, and in fact if after that event you try to move DxWnd to the icon tray again the icon won't be created the same, but ... hey, Rome wasn't built in a day! Stay tuned for a better solution.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Ah!! Found & fixed. It was necessary to clean up all SysTray internal stuff after a desktop creation event so that the following "Move to tray" command will do all the processing from scratch, probably including also the linkage to the new explorer process.
At this point it was possible also to fully recover the situation rebuilding the icon in the tray, but (just for prudence) I prefer to pop DxWnd out from the tray to the screen, so that the user can decide whether to iconize it again or whatever else.
Catch this fine new release: it was thoroughfully tested (I mean, it worked at least once ;) so I hope it will work for anyone else.
There is one single but important difference: with this version you can push DxWnd to the system tray again without losing it, with the previous one you had to exit and restart, or a new attempt to go to tray would get DxWnd lost!
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Anonymous
-
2017-06-30
Last edit: Anonymous 2018-10-20
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
It could be (and it will be) improved, so far 5 seconds is because I wait 5 failures in a loop with 1 second delay cycle. The reason why I didn't do that immediately is because this feature is useless in any platform but XP, so I didn't want to risk a pop-out from tray when not necessary, but I can do at least these things:
1) compare the failure counts on different platforms and pop-out with a minimum but safe delay
2) better yet, check for the OS version and tie this trick to XP only and with 0 delay
3) try recovering the icon directly on the tray without popping out. Maybe it works.
But for now the important thing is that IT WORKS so that it can be improved.
Last edit: gho 2017-06-30
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Improved (and final?) release.
The jump out of iconized state is now immediate and confined for XP platform only, the behaviour for other system is kept the same, since it was already ok.
I made also an attempt to avoid the jump out of iconized state and recover the icon in tray using the available interface, but that didn't work, so I'm afraid that for the moment things will stay this way.
No problem about AS2, it works anyway by Hot Patching.
Fastlane instead is a litle tricky: the unpacked exe is not working, but that doesn't matter too much either: I just needed to see the full list of syscalls. The problem is that I don't see any strange syscall in the list, so I can't understand why the game keeps changing screen resolution!
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Anonymous
-
2017-07-10
Last edit: Anonymous 2018-10-20
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Yes, the packed works and the unpacked doesn't work, also without DxWnd. It must be some UPX "dialect" not properly managed, or there must be some further anti-cheat check.
I call "syscall" a generic function within the system libraries like ddraw.dll, gdi32.dll and so on.
Well, enough for today, I'm going to have a good sleep, see ya tomorrow.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Anonymous
-
2017-07-10
Last edit: Anonymous 2018-10-20
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
As Cloudstr kept reminding me, DxWnd has a problem when running iconized on system tray and Windows XP explorer gets killed: when you restart explorer (going to taskmanager and running the new application "explorer") the DxWnd icon is lost while the process is still running, so the only way to unblock the situation is going back to taskmanager again, kill DxWnd process and start it again.
It should be noted that the IconTray class borrowed from Chris Maunder work on codeproject has recovery actions implemented by listening to the icon tray creation event, but the whole mechanism works very well on any platform but Windows XP.
So far, I found a very limited workaround: since DxWnd and the SystemTray class are able to detect the problem, the attached release counts how many animation cycles occur in a failure state and, after a few attempts failed on XP, restores the DxWnd window.
Be aware that the problem still exists, and in fact if after that event you try to move DxWnd to the icon tray again the icon won't be created the same, but ... hey, Rome wasn't built in a day! Stay tuned for a better solution.
The attached exe is the replacement for v2.04.33 DxWnd GUI, as I said useful on XP only.
Last edit: Anonymous 2018-10-20
... as long as you don't try to send DxWnd to the tray again!
With this partial patch, better stop the program and start it again right away.
ghotik2002 just wrote to Chris Maunder, let's hope in some hints ..
https://www.codeproject.com/Articles/74/Adding-Icons-to-the-System-Tray?msg=5411120#xx5411120xx
Last edit: Anonymous 2018-10-20
Last edit: Anonymous 2018-10-20
don't panic, I can see it.
Ah!! Found & fixed. It was necessary to clean up all SysTray internal stuff after a desktop creation event so that the following "Move to tray" command will do all the processing from scratch, probably including also the linkage to the new explorer process.
At this point it was possible also to fully recover the situation rebuilding the icon in the tray, but (just for prudence) I prefer to pop DxWnd out from the tray to the screen, so that the user can decide whether to iconize it again or whatever else.
Catch this fine new release: it was thoroughfully tested (I mean, it worked at least once ;) so I hope it will work for anyone else.
Last edit: Anonymous 2018-10-20
There is one single but important difference: with this version you can push DxWnd to the system tray again without losing it, with the previous one you had to exit and restart, or a new attempt to go to tray would get DxWnd lost!
Last edit: Anonymous 2018-10-20
It could be (and it will be) improved, so far 5 seconds is because I wait 5 failures in a loop with 1 second delay cycle. The reason why I didn't do that immediately is because this feature is useless in any platform but XP, so I didn't want to risk a pop-out from tray when not necessary, but I can do at least these things:
1) compare the failure counts on different platforms and pop-out with a minimum but safe delay
2) better yet, check for the OS version and tie this trick to XP only and with 0 delay
3) try recovering the icon directly on the tray without popping out. Maybe it works.
But for now the important thing is that IT WORKS so that it can be improved.
Last edit: gho 2017-06-30
Improved (and final?) release.
The jump out of iconized state is now immediate and confined for XP platform only, the behaviour for other system is kept the same, since it was already ok.
I made also an attempt to avoid the jump out of iconized state and recover the icon in tray using the available interface, but that didn't work, so I'm afraid that for the moment things will stay this way.
Last edit: Anonymous 2018-10-20
Last edit: Anonymous 2018-10-20
Let me think about it. The fact is that current menu is static, game list is dynamic, the coding is likely to be quite different....
P.s what about deobfuscation of Alien Shooter? I'd need help also for Fastlane Pinball.
Last edit: gho 2017-07-10
Last edit: Anonymous 2018-10-20
Here the exe, just in case ....
P.s. Alien Sghooter is not essential, since it works. But Fastlane Pinball is a pain in the neck!
Last edit: gho 2017-07-10
Last edit: Anonymous 2018-10-20
Last edit: Anonymous 2018-10-20
No problem about AS2, it works anyway by Hot Patching.
Fastlane instead is a litle tricky: the unpacked exe is not working, but that doesn't matter too much either: I just needed to see the full list of syscalls. The problem is that I don't see any strange syscall in the list, so I can't understand why the game keeps changing screen resolution!
Last edit: Anonymous 2018-10-20
Yes, the packed works and the unpacked doesn't work, also without DxWnd. It must be some UPX "dialect" not properly managed, or there must be some further anti-cheat check.
I call "syscall" a generic function within the system libraries like ddraw.dll, gdi32.dll and so on.
Well, enough for today, I'm going to have a good sleep, see ya tomorrow.
Last edit: Anonymous 2018-10-20