WinBatch® Technical Support Forum

All Things WinBatch => WinBatch => Topic started by: davidp@ensuredr.com on November 18, 2019, 02:16:52 AM

Title: how to select or highlight editbox text ?
Post by: davidp@ensuredr.com on November 18, 2019, 02:16:52 AM
how to select or highlight editbox text ?

for example like the drop down field in the picture.

Title: Re: how to select or highlight editbox text ?
Post by: td on November 18, 2019, 08:08:47 AM
In a previous topic, you mentioned the CB_SETEDITSEL message.  In a similar fashion, you can use EM_SETSEL to select part or all of an edit box's text.

https://docs.microsoft.com/en-us/windows/win32/controls/em-setsel (https://docs.microsoft.com/en-us/windows/win32/controls/em-setsel)

Note that since the message has two numeric parameters, you will need to use the DllCall function to call SendMessageW directly.  The WIL SendMessageW function can only be used when the LPARAM parameter is a string or 0.
Title: Re: how to select or highlight editbox text ?
Post by: davidp@ensuredr.com on November 18, 2019, 11:29:33 PM
thanks it worked great! by the way you don't need dll call, for me it work like this:

         EM_SETSEL = 177 
         hWnd = DialogControlGet(handle, elementName, @dchWnd)
SendMessageW(hWnd, EM_SETSEL, 0, -1)


how do you know Which winbatch control belongs to Which windows control ? for example that EM_SETSEL will work with winbatch editbox.
Title: Re: how to select or highlight editbox text ?
Post by: td on November 19, 2019, 08:08:05 AM
Quote from: davidp@ensuredr.com on November 18, 2019, 11:29:33 PM
thanks it worked great! by the way you don't need dll call, for me it work like this:

         EM_SETSEL = 177 
         hWnd = DialogControlGet(handle, elementName, @dchWnd)
SendMessageW(hWnd, EM_SETSEL, 0, -1)


Using SendMessageW only appears to work because of dumb luck.  When you use SendMessageW you are not sending a -1 to the control.  You are sending the control a memory address of string text in the last parameter to the function.  The control treats the memory address as an integer that just happens to be big enough to cause the control to select the contents.  Use DllCall.

Quote
how do you know Which winbatch control belongs to Which windows control ? for example that EM_SETSEL will work with winbatch editbox.

It should be self-evident if you have any familiarity with the Windows UI elements.
Title: Re: how to select or highlight editbox text ?
Post by: davidp@ensuredr.com on November 20, 2019, 12:37:24 AM
thanks!