Skip to Main Content

Oracle Forms

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Calling Windows API with Parameters from Oracle Forms 9i

822710Jun 19 2011 — edited Jun 21 2011
This code to LockWorkStation works:
http://msdn.microsoft.com/en-us/library/aa376875(v=vs.85).aspx

FUNCTION LockWorkStation return PLS_INTEGER is
rc pls_integer;
f_handle WEBUTIL_C_API.FUNCTIONHANDLE;
args Webutil_c_api.parameterlist;
winSysDir varchar2(255) := Client_Win_API_ENVIRONMENT.Get_Windows_Directory || '\system32\';
begin
f_handle := WEBUTIL_C_API.register_function(winSysDir||'user32.dll','LockWorkStation');
args := WEBUTIL_C_API.create_parameter_list;
rc := WEBUTIL_C_API.Invoke_Int(winSysDir||'user32.dll','LockWorkStation',args);
WEBUTIL_C_API.Destroy_Parameter_List(args);
WEBUTIL_C_API.Deregister_Function(f_handle);
SYNCHRONIZE;
return rc;
end LockWorkStation;

This code to GetAsyncKeyState doesn't:
http://msdn.microsoft.com/en-us/library/ms646293(v=vs.85).aspx
FUNCTION GetAsyncKeyState (vKey PLS_INTEGER) RETURN BOOLEAN IS
Result PLS_INTEGER;
FunctionHandle WEBUTIL_C_API.FUNCTIONHANDLE;
args WEBUTIL_C_API.ParameterList;
param WEBUTIL_C_API.ParameterHandle;
WinSysDir VARCHAR2(255) := Client_Win_API_ENVIRONMENT.Get_Windows_Directory || '\system32\';
lbRet Boolean;
BEGIN
FunctionHandle := WEBUTIL_C_API.Register_Function(WinSysDir||'user32.dll','GetAsyncKeyState');
args := WEBUTIL_C_API.Create_Parameter_List;
param := WEBUTIL_C_API.add_parameter(args, WEBUTIL_C_API.C_int, WEBUTIL_C_API.PARAM_IN, vKey); -- 27=VK_ESCAPE 44=VK_SNAPSHOT
Result := WEBUTIL_C_API.Invoke_Short(WinSysDir||'user32.dll','GetAsyncKeyState', args);
WEBUTIL_C_API.Destroy_Parameter_List(args);
WEBUTIL_C_API.Deregister_Function(FunctionHandle);
SYNCHRONIZE;
MessageBox(to_Char(Result));
Return Result = 0;
END GetAsyncKeyState;

I am able to call Windows apis from forms 9i which do not have parameters.
when called, the function GetAsyncKeyState always returns 0 indicating that the key has not been pressed since the last GetAsyncKeyState call (even if i press it )

Im trying to implement some check interrupt replacement for browser based forms.

I appreciate your replies in advance!

thank you :)
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Jul 19 2011
Added on Jun 19 2011
4 comments
875 views