CLEAR DEFINE WINDOW mywindow FROM 0,0 TO 15,79; DOUBLE SHADOW COLOR SCHEME 10 TITLE "Test Input Window" ACTIVATE WINDOW mywindow DO Decl #DEFINE GUITHREADINFO_SIZE 48 LOCAL lnThreaddId lnThreadId = 0 && the foreground thread PRIVATE cBuffer, nFlags cBuffer = Chr(GUITHREADINFO_SIZE) +; Repli(Chr(0), GUITHREADINFO_SIZE-1) IF GetGUIThreadInfo(lnThreadId, @cBuffer) = 0 ? "Error code:", GetLastError() RETURN ENDIF lnhandle= wnd(13, "Window that has the keyboard focus") iok=CreateCaret(@lnhandle,0,150,150) iok2=ShowCaret(@lnhandle) myans=.f. @10,1 sAY "Changed caret size?" GET myans PICTURE "Y" READ IF WEXIST('mywindow') RELEASE WINDOWS mywindow ENDIF RETURN PROCEDURE wnd(lnOffs, lcTitle) hWindow = buf2dword(SUBSTR(cBuffer, lnOffs,4)) lcCaption = GetWindowCaption(hWindow) ? lcTitle, LTRIM(STR(hWindow)) + ", [" + lcCaption + "]" RETURN hWindow PROCEDURE decl DECLARE INTEGER GetLastError IN kernel32 DECLARE INTEGER GetGUIThreadInfo IN user32; INTEGER idThread, STRING @lpgui DECLARE INTEGER GetCurrentThreadId IN kernel32 DECLARE INTEGER GetWindowText IN user32; INTEGER hwnd, STRING @lpString, INTEGER cch DECLARE INTEGER CreateCaret IN user32; INTEGER hwnd,; INTEGER hBitmap,; INTEGER nWidth,; INTEGER nHeight DECLARE INTEGER ShowCaret IN user32 ; INTEGER hwnd FUNCTION buf2dword(lcBuffer) RETURN Asc(SUBSTR(lcBuffer, 1,1)) + ; BitLShift(Asc(SUBSTR(lcBuffer, 2,1)), 8) +; BitLShift(Asc(SUBSTR(lcBuffer, 3,1)), 16) +; BitLShift(Asc(SUBSTR(lcBuffer, 4,1)), 24) FUNCTION GetWindowCaption(lnWindow) LOCAL lnLength, lcText lcText = SPACE(250) lnLength = GetWindowText(lnWindow, @lcText, Len(lcText)) RETURN Iif (lnLength>0, Left(lcText, lnLength), "#empty#")