SkFuncs

SkFuncs is a free Omnis xComp available for Windows only. It encapsulates some Windows functions which usually are only available by using the the Windows API and so are hard or even impossible to integrate into Omnis, depending on the complexity of the in/out parameters.

So, if it comes to C++ like structures and typedefs, those functions cannot be used with Omnis‘ built-in Register DDL/Call DLL functions. Also, if a function works with callbacks and you have to pass the memory address of the callback function, Omnis Studio cannot handle this.

SkFuncs is a wrapper for some of those functions and works with Omnis Studio unicode versions up from 4.x to 6.x and higher. It is available as 32-and 64-bit version (for Studio Unicode 5.x /6.x and above). The ZIP archive contains the 32- and 64-bit version.

Custom xComp & External Development.

Please look at SkFuncs as a proof of concept. If you need some particular funtion to be integrated into Omnis Studio, feel free to ask, an we’ll will give you a detailed proposal for implementing this function in a custom made xComp.

Functions in detail

skfuncs_1All functions of skfuncs.dll can be found in the Omnis Studio Catalog (F9) in the functions tab. SkFuncs is listed in the left pane, the particular functions can be seen in the right pane.

1. DecToHex Converts a given integer value into a hexadecimal number.
Syntax: DecToHex (i_iDecVal,l_cHexStr) Returns lRet i_iDecVal: Long integer, value to be converted to hex l_cHexStr: Character, return value in hexadecimal characters lRet: Return value, ktrue if function successful, otherwise zero.

2. GetOSVersion(cString)
Returns the correct OS Version string under windows. This is important especially for Windows 8 and up, since Microsoft changed the behaviour of the standard getversion() API funktion (More…)

With the release of Windows 8.1, the behavior of the GetVersion API has changed in the value it will return for the operating system version. The value returned by the GetVersion function now depends on how the application is manifested.

Applications not manifested for Windows 8.1 or Windows 10 will return the Windows 8 OS version value (6.2). Once an application is manifested for a given operating system version, GetVersion will always return the version that the application is manifested for in future releases. To manifest your applications for Windows 8.1 or Windows 10, refer to Targeting your application for Windows.

Since Omnis Studio up to 6.1.x doesn’t have the neccessary entries in it’s manifest, it will always return 6.2. The function in skfuncs.dll will overcome this limitation and give you the correct version string, i.e „6.3“ for Windows 8.1 or „10“ for Windows 10.

3. HexToDec
Converts a given hexadecimal value into an integer.
Syntax: HexToDec (i_HexVal) Returns lRet i_HexVal: Character, hex value to be converted to integer lRet: Return integer value if function successful, otherwise zero.
4. GetProcessList

Returns a list of all processes running under Windows with their process name and process IDs. Though Omnis has a Register DLL/Call DLL command, this API function is more or less impossible to call from Omnis, because its one of the C-centric API-funtions with has a callback interface and returns a C-specific data structure. Syntax: GetProcessList (iProcList) Returns lRet iProcList: An Omnis list which has to be defined before calling the function: lRet: Short integer, kTrue is the function succeeds, kFalse if not. Do iProcList.$define(lProcNum,lProcName) lProcNum: Long integer lProcname: Character [100]

4. GetServiceList(list)
Returns a list of all services running under Windows NT/XP/2000/2003 with their service name and service state.
Syntax: GetProcessList (iServiceList) Returns lRet iServiceList: An Omnis list which has to be defined before calling the function: lRet: Short integer, kTrue is the function succeeds, kFalse if not. Do iServiceList.$define(lServiceName,lServiceState) lServiceName: Character [100] lServiceState: Long integer The list column lServiceState may have the following values (like defined in the MS Platform SDK):
  • 1 SERVICE STOPPED
  • 2 SERVICE_START_PENDING
  • 3 SERVICE_STOP_PENDING
  • 4 SERVICE_RUNNING
  • 5 SERVICE_CONTINUE_PENDING
  • 6 SERVICE_PAUSE_PENDING
  • 7 SERVICE_PAUSED

The list passed as parameter doesn’t have to be defined, it will be done inside the function.

Querying services on remote machines is available in skFuncs Pro (soon to come).

5. GetProcessList(list, [bgetModules, bGetThreads])
getproclist Returns a list of processes running on the current machine. To retrieve a correct list of all processes (under Windows Vista and higher, i.e. all Windows versions with UAC built in) Omnis should be run with elevated user rights („Run as Administrator“).

There are two optional boolean parameters of GetProccessList:
If bGetModules is set to kTrue, all modules including their image path etc. will be returned.
If bGetThreads is set to kTrue, information about the process threads is retrieved.

The list passed as parameter doesn’t have to be defined, it will be done inside the function.

Querying processes on remote machines is available in skFuncs Pro (soon to come).

Installation
Copy skfuncs.dll into the xComp folder within the Omnis application folder.

Download SkFuncs
The download of skfuncs.zip is free. The download file contains the DLLs for 32 and 64 bit and a Omnis Studio demonstration library.
The ZIP file ist password protected.
After clicking on the „Start download“ button, an E-mail will be sent to the E-Mail address specified in the form below immediately after downloading.

If sending the E-mail was successful, a download link will appear below the form.

    Your name (Required)

    E-Mail address (Required)

    [wpgdprc "By using this form you agree to storing and handling your data by this web site."]

    If you download skfuncs.dll you agree to the following:
    We do not take any responsibilities for the damages (including data damages, interruption of business, loss of business information) which may occur due to using this software, or as a result of being unable to use it. Moreover, when we are informed in advance of any possibility that the damages occur or compensation requests from a third party are made, we will not take any responsibilities.