38.5.3.2 VB .NET 2003 Program Example - Sample to retrieve the WinGP status and change its settings (Handling API)

Sample program location: (in GP-Pro EX DVD-ROM) \WinGP\SDK\Pro-SDK\DotNet\RtCtrlSmpl

' Imports System.Runtime.InteropServices.
Imports System.Runtime.InteropServices

Public Class Form1
Inherits System.Windows.Forms.Form

Dim ghWinGP As Int32 = 0 ' API handle.

#Region " Code generated with Windows form designer"

Public Sub New()
MyBase.New()

' This call is necessary for Windows form designer.
InitializeComponent()

' Initialize API.
' After calling InitializeComponent(), runs initialization.
Dim nResult As Integer = InitRuntimeAPI()

' Gets the handle at this stage (API).
ghWinGP = GetRuntimeHandle(9800)
If ghWinGP = 0 Then
MsgBox("(API) Failed to get handle")
End If

End Sub

' Form overwrites the dispose to execute post processing on the component list.
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing Then
If Not (components Is Nothing) Then
components.Dispose()
End If
End If
CleanupRuntimeAPI()
MyBase.Dispose(disposing)
End Sub

-Snip (Codes designed by Windows form designer are omitted hereafter)-
#End Region
' 5 Gets the startup state.
Private Sub Bt_GetStartState_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles Bt_GetStartState.Click

Me.Cursor = Cursors.WaitCursor ' Changes the cursor to an hourglass.

Try

' Get the state (API).
Dim Status As Int32
Dim RetVal As Int32 = GetRuntimeStartState(ghWinGP, Status)

' Any errors?
If RetVal <> API_ERROR.E_SUCCESS Then
MsgBox("Err(" + Str(RetVal).Trim() + "):GetRuntimeStartState()")
End If

' Display status.
Select Case Status
Case 0
Me.StartState.Text = "Starting"
Case 1
Me.StartState.Text = "Online"
Case 2
Me.StartState.Text = "Offline Mode"
Case 3
Me.StartState.Text = "Transfer Mode"
Case 4
Me.StartState.Text = "Exiting"
Case 5
Me.StartState.Text = "Not executing"
End Select

Catch ex As Exception

MsgBox(ex.Message)

End Try

Me.Cursor = Cursors.Default ' Return cursor to original.

End Sub

Private Sub GetScreenState_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles BT_GetScreenState.Click

Me.Cursor = Cursors.WaitCursor ' Changes the cursor to an hourglass.

Try

' Get status.
Dim Status As Int32
Dim RetVal As Int32 = GetScreenState(ghWinGP, Status)

' Any problems?
If RetVal <> API_ERROR.E_SUCCESS Then
MsgBox("Err(" + Str(RetVal).Trim() + "):GetScreenState()")
End If

' Display status.
Select Case Status
Case 0, 1, 2
Me.ScreenState.SelectedIndex = Status
End Select

Catch ex As Exception

MsgBox(ex.Message)

End Try

Me.Cursor = Cursors.Default ' Return cursor to original.

End Sub

Private Sub SetScreenState_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles BT_SetScreenState. Click

Me.Cursor = Cursors.WaitCursor ' Change cursor to hourglass.

Try

' Get the value.
Dim State As Int32 = Me.ScreenState.SelectedIndex
Dim PosX As Int32 = Val(Me.PosX.Text)
Dim PosY As Int32 = Val(Me.PosY.Text)
Dim Width As Int32 = Val(Me.TX_Width.Text)
Dim Height As Int32 = Val(Me.TX_Height.Text)

' Setup screen state.
Dim RetVal As Int32 = SetScreenState(ghWinGP, State, PosX, PosY, Width, Height)

' Any problems?
If RetVal <> API_ERROR.E_SUCCESS Then
MsgBox("Err(" + Str(RetVal).Trim() + "):SetScreenState()")
End If

Catch ex As Exception

MsgBox(ex.Message)

End Try

Me.Cursor = Cursors.Default ' Return cursor to original.

End Sub

Private Sub GetDispScreen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles GetDispScreen.Click

Me.Cursor = Cursors.WaitCursor ' Change cursor to hourglass.

Dim CurScrNo As Int32 ' Current screen number.

Try

' Get status.
Dim RetVal As Int32 = GetDisplayScreenNumber(ghWinGP, CurScrNo)

' Any problems?
If RetVal <> API_ERROR.E_SUCCESS Then
MsgBox("Err(" + Str(RetVal).Trim() + "):GetDisplayScreenNumber()")
End If

Catch ex As Exception

MsgBox(ex.Message)

End Try

Try

' Get number of screens.
Dim ScreenCount As Int32 = 0
Dim RetVal As Int32 = GetEnumScreenNumberCount(ghWinGP, ScreenCount)

' Any problems?
If RetVal <> API_ERROR.E_SUCCESS Then
MsgBox("Err(" + Str(RetVal).Trim() + "):GetEnumScreenNumberCount()")
End If

' Get screen number.
If ScreenCount > 0 Then

