# ScriptGetFBlockStatus Method - neoVI API

This method returns the run status of a specified function block within a script on a neoVI device.

{% tabs %}
{% tab title="C/C++ Declare" %}

```cpp
int _stdcall icsneoScriptGetFBlockStatus(void * hObject, unsigned int iFunctionBlockIndex, int *piStatus);
```

{% endtab %}

{% tab title="Visual Basic .NET Declare" %}

```vbnet
Public Declare Function icsneoScriptGetFBlockStatus Lib “icsneo40.dll” (ByVal hObject As IntPtr, ByVal fb_index As UInt32, ByRef piRunStatus As Int32) As Int32
```

{% endtab %}

{% tab title="C# Declare" %}

```csharp
[DllImport(“icsneo40.dll”)] public static extern Int32 icsneoScriptGetFBlockStatus(IntPtr hObject, UInt32 fb_index, ref Int32 piRunStatus);
```

{% endtab %}
{% endtabs %}

**Parameters**

hObject

\[in] Specifies the driver object created by [OpenNeoDevice](https://docs.intrepidcs.com/neovi-api/win32-api-overview-intrepidcs-api/basic-functions-overview-intrepidcs-api/openneodevice-method-intrepidcs-api).

iFunctionBlockIndex

\[in] The index value of the function block to start

piStatus

\[out] 0 = stopped 1 = running

**Return Values**

1 if the function succeeded. 0 if it failed for any reason. [GetLastAPIError](https://docs.intrepidcs.com/neovi-api/win32-api-overview-intrepidcs-api/error-functions-overview-intrepidcs-api/getlastapierror-method-intrepidcs-api) must be called to obtain the specific error. The errors that can be generated by this function are:

NEOVI\_ERROR\_DLL\_NEOVI\_NO\_RESPONSE = 75

NEOVI\_ERROR\_DLL\_SCRIPT\_INVALID\_FUNCBLOCK\_INDEX = 219

NEOVI\_ERROR\_DLL\_SCRIPT\_NO\_SCRIPT\_RUNNING = 226

**Remarks**

The script containing the specified function block must have been successfully downloaded to the neoVI using [ScriptLoadScript](https://docs.intrepidcs.com/neovi-api/win32-api-overview-intrepidcs-api/deprecated-functions-overview-intrepidcs-api/coremini-script-interface-overview-intrepidcs-api/scriptload-method-intrepidcs-api). Execution of the script must have been started by using [ScriptStartScript](https://docs.intrepidcs.com/neovi-api/win32-api-overview-intrepidcs-api/deprecated-functions-overview-intrepidcs-api/coremini-script-interface-overview-intrepidcs-api/scriptstart-method-intrepidcs-api). The valid index values for function blocks within a script can be found in the <mark style="color:orange;">cmvspy.vs3cmb.h</mark> file (Produced by Vehicle Spy. Please see Vehicle Spy documentation).

### Examples

{% tabs %}
{% tab title="C/C++ Example:" %}

```cpp
int iRetVal;
int iRunStatus;
unsigned long lLastErrNum;

iRetVal = icsneoScriptGetFBlockStatus(hObject, Function_Block_1, &iRunStatus);
if(iRetVal == 0)
{
    printf("\nFailed to check function block status);
}
else
{
    printf("\nFunction block status = %s\r\n", iRunStatus == 0 ? "Stopped" : "Running");
}
```

{% endtab %}

{% tab title="C# Example:" %}

```csharp
Int32 iResult;
Int32 iStatus=0;

//Get Status of Function Block in CoreMini
iResult = icsNeoDll.icsneoScriptGetFBlockStatus(m_hObject, Convert.ToUInt32(cboFBToChange.SelectedIndex), ref iStatus);

if(iResult == 0)
{
    lblFBStatus.Text = "Failed to get CoreMini Status";
}
else
{
    switch(iStatus)
    {
        case (int)ScriptStates.SCRIPT_STATUS_RUNNING:
            lblFBStatus.Text = "CoreMini Function Block Running";
            break;
        case (int)ScriptStates.SCRIPT_STATUS_STOPPED:
            lblFBStatus.Text = "CoreMini Function Block Stopped";
            break;
        default:
            lblFBStatus.Text = "Unhandled State";
            break;
    }
}
```

{% endtab %}

{% tab title="Visual Basic .NET Example:" %}

```vbnet
Dim iResult As Int32
Dim iStatus As Int32

'//Get Status of Function Block in CoreMini
iResult = icsneoScriptGetFBlockStatus(m_hObject, Convert.ToUInt32(cboFBToChange.SelectedIndex), iStatus)

If iResult = 0 Then
    lblFBStatus.Text = "Failed to get CoreMini Status"
Else
    Select Case iStatus
        Case SCRIPT_STATUS_RUNNING
            lblFBStatus.Text = "CoreMini Function Block Running"
        Case SCRIPT_STATUS_STOPPED
            lblFBStatus.Text = "CoreMini Function Block Stopped"
        Case Else
            lblFBStatus.Text = "Unhandled State"
    End Select
End If
```

{% endtab %}
{% endtabs %}
