Jump to content

Recommended Posts

  • Replies 766
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

Popular Posts

Special Note: This is an official beta release but it is not digitally signed. Only Jon has the certificate used for digital signatures and the last time I checked I was not Jon. 3.3.7.21 (6th Novem

Valik, Please do not tar us all with the same brush - it is a very small (albeit vocal) minority who are doing that. The rest of us are extremely grateful for the work that has been done to get the

I can clearly remember the similar situation in past when developers removed StringAddThousandsSep() from standard UDFs just because of too much bug fix requests. I use this (latest one) function in s

Posted Images

Special Note: This is an official beta release but it is not digitally signed. Only Jon has the certificate used for digital signatures and the last time I checked I was not Jon.

3.3.7.15 (11th September, 2011) (Beta)

- Added: DllCallAddress().

- Added: ObjCreateInterface() (By trancexx).

- Fixed #1975: IE object does not recognized as valid object type.

ObjCreateInterface() is undocumented for the moment. Documentation will come in a future release after the syntax is finalized.

Report issues here.

Download here.

Link to post
Share on other sites

Special Note: This is an official beta release but it is not digitally signed. Only Jon has the certificate used for digital signatures and the last time I checked I was not Jon.

3.3.7.15 (11th September, 2011) (Beta)

- Added: DllCallAddress().

- Added: ObjCreateInterface() (By trancexx).

- Fixed #1975: IE object does not recognized as valid object type.

ObjCreateInterface() is undocumented for the moment. Documentation will come in a future release after the syntax is finalized.

Report issues here.

Download here.

Some example for DllCallAddress would be good.

Or at least explanation where/when it's good to this.

Thanks for improvements.

Edited by Zedna
Link to post
Share on other sites

Some example for DllCallAddress would be good.

Or at least explanation where/when it's good to this.

Thanks for improvements.

DllCallAddress is perfect for calling functions when using inline ASM or inline C (TCC).

Edit: Simply put, use it when you have to call a function by address when you have no DLL-name.#

Edit: It is also essential when loading DLLs from memory to aviod going through the hassle of registering it in the DLL list. I tried it once and it is a real pain in the ass.

Edited by ProgAndy

*GERMAN* [note: you are not allowed to remove author / modified info from my UDFs]My UDFs:[_SetImageBinaryToCtrl] [_TaskDialog] [AutoItObject] [Animated GIF (GDI+)] [ClipPut for Image] [FreeImage] [GDI32 UDFs] [GDIPlus Progressbar] [Hotkey-Selector] [Multiline Inputbox] [MySQL without ODBC] [RichEdit UDFs] [SpeechAPI Example] [WinHTTP]UDFs included in AutoIt: FTP_Ex (as FTPEx), _WinAPI_SetLayeredWindowAttributes

Link to post
Share on other sites

It appears floating point values are screwed up with DLLCallAddress(). I hope regular DLLCall() isn't affected in this way too?

Example follows:

Func _TestDirectCall($iVar1,$iVar2,$sStr)
    ConsoleWrite("DirectCall function called (by Address).  Var1="&$iVar1&", Var2="&$iVar2&", Str="&$sStr&@CRLF)
    Return $iVar1+$iVar2+1
EndFunc


Local $aRet,$hCallback,$pCallback
$hCallback=DllCallbackRegister("_TestDirectCall","int","float;long;wstr")
$pCallback=DllCallbackGetPtr($hCallback)
ConsoleWrite("Direct Callback address:"&$pCallback&@CRLF)

; This Currently only works on Beta v3.3.7.15+ (and is broken - at least as far as floating point goes)
$aRet=DLLCallAddress('int',$pCallback,'float',1234,'long',5678,'wstr',"STRING!")

It gives me this output:

DirectCall function called (by Address). Var1=7.6147679590182e-039, Var2=5678, Str=STRING!

Btw - ObjCreateInterface() sounds promising, if it has anything to do with trancexx's work with AutoItObject :graduated:

Link to post
Share on other sites

Sorry, no problems here.

AutoIt:3.3.7.15 (Os:WIN_7/SP1/X86 OSLang:0407 CPUArch:X64)

Direct Callback address:0x00A20000

DirectCall function called (by Address). Var1=1234, Var2=5678, Str=STRING!

Btw - ObjCreateInterface() sounds promising, if it has anything to do with trancexx's work with AutoItObject :graduated:

That is correct, it has simliar functionality to _AutoItObject_ObjCreate and _AutoItObject_WrapperCreate ;) Edited by ProgAndy

*GERMAN* [note: you are not allowed to remove author / modified info from my UDFs]My UDFs:[_SetImageBinaryToCtrl] [_TaskDialog] [AutoItObject] [Animated GIF (GDI+)] [ClipPut for Image] [FreeImage] [GDI32 UDFs] [GDIPlus Progressbar] [Hotkey-Selector] [Multiline Inputbox] [MySQL without ODBC] [RichEdit UDFs] [SpeechAPI Example] [WinHTTP]UDFs included in AutoIt: FTP_Ex (as FTPEx), _WinAPI_SetLayeredWindowAttributes

Link to post
Share on other sites

Sorry, no problems here.

Hmm, good thing you quoted your specs. It appears to work fine when I run it in x86 mode. Running in 64-bit mode is where it gives the corrupted floating point issue..

Link to post
Share on other sites

Oh yeah, DllCallAddress() is one of those icky functions we have to tell Au3Check about manually. It'll be fixed in the next beta.

Along with the busted float type on x64?

I'd like to say again thanks for this kickass feature. It makes things a lot easier for people like Ward and his Binary UDF (machine code).

Edited by wraithdu
Link to post
Share on other sites
Guest
This topic is now closed to further replies.
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...