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