Oracle FAQ Your Portal to the Oracle Knowledge Grid
HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US
 

Home -> Community -> Usenet -> c.d.o.server -> Help with Forms 4.5 and calling Windows API routines.

Help with Forms 4.5 and calling Windows API routines.

From: Alan Campbell <alan_at_mullen.demon.co.uk>
Date: 1996/12/20
Message-ID: <32bed5eb.338448@news.demon.co.uk>#1/1

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;

end;

TIA Alan

---
Alan Campbell
alan_at_mullen.demon.co.uk
Received on Fri Dec 20 1996 - 00:00:00 CST

Original text of this message

HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US