' Get screen number.
Dim ScreenNumber(ScreenCount - 1) As Int32
RetVal = EnumScreenNumber(ghWinGP, ScreenCount, ScreenNumber(0))

' Any problems?
If RetVal <> API_ERROR.E_SUCCESS Then
MsgBox("Err(" + Str(RetVal).Trim() + "):EnumScreenNumber()")
End If

' ----- Display Status -----

' Delete all.
Me.CB_DispScreen.Items.Clear()

' Set the screen number you got.
Dim idx As Int32
For idx = 0 To ScreenNumber.Length - 1
Me.CB_DispScreen.Items. Add(ScreenNumber(idx))
Next

' Display current screen number.
For idx = 0 To ScreenNumber.Length - 1
If CurScrNo = Val(Me.CB_DispScreen.Items(idx)) Then
Me.CB_DispScreen.SelectedIndex = idx
Exit For
End If
Next

End If

Catch ex As Exception

MsgBox(ex.Message)

End Try

Me.Cursor = Cursors.Default ' Return cursor to original.

End Sub

Private Sub SetDispScreen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles SetDispScreen. Click

Me.Cursor = Cursors.WaitCursor ' Change cursor to hourglass.

Try

' Get screen number.
Dim Screen As Int32
Screen = Val(Me.CB_DispScreen.Text)

' Change screen number.
Dim RetVal As Int32 = SetDisplayScreenNumber(ghWinGP, Screen)

' Any problems?
If RetVal <> API_ERROR.E_SUCCESS Then
MsgBox("Err(" + Str(RetVal).Trim() + "):SetDisplayScreenNumber()")
End If

' Gets the screen number again and compare it with the set value to see whether the screen number has been changed successfully.
Dim NowScrNo As Long
RetVal = GetDisplayScreenNumber(ghWinGP, NowScrNo)
If RetVal = API_ERROR.E_SUCCESS Then
If NowScrNo = Screen Then
'MsgBox("Screen Change Successful No=" + Str(NowScrNo))
End If
End If

Catch ex As Exception

MsgBox(ex.Message)

End Try

Me.Cursor = Cursors.Default ' Return cursor to original.

End Sub

Private Sub GetProjectInfo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles GetProjectInfo. Click

Me.Cursor = Cursors.WaitCursor ' Change cursor to hourglass.

Try

' Parameter range to get.
Dim ProjectFileName As New System.Text.StringBuilder(PROJECTINFO_SIZE.e_FileName)
Dim ProjectComment As New System.Text.StringBuilder(PROJECTINFO_SIZE.e_Comment)
Dim ProjectFastTime As New System.Text.StringBuilder(PROJECTINFO_SIZE.e_FastTime)
Dim ProjectLastTime As New System.Text.StringBuilder(PROJECTINFO_SIZE.e_LastTime)
Dim ProjectIDownload As New System.Text.StringBuilder(PROJECTINFO_SIZE.e_IDownload)
Dim HMIEditorVersion As New
System.Text.StringBuilder(PROJECTINFO_SIZE.e_HMIEditorVersion)
Dim ControlEditorVersion As New
System.Text.StringBuilder(PROJECTINFO_SIZE.e_ControlEditorVersion)
Dim MakingPerson As New System.Text.StringBuilder(PROJECTINFO_SIZE.e_MakingPerson)

' Get project information.
Dim RetVal As Int32
RetVal = GetProjctInformation(ghWinGP, _
ProjectFileName, _
ProjectComment, _
ProjectFastTime, _
ProjectLastTime, _
ProjectIDownload, _
HMIEditorVersion, _
ControlEditorVersion, _
MakingPerson)

' Any problems?
If RetVal <> API_ERROR.E_SUCCESS Then
MsgBox("Err(" + Str(RetVal).Trim() + "):GetProjctInformation()")
End If

' Display the information you got.
Me.Prj_File.Text = ProjectFileName.ToString()
Me.Prj_Comment.Text = ProjectComment.ToString()
Me.Prj_Date.Text = ProjectFastTime.ToString()
Me.Prj_LastDate.Text = ProjectLastTime.ToString()
Me.Prj_HMI.Text = HMIEditorVersion.ToString()
Me.Prj_Person.Text = MakingPerson.ToString

Catch ex As Exception

MsgBox(ex.Message)

End Try

Me.Cursor = Cursors.Default ' Return cursor to original.

End Sub

' 13 End operation.
' Exit using confirm dialog box.
' WinGP does not end if you select "Do Not Exit" in the dialog box.
' Even then the return value is API_ERROR.E_SUCCESS.

Private Sub StopWinGP_Q_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles StopWinGP_Q.Click

Me.Cursor = Cursors.WaitCursor ' Change cursor to hourglass

Try

' Exit operation (API).
Dim RetVal As Int32 = StopRuntime(ghWinGP, 1)

' Any problems?
If RetVal <> API_ERROR.E_SUCCESS Then
MsgBox("Err(" + Str(RetVal).Trim() + "):StopRuntime()")
End If

Catch ex As Exception

MsgBox(ex.Message)

End Try

Me.Cursor = Cursors.Default ' Return cursor to original.

End Sub

End Class