Modify

#249 closed Bug (Fixed)

_WinAPI_UpdateLayeredWindow() - missing error checking

Reported by: Zedna Owned by: Gary
Milestone: 3.2.13.0 Component: Standard UDFs
Version: 3.2.10.0 Severity: None
Keywords: Cc:

Description

in WinApi.au3 include file in _WinAPI_UpdateLayeredWindow() is missing error checking.

UpdateLayeredWindow API doesn't exists on WIN9x Windows (only WIN 2000 and above) so if you call this UDF function on WIN9x it crashes with this error:

==> Subscript used with non-Array variable.: 
Return SetError($aResult[0] = 0, 0, $aResult[0] <> 0) 
Return SetError($aResult^ ERROR

After DllCall() should be added this:

If @error Then Return SetError(1, 0, 0)

Here is complete testing script
with original commented UDF and corrected one:

_WinAPI_UpdateLayeredWindow(0, 0, 0, 0, 0, 0, 0, 0, 0)

;~ Func _WinAPI_UpdateLayeredWindow($hWnd, $hDCDest, $pPTDest, $pSize, $hDCSrce, $pPTSrce, $iRGB, $pBlend, $iFlags)
;~ 	Local $aResult

;~ 	$aResult = DllCall("User32.dll", "int", "UpdateLayeredWindow", "hwnd", $hWnd, "hwnd", $hDCDest, "ptr", $pPTDest, "ptr", $pSize, _
;~ 			"hwnd", $hDCSrce, "ptr", $pPTSrce, "int", $iRGB, "ptr", $pBlend, "int", $iFlags)
;~ 	Return SetError($aResult[0] = 0, 0, $aResult[0] <> 0)
;~ EndFunc   ;==>_WinAPI_UpdateLayeredWindow

Func _WinAPI_UpdateLayeredWindow($hWnd, $hDCDest, $pPTDest, $pSize, $hDCSrce, $pPTSrce, $iRGB, $pBlend, $iFlags)
	Local $aResult

	$aResult = DllCall("User32.dll", "int", "UpdateLayeredWindow", "hwnd", $hWnd, "hwnd", $hDCDest, "ptr", $pPTDest, "ptr", $pSize, _
			"hwnd", $hDCSrce, "ptr", $pPTSrce, "int", $iRGB, "ptr", $pBlend, "int", $iFlags)
	If @error Then Return SetError(1, 0, 0)
	Return SetError($aResult[0] = 0, 0, $aResult[0] <> 0)
EndFunc   ;==>_WinAPI_UpdateLayeredWindow

All tested on AutoIt 3.2.10 on WIN98SE

Attachments (0)

Change History (2)

comment:1 by Gary, on May 8, 2008 at 9:13:57 PM

Milestone: 3.2.11.13
Resolution: Fixed
Status: newclosed

Fixed in version: 3.2.11.13

comment:2 by Valik, on Oct 30, 2008 at 3:06:58 AM

Milestone: 3.2.11.133.2.13.0

Fixing wrong milestone.

Modify Ticket

Action
as closed The owner will remain Gary.

Add Comment


E-mail address and name can be saved in the Preferences .
 
Note: See TracTickets for help on using tickets.