Page 1 of 1

sending ^{Click} to ListView with AltSubmit makes it freeze

Posted: 09 Nov 2017, 00:06
by Barney
Clicking the row with the left mouse button freezes the Gui and makes AHK use 100% CPU.

Code: Select all

#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
; #Warn  ; Enable warnings to assist with detecting common errors.
SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.
#SingleInstance force

Gui, Add, ListView, r20 w700 AltSubmit gMyListView, Name
LV_Add("", "click here")
Gui, Show


#IfWinActive ahk_class AutoHotkeyGUI
		send ^{Click}

GuiClose:  ; Indicate that the script should exit automatically when the window is closed.
It doesn't happen when using sendEvent ^{Click}

Re: sending ^{Click} to ListView with AltSubmit makes it freeze

Posted: 10 Nov 2017, 11:54
by just me
:arrow: Default List-View Message Processing

As soon as ListViews receive a LBUTTONDOWN message they enter an own modal message loop "until either the button is released or the mouse is moved". There are some other known cases causing the GUI to freeze while the script is running using 100 % of one processor core, all caused by LBUTTONDOWN events. Seemingly, the ListView control doesn't get the proper mouse message which will stop its message loop.

While the ListView's message loop is running, message posted by the script internally to handle GUI events are dispatched to the AHK window procedure (or reposted) by the ListView control, and when processed by the script afterwards, reposted again. It's called a 'bouncing effect' in the AHK source code.

This issue couldn't be solved as yet. I hope this new case will shed some more light on the reason. In the meantime, you should feel happy to have a workaround with SendEvent.