Michael, thanks for the idea!

Unfortunately this does not work -- the callback is never called, even if the app is sent WM_GETOBJECT messages.

But I found another promising approach -- swapping Tk's message handler with my own handler:

   import tkinter as tk
   import win32gui
   import win32con

   root = tk.Tk()

   button = tk.Button(root, text="close", command=root.destroy)
   button.grid()


   hwnd = root.winfo_id()

   def new_wndproc(hWnd, msg, wParam, lParam):
        if msg == win32con.WM_GETOBJECT:
            print(hWnd, msg, wParam, lParam)

        # forward message to original (Tk) handler
        return win32gui.CallWindowProc(old_wndproc, hWnd, msg, wParam,
   lParam)

   # install new windows message handler
   old_wndproc = win32gui.SetWindowLong(hwnd, win32con.GWL_WNDPROC,
   new_wndproc)

   root.mainloop()

I'll see where this road takes me.

Best regards,
Aivar




On 10.12.2019 13:11, Michael Lange wrote:
Hi,

On Tue, 10 Dec 2019 12:49:27 +0200
Aivar Annamaa <aivar.anna...@gmail.com> wrote:

Hi!

It looks like accessibility support in Tk won't happen
(https://core.tcl-lang.org/tk/tktview/deb6cddecf55c6921281f8f855b6b366aed6467e).
I'm wondering is it somehow possible to bolt on some accessibility
support at least on Windows.

It looks like the starting point is that the app should be able to
provide customized responses to WM_GETOBJECT messages. I didn't find
such name in Tk source code. Does it mean Tk event loop simply drops
these? Is it somehow possible to install an extra WM event handler to
catch these?
have you tried to do something like

def test():
     print('hello')
root.wm_protocol('WM_GETOBJECT', test)

I have no idea what WM_GETOBJECT does and if there is any chance that
this will work, though :)

Regards

Michael


.-.. .. ...- .   .-.. --- -. --.   .- -. -..   .--. .-. --- ... .--. . .-.

I realize that command does have its fascination, even under
circumstances such as these, but I neither enjoy the idea of command
nor am I frightened of it.  It simply exists, and I will do whatever
logically needs to be done.
                -- Spock, "The Galileo Seven", stardate 2812.7
_______________________________________________
Tkinter-discuss mailing list
Tkinter-discuss@python.org
https://mail.python.org/mailman/listinfo/tkinter-discuss
_______________________________________________
Tkinter-discuss mailing list
Tkinter-discuss@python.org
https://mail.python.org/mailman/listinfo/tkinter-discuss

Reply via email to