FUNCTION WinMove OPTIONAL(hWnd AS HWND, nX, nY, nWidth = -1, nHeight = -1) LOCAL rect AS RECT GetWindowRect(hWnd, &rect) IF nWidth = -1 THEN nWidth = rect.right - rect.left IF nHeight = -1 THEN nHeight = rect.bottom - rect.top MoveWindow(hWnd, nX, nY, nWidth, nHeight, 1) FUNCTION = 1 END FUNCTION FUNCTION WinGetProcess(hWnd AS HWND) LOCAL pPID AS ULONG POINT GetWindowThreadProcessId(hWnd, &pPID) FUNCTION = pPID END FUNCTION FUNCTION WinKill(hWnd AS HWND) AS VOID LOCAL dwResult AS DWORD LOCAL lResult AS LRESULT lResult = SendMessageTimeout(hWnd,WM_CLOSE,0,0,SMTO_ABORTIFHUNG,500,&dwResult) IF (!lResult) THEN LOCAL pPID AS ULONG POINT LOCAL hProcess AS HANDLE GetWindowThreadProcessId(hWnd, &pPID) hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pPID) TerminateProcess(hProcess, 0) CloseHandle(hProcess) ENDIF END FUNCTION FUNCTION WinClose(hWnd AS HWND) AS BOOL FUNCTION = CloseWindow(hWnd) END FUNCTION FUNCTION WinGetHandle OPTIONAL(sTitle AS STRING = "") AS HWND LOCAL lpClassName AS LPCTSTR LOCAL lpWindowName AS LPCTSTR IF LEFT$(LCASE$(sTitle$), 10) = "classname=" THEN lpClassName = MID$(sTitle$, 11) FUNCTION = FindWindow(lpClassName, lpWindowName) ELSEIF sTitle$ <> "" THEN lpWindowName = sTitle$ FUNCTION = FindWindow(lpClassName, lpWindowName) ENDIF FUNCTION = FindWindow(lpClassName, lpWindowName) END FUNCTION FUNCTION WinGetActive() AS HWND FUNCTION = GetActiveWindow() END FUNCTION FUNCTION WinGetDesktop() AS HWND FUNCTION = GetDesktopWindow() END FUNCTION FUNCTION WinGetTitle(hWnd AS HWND) AS STRING LOCAL szBuffer[65536] AS CHAR GetWindowText(hWnd, szBuffer, 65536) FUNCTION = szBuffer$ END FUNCTION FUNCTION WinGetPos(hWnd AS HWND,BYREF pRect AS RECT) FUNCTION = GetWindowRect(hWnd, &pRect) END FUNCTION FUNCTION WinGetClass(hWnd AS HWND) AS STRING LOCAL vBuff[256] AS CHAR LOCAL pBuff AS CHAR PTR vBuff[0] = 0 pBuff = vBuff GetClassName(hWnd, pBuff, 256) FUNCTION = pBuff$ END FUNCTION