api_GetWindowText
Blitz3D Forums/Blitz3D Programming/api_GetWindowText| 
 | ||
| I need a function to get the caption and the class of a window by the window's handle. I'm not sure how to use GetWindowText.. and I can't find a GetWindowClass function. | 
| 
 | ||
| Hi Syco. GetWindowText() requires a buffer to store the windows caption this should be done using a bank. when setting the call in the .decls use a bank pointer in GetWindowText(hwnd%,bank*,size%). getting the caption would look somting like this bank = CreateBank(256) caption_length = GetWindowText(hwnd,bank,256) for loop = 0 to caption_length ; peek the string from the bank next FreeBank bank the same holds true when getting the class name using GetClassName() kev | 
| 
 | ||
| Man, you're a saver :D | 
| 
 | ||
| Nevermind, i noticed i didnt change the decls file, sorry :D. | 
| 
 | ||
| Hey, what am I doing wrong here: 
Local hwnd% = SystemProperty("AppHWND")
api_SetWindowText(hwnd,"BOBsasd")
	
Local bank%
	Local caption_length%
	Local i%
	Local Dave$ = ""
	bank = CreateBank(254)
	caption_length = api_GetWindowText(hwnd,bank,254)
	For i = 0 To caption_length
		
		Dave = Dave + Chr((PeekByte(bank,i)))
		
	Next
	FreeBank bank
	Print Dave$
It sets it fine, and returns that it is using 7 characters when it reads it back, but I can't get them to process it. It just returns 0000000 when I take away the chr conversion. Any clues? | 
| 
 | ||
| Fixed it, It turns out that the User32 decls in the code archives is wrong? http://www.blitzbasic.com/codearcs/codearcs.php?code=1179 It lists: api_GetWindowText% (hwnd%, lpString$, cch%) : "GetWindowTextA" and I changed it to api_GetWindowText% (hwnd%, lpString*, cch%) : "GetWindowTextA" Which fixed it. Is this a mistake in the user32 decls? | 
| 
 | ||
| in blitz we cant get the address of the string buffer, so we need to use a bank. this holds true for much of the windows api that require address pointers. so yes its fixed for blitz :) |