mirror of
https://github.com/mRemoteNG/mRemoteNG.git
synced 2026-02-17 22:11:48 +08:00
* removed unneeded Imports * renamed namespace to mRemoteNG * changed Logfile path to %USERPROFILE%\AppData\Local\mRemoteNG\mRemoteNG.log * fixed mRemoteNG.exe.config * added more ignores to .gitignore
213 lines
7.4 KiB
VB.net
213 lines
7.4 KiB
VB.net
Imports mRemoteNG.App.Runtime
|
|
Imports System.IO
|
|
Imports System.ComponentModel
|
|
|
|
Namespace Tools
|
|
Public Class ExternalApp
|
|
#Region "Properties"
|
|
Private _DisplayName As String
|
|
Public Property DisplayName() As String
|
|
Get
|
|
Return _DisplayName
|
|
End Get
|
|
Set(ByVal value As String)
|
|
_DisplayName = value
|
|
End Set
|
|
End Property
|
|
|
|
Private _FileName As String
|
|
Public Property FileName() As String
|
|
Get
|
|
Return _FileName
|
|
End Get
|
|
Set(ByVal value As String)
|
|
_FileName = value
|
|
End Set
|
|
End Property
|
|
|
|
Private _WaitForExit As Boolean
|
|
Public Property WaitForExit() As Boolean
|
|
Get
|
|
Return _WaitForExit
|
|
End Get
|
|
Set(ByVal value As Boolean)
|
|
_WaitForExit = value
|
|
End Set
|
|
End Property
|
|
|
|
Private _Arguments As String
|
|
Public Property Arguments() As String
|
|
Get
|
|
Return _Arguments
|
|
End Get
|
|
Set(ByVal value As String)
|
|
_Arguments = value
|
|
End Set
|
|
End Property
|
|
|
|
Private _TryIntegrate As Boolean
|
|
Public Property TryIntegrate() As Boolean
|
|
Get
|
|
Return _TryIntegrate
|
|
End Get
|
|
Set(ByVal value As Boolean)
|
|
_TryIntegrate = value
|
|
End Set
|
|
End Property
|
|
|
|
|
|
|
|
Private _ConnectionInfo As Connection.Info
|
|
Public Property ConnectionInfo() As Connection.Info
|
|
Get
|
|
Return _ConnectionInfo
|
|
End Get
|
|
Set(ByVal value As Connection.Info)
|
|
_ConnectionInfo = value
|
|
End Set
|
|
End Property
|
|
|
|
Public ReadOnly Property Icon() As Icon
|
|
Get
|
|
If File.Exists(Me._FileName) Then
|
|
Return Tools.Misc.GetIconFromFile(Me._FileName)
|
|
Else
|
|
Return Nothing
|
|
End If
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property Image() As Image
|
|
Get
|
|
Dim iC As Icon = Me.Icon
|
|
If iC IsNot Nothing Then
|
|
Return iC.ToBitmap
|
|
Else
|
|
Return Nothing
|
|
End If
|
|
End Get
|
|
End Property
|
|
#End Region
|
|
|
|
Public Sub New()
|
|
Me.New("")
|
|
End Sub
|
|
|
|
Public Sub New(ByVal DisplayName As String)
|
|
Me.New(DisplayName, "", "")
|
|
End Sub
|
|
|
|
Public Sub New(ByVal DisplayName As String, ByVal Filename As String, ByVal Arguments As String)
|
|
_DisplayName = DisplayName
|
|
_FileName = Filename
|
|
_Arguments = Arguments
|
|
End Sub
|
|
|
|
|
|
Public Function Start(Optional ByVal ConnectionInfo As Connection.Info = Nothing) As Process
|
|
Try
|
|
If _TryIntegrate = True Then
|
|
StartIntApp(ConnectionInfo)
|
|
Return Nothing
|
|
End If
|
|
|
|
If _FileName = "" Then
|
|
Throw New Exception("No Filename specified!")
|
|
Return Nothing
|
|
End If
|
|
|
|
_ConnectionInfo = ConnectionInfo
|
|
|
|
Dim p As New Process()
|
|
Dim pI As New ProcessStartInfo()
|
|
|
|
pI.FileName = ParseText(_FileName)
|
|
pI.Arguments = ParseText(_Arguments)
|
|
|
|
p.StartInfo = pI
|
|
|
|
p.Start()
|
|
|
|
If _WaitForExit Then
|
|
p.WaitForExit()
|
|
End If
|
|
|
|
Return p
|
|
Catch ex As Exception
|
|
mC.AddMessage(Messages.MessageClass.ErrorMsg, "Couldn't start external application." & vbNewLine & ex.Message)
|
|
Return Nothing
|
|
End Try
|
|
End Function
|
|
|
|
Public Sub StartIntApp(Optional ByVal ConnectionInfo As Connection.Info = Nothing)
|
|
Try
|
|
If _FileName = "" Then
|
|
Throw New Exception("No Filename specified!")
|
|
Exit Sub
|
|
End If
|
|
|
|
_ConnectionInfo = ConnectionInfo
|
|
|
|
Dim nCI As New Connection.Info
|
|
nCI.Protocol = Connection.Protocol.Protocols.IntApp
|
|
nCI.ExtApp = Me.DisplayName
|
|
nCI.Name = Me.DisplayName
|
|
nCI.Panel = "Int. Apps"
|
|
|
|
OpenConnection(nCI)
|
|
Catch ex As Exception
|
|
|
|
End Try
|
|
End Sub
|
|
|
|
Public Function ParseText(ByVal Text As String) As String
|
|
Dim pText As String = Text
|
|
|
|
Try
|
|
If _ConnectionInfo IsNot Nothing Then
|
|
pText = Replace(pText, "%Name%", _ConnectionInfo.Name, , , CompareMethod.Text)
|
|
pText = Replace(pText, "%HostName%", _ConnectionInfo.Hostname, , , CompareMethod.Text)
|
|
pText = Replace(pText, "%Port%", _ConnectionInfo.Port, , , CompareMethod.Text)
|
|
pText = Replace(pText, "%UserName%", _ConnectionInfo.Username, , , CompareMethod.Text)
|
|
pText = Replace(pText, "%Password%", _ConnectionInfo.Password, , , CompareMethod.Text)
|
|
pText = Replace(pText, "%Domain%", _ConnectionInfo.Domain, , , CompareMethod.Text)
|
|
pText = Replace(pText, "%Description%", _ConnectionInfo.Description, , , CompareMethod.Text)
|
|
pText = Replace(pText, "%MacAddress%", _ConnectionInfo.MacAddress, , , CompareMethod.Text)
|
|
pText = Replace(pText, "%UserField%", _ConnectionInfo.UserField, , , CompareMethod.Text)
|
|
Else
|
|
pText = Replace(pText, "%Name%", "", , , CompareMethod.Text)
|
|
pText = Replace(pText, "%HostName%", "", , , CompareMethod.Text)
|
|
pText = Replace(pText, "%Port%", "", , , CompareMethod.Text)
|
|
pText = Replace(pText, "%UserName%", "", , , CompareMethod.Text)
|
|
pText = Replace(pText, "%Password%", "", , , CompareMethod.Text)
|
|
pText = Replace(pText, "%Domain%", "", , , CompareMethod.Text)
|
|
pText = Replace(pText, "%Description%", "", , , CompareMethod.Text)
|
|
pText = Replace(pText, "%MacAddress%", "", , , CompareMethod.Text)
|
|
pText = Replace(pText, "%UserField%", "", , , CompareMethod.Text)
|
|
End If
|
|
Catch ex As Exception
|
|
mC.AddMessage(Messages.MessageClass.WarningMsg, "ParseText failed (Tools.ExternalApp)" & vbNewLine & ex.Message, True)
|
|
End Try
|
|
|
|
Return pText
|
|
End Function
|
|
End Class
|
|
|
|
Public Class ExternalAppsTypeConverter
|
|
Inherits StringConverter
|
|
|
|
Public Shared ExternalApps As String() = New String() {}
|
|
|
|
Public Overloads Overrides Function GetStandardValues(ByVal context As System.ComponentModel.ITypeDescriptorContext) As System.ComponentModel.TypeConverter.StandardValuesCollection
|
|
Return New StandardValuesCollection(ExternalApps)
|
|
End Function
|
|
|
|
Public Overloads Overrides Function GetStandardValuesExclusive(ByVal context As System.ComponentModel.ITypeDescriptorContext) As Boolean
|
|
Return True
|
|
End Function
|
|
|
|
Public Overloads Overrides Function GetStandardValuesSupported(ByVal context As ITypeDescriptorContext) As Boolean
|
|
Return True
|
|
End Function
|
|
End Class
|
|
End Namespace |