Mouse Capture: Global, Taekwindow

Things you’d like to miss in the future...
Zardoz2293
Posts: 577
Joined: 09 Nov 2011 20:20
Location: USA

Mouse Capture: Global, Taekwindow

Post by Zardoz2293 »

Having Taekwindow loaded works great across almost every application, except XY.
  • XY with focus: When XY is the active application/has focus most mouse capture events outside XY's application rectangle don't post as if the default message is lost or consumed. Hence, Taekwindow stops functioning completely until XY application focus is lost and presumably the mouse capture is released.
  • XY w/o focus: Something in XY's ThunderRT6PictureBoxDC class / mouse capture & listening doesn't result in Taekwindow's mouse events to function. Perhaps related to the above as mouse capture only occurs while XY has focus? The only applications I have found that have mouse issues (with mouse monitoring capability apps) are those that utilize SysListView32 class (regedit and some aspects of W7).
Computer/Systems Background = Expert | Windows 10 Pro (64-Bit) | Dell Precision 7720

admin
Site Admin
Posts: 60357
Joined: 22 May 2004 16:48
Location: Win8.1 @100%, Win10 @100%
Contact:

Re: Mouse Capture: Global, Taekwindow

Post by admin »

I'm not aware of having done anything special.

SysListView32: I don't use it.

Zardoz2293
Posts: 577
Joined: 09 Nov 2011 20:20
Location: USA

Re: Mouse Capture: Global, Taekwindow

Post by Zardoz2293 »

admin wrote:I'm not aware of having done anything special.
Update:
This concern still exists after removing the offending software discussed in this thread http://www.xyplorer.com/xyfc/viewtopic. ... ell#p68548. What is occurring, regardless of what tool you utilize for having the ability to scroll non-active application scrollable windows. XY will only allow scrolling if it is active (focus) application. If you don't mind, what WIN32 API mouse functions are you using with ThunderRT6PictureBoxDC to provide scrolling events? I'll research and see if I can find anything.
Computer/Systems Background = Expert | Windows 10 Pro (64-Bit) | Dell Precision 7720

admin
Site Admin
Posts: 60357
Joined: 22 May 2004 16:48
Location: Win8.1 @100%, Win10 @100%
Contact:

Re: Mouse Capture: Global, Taekwindow

Post by admin »

Zardoz2293 wrote:
admin wrote:I'm not aware of having done anything special.
Update:
This concern still exists after removing the offending software discussed in this thread http://www.xyplorer.com/xyfc/viewtopic. ... ell#p68548. What is occurring, regardless of what tool you utilize for having the ability to scroll non-active application scrollable windows. XY will only allow scrolling if it is active (focus) application. If you don't mind, what WIN32 API mouse functions are you using with ThunderRT6PictureBoxDC to provide scrolling events? I'll research and see if I can find anything.
Nothing to do with API. The wheel message is not even passed to the app when it's not in the foreground.

Zardoz2293
Posts: 577
Joined: 09 Nov 2011 20:20
Location: USA

Re: Mouse Capture: Global, Taekwindow

Post by Zardoz2293 »

admin wrote:Nothing to do with API. The wheel message is not even passed to the app when it's not in the foreground.
Have you a copy of the VB6 Mouse Wheel Message Event Hook / Monitor source code?
Computer/Systems Background = Expert | Windows 10 Pro (64-Bit) | Dell Precision 7720

FeatureCreep
Posts: 162
Joined: 02 Dec 2011 21:18

Re: Mouse Capture: Global, Taekwindow

Post by FeatureCreep »

If you can't fix this problem, you could try altdrag. It works fine with XY and does much the same as Taekwindow.
http://code.google.com/p/altdrag/

Zardoz2293
Posts: 577
Joined: 09 Nov 2011 20:20
Location: USA

Re: Mouse Capture: Global, Taekwindow

Post by Zardoz2293 »

