Page 1 of 2
As to catch return of oActiveX:Do
Posted: Fri Jul 27, 2007 7:39 pm
by vilian
hi,
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.
Posted: Fri Jul 27, 2007 8:25 pm
by Antonio Linares
Vilian,
Try:
MsgInfo( oActiveX:Do("TerSearchReplace2","rich","",SRCH_SEARCH,N,0) )
Posted: Fri Jul 27, 2007 8:29 pm
by vilian
Antonio,
Already I tried thus and is returning NIL.
Posted: Mon Jul 30, 2007 6:45 pm
by vilian
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?
Posted: Tue Jul 31, 2007 7:43 am
by Antonio Linares
Vilian,
Are you using Harbour or xHarbour ?
Posted: Tue Jul 31, 2007 11:18 am
by vilian
Antonio,
I use xHarbour.
Posted: Tue Jul 31, 2007 12:01 pm
by Antonio Linares
Vilian,
Please do this: tlib fivehc.lib - ole.obj
then add these functions to your app:
Code: Select all
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 uRet
Posted: Tue Jul 31, 2007 12:32 pm
by vilian
Antonio,
Later that I made what you asked for started to occur the following error:
Code: Select all
Application
===========
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)
Posted: Tue Jul 31, 2007 12:51 pm
by vilian
Antonio,
I changed OleInvoke for the following one:
Code: Select all
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 uRet
The error message stopped to happen, but I continue not receiving the return correct. I tried the following one:
Code: Select all
STATIC 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 NIL
It did not function, then I made as a test(see bellow), but also it did not function.
Code: Select all
STATIC 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 NIL
Posted: Tue Jul 31, 2007 1:39 pm
by Antonio Linares
Vilian,
> ? OleInvoke(oActivex:hWnd, ...
That is not correct, as the first parameter is NOT the hWnd.
It has to be OleInvoke( ActXPdisp( oActivex:hActiveX ), ...
Posted: Tue Jul 31, 2007 1:59 pm
by vilian
Antonio,
Very grateful. Now he was ok.
Posted: Thu Aug 02, 2007 8:37 pm
by vilian
Antonio,
Now necessary to implement keyboard key accelerator(Sample: CTRL+P to print). I made thus:
Code: Select all
oActiveX:bOnEvent := { | event, nKey | EventInfo( event, nKey ) }
STATIC FUNCTION EventInfo(event, nKey)
IF Upper(event) $ "KEYPRESS,KEYDOWN"
IF nKey = 80
.....
ENDIF
ENDIF
RETURN NIL
event is ok, But
nKey is returning NULL!
Posted: Thu Aug 02, 2007 9:46 pm
by Antonio Linares
have you tried with two params ?
oActiveX:bOnEvent := { | event, nKey1, nKey2 | EventInfo( event, nKey1, nKey2 ) }
Posted: Fri Aug 03, 2007 1:14 am
by vilian
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
Posted: Fri Aug 03, 2007 6:53 am
by Antonio Linares
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