Konu: Activex Shellexecute (bitis eventi var)
Activex.dll kodunu buradan alabilirsiniz:
https://drive.google.com/file/d/0B1Q5wG … sp=sharing
Icerigini c:\cbUtilities dizinine cikardiginiz varsayarsak:
regasm c:\cbUtilites\cbUtilities.dll /codebase
ile register ediyorsunuz.
d:\temp dizininin varoldugunu kabul eden demo kodu:
Local o As "cbNetCOM.Utilities", eh As 'cbUtilityEvents'
o = Createobject("cbNetCOM.Utilities")
Local lcFileName
m.lcFileName = 'd:\temp\seTest.txt'
Strtofile('',m.lcFileName)
eh=Createobject("cbUtilityEvents",m.o)
Eventhandler(m.o, m.eh)
o.ShellExecProcess("notepad.exe", m.lcFileName, .F., .F.)
* Shellexecuted the process
* Lets do some work while it is running
* Just to demonstrate it is async and we get the event
* when it exists
Public oTimer as Timer
oTimer = CreateObject('myTimer')
m.oTimer.Enabled = .t.
Define Class myTimer as Timer
Interval = 5000 && every 5 seconds
Procedure Timer
? 'I am doing nothing useful, just hanging around.', Datetime()
endproc
enddefine
Define Class cbUtilityEvents As Session OlePublic
Implements IcbEvents In "C:\cbUtilities\CBUTILITIES.TLB"
oHook = Null
Procedure Init(toHook)
This.oHook = m.toHook
Endproc
Procedure IcbEvents_OnProcessExit(ExitCode As Number, exitTime As Date, exceptionMessage As String) As VOID
If Empty(m.exceptionMessage)
? 'Process has exited on', m.exitTime, ' with exit code', m.ExitCode
MessageBox(FileToStr('d:\temp\seTest.txt'))
Else
? 'Process had and exception. Message:', m.exceptionMessage
Endif
Eventhandler(This.oHook,This,.T.)
This.oHook = Null
Endproc
Enddefine
Syntax:
ShellExecProcess(fileNameToShellExec, cArguments [, [lHidden] [, lWaitToExit]] )
fileNameToShellExec: Exe filename (or something like mydocument.doc to invoke with associated application).
cArguments: command line arguments if any else pass an empty string.
lHidden: Default TRUE. Doesn't show a window.
lWaitToExit: Default TRUE. What for exit or not.