What if I don’t like these rules?
IF THE SECOND rule bothers you because you need to get text from a custom control in another process, you can send the WM_GETTEXT message manually. Because you are not using GetWindowText, you are not subject to its rules.
Note, however, that if the target window is hung, your application will also hang because SendMessage will not return until the target window responds.
Note also that because WM_GETTEXT is in the system message range (0 to WM_USER-1), you do not need to take any special action to get your buffer transferred into the target process and to get the result transferred back to the calling process (a procedure known as marshalling). In fact, any special steps you take to this end are in error. The window manager does the marshalling for you.