Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
![]() |
![]() |
Home -> Community -> Usenet -> c.d.o.server -> Help with Forms 4.5 and calling Windows API routines.
I have been trying to call the Windows API routine WinExec from Oracle Forms, but can not get it to work. Everytime I call the routine I get a return value of 2 (file not found).
I have included the code below, can anyone tell me what I am doing wrong (I am fairly new to Oracle Forms).
PACKAGE DLL_Calls IS
FUNCTION Run_Program (RP_Program_Details IN VARCHAR2) RETURN
PLS_INTEGER;
END;
PACKAGE BODY DLL_Calls IS
Lib_Handle ORA_FFI.LIBHANDLETYPE :=
ORA_FFI.Register_Library('','KRNL386.EXE'); Func_Handle ORA_FFI.FUNCHANDLETYPE := ORA_FFI.Register_Function(Lib_Handle,'WinExec',ORA_FFI.PASCAL_STD); WE_SW_SHOW CONSTANT PLS_INTEGER := 5; FUNCTION Call_WinExec(CW_Func_Handle IN ORA_FFI.FUNCHANDLETYPE, CW_Prog_Details IN VARCHAR2, CW_State IN PLS_INTEGER) RETURN PLS_INTEGER; PRAGMA interface(c, Call_WinExec, 11265); FUNCTION Run_Program (RP_Program_Details IN VARCHAR2) RETURN PLS_INTEGER IS Full_Prog_Details VARCHAR(256) := RP_Program_Details; BEGIN RETURN(Call_WinExec(Func_Handle, Full_Prog_Details, WE_SW_SHOW)); END; BEGIN ORA_FFI.Register_Return(Func_Handle,ORA_FFI.C_INT); ORA_FFI.Register_Parameter(Func_Handle,ORA_FFI.C_CHAR); ORA_FFI.Register_Parameter(Func_Handle,ORA_FFI.C_INT);END; declare
Dummy integer;
begin
Dummy := DLL_Calls.Run_Program('C:\WINDOWS\MPLAYER.EXE'); IF dummy < 32 THEN MESSAGE('Return status '||TO_CHAR(Dummy)); END IF;
TIA Alan
--- Alan Campbell alan_at_mullen.demon.co.ukReceived on Fri Dec 27 1996 - 00:00:00 CST
![]() |
![]() |