| 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 20 1996 - 00:00:00 CST
![]() |
![]() |