FeatureCreep wrote:If you can't fix this problem, you could try altdrag. It works fine with XY and does much the same as Taekwindow.
http://code.google.com/p/altdrag/
Don, you can get it to work with all mouse wheel software (Taekwindow, Actual Windows Manager, KatMouse, etc.) You just have to add the the posting of the message to the scroll bar. WM_MOUSEWHEEL is being sent to ThunderRT6PictureBoxDC for the Tree View, List View, and Catalog. I'm able to get full mouse wheel support for XY for nonactive (background application) via an amusing side effect of subclassing the ThunderRT6PictureBoxDC window monitoring the window messages being sent via mouse activity over the background windows in XY. Looks like XY just needs to translate WM_MOUSEWHEEL messages and perform a PostMessage( hWnd, WM_VSCROLL, SB_LINEUP, (LPARAM)0 ) or PostMessage( hWnd, WM_VSCROLL, SB_LINEDOWN, (LPARAM)0 ) depending on the HIWORD value of wParam of WM_MOUSEWHEEL to cause the scroll bar to respond on it's own rather than piggybacking off of a message handler.

Code: Select all

Const WM_MOUSEWHEEL      = &H020A
Const WM_VSCROLL         = &H115

Const SB_LINEUP          = &H0000
Const SB_LINEDOWN        = &H0001
What do you think?
Computer/Systems Background = Expert | Windows 10 Pro (64-Bit) | Dell Precision 7720

admin
Site Admin
Posts: 60357
Joined: 22 May 2004 16:48
Location: Win8.1 @100%, Win10 @100%
Contact:

Re: Mouse Capture: Global, Taekwindow

Post by admin »

Don't understand. As I said I don't receive WM_MOUSEWHEEL when XY is in background (XP or Win7).

Maybe it's the mouse... :|

FeatureCreep
Posts: 162
Joined: 02 Dec 2011 21:18

Re: Mouse Capture: Global, Taekwindow

Post by FeatureCreep »

Its an extra in Taekwindow
"the scroll wheel optionally affects the window under the mouse cursor, instead of the focused window"
http://taekwindow.net/manual.html

P.S.
AltDrag.ini
"InactiveScroll=1
;Add ability to scroll inactive windows.
;This option unfortunately does not work for applications which use old Windows API. I might fix this in an upcoming version."
[no problem with XY]

This is a non-issue for me as I've got things working the way I want. I'd prefer to see coding time spent on other things. PMS :D ! But I've trialled window manipulation software (e.g. Pitaschio, NiftyWindows, Actual Windows Manager) in the past and seem to remember that some of them had problems with XY, causing me to add XY to their exclusion list (when that was an option). Sorry I can't be more specific, it was a while ago. I don't think I could reinstall Actual Windows to replicate the issues as I used up the two months grace.

The point is, I stopped using some of them because they didn't work well with XY. Unfortunately, someone who is already using one of these, who trys out XY, may do the opposite. :shock:

If Zardoz's suggestion is something that can be done (and I have no idea, it's way over my head) it might be worth pursuing.

Zardoz2293
Posts: 577
Joined: 09 Nov 2011 20:20
Location: USA

Re: Mouse Capture: Global, Taekwindow

Post by Zardoz2293 »

admin wrote:Don't understand. As I said I don't receive WM_MOUSEWHEEL when XY is in background (XP or Win7).

Maybe it's the mouse... :|
Background: WM_MOUSEWHEEL messages with XY in the background (XP or Win7) needs third party software to send WM_MOUSEWHEEL. Windows does not have native feature which exists in Unix/Linix. Currently a third party tool is needed to perform this capability.

