Button Caption change

Not necessarily. These messages are also how the framework builds these UI components and sets these properties of the native controls. I guess you could say it might be a bad implementation, from my standpoint, that a running process is able to use the Win32 API to modify the UI of a different process.

Which is exactly what I wrote earlier, so we can agree :wink:

On that I agree. I just disagreed with the general assertion.

Because that is the way the API is designed and is the way the other tools do things.

Xojo does not use the actual values of the Win32 controls, instead the framework has an internal collection of properties. So to avoid this midleware/bloatware. Just use the winapi both ways…

If you already change the real caption of the Win32 button from App2, just ALSO use winapi in App1 to read the actual caption instead of the internal Xojo value.

https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getwindowtexta

If so, I would say… put all 5 projects code (and windows, etc;) into a singlme project and compile all in a single application. This will take less RAM / Mass storage. And you will be able to write something like:


PushButton1.Caption = "Joe"
PushButton1.Caption = "Jack"
PushButton1.Caption = "William"
PushButton1.Caption = "Averell"

and see the change immediately (or so)… else, add an .Invalidate for the PushButton you want to refresh / change its Caption.

That’s what I did, thanks for the input.

Putting them all in one project would work if I wasn’t calling other non xojo apps. One project is a frontend that calls a xojo app and a vb.net app, I need it to be separate.

I think there is a work-around to raise an event if an internal property is changed.

I have a button, for some reason I want to listen to it’s Enabled property.
I sub-classed the button, and added a computed property with the name Enabled.

In the setter I added this:

If DesktopButton( Self ).Enabled <> value Then
  DesktopButton( Self ).Enabled = value
  RaiseEvent EnabledChanged
End

In the getter I added this:

Return DesktopButton( Self ).Enabled

This also works for the Caption property.