polyethene/IronAHK — Issue #39: "System.Byte[]" cannot be converted to "System.IConvertible"
Author: maul-esel
Created: 2011-11-26 13:15:53+00:00
State: open

Hi,

I tried to run the following script with IronAHK

```ahk
; ============= config =============
IronAHK := true ; set to true if you're using IronAHK.
; =================================

ptr_size := A_PtrSize ? A_PtrSize : 4 ; ensure AutoHotkey classic / IronAHK compatibility
ptr := A_PtrSize ? "UPtr" : "UInt"

MB_ABORTRETRYIGNORE := 0x00000002 ; define flags
MB_USERICON := 0x00000080
flags := MB_ABORTRETRYIGNORE | MB_USERICON ; set the button we will use + indicate we will provide a custom icon

text := "This box is produced with a DllCall() to the MessageBoxIndirect function, passing a MSGBOXPARAMS structure.`n`n"
. "This allows you to set a custom icon and more." ; set the text that will be shown
caption := "ahkbook example" ; set the title that will be used

hModule := DllCall("GetModuleHandle") ; get a handle to the running AutoHotkey.exe: we will use an icon from inside it
icon := IronAHK ? 32512 : 159 ; choose the icon id to use (IronAHK has a different one)

struct_size := 4*3 + ptr_size*7 ; calculate struct size:
; cbSize, dwStyle and dwLanguageId are 4 bytes, others depend on system pointer size

VarSetCapacity(params, struct_size, 0) ; initialize structure

; filling in structure members we need:
NumPut(struct_size,	params,	00+0*ptr_size,	"UInt") ; "The structure size, in bytes."
NumPut(hModule,	params,	04+1*ptr_size,	ptr) ; "A handle to the module that contains the icon resource identified by the lpszIcon member... "
NumPut(&text,	params,	04+2*ptr_size,	ptr) ; "A null-terminated string that contains the message to be displayed."
NumPut(&caption,	params,	04+3*ptr_size,	ptr) ; "A null-terminated string that contains the message box title."
NumPut(flags,	params,	04+4*ptr_size,	"UInt") ; "The contents and behavior of the dialog box."
NumPut(icon,	params,	08+4*ptr_size,	"UPtr") ; "Identifies an icon resource."

; call the function and pass a pointer to the structure:
DllCall("MessageBoxIndirect", ptr, ¶ms)
```

This gives the following error:

```
Could not execute: Das Objekt des Typs "System.Byte[]" kann nicht in Typ "System.IConvertible" umgewandelt werden.
(the object of type "System.Byte[]" cannot be converted to type "System.IConvertible".)
```

It works fine for AutoHotkey classic, AutoHotkey_L and AutoHotkey v2.

Regards
maul.esel