Webutil_c_api
I have problem trying to run the webutil demo wu_test.fmb (downloaded from otn.oracle.com).
I had gone through the WebUtil Familiarization Manual step by step and (hopefully) properly set up WebUtil per instructions.
When I ran the demo form (wu_test.fmb), most of the tabs work, except the C API which I am interested in.
Looking at the log file, here are the error messages
xxx.xxx.xxx.xxx:xxxxxxx: Connection from Form=C:\webutil\demo\WU_TEST.fmx Client O/S=Windows 2000 locale=en
xxx.xxx.xxx.xxx:xxxxxxx: Download of system library ffisamp.dll failed
xxx.xxx.xxx.xxx:xxxxxxx: Download of system library jacob.dll failed
xxx.xxx.xxx.xxx:xxxxxxx: Download of system library JNIsharedstubs.dll failed
xxx.xxx.xxx.xxx:xxxxxxx: Download of system library d2kwut60.dll failed
(xxx.xxx.xxx.xxx:xxxxxxx: were <my pc ip address:userid>)
I wonder if anyone had downloaded and successfully run the webutil demo, especially the C API.
Thank you in advance for your time and assistance.
Regards,
thomas
Mr. Ronald,
Thank you for your assistance. After going through the webutil log file and the WebUtil Familiarization Manual a few more times, and lastly, metalink, it was stated in a metalink post that the "Cause for the Error WUC-20 can be that the webutil.cfg file has an invalid virtual directory: install.syslib.location".
According the WebUtil Familiarization Manual (p.11 of 49), install.syslib.location=/webutil. I did just that, and the log file indicated that
xxx.xxx.xxx.xxx:xxxxxxx: 2004-Jan-22 11:32:53.746 WUI[setProperty()] Setting property WUC_GET_LOCAL_PROPERTY to syslib.ffisamp.dll
xxx.xxx.xxx.xxx:xxxxxxx: 2004-Jan-22 11:32:53.761 WUI[getProperty()] Getting property WUC_GET_LOCAL_PROPERTY
xxx.xxx.xxx.xxx:xxxxxxx: 2004-Jan-22 11:32:53.761 WUI[loadSettings()] No local properties file to load
xxx.xxx.xxx.xxx:xxxxxxx: 2004-Jan-22 11:32:53.761 WUI[getProperty()] Value of WUC_GET_LOCAL_PROPERTY=null
xxx.xxx.xxx.xxx:xxxxxxx: 2004-Jan-22 11:32:53.777 WUI[setProperty()] Setting property WUC_URL_DOWNLOAD to 1|40960|Y|/webutil/ffisamp.dll|ffisamp.dll|WebUtil Install|Downloading required libraries; Please wait...|ffisamp.dll
xxx.xxx.xxx.xxx:xxxxxxx: 2004-Jan-22 11:32:53.777 WUI[getProperty()] Getting property WUC_URL_DOWNLOAD
xxx.xxx.xxx.xxx:xxxxxxx: 2004-Jan-22 11:32:53.777 WUI[downloadFromURL()] Source is http://<machine_name:port>/forms90/f90servlet/webutil/ffisamp.dll
So I tried the absolute URL, http://<machine_name:port>/forms90/webutil, Voila! It worked. The point is somehow, the download url should not include .../f90servlet/...; just plain /forms90/webutil.
Thank you for your time and assistance.
Regards,
thomas
Similar Messages
-
Convert ORA_FFI to WEBUTIL_C_API to print locally
I am trying to figure out how to convert this package to WEBUTIL_C_API to be able to print to a users local printer (EPSON slip printer)... ANY help would be appreciated...
PACKAGE EPSON_SLIP_PRINTER_INTERFACE IS
* This package provides functions to interact with the EPSON
* TM-U295 slip printers.
* The OPEN_PRINTER function must be called to obtain a printer ID.
* This printer ID can then be used when calling other functions
* that require a printer to be specified.
* NOTE that the printer ID is only valid within the same thread
* that called the OPEN_PRINTER function.
* Brendan Rickey 2004-JAN-09
-- AVAILABLE PRINTERS
CHEQUE_PRINTER VARCHAR2(50) := 'Generic / Text Only droite';
INVOICE_PRINTER VARCHAR2(50) := 'Generic / Text Only left';
-- ERROR CODES
-- Some of the provided functions return a NUMBER value that may hold
-- an error code (negative number).
-- These are the possible error codes:
SUCCESS NUMBER := 0; --no error
ERR_TYPE NUMBER := -10; --parameter type error
ERR_OPENED NUMBER := -20; --printer already opened
ERR_NO_PRINTER NUMBER := -30; --the printer driver does not exist
ERR_NO_TARGET NUMBER := -40; --no printer found (could of off, faulty, unsupported)
ERR_NO_MEMORY NUMBER := -50; --insufficient memory
ERR_HANDLE NUMBER := -60; --invalid printer ID
ERR_TIMEOUT NUMBER := -70; --time out error
ERR_ACCESS NUMBER := -80; --cannot read/write to printer (printing in progress)
ERR_PARAM NUMBER := -90; --parameter error
ERR_OFFLINE NUMBER := -110; --printer was opened in offline state. Status must be changed to online.
ERR_NOT_EPSON NUMBER := -120; --printer is not an EPSON printer
* INITIALIZE
* Initializes the interface between Forms and the EPSON library (call before any other function in the package).
* Returns:
* TRUE if the library is registered successfully,
* FALSE otherwise (library not found etc...)
function INITIALIZE return BOOLEAN;
* OPEN_PRINTER
* Obtains a handle on the specified EPSON slip printer (either CHEQUE_PRINTER or INVOICE_PRINTER).
* Returns:
* a printer ID for the specified printer (greater than 0)
* an error code on failure (less than 0):
* ERR_TYPE, ERR_OPENED, ERR_NO_PRINTER, ERR_NO_TARGET, ERR_NO_MEMORY, ERR_PARAM
function OPEN_PRINTER (p_printer_name IN VARCHAR2) return NUMBER;
* CLOSE_PRINTER
* Releases the handle on the specified printer.
* Returns:
* 0 on success
* ERR_HANDLE on failure
function CLOSE_PRINTER (p_printer_id IN NUMBER) return NUMBER;
* IS_PAPER_OUT
* Tests if there is no paper in the printer.
* Returns:
* 1 if there is no paper in the printer, 0 if paper is in the printer
* ERR_HANDLE or ERR_PARAM on failure.
function IS_PAPER_OUT (p_printer_id IN NUMBER) return NUMBER;
* PRINT_TEXT
* Prints the specified text to the specified printer.
* Returns:
* 0 on success
* ERR_HANDLE, ERR_ACCESS, ERR_OFFLINE, ERR_NOT_EPSON, or ERR_PARAM on failure.
function PRINT_TEXT (p_printer_id IN NUMBER, p_text IN VARCHAR2) return NUMBER;
* RELEASE_PAPER
* Performs the Release function on the specified printer.
* Returns:
* 0 on success
* ERR_HANDLE, ERR_ACCESS, ERR_OFFLINE, ERR_NOT_EPSON, or ERR_PARAM on failure.
function RELEASE_PAPER (p_printer_id IN NUMBER) return NUMBER;
/* PRIVATE FUNCTIONS
function BiOpenMonPrinter(arg0 in PLS_INTEGER,
arg1 in out VARCHAR2)
return PLS_INTEGER;
function BiCloseMonPrinter(arg0 in PLS_INTEGER)
return PLS_INTEGER;
function BiGetStatus(arg0 in PLS_INTEGER,
arg1 in out PLS_INTEGER)
return PLS_INTEGER;
function BiDirectIO(arg0 in PLS_INTEGER,
arg1 in PLS_INTEGER,
arg2 in out VARCHAR2,
arg3 in out PLS_INTEGER,
arg4 in out VARCHAR2,
arg5 in PLS_INTEGER,
arg6 in PLS_INTEGER)
return PLS_INTEGER;
function BiDirectIOEx(arg0 in PLS_INTEGER,
arg1 in PLS_INTEGER,
arg2 in out VARCHAR2,
arg3 in out PLS_INTEGER,
arg4 in out VARCHAR2,
arg5 in PLS_INTEGER,
arg6 in PLS_INTEGER,
arg7 in PLS_INTEGER)
return PLS_INTEGER;
END;
PACKAGE BODY EPSON_SLIP_PRINTER_INTERFACE IS
v_msg_b VARCHAR2(20);
v_EPSON_LIBRARY_OK BOOLEAN:= FALSE;
--ORA_FFI function handles and library handle
lh_EpsStmApi ora_ffi.libHandleType; --DLL library handle
fh_BiOpenMonPrinter ora_ffi.funcHandleType; --DLL function handle
fh_BiCloseMonPrinter ora_ffi.funcHandleType; --DLL function handle
fh_BiGetStatus ora_ffi.funcHandleType; --DLL function handle
fh_BiDirectIO ora_ffi.funcHandleType; --DLL function handle
fh_BiDirectIOEx ora_ffi.funcHandleType; --DLL function handle
--constant
ASB_SLIP_BOF PLS_INTEGER := 4*power(16,5); --BOF printer status flag 0x00400000
c_release_code CHAR(2) := CHR(27)||CHR(113); --ESC+q, to release the paper
-------PRIVATE FUNCTIONS--------
* Brendan Rickey 2004-JAN-09
* The following are functions that are required to interface with the
* EPSON StatusAPI DLL (C library) though ORA_FFI.
* The following describes the DLL functions that are made available
* through this ORA_FFI implementation:
Function Purpose
BiOpenMonPrinter Get a handle on a printer.
Parameters
p_Type --int: 1 if p_Name is a port, 2 if a printer name.
,p_Name --varchar2: the port of printer name to open.
Return printer identifier number (>0) on success, < 0 on failure.
BiCloseMonPrinter Close the monitor on the printer.
Parameters
p_Handle --int: The numerical printer handle returned from BiOpenMonPrinter.
Return 0 on success, < 0 on failure.
BiGetStatus Returns the status of the printer.
Parameters
p_Handle --int: The numerical printer handle returned from BiOpenMonPrinter.
,p_Status OUT --long: The status of the printer (use AND bitwise operator to test for statuses).
Return 0 on success, < 0 on failure.
BiDirectIO Sends data to and Reads data from the printer. Use BiDirectIOEx if more that 255 chars are to be written/read.
Parameters
p_Handle --int: The numerical printer handle returned from BiOpenMonPrinter.
,p_WriteLen --short: The length of the command/data being sent to the printer (max 255).
,p_WriteCmd --varchar2: The command/data to send to the printer.
,p_ReadLen --short: The length of the data to be read from the printer (max 255)
(Use 0 if no data is to be read).
,p_ReadBuff OUT --varchar2: The buffer where the the data read from the printer is stored.
,p_Timeout --long: write/read time out in msecs.
,p_NullTerminate --short: 0 => reading of data from printer is performed until time out or length of p_ReadLen is reached.
1 => reading is finished at thepoint when a NULL is received from the printer. ReadLen must have a value.
Return 0 on success, < 0 on failure.
BiDirectIOEx Sends data to and Reads data from the printer (handles larger quantities of write/read data).
Parameters
p_Handle --int: The numerical printer handle returned from BiOpenMonPrinter.
,p_WriteLen --long: The length of the command/data being sent to the printer.
,p_WriteCmd --varchar2: The command/data to send to the printer.
,p_ReadLen --long: The length of the data to be read from the printer (Use 0 if no data is to be read).
,p_ReadBuff OUT --varchar2: The buffer where the the data read from the printer is stored.
,p_Timeout --long: write/read time out in msecs.
,p_NullTerminate --short: 0 => reading of data from printer is performed until time out or length of p_ReadLen is reached.
1 => reading is finished at thepoint when a NULL is received from the printer. ReadLen must have a value.
,p_Option --short: 0 => prevents Automatic Status Back (ASB) during execution of this function (as does BiDirectIO).
1 => does not disable Automatic Status Back (ASB).
Return 0 on success, < 0 on failure.
function icd_BiOpenMonPrinter(funcHandle in ora_ffi.funcHandleType, arg0 in PLS_INTEGER,
arg1 in out VARCHAR2)
return PLS_INTEGER;
pragma interface(c, icd_BiOpenMonPrinter, 11265);
function BiOpenMonPrinter(arg0 in PLS_INTEGER,
arg1 in out VARCHAR2)
return PLS_INTEGER is
begin
return(icd_BiOpenMonPrinter(fh_BiOpenMonPrinter,
arg0,
arg1));
end;
function icd_BiCloseMonPrinter(funcHandle in ora_ffi.funcHandleType, arg0 in PLS_INTEGER)
return PLS_INTEGER;
pragma interface(c, icd_BiCloseMonPrinter, 11265);
function BiCloseMonPrinter(arg0 in PLS_INTEGER)
return PLS_INTEGER is
begin
return(icd_BiCloseMonPrinter(fh_BiCloseMonPrinter,
arg0));
end;
function icd_BiGetStatus(funcHandle in ora_ffi.funcHandleType, arg0 in PLS_INTEGER,
arg1 in out PLS_INTEGER)
return PLS_INTEGER;
pragma interface(c, icd_BiGetStatus, 11265);
function BiGetStatus(arg0 in PLS_INTEGER,
arg1 in out PLS_INTEGER)
return PLS_INTEGER is
begin
return(icd_BiGetStatus(fh_BiGetStatus,
arg0,
arg1));
end;
function icd_BiDirectIO(funcHandle in ora_ffi.funcHandleType, arg0 in PLS_INTEGER,
arg1 in PLS_INTEGER,
arg2 in out VARCHAR2,
arg3 in out PLS_INTEGER,
arg4 in out VARCHAR2,
arg5 in PLS_INTEGER,
arg6 in PLS_INTEGER)
return PLS_INTEGER;
pragma interface(c, icd_BiDirectIO, 11265);
function BiDirectIO(arg0 in PLS_INTEGER,
arg1 in PLS_INTEGER,
arg2 in out VARCHAR2,
arg3 in out PLS_INTEGER,
arg4 in out VARCHAR2,
arg5 in PLS_INTEGER,
arg6 in PLS_INTEGER)
return PLS_INTEGER is
begin
return(icd_BiDirectIO(fh_BiDirectIO,
arg0,
arg1,
arg2,
arg3,
arg4,
arg5,
arg6));
end;
function icd_BiDirectIOEx(funcHandle in ora_ffi.funcHandleType, arg0 in PLS_INTEGER,
arg1 in PLS_INTEGER,
arg2 in out VARCHAR2,
arg3 in out PLS_INTEGER,
arg4 in out VARCHAR2,
arg5 in PLS_INTEGER,
arg6 in PLS_INTEGER,
arg7 in PLS_INTEGER)
return PLS_INTEGER;
pragma interface(c, icd_BiDirectIOEx, 11265);
function BiDirectIOEx(arg0 in PLS_INTEGER,
arg1 in PLS_INTEGER,
arg2 in out VARCHAR2,
arg3 in out PLS_INTEGER,
arg4 in out VARCHAR2,
arg5 in PLS_INTEGER,
arg6 in PLS_INTEGER,
arg7 in PLS_INTEGER)
return PLS_INTEGER is
begin
return(icd_BiDirectIOEx(fh_BiDirectIOEx,
arg0,
arg1,
arg2,
arg3,
arg4,
arg5,
arg6,
arg7));
end;
--------PUBLIC FUNCTIONS--------
function INITIALIZE return BOOLEAN IS
BEGIN
--When this is the first package function called, code in the package's
--body is executed and sets v_EPSON_LIBRARY_OK.
RETURN v_EPSON_LIBRARY_OK;
END;
function OPEN_PRINTER (p_printer_name IN VARCHAR2) return NUMBER IS
v_printer PLS_INTEGER;
v_printer_name VARCHAR2(50) := p_printer_name;
v_name_type PLS_INTEGER := 2; --use printer Name to specify printer
BEGIN
/* Open a monitor for the printer */
v_printer := BiOpenMonPrinter(v_name_type,v_printer_name);
RETURN v_printer;
END;
function CLOSE_PRINTER (p_printer_id IN NUMBER) return NUMBER IS
v_return PLS_INTEGER;
BEGIN
/* CLOSE the printer monitor */
v_return := BiCloseMonPrinter(p_printer_id);
RETURN v_return;
END;
function IS_PAPER_OUT (p_printer_id IN NUMBER) return NUMBER IS
v_return PLS_INTEGER;
v_status PLS_INTEGER := -123456;
BEGIN
/* Test if paper is in the printer by first getting the status (a binary integer) */
v_return := BiGetStatus(p_printer_id,v_status);
IF v_return <> 0 THEN
RETURN v_return;
ELSE
--Test for BOF status flag
IF WIN_API_BITOP.BITWISE_AND(v_status,ASB_SLIP_BOF) = ASB_SLIP_BOF THEN
RETURN 1; --paper out
ELSE
RETURN 0; --paper in
END IF;
END IF;
END;
function PRINT_TEXT (p_printer_id IN NUMBER, p_text IN VARCHAR2) return NUMBER IS
v_return PLS_INTEGER;
v_text VARCHAR2(2000) := p_text;
v_text_len PLS_INTEGER; --number of characters to be printed
v_read_len PLS_INTEGER := 0; --number of characters to be read from the printer
v_read_buff VARCHAR2(255) := NULL; --not used: holds characters read from the printer
v_timeout PLS_INTEGER := 1000; --not used: amount of time to wait for response (msecs)
v_nullTerm PLS_INTEGER := 0; --not used: 0 means read until reached v_read_len or v_timeout
-- 1 means read until NULL received from printer
v_option PLS_INTEGER := 0; --0 means do not answer other requests while printing
--1 means do not stop answering other requests while printing
BEGIN
--Get the number of chars to be printed and then print.
v_text_len := length(p_text);
v_return := BiDirectIOEx(p_printer_id,
v_text_len,
v_text,
v_read_len,
v_read_buff,
v_timeout,
v_nullTerm,
v_option);
--Ignore timeout(-70) errors, otherwise return error
IF v_return = -70 THEN
v_return := 0;
END IF;
RETURN v_return;
END;
function RELEASE_PAPER (p_printer_id IN NUMBER) return NUMBER IS
BEGIN
/* Release the paper by sending the release escape code to the printer */
RETURN PRINT_TEXT(p_printer_id, c_release_code);
END;
-----END OF FUNCTION IMPLEMENTATIONS-----
BEGIN
* Load the EPSON printer driver's StatusAPI library.
* Create an ORA_FFI interface to the library by doing the following for each desired function:
* 1- Create a handle on the function,
* 2- Register the return value,
* 3- Register the arguments/parameters in the correct order.
lh_EpsStmApi := ora_ffi.load_library('', 'EpsStmApi.DLL');
IF Ora_Ffi.Is_Null_Ptr(lh_EpsStmApi) THEN
AFC_MESSAGES('I','MAIN-0020','E',v_msg_b);
v_EPSON_LIBRARY_OK := FALSE;
ELSE
fh_BiOpenMonPrinter := ora_ffi.register_function(lh_EpsStmApi, 'BiOpenMonPrinter', ora_ffi.c_std);
ora_ffi.register_return(fh_BiOpenMonPrinter, ora_ffi.c_int, ora_ffi.pls_pls_integer);
ora_ffi.register_parameter(fh_BiOpenMonPrinter, ora_ffi.c_int, ora_ffi.pls_pls_integer);
ora_ffi.register_parameter(fh_BiOpenMonPrinter, ora_ffi.c_char_ptr, ora_ffi.pls_varchar2);
fh_BiCloseMonPrinter := ora_ffi.register_function(lh_EpsStmApi, 'BiCloseMonPrinter', ora_ffi.c_std);
ora_ffi.register_return(fh_BiCloseMonPrinter, ora_ffi.c_int, ora_ffi.pls_pls_integer);
ora_ffi.register_parameter(fh_BiCloseMonPrinter, ora_ffi.c_int, ora_ffi.pls_pls_integer);
fh_BiGetStatus := ora_ffi.register_function(lh_EpsStmApi, 'BiGetStatus', ora_ffi.c_std);
ora_ffi.register_return(fh_BiGetStatus, ora_ffi.c_int, ora_ffi.pls_pls_integer);
ora_ffi.register_parameter(fh_BiGetStatus, ora_ffi.c_int, ora_ffi.pls_pls_integer);
ora_ffi.register_parameter(fh_BiGetStatus, ora_ffi.c_long_ptr, ora_ffi.pls_pls_integer);
fh_BiDirectIO := ora_ffi.register_function(lh_EpsStmApi, 'BiDirectIO', ora_ffi.c_std);
ora_ffi.register_return(fh_BiDirectIO, ora_ffi.c_int, ora_ffi.pls_pls_integer);
ora_ffi.register_parameter(fh_BiDirectIO, ora_ffi.c_int, ora_ffi.pls_pls_integer);
ora_ffi.register_parameter(fh_BiDirectIO, ora_ffi.c_short, ora_ffi.pls_pls_integer);
ora_ffi.register_parameter(fh_BiDirectIO, ora_ffi.c_char_ptr, ora_ffi.pls_varchar2);
ora_ffi.register_parameter(fh_BiDirectIO, ora_ffi.c_short_ptr, ora_ffi.pls_pls_integer);
ora_ffi.register_parameter(fh_BiDirectIO, ora_ffi.c_char_ptr, ora_ffi.pls_varchar2);
ora_ffi.register_parameter(fh_BiDirectIO, ora_ffi.c_long, ora_ffi.pls_pls_integer);
ora_ffi.register_parameter(fh_BiDirectIO, ora_ffi.c_short, ora_ffi.pls_pls_integer);
fh_BiDirectIOEx := ora_ffi.register_function(lh_EpsStmApi, 'BiDirectIOEx', ora_ffi.c_std);
ora_ffi.register_return(fh_BiDirectIOEx, ora_ffi.c_int, ora_ffi.pls_pls_integer);
ora_ffi.register_parameter(fh_BiDirectIOEx, ora_ffi.c_int, ora_ffi.pls_pls_integer);
ora_ffi.register_parameter(fh_BiDirectIOEx, ora_ffi.c_long, ora_ffi.pls_pls_integer);
ora_ffi.register_parameter(fh_BiDirectIOEx, ora_ffi.c_char_ptr, ora_ffi.pls_varchar2);
ora_ffi.register_parameter(fh_BiDirectIOEx, ora_ffi.c_long_ptr, ora_ffi.pls_pls_integer);
ora_ffi.register_parameter(fh_BiDirectIOEx, ora_ffi.c_char_ptr, ora_ffi.pls_varchar2);
ora_ffi.register_parameter(fh_BiDirectIOEx, ora_ffi.c_long, ora_ffi.pls_pls_integer);
ora_ffi.register_parameter(fh_BiDirectIOEx, ora_ffi.c_short, ora_ffi.pls_pls_integer);
ora_ffi.register_parameter(fh_BiDirectIOEx, ora_ffi.c_short, ora_ffi.pls_pls_integer);
v_EPSON_LIBRARY_OK := TRUE;
END IF;
EXCEPTION
WHEN OTHERS THEN
AFC_MESSAGES('I','MAIN-0021','E',v_msg_b);
v_EPSON_LIBRARY_OK := FALSE;
END;Hi Duncan,
Thanks for the response. Beyond the problem you pointed out I found that the "open server" command is requiring a window handle parameter, even though it isn't used by the program. I talked with Oracle Support and it turns out that even if the window handle isn't used, it's existence makes it not work with the current version of webutil.
The program I am working with also has a COM interface, so I decided to back up and redo the interface using webutil OLE2. I've got it working now, just a little more polishing to do.
Thanks again for the help.
Mark -
WebUtil_c_Api problem
I´m trying to execute the following C function:
extern "C" __declspec( dllexport ) int add(int* value1, int* value2);
So I have make the folling package:
PACKAGE BODY calculator IS
add_func webutil_c_api.FunctionHandle;
add_func_parameters webutil_c_api.ParameterList;
add_param1 webutil_c_api.ParameterHandle;
add_param2 webutil_c_api.ParameterHandle;
add_return PLS_INTEGER;
FUNCTION i_dll_add(add_func IN webutil_c_api.FunctionHandle, value1 IN OUT NOCOPY PLS_INTEGER,
value2 IN OUT NOCOPY PLS_INTEGER)
RETURN PLS_INTEGER;
PRAGMA INTERFACE (c, i_dll_add, 11265);
FUNCTION dll_add (value1 IN OUT NOCOPY PLS_INTEGER, value2 IN OUT NOCOPY PLS_INTEGER)
RETURN PLS_INTEGER IS
BEGIN
RETURN i_dll_add(add_func, value1, value2);
END dll_add;
add_func := webutil_c_api.register_function('Calculator_ws.dll', 'add');
add_func_parameters := webutil_c_api.create_parameter_list;
add_param1 := webutil_c_api.add_parameter(add_func_parameters, webutil_c_api.C_INT_PTR, webutil_c_api.PARAM_INOUT, 0);
add_param2 := webutil_c_api.add_parameter(add_func_parameters, webutil_c_api.C_INT_PTR, webutil_c_api.PARAM_INOUT, 1);
add_return := webutil_c_api.Invoke_Int('Calculator_ws.dll', 'add', add_func_parameters);
webutil_c_api.Destroy_Parameter_List(add_func_parameters);
webutil_c_api.Deregister_Function(add_func);
END calculator;
But when I execute the FUNCTION it doesn't work. Does anyone which could be the problem?
Thank you.Look again at your code - It seems to me this has been converted from some ORA_FFI code am I correct??
If you are calling the dll_add function then this is in turn calling i_dll_add, and that is calling to a DLL loaded on the server side (that's the pragma interface bit) and not touching WebUtil or the client side at all.
So rip out the i_dll_add spec and body and move all the webutil code calls into dll_add where they will actually be called. -
Where do we need to place DLL files for webutil_c_api
Hi..
(I posted this a few days back, but no reply..buddies, help me plz)
In Forms 10g while using webutil_c_api to call c functions,
where do we need to place the DLL files. Is it enough if we place in the AS or do we need to place the dll files in all the client machines.
Please clarify me.
Thnx and Regards
SriramHi Sriram,
Yes, you can place the dlls in the same folder as d2kwut60.dll. Also, for your dll
to get donwloaded to the client, you need to configure the webutil.cfg file and add an entry for your own dll , after the webutil dll entries, as shown below:
install.syslib.0.7.1=jacob.dll|94208|1.0|true
install.syslib.0.9.1=JNIsharedstubs.dll|65582|1.0|true
install.syslib.0.9.2=d2kwut60.dll|192512|1.0|true
install.syslib.0.user.1=scanner.dll|192512|1.0|true
Regards
Kavitha -
Hi,
I have installed oracle application server 10g on server .Configured webutil in server. Am using Mac OS X as client machine.But i got error
" oracle.forms.webutil.cApi.CApiFunctions bean not found.WEBUTIL_C_API.REBIND_PARAMETER will not work "
Can you please assist in correcting this error...
Urgent PLS...
Thanks.Is the webutil.olb file accesible to the Form when you try to compile ?.
-
Use a window handler in a webutil_c_api.invoke
Hi
I need to get the window handler of the forms, but I always get 0 from get_window_property( 'my_win',WINDOW_HANDLE )
and wen I ran the function:
webutil_c_api.invoke(ps_dll,'TWAIN_AcquireToFilename',func_param_acq);
the function send me a messagebox of "invalid window handler", then the twain execute well the function and when it finish, the web browser window is closed.
Can somebody tell me what is wrong ?
Is not possible to use a C function in a dll with webutil_c_api, that needs a window handler as a parameter
Thanx in advanceHi
I need to get the window handler of the forms, but I always get 0 from get_window_property( 'my_win',WINDOW_HANDLE )
and wen I ran the function:
webutil_c_api.invoke(ps_dll,'TWAIN_AcquireToFilename',func_param_acq);
the function send me a messagebox of "invalid window handler", then the twain execute well the function and when it finish, the web browser window is closed.
Can somebody tell me what is wrong ?
Is not possible to use a C function in a dll with webutil_c_api, that needs a window handler as a parameter
Thanx in advance -
Error on "webutil_c_api.invoke_int"
Hello,
i'm testing a DLL that was used in Oracle Forms 6i using ORA_FFI.
the function that i'm testing it on Oracle 10g is :
Function LS100_Open (hwnd in out pls_integer,
Hinst in out pls_integer,
Type_com in char) return pls_integer
The Code in Oracle 10g is :
declare
ret_val pls_integer;
hwnd pls_integer;
handle pls_integer;
typ_com varchar2(1):= 'S';
f_handle webutil_c_api.FunctionHandle;
args webutil_c_api.ParameterList;
param1 webutil_c_api.ParameterHandle;
param2 webutil_c_api.ParameterHandle;
param3 webutil_c_api.ParameterHandle;
begin
f_handle := webutil_c_api.register_function('Ls100.dll','LS100_Open');
args := webutil_c_api.create_parameter_list;
param1 := webutil_c_api.add_parameter(args,webutil_c_api.c_int,webutil_c_api.param_out,hwnd);
param2 := webutil_c_api.add_parameter(args,webutil_c_api.c_int,webutil_c_api.param_out,handle);
param3 := webutil_c_api.add_parameter(args,webutil_c_api.c_char,webutil_c_api.param_in,typ_com,1);
ret_val := webutil_c_api.invoke_int('Ls100.dll','LS100_Open',args);
WEBUTIL_C_API.Destroy_Parameter_List(args);
WEBUTIL_C_API.Deregister_Function(f_handle);
end;
when i execute this code the following error appears:
"WUL-910 Invoking the function failed: java.lang.IllegalArgumentException: unrecognized argument type"
Is there anything wrong in my code ???hi,
the function in dll is:
-- pll in 6i ---
LS100_lhandle ORA_FFI.LIBHANDLETYPE;
LS100_Open_fhandle ORA_FFI.FUNCHANDLETYPE;
FUNCTION ff_LS100_Open (LS100_Open_fhandle ORA_FFI.FUNCHANDLETYPE,
hWnd IN OUT PLS_INTEGER,
Hinst IN OUT PLS_INTEGER,
Type_com IN CHAR) RETURN PLS_INTEGER;
PRAGMA interface (C, ff_LS100_Open, 11265);
FUNCTION LS100_Open (hWnd IN OUT PLS_INTEGER, --not a pointer
Hinst IN OUT PLS_INTEGER, -- not a pointer
Type_com IN CHAR) -- not a pointer
RETURN PLS_INTEGER IS
BEGIN
RETURN( FF_LS100_Open( LS100_Open_fhandle, hWnd, Hinst, Type_com));
END; /* function LS100_Open() */
and in the documentation of the function in the library is defined as :
LS100_Open
#include "LS100.h"
Result API LS100_Open (HWND hwnd,
HANDLE Hinst,
CHAR Type_com);
Description
Open a connection between client and LS service.
Parameters
Hwnd
Handle of the application windows which will receive the notification messages.
Hinst
Hinstance of the application window
Type_com
Execution mode of the command:
SUSPENSIVE_MODE = Synchronous mode
NOT_SUSPENSIVE_MODE = Asynchronous mode
Return Value
LS100_OKAY if successful
LS100_TRY_TO_RESET if the peripheral is in error state otherwise standard reply code.
I have already the howto_ffi.html file and i have already did the following:
- configuring the Webutil 1.0.5 (production release)
- adding the library "LS100" to the Webutil.cfg
- copy the library "LS100" and paste it into webutil\lib
I also tried the following:
I did omit the register/deregister_function, the code become as following and the same error occured after the 3rd add_parameter :
declare
ret_val pls_integer;
hwnd number;
handle number;
typ_com varchar2(1):= 'S';
len_typ pls_integer := 1;
f_handle webutil_c_api.FunctionHandle;
args webutil_c_api.ParameterList;
param1 webutil_c_api.ParameterHandle;
param2 webutil_c_api.ParameterHandle;
param3 webutil_c_api.ParameterHandle;
xx number;
yy number;
begin
-- f_handle := webutil_c_api.register_function('Ls100.dll','LS100_Open');
args := webutil_c_api.create_parameter_list;
message('1');
param1 := webutil_c_api.add_parameter(args,webutil_c_api.c_int,webutil_c_api.param_out,hwnd);
message('2');
param2 := webutil_c_api.add_parameter(args,webutil_c_api.c_int,webutil_c_api.param_out,handle);
message('3');
param3 := webutil_c_api.add_parameter(args,webutil_c_api.c_char,webutil_c_api.param_in,typ_com,len_typ);
Now the same error appears in this stage:
" WUL-910 Invoking the function failed: java.lang.IllegalArgumentException: unrecognized argument type "
and the running continue
message('before invoke_int');
-- the "invoke_int" runs without any errors
ret_val := webutil_c_api.invoke_int('Ls100.dll','LS100_Open',args);
xx := webutil_c_api.get_parameter_number(args,param1);
yy := webutil_c_api.get_parameter_number(args,param2);
message('hwnd ='||xx); -- => 0
message('handle ='||yy); -- => 0
message('ret_val ='||ret_val); -- => <nothing>
WEBUTIL_C_API.Destroy_Parameter_List(args);
--WEBUTIL_C_API.Deregister_Function(f_handle);
end;
Thanks -
Nocopy and Webutil_c_api
Hi,
First of all, sorry for my bad english.
I would like to know how to use 'nocopy' with webutil_c_api
Because, I have a function in a dll like this:
function_name( var1 by reference )
The problems is the 'var 1'.
How can i solve this problem ?up
-
Can WEBUTIL_C_API call dll coded in visual basic
Hi all
I wonder if WEBUTIL_C_API supports calling methods in a dll coded in Visual Basic? Or it only supports C, C++ and Visual C++?
Thank youHi
I am wondering because in webutil documentation I found this:
The WebUtil_C_API is a comprehensive API which allows you to call into C libraries on the client. The API only supports Win32 Clients.
Thank you -
Webutil_c_api char error
I'm trying to execute the following C function:
extern "C" PRUEBADLL_API int fnPruebaDLL(char* value);
This function shows a simple Dialog.
Firtsly I executed the function:
extern "C" PRUEBADLL_API int fnPruebaDLL();
And it was ok. But with the param it doesn't work. My PL/SQL code is:
FUNCTION dll_PruebaDLL(value1 IN OUT CHAR) RETURN PLS_INTEGER IS
prueba_func webutil_c_api.FunctionHandle;
prueba_params webutil_c_api.ParameterList;
prueba_param1 webutil_c_api.ParameterHandle;
prueba_return PLS_INTEGER;
BEGIN
prueba_func := webutil_c_api.register_function('PruebaDLL.dll', 'fnPruebaDLL');
prueba_params := webutil_c_api.create_parameter_list;
prueba_param1 := webutil_c_api.add_parameter(prueba_params, webutil_c_api.C_CHAR_PTR, webutil_c_api.PARAM_INOUT, value1);
prueba_return := webutil_c_api.Invoke_Int('PruebaDLL.dll', 'fnPruebaDLL', prueba_params);
webutil_c_api.destroy_parameter_list(prueba_params);
webutil_c_api.deregister_function(prueba_func);
return prueba_return;
END dll_PruebaDLL;
Does anybody know why it doesn't work?You ommit the length of value1.
This line
prueba_param1 := webutil_c_api.add_parameter(prueba_params, webutil_c_api.C_CHAR_PTR, webutil_c_api.PARAM_INOUT, value1);
should read
prueba_param1 := webutil_c_api.add_parameter(prueba_params, webutil_c_api.C_CHAR_PTR, webutil_c_api.PARAM_INOUT, value1, length(value1)); -
Webutil_c_api with user32.dll (ShowWindow method) crashes
Hello,
I am trying to hide a window by using the method ShowWindow of user32.dll.
So I use the package webutil_c_api.
It works, my window becomes hidden, but just after that, the Forms applet crashes with Internet Explorer.
Here is the code :
declare
v_args webutil_c_api.ParameterList;
v_param webutil_c_api.ParameterHandle;
v_res pls_integer;
begin
v_args := webutil_c_api.create_parameter_list;
v_param := webutil_c_api.add_parameter(v_args, webutil_c_api.C_LONG, webutil_c_api.PARAM_IN, 66152);
v_param := webutil_c_api.add_parameter(v_args, webutil_c_api.C_INT, webutil_c_api.PARAM_IN, 0);
v_res := webutil_c_api.invoke_long('user32.dll', 'ShowWindow', v_args);
MESSAGE('ShowWindow -> ' || v_res);
EXCEPTION
WHEN OTHERS THEN
message('Error code: '||to_char(sqlcode)||' Txt: '||sqlerrm);
PAUSE;
raise form_trigger_failure;
end;Notice : I had to hardcode the Window Handler 66152 because I'm not able to find it (there is another problem).
Do you have some hints?
Thanks,
Nicolas.When it crashes, it produces a file that is placed on my desktop :
An unexpected exception has been detected in native code outside the VM.
Unexpected Signal : EXCEPTION_ACCESS_VIOLATION occurred at PC=0x2
Function name=(N/A)
Library=(N/A)
NOTE: We are unable to locate the function name symbol for the error
just occurred. Please refer to release documentation for possible
reason and solutions.
Current Java thread:
at oracle.forms.webutil.cApi.CFunc.callInt(Native Method)
at oracle.forms.webutil.cApi.CApiFunctions.invokeCApi(CApiFunctions.java:837)
at oracle.forms.webutil.cApi.CApiFunctions.getProperty(CApiFunctions.java:144)
at oracle.forms.handler.UICommon.onGet(Unknown Source)
at oracle.forms.engine.Runform.onGetHandler(Unknown Source)
at oracle.forms.engine.Runform.processMessage(Unknown Source)
at oracle.forms.engine.Runform.processSet(Unknown Source)
at oracle.forms.engine.Runform.onMessageReal(Unknown Source)
at oracle.forms.engine.Runform.onMessage(Unknown Source)
at oracle.forms.engine.Runform.processEventEnd(Unknown Source)
at oracle.ewt.lwAWT.LWComponent.redispatchEvent(Unknown Source)
at oracle.ewt.lwAWT.LWComponent.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Dynamic libraries:
0x00400000 - 0x00419000 C:\Program Files\Internet Explorer\IEXPLORE.EXE
0x77F50000 - 0x77FF7000 C:\WINNT\System32\ntdll.dll
0x77E60000 - 0x77F46000 C:\WINNT\system32\kernel32.dll
0x77C10000 - 0x77C63000 C:\WINNT\system32\msvcrt.dll
0x77D40000 - 0x77DCC000 C:\WINNT\system32\USER32.dll
0x77C70000 - 0x77CB0000 C:\WINNT\system32\GDI32.dll
0x77DD0000 - 0x77E5D000 C:\WINNT\system32\ADVAPI32.dll
0x78000000 - 0x78086000 C:\WINNT\system32\RPCRT4.dll
0x70A70000 - 0x70AD5000 C:\WINNT\system32\SHLWAPI.dll
0x71700000 - 0x71849000 C:\WINNT\System32\SHDOCVW.dll
0x71950000 - 0x71A34000 C:\WINNT\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.10.0_x-ww_f7fb5805\comctl32.dll
0x773D0000 - 0x77BC2000 C:\WINNT\system32\SHELL32.dll
0x77340000 - 0x773CB000 C:\WINNT\system32\comctl32.dll
0x771B0000 - 0x772D1000 C:\WINNT\system32\ole32.dll
0x74720000 - 0x74764000 C:\WINNT\System32\MSCTF.dll
0x71500000 - 0x715FD000 C:\WINNT\System32\BROWSEUI.dll
0x72430000 - 0x72442000 C:\WINNT\System32\browselc.dll
0x75F40000 - 0x75F5F000 C:\WINNT\system32\appHelp.dll
0x76FD0000 - 0x77048000 C:\WINNT\System32\CLBCATQ.DLL
0x77120000 - 0x771AB000 C:\WINNT\system32\OLEAUT32.dll
0x77050000 - 0x77115000 C:\WINNT\System32\COMRes.dll
0x77C00000 - 0x77C07000 C:\WINNT\system32\VERSION.dll
0x76670000 - 0x76757000 C:\WINNT\System32\SETUPAPI.dll
0x5AD70000 - 0x5ADA4000 C:\WINNT\System32\UxTheme.dll
0x63000000 - 0x63096000 C:\WINNT\system32\WININET.dll
0x762C0000 - 0x76348000 C:\WINNT\system32\CRYPT32.dll
0x762A0000 - 0x762B0000 C:\WINNT\system32\MSASN1.dll
0x76F90000 - 0x76FA0000 C:\WINNT\System32\Secur32.dll
0x10000000 - 0x1012D000 c:\program files\google\googletoolbar1.dll
0x1A400000 - 0x1A47A000 C:\WINNT\system32\urlmon.dll
0x71AD0000 - 0x71AD8000 C:\WINNT\System32\WSOCK32.dll
0x71AB0000 - 0x71AC5000 C:\WINNT\System32\WS2_32.dll
0x71AA0000 - 0x71AA8000 C:\WINNT\System32\WS2HELP.dll
0x76C30000 - 0x76C5B000 C:\WINNT\System32\WINTRUST.dll
0x76C90000 - 0x76CB2000 C:\WINNT\system32\IMAGEHLP.dll
0x76B40000 - 0x76B6C000 C:\WINNT\System32\WINMM.dll
0x76380000 - 0x76385000 C:\WINNT\System32\MSIMG32.dll
0x6D510000 - 0x6D58D000 C:\WINNT\System32\DBGHELP.DLL
0x71C20000 - 0x71C6E000 C:\WINNT\System32\netapi32.dll
0x71B20000 - 0x71B31000 C:\WINNT\system32\MPR.dll
0x75F60000 - 0x75F66000 C:\WINNT\System32\drprov.dll
0x71C10000 - 0x71C1D000 C:\WINNT\System32\ntlanman.dll
0x71CD0000 - 0x71CE6000 C:\WINNT\System32\NETUI0.dll
0x71C90000 - 0x71CCC000 C:\WINNT\System32\NETUI1.dll
0x71C80000 - 0x71C86000 C:\WINNT\System32\NETRAP.dll
0x71BF0000 - 0x71C01000 C:\WINNT\System32\SAMLIB.dll
0x76EE0000 - 0x76F17000 C:\WINNT\System32\RASAPI32.DLL
0x76E90000 - 0x76EA1000 C:\WINNT\System32\rasman.dll
0x76EB0000 - 0x76EDB000 C:\WINNT\System32\TAPI32.dll
0x76E80000 - 0x76E8D000 C:\WINNT\System32\rtutils.dll
0x75F70000 - 0x75F79000 C:\WINNT\System32\davclnt.dll
0x722B0000 - 0x722B5000 C:\WINNT\System32\sensapi.dll
0x75A70000 - 0x75B15000 C:\WINNT\system32\USERENV.dll
0x76990000 - 0x769B4000 C:\WINNT\System32\ntshrui.dll
0x76B20000 - 0x76B35000 C:\WINNT\System32\ATL.DLL
0x76170000 - 0x761F8000 C:\WINNT\System32\shdoclc.dll
0x74770000 - 0x747FF000 C:\WINNT\System32\mlang.dll
0x63580000 - 0x63830000 C:\WINNT\System32\mshtml.dll
0x75E90000 - 0x75F37000 C:\WINNT\System32\SXS.DLL
0x6B700000 - 0x6B790000 C:\WINNT\System32\jscript.dll
0x746F0000 - 0x74716000 C:\WINNT\System32\msimtf.dll
0x746C0000 - 0x746E7000 C:\WINNT\System32\MSLS31.DLL
0x76390000 - 0x763AC000 C:\WINNT\System32\IMM32.DLL
0x76620000 - 0x7666E000 C:\WINNT\System32\cscui.dll
0x76600000 - 0x7661B000 C:\WINNT\System32\CSCDLL.dll
0x325C0000 - 0x325D2000 C:\Program Files\Office2003\OFFICE11\msohev.dll
0x71A50000 - 0x71A8B000 C:\WINNT\system32\mswsock.dll
0x71A90000 - 0x71A98000 C:\WINNT\System32\wshtcpip.dll
0x76F20000 - 0x76F45000 C:\WINNT\System32\DNSAPI.dll
0x76FB0000 - 0x76FB7000 C:\WINNT\System32\winrnr.dll
0x76F60000 - 0x76F8C000 C:\WINNT\system32\WLDAP32.dll
0x02C70000 - 0x02C83000 C:\Program Files\Labtec\Labtec Mouse Software\2.0\MOUDL32A.DLL
0x76FC0000 - 0x76FC5000 C:\WINNT\System32\rasadhlp.dll
0x6D350000 - 0x6D35D000 C:\Program Files\Oracle\JInitiator 1.3.1.18\bin\npjinit13118.dll
0x6D130000 - 0x6D15B000 C:\Program Files\Oracle\JInitiator 1.3.1.18\bin\beans.ocx
0x6D300000 - 0x6D316000 C:\Program Files\Oracle\JInitiator 1.3.1.18\bin\jpishare.dll
0x6D3F0000 - 0x6D4C7000 C:\PROGRA~1\Oracle\JINITI~1.18\bin\hotspot\jvm.dll
0x6D220000 - 0x6D227000 C:\PROGRA~1\Oracle\JINITI~1.18\bin\hpi.dll
0x6D380000 - 0x6D38D000 C:\PROGRA~1\Oracle\JINITI~1.18\bin\verify.dll
0x6D250000 - 0x6D268000 C:\PROGRA~1\Oracle\JINITI~1.18\bin\java.dll
0x6D390000 - 0x6D39D000 C:\PROGRA~1\Oracle\JINITI~1.18\bin\zip.dll
0x6D020000 - 0x6D12B000 C:\Program Files\Oracle\JInitiator 1.3.1.18\bin\awt.dll
0x73000000 - 0x73023000 C:\WINNT\System32\WINSPOOL.DRV
0x6D1E0000 - 0x6D21C000 C:\Program Files\Oracle\JInitiator 1.3.1.18\bin\fontmanager.dll
0x5ED00000 - 0x5EDC6000 C:\WINNT\System32\OPENGL32.dll
0x68B20000 - 0x68B3E000 C:\WINNT\System32\GLU32.dll
0x73760000 - 0x737A4000 C:\WINNT\System32\DDRAW.dll
0x73BC0000 - 0x73BC6000 C:\WINNT\System32\DCIMAN32.dll
0x0DD70000 - 0x0DFA2000 C:\WINNT\System32\ialmgicd.dll
0x0DFB0000 - 0x0E02B000 C:\WINNT\System32\ialmgdev.dll
0x6D340000 - 0x6D348000 C:\Program Files\Oracle\JInitiator 1.3.1.18\bin\net.dll
0x0FFA0000 - 0x0FFC1000 C:\WINNT\System32\dssenh.dll
0x6D370000 - 0x6D37A000 C:\Program Files\Oracle\JInitiator 1.3.1.18\bin\packager.dll
0x0E860000 - 0x0E870000 C:\Program Files\Oracle\JInitiator 1.3.1.18\bin\JNIsharedstubs.dll
0x76BF0000 - 0x76BFB000 C:\WINNT\System32\PSAPI.DLL
Local Time = Tue Aug 29 08:53:29 2006
Elapsed Time = 4
# The exception above was detected in native code outside the VM
# Java VM: Java HotSpot(TM) Client VM (1.3.1_04-b02 mixed mode)
# -
WebUtil_c_api and Windows
Is it possible to show a window in the client machine using webutil_c_api? I need to show a window with a list of certificates and I´m not sure if it is possible.
It's possible to do pretty much anything, but the chances are you'll have to write some C code for the client to use to display the window you need.
-
WEBUTIL_C_API: Writing wrapper DLL's to address calling convention issues
I am interested in calling the Windows API using WEBUTIL_C_API. In particularly, I am interested in calling FindWindow to obtain window handles. I registered the function as required, but have yet to get a meaningful result. Upon researching Metalink a bit, I encountered a post stating that FindWindow uses Pascal calling conventions, while WEBUTIL_C_API expects C calling conventions. The suggested solution is to wrap the API call in my own DLL, which adapts between the two calling conventions.
I'm fairly adept at writing standard C code, albeit out of practice, and with a bit of Googling, I have even managed to compile a DLL using GNU gcc. Alas, I evidently don't understand all the compiler directives required to write the wrapper DLL that I have described. Has anyone else managed a similar task, who might share an example or direct me to some helpful documentation?
Thanks,
Eric Adamson
Lansing, MichiganMr. Ronald,
Thank you for your assistance. After going through the webutil log file and the WebUtil Familiarization Manual a few more times, and lastly, metalink, it was stated in a metalink post that the "Cause for the Error WUC-20 can be that the webutil.cfg file has an invalid virtual directory: install.syslib.location".
According the WebUtil Familiarization Manual (p.11 of 49), install.syslib.location=/webutil. I did just that, and the log file indicated that
xxx.xxx.xxx.xxx:xxxxxxx: 2004-Jan-22 11:32:53.746 WUI[setProperty()] Setting property WUC_GET_LOCAL_PROPERTY to syslib.ffisamp.dll
xxx.xxx.xxx.xxx:xxxxxxx: 2004-Jan-22 11:32:53.761 WUI[getProperty()] Getting property WUC_GET_LOCAL_PROPERTY
xxx.xxx.xxx.xxx:xxxxxxx: 2004-Jan-22 11:32:53.761 WUI[loadSettings()] No local properties file to load
xxx.xxx.xxx.xxx:xxxxxxx: 2004-Jan-22 11:32:53.761 WUI[getProperty()] Value of WUC_GET_LOCAL_PROPERTY=null
xxx.xxx.xxx.xxx:xxxxxxx: 2004-Jan-22 11:32:53.777 WUI[setProperty()] Setting property WUC_URL_DOWNLOAD to 1|40960|Y|/webutil/ffisamp.dll|ffisamp.dll|WebUtil Install|Downloading required libraries; Please wait...|ffisamp.dll
xxx.xxx.xxx.xxx:xxxxxxx: 2004-Jan-22 11:32:53.777 WUI[getProperty()] Getting property WUC_URL_DOWNLOAD
xxx.xxx.xxx.xxx:xxxxxxx: 2004-Jan-22 11:32:53.777 WUI[downloadFromURL()] Source is http://<machine_name:port>/forms90/f90servlet/webutil/ffisamp.dll
So I tried the absolute URL, http://<machine_name:port>/forms90/webutil, Voila! It worked. The point is somehow, the download url should not include .../f90servlet/...; just plain /forms90/webutil.
Thank you for your time and assistance.
Regards,
thomas -
WEBUTIL_C_API Documentation ?
Hi People !!
Does anybody knows where i can find WEBUTIL_C_API documentantion ?
I would like to know all available functions WEBUTIL_C_API offers.
Thanks
MarceloIf you're not specifying a path in your ORA_FFI call then the library is presumably somewhere in the PC's PATH. WebUtil can cope with that.
Cheers, APC -
WEBUTIL_C_API Demo Form
A number of people have asked me about WEBUTIL_C_API, and I have offered to contribute a simple form that demonstrates how one can use this built-in to access the Windows API.
I have prepared a reasonably simple and straight-forward example, but I am still writing up instructions. I expect to have the demo completed this weekend -- I will post a URL for downloading it, at that time. Please follow this thread for further information.
Thanks,
Eric Adamson
Lansing, MichiganFrancois,
I've placed an updated version of apiwrap.dll & apiwrap.pll at the following URL:
http://www.ericadamson.com/code_samples/oracle_forms/apiwrap.zip
The PLL was created using 10.1.2.0.2 -- users with previous versions will probably need to build apiwrap.pll for themselves. For portability, I've also included the APIWRAP package spec & body as simple text files. Note that apiwrap.pll requires webutil.pll -- don't forget to attach it before compiling!
To save time, this version comes undocumented, but I'm sure you will have no problem figuring everything out! :) For others interested in experimenting with this code, please:
1. Be certain that WebUtil is installed on your app server or OC4J, and functioning correctly
2. Know how to build a WebUtil-enabled form.
3. Know how to compile apiwrap.pll (web forms require PLX's!)
4. Understand how WebUtil copies native DLL's to the client (read <forms_home>\forms\server\webutil.cfg for details)
5. Study the APIWRAP package spec for usage information and helpful constants
6. Refer to the Windows SDK documentation for information on the underlying API calls, FindWindow, ShowWindow, SetWindowText & SetWindowPos. For those who lack Windows SDK documentation, visit http://msdn.microsoft.com and search for the desired function by name, either from the main page, or from the MSDN Library.
Thanks,
Eric Adamson
Lansing, Michigan -
WEBUTIL_C_API.REBIND_PARAMETER not working
Dear All,
I am using 11g forms Version 11.1.1.2.0, and facing the problem
oracle.forms.webutil.cApi.CApiFunctions bean not found.
WEBUTIL_C_API.REBIND_PARAMETER will not work
when i acknowldege OK butten then follwoing alert is populate
Internal Error: PL/SQL error occurred.
can any one help me out to resolve the problem.
Thanx in advance.
SohailHi.
Take a look at: http://www.orafaq.com/forum/t/74615/2/
and
oracle.forms.webutil.CApiFunctions bean not found.
Maybe you are looking for
-
Downloaded update toi mFirewfox 4. ISP is Talktalk. Can open My mail and get to screen with inbox but page seems to stopp loading then as it doesa not show amount of space being used etc which it normally does. Instead message says 'You have undefine
-
I can't use my AppleID for the update of my apps.
I'm stuck with a friend's ID. I can't even update apps that I've purchased with mine.
-
Who has a MacBook Air from Refurbished products source? Good or Bad?
What has been your experience? Is there anything I need to be aware of if I order a refurbished MacBook Air. My experience with other refurbished Apple products has been 100% satisfaction.
-
PLEASE HELP?? java.lang.OutOfMemoryError: PermGen space
I've been searching the net for days and have tried changing the eclipse.ini per everyone's instructions...but still keep crashing after small changes. java.lang.OutOfMemoryError: PermGen space -startup plugins/org.eclipse.equinox.launcher_1.1.1.R36x
-
Since the 1.1.3 update, I have been having a problem with the map feature. Whenever I attempted to zoom in on anything, rather than updating the map and zooming, it would do nothing more than tile a tiny section of the map. The 1.1.4 update seems to