As to catch return of oActiveX:Do
As to catch return of oActiveX:Do
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.
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.
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
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?
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?
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Vilian,
Please do this: tlib fivehc.lib - ole.obj
then add these functions to your app:
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
Antonio,
Later that I made what you asked for started to occur the following error:
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)
Antonio,
I changed OleInvoke for the following one:
The error message stopped to happen, but I continue not receiving the return correct. I tried the following one:
It did not function, then I made as a test(see bellow), but also it did not function.
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
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
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
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Antonio,
Now necessary to implement keyboard key accelerator(Sample: CTRL+P to print). I made thus:
event is ok, But nKey is returning NULL!
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
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
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
Analize the value 1242696 according to WM_KEYDOWN docs:
http://msdn2.microsoft.com/en-us/library/ms646280.aspx
unless that activex provides different parameters