I need to catch the return of the following command:
oActiveX:Do("TerSearchReplace2","rich","",SRCH_SEARCH,N,0)
According to documentation of the TerSearchReplace2 component would have to return a numerical value.
Vilian,
Try:
MsgInfo( oActiveX:Do("TerSearchReplace2","rich","",SRCH_SEARCH,N,0) )
Antonio,
Already I tried thus and is returning NIL.
Antonio,
Studying activex.prg with the aid of the Gilmer, we perceive that the Do() method treats only 4(four) parameters. But necessary TerSearchReplace2 of 5(five). We try to make thus:
nPos := ActXInvoke( ActXPdisp( oActiveX:hActiveX ),"TerSearchReplace2","rich","",SRCH_SEARCH,N,0)
But also it did not function. You can help me?
Vilian,
Are you using Harbour or xHarbour ?
Antonio,
I use xHarbour.
function OleGetProperty( hObj, cPropName )
local o := TOleAuto()
local uRet
o:hObj = hObj
uRet = __ObjSendMsg( o, cPropName )
o:hObj = nil
return uRet
function OleSetProperty( hObj, cPropName, uValue )
local o := TOleAuto()
local uRet
o:hObj = hObj
uRet = __ObjSendMsg( o, "_" + cPropName, uValue )
o:hObj = nil
return uRet
function OleInvoke( hObj, cMethName, ... )
local o := TOleAuto()
local uRet
o:hObj = hObj
uRet = o:Invoke( cMethName, ... )
o:hObj = nil
return uRetApplication
===========
Path and name: F:\FWH\SAMPLES\pdf.exe (32 bits)
Size: 1,306,624 bytes
Time from start: 0 hours 0 mins 0 secs
Error occurred at: 07/31/07, 09:38:02
Error description: Error /16389 E_FAIL: TERCOMMAND
Args:
[ 1] = N 680
[ 2] = U
[ 3] = U
[ 4] = U
[ 5] = U
Stack Calls
===========
Called from: win32ole.prg => TOLEAUTO:TERCOMMAND(0)
Called from: => HB_EXECFROMARRAY(0)
Called from: win32ole.prg => TOLEAUTO:INVOKE(397)
Called from: => ACTXINVOKE(67)
Called from: ACTIVEX.PRG => TACTIVEX:DO(0)
Called from: pdf.prg => MAIN(16)function OleInvoke( hObj, cMethName, uPar1, uPar2, uPar3, uPar4, uPar5 )
local o := TOleAuto()
local uRet
o:hObj = hObj
IF uPar2 # NIL
uRet = o:Invoke( cMethName, uPar1, uPar2, uPar3, uPar4, uPar5 )
ELSE
uRet = o:Invoke( cMethName, uPar1 )
ENDIF
o:hObj = nil
return uRetSTATIC FUNCTION EventInfo(event, aParams,oActiveX,oWnd,nKey,nx,ny)
LOCAL nSt,text:=Space(100),font:="",n
IF Upper(event) $ "KEYPRESS"
? oActiveX:Do("TerSearchReplace2","rich","",SRCH_SEARCH,N,0)
ENDIF
RETURN NILSTATIC FUNCTION EventInfo(event, aParams,oActiveX,oWnd,nKey,nx,ny)
LOCAL nSt,text:=Space(100),font:="",n
IF Upper(event) $ "KEYPRESS"
? OleInvoke(oActivex:hWnd,"TerSearchReplace2","rich","",SRCH_SEARCH,N,0)
ENDIF
RETURN NILVilian,
> ? OleInvoke(oActivex:hWnd, ...
That is not correct, as the first parameter is NOT the hWnd.
It has to be OleInvoke( ActXPdisp( oActivex:hActiveX ), ...
Antonio,
Very grateful. Now he was ok.
oActiveX:bOnEvent := { | event, nKey | EventInfo( event, nKey ) }
STATIC FUNCTION EventInfo(event, nKey)
IF Upper(event) $ "KEYPRESS,KEYDOWN"
IF nKey = 80
.....
ENDIF
ENDIF
RETURN NILhave you tried with two params ?
oActiveX:bOnEvent := { | event, nKey1, nKey2 | EventInfo( event, nKey1, nKey2 ) }
Antonio,
Yes, i tried with four params.
oActiveX:bOnEvent := { | event, nKey1, nKey2, nKey3, nKey4 | EventInfo( event, nKey1, nKey2, nKey3, nKey4 ) }
The return is:
nKey1 = array empty
nKey2 = 1242696 ever(constant)
nKey3 = NIL
nKey4 = NIL
Vilian,
Analize the value 1242696 according to WM_KEYDOWN docs:
http://msdn2.microsoft.com/en-us/library/ms646280.aspx
unless that activex provides different parameters