Page 1 sur 1

COMatePLUS Event Handling

Publié : lun. 23/sept./2013 12:23
par LBS_71
bonjour à tous,

est ce que quelqu'un à reussi à utiliser la méthode "SetEventHandler" ( cf COMateObject class - SetEventHandler() method. ) avec l'objet COM Msxml2.XMLHTTP et tout particulièrement pour essayer de gérer le retour "onreadystatechange" .

Exemple en Vbscript :

Dim oXMLHTTP
Set oXMLHTTP = CreateObject("Msxml2.XMLHTTP")

oXMLHTTP.Open "POST", "http://*************************", False
oXMLHTTP.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
oXMLHTTP.onreadystatechange = getref("HandleStateChange")
oXMLHTTP.send

Function HandleStateChange()
If (oXMLHTTP.readyState = 4) Then
Msgbox " ok "
End If
End Function

Extrait Purebasic :

IncludePath "..\"
XIncludeFile "COMatePLUS.pbi"

DisableExplicit

Global.COMateObject oXMLHTTP

Procedure myEventCallback(object.COMateObject, eventName.s, parameterCount, *result.VARIANT)
Debug eventName
EndProcedure

oXMLHTTP = COMate_CreateObject("Msxml2.XMLHTTP")

If oXMLHTTP
oXMLHTTP\Invoke("setRequestHeader('Content-Type', 'application/x-www-form-urlencoded')")
oXMLHTTP\Invoke("Open('POST','http://google.fr', #False)")
oXMLHTTP\SetEventHandler(#COMate_CatchAllEvents ,0)
oXMLHTTP\SetEventHandler(#COMate_CatchAllEvents ,@myEventCallback(),#COMate_OtherReturn)
Debug COMate_GetLastErrorDescription()
Debug COMate_GetLastErrorCode()
oXMLHTTP\Invoke("Send()")

; Bout de code qui fonctionne mais pas trés élégant !!!
; je veux éviter ce genre de code
;Repeat
; Delay(10)
; Debug oXMLHTTP\GetIntegerProperty("ReadyState")
; Until oXMLHTTP\GetIntegerProperty("ReadyState") = 4


oXMLHTTP\Release()
EndIf




Merci d'avance .

LBS_71

Re: COMatePLUS Event Handling

Publié : lun. 23/sept./2013 12:38
par falsam
Bonjour et bienvenue. Une réponse sur le forum anglais http://forums.purebasic.com/english/vie ... f9#p324045

Re: COMatePLUS Event Handling

Publié : lun. 23/sept./2013 12:45
par LBS_71
falsam a écrit :Bonjour et bienvenue. Une réponse sur le forum anglais http://forums.purebasic.com/english/vie ... f9#p324045
Bonjour Falsam,


merci pour ta réponse mais je vais préciser ma demande car elle ne semble pas claire.

je ne veux pas embarquer du vbs dans mon code PureBasic, mais je veux retranscrire l'écoute de l'événement "onreadystatechange" en Purebasic de la même manière que mon exemple VBS.


Cordialement LBS_71

Re: COMatePLUS Event Handling

Publié : lun. 23/sept./2013 18:47
par nico
T'as un exemple d'utilisation de SetEventHandler ici:
http://www.purebasic.fr/french/viewtopi ... entHandler