There are two concerns with regard to XY and the WM_MOUSEWHEEL messages:
  • Foreground Behavior: When XY is in the foreground other applications don't receive the WM_MOUSEWHEEL message. It appears XY consumes all WM_MOUSEWHEEL messages (this seems like a special case message in XY). This is a serious concern as when XY has the foreground all WM_MOUSEWHEEL capability is lost in all other applications. I'll have to take a look at altdrag (was under the impression it's open source) and have a look at what it's doing. I'd bet it sends WM_VSCROLL message to the background application window that's under the mouse pointer and this is why it works as XY doesn't restrict the WM_VSCROLL messages. Just a black box guess as I don't know, it's just the behavior presented or very close to it. I'm betting this is just a one line of code to resolve.
  • Background Behavior: When XY is in the background it appears the subclassing code for receiving WM_MOUSEWHEEL message gets disabled and therefore it will not process the message. If you are not receiving the WM_MOUSEWHEEL message I'd bet the handler for that specific message is being disabled while in the background and then activated in the foreground. That's XY behavior. Looks like a one line of code to resolve.
Last edited by Zardoz2293 on 05 Feb 2012 21:00, edited 1 time in total.
Computer/Systems Background = Expert | Windows 10 Pro (64-Bit) | Dell Precision 7720

Zardoz2293
Posts: 577
Joined: 09 Nov 2011 20:20
Location: USA

Re: Mouse Capture: Global, Taekwindow

Post by Zardoz2293 »

FeatureCreep wrote: ;This option unfortunately does not work for applications which use old Windows API. I might fix this in an upcoming version."
[no problem with XY]
This implies all the plumbing exists in XY, and viewing the Windows Message Loop and the behavior XY also implies the plumbing exists in XY. Therefore, the most likely case is there is some minor change required to get the code to function correctly.
Computer/Systems Background = Expert | Windows 10 Pro (64-Bit) | Dell Precision 7720

FeatureCreep
Posts: 162
Joined: 02 Dec 2011 21:18

Re: Mouse Capture: Global, Taekwindow

Post by FeatureCreep »

This implies all the plumbing exists in XY, and viewing the Windows Message Loop and the behavior XY also implies the plumbing exists in XY. Therefore, the most likely case is there is some minor change required to get the code to function correctly.
I think you infer too much. "I might fix this in an upcoming version" (AltDrag author quote) implies that it is the other dev's responsibility to make his app work in different situations.

Sorry, if I gave the wrong impression before. It is reasonable to ask Don to make changes to XY to facilitate use of a widely used app or a relatively common one directly related to file management (e.g. TerraCopy). But not for an obscure one barely qualifying as a productivity app.

There might be a case if there were issues with multiple (and more popular) apps that could be resolved. But nobody else has reported them and the "issues" I had (I now recall) were related to window resizing not mouse scroll (so probably irrelevant to this thread) :oops: .
Currently a third party tool is needed to perform this [scrolling] capability.
There are many to choose from. I have four of them on my system.

AltDrag
"ability to scroll inactive windows"

X-Mouse Button Control
"Make scroll wheel scroll window under cursor"

Deskangel
"Directly scroll the document under the cursor, whenever it was active or not"

Pitaschio
"Mouse Wheel > Send to under-cursor-window"

I only use the first two (i.e. autorun at startup). I tested the first three in turn (Pitaschio doesn't work with W7/64bit): scrolling back and foreground windows with XY in fore and background without any problems.

So notwithstanding...
When XY has the foreground all WM_MOUSEWHEEL capability is lost in all other applications
...I think this is a Taekwindow problem not an XYplorer one.

If it ain't broke don't fix it. :wink:

Zardoz2293
Posts: 577
Joined: 09 Nov 2011 20:20
Location: USA

Re: Mouse Capture: Global, Taekwindow

Post by Zardoz2293 »

Before reading :) (smile, be happy):
FeatureCreep wrote:Sorry, if I gave the wrong impression before. It is reasonable to ask Don to make changes to XY to facilitate use of a widely used app or a relatively common one directly related to file management (e.g. TerraCopy). But not for an obscure one barely qualifying as a productivity app.
You seem very focused on some single third party tool perspective. Are you looking for a solution or a conflict? I think it's completely reasonable to ask Don to resolve any deficiencies in XY: the question of priority is another issue. I've provided some insight that could lead to the solution and I know I'm very close in my assessment.

FeatureCreep wrote:There might be a case if there were issues with multiple (and more popular) apps that could be resolved.
Case Study: If you are concurrently working with 12 apps on your system and you switch to XY (the 13th app) and you are unable to scroll any of those 12 apps windows in the background, isn't XY affecting the performance of those 12 apps and your workflow? (rhetorical question)

FeatureCreep wrote:But nobody else has reported them and the "issues" I had (I now recall) were related to window resizing not mouse scroll (so probably irrelevant to this thread) :oops: .
I'm not sure if you are saying the WM_MOUSEWHEEL or your reported "issues" or a combination. I'll take the position you are saying no one else is reporting this concern. Yeah, I've reported more than a few "issues" that haven't been reported and the vast majority are valid (the others I haven't had time to provide additional support, eventually I will), so I think there is legitimacy to my observations. I've developed commercial Windows software since Version 1 so I know a little bit about designing, writing, testing and debugging software.

FeatureCreep wrote:
Zardoz2293 wrote:Currently a third party tool is needed to perform this [scrolling] capability.
There are many to choose from. I have four of them on my system.
Yes. When I have the time I'm looking forward to reviewing the source to AltDrag. I'll take a guess: It has VB6 specific code ("ThunderRT6") that sends WM_VSCROLL message to VB6 apps that haven't had WM_MOUSEWHEEL handlers added. Hummm, but if I recall Don said XY isn't receiving WM_MOUSEWHEEL message in the background, which would imply he's modified XY to support it.

FeatureCreep wrote:
Zardoz2293 wrote:When XY has the foreground all WM_MOUSEWHEEL capability is lost in all other applications
...I think this is a Taekwindow problem not an XYplorer one.
Who said I'm using Taekwindow? I'm not hearing the argument to my observations on the Windows Message Loop and XY.

FeatureCreep wrote:If it ain't broke don't fix it. :wink:
I believe you might be miss quoting me. I'm not talking about any specific third party product. My focus is XY. I'm on your side and Don's. As stated, I've actually seen the messages XY receives. My statement is absolutely correct. The twist is when VB6 was released the wheel mouse wasn't a concern. However, some enhancements have been made to most development tools since the last update to VB6 and the wheel mouse capability is now native to those tools. So should XY be enhanced? My observations indicate it already has been, but there's an unwanted effect in it's algorithm. Therefore, it is broken, so it should be fixed. How long to fix? Depends, when you jump in, do you land on the needle in the haystack? Don's time in review and fixing, 15 minutes maximum, if he can't find it then, he moves on until more information is presented to resolve. I'll do some research and create a working example and provide, eventually, when I'm old and grey.

I totally love XY and it's one of the best experiences I've had in the industry in a long time (community, developer and tool). 8)

For me, this is my hot list under the current XY implementation:
  • Scripting enhancement (define global constants - declare once)
  • Scripting folderreport (reverse report order)
  • Auto-Refresh (all events)
  • Wheel Mouse (foreground/background) message handler glitch
  • Scripting variables always visible during debugging
  • Info Panel enhancements (Dynamic Properties, Version, Preview, and Raw View)
  • Complete Windows integration (having XY opened over WE) - Yes, it can be done.
  • Scripting syntax language enhancements (script arguments)
  • Color Filter in Tree View - This feature just rocks! If you are reading this buy XY just for this feature.
  • Dialog positions and sizable
  • Find File (new paradigm without forced configuration constraints)
Computer/Systems Background = Expert | Windows 10 Pro (64-Bit) | Dell Precision 7720

FeatureCreep
Posts: 162
Joined: 02 Dec 2011 21:18

Re: Mouse Capture: Global, Taekwindow

Post by FeatureCreep »

Sorry Zardoz, didn't mean to offend. :oops: I thought if Taekwindow was the problem I would suggest some alternatives that I had personally tested. I misunderstood.

Please regard the apps I listed as "more information...presented to resolve".

And don't worry I always smile. :D

Zardoz2293
Posts: 577
Joined: 09 Nov 2011 20:20
Location: USA

Re: Mouse Capture: Global, Taekwindow

Post by Zardoz2293 »

FeatureCreep wrote:Sorry Zardoz, didn't mean to offend. :oops: I thought if Taekwindow was the problem I would suggest some alternatives that I had personally tested. I misunderstood.

Please regard the apps I listed as "more information...presented to resolve".

And don't worry I always smile. :D
FeatureCreep, I'm glad you suggested some alternatives, new information is always welcome. I'm always concerned with regards to adding new, low-level, tools to my system to solve some problem of another application, and the potential of there being conflicts especially with crossover of services.

Out of curiosity are you using AltDrag for more than XY? If so what is AltDrag doing for you in that scope? Thanks! :wink:
Computer/Systems Background = Expert | Windows 10 Pro (64-Bit) | Dell Precision 7720

Post Reply