mirror of
https://github.com/mRemoteNG/mRemoteNG.git
synced 2026-02-17 22:11:48 +08:00
Compare commits
57 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8ddb71758e | ||
|
|
54f19eaeb6 | ||
|
|
960096273b | ||
|
|
b360902bd9 | ||
|
|
8006bb49ca | ||
|
|
ac65468233 | ||
|
|
8992cb29da | ||
|
|
b5f5f43b4c | ||
|
|
8a814d9016 | ||
|
|
4ff4a365e1 | ||
|
|
905b6bb92a | ||
|
|
88d06c8ef2 | ||
|
|
102987dac7 | ||
|
|
54cf76444e | ||
|
|
f595c1d446 | ||
|
|
9cf06c44e8 | ||
|
|
5d63ec6d2a | ||
|
|
0544b61138 | ||
|
|
ceb6f70b4d | ||
|
|
f3075f4c51 | ||
|
|
7b850892ae | ||
|
|
6a3ca9c9de | ||
|
|
d69d948963 | ||
|
|
aa6061d7b6 | ||
|
|
ba667475bf | ||
|
|
5737d78f78 | ||
|
|
079fe000bb | ||
|
|
29865c69ab | ||
|
|
f2e9cce248 | ||
|
|
6a16656f03 | ||
|
|
7f4d3605c0 | ||
|
|
d97ad31cc3 | ||
|
|
a49ebf17bf | ||
|
|
903a9dd5cc | ||
|
|
5d8db1ade6 | ||
|
|
423a89fdaa | ||
|
|
85d78fd4ae | ||
|
|
725269e914 | ||
|
|
9d3beaffbb | ||
|
|
7f36b7926b | ||
|
|
f4bb268e27 | ||
|
|
e1329348d1 | ||
|
|
4f06a48d16 | ||
|
|
1dea64d2eb | ||
|
|
375e737f02 | ||
|
|
1032801f12 | ||
|
|
1002b8d32f | ||
|
|
36a72da71f | ||
|
|
a2b3a815e7 | ||
|
|
7820707e46 | ||
|
|
c3f960cfe8 | ||
|
|
965f43a4c3 | ||
|
|
317175bb03 | ||
|
|
1608d48495 | ||
|
|
08ddee1bda | ||
|
|
72756a2bb8 | ||
|
|
38011a3546 |
48
BUILD.CMD
48
BUILD.CMD
@@ -2,13 +2,13 @@
|
|||||||
|
|
||||||
setlocal enabledelayedexpansion
|
setlocal enabledelayedexpansion
|
||||||
|
|
||||||
set VERSIONTAG=
|
set VERSIONTAG=Beta4
|
||||||
|
|
||||||
set VCVARSALL="%ProgramFiles(x86)%\Microsoft Visual Studio 10.0\VC\vcvarsall.bat"
|
set VCVARSALL="%ProgramFiles(x86)%\Microsoft Visual Studio 10.0\VC\vcvarsall.bat"
|
||||||
set DEVENV="devenv.exe"
|
set DEVENV="devenv.exe"
|
||||||
set MAKENSIS="%ProgramFiles(x86)%\NSIS\Unicode\makensis.exe"
|
set MAKENSIS="%ProgramFiles(x86)%\NSIS\Unicode\makensis.exe"
|
||||||
set RAR="%ProgramFiles%\WinRAR\WinRAR.exe"
|
set RAR="%ProgramFiles%\WinRAR\WinRAR.exe"
|
||||||
set SIGNCMD=signtool.exe sign /n "Next Generation Software" /sha1 "c4ece717747eb7d0cac824f6c7431e5237138b02" /t http://timestamp.verisign.com/scripts/timstamp.dll
|
set SIGNCMD=signtool.exe sign /n "Astrospark Technologies, LLC" /sha1 "1cbd910dbd6e77f26506e7f600736972f700673f" /tr http://timestamp.comodoca.com/rfc3161
|
||||||
|
|
||||||
rem Windows Sysinternals Sigcheck from http://technet.microsoft.com/en-us/sysinternals/bb897441
|
rem Windows Sysinternals Sigcheck from http://technet.microsoft.com/en-us/sysinternals/bb897441
|
||||||
set SIGCHECK="%ProgramFiles(x86)%\Sigcheck\sigcheck.exe"
|
set SIGCHECK="%ProgramFiles(x86)%\Sigcheck\sigcheck.exe"
|
||||||
@@ -25,7 +25,49 @@ echo Building portable version...
|
|||||||
%DEVENV% "%~dp0\mRemoteV1.sln" /build "Release Portable"
|
%DEVENV% "%~dp0\mRemoteV1.sln" /build "Release Portable"
|
||||||
|
|
||||||
echo Signing binaries...
|
echo Signing binaries...
|
||||||
%SIGNCMD% "%~dp0\mRemoteV1\bin\Release\de\mRemoteNG.resources.dll" "%~dp0\mRemoteV1\bin\Release\en-US\mRemoteNG.resources.dll" "%~dp0\mRemoteV1\bin\Release\fr\mRemoteNG.resources.dll" "%~dp0\mRemoteV1\bin\Release\AxInterop.WFICALib.dll" "%~dp0\mRemoteV1\bin\Release\AxInterop.MSTSCLib.dll" "%~dp0\mRemoteV1\bin\Release\Interop.WFICALib.dll" "%~dp0\mRemoteV1\bin\Release\Interop.ShDocVw.dll" "%~dp0\mRemoteV1\bin\Release\Interop.MSTSCLib.dll" "%~dp0\mRemoteV1\bin\Release\Interop.EOLWTSCOM.dll" "%~dp0\mRemoteV1\bin\Release\Interop.EOLWTSCOM.dll" "%~dp0\mRemoteV1\bin\Release\mRemoteNG.exe" "%~dp0\mRemoteV1\bin\Release Portable\de\mRemoteNG.resources.dll" "%~dp0\mRemoteV1\bin\Release Portable\en-US\mRemoteNG.resources.dll" "%~dp0\mRemoteV1\bin\Release Portable\fr\mRemoteNG.resources.dll" "%~dp0\mRemoteV1\bin\Release Portable\AxInterop.WFICALib.dll" "%~dp0\mRemoteV1\bin\Release Portable\AxInterop.MSTSCLib.dll" "%~dp0\mRemoteV1\bin\Release Portable\Interop.WFICALib.dll" "%~dp0\mRemoteV1\bin\Release Portable\Interop.ShDocVw.dll" "%~dp0\mRemoteV1\bin\Release Portable\Interop.MSTSCLib.dll" "%~dp0\mRemoteV1\bin\Release Portable\Interop.EOLWTSCOM.dll" "%~dp0\mRemoteV1\bin\Release Portable\Interop.EOLWTSCOM.dll" "%~dp0\mRemoteV1\bin\Release Portable\mRemoteNG.exe"
|
%SIGNCMD% ^
|
||||||
|
"%~dp0\mRemoteV1\bin\Release\de\mRemoteNG.resources.dll" ^
|
||||||
|
"%~dp0\mRemoteV1\bin\Release\en-US\mRemoteNG.resources.dll" ^
|
||||||
|
"%~dp0\mRemoteV1\bin\Release\es\mRemoteNG.resources.dll" ^
|
||||||
|
"%~dp0\mRemoteV1\bin\Release\es-AR\mRemoteNG.resources.dll" ^
|
||||||
|
"%~dp0\mRemoteV1\bin\Release\fr\mRemoteNG.resources.dll" ^
|
||||||
|
"%~dp0\mRemoteV1\bin\Release\it\mRemoteNG.resources.dll" ^
|
||||||
|
"%~dp0\mRemoteV1\bin\Release\nb-NO\mRemoteNG.resources.dll" ^
|
||||||
|
"%~dp0\mRemoteV1\bin\Release\nl\mRemoteNG.resources.dll" ^
|
||||||
|
"%~dp0\mRemoteV1\bin\Release\pl\mRemoteNG.resources.dll" ^
|
||||||
|
"%~dp0\mRemoteV1\bin\Release\pt\mRemoteNG.resources.dll" ^
|
||||||
|
"%~dp0\mRemoteV1\bin\Release\pt-BR\mRemoteNG.resources.dll" ^
|
||||||
|
"%~dp0\mRemoteV1\bin\Release\ru\mRemoteNG.resources.dll" ^
|
||||||
|
"%~dp0\mRemoteV1\bin\Release\uk\mRemoteNG.resources.dll" ^
|
||||||
|
"%~dp0\mRemoteV1\bin\Release\zh-CN\mRemoteNG.resources.dll" ^
|
||||||
|
"%~dp0\mRemoteV1\bin\Release\AxInterop.MSTSCLib.dll" ^
|
||||||
|
"%~dp0\mRemoteV1\bin\Release\AxInterop.WFICALib.dll" ^
|
||||||
|
"%~dp0\mRemoteV1\bin\Release\Interop.EOLWTSCOM.dll" ^
|
||||||
|
"%~dp0\mRemoteV1\bin\Release\Interop.MSTSCLib.dll" ^
|
||||||
|
"%~dp0\mRemoteV1\bin\Release\Interop.ShDocVw.dll" ^
|
||||||
|
"%~dp0\mRemoteV1\bin\Release\Interop.WFICALib.dll" ^
|
||||||
|
"%~dp0\mRemoteV1\bin\Release\mRemoteNG.exe" ^
|
||||||
|
"%~dp0\mRemoteV1\bin\Release Portable\de\mRemoteNG.resources.dll" ^
|
||||||
|
"%~dp0\mRemoteV1\bin\Release Portable\en-US\mRemoteNG.resources.dll" ^
|
||||||
|
"%~dp0\mRemoteV1\bin\Release Portable\es\mRemoteNG.resources.dll" ^
|
||||||
|
"%~dp0\mRemoteV1\bin\Release Portable\es-AR\mRemoteNG.resources.dll" ^
|
||||||
|
"%~dp0\mRemoteV1\bin\Release Portable\fr\mRemoteNG.resources.dll" ^
|
||||||
|
"%~dp0\mRemoteV1\bin\Release Portable\it\mRemoteNG.resources.dll" ^
|
||||||
|
"%~dp0\mRemoteV1\bin\Release Portable\nb-NO\mRemoteNG.resources.dll" ^
|
||||||
|
"%~dp0\mRemoteV1\bin\Release Portable\nl\mRemoteNG.resources.dll" ^
|
||||||
|
"%~dp0\mRemoteV1\bin\Release Portable\pl\mRemoteNG.resources.dll" ^
|
||||||
|
"%~dp0\mRemoteV1\bin\Release Portable\pt\mRemoteNG.resources.dll" ^
|
||||||
|
"%~dp0\mRemoteV1\bin\Release Portable\pt-BR\mRemoteNG.resources.dll" ^
|
||||||
|
"%~dp0\mRemoteV1\bin\Release Portable\ru\mRemoteNG.resources.dll" ^
|
||||||
|
"%~dp0\mRemoteV1\bin\Release Portable\uk\mRemoteNG.resources.dll" ^
|
||||||
|
"%~dp0\mRemoteV1\bin\Release Portable\zh-CN\mRemoteNG.resources.dll" ^
|
||||||
|
"%~dp0\mRemoteV1\bin\Release Portable\AxInterop.MSTSCLib.dll" ^
|
||||||
|
"%~dp0\mRemoteV1\bin\Release Portable\AxInterop.WFICALib.dll" ^
|
||||||
|
"%~dp0\mRemoteV1\bin\Release Portable\Interop.EOLWTSCOM.dll" ^
|
||||||
|
"%~dp0\mRemoteV1\bin\Release Portable\Interop.MSTSCLib.dll" ^
|
||||||
|
"%~dp0\mRemoteV1\bin\Release Portable\Interop.ShDocVw.dll" ^
|
||||||
|
"%~dp0\mRemoteV1\bin\Release Portable\Interop.WFICALib.dll" ^
|
||||||
|
"%~dp0\mRemoteV1\bin\Release Portable\mRemoteNG.exe" ^
|
||||||
|
|
||||||
mkdir "%~dp0\Release" > nul 2>&1
|
mkdir "%~dp0\Release" > nul 2>&1
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,52 @@
|
|||||||
|
1.71 Beta 5 (2013-06-09):
|
||||||
|
Fixed issue MR-491 - Could not start RDP Connection
|
||||||
|
Fixed issue MR-499 - TS Gateway is not working in latest release 1.71
|
||||||
|
Fixed typo in SQL queries.
|
||||||
|
|
||||||
|
1.71 Beta 4 (2013-05-28):
|
||||||
|
Added feature MR-435 - Add digital signature check to updater
|
||||||
|
Fixed issue MR-255 - The version of the RDP AX client should be updated to 7
|
||||||
|
Fixed issue MR-392 - Sessions Panel - context menu entries need to be context aware
|
||||||
|
Fixed issue MR-422 - Gives error Object reference not set to an instance of an object.
|
||||||
|
Fixed issue MR-424 - Import of a few Linux SSH2 hosts discovered via the port scan tool results in a UE
|
||||||
|
Fixed issue MR-439 - MRemoteNG 1.70 does not start
|
||||||
|
Fixed issue MR-440 - RDP import with non-standard port
|
||||||
|
Fixed issue MR-443 - Instructions for eolwtscom.dll registration for Portable version are inaccurate
|
||||||
|
Fixed issue MR-446 - Putty saved sessions show in connection panel
|
||||||
|
Fixed issue MR-459 - Maximized -> Minimized -> Restored results in mangled active display
|
||||||
|
Fixed issue MR-463 - Add support for LoadBalanceInfo to RDP
|
||||||
|
Fixed issue MR-470 - Quick Connect to Linux server uses invalid credentials
|
||||||
|
Fixed issue MR-471 - PuTTY Saved Sessions disappears from connection list
|
||||||
|
Fixed issue MR-487 - Initiate connections on MouseUp event
|
||||||
|
Added PuTTY Session Settings command to the Config panel for PuTTY Saved Sessions.
|
||||||
|
Updated translations.
|
||||||
|
Added Norwegian (Bokmål) and Portuguese (Brazil) translations.
|
||||||
|
Added Spanish translation to the installer.
|
||||||
|
Fixed an exception or crash when choosing unnamed colors for themes.
|
||||||
|
Fixed possible error "Control does not support transparent background colors" when modifying themes.
|
||||||
|
Fixed changes to the active theme not being saved reliably.
|
||||||
|
Fixed handling of the plus (+) character in PuTTY session names.
|
||||||
|
Changed Internet Explorer to no longer force IE7 compatibility mode.
|
||||||
|
Changed the "Launch PuTTY" button in the "Options" dialog to open PuTTY from the path the user has currently set, instead of what was previously saved.
|
||||||
|
Improved update and announcement checking.
|
||||||
|
Improved the PuTTY Saved Sessions list to update automatically when any changes are made.
|
||||||
|
Improved loading time of large connection files.
|
||||||
|
Lowered required version of RDC from 6.1 to 6.0.
|
||||||
|
Updated VncSharpNG to 1.3.4896.25007.
|
||||||
|
|
||||||
|
1.71 Beta 3 (2013-03-20):
|
||||||
|
Fixed issue MR-397 - Putty disappears from the screen
|
||||||
|
Fixed issue MR-398 - Full Screen mode doesn't correctly make use of available space
|
||||||
|
Fixed issue MR-402 - scrollbar touch moves putty window
|
||||||
|
Fixed issue MR-406 - Items disappear from External Tools toolbar when accessing External Tools panel
|
||||||
|
Fixed issue MR-410 - Unhandled exception when clicking New button under Theme
|
||||||
|
Fixed issue MR-413 - Can't use aplication
|
||||||
|
Fixed new connections having a globe icon.
|
||||||
|
Fixed the category names in the themes tab of the options dialog on Windows XP not showing correctly.
|
||||||
|
Fixed PuTTY saved sessions with spaces or special characters not being listed.
|
||||||
|
|
||||||
1.71 Beta 2 (2013-03-19):
|
1.71 Beta 2 (2013-03-19):
|
||||||
|
Added feature MR-336 - Customizable background color for the windows/panels
|
||||||
Added feature MR-345 - Two separate options for confirming closure of Tabs and Connection Panels
|
Added feature MR-345 - Two separate options for confirming closure of Tabs and Connection Panels
|
||||||
Added feature MR-346 - Option to show/hide the description box at the bottom of the Config panel
|
Added feature MR-346 - Option to show/hide the description box at the bottom of the Config panel
|
||||||
Added feature MR-351 - Import connections from PuTTY
|
Added feature MR-351 - Import connections from PuTTY
|
||||||
|
|||||||
Binary file not shown.
@@ -1,22 +1,22 @@
|
|||||||
; Spanish installer translation
|
; Spanish installer translation
|
||||||
|
|
||||||
; Start mRemoteNG after installation
|
; Start mRemoteNG after installation
|
||||||
LangString LaunchMremoteNow ${LANG_SPANISH} "mRemoteNG run SPANISH message"
|
LangString LaunchMremoteNow ${LANG_SPANISH} "Iniciando de mRemoteNG"
|
||||||
|
|
||||||
; Installer Language
|
; Installer Language
|
||||||
LangString InstallerLanguage ${LANG_SPANISH} "Installer Language"
|
LangString InstallerLanguage ${LANG_SPANISH} "Lenguaje de Instalación"
|
||||||
|
|
||||||
; Select installer Language
|
; Select installer Language
|
||||||
LangString SelectInstallerLanguage ${LANG_SPANISH} "Please select the language of the installer"
|
LangString SelectInstallerLanguage ${LANG_SPANISH} "Seleccione el lenguaje de instalación"
|
||||||
|
|
||||||
; Requires .NET Framework
|
; Requires .NET Framework
|
||||||
LangString RequiresNetFramework ${LANG_SPANISH} "mRemoteNG requires Microsoft .NET Framework 3.0."
|
LangString RequiresNetFramework ${LANG_SPANISH} "mRemoteNG requiere Microsoft .NET Framework 3.0."
|
||||||
|
|
||||||
; User needs to be Admin
|
; User needs to be Admin
|
||||||
LangString RequiresAdminUser ${LANG_SPANISH} "You must be a member of the 'Power Users' or 'Administrators' group to install mRemoteNG."
|
LangString RequiresAdminUser ${LANG_SPANISH} "Debe ser miembro del grupo 'Administradores' para poder instalar mRemoteNG."
|
||||||
|
|
||||||
; Start Menu items
|
; Start Menu items
|
||||||
LangString CreditsLinkName ${LANG_SPANISH} "Credits"
|
LangString CreditsLinkName ${LANG_SPANISH} "Créditos"
|
||||||
LangString CopyingLinkName ${LANG_SPANISH} "License"
|
LangString CopyingLinkName ${LANG_SPANISH} "Licencia"
|
||||||
LangString UninstallLinkName ${LANG_SPANISH} "Uninstall"
|
LangString UninstallLinkName ${LANG_SPANISH} "Desinstalar"
|
||||||
LangString ChangeLogLinkName ${LANG_SPANISH} "Version History"
|
LangString ChangeLogLinkName ${LANG_SPANISH} "Historial de Versiones"
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ mkdir %TEMP_FOLDER%
|
|||||||
copy "%~dp0\mRemoteV1\Language\*.resx" %TEMP_FOLDER%
|
copy "%~dp0\mRemoteV1\Language\*.resx" %TEMP_FOLDER%
|
||||||
|
|
||||||
pushd %TEMP_FOLDER%
|
pushd %TEMP_FOLDER%
|
||||||
for %%f in (*) do echo %SORTRESX% %TEMP_FOLDER%\%%f "%~dp0\mRemoteV1\Language\%%f"
|
for %%f in (*) do %SORTRESX% %TEMP_FOLDER%\%%f "%~dp0\mRemoteV1\Language\%%f"
|
||||||
popd
|
popd
|
||||||
|
|
||||||
rmdir /s /q %TEMP_FOLDER%
|
rmdir /s /q %TEMP_FOLDER%
|
||||||
|
|||||||
@@ -29,12 +29,15 @@ mkdir %TEMP_FOLDER%
|
|||||||
|
|
||||||
%SORTRESX% %TEMP_FOLDER%\ar\Language.ar.resx "%~dp0\mRemoteV1\Language\Language.ar.resx"
|
%SORTRESX% %TEMP_FOLDER%\ar\Language.ar.resx "%~dp0\mRemoteV1\Language\Language.ar.resx"
|
||||||
%SORTRESX% %TEMP_FOLDER%\de\Language.de.resx "%~dp0\mRemoteV1\Language\Language.de.resx"
|
%SORTRESX% %TEMP_FOLDER%\de\Language.de.resx "%~dp0\mRemoteV1\Language\Language.de.resx"
|
||||||
|
%SORTRESX% %TEMP_FOLDER%\el\Language.el.resx "%~dp0\mRemoteV1\Language\Language.el.resx"
|
||||||
%SORTRESX% %TEMP_FOLDER%\en-US\Language.en.resx "%~dp0\mRemoteV1\Language\Language.en-US.resx"
|
%SORTRESX% %TEMP_FOLDER%\en-US\Language.en.resx "%~dp0\mRemoteV1\Language\Language.en-US.resx"
|
||||||
%SORTRESX% %TEMP_FOLDER%\es-AR\Language.es.resx "%~dp0\mRemoteV1\Language\Language.es-AR.resx"
|
%SORTRESX% %TEMP_FOLDER%\es-AR\Language.es.resx "%~dp0\mRemoteV1\Language\Language.es-AR.resx"
|
||||||
%SORTRESX% %TEMP_FOLDER%\es-ES\Language.es.resx "%~dp0\mRemoteV1\Language\Language.es.resx"
|
%SORTRESX% %TEMP_FOLDER%\es-ES\Language.es.resx "%~dp0\mRemoteV1\Language\Language.es.resx"
|
||||||
%SORTRESX% %TEMP_FOLDER%\fr\Language.fr.resx "%~dp0\mRemoteV1\Language\Language.fr.resx"
|
%SORTRESX% %TEMP_FOLDER%\fr\Language.fr.resx "%~dp0\mRemoteV1\Language\Language.fr.resx"
|
||||||
|
%SORTRESX% %TEMP_FOLDER%\he\Language.he.resx "%~dp0\mRemoteV1\Language\Language.he.resx"
|
||||||
%SORTRESX% %TEMP_FOLDER%\hu\Language.hu.resx "%~dp0\mRemoteV1\Language\Language.hu.resx"
|
%SORTRESX% %TEMP_FOLDER%\hu\Language.hu.resx "%~dp0\mRemoteV1\Language\Language.hu.resx"
|
||||||
%SORTRESX% %TEMP_FOLDER%\it\Language.it.resx "%~dp0\mRemoteV1\Language\Language.it.resx"
|
%SORTRESX% %TEMP_FOLDER%\it\Language.it.resx "%~dp0\mRemoteV1\Language\Language.it.resx"
|
||||||
|
%SORTRESX% %TEMP_FOLDER%\nb\Language.nb.resx "%~dp0\mRemoteV1\Language\Language.nb-NO.resx"
|
||||||
%SORTRESX% %TEMP_FOLDER%\nl\Language.nl.resx "%~dp0\mRemoteV1\Language\Language.nl.resx"
|
%SORTRESX% %TEMP_FOLDER%\nl\Language.nl.resx "%~dp0\mRemoteV1\Language\Language.nl.resx"
|
||||||
%SORTRESX% %TEMP_FOLDER%\pl\Language.pl.resx "%~dp0\mRemoteV1\Language\Language.pl.resx"
|
%SORTRESX% %TEMP_FOLDER%\pl\Language.pl.resx "%~dp0\mRemoteV1\Language\Language.pl.resx"
|
||||||
%SORTRESX% %TEMP_FOLDER%\pt-BR\Language.pt.resx "%~dp0\mRemoteV1\Language\Language.pt-BR.resx"
|
%SORTRESX% %TEMP_FOLDER%\pt-BR\Language.pt.resx "%~dp0\mRemoteV1\Language\Language.pt-BR.resx"
|
||||||
|
|||||||
@@ -1,181 +0,0 @@
|
|||||||
Imports System.Net
|
|
||||||
Imports mRemoteNG.App.Runtime
|
|
||||||
|
|
||||||
Namespace App
|
|
||||||
Public Class Announcement
|
|
||||||
Implements IDisposable
|
|
||||||
|
|
||||||
#Region "Private Variables"
|
|
||||||
Private webClient As WebClient
|
|
||||||
Private webProxy As WebProxy
|
|
||||||
#End Region
|
|
||||||
|
|
||||||
#Region "Public Properties"
|
|
||||||
Private _currentAnnouncementInfo As Info
|
|
||||||
Public ReadOnly Property CurrentAnnouncementInfo() As Info
|
|
||||||
Get
|
|
||||||
Return _currentAnnouncementInfo
|
|
||||||
End Get
|
|
||||||
End Property
|
|
||||||
#End Region
|
|
||||||
|
|
||||||
#Region "Public Methods"
|
|
||||||
Public Function IsAnnouncementAvailable() As Boolean
|
|
||||||
Try
|
|
||||||
Dim aI As Info = GetAnnouncementInfo()
|
|
||||||
|
|
||||||
If aI.InfoOk = False Then
|
|
||||||
Return False
|
|
||||||
End If
|
|
||||||
|
|
||||||
If aI.Name <> My.Settings.LastAnnouncement Then
|
|
||||||
Return True
|
|
||||||
Else
|
|
||||||
Return False
|
|
||||||
End If
|
|
||||||
Catch ex As Exception
|
|
||||||
MessageCollector.AddMessage(Messages.MessageClass.WarningMsg, "IsAnnouncementAvailable failed" & vbNewLine & ex.Message, True)
|
|
||||||
Return False
|
|
||||||
End Try
|
|
||||||
End Function
|
|
||||||
|
|
||||||
Public Function GetAnnouncementInfo() As Info
|
|
||||||
Try
|
|
||||||
Dim strAnnouncement As String = GetAnnouncementFile()
|
|
||||||
|
|
||||||
CreateWebClient()
|
|
||||||
|
|
||||||
Dim aI As New Info()
|
|
||||||
|
|
||||||
If strAnnouncement <> "" Then
|
|
||||||
aI.InfoOk = True
|
|
||||||
|
|
||||||
Try
|
|
||||||
'get Name
|
|
||||||
Dim strName As String = strAnnouncement.Substring(strAnnouncement.IndexOf("Name: ") + 6, strAnnouncement.IndexOf(vbNewLine) - 6)
|
|
||||||
aI.Name = strName
|
|
||||||
|
|
||||||
strAnnouncement = strAnnouncement.Remove(0, strAnnouncement.IndexOf(vbNewLine) + 2)
|
|
||||||
|
|
||||||
'get Download URL
|
|
||||||
Dim strU As String = ""
|
|
||||||
|
|
||||||
strU = strAnnouncement.Substring(strAnnouncement.IndexOf("URL: ") + 5, strAnnouncement.IndexOf(vbNewLine) - 5)
|
|
||||||
|
|
||||||
aI.Url = strU
|
|
||||||
Catch ex As Exception
|
|
||||||
aI.InfoOk = False
|
|
||||||
End Try
|
|
||||||
Else
|
|
||||||
aI.InfoOk = False
|
|
||||||
End If
|
|
||||||
|
|
||||||
_currentAnnouncementInfo = aI
|
|
||||||
Return aI
|
|
||||||
Catch ex As Exception
|
|
||||||
MessageCollector.AddMessage(Messages.MessageClass.WarningMsg, "Getting Announcement info failed" & vbNewLine & ex.Message, True)
|
|
||||||
Return Nothing
|
|
||||||
End Try
|
|
||||||
End Function
|
|
||||||
|
|
||||||
Private Function GetAnnouncementFile() As String
|
|
||||||
Try
|
|
||||||
CreateWebClient()
|
|
||||||
|
|
||||||
Dim strTemp As String
|
|
||||||
|
|
||||||
Try
|
|
||||||
strTemp = webClient.DownloadString(App.Info.General.URLAnnouncement)
|
|
||||||
Catch ex As Exception
|
|
||||||
strTemp = ""
|
|
||||||
End Try
|
|
||||||
|
|
||||||
Return strTemp
|
|
||||||
Catch ex As Exception
|
|
||||||
MessageCollector.AddMessage(Messages.MessageClass.WarningMsg, "GetAnnouncementFile failed" & vbNewLine & ex.Message, True)
|
|
||||||
Return ""
|
|
||||||
End Try
|
|
||||||
End Function
|
|
||||||
|
|
||||||
Private Sub CreateWebClient()
|
|
||||||
webClient = New WebClient()
|
|
||||||
|
|
||||||
If My.Settings.UpdateUseProxy Then
|
|
||||||
webProxy = New WebProxy(My.Settings.UpdateProxyAddress, My.Settings.UpdateProxyPort)
|
|
||||||
|
|
||||||
If My.Settings.UpdateProxyUseAuthentication Then
|
|
||||||
Dim cred As ICredentials
|
|
||||||
cred = New NetworkCredential(My.Settings.UpdateProxyAuthUser, Security.Crypt.Decrypt(My.Settings.UpdateProxyAuthPass, App.Info.General.EncryptionKey))
|
|
||||||
|
|
||||||
webProxy.Credentials = cred
|
|
||||||
End If
|
|
||||||
|
|
||||||
webClient.Proxy = webProxy
|
|
||||||
End If
|
|
||||||
End Sub
|
|
||||||
#End Region
|
|
||||||
|
|
||||||
Public Class Info
|
|
||||||
Private _Name As String
|
|
||||||
Public Property Name() As String
|
|
||||||
Get
|
|
||||||
Return _Name
|
|
||||||
End Get
|
|
||||||
Set(ByVal value As String)
|
|
||||||
_Name = value
|
|
||||||
End Set
|
|
||||||
End Property
|
|
||||||
|
|
||||||
Private _url As String
|
|
||||||
Public Property Url() As String
|
|
||||||
Get
|
|
||||||
Return _url
|
|
||||||
End Get
|
|
||||||
Set(ByVal value As String)
|
|
||||||
_url = value
|
|
||||||
End Set
|
|
||||||
End Property
|
|
||||||
|
|
||||||
Private _InfoOk As Boolean
|
|
||||||
Public Property InfoOk() As Boolean
|
|
||||||
Get
|
|
||||||
Return _InfoOk
|
|
||||||
End Get
|
|
||||||
Set(ByVal value As Boolean)
|
|
||||||
_InfoOk = value
|
|
||||||
End Set
|
|
||||||
End Property
|
|
||||||
End Class
|
|
||||||
|
|
||||||
#Region "IDisposable Support"
|
|
||||||
Private disposedValue As Boolean ' To detect redundant calls
|
|
||||||
|
|
||||||
' IDisposable
|
|
||||||
Protected Overridable Sub Dispose(disposing As Boolean)
|
|
||||||
If Not Me.disposedValue Then
|
|
||||||
If disposing Then
|
|
||||||
If webClient IsNot Nothing Then webClient.Dispose()
|
|
||||||
End If
|
|
||||||
|
|
||||||
' TODO: free unmanaged resources (unmanaged objects) and override Finalize() below.
|
|
||||||
' TODO: set large fields to null.
|
|
||||||
End If
|
|
||||||
Me.disposedValue = True
|
|
||||||
End Sub
|
|
||||||
|
|
||||||
' TODO: override Finalize() only if Dispose(ByVal disposing As Boolean) above has code to free unmanaged resources.
|
|
||||||
'Protected Overrides Sub Finalize()
|
|
||||||
' ' Do not change this code. Put cleanup code in Dispose(ByVal disposing As Boolean) above.
|
|
||||||
' Dispose(False)
|
|
||||||
' MyBase.Finalize()
|
|
||||||
'End Sub
|
|
||||||
|
|
||||||
' This code added by Visual Basic to correctly implement the disposable pattern.
|
|
||||||
Public Sub Dispose() Implements IDisposable.Dispose
|
|
||||||
' Do not change this code. Put cleanup code in Dispose(ByVal disposing As Boolean) above.
|
|
||||||
Dispose(True)
|
|
||||||
GC.SuppressFinalize(Me)
|
|
||||||
End Sub
|
|
||||||
#End Region
|
|
||||||
End Class
|
|
||||||
End Namespace
|
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
Imports System.Environment
|
Imports System.Environment
|
||||||
|
Imports System.Threading
|
||||||
|
|
||||||
Namespace App
|
Namespace App
|
||||||
Namespace Info
|
Namespace Info
|
||||||
@@ -7,10 +8,27 @@ Namespace App
|
|||||||
Public Shared ReadOnly URLDonate As String = "http://donate.mremoteng.org/"
|
Public Shared ReadOnly URLDonate As String = "http://donate.mremoteng.org/"
|
||||||
Public Shared ReadOnly URLForum As String = "http://forum.mremoteng.org/"
|
Public Shared ReadOnly URLForum As String = "http://forum.mremoteng.org/"
|
||||||
Public Shared ReadOnly URLBugs As String = "http://bugs.mremoteng.org/"
|
Public Shared ReadOnly URLBugs As String = "http://bugs.mremoteng.org/"
|
||||||
Public Shared ReadOnly URLAnnouncement As String = "http://update.mremoteng.org/announcement.txt"
|
|
||||||
Public Shared ReadOnly HomePath As String = My.Application.Info.DirectoryPath
|
Public Shared ReadOnly HomePath As String = My.Application.Info.DirectoryPath
|
||||||
Public Shared EncryptionKey As String = "mR3m"
|
Public Shared EncryptionKey As String = "mR3m"
|
||||||
Public Shared ReportingFilePath As String = ""
|
Public Shared ReportingFilePath As String = ""
|
||||||
|
Public Shared ReadOnly PuttyPath As String = My.Application.Info.DirectoryPath & "\PuTTYNG.exe"
|
||||||
|
Public Shared ReadOnly Property UserAgent As String
|
||||||
|
Get
|
||||||
|
Dim details As New List(Of String)
|
||||||
|
details.Add("compatible")
|
||||||
|
If OSVersion.Platform = PlatformID.Win32NT Then
|
||||||
|
details.Add(String.Format("Windows NT {0}.{1}", OSVersion.Version.Major, OSVersion.Version.Minor))
|
||||||
|
Else
|
||||||
|
details.Add(OSVersion.VersionString)
|
||||||
|
End If
|
||||||
|
If Tools.EnvironmentInfo.IsWow64 Then details.Add("WOW64")
|
||||||
|
details.Add(Thread.CurrentThread.CurrentUICulture.Name)
|
||||||
|
details.Add(String.Format(".NET CLR {0}", Version.ToString()))
|
||||||
|
Dim detailsString As String = String.Join("; ", details.ToArray())
|
||||||
|
|
||||||
|
Return String.Format("Mozilla/4.0 ({0}) {1}/{2}", detailsString, Application.ProductName, Application.ProductVersion)
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
End Class
|
End Class
|
||||||
|
|
||||||
Public Class Settings
|
Public Class Settings
|
||||||
@@ -25,8 +43,7 @@ Namespace App
|
|||||||
End Class
|
End Class
|
||||||
|
|
||||||
Public Class Update
|
Public Class Update
|
||||||
Public Shared ReadOnly URL As String = "http://update.mremoteng.org/"
|
Public Shared ReadOnly Property FileName As String
|
||||||
Public Shared ReadOnly Property File As String
|
|
||||||
Get
|
Get
|
||||||
Select Case My.Settings.UpdateChannel.ToLowerInvariant()
|
Select Case My.Settings.UpdateChannel.ToLowerInvariant()
|
||||||
Case "beta"
|
Case "beta"
|
||||||
@@ -44,7 +61,7 @@ Namespace App
|
|||||||
Public Shared ReadOnly DefaultConnectionsPath As String = App.Info.Settings.SettingsPath
|
Public Shared ReadOnly DefaultConnectionsPath As String = App.Info.Settings.SettingsPath
|
||||||
Public Shared ReadOnly DefaultConnectionsFile As String = "confCons.xml"
|
Public Shared ReadOnly DefaultConnectionsFile As String = "confCons.xml"
|
||||||
Public Shared ReadOnly DefaultConnectionsFileNew As String = "confConsNew.xml"
|
Public Shared ReadOnly DefaultConnectionsFileNew As String = "confConsNew.xml"
|
||||||
Public Shared ReadOnly ConnectionFileVersion As Double = 2.4
|
Public Shared ReadOnly ConnectionFileVersion As Double = 2.5
|
||||||
End Class
|
End Class
|
||||||
|
|
||||||
Public Class Credentials
|
Public Class Credentials
|
||||||
|
|||||||
@@ -1,7 +1,9 @@
|
|||||||
Imports log4net
|
Imports System.ComponentModel
|
||||||
|
Imports log4net
|
||||||
Imports mRemoteNG.Messages
|
Imports mRemoteNG.Messages
|
||||||
Imports mRemoteNG.Connection
|
Imports mRemoteNG.Connection
|
||||||
Imports mRemoteNG.Tools
|
Imports mRemoteNG.Tools
|
||||||
|
Imports PSTaskDialog
|
||||||
Imports WeifenLuo.WinFormsUI.Docking
|
Imports WeifenLuo.WinFormsUI.Docking
|
||||||
Imports System.IO
|
Imports System.IO
|
||||||
Imports Crownwood
|
Imports Crownwood
|
||||||
@@ -19,6 +21,8 @@ Namespace App
|
|||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
#Region "Public Properties"
|
#Region "Public Properties"
|
||||||
|
Public Shared Property MainForm As frmMain
|
||||||
|
|
||||||
Private Shared _connectionList As Connection.List
|
Private Shared _connectionList As Connection.List
|
||||||
Public Shared Property ConnectionList() As List
|
Public Shared Property ConnectionList() As List
|
||||||
Get
|
Get
|
||||||
@@ -130,26 +134,6 @@ Namespace App
|
|||||||
End Set
|
End Set
|
||||||
End Property
|
End Property
|
||||||
|
|
||||||
Private Shared _isUpdateAvailable As Boolean
|
|
||||||
Public Shared Property IsUpdateAvailable() As Boolean
|
|
||||||
Get
|
|
||||||
Return _isUpdateAvailable
|
|
||||||
End Get
|
|
||||||
Set(ByVal value As Boolean)
|
|
||||||
_isUpdateAvailable = value
|
|
||||||
End Set
|
|
||||||
End Property
|
|
||||||
|
|
||||||
Private Shared _isAnnouncementAvailable As Boolean
|
|
||||||
Public Shared Property IsAnnouncementAvailable() As Boolean
|
|
||||||
Get
|
|
||||||
Return _isAnnouncementAvailable
|
|
||||||
End Get
|
|
||||||
Set(ByVal value As Boolean)
|
|
||||||
_isAnnouncementAvailable = value
|
|
||||||
End Set
|
|
||||||
End Property
|
|
||||||
|
|
||||||
Private Shared _isConnectionsFileLoaded As Boolean
|
Private Shared _isConnectionsFileLoaded As Boolean
|
||||||
Public Shared Property IsConnectionsFileLoaded() As Boolean
|
Public Shared Property IsConnectionsFileLoaded() As Boolean
|
||||||
Get
|
Get
|
||||||
@@ -377,6 +361,11 @@ Namespace App
|
|||||||
|
|
||||||
Public Class Startup
|
Public Class Startup
|
||||||
Public Shared Sub CheckCompatibility()
|
Public Shared Sub CheckCompatibility()
|
||||||
|
CheckFipsPolicy()
|
||||||
|
CheckLenovoAutoScrollUtility()
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Shared Sub CheckFipsPolicy()
|
||||||
Dim regKey As RegistryKey
|
Dim regKey As RegistryKey
|
||||||
|
|
||||||
Dim isFipsPolicyEnabled As Boolean = False
|
Dim isFipsPolicyEnabled As Boolean = False
|
||||||
@@ -399,6 +388,22 @@ Namespace App
|
|||||||
End If
|
End If
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
|
Private Shared Sub CheckLenovoAutoScrollUtility()
|
||||||
|
If Not My.Settings.CompatibilityWarnLenovoAutoScrollUtility Then Return
|
||||||
|
|
||||||
|
Dim proccesses() As Process = {}
|
||||||
|
Try
|
||||||
|
proccesses = Process.GetProcessesByName("virtscrl")
|
||||||
|
Catch
|
||||||
|
End Try
|
||||||
|
If proccesses.Length = 0 Then Return
|
||||||
|
|
||||||
|
cTaskDialog.MessageBox(Application.ProductName, My.Language.strCompatibilityProblemDetected, String.Format(My.Language.strCompatibilityLenovoAutoScrollUtilityDetected, System.Windows.Forms.Application.ProductName), "", "", My.Language.strCheckboxDoNotShowThisMessageAgain, eTaskDialogButtons.OK, eSysIcons.Warning, Nothing)
|
||||||
|
If cTaskDialog.VerificationChecked Then
|
||||||
|
My.Settings.CompatibilityWarnLenovoAutoScrollUtility = False
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
Public Shared Sub CreatePanels()
|
Public Shared Sub CreatePanels()
|
||||||
Windows.configForm = New UI.Window.Config(Windows.configPanel)
|
Windows.configForm = New UI.Window.Config(Windows.configPanel)
|
||||||
Windows.configPanel = Windows.configForm
|
Windows.configPanel = Windows.configForm
|
||||||
@@ -516,35 +521,66 @@ Namespace App
|
|||||||
End If
|
End If
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
Public Shared Sub UpdateCheck()
|
Private Shared _appUpdate As Update
|
||||||
If My.Settings.CheckForUpdatesAsked And My.Settings.CheckForUpdatesOnStartup Then
|
Public Shared Sub CheckForUpdate()
|
||||||
If My.Settings.UpdatePending Or My.Settings.CheckForUpdatesLastCheck < Date.Now.Subtract(TimeSpan.FromDays(My.Settings.CheckForUpdatesFrequencyDays)) Then
|
If _appUpdate Is Nothing Then
|
||||||
frmMain.tmrShowUpdate.Enabled = True
|
_appUpdate = New Update
|
||||||
Windows.updateForm.CheckForUpdate()
|
ElseIf _appUpdate.IsGetUpdateInfoRunning Then
|
||||||
AddHandler Windows.updateForm.UpdateCheckCompleted, AddressOf UpdateCheckComplete
|
Return
|
||||||
End If
|
|
||||||
End If
|
End If
|
||||||
|
|
||||||
|
Dim nextUpdateCheck As Date = My.Settings.CheckForUpdatesLastCheck.Add(TimeSpan.FromDays(My.Settings.CheckForUpdatesFrequencyDays))
|
||||||
|
If Not My.Settings.UpdatePending And Date.UtcNow < nextUpdateCheck Then Return
|
||||||
|
|
||||||
|
AddHandler _appUpdate.GetUpdateInfoCompletedEvent, AddressOf GetUpdateInfoCompleted
|
||||||
|
_appUpdate.GetUpdateInfoAsync()
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
Private Shared Sub UpdateCheckComplete(ByVal UpdateAvailable As Boolean)
|
Private Shared Sub GetUpdateInfoCompleted(ByVal sender As Object, ByVal e As AsyncCompletedEventArgs)
|
||||||
My.Settings.CheckForUpdatesLastCheck = Date.Now
|
If MainForm.InvokeRequired Then
|
||||||
My.Settings.UpdatePending = UpdateAvailable
|
MainForm.Invoke(New AsyncCompletedEventHandler(AddressOf GetUpdateInfoCompleted), New Object() {sender, e})
|
||||||
IsUpdateAvailable = UpdateAvailable
|
Return
|
||||||
End Sub
|
|
||||||
|
|
||||||
Public Shared Sub AnnouncementCheck()
|
|
||||||
If My.Settings.CheckForUpdatesAsked And My.Settings.CheckForUpdatesOnStartup Then
|
|
||||||
If My.Settings.CheckForUpdatesLastCheck < Date.Now.Subtract(TimeSpan.FromDays(My.Settings.CheckForUpdatesFrequencyDays)) Then
|
|
||||||
frmMain.tmrShowUpdate.Enabled = True
|
|
||||||
Windows.AnnouncementForm.CheckForAnnouncement()
|
|
||||||
AddHandler Windows.AnnouncementForm.AnnouncementCheckCompleted, AddressOf AnnouncementCheckComplete
|
|
||||||
End If
|
|
||||||
End If
|
End If
|
||||||
|
|
||||||
|
Try
|
||||||
|
RemoveHandler _appUpdate.GetUpdateInfoCompletedEvent, AddressOf GetUpdateInfoCompleted
|
||||||
|
|
||||||
|
If e.Cancelled Then Return
|
||||||
|
If e.Error IsNot Nothing Then Throw e.Error
|
||||||
|
|
||||||
|
If _appUpdate.IsUpdateAvailable() Then Windows.Show(UI.Window.Type.Update)
|
||||||
|
Catch ex As Exception
|
||||||
|
MessageCollector.AddExceptionMessage("GetUpdateInfoCompleted() failed.", ex, MessageClass.ErrorMsg, True)
|
||||||
|
End Try
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
Private Shared Sub AnnouncementCheckComplete(ByVal AnnouncementAvailable As Boolean)
|
Public Shared Sub CheckForAnnouncement()
|
||||||
My.Settings.CheckForUpdatesLastCheck = Date.Now
|
If _appUpdate Is Nothing Then
|
||||||
IsAnnouncementAvailable = AnnouncementAvailable
|
_appUpdate = New Update
|
||||||
|
ElseIf _appUpdate.IsGetAnnouncementInfoRunning Then
|
||||||
|
Return
|
||||||
|
End If
|
||||||
|
|
||||||
|
AddHandler _appUpdate.GetAnnouncementInfoCompletedEvent, AddressOf GetAnnouncementInfoCompleted
|
||||||
|
_appUpdate.GetAnnouncementInfoAsync()
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Shared Sub GetAnnouncementInfoCompleted(ByVal sender As Object, ByVal e As AsyncCompletedEventArgs)
|
||||||
|
If MainForm.InvokeRequired Then
|
||||||
|
MainForm.Invoke(New AsyncCompletedEventHandler(AddressOf GetAnnouncementInfoCompleted), New Object() {sender, e})
|
||||||
|
Return
|
||||||
|
End If
|
||||||
|
|
||||||
|
Try
|
||||||
|
RemoveHandler _appUpdate.GetAnnouncementInfoCompletedEvent, AddressOf GetAnnouncementInfoCompleted
|
||||||
|
|
||||||
|
If e.Cancelled Then Return
|
||||||
|
If e.Error IsNot Nothing Then Throw e.Error
|
||||||
|
|
||||||
|
If _appUpdate.IsAnnouncementAvailable() Then Windows.Show(UI.Window.Type.Announcement)
|
||||||
|
Catch ex As Exception
|
||||||
|
MessageCollector.AddExceptionMessage("GetAnnouncementInfoCompleted() failed.", ex, MessageClass.ErrorMsg, True)
|
||||||
|
End Try
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
Public Shared Sub ParseCommandLineArgs()
|
Public Shared Sub ParseCommandLineArgs()
|
||||||
@@ -678,6 +714,8 @@ Namespace App
|
|||||||
|
|
||||||
Dim SettingsSave As New Config.Settings.Save()
|
Dim SettingsSave As New Config.Settings.Save()
|
||||||
SettingsSave.Save()
|
SettingsSave.Save()
|
||||||
|
|
||||||
|
IeBrowserEmulation.Unregister()
|
||||||
Catch ex As Exception
|
Catch ex As Exception
|
||||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strSettingsCouldNotBeSavedOrTrayDispose & vbNewLine & ex.Message, True)
|
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strSettingsCouldNotBeSavedOrTrayDispose & vbNewLine & ex.Message, True)
|
||||||
End Try
|
End Try
|
||||||
@@ -704,10 +742,12 @@ Namespace App
|
|||||||
My.Settings.ConDefaultPuttySession = .PuttySession
|
My.Settings.ConDefaultPuttySession = .PuttySession
|
||||||
My.Settings.ConDefaultICAEncryptionStrength = .ICAEncryption.ToString
|
My.Settings.ConDefaultICAEncryptionStrength = .ICAEncryption.ToString
|
||||||
My.Settings.ConDefaultRDPAuthenticationLevel = .RDPAuthenticationLevel.ToString
|
My.Settings.ConDefaultRDPAuthenticationLevel = .RDPAuthenticationLevel.ToString
|
||||||
|
My.Settings.ConDefaultLoadBalanceInfo = .LoadBalanceInfo
|
||||||
My.Settings.ConDefaultUseConsoleSession = .UseConsoleSession
|
My.Settings.ConDefaultUseConsoleSession = .UseConsoleSession
|
||||||
My.Settings.ConDefaultUseCredSsp = .UseCredSsp
|
My.Settings.ConDefaultUseCredSsp = .UseCredSsp
|
||||||
My.Settings.ConDefaultRenderingEngine = .RenderingEngine.ToString
|
My.Settings.ConDefaultRenderingEngine = .RenderingEngine.ToString
|
||||||
My.Settings.ConDefaultResolution = .Resolution.ToString
|
My.Settings.ConDefaultResolution = .Resolution.ToString
|
||||||
|
My.Settings.ConDefaultAutomaticResize = .AutomaticResize
|
||||||
My.Settings.ConDefaultColors = .Colors.ToString
|
My.Settings.ConDefaultColors = .Colors.ToString
|
||||||
My.Settings.ConDefaultCacheBitmaps = .CacheBitmaps
|
My.Settings.ConDefaultCacheBitmaps = .CacheBitmaps
|
||||||
My.Settings.ConDefaultDisplayWallpaper = .DisplayWallpaper
|
My.Settings.ConDefaultDisplayWallpaper = .DisplayWallpaper
|
||||||
@@ -770,7 +810,9 @@ Namespace App
|
|||||||
My.Settings.InhDefaultRenderingEngine = .RenderingEngine
|
My.Settings.InhDefaultRenderingEngine = .RenderingEngine
|
||||||
My.Settings.InhDefaultICAEncryptionStrength = .ICAEncryption
|
My.Settings.InhDefaultICAEncryptionStrength = .ICAEncryption
|
||||||
My.Settings.InhDefaultRDPAuthenticationLevel = .RDPAuthenticationLevel
|
My.Settings.InhDefaultRDPAuthenticationLevel = .RDPAuthenticationLevel
|
||||||
|
My.Settings.InhDefaultLoadBalanceInfo = .LoadBalanceInfo
|
||||||
My.Settings.InhDefaultResolution = .Resolution
|
My.Settings.InhDefaultResolution = .Resolution
|
||||||
|
My.Settings.InhDefaultAutomaticResize = .AutomaticResize
|
||||||
My.Settings.InhDefaultColors = .Colors
|
My.Settings.InhDefaultColors = .Colors
|
||||||
My.Settings.InhDefaultCacheBitmaps = .CacheBitmaps
|
My.Settings.InhDefaultCacheBitmaps = .CacheBitmaps
|
||||||
My.Settings.InhDefaultDisplayWallpaper = .DisplayWallpaper
|
My.Settings.InhDefaultDisplayWallpaper = .DisplayWallpaper
|
||||||
@@ -932,7 +974,7 @@ Namespace App
|
|||||||
xW.WriteAttributeString("Name", My.Language.strConnections)
|
xW.WriteAttributeString("Name", My.Language.strConnections)
|
||||||
xW.WriteAttributeString("Export", "", "False")
|
xW.WriteAttributeString("Export", "", "False")
|
||||||
xW.WriteAttributeString("Protected", "", "GiUis20DIbnYzWPcdaQKfjE2H5jh//L5v4RGrJMGNXuIq2CttB/d/BxaBP2LwRhY")
|
xW.WriteAttributeString("Protected", "", "GiUis20DIbnYzWPcdaQKfjE2H5jh//L5v4RGrJMGNXuIq2CttB/d/BxaBP2LwRhY")
|
||||||
xW.WriteAttributeString("ConfVersion", "", "2.4")
|
xW.WriteAttributeString("ConfVersion", "", "2.5")
|
||||||
|
|
||||||
xW.WriteEndElement()
|
xW.WriteEndElement()
|
||||||
xW.WriteEndDocument()
|
xW.WriteEndDocument()
|
||||||
@@ -941,7 +983,6 @@ Namespace App
|
|||||||
|
|
||||||
conL.ConnectionList = ConnectionList
|
conL.ConnectionList = ConnectionList
|
||||||
conL.ContainerList = ContainerList
|
conL.ContainerList = ContainerList
|
||||||
conL.Import = False
|
|
||||||
|
|
||||||
Tree.Node.ResetTree()
|
Tree.Node.ResetTree()
|
||||||
|
|
||||||
@@ -949,7 +990,7 @@ Namespace App
|
|||||||
|
|
||||||
' Load config
|
' Load config
|
||||||
conL.ConnectionFileName = filename
|
conL.ConnectionFileName = filename
|
||||||
conL.Load()
|
conL.Load(False)
|
||||||
|
|
||||||
Windows.treeForm.tvConnections.SelectedNode = conL.RootTreeNode
|
Windows.treeForm.tvConnections.SelectedNode = conL.RootTreeNode
|
||||||
Catch ex As Exception
|
Catch ex As Exception
|
||||||
@@ -1032,8 +1073,6 @@ Namespace App
|
|||||||
conL.PreviousSelected = LastSelected
|
conL.PreviousSelected = LastSelected
|
||||||
End If
|
End If
|
||||||
|
|
||||||
conL.Import = False
|
|
||||||
|
|
||||||
Tree.Node.ResetTree()
|
Tree.Node.ResetTree()
|
||||||
|
|
||||||
conL.RootTreeNode = Windows.treeForm.tvConnections.Nodes(0)
|
conL.RootTreeNode = Windows.treeForm.tvConnections.Nodes(0)
|
||||||
@@ -1045,7 +1084,7 @@ Namespace App
|
|||||||
conL.SQLPassword = Security.Crypt.Decrypt(My.Settings.SQLPass, App.Info.General.EncryptionKey)
|
conL.SQLPassword = Security.Crypt.Decrypt(My.Settings.SQLPass, App.Info.General.EncryptionKey)
|
||||||
conL.SQLUpdate = Update
|
conL.SQLUpdate = Update
|
||||||
|
|
||||||
conL.Load()
|
conL.Load(False)
|
||||||
|
|
||||||
If My.Settings.UseSQLServer = True Then
|
If My.Settings.UseSQLServer = True Then
|
||||||
LastSqlUpdate = Now
|
LastSqlUpdate = Now
|
||||||
@@ -1062,14 +1101,31 @@ Namespace App
|
|||||||
TimerSqlWatcher.Start()
|
TimerSqlWatcher.Start()
|
||||||
End If
|
End If
|
||||||
Catch ex As Exception
|
Catch ex As Exception
|
||||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, String.Format(My.Language.strConnectionsFileCouldNotBeLoaded & vbNewLine & ex.Message & ex.StackTrace, conL.ConnectionFileName))
|
If My.Settings.UseSQLServer Then
|
||||||
If My.Settings.UseSQLServer = False Then
|
MessageCollector.AddExceptionMessage(My.Language.strLoadFromSqlFailed, ex)
|
||||||
|
Dim commandButtons As String = String.Join("|", {My.Language.strCommandTryAgain, My.Language.strCommandOpenConnectionFile, String.Format(My.Language.strCommandExitProgram, Application.ProductName)})
|
||||||
|
cTaskDialog.ShowCommandBox(Application.ProductName, My.Language.strLoadFromSqlFailed, My.Language.strLoadFromSqlFailedContent, Misc.GetExceptionMessageRecursive(ex), "", "", commandButtons, False, eSysIcons.Error, Nothing)
|
||||||
|
Select Case cTaskDialog.CommandButtonResult
|
||||||
|
Case 0
|
||||||
|
LoadConnections(WithDialog, Update)
|
||||||
|
Return
|
||||||
|
Case 1
|
||||||
|
My.Settings.UseSQLServer = False
|
||||||
|
LoadConnections(True, Update)
|
||||||
|
Return
|
||||||
|
Case Else
|
||||||
|
Application.Exit()
|
||||||
|
Return
|
||||||
|
End Select
|
||||||
|
Else
|
||||||
|
MessageCollector.AddExceptionMessage(String.Format(My.Language.strConnectionsFileCouldNotBeLoaded, conL.ConnectionFileName), ex)
|
||||||
If Not conL.ConnectionFileName = GetStartupConnectionFileName() Then
|
If Not conL.ConnectionFileName = GetStartupConnectionFileName() Then
|
||||||
LoadConnections()
|
LoadConnections(WithDialog, Update)
|
||||||
Exit Sub
|
Return
|
||||||
Else
|
Else
|
||||||
MsgBox(String.Format(My.Language.strErrorStartupConnectionFileLoad, vbNewLine, Application.ProductName, GetStartupConnectionFileName(), ex.Message), MsgBoxStyle.OkOnly + MsgBoxStyle.Critical)
|
MsgBox(String.Format(My.Language.strErrorStartupConnectionFileLoad, vbNewLine, Application.ProductName, GetStartupConnectionFileName(), Misc.GetExceptionMessageRecursive(ex)), MsgBoxStyle.OkOnly + MsgBoxStyle.Critical)
|
||||||
Application.Exit()
|
Application.Exit()
|
||||||
|
Return
|
||||||
End If
|
End If
|
||||||
End If
|
End If
|
||||||
End Try
|
End Try
|
||||||
@@ -1157,11 +1213,10 @@ Namespace App
|
|||||||
Dim conL As New Config.Connections.Load
|
Dim conL As New Config.Connections.Load
|
||||||
conL.ConnectionFileName = lD.FileNames(i)
|
conL.ConnectionFileName = lD.FileNames(i)
|
||||||
conL.RootTreeNode = nNode
|
conL.RootTreeNode = nNode
|
||||||
conL.Import = True
|
|
||||||
conL.ConnectionList = App.Runtime.ConnectionList
|
conL.ConnectionList = App.Runtime.ConnectionList
|
||||||
conL.ContainerList = App.Runtime.ContainerList
|
conL.ContainerList = App.Runtime.ContainerList
|
||||||
|
|
||||||
conL.Load()
|
conL.Load(True)
|
||||||
|
|
||||||
Windows.treeForm.tvConnections.SelectedNode.Nodes.Add(nNode)
|
Windows.treeForm.tvConnections.SelectedNode.Nodes.Add(nNode)
|
||||||
Next
|
Next
|
||||||
@@ -1171,136 +1226,139 @@ Namespace App
|
|||||||
End Try
|
End Try
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
Public Shared Sub ImportConnectionsFromRDPFiles()
|
Public Shared Sub ImportConnectionsRdpFile()
|
||||||
Try
|
Try
|
||||||
Dim lD As OpenFileDialog = Tools.Controls.ConnectionsRDPImportDialog
|
Dim openFileDialog As OpenFileDialog = Controls.ImportConnectionsRdpFileDialog
|
||||||
lD.Multiselect = True
|
If Not openFileDialog.ShowDialog = DialogResult.OK Then Return
|
||||||
|
|
||||||
If lD.ShowDialog = DialogResult.OK Then
|
For Each fileName As String In openFileDialog.FileNames
|
||||||
For i As Integer = 0 To lD.FileNames.Length - 1
|
Dim lines As String() = File.ReadAllLines(fileName)
|
||||||
Dim lines As String() = File.ReadAllLines(lD.FileNames(i))
|
|
||||||
|
|
||||||
Dim nNode As TreeNode = Tree.Node.AddNode(Tree.Node.Type.Connection, Path.GetFileNameWithoutExtension(lD.FileNames(i)))
|
Dim treeNode As TreeNode = Tree.Node.AddNode(Tree.Node.Type.Connection, Path.GetFileNameWithoutExtension(fileName))
|
||||||
|
|
||||||
Dim nConI As New mRemoteNG.Connection.Info()
|
Dim connectionInfo As New Connection.Info()
|
||||||
nConI.Inherit = New Connection.Info.Inheritance(nConI)
|
connectionInfo.Inherit = New Connection.Info.Inheritance(connectionInfo)
|
||||||
|
|
||||||
nConI.Name = nNode.Text
|
connectionInfo.Name = treeNode.Text
|
||||||
|
|
||||||
For Each l As String In lines
|
For Each line As String In lines
|
||||||
Dim pName As String = l.Substring(0, l.IndexOf(":"))
|
Dim parts() As String = line.Split(New Char() {":"}, 3)
|
||||||
Dim pValue As String = l.Substring(l.LastIndexOf(":") + 1)
|
If parts.Length < 3 Then Continue For
|
||||||
|
|
||||||
Select Case LCase(pName)
|
Dim key As String = parts(0)
|
||||||
Case "full address"
|
Dim value As String = parts(2)
|
||||||
nConI.Hostname = pValue
|
|
||||||
Case "server port"
|
|
||||||
nConI.Port = pValue
|
|
||||||
Case "username"
|
|
||||||
nConI.Username = pValue
|
|
||||||
Case "domain"
|
|
||||||
nConI.Domain = pValue
|
|
||||||
Case "session bpp"
|
|
||||||
Select Case pValue
|
|
||||||
Case 8
|
|
||||||
nConI.Colors = Connection.Protocol.RDP.RDPColors.Colors256
|
|
||||||
Case 15
|
|
||||||
nConI.Colors = Connection.Protocol.RDP.RDPColors.Colors15Bit
|
|
||||||
Case 16
|
|
||||||
nConI.Colors = Connection.Protocol.RDP.RDPColors.Colors16Bit
|
|
||||||
Case 24
|
|
||||||
nConI.Colors = Connection.Protocol.RDP.RDPColors.Colors24Bit
|
|
||||||
Case 32
|
|
||||||
nConI.Colors = Connection.Protocol.RDP.RDPColors.Colors32Bit
|
|
||||||
End Select
|
|
||||||
Case "bitmapcachepersistenable"
|
|
||||||
If pValue = 1 Then
|
|
||||||
nConI.CacheBitmaps = True
|
|
||||||
Else
|
|
||||||
nConI.CacheBitmaps = False
|
|
||||||
End If
|
|
||||||
Case "screen mode id"
|
|
||||||
If pValue = 2 Then
|
|
||||||
nConI.Resolution = Connection.Protocol.RDP.RDPResolutions.Fullscreen
|
|
||||||
Else
|
|
||||||
nConI.Resolution = Connection.Protocol.RDP.RDPResolutions.FitToWindow
|
|
||||||
End If
|
|
||||||
Case "connect to console"
|
|
||||||
If pValue = 1 Then
|
|
||||||
nConI.UseConsoleSession = True
|
|
||||||
End If
|
|
||||||
Case "disable wallpaper"
|
|
||||||
If pValue = 1 Then
|
|
||||||
nConI.DisplayWallpaper = True
|
|
||||||
Else
|
|
||||||
nConI.DisplayWallpaper = False
|
|
||||||
End If
|
|
||||||
Case "disable themes"
|
|
||||||
If pValue = 1 Then
|
|
||||||
nConI.DisplayThemes = True
|
|
||||||
Else
|
|
||||||
nConI.DisplayThemes = False
|
|
||||||
End If
|
|
||||||
Case "allow font smoothing"
|
|
||||||
If pValue = 1 Then
|
|
||||||
nConI.EnableFontSmoothing = True
|
|
||||||
Else
|
|
||||||
nConI.EnableFontSmoothing = False
|
|
||||||
End If
|
|
||||||
Case "allow desktop composition"
|
|
||||||
If pValue = 1 Then
|
|
||||||
nConI.EnableDesktopComposition = True
|
|
||||||
Else
|
|
||||||
nConI.EnableDesktopComposition = False
|
|
||||||
End If
|
|
||||||
Case "redirectsmartcards"
|
|
||||||
If pValue = 1 Then
|
|
||||||
nConI.RedirectSmartCards = True
|
|
||||||
Else
|
|
||||||
nConI.RedirectSmartCards = False
|
|
||||||
End If
|
|
||||||
Case "redirectdrives"
|
|
||||||
If pValue = 1 Then
|
|
||||||
nConI.RedirectDiskDrives = True
|
|
||||||
Else
|
|
||||||
nConI.RedirectDiskDrives = False
|
|
||||||
End If
|
|
||||||
Case "redirectcomports"
|
|
||||||
If pValue = 1 Then
|
|
||||||
nConI.RedirectPorts = True
|
|
||||||
Else
|
|
||||||
nConI.RedirectPorts = False
|
|
||||||
End If
|
|
||||||
Case "redirectprinters"
|
|
||||||
If pValue = 1 Then
|
|
||||||
nConI.RedirectPrinters = True
|
|
||||||
Else
|
|
||||||
nConI.RedirectPrinters = False
|
|
||||||
End If
|
|
||||||
Case "audiomode"
|
|
||||||
Select Case pValue
|
|
||||||
Case 0
|
|
||||||
nConI.RedirectSound = Connection.Protocol.RDP.RDPSounds.BringToThisComputer
|
|
||||||
Case 1
|
|
||||||
nConI.RedirectSound = Connection.Protocol.RDP.RDPSounds.LeaveAtRemoteComputer
|
|
||||||
Case 2
|
|
||||||
nConI.RedirectSound = Connection.Protocol.RDP.RDPSounds.DoNotPlay
|
|
||||||
End Select
|
|
||||||
End Select
|
|
||||||
Next
|
|
||||||
|
|
||||||
nNode.Tag = nConI
|
Select Case LCase(key)
|
||||||
Windows.treeForm.tvConnections.SelectedNode.Nodes.Add(nNode)
|
Case "full address"
|
||||||
|
Dim uri As New Uri("dummyscheme" + uri.SchemeDelimiter + value)
|
||||||
If Tree.Node.GetNodeType(nNode.Parent) = Tree.Node.Type.Container Then
|
If Not String.IsNullOrEmpty(uri.Host) Then connectionInfo.Hostname = uri.Host
|
||||||
nConI.Parent = nNode.Parent.Tag
|
If Not uri.Port = -1 Then connectionInfo.Port = uri.Port
|
||||||
End If
|
Case "server port"
|
||||||
|
connectionInfo.Port = value
|
||||||
ConnectionList.Add(nConI)
|
Case "username"
|
||||||
|
connectionInfo.Username = value
|
||||||
|
Case "domain"
|
||||||
|
connectionInfo.Domain = value
|
||||||
|
Case "session bpp"
|
||||||
|
Select Case value
|
||||||
|
Case 8
|
||||||
|
connectionInfo.Colors = Protocol.RDP.RDPColors.Colors256
|
||||||
|
Case 15
|
||||||
|
connectionInfo.Colors = Protocol.RDP.RDPColors.Colors15Bit
|
||||||
|
Case 16
|
||||||
|
connectionInfo.Colors = Protocol.RDP.RDPColors.Colors16Bit
|
||||||
|
Case 24
|
||||||
|
connectionInfo.Colors = Protocol.RDP.RDPColors.Colors24Bit
|
||||||
|
Case 32
|
||||||
|
connectionInfo.Colors = Protocol.RDP.RDPColors.Colors32Bit
|
||||||
|
End Select
|
||||||
|
Case "bitmapcachepersistenable"
|
||||||
|
If value = 1 Then
|
||||||
|
connectionInfo.CacheBitmaps = True
|
||||||
|
Else
|
||||||
|
connectionInfo.CacheBitmaps = False
|
||||||
|
End If
|
||||||
|
Case "screen mode id"
|
||||||
|
If value = 2 Then
|
||||||
|
connectionInfo.Resolution = Protocol.RDP.RDPResolutions.Fullscreen
|
||||||
|
Else
|
||||||
|
connectionInfo.Resolution = Protocol.RDP.RDPResolutions.FitToWindow
|
||||||
|
End If
|
||||||
|
Case "connect to console"
|
||||||
|
If value = 1 Then
|
||||||
|
connectionInfo.UseConsoleSession = True
|
||||||
|
End If
|
||||||
|
Case "disable wallpaper"
|
||||||
|
If value = 1 Then
|
||||||
|
connectionInfo.DisplayWallpaper = True
|
||||||
|
Else
|
||||||
|
connectionInfo.DisplayWallpaper = False
|
||||||
|
End If
|
||||||
|
Case "disable themes"
|
||||||
|
If value = 1 Then
|
||||||
|
connectionInfo.DisplayThemes = True
|
||||||
|
Else
|
||||||
|
connectionInfo.DisplayThemes = False
|
||||||
|
End If
|
||||||
|
Case "allow font smoothing"
|
||||||
|
If value = 1 Then
|
||||||
|
connectionInfo.EnableFontSmoothing = True
|
||||||
|
Else
|
||||||
|
connectionInfo.EnableFontSmoothing = False
|
||||||
|
End If
|
||||||
|
Case "allow desktop composition"
|
||||||
|
If value = 1 Then
|
||||||
|
connectionInfo.EnableDesktopComposition = True
|
||||||
|
Else
|
||||||
|
connectionInfo.EnableDesktopComposition = False
|
||||||
|
End If
|
||||||
|
Case "redirectsmartcards"
|
||||||
|
If value = 1 Then
|
||||||
|
connectionInfo.RedirectSmartCards = True
|
||||||
|
Else
|
||||||
|
connectionInfo.RedirectSmartCards = False
|
||||||
|
End If
|
||||||
|
Case "redirectdrives"
|
||||||
|
If value = 1 Then
|
||||||
|
connectionInfo.RedirectDiskDrives = True
|
||||||
|
Else
|
||||||
|
connectionInfo.RedirectDiskDrives = False
|
||||||
|
End If
|
||||||
|
Case "redirectcomports"
|
||||||
|
If value = 1 Then
|
||||||
|
connectionInfo.RedirectPorts = True
|
||||||
|
Else
|
||||||
|
connectionInfo.RedirectPorts = False
|
||||||
|
End If
|
||||||
|
Case "redirectprinters"
|
||||||
|
If value = 1 Then
|
||||||
|
connectionInfo.RedirectPrinters = True
|
||||||
|
Else
|
||||||
|
connectionInfo.RedirectPrinters = False
|
||||||
|
End If
|
||||||
|
Case "audiomode"
|
||||||
|
Select Case value
|
||||||
|
Case 0
|
||||||
|
connectionInfo.RedirectSound = Protocol.RDP.RDPSounds.BringToThisComputer
|
||||||
|
Case 1
|
||||||
|
connectionInfo.RedirectSound = Protocol.RDP.RDPSounds.LeaveAtRemoteComputer
|
||||||
|
Case 2
|
||||||
|
connectionInfo.RedirectSound = Protocol.RDP.RDPSounds.DoNotPlay
|
||||||
|
End Select
|
||||||
|
End Select
|
||||||
Next
|
Next
|
||||||
End If
|
|
||||||
|
treeNode.Tag = connectionInfo
|
||||||
|
Windows.treeForm.tvConnections.SelectedNode.Nodes.Add(treeNode)
|
||||||
|
|
||||||
|
If Tree.Node.GetNodeType(treeNode.Parent) = Tree.Node.Type.Container Then
|
||||||
|
connectionInfo.Parent = treeNode.Parent.Tag
|
||||||
|
End If
|
||||||
|
|
||||||
|
ConnectionList.Add(connectionInfo)
|
||||||
|
Next
|
||||||
Catch ex As Exception
|
Catch ex As Exception
|
||||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strRdpFileCouldNotBeImported & vbNewLine & vbNewLine & ex.Message)
|
MessageCollector.AddExceptionMessage(My.Language.strRdpFileCouldNotBeImported, ex)
|
||||||
End Try
|
End Try
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
|
|||||||
@@ -1,264 +1,431 @@
|
|||||||
Imports System.IO
|
Imports System.IO
|
||||||
Imports System.Net
|
Imports System.Net
|
||||||
Imports mRemoteNG.App.Runtime
|
Imports System.ComponentModel
|
||||||
|
Imports System.Threading
|
||||||
|
Imports mRemoteNG.Tools
|
||||||
|
Imports System.Reflection
|
||||||
|
|
||||||
Namespace App
|
Namespace App
|
||||||
Public Class Update
|
Public Class Update
|
||||||
Public Event DownloadProgressChanged(ByVal sender As Object, ByVal e As System.Net.DownloadProgressChangedEventArgs)
|
#Region "Events"
|
||||||
Public Event DownloadCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.AsyncCompletedEventArgs, ByVal Success As Boolean)
|
Public Event GetUpdateInfoCompletedEvent As AsyncCompletedEventHandler
|
||||||
|
Public Event GetChangeLogCompletedEvent As AsyncCompletedEventHandler
|
||||||
|
Public Event GetAnnouncementInfoCompletedEvent As AsyncCompletedEventHandler
|
||||||
|
Public Event DownloadUpdateProgressChangedEvent As DownloadProgressChangedEventHandler
|
||||||
|
Public Event DownloadUpdateCompletedEvent As AsyncCompletedEventHandler
|
||||||
|
#End Region
|
||||||
|
|
||||||
#Region "Public Properties"
|
#Region "Public Properties"
|
||||||
Private _curUI As Info
|
Private _currentUpdateInfo As UpdateInfo
|
||||||
Public ReadOnly Property curUI() As Info
|
Public ReadOnly Property CurrentUpdateInfo() As UpdateInfo
|
||||||
Get
|
Get
|
||||||
Return _curUI
|
Return _currentUpdateInfo
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
|
||||||
|
Private _changeLog As String
|
||||||
|
Public ReadOnly Property ChangeLog() As String
|
||||||
|
Get
|
||||||
|
Return _changeLog
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
|
||||||
|
Private _currentAnnouncementInfo As AnnouncementInfo
|
||||||
|
Public ReadOnly Property CurrentAnnouncementInfo() As AnnouncementInfo
|
||||||
|
Get
|
||||||
|
Return _currentAnnouncementInfo
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
|
||||||
|
Public ReadOnly Property IsGetUpdateInfoRunning() As Boolean
|
||||||
|
Get
|
||||||
|
If _getUpdateInfoThread IsNot Nothing Then
|
||||||
|
If _getUpdateInfoThread.IsAlive Then Return True
|
||||||
|
End If
|
||||||
|
Return False
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
|
||||||
|
Public ReadOnly Property IsGetChangeLogRunning() As Boolean
|
||||||
|
Get
|
||||||
|
If _getChangeLogThread IsNot Nothing Then
|
||||||
|
If _getChangeLogThread.IsAlive Then Return True
|
||||||
|
End If
|
||||||
|
Return False
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
|
||||||
|
Public ReadOnly Property IsGetAnnouncementInfoRunning() As Boolean
|
||||||
|
Get
|
||||||
|
If _getAnnouncementInfoThread IsNot Nothing Then
|
||||||
|
If _getAnnouncementInfoThread.IsAlive Then Return True
|
||||||
|
End If
|
||||||
|
Return False
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
|
||||||
|
Public ReadOnly Property IsDownloadUpdateRunning() As Boolean
|
||||||
|
Get
|
||||||
|
Return (_downloadUpdateWebClient IsNot Nothing)
|
||||||
End Get
|
End Get
|
||||||
End Property
|
End Property
|
||||||
#End Region
|
#End Region
|
||||||
|
|
||||||
#Region "Private Properties"
|
|
||||||
Private wCl As WebClient
|
|
||||||
Private wPr As WebProxy
|
|
||||||
#End Region
|
|
||||||
|
|
||||||
#Region "Public Methods"
|
#Region "Public Methods"
|
||||||
Public Function IsProxyOK() As Boolean
|
Public Sub New()
|
||||||
Try
|
SetProxySettings()
|
||||||
Dim uI As Info = GetUpdateInfo()
|
End Sub
|
||||||
|
|
||||||
Return uI.InfoOk
|
Public Sub SetProxySettings()
|
||||||
Catch ex As Exception
|
SetProxySettings(My.Settings.UpdateUseProxy, My.Settings.UpdateProxyAddress, My.Settings.UpdateProxyPort, My.Settings.UpdateProxyUseAuthentication, My.Settings.UpdateProxyAuthUser, Security.Crypt.Decrypt(My.Settings.UpdateProxyAuthPass, Info.General.EncryptionKey))
|
||||||
MessageCollector.AddMessage(Messages.MessageClass.WarningMsg, "IsProxyOK (App.Update) failed" & vbNewLine & ex.Message, False)
|
End Sub
|
||||||
Return False
|
|
||||||
End Try
|
|
||||||
End Function
|
|
||||||
|
|
||||||
Public Function IsUpdateAvailable() As Boolean
|
Public Sub SetProxySettings(ByVal useProxy As Boolean, ByVal address As String, ByVal port As Integer, ByVal useAuthentication As Boolean, ByVal username As String, ByVal password As String)
|
||||||
Try
|
If useProxy And Not String.IsNullOrEmpty(address) Then
|
||||||
Dim uI As Info = GetUpdateInfo()
|
If Not port = 0 Then
|
||||||
|
_webProxy = New WebProxy(address, port)
|
||||||
If uI.InfoOk = False Then
|
|
||||||
Return False
|
|
||||||
End If
|
|
||||||
|
|
||||||
If uI.Version > My.Application.Info.Version Then
|
|
||||||
Return True
|
|
||||||
Else
|
Else
|
||||||
Return False
|
_webProxy = New WebProxy(address)
|
||||||
End If
|
End If
|
||||||
Catch ex As Exception
|
|
||||||
MessageCollector.AddMessage(Messages.MessageClass.WarningMsg, "IsUpdateAvailable failed" & vbNewLine & ex.Message, True)
|
|
||||||
Return False
|
|
||||||
End Try
|
|
||||||
End Function
|
|
||||||
|
|
||||||
Public Function GetUpdateInfo() As Info
|
If useAuthentication Then
|
||||||
Try
|
_webProxy.Credentials = New NetworkCredential(username, password)
|
||||||
Dim strUpdate As String = GetUpdateFile()
|
|
||||||
|
|
||||||
CreateWebClient()
|
|
||||||
|
|
||||||
Dim uI As New Info()
|
|
||||||
|
|
||||||
If strUpdate <> "" Then
|
|
||||||
uI.InfoOk = True
|
|
||||||
|
|
||||||
Try
|
|
||||||
'get Version
|
|
||||||
Dim strV As String = strUpdate.Substring(strUpdate.IndexOf("Version: ") + 9, strUpdate.IndexOf(vbNewLine) - 9)
|
|
||||||
uI.Version = New Version(strV)
|
|
||||||
|
|
||||||
strUpdate = strUpdate.Remove(0, strUpdate.IndexOf(vbNewLine) + 2)
|
|
||||||
|
|
||||||
'get Download URL
|
|
||||||
Dim strU As String = ""
|
|
||||||
|
|
||||||
strU = strUpdate.Substring(strUpdate.IndexOf("dURL: ") + 6, strUpdate.IndexOf(vbNewLine) - 6)
|
|
||||||
|
|
||||||
uI.DownloadUrl = strU
|
|
||||||
|
|
||||||
strUpdate = strUpdate.Remove(0, strUpdate.IndexOf(vbNewLine) + 2)
|
|
||||||
|
|
||||||
'get Change Log
|
|
||||||
Dim strClURL As String = strUpdate.Substring(strUpdate.IndexOf("clURL: ") + 7, strUpdate.IndexOf(vbNewLine) - 7)
|
|
||||||
Dim strCl As String = wCl.DownloadString(strClURL)
|
|
||||||
uI.ChangeLog = strCl
|
|
||||||
|
|
||||||
strUpdate = strUpdate.Remove(0, strUpdate.IndexOf(vbNewLine) + 2)
|
|
||||||
|
|
||||||
Try
|
|
||||||
'get Image
|
|
||||||
Dim strImgURL As String = strUpdate.Substring(strUpdate.IndexOf("imgURL: ") + 8, strUpdate.IndexOf(vbNewLine) - 8)
|
|
||||||
uI.ImageURL = strImgURL
|
|
||||||
|
|
||||||
strUpdate = strUpdate.Remove(0, strUpdate.IndexOf(vbNewLine) + 2)
|
|
||||||
|
|
||||||
'get Image Link
|
|
||||||
Dim strImgURLLink As String = strUpdate.Substring(strUpdate.IndexOf("imgURLLink: ") + 12, strUpdate.IndexOf(vbNewLine) - 12)
|
|
||||||
uI.ImageURLLink = strImgURLLink
|
|
||||||
Catch ex As Exception
|
|
||||||
MessageCollector.AddMessage(Messages.MessageClass.WarningMsg, "Update Image Info could not be read." & vbNewLine & ex.Message, True)
|
|
||||||
End Try
|
|
||||||
Catch ex As Exception
|
|
||||||
uI.InfoOk = False
|
|
||||||
End Try
|
|
||||||
Else
|
Else
|
||||||
uI.InfoOk = False
|
_webProxy.Credentials = Nothing
|
||||||
End If
|
End If
|
||||||
|
Else
|
||||||
_curUI = uI
|
_webProxy = Nothing
|
||||||
Return uI
|
|
||||||
Catch ex As Exception
|
|
||||||
MessageCollector.AddMessage(Messages.MessageClass.WarningMsg, "Getting update info failed" & vbNewLine & ex.Message, True)
|
|
||||||
Return Nothing
|
|
||||||
End Try
|
|
||||||
End Function
|
|
||||||
|
|
||||||
Public Function DownloadUpdate(ByVal dURL As String) As Boolean
|
|
||||||
Try
|
|
||||||
CreateWebClient()
|
|
||||||
|
|
||||||
AddHandler wCl.DownloadProgressChanged, AddressOf DLProgressChanged
|
|
||||||
AddHandler wCl.DownloadFileCompleted, AddressOf DLCompleted
|
|
||||||
|
|
||||||
_curUI.UpdateLocation = My.Computer.FileSystem.SpecialDirectories.Temp & "\mRemote_Update.exe"
|
|
||||||
wCl.DownloadFileAsync(New Uri(dURL), _curUI.UpdateLocation)
|
|
||||||
|
|
||||||
Return True
|
|
||||||
Catch ex As Exception
|
|
||||||
MessageCollector.AddMessage(Messages.MessageClass.WarningMsg, "Update download failed" & vbNewLine & ex.Message, True)
|
|
||||||
Return False
|
|
||||||
End Try
|
|
||||||
End Function
|
|
||||||
#End Region
|
|
||||||
|
|
||||||
#Region "Private Methods"
|
|
||||||
Private Sub CreateWebClient()
|
|
||||||
wCl = New WebClient()
|
|
||||||
|
|
||||||
If My.Settings.UpdateUseProxy Then
|
|
||||||
wPr = New WebProxy(My.Settings.UpdateProxyAddress, My.Settings.UpdateProxyPort)
|
|
||||||
|
|
||||||
If My.Settings.UpdateProxyUseAuthentication Then
|
|
||||||
Dim cred As ICredentials
|
|
||||||
cred = New NetworkCredential(My.Settings.UpdateProxyAuthUser, Security.Crypt.Decrypt(My.Settings.UpdateProxyAuthPass, App.Info.General.EncryptionKey))
|
|
||||||
|
|
||||||
wPr.Credentials = cred
|
|
||||||
End If
|
|
||||||
|
|
||||||
wCl.Proxy = wPr
|
|
||||||
End If
|
End If
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
Private Function GetUpdateFile() As String
|
Public Function IsUpdateAvailable() As Boolean
|
||||||
Try
|
If _currentUpdateInfo Is Nothing OrElse Not _currentUpdateInfo.IsValid Then Return False
|
||||||
CreateWebClient()
|
|
||||||
|
|
||||||
Dim strTemp As String
|
Return _currentUpdateInfo.Version > My.Application.Info.Version
|
||||||
|
|
||||||
Try
|
|
||||||
strTemp = wCl.DownloadString(App.Info.Update.URL & App.Info.Update.File)
|
|
||||||
Catch ex As Exception
|
|
||||||
strTemp = ""
|
|
||||||
End Try
|
|
||||||
|
|
||||||
Return strTemp
|
|
||||||
Catch ex As Exception
|
|
||||||
MessageCollector.AddMessage(Messages.MessageClass.WarningMsg, "GetUpdateFile failed" & vbNewLine & ex.Message, True)
|
|
||||||
Return ""
|
|
||||||
End Try
|
|
||||||
End Function
|
End Function
|
||||||
|
|
||||||
Private Sub DLProgressChanged(ByVal sender As Object, ByVal e As System.Net.DownloadProgressChangedEventArgs)
|
Public Function IsAnnouncementAvailable() As Boolean
|
||||||
RaiseEvent DownloadProgressChanged(sender, e)
|
If _currentAnnouncementInfo Is Nothing OrElse _
|
||||||
|
(Not _currentAnnouncementInfo.IsValid Or _
|
||||||
|
String.IsNullOrEmpty(_currentAnnouncementInfo.Name)) Then Return False
|
||||||
|
|
||||||
|
Return (Not _currentAnnouncementInfo.Name = My.Settings.LastAnnouncement)
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Public Sub GetUpdateInfoAsync()
|
||||||
|
If IsGetUpdateInfoRunning Then _getUpdateInfoThread.Abort()
|
||||||
|
|
||||||
|
_getUpdateInfoThread = New Thread(AddressOf GetUpdateInfo)
|
||||||
|
With _getUpdateInfoThread
|
||||||
|
.SetApartmentState(ApartmentState.STA)
|
||||||
|
.IsBackground = True
|
||||||
|
.Start()
|
||||||
|
End With
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
Private Sub DLCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.AsyncCompletedEventArgs)
|
Public Sub GetChangeLogAsync()
|
||||||
Try
|
If _currentUpdateInfo Is Nothing OrElse Not _currentUpdateInfo.IsValid Then
|
||||||
Dim fInfo As New FileInfo(_curUI.UpdateLocation)
|
Throw New InvalidOperationException("CurrentUpdateInfo is not valid. GetUpdateInfoAsync() must be called before calling GetChangeLogAsync().")
|
||||||
|
End If
|
||||||
|
|
||||||
If fInfo.Length > 0 Then
|
If IsGetChangeLogRunning Then _getChangeLogThread.Abort()
|
||||||
RaiseEvent DownloadCompleted(sender, e, True)
|
|
||||||
Else
|
_getChangeLogThread = New Thread(AddressOf GetChangeLog)
|
||||||
fInfo.Delete()
|
With _getChangeLogThread
|
||||||
RaiseEvent DownloadCompleted(sender, e, False)
|
.SetApartmentState(ApartmentState.STA)
|
||||||
End If
|
.IsBackground = True
|
||||||
Catch ex As Exception
|
.Start()
|
||||||
MessageCollector.AddMessage(Messages.MessageClass.WarningMsg, "DLCompleted failed" & vbNewLine & ex.Message, True)
|
End With
|
||||||
End Try
|
End Sub
|
||||||
|
|
||||||
|
Public Sub GetAnnouncementInfoAsync()
|
||||||
|
If IsGetAnnouncementInfoRunning Then _getAnnouncementInfoThread.Abort()
|
||||||
|
|
||||||
|
_getAnnouncementInfoThread = New Thread(AddressOf GetAnnouncementInfo)
|
||||||
|
With _getAnnouncementInfoThread
|
||||||
|
.SetApartmentState(ApartmentState.STA)
|
||||||
|
.IsBackground = True
|
||||||
|
.Start()
|
||||||
|
End With
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Public Sub DownloadUpdateAsync()
|
||||||
|
If _downloadUpdateWebClient IsNot Nothing Then
|
||||||
|
Throw New InvalidOperationException("A previous call to DownloadUpdateAsync() is still in progress.")
|
||||||
|
End If
|
||||||
|
|
||||||
|
If _currentUpdateInfo Is Nothing OrElse Not _currentUpdateInfo.IsValid Then
|
||||||
|
Throw New InvalidOperationException("CurrentUpdateInfo is not valid. GetUpdateInfoAsync() must be called before calling DownloadUpdateAsync().")
|
||||||
|
End If
|
||||||
|
|
||||||
|
_currentUpdateInfo.UpdateFilePath = Path.Combine(Path.GetTempPath(), Path.ChangeExtension(Path.GetRandomFileName, "exe"))
|
||||||
|
DownloadUpdateWebClient.DownloadFileAsync(CurrentUpdateInfo.DownloadAddress, _currentUpdateInfo.UpdateFilePath)
|
||||||
End Sub
|
End Sub
|
||||||
#End Region
|
#End Region
|
||||||
|
|
||||||
Public Class Info
|
#Region "Private Properties"
|
||||||
Private _Version As Version
|
Private _downloadUpdateWebClient As WebClient
|
||||||
Public Property Version() As Version
|
Private ReadOnly Property DownloadUpdateWebClient() As WebClient
|
||||||
Get
|
Get
|
||||||
Return _Version
|
If _downloadUpdateWebClient IsNot Nothing Then Return _downloadUpdateWebClient
|
||||||
End Get
|
|
||||||
Set(ByVal value As Version)
|
|
||||||
_Version = value
|
|
||||||
End Set
|
|
||||||
End Property
|
|
||||||
|
|
||||||
Private _DownloadUrl As String
|
_downloadUpdateWebClient = CreateWebClient()
|
||||||
Public Property DownloadUrl() As String
|
|
||||||
Get
|
|
||||||
Return _DownloadUrl
|
|
||||||
End Get
|
|
||||||
Set(ByVal value As String)
|
|
||||||
_DownloadUrl = value
|
|
||||||
End Set
|
|
||||||
End Property
|
|
||||||
|
|
||||||
Private _UpdateLocation As String
|
AddHandler _downloadUpdateWebClient.DownloadProgressChanged, AddressOf DownloadUpdateProgressChanged
|
||||||
Public Property UpdateLocation() As String
|
AddHandler _downloadUpdateWebClient.DownloadFileCompleted, AddressOf DownloadUpdateCompleted
|
||||||
Get
|
|
||||||
Return _UpdateLocation
|
|
||||||
End Get
|
|
||||||
Set(ByVal value As String)
|
|
||||||
_UpdateLocation = value
|
|
||||||
End Set
|
|
||||||
End Property
|
|
||||||
|
|
||||||
Private _ChangeLog As String
|
Return _downloadUpdateWebClient
|
||||||
Public Property ChangeLog() As String
|
End Get
|
||||||
Get
|
End Property
|
||||||
Return _ChangeLog
|
#End Region
|
||||||
End Get
|
|
||||||
Set(ByVal value As String)
|
|
||||||
_ChangeLog = value
|
|
||||||
End Set
|
|
||||||
End Property
|
|
||||||
|
|
||||||
Private _ImageURL As String
|
#Region "Private Fields"
|
||||||
Public Property ImageURL() As String
|
Private _webProxy As WebProxy
|
||||||
Get
|
Private _getUpdateInfoThread As Thread
|
||||||
Return _ImageURL
|
Private _getChangeLogThread As Thread
|
||||||
End Get
|
Private _getAnnouncementInfoThread As Thread
|
||||||
Set(ByVal value As String)
|
#End Region
|
||||||
_ImageURL = value
|
|
||||||
End Set
|
|
||||||
End Property
|
|
||||||
|
|
||||||
Private _ImageURLLink As String
|
#Region "Private Methods"
|
||||||
Public Property ImageURLLink() As String
|
Private Function CreateWebClient() As WebClient
|
||||||
Get
|
Dim webClient As New WebClient
|
||||||
Return _ImageURLLink
|
webClient.Headers.Add("user-agent", Info.General.UserAgent)
|
||||||
End Get
|
webClient.Proxy = _webProxy
|
||||||
Set(ByVal value As String)
|
Return webClient
|
||||||
_ImageURLLink = value
|
End Function
|
||||||
End Set
|
|
||||||
End Property
|
|
||||||
|
|
||||||
Private _InfoOk As Boolean
|
Private Shared Function NewDownloadStringCompletedEventArgs(ByVal result As String, ByVal exception As Exception, ByVal cancelled As Boolean, ByVal userToken As Object) As DownloadStringCompletedEventArgs
|
||||||
Public Property InfoOk() As Boolean
|
Dim type As Type = GetType(DownloadStringCompletedEventArgs)
|
||||||
Get
|
Const bindingFlags As BindingFlags = bindingFlags.NonPublic Or bindingFlags.Instance
|
||||||
Return _InfoOk
|
Dim argumentTypes() As Type = {GetType(String), GetType(Exception), GetType(Boolean), GetType(Object)}
|
||||||
End Get
|
Dim constructor As ConstructorInfo = type.GetConstructor(bindingFlags, Nothing, argumentTypes, Nothing)
|
||||||
Set(ByVal value As Boolean)
|
Dim arguments() As Object = {result, exception, cancelled, userToken}
|
||||||
_InfoOk = value
|
|
||||||
End Set
|
Return constructor.Invoke(arguments)
|
||||||
End Property
|
End Function
|
||||||
|
|
||||||
|
Private Function DownloadString(ByVal address As Uri) As DownloadStringCompletedEventArgs
|
||||||
|
Dim webClient As WebClient = CreateWebClient()
|
||||||
|
Dim result As String = String.Empty
|
||||||
|
Dim exception As Exception = Nothing
|
||||||
|
Dim cancelled As Boolean = False
|
||||||
|
|
||||||
|
Try
|
||||||
|
result = webClient.DownloadString(address)
|
||||||
|
Catch ex As ThreadAbortException
|
||||||
|
cancelled = True
|
||||||
|
Catch ex As Exception
|
||||||
|
exception = ex
|
||||||
|
End Try
|
||||||
|
|
||||||
|
Return NewDownloadStringCompletedEventArgs(result, exception, cancelled, Nothing)
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Private Sub GetUpdateInfo()
|
||||||
|
Dim updateFileUri As New Uri(New Uri(My.Settings.UpdateAddress), New Uri(Info.Update.FileName, UriKind.Relative))
|
||||||
|
Dim e As DownloadStringCompletedEventArgs = DownloadString(updateFileUri)
|
||||||
|
|
||||||
|
If Not e.Cancelled And e.Error Is Nothing Then
|
||||||
|
_currentUpdateInfo = UpdateInfo.FromString(e.Result)
|
||||||
|
|
||||||
|
My.Settings.CheckForUpdatesLastCheck = Date.UtcNow
|
||||||
|
If Not My.Settings.UpdatePending Then
|
||||||
|
My.Settings.UpdatePending = IsUpdateAvailable()
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
|
||||||
|
RaiseEvent GetUpdateInfoCompletedEvent(Me, e)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub GetChangeLog()
|
||||||
|
Dim e As DownloadStringCompletedEventArgs = DownloadString(_currentUpdateInfo.ChangeLogAddress)
|
||||||
|
|
||||||
|
If Not e.Cancelled And e.Error Is Nothing Then _changeLog = e.Result
|
||||||
|
|
||||||
|
RaiseEvent GetChangeLogCompletedEvent(Me, e)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub GetAnnouncementInfo()
|
||||||
|
Dim announcementFileUri As New Uri(My.Settings.AnnouncementAddress)
|
||||||
|
Dim e As DownloadStringCompletedEventArgs = DownloadString(announcementFileUri)
|
||||||
|
|
||||||
|
If Not e.Cancelled And e.Error Is Nothing Then
|
||||||
|
_currentAnnouncementInfo = AnnouncementInfo.FromString(e.Result)
|
||||||
|
|
||||||
|
If Not String.IsNullOrEmpty(_currentAnnouncementInfo.Name) Then
|
||||||
|
My.Settings.LastAnnouncement = _currentAnnouncementInfo.Name
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
|
||||||
|
RaiseEvent GetAnnouncementInfoCompletedEvent(Me, e)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub DownloadUpdateProgressChanged(ByVal sender As Object, ByVal e As DownloadProgressChangedEventArgs)
|
||||||
|
RaiseEvent DownloadUpdateProgressChangedEvent(sender, e)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub DownloadUpdateCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.AsyncCompletedEventArgs)
|
||||||
|
Dim raiseEventArgs As AsyncCompletedEventArgs = e
|
||||||
|
|
||||||
|
If Not e.Cancelled And e.Error Is Nothing Then
|
||||||
|
Try
|
||||||
|
Dim updateAuthenticode As New Authenticode(_currentUpdateInfo.UpdateFilePath)
|
||||||
|
With updateAuthenticode
|
||||||
|
.RequireThumbprintMatch = True
|
||||||
|
.ThumbprintToMatch = _currentUpdateInfo.CertificateThumbprint
|
||||||
|
|
||||||
|
If Not .Verify() = Authenticode.StatusValue.Verified Then
|
||||||
|
If .Status = Authenticode.StatusValue.UnhandledException Then
|
||||||
|
Throw .Exception
|
||||||
|
Else
|
||||||
|
Throw New Exception(.StatusMessage)
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
End With
|
||||||
|
Catch ex As Exception
|
||||||
|
raiseEventArgs = New AsyncCompletedEventArgs(ex, False, Nothing)
|
||||||
|
End Try
|
||||||
|
End If
|
||||||
|
|
||||||
|
If raiseEventArgs.Cancelled Or raiseEventArgs.Error IsNot Nothing Then
|
||||||
|
File.Delete(_currentUpdateInfo.UpdateFilePath)
|
||||||
|
End If
|
||||||
|
|
||||||
|
RaiseEvent DownloadUpdateCompletedEvent(Me, raiseEventArgs)
|
||||||
|
|
||||||
|
_downloadUpdateWebClient.Dispose()
|
||||||
|
_downloadUpdateWebClient = Nothing
|
||||||
|
End Sub
|
||||||
|
#End Region
|
||||||
|
|
||||||
|
#Region "Public Classes"
|
||||||
|
Public Class UpdateInfo
|
||||||
|
#Region "Public Properties"
|
||||||
|
Public Property IsValid As Boolean
|
||||||
|
Public Property Version As Version
|
||||||
|
Public Property DownloadAddress As Uri
|
||||||
|
Public Property UpdateFilePath As String
|
||||||
|
Public Property ChangeLogAddress As Uri
|
||||||
|
Public Property ImageAddress As Uri
|
||||||
|
Public Property ImageLinkAddress As Uri
|
||||||
|
Public Property CertificateThumbprint As String
|
||||||
|
#End Region
|
||||||
|
|
||||||
|
#Region "Public Methods"
|
||||||
|
Public Shared Function FromString(ByVal input As String) As UpdateInfo
|
||||||
|
Dim newInfo As New UpdateInfo
|
||||||
|
With newInfo
|
||||||
|
If String.IsNullOrEmpty(input) Then
|
||||||
|
.IsValid = False
|
||||||
|
Else
|
||||||
|
Dim updateFile As New UpdateFile(input)
|
||||||
|
.Version = updateFile.GetVersion("Version")
|
||||||
|
.DownloadAddress = updateFile.GetUri("dURL")
|
||||||
|
.ChangeLogAddress = updateFile.GetUri("clURL")
|
||||||
|
.ImageAddress = updateFile.GetUri("imgURL")
|
||||||
|
.ImageLinkAddress = updateFile.GetUri("imgURLLink")
|
||||||
|
.CertificateThumbprint = updateFile.GetThumbprint("CertificateThumbprint")
|
||||||
|
.IsValid = True
|
||||||
|
End If
|
||||||
|
End With
|
||||||
|
Return newInfo
|
||||||
|
End Function
|
||||||
|
#End Region
|
||||||
End Class
|
End Class
|
||||||
|
|
||||||
|
Public Class AnnouncementInfo
|
||||||
|
#Region "Public Properties"
|
||||||
|
Public Property IsValid As Boolean
|
||||||
|
Public Property Name As String
|
||||||
|
Public Property Address As Uri
|
||||||
|
#End Region
|
||||||
|
|
||||||
|
#Region "Public Methods"
|
||||||
|
Public Shared Function FromString(ByVal input As String) As AnnouncementInfo
|
||||||
|
Dim newInfo As New AnnouncementInfo
|
||||||
|
With newInfo
|
||||||
|
If String.IsNullOrEmpty(input) Then
|
||||||
|
.IsValid = False
|
||||||
|
Else
|
||||||
|
Dim updateFile As New UpdateFile(input)
|
||||||
|
.Name = updateFile.GetString("Name")
|
||||||
|
.Address = updateFile.GetUri("URL")
|
||||||
|
.IsValid = True
|
||||||
|
End If
|
||||||
|
End With
|
||||||
|
Return newInfo
|
||||||
|
End Function
|
||||||
|
#End Region
|
||||||
|
End Class
|
||||||
|
#End Region
|
||||||
|
|
||||||
|
#Region "Private Classes"
|
||||||
|
Private Class UpdateFile
|
||||||
|
#Region "Public Properties"
|
||||||
|
Private ReadOnly _items As New Dictionary(Of String, String)(StringComparer.InvariantCultureIgnoreCase)
|
||||||
|
' ReSharper disable MemberCanBePrivate.Local
|
||||||
|
Public ReadOnly Property Items() As Dictionary(Of String, String)
|
||||||
|
' ReSharper restore MemberCanBePrivate.Local
|
||||||
|
Get
|
||||||
|
Return _items
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
#End Region
|
||||||
|
|
||||||
|
#Region "Public Methods"
|
||||||
|
Public Sub New(ByVal content As String)
|
||||||
|
FromString(content)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
' ReSharper disable MemberCanBePrivate.Local
|
||||||
|
Public Sub FromString(ByVal content As String)
|
||||||
|
' ReSharper restore MemberCanBePrivate.Local
|
||||||
|
If String.IsNullOrEmpty(content) Then
|
||||||
|
Else
|
||||||
|
Dim lineSeparators() As Char = New Char() {Chr(&HA), Chr(&HD)}
|
||||||
|
Dim keyValueSeparators() As Char = New Char() {":", "="}
|
||||||
|
Dim commentCharacters() As Char = New Char() {"#", ";", "'"}
|
||||||
|
|
||||||
|
Dim lines() As String = content.Split(lineSeparators, StringSplitOptions.RemoveEmptyEntries)
|
||||||
|
For Each line As String In lines
|
||||||
|
line = line.Trim()
|
||||||
|
If line.Length = 0 Then Continue For
|
||||||
|
If Not line.Substring(0, 1).IndexOfAny(commentCharacters) = -1 Then Continue For
|
||||||
|
|
||||||
|
Dim parts() As String = line.Split(keyValueSeparators, 2)
|
||||||
|
If Not parts.Length = 2 Then Continue For
|
||||||
|
Dim key As String = parts(0).Trim()
|
||||||
|
Dim value As String = parts(1).Trim()
|
||||||
|
|
||||||
|
_items.Add(key, value)
|
||||||
|
Next
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
' ReSharper disable MemberCanBePrivate.Local
|
||||||
|
Public Function GetString(ByVal key As String) As String
|
||||||
|
' ReSharper restore MemberCanBePrivate.Local
|
||||||
|
If Not Items.ContainsKey(key) Then Return String.Empty
|
||||||
|
Return Items(key)
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Public Function GetVersion(ByVal key As String) As Version
|
||||||
|
Dim value As String = GetString(key)
|
||||||
|
If String.IsNullOrEmpty(value) Then Return Nothing
|
||||||
|
Return New Version(value)
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Public Function GetUri(ByVal key As String) As Uri
|
||||||
|
Dim value As String = GetString(key)
|
||||||
|
If String.IsNullOrEmpty(value) Then Return Nothing
|
||||||
|
Return New Uri(value)
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Public Function GetThumbprint(ByVal key As String) As String
|
||||||
|
Return GetString(key).Replace(" ", "").ToUpperInvariant()
|
||||||
|
End Function
|
||||||
|
#End Region
|
||||||
|
End Class
|
||||||
|
#End Region
|
||||||
End Class
|
End Class
|
||||||
End Namespace
|
End Namespace
|
||||||
@@ -113,16 +113,6 @@ Namespace Config
|
|||||||
End Set
|
End Set
|
||||||
End Property
|
End Property
|
||||||
|
|
||||||
Private _Import As Boolean
|
|
||||||
Public Property Import() As Boolean
|
|
||||||
Get
|
|
||||||
Return Me._Import
|
|
||||||
End Get
|
|
||||||
Set(ByVal value As Boolean)
|
|
||||||
Me._Import = value
|
|
||||||
End Set
|
|
||||||
End Property
|
|
||||||
|
|
||||||
Private _ConnectionList As Connection.List
|
Private _ConnectionList As Connection.List
|
||||||
Public Property ConnectionList() As Connection.List
|
Public Property ConnectionList() As Connection.List
|
||||||
Get
|
Get
|
||||||
@@ -165,17 +155,18 @@ Namespace Config
|
|||||||
#End Region
|
#End Region
|
||||||
|
|
||||||
#Region "Public Methods"
|
#Region "Public Methods"
|
||||||
Public Sub Load()
|
Public Sub Load(ByVal import As Boolean)
|
||||||
If _UseSQL = True Then
|
If _UseSQL = True Then
|
||||||
LoadFromSQL()
|
LoadFromSQL()
|
||||||
SetMainFormText("SQL Server")
|
SetMainFormText("SQL Server")
|
||||||
Else
|
Else
|
||||||
Dim strCons As String = DecryptCompleteFile()
|
Dim strCons As String = DecryptCompleteFile()
|
||||||
LoadFromXML(strCons)
|
LoadFromXML(strCons, import)
|
||||||
End If
|
End If
|
||||||
|
|
||||||
If Import = False Then
|
If import = False Then
|
||||||
SetMainFormText(ConnectionFileName)
|
SetMainFormText(ConnectionFileName)
|
||||||
|
PuttySessions.AddSessionsToTree()
|
||||||
End If
|
End If
|
||||||
End Sub
|
End Sub
|
||||||
#End Region
|
#End Region
|
||||||
@@ -208,7 +199,7 @@ Namespace Config
|
|||||||
End If
|
End If
|
||||||
|
|
||||||
confVersion = Convert.ToDouble(sqlRd.Item("confVersion"), CultureInfo.InvariantCulture)
|
confVersion = Convert.ToDouble(sqlRd.Item("confVersion"), CultureInfo.InvariantCulture)
|
||||||
Const maxSupportedSchemaVersion As Double = 2.4
|
Const maxSupportedSchemaVersion As Double = 2.5
|
||||||
If confVersion > maxSupportedSchemaVersion Then
|
If confVersion > maxSupportedSchemaVersion Then
|
||||||
cTaskDialog.ShowTaskDialogBox(frmMain, Application.ProductName, "Incompatible database schema", String.Format("The database schema on the server is not supported. Please upgrade to a newer version of {0}.", Application.ProductName), String.Format("Schema Version: {1}{0}Highest Supported Version: {2}", vbNewLine, confVersion.ToString(), maxSupportedSchemaVersion.ToString()), "", "", "", "", eTaskDialogButtons.OK, eSysIcons.Error, Nothing)
|
cTaskDialog.ShowTaskDialogBox(frmMain, Application.ProductName, "Incompatible database schema", String.Format("The database schema on the server is not supported. Please upgrade to a newer version of {0}.", Application.ProductName), String.Format("Schema Version: {1}{0}Highest Supported Version: {2}", vbNewLine, confVersion.ToString(), maxSupportedSchemaVersion.ToString()), "", "", "", "", eTaskDialogButtons.OK, eSysIcons.Error, Nothing)
|
||||||
Throw New Exception(String.Format("Incompatible database schema (schema version {0}).", confVersion))
|
Throw New Exception(String.Format("Incompatible database schema (schema version {0}).", confVersion))
|
||||||
@@ -276,7 +267,7 @@ Namespace Config
|
|||||||
App.Runtime.IsConnectionsFileLoaded = True
|
App.Runtime.IsConnectionsFileLoaded = True
|
||||||
'App.Runtime.Windows.treeForm.InitialRefresh()
|
'App.Runtime.Windows.treeForm.InitialRefresh()
|
||||||
Catch ex As Exception
|
Catch ex As Exception
|
||||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strLoadFromSqlFailed & vbNewLine & ex.Message, True)
|
Throw
|
||||||
Finally
|
Finally
|
||||||
If sqlCon IsNot Nothing Then
|
If sqlCon IsNot Nothing Then
|
||||||
sqlCon.Close()
|
sqlCon.Close()
|
||||||
@@ -576,6 +567,13 @@ Namespace Config
|
|||||||
conI.Inherit.UseCredSsp = .Item("InheritUseCredSsp")
|
conI.Inherit.UseCredSsp = .Item("InheritUseCredSsp")
|
||||||
End If
|
End If
|
||||||
|
|
||||||
|
If confVersion >= 2.5 Then
|
||||||
|
conI.LoadBalanceInfo = .Item("LoadBalanceInfo")
|
||||||
|
conI.AutomaticResize = .Item("AutomaticResize")
|
||||||
|
conI.Inherit.LoadBalanceInfo = .Item("InheritLoadBalanceInfo")
|
||||||
|
conI.Inherit.AutomaticResize = .Item("InheritAutomaticResize")
|
||||||
|
End If
|
||||||
|
|
||||||
If SQLUpdate = True Then
|
If SQLUpdate = True Then
|
||||||
conI.PleaseConnect = .Item("Connected")
|
conI.PleaseConnect = .Item("Connected")
|
||||||
End If
|
End If
|
||||||
@@ -638,7 +636,7 @@ Namespace Config
|
|||||||
Return ""
|
Return ""
|
||||||
End Function
|
End Function
|
||||||
|
|
||||||
Private Sub LoadFromXML(Optional ByVal cons As String = "")
|
Private Sub LoadFromXML(ByVal cons As String, ByVal import As Boolean)
|
||||||
Try
|
Try
|
||||||
App.Runtime.IsConnectionsFileLoaded = False
|
App.Runtime.IsConnectionsFileLoaded = False
|
||||||
|
|
||||||
@@ -656,7 +654,7 @@ Namespace Config
|
|||||||
MessageCollector.AddMessage(Messages.MessageClass.WarningMsg, My.Language.strOldConffile)
|
MessageCollector.AddMessage(Messages.MessageClass.WarningMsg, My.Language.strOldConffile)
|
||||||
End If
|
End If
|
||||||
|
|
||||||
Const maxSupportedConfVersion As Double = 2.4
|
Const maxSupportedConfVersion As Double = 2.5
|
||||||
If confVersion > maxSupportedConfVersion Then
|
If confVersion > maxSupportedConfVersion Then
|
||||||
cTaskDialog.ShowTaskDialogBox(frmMain, Application.ProductName, "Incompatible connection file format", String.Format("The format of this connection file is not supported. Please upgrade to a newer version of {0}.", Application.ProductName), String.Format("{1}{0}File Format Version: {2}{0}Highest Supported Version: {3}", vbNewLine, ConnectionFileName, confVersion.ToString(), maxSupportedConfVersion.ToString()), "", "", "", "", eTaskDialogButtons.OK, eSysIcons.Error, Nothing)
|
cTaskDialog.ShowTaskDialogBox(frmMain, Application.ProductName, "Incompatible connection file format", String.Format("The format of this connection file is not supported. Please upgrade to a newer version of {0}.", Application.ProductName), String.Format("{1}{0}File Format Version: {2}{0}Highest Supported Version: {3}", vbNewLine, ConnectionFileName, confVersion.ToString(), maxSupportedConfVersion.ToString()), "", "", "", "", eTaskDialogButtons.OK, eSysIcons.Error, Nothing)
|
||||||
Throw New Exception(String.Format("Incompatible connection file format (file format version {0}).", confVersion))
|
Throw New Exception(String.Format("Incompatible connection file format (file format version {0}).", confVersion))
|
||||||
@@ -690,31 +688,29 @@ Namespace Config
|
|||||||
End If
|
End If
|
||||||
End If
|
End If
|
||||||
|
|
||||||
Dim imp As Boolean = False
|
Dim isExportFile As Boolean = False
|
||||||
|
If confVersion >= 1.0 Then
|
||||||
If Me.confVersion > 0.9 Then '1.0
|
|
||||||
If xDom.DocumentElement.Attributes("Export").Value = True Then
|
If xDom.DocumentElement.Attributes("Export").Value = True Then
|
||||||
imp = True
|
isExportFile = True
|
||||||
End If
|
End If
|
||||||
End If
|
End If
|
||||||
|
|
||||||
If Me._Import = True And imp = False Then
|
If import And Not isExportFile Then
|
||||||
MessageCollector.AddMessage(Messages.MessageClass.InformationMsg, My.Language.strCannotImportNormalSessionFile)
|
MessageCollector.AddMessage(Messages.MessageClass.InformationMsg, My.Language.strCannotImportNormalSessionFile)
|
||||||
|
Return
|
||||||
Exit Sub
|
|
||||||
End If
|
End If
|
||||||
|
|
||||||
If imp = False Then
|
If Not isExportFile Then
|
||||||
Me._RootTreeNode.Text = rootNode.Text
|
_RootTreeNode.Text = rootNode.Text
|
||||||
Me._RootTreeNode.Tag = rootNode.Tag
|
_RootTreeNode.Tag = rootNode.Tag
|
||||||
Me._RootTreeNode.ImageIndex = Images.Enums.TreeImage.Root
|
_RootTreeNode.ImageIndex = Images.Enums.TreeImage.Root
|
||||||
Me._RootTreeNode.SelectedImageIndex = Images.Enums.TreeImage.Root
|
_RootTreeNode.SelectedImageIndex = Images.Enums.TreeImage.Root
|
||||||
End If
|
End If
|
||||||
|
|
||||||
Windows.treeForm.tvConnections.BeginUpdate()
|
Windows.treeForm.tvConnections.BeginUpdate()
|
||||||
|
|
||||||
' SECTION 3. Populate the TreeView with the DOM nodes.
|
' SECTION 3. Populate the TreeView with the DOM nodes.
|
||||||
AddNodeFromXML(xDom.DocumentElement, Me._RootTreeNode)
|
AddNodeFromXml(xDom.DocumentElement, _RootTreeNode)
|
||||||
|
|
||||||
Me._RootTreeNode.Expand()
|
Me._RootTreeNode.Expand()
|
||||||
|
|
||||||
@@ -1059,6 +1055,13 @@ Namespace Config
|
|||||||
conI.UseCredSsp = .Attributes("UseCredSsp").Value
|
conI.UseCredSsp = .Attributes("UseCredSsp").Value
|
||||||
conI.Inherit.UseCredSsp = .Attributes("InheritUseCredSsp").Value
|
conI.Inherit.UseCredSsp = .Attributes("InheritUseCredSsp").Value
|
||||||
End If
|
End If
|
||||||
|
|
||||||
|
If confVersion >= 2.5 Then
|
||||||
|
conI.LoadBalanceInfo = .Attributes("LoadBalanceInfo").Value
|
||||||
|
conI.AutomaticResize = .Attributes("AutomaticResize").Value
|
||||||
|
conI.Inherit.LoadBalanceInfo = .Attributes("InheritLoadBalanceInfo").Value
|
||||||
|
conI.Inherit.AutomaticResize = .Attributes("InheritAutomaticResize").Value
|
||||||
|
End If
|
||||||
End With
|
End With
|
||||||
Catch ex As Exception
|
Catch ex As Exception
|
||||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, String.Format(My.Language.strGetConnectionInfoFromXmlFailed, conI.Name, Me.ConnectionFileName, ex.Message), False)
|
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, String.Format(My.Language.strGetConnectionInfoFromXmlFailed, conI.Name, Me.ConnectionFileName, ex.Message), False)
|
||||||
|
|||||||
@@ -5,7 +5,6 @@ Imports System.Globalization
|
|||||||
Imports mRemoteNG.App.Runtime
|
Imports mRemoteNG.App.Runtime
|
||||||
Imports System.Data.SqlClient
|
Imports System.Data.SqlClient
|
||||||
Imports mRemoteNG.Tools.Misc
|
Imports mRemoteNG.Tools.Misc
|
||||||
Imports mRemoteNG.My.Resources
|
|
||||||
|
|
||||||
Namespace Config
|
Namespace Config
|
||||||
Namespace Connections
|
Namespace Connections
|
||||||
@@ -98,7 +97,14 @@ Namespace Config
|
|||||||
databaseVersion = New Version(2, 4)
|
databaseVersion = New Version(2, 4)
|
||||||
End If
|
End If
|
||||||
|
|
||||||
If databaseVersion.CompareTo(New System.Version(2, 4)) = 0 Then ' 2.4
|
If databaseVersion.CompareTo(New Version(2, 4)) = 0 Then ' 2.4
|
||||||
|
MessageCollector.AddMessage(Messages.MessageClass.InformationMsg, String.Format("Upgrading database from version {0} to version {1}.", databaseVersion.ToString, "2.5"))
|
||||||
|
sqlCommand = New SqlCommand("ALTER TABLE tblCons ADD LoadBalanceInfo varchar (1024) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, AutomaticResize bit NOT NULL DEFAULT 1, InheritLoadBalanceInfo bit NOT NULL DEFAULT 0, InheritAutomaticResize bit NOT NULL DEFAULT 0;", sqlConnection)
|
||||||
|
sqlCommand.ExecuteNonQuery()
|
||||||
|
databaseVersion = New Version(2, 5)
|
||||||
|
End If
|
||||||
|
|
||||||
|
If databaseVersion.CompareTo(New Version(2, 5)) = 0 Then ' 2.5
|
||||||
isVerified = True
|
isVerified = True
|
||||||
End If
|
End If
|
||||||
|
|
||||||
@@ -173,7 +179,7 @@ Namespace Config
|
|||||||
Dim curConI As Connection.Info
|
Dim curConI As Connection.Info
|
||||||
_sqlQuery = New SqlCommand("INSERT INTO tblCons (Name, Type, Expanded, Description, Icon, Panel, Username, " & _
|
_sqlQuery = New SqlCommand("INSERT INTO tblCons (Name, Type, Expanded, Description, Icon, Panel, Username, " & _
|
||||||
"DomainName, Password, Hostname, Protocol, PuttySession, " & _
|
"DomainName, Password, Hostname, Protocol, PuttySession, " & _
|
||||||
"Port, ConnectToConsole, RenderingEngine, ICAEncryptionStrength, RDPAuthenticationLevel, Colors, Resolution, DisplayWallpaper, " & _
|
"Port, ConnectToConsole, RenderingEngine, ICAEncryptionStrength, RDPAuthenticationLevel, LoadBalanceInfo, Colors, Resolution, AutomaticResize, DisplayWallpaper, " & _
|
||||||
"DisplayThemes, EnableFontSmoothing, EnableDesktopComposition, CacheBitmaps, RedirectDiskDrives, RedirectPorts, " & _
|
"DisplayThemes, EnableFontSmoothing, EnableDesktopComposition, CacheBitmaps, RedirectDiskDrives, RedirectPorts, " & _
|
||||||
"RedirectPrinters, RedirectSmartCards, RedirectSound, RedirectKeys, " & _
|
"RedirectPrinters, RedirectSmartCards, RedirectSound, RedirectKeys, " & _
|
||||||
"Connected, PreExtApp, PostExtApp, MacAddress, UserField, ExtApp, VNCCompression, VNCEncoding, VNCAuthMode, " & _
|
"Connected, PreExtApp, PostExtApp, MacAddress, UserField, ExtApp, VNCCompression, VNCEncoding, VNCAuthMode, " & _
|
||||||
@@ -186,8 +192,8 @@ Namespace Config
|
|||||||
"InheritIcon, InheritPanel, InheritPassword, InheritPort, " & _
|
"InheritIcon, InheritPanel, InheritPassword, InheritPort, " & _
|
||||||
"InheritProtocol, InheritPuttySession, InheritRedirectDiskDrives, " & _
|
"InheritProtocol, InheritPuttySession, InheritRedirectDiskDrives, " & _
|
||||||
"InheritRedirectKeys, InheritRedirectPorts, InheritRedirectPrinters, " & _
|
"InheritRedirectKeys, InheritRedirectPorts, InheritRedirectPrinters, " & _
|
||||||
"InheritRedirectSmartCards, InheritRedirectSound, InheritResolution, " & _
|
"InheritRedirectSmartCards, InheritRedirectSound, InheritResolution, InheritAutomaticResize, " & _
|
||||||
"InheritUseConsoleSession, InheritRenderingEngine, InheritUsername, InheritICAEncryptionStrength, InheritRDPAuthenticationLevel, " & _
|
"InheritUseConsoleSession, InheritRenderingEngine, InheritUsername, InheritICAEncryptionStrength, InheritRDPAuthenticationLevel, InheritLoadBalanceInfo, " & _
|
||||||
"InheritPreExtApp, InheritPostExtApp, InheritMacAddress, InheritUserField, InheritExtApp, InheritVNCCompression, InheritVNCEncoding, " & _
|
"InheritPreExtApp, InheritPostExtApp, InheritMacAddress, InheritUserField, InheritExtApp, InheritVNCCompression, InheritVNCEncoding, " & _
|
||||||
"InheritVNCAuthMode, InheritVNCProxyType, InheritVNCProxyIP, InheritVNCProxyPort, " & _
|
"InheritVNCAuthMode, InheritVNCProxyType, InheritVNCProxyIP, InheritVNCProxyPort, " & _
|
||||||
"InheritVNCProxyUsername, InheritVNCProxyPassword, InheritVNCColors, " & _
|
"InheritVNCProxyUsername, InheritVNCProxyPassword, InheritVNCColors, " & _
|
||||||
@@ -260,8 +266,10 @@ Namespace Config
|
|||||||
_sqlQuery.CommandText &= "'" & .RenderingEngine.ToString & "',"
|
_sqlQuery.CommandText &= "'" & .RenderingEngine.ToString & "',"
|
||||||
_sqlQuery.CommandText &= "'" & .ICAEncryption.ToString & "',"
|
_sqlQuery.CommandText &= "'" & .ICAEncryption.ToString & "',"
|
||||||
_sqlQuery.CommandText &= "'" & .RDPAuthenticationLevel.ToString & "',"
|
_sqlQuery.CommandText &= "'" & .RDPAuthenticationLevel.ToString & "',"
|
||||||
|
_sqlQuery.CommandText &= "'" & .LoadBalanceInfo & "',"
|
||||||
_sqlQuery.CommandText &= "'" & .Colors.ToString & "',"
|
_sqlQuery.CommandText &= "'" & .Colors.ToString & "',"
|
||||||
_sqlQuery.CommandText &= "'" & .Resolution.ToString & "',"
|
_sqlQuery.CommandText &= "'" & .Resolution.ToString & "',"
|
||||||
|
_sqlQuery.CommandText &= "'" & .AutomaticResize & "',"
|
||||||
_sqlQuery.CommandText &= "'" & .DisplayWallpaper & "',"
|
_sqlQuery.CommandText &= "'" & .DisplayWallpaper & "',"
|
||||||
_sqlQuery.CommandText &= "'" & .DisplayThemes & "',"
|
_sqlQuery.CommandText &= "'" & .DisplayThemes & "',"
|
||||||
_sqlQuery.CommandText &= "'" & .EnableFontSmoothing & "',"
|
_sqlQuery.CommandText &= "'" & .EnableFontSmoothing & "',"
|
||||||
@@ -345,11 +353,13 @@ Namespace Config
|
|||||||
_sqlQuery.CommandText &= "'" & .RedirectSmartCards & "',"
|
_sqlQuery.CommandText &= "'" & .RedirectSmartCards & "',"
|
||||||
_sqlQuery.CommandText &= "'" & .RedirectSound & "',"
|
_sqlQuery.CommandText &= "'" & .RedirectSound & "',"
|
||||||
_sqlQuery.CommandText &= "'" & .Resolution & "',"
|
_sqlQuery.CommandText &= "'" & .Resolution & "',"
|
||||||
|
_sqlQuery.CommandText &= "'" & .AutomaticResize & "',"
|
||||||
_sqlQuery.CommandText &= "'" & .UseConsoleSession & "',"
|
_sqlQuery.CommandText &= "'" & .UseConsoleSession & "',"
|
||||||
_sqlQuery.CommandText &= "'" & .RenderingEngine & "',"
|
_sqlQuery.CommandText &= "'" & .RenderingEngine & "',"
|
||||||
_sqlQuery.CommandText &= "'" & .Username & "',"
|
_sqlQuery.CommandText &= "'" & .Username & "',"
|
||||||
_sqlQuery.CommandText &= "'" & .ICAEncryption & "',"
|
_sqlQuery.CommandText &= "'" & .ICAEncryption & "',"
|
||||||
_sqlQuery.CommandText &= "'" & .RDPAuthenticationLevel & "',"
|
_sqlQuery.CommandText &= "'" & .RDPAuthenticationLevel & "',"
|
||||||
|
_sqlQuery.CommandText &= "'" & .LoadBalanceInfo & "',"
|
||||||
_sqlQuery.CommandText &= "'" & .PreExtApp & "',"
|
_sqlQuery.CommandText &= "'" & .PreExtApp & "',"
|
||||||
_sqlQuery.CommandText &= "'" & .PostExtApp & "',"
|
_sqlQuery.CommandText &= "'" & .PostExtApp & "',"
|
||||||
_sqlQuery.CommandText &= "'" & .MacAddress & "',"
|
_sqlQuery.CommandText &= "'" & .MacAddress & "',"
|
||||||
@@ -398,11 +408,15 @@ Namespace Config
|
|||||||
_sqlQuery.CommandText &= "'" & False & "',"
|
_sqlQuery.CommandText &= "'" & False & "',"
|
||||||
_sqlQuery.CommandText &= "'" & False & "',"
|
_sqlQuery.CommandText &= "'" & False & "',"
|
||||||
_sqlQuery.CommandText &= "'" & False & "',"
|
_sqlQuery.CommandText &= "'" & False & "',"
|
||||||
|
_sqlQuery.CommandText &= "'" & False & "'," ' .AutomaticResize
|
||||||
_sqlQuery.CommandText &= "'" & False & "',"
|
_sqlQuery.CommandText &= "'" & False & "',"
|
||||||
_sqlQuery.CommandText &= "'" & False & "',"
|
_sqlQuery.CommandText &= "'" & False & "',"
|
||||||
_sqlQuery.CommandText &= "'" & False & "',"
|
_sqlQuery.CommandText &= "'" & False & "',"
|
||||||
_sqlQuery.CommandText &= "'" & False & "',"
|
_sqlQuery.CommandText &= "'" & False & "',"
|
||||||
_sqlQuery.CommandText &= "'" & False & "',"
|
_sqlQuery.CommandText &= "'" & False & "',"
|
||||||
|
_sqlQuery.CommandText &= "'" & False & "'," ' .LoadBalanceInfo
|
||||||
|
_sqlQuery.CommandText &= "'" & False & "',"
|
||||||
|
_sqlQuery.CommandText &= "'" & False & "',"
|
||||||
_sqlQuery.CommandText &= "'" & False & "',"
|
_sqlQuery.CommandText &= "'" & False & "',"
|
||||||
_sqlQuery.CommandText &= "'" & False & "',"
|
_sqlQuery.CommandText &= "'" & False & "',"
|
||||||
_sqlQuery.CommandText &= "'" & False & "',"
|
_sqlQuery.CommandText &= "'" & False & "',"
|
||||||
@@ -597,10 +611,14 @@ Namespace Config
|
|||||||
|
|
||||||
_xmlTextWriter.WriteAttributeString("RDPAuthenticationLevel", "", curConI.RDPAuthenticationLevel.ToString)
|
_xmlTextWriter.WriteAttributeString("RDPAuthenticationLevel", "", curConI.RDPAuthenticationLevel.ToString)
|
||||||
|
|
||||||
|
_xmlTextWriter.WriteAttributeString("LoadBalanceInfo", "", curConI.LoadBalanceInfo)
|
||||||
|
|
||||||
_xmlTextWriter.WriteAttributeString("Colors", "", curConI.Colors.ToString)
|
_xmlTextWriter.WriteAttributeString("Colors", "", curConI.Colors.ToString)
|
||||||
|
|
||||||
_xmlTextWriter.WriteAttributeString("Resolution", "", curConI.Resolution.ToString)
|
_xmlTextWriter.WriteAttributeString("Resolution", "", curConI.Resolution.ToString)
|
||||||
|
|
||||||
|
_xmlTextWriter.WriteAttributeString("AutomaticResize", "", curConI.AutomaticResize)
|
||||||
|
|
||||||
_xmlTextWriter.WriteAttributeString("DisplayWallpaper", "", curConI.DisplayWallpaper)
|
_xmlTextWriter.WriteAttributeString("DisplayWallpaper", "", curConI.DisplayWallpaper)
|
||||||
|
|
||||||
_xmlTextWriter.WriteAttributeString("DisplayThemes", "", curConI.DisplayThemes)
|
_xmlTextWriter.WriteAttributeString("DisplayThemes", "", curConI.DisplayThemes)
|
||||||
@@ -692,12 +710,14 @@ Namespace Config
|
|||||||
_xmlTextWriter.WriteAttributeString("InheritRedirectSmartCards", "", curConI.Inherit.RedirectSmartCards)
|
_xmlTextWriter.WriteAttributeString("InheritRedirectSmartCards", "", curConI.Inherit.RedirectSmartCards)
|
||||||
_xmlTextWriter.WriteAttributeString("InheritRedirectSound", "", curConI.Inherit.RedirectSound)
|
_xmlTextWriter.WriteAttributeString("InheritRedirectSound", "", curConI.Inherit.RedirectSound)
|
||||||
_xmlTextWriter.WriteAttributeString("InheritResolution", "", curConI.Inherit.Resolution)
|
_xmlTextWriter.WriteAttributeString("InheritResolution", "", curConI.Inherit.Resolution)
|
||||||
|
_xmlTextWriter.WriteAttributeString("InheritAutomaticResize", "", curConI.Inherit.AutomaticResize)
|
||||||
_xmlTextWriter.WriteAttributeString("InheritUseConsoleSession", "", curConI.Inherit.UseConsoleSession)
|
_xmlTextWriter.WriteAttributeString("InheritUseConsoleSession", "", curConI.Inherit.UseConsoleSession)
|
||||||
_xmlTextWriter.WriteAttributeString("InheritUseCredSsp", "", curConI.Inherit.UseCredSsp)
|
_xmlTextWriter.WriteAttributeString("InheritUseCredSsp", "", curConI.Inherit.UseCredSsp)
|
||||||
_xmlTextWriter.WriteAttributeString("InheritRenderingEngine", "", curConI.Inherit.RenderingEngine)
|
_xmlTextWriter.WriteAttributeString("InheritRenderingEngine", "", curConI.Inherit.RenderingEngine)
|
||||||
_xmlTextWriter.WriteAttributeString("InheritUsername", "", curConI.Inherit.Username)
|
_xmlTextWriter.WriteAttributeString("InheritUsername", "", curConI.Inherit.Username)
|
||||||
_xmlTextWriter.WriteAttributeString("InheritICAEncryptionStrength", "", curConI.Inherit.ICAEncryption)
|
_xmlTextWriter.WriteAttributeString("InheritICAEncryptionStrength", "", curConI.Inherit.ICAEncryption)
|
||||||
_xmlTextWriter.WriteAttributeString("InheritRDPAuthenticationLevel", "", curConI.Inherit.RDPAuthenticationLevel)
|
_xmlTextWriter.WriteAttributeString("InheritRDPAuthenticationLevel", "", curConI.Inherit.RDPAuthenticationLevel)
|
||||||
|
_xmlTextWriter.WriteAttributeString("InheritLoadBalanceInfo", "", curConI.Inherit.LoadBalanceInfo)
|
||||||
_xmlTextWriter.WriteAttributeString("InheritPreExtApp", "", curConI.Inherit.PreExtApp)
|
_xmlTextWriter.WriteAttributeString("InheritPreExtApp", "", curConI.Inherit.PreExtApp)
|
||||||
_xmlTextWriter.WriteAttributeString("InheritPostExtApp", "", curConI.Inherit.PostExtApp)
|
_xmlTextWriter.WriteAttributeString("InheritPostExtApp", "", curConI.Inherit.PostExtApp)
|
||||||
_xmlTextWriter.WriteAttributeString("InheritMacAddress", "", curConI.Inherit.MacAddress)
|
_xmlTextWriter.WriteAttributeString("InheritMacAddress", "", curConI.Inherit.MacAddress)
|
||||||
@@ -742,12 +762,14 @@ Namespace Config
|
|||||||
_xmlTextWriter.WriteAttributeString("InheritRedirectSmartCards", "", False)
|
_xmlTextWriter.WriteAttributeString("InheritRedirectSmartCards", "", False)
|
||||||
_xmlTextWriter.WriteAttributeString("InheritRedirectSound", "", False)
|
_xmlTextWriter.WriteAttributeString("InheritRedirectSound", "", False)
|
||||||
_xmlTextWriter.WriteAttributeString("InheritResolution", "", False)
|
_xmlTextWriter.WriteAttributeString("InheritResolution", "", False)
|
||||||
|
_xmlTextWriter.WriteAttributeString("InheritAutomaticResize", "", False)
|
||||||
_xmlTextWriter.WriteAttributeString("InheritUseConsoleSession", "", False)
|
_xmlTextWriter.WriteAttributeString("InheritUseConsoleSession", "", False)
|
||||||
_xmlTextWriter.WriteAttributeString("InheritUseCredSsp", "", False)
|
_xmlTextWriter.WriteAttributeString("InheritUseCredSsp", "", False)
|
||||||
_xmlTextWriter.WriteAttributeString("InheritRenderingEngine", "", False)
|
_xmlTextWriter.WriteAttributeString("InheritRenderingEngine", "", False)
|
||||||
_xmlTextWriter.WriteAttributeString("InheritUsername", "", False)
|
_xmlTextWriter.WriteAttributeString("InheritUsername", "", False)
|
||||||
_xmlTextWriter.WriteAttributeString("InheritICAEncryptionStrength", "", False)
|
_xmlTextWriter.WriteAttributeString("InheritICAEncryptionStrength", "", False)
|
||||||
_xmlTextWriter.WriteAttributeString("InheritRDPAuthenticationLevel", "", False)
|
_xmlTextWriter.WriteAttributeString("InheritRDPAuthenticationLevel", "", False)
|
||||||
|
_xmlTextWriter.WriteAttributeString("InheritLoadBalanceInfo", "", False)
|
||||||
_xmlTextWriter.WriteAttributeString("InheritPreExtApp", "", False)
|
_xmlTextWriter.WriteAttributeString("InheritPreExtApp", "", False)
|
||||||
_xmlTextWriter.WriteAttributeString("InheritPostExtApp", "", False)
|
_xmlTextWriter.WriteAttributeString("InheritPostExtApp", "", False)
|
||||||
_xmlTextWriter.WriteAttributeString("InheritMacAddress", "", False)
|
_xmlTextWriter.WriteAttributeString("InheritMacAddress", "", False)
|
||||||
@@ -809,10 +831,10 @@ Namespace Config
|
|||||||
csvLn += "Domain;"
|
csvLn += "Domain;"
|
||||||
End If
|
End If
|
||||||
|
|
||||||
csvLn += "Hostname;Protocol;PuttySession;Port;ConnectToConsole;UseCredSsp;RenderingEngine;ICAEncryptionStrength;RDPAuthenticationLevel;Colors;Resolution;DisplayWallpaper;DisplayThemes;EnableFontSmoothing;EnableDesktopComposition;CacheBitmaps;RedirectDiskDrives;RedirectPorts;RedirectPrinters;RedirectSmartCards;RedirectSound;RedirectKeys;PreExtApp;PostExtApp;MacAddress;UserField;ExtApp;VNCCompression;VNCEncoding;VNCAuthMode;VNCProxyType;VNCProxyIP;VNCProxyPort;VNCProxyUsername;VNCProxyPassword;VNCColors;VNCSmartSizeMode;VNCViewOnly;RDGatewayUsageMethod;RDGatewayHostname;RDGatewayUseConnectionCredentials;RDGatewayUsername;RDGatewayPassword;RDGatewayDomain;"
|
csvLn += "Hostname;Protocol;PuttySession;Port;ConnectToConsole;UseCredSsp;RenderingEngine;ICAEncryptionStrength;RDPAuthenticationLevel;LoadBalanceInfo;Colors;Resolution;AutomaticResize;DisplayWallpaper;DisplayThemes;EnableFontSmoothing;EnableDesktopComposition;CacheBitmaps;RedirectDiskDrives;RedirectPorts;RedirectPrinters;RedirectSmartCards;RedirectSound;RedirectKeys;PreExtApp;PostExtApp;MacAddress;UserField;ExtApp;VNCCompression;VNCEncoding;VNCAuthMode;VNCProxyType;VNCProxyIP;VNCProxyPort;VNCProxyUsername;VNCProxyPassword;VNCColors;VNCSmartSizeMode;VNCViewOnly;RDGatewayUsageMethod;RDGatewayHostname;RDGatewayUseConnectionCredentials;RDGatewayUsername;RDGatewayPassword;RDGatewayDomain;"
|
||||||
|
|
||||||
If SaveSecurity.Inheritance Then
|
If SaveSecurity.Inheritance Then
|
||||||
csvLn += "InheritCacheBitmaps;InheritColors;InheritDescription;InheritDisplayThemes;InheritDisplayWallpaper;InheritEnableFontSmoothing;InheritEnableDesktopComposition;InheritDomain;InheritIcon;InheritPanel;InheritPassword;InheritPort;InheritProtocol;InheritPuttySession;InheritRedirectDiskDrives;InheritRedirectKeys;InheritRedirectPorts;InheritRedirectPrinters;InheritRedirectSmartCards;InheritRedirectSound;InheritResolution;InheritUseConsoleSession;InheritUseCredSsp;InheritRenderingEngine;InheritUsername;InheritICAEncryptionStrength;InheritRDPAuthenticationLevel;InheritPreExtApp;InheritPostExtApp;InheritMacAddress;InheritUserField;InheritExtApp;InheritVNCCompression;InheritVNCEncoding;InheritVNCAuthMode;InheritVNCProxyType;InheritVNCProxyIP;InheritVNCProxyPort;InheritVNCProxyUsername;InheritVNCProxyPassword;InheritVNCColors;InheritVNCSmartSizeMode;InheritVNCViewOnly;InheritRDGatewayUsageMethod;InheritRDGatewayHostname;InheritRDGatewayUseConnectionCredentials;InheritRDGatewayUsername;InheritRDGatewayPassword;InheritRDGatewayDomain"
|
csvLn += "InheritCacheBitmaps;InheritColors;InheritDescription;InheritDisplayThemes;InheritDisplayWallpaper;InheritEnableFontSmoothing;InheritEnableDesktopComposition;InheritDomain;InheritIcon;InheritPanel;InheritPassword;InheritPort;InheritProtocol;InheritPuttySession;InheritRedirectDiskDrives;InheritRedirectKeys;InheritRedirectPorts;InheritRedirectPrinters;InheritRedirectSmartCards;InheritRedirectSound;InheritResolution;InheritAutomaticResize;InheritUseConsoleSession;InheritUseCredSsp;InheritRenderingEngine;InheritUsername;InheritICAEncryptionStrength;InheritRDPAuthenticationLevel;InheritLoadBalanceInfo;InheritPreExtApp;InheritPostExtApp;InheritMacAddress;InheritUserField;InheritExtApp;InheritVNCCompression;InheritVNCEncoding;InheritVNCAuthMode;InheritVNCProxyType;InheritVNCProxyIP;InheritVNCProxyPort;InheritVNCProxyUsername;InheritVNCProxyPassword;InheritVNCColors;InheritVNCSmartSizeMode;InheritVNCViewOnly;InheritRDGatewayUsageMethod;InheritRDGatewayHostname;InheritRDGatewayUseConnectionCredentials;InheritRDGatewayUsername;InheritRDGatewayPassword;InheritRDGatewayDomain"
|
||||||
End If
|
End If
|
||||||
|
|
||||||
csvWr.WriteLine(csvLn)
|
csvWr.WriteLine(csvLn)
|
||||||
@@ -863,10 +885,10 @@ Namespace Config
|
|||||||
csvLn += con.Domain & ";"
|
csvLn += con.Domain & ";"
|
||||||
End If
|
End If
|
||||||
|
|
||||||
csvLn += con.Hostname & ";" & con.Protocol.ToString & ";" & con.PuttySession & ";" & con.Port & ";" & con.UseConsoleSession & ";" & con.UseCredSsp & ";" & con.RenderingEngine.ToString & ";" & con.ICAEncryption.ToString & ";" & con.RDPAuthenticationLevel.ToString & ";" & con.Colors.ToString & ";" & con.Resolution.ToString & ";" & con.DisplayWallpaper & ";" & con.DisplayThemes & ";" & con.EnableFontSmoothing & ";" & con.EnableDesktopComposition & ";" & con.CacheBitmaps & ";" & con.RedirectDiskDrives & ";" & con.RedirectPorts & ";" & con.RedirectPrinters & ";" & con.RedirectSmartCards & ";" & con.RedirectSound.ToString & ";" & con.RedirectKeys & ";" & con.PreExtApp & ";" & con.PostExtApp & ";" & con.MacAddress & ";" & con.UserField & ";" & con.ExtApp & ";" & con.VNCCompression.ToString & ";" & con.VNCEncoding.ToString & ";" & con.VNCAuthMode.ToString & ";" & con.VNCProxyType.ToString & ";" & con.VNCProxyIP & ";" & con.VNCProxyPort & ";" & con.VNCProxyUsername & ";" & con.VNCProxyPassword & ";" & con.VNCColors.ToString & ";" & con.VNCSmartSizeMode.ToString & ";" & con.VNCViewOnly & ";"
|
csvLn += con.Hostname & ";" & con.Protocol.ToString & ";" & con.PuttySession & ";" & con.Port & ";" & con.UseConsoleSession & ";" & con.UseCredSsp & ";" & con.RenderingEngine.ToString & ";" & con.ICAEncryption.ToString & ";" & con.RDPAuthenticationLevel.ToString & ";" & con.LoadBalanceInfo & ";" & con.Colors.ToString & ";" & con.Resolution.ToString & ";" & con.AutomaticResize & ";" & con.DisplayWallpaper & ";" & con.DisplayThemes & ";" & con.EnableFontSmoothing & ";" & con.EnableDesktopComposition & ";" & con.CacheBitmaps & ";" & con.RedirectDiskDrives & ";" & con.RedirectPorts & ";" & con.RedirectPrinters & ";" & con.RedirectSmartCards & ";" & con.RedirectSound.ToString & ";" & con.RedirectKeys & ";" & con.PreExtApp & ";" & con.PostExtApp & ";" & con.MacAddress & ";" & con.UserField & ";" & con.ExtApp & ";" & con.VNCCompression.ToString & ";" & con.VNCEncoding.ToString & ";" & con.VNCAuthMode.ToString & ";" & con.VNCProxyType.ToString & ";" & con.VNCProxyIP & ";" & con.VNCProxyPort & ";" & con.VNCProxyUsername & ";" & con.VNCProxyPassword & ";" & con.VNCColors.ToString & ";" & con.VNCSmartSizeMode.ToString & ";" & con.VNCViewOnly & ";"
|
||||||
|
|
||||||
If SaveSecurity.Inheritance Then
|
If SaveSecurity.Inheritance Then
|
||||||
csvLn += con.Inherit.CacheBitmaps & ";" & con.Inherit.Colors & ";" & con.Inherit.Description & ";" & con.Inherit.DisplayThemes & ";" & con.Inherit.DisplayWallpaper & ";" & con.Inherit.EnableFontSmoothing & ";" & con.Inherit.EnableDesktopComposition & ";" & con.Inherit.Domain & ";" & con.Inherit.Icon & ";" & con.Inherit.Panel & ";" & con.Inherit.Password & ";" & con.Inherit.Port & ";" & con.Inherit.Protocol & ";" & con.Inherit.PuttySession & ";" & con.Inherit.RedirectDiskDrives & ";" & con.Inherit.RedirectKeys & ";" & con.Inherit.RedirectPorts & ";" & con.Inherit.RedirectPrinters & ";" & con.Inherit.RedirectSmartCards & ";" & con.Inherit.RedirectSound & ";" & con.Inherit.Resolution & ";" & con.Inherit.UseConsoleSession & ";" & con.Inherit.UseCredSsp & ";" & con.Inherit.RenderingEngine & ";" & con.Inherit.Username & ";" & con.Inherit.ICAEncryption & ";" & con.Inherit.RDPAuthenticationLevel & ";" & con.Inherit.PreExtApp & ";" & con.Inherit.PostExtApp & ";" & con.Inherit.MacAddress & ";" & con.Inherit.UserField & ";" & con.Inherit.ExtApp & ";" & con.Inherit.VNCCompression & ";" & con.Inherit.VNCEncoding & ";" & con.Inherit.VNCAuthMode & ";" & con.Inherit.VNCProxyType & ";" & con.Inherit.VNCProxyIP & ";" & con.Inherit.VNCProxyPort & ";" & con.Inherit.VNCProxyUsername & ";" & con.Inherit.VNCProxyPassword & ";" & con.Inherit.VNCColors & ";" & con.Inherit.VNCSmartSizeMode & ";" & con.Inherit.VNCViewOnly
|
csvLn += con.Inherit.CacheBitmaps & ";" & con.Inherit.Colors & ";" & con.Inherit.Description & ";" & con.Inherit.DisplayThemes & ";" & con.Inherit.DisplayWallpaper & ";" & con.Inherit.EnableFontSmoothing & ";" & con.Inherit.EnableDesktopComposition & ";" & con.Inherit.Domain & ";" & con.Inherit.Icon & ";" & con.Inherit.Panel & ";" & con.Inherit.Password & ";" & con.Inherit.Port & ";" & con.Inherit.Protocol & ";" & con.Inherit.PuttySession & ";" & con.Inherit.RedirectDiskDrives & ";" & con.Inherit.RedirectKeys & ";" & con.Inherit.RedirectPorts & ";" & con.Inherit.RedirectPrinters & ";" & con.Inherit.RedirectSmartCards & ";" & con.Inherit.RedirectSound & ";" & con.Inherit.Resolution & ";" & con.Inherit.AutomaticResize & ";" & con.Inherit.UseConsoleSession & ";" & con.Inherit.UseCredSsp & ";" & con.Inherit.RenderingEngine & ";" & con.Inherit.Username & ";" & con.Inherit.ICAEncryption & ";" & con.Inherit.RDPAuthenticationLevel & ";" & con.Inherit.LoadBalanceInfo & ";" & con.Inherit.PreExtApp & ";" & con.Inherit.PostExtApp & ";" & con.Inherit.MacAddress & ";" & con.Inherit.UserField & ";" & con.Inherit.ExtApp & ";" & con.Inherit.VNCCompression & ";" & con.Inherit.VNCEncoding & ";" & con.Inherit.VNCAuthMode & ";" & con.Inherit.VNCProxyType & ";" & con.Inherit.VNCProxyIP & ";" & con.Inherit.VNCProxyPort & ";" & con.Inherit.VNCProxyUsername & ";" & con.Inherit.VNCProxyPassword & ";" & con.Inherit.VNCColors & ";" & con.Inherit.VNCSmartSizeMode & ";" & con.Inherit.VNCViewOnly
|
||||||
End If
|
End If
|
||||||
|
|
||||||
csvWr.WriteLine(csvLn)
|
csvWr.WriteLine(csvLn)
|
||||||
@@ -1040,7 +1062,7 @@ Namespace Config
|
|||||||
|
|
||||||
'Smart Size
|
'Smart Size
|
||||||
_xmlTextWriter.WriteStartElement("AutoSize")
|
_xmlTextWriter.WriteStartElement("AutoSize")
|
||||||
_xmlTextWriter.WriteValue(IIf(con.Resolution = Connection.Protocol.RDP.RDPResolutions.SmartSize, True, False))
|
_xmlTextWriter.WriteValue(con.Resolution = Connection.Protocol.RDP.RDPResolutions.SmartSize)
|
||||||
_xmlTextWriter.WriteEndElement()
|
_xmlTextWriter.WriteEndElement()
|
||||||
|
|
||||||
'SeparateResolutionX
|
'SeparateResolutionX
|
||||||
@@ -1053,26 +1075,18 @@ Namespace Config
|
|||||||
_xmlTextWriter.WriteValue("768")
|
_xmlTextWriter.WriteValue("768")
|
||||||
_xmlTextWriter.WriteEndElement()
|
_xmlTextWriter.WriteEndElement()
|
||||||
|
|
||||||
|
Dim resolution As Rectangle = Connection.Protocol.RDP.GetResolutionRectangle(con.Resolution)
|
||||||
|
If resolution.Width = 0 Then resolution.Width = 1024
|
||||||
|
If resolution.Height = 0 Then resolution.Height = 768
|
||||||
|
|
||||||
'TabResolutionX
|
'TabResolutionX
|
||||||
_xmlTextWriter.WriteStartElement("TabResolutionX")
|
_xmlTextWriter.WriteStartElement("TabResolutionX")
|
||||||
If con.Resolution <> Connection.Protocol.RDP.RDPResolutions.FitToWindow And _
|
_xmlTextWriter.WriteValue(resolution.Width)
|
||||||
con.Resolution <> Connection.Protocol.RDP.RDPResolutions.Fullscreen And _
|
|
||||||
con.Resolution <> Connection.Protocol.RDP.RDPResolutions.SmartSize Then
|
|
||||||
_xmlTextWriter.WriteValue(con.Resolution.ToString.Remove(con.Resolution.ToString.IndexOf("x")))
|
|
||||||
Else
|
|
||||||
_xmlTextWriter.WriteValue("1024")
|
|
||||||
End If
|
|
||||||
_xmlTextWriter.WriteEndElement()
|
_xmlTextWriter.WriteEndElement()
|
||||||
|
|
||||||
'TabResolutionY
|
'TabResolutionY
|
||||||
_xmlTextWriter.WriteStartElement("TabResolutionY")
|
_xmlTextWriter.WriteStartElement("TabResolutionY")
|
||||||
If con.Resolution <> Connection.Protocol.RDP.RDPResolutions.FitToWindow And _
|
_xmlTextWriter.WriteValue(resolution.Height)
|
||||||
con.Resolution <> Connection.Protocol.RDP.RDPResolutions.Fullscreen And _
|
|
||||||
con.Resolution <> Connection.Protocol.RDP.RDPResolutions.SmartSize Then
|
|
||||||
_xmlTextWriter.WriteValue(con.Resolution.ToString.Remove(0, con.Resolution.ToString.IndexOf("x")))
|
|
||||||
Else
|
|
||||||
_xmlTextWriter.WriteValue("768")
|
|
||||||
End If
|
|
||||||
_xmlTextWriter.WriteEndElement()
|
_xmlTextWriter.WriteEndElement()
|
||||||
|
|
||||||
'RDPColorDepth
|
'RDPColorDepth
|
||||||
|
|||||||
@@ -80,13 +80,14 @@ Namespace Config
|
|||||||
.Location = newBounds.Location
|
.Location = newBounds.Location
|
||||||
|
|
||||||
If My.Settings.MainFormKiosk = True Then
|
If My.Settings.MainFormKiosk = True Then
|
||||||
Tools.Misc.Fullscreen.EnterFullscreen()
|
.Fullscreen.Value = True
|
||||||
|
.mMenViewFullscreen.Checked = True
|
||||||
End If
|
End If
|
||||||
|
|
||||||
If My.Settings.UseCustomPuttyPath Then
|
If My.Settings.UseCustomPuttyPath Then
|
||||||
Connection.Protocol.PuttyBase.PuttyPath = My.Settings.CustomPuttyPath
|
Connection.Protocol.PuttyBase.PuttyPath = My.Settings.CustomPuttyPath
|
||||||
Else
|
Else
|
||||||
Connection.Protocol.PuttyBase.PuttyPath = My.Application.Info.DirectoryPath & "\PuTTYNG.exe"
|
Connection.Protocol.PuttyBase.PuttyPath = App.Info.General.PuttyPath
|
||||||
End If
|
End If
|
||||||
|
|
||||||
If My.Settings.ShowSystemTrayIcon Then
|
If My.Settings.ShowSystemTrayIcon Then
|
||||||
@@ -114,8 +115,7 @@ Namespace Config
|
|||||||
End If
|
End If
|
||||||
End With
|
End With
|
||||||
Catch ex As Exception
|
Catch ex As Exception
|
||||||
App.Runtime.log.Error("Loading settings failed" & vbNewLine & ex.Message)
|
Log.Error("Loading settings failed" & vbNewLine & ex.Message)
|
||||||
'mC.AddMessage(Messages.MessageClass.ErrorMsg, "Loading settings failed" & vbNewLine & ex.Message, True)
|
|
||||||
End Try
|
End Try
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
@@ -196,8 +196,7 @@ Namespace Config
|
|||||||
End If
|
End If
|
||||||
End With
|
End With
|
||||||
Catch ex As Exception
|
Catch ex As Exception
|
||||||
App.Runtime.log.Error("LoadPanelsFromXML failed" & vbNewLine & ex.Message)
|
Log.Error("LoadPanelsFromXML failed" & vbNewLine & ex.Message)
|
||||||
'mC.AddMessage(Messages.MessageClass.ErrorMsg, "LoadPanelsFromXML failed" & vbNewLine & ex.Message, True)
|
|
||||||
End Try
|
End Try
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
@@ -268,8 +267,7 @@ Namespace Config
|
|||||||
Return Windows.screenshotPanel
|
Return Windows.screenshotPanel
|
||||||
End If
|
End If
|
||||||
Catch ex As Exception
|
Catch ex As Exception
|
||||||
App.Runtime.log.Error("GetContentFromPersistString failed" & vbNewLine & ex.Message)
|
Log.Error("GetContentFromPersistString failed" & vbNewLine & ex.Message)
|
||||||
'mC.AddMessage(Messages.MessageClass.ErrorMsg, "GetContentFromPersistString failed" & vbNewLine & ex.Message, True)
|
|
||||||
End Try
|
End Try
|
||||||
|
|
||||||
Return Nothing
|
Return Nothing
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ Namespace Config
|
|||||||
|
|
||||||
My.Settings.MainFormState = .WindowState
|
My.Settings.MainFormState = .WindowState
|
||||||
|
|
||||||
My.Settings.MainFormKiosk = Tools.Misc.Fullscreen.FullscreenActive
|
My.Settings.MainFormKiosk = .Fullscreen.Value
|
||||||
|
|
||||||
My.Settings.FirstStart = False
|
My.Settings.FirstStart = False
|
||||||
My.Settings.ResetPanels = False
|
My.Settings.ResetPanels = False
|
||||||
|
|||||||
@@ -1,16 +1,29 @@
|
|||||||
Imports System.ComponentModel
|
Imports System.ComponentModel
|
||||||
|
Imports System.Management
|
||||||
|
Imports mRemoteNG.Messages
|
||||||
Imports Microsoft.Win32
|
Imports Microsoft.Win32
|
||||||
Imports mRemoteNG.Connection.Protocol
|
Imports mRemoteNG.Connection.Protocol
|
||||||
Imports mRemoteNG.Tree
|
|
||||||
Imports mRemoteNG.My
|
Imports mRemoteNG.My
|
||||||
|
Imports mRemoteNG.App.Runtime
|
||||||
|
Imports System.Security.Principal
|
||||||
|
|
||||||
Namespace Config
|
Namespace Config
|
||||||
Public Class PuttySessions
|
Public Class PuttySessions
|
||||||
Private Const PuttySessionsKey As String = "Software\SimonTatham\PuTTY\Sessions"
|
Private Const PuttySessionsKey As String = "Software\SimonTatham\PuTTY\Sessions"
|
||||||
|
Private Shared _rootTreeNode As TreeNode
|
||||||
|
Private Shared _eventWatcher As ManagementEventWatcher
|
||||||
|
|
||||||
Public Shared Sub AddSessionsToTree(ByVal treeView As TreeView)
|
Private Delegate Sub AddSessionsToTreeDelegate()
|
||||||
Dim savedSessions() As Connection.Info = LoadSessions()
|
Public Shared Sub AddSessionsToTree()
|
||||||
If savedSessions Is Nothing OrElse savedSessions.Length = 0 Then Return
|
Dim treeView As TreeView = Tree.Node.TreeView
|
||||||
|
If treeView Is Nothing Then Return
|
||||||
|
If treeView.InvokeRequired Then
|
||||||
|
treeView.Invoke(New AddSessionsToTreeDelegate(AddressOf AddSessionsToTree))
|
||||||
|
Return
|
||||||
|
End If
|
||||||
|
|
||||||
|
Dim savedSessions As New List(Of Connection.Info)(LoadSessions())
|
||||||
|
If savedSessions Is Nothing OrElse savedSessions.Count = 0 Then Return
|
||||||
|
|
||||||
Dim puttyRootInfo As New Root.PuttySessions.Info()
|
Dim puttyRootInfo As New Root.PuttySessions.Info()
|
||||||
If String.IsNullOrEmpty(My.Settings.PuttySavedSessionsName) Then
|
If String.IsNullOrEmpty(My.Settings.PuttySavedSessionsName) Then
|
||||||
@@ -24,55 +37,106 @@ Namespace Config
|
|||||||
puttyRootInfo.Panel = My.Settings.PuttySavedSessionsPanel
|
puttyRootInfo.Panel = My.Settings.PuttySavedSessionsPanel
|
||||||
End If
|
End If
|
||||||
|
|
||||||
Dim puttyRootNode As TreeNode = New TreeNode
|
Dim inUpdate As Boolean = False
|
||||||
puttyRootNode.Text = puttyRootInfo.Name
|
|
||||||
puttyRootNode.Tag = puttyRootInfo
|
|
||||||
puttyRootNode.ImageIndex = Images.Enums.TreeImage.PuttySessions
|
|
||||||
puttyRootNode.SelectedImageIndex = Images.Enums.TreeImage.PuttySessions
|
|
||||||
|
|
||||||
puttyRootInfo.TreeNode = puttyRootNode
|
If _rootTreeNode Is Nothing Then
|
||||||
|
_rootTreeNode = New TreeNode
|
||||||
|
_rootTreeNode.Name = puttyRootInfo.Name
|
||||||
|
_rootTreeNode.Text = puttyRootInfo.Name
|
||||||
|
_rootTreeNode.Tag = puttyRootInfo
|
||||||
|
_rootTreeNode.ImageIndex = Images.Enums.TreeImage.PuttySessions
|
||||||
|
_rootTreeNode.SelectedImageIndex = Images.Enums.TreeImage.PuttySessions
|
||||||
|
treeView.Nodes.Add(_rootTreeNode)
|
||||||
|
If Not inUpdate Then
|
||||||
|
treeView.BeginUpdate()
|
||||||
|
inUpdate = True
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
|
||||||
treeView.BeginUpdate()
|
puttyRootInfo.TreeNode = _rootTreeNode
|
||||||
treeView.Nodes.Add(puttyRootNode)
|
|
||||||
|
|
||||||
Dim newTreeNode As TreeNode
|
Dim newTreeNodes As New List(Of TreeNode)
|
||||||
For Each sessionInfo As Connection.PuttySession.Info In savedSessions
|
For Each sessionInfo As Connection.PuttySession.Info In savedSessions
|
||||||
newTreeNode = Node.AddNode(Node.Type.PuttySession, sessionInfo.Name)
|
Dim treeNode As TreeNode
|
||||||
If newTreeNode Is Nothing Then Continue For
|
Dim isNewNode As Boolean
|
||||||
|
If _rootTreeNode.Nodes.ContainsKey(sessionInfo.Name) Then
|
||||||
|
treeNode = _rootTreeNode.Nodes.Item(sessionInfo.Name)
|
||||||
|
isNewNode = False
|
||||||
|
Else
|
||||||
|
treeNode = Tree.Node.AddNode(Tree.Node.Type.PuttySession, sessionInfo.Name)
|
||||||
|
If treeNode Is Nothing Then Continue For
|
||||||
|
treeNode.Name = treeNode.Text
|
||||||
|
treeNode.ImageIndex = Images.Enums.TreeImage.ConnectionClosed
|
||||||
|
treeNode.SelectedImageIndex = Images.Enums.TreeImage.ConnectionClosed
|
||||||
|
isNewNode = True
|
||||||
|
End If
|
||||||
|
|
||||||
sessionInfo.RootPuttySessionsInfo = puttyRootInfo
|
sessionInfo.RootPuttySessionsInfo = puttyRootInfo
|
||||||
sessionInfo.TreeNode = newTreeNode
|
sessionInfo.TreeNode = treeNode
|
||||||
sessionInfo.Inherit.TurnOffInheritanceCompletely()
|
sessionInfo.Inherit.TurnOffInheritanceCompletely()
|
||||||
|
|
||||||
newTreeNode.Tag = sessionInfo
|
treeNode.Tag = sessionInfo
|
||||||
newTreeNode.ImageIndex = Images.Enums.TreeImage.ConnectionClosed
|
|
||||||
newTreeNode.SelectedImageIndex = Images.Enums.TreeImage.ConnectionClosed
|
|
||||||
|
|
||||||
puttyRootNode.Nodes.Add(newTreeNode)
|
If isNewNode Then newTreeNodes.Add(treeNode)
|
||||||
Next
|
Next
|
||||||
|
|
||||||
puttyRootNode.Expand()
|
For Each treeNode As TreeNode In _rootTreeNode.Nodes
|
||||||
treeView.EndUpdate()
|
If Not savedSessions.Contains(treeNode.Tag) Then
|
||||||
|
If Not inUpdate Then
|
||||||
|
treeView.BeginUpdate()
|
||||||
|
inUpdate = True
|
||||||
|
End If
|
||||||
|
_rootTreeNode.Nodes.Remove(treeNode)
|
||||||
|
End If
|
||||||
|
Next
|
||||||
|
|
||||||
|
If Not newTreeNodes.Count = 0 Then
|
||||||
|
If Not inUpdate Then
|
||||||
|
treeView.BeginUpdate()
|
||||||
|
inUpdate = True
|
||||||
|
End If
|
||||||
|
_rootTreeNode.Nodes.AddRange(newTreeNodes.ToArray())
|
||||||
|
End If
|
||||||
|
|
||||||
|
If inUpdate Then
|
||||||
|
Tree.Node.Sort(_rootTreeNode, SortOrder.Ascending)
|
||||||
|
_rootTreeNode.Expand()
|
||||||
|
treeView.EndUpdate()
|
||||||
|
End If
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
Protected Shared Function GetSessionNames(Optional ByVal addDefaultSettings As Boolean = False) As String()
|
Protected Shared Function GetSessionNames(Optional ByVal raw As Boolean = False) As String()
|
||||||
Dim sessionsKey As RegistryKey = Registry.CurrentUser.OpenSubKey(PuttySessionsKey)
|
Dim sessionsKey As RegistryKey = Registry.CurrentUser.OpenSubKey(PuttySessionsKey)
|
||||||
If sessionsKey Is Nothing Then Return Nothing
|
If sessionsKey Is Nothing Then Return New String() {}
|
||||||
|
|
||||||
Dim sessionNames As New List(Of String)
|
Dim sessionNames As New List(Of String)
|
||||||
If addDefaultSettings Then sessionNames.Add("Default Settings")
|
|
||||||
For Each sessionName As String In sessionsKey.GetSubKeyNames()
|
For Each sessionName As String In sessionsKey.GetSubKeyNames()
|
||||||
sessionNames.Add(Web.HttpUtility.UrlDecode(sessionName))
|
If raw Then
|
||||||
|
sessionNames.Add(sessionName)
|
||||||
|
Else
|
||||||
|
sessionNames.Add(Web.HttpUtility.UrlDecode(sessionName.Replace("+", "%2B")))
|
||||||
|
End If
|
||||||
Next
|
Next
|
||||||
|
|
||||||
|
If raw Then
|
||||||
|
If Not sessionNames.Contains("Default%20Settings") Then ' Do not localize
|
||||||
|
sessionNames.Insert(0, "Default%20Settings")
|
||||||
|
End If
|
||||||
|
Else
|
||||||
|
If Not sessionNames.Contains("Default Settings") Then
|
||||||
|
sessionNames.Insert(0, "Default Settings")
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
|
||||||
Return sessionNames.ToArray()
|
Return sessionNames.ToArray()
|
||||||
End Function
|
End Function
|
||||||
|
|
||||||
Protected Shared Function LoadSessions() As Connection.PuttySession.Info()
|
Protected Shared Function LoadSessions() As Connection.PuttySession.Info()
|
||||||
Dim sessionList As New List(Of Connection.PuttySession.Info)
|
Dim sessionList As New List(Of Connection.PuttySession.Info)
|
||||||
Dim sessionInfo As Connection.Info
|
Dim sessionInfo As Connection.Info
|
||||||
For Each sessionName As String In GetSessionNames()
|
For Each sessionName As String In GetSessionNames(True)
|
||||||
sessionInfo = SessionToConnectionInfo(sessionName)
|
sessionInfo = SessionToConnectionInfo(sessionName)
|
||||||
If sessionInfo Is Nothing Then Continue For
|
If sessionInfo Is Nothing OrElse String.IsNullOrEmpty(sessionInfo.Hostname) Then Continue For
|
||||||
sessionList.Add(sessionInfo)
|
sessionList.Add(sessionInfo)
|
||||||
Next
|
Next
|
||||||
Return sessionList.ToArray()
|
Return sessionList.ToArray()
|
||||||
@@ -85,6 +149,8 @@ Namespace Config
|
|||||||
Dim sessionKey As RegistryKey = sessionsKey.OpenSubKey(sessionName)
|
Dim sessionKey As RegistryKey = sessionsKey.OpenSubKey(sessionName)
|
||||||
If sessionKey Is Nothing Then Return Nothing
|
If sessionKey Is Nothing Then Return Nothing
|
||||||
|
|
||||||
|
sessionName = Web.HttpUtility.UrlDecode(sessionName.Replace("+", "%2B"))
|
||||||
|
|
||||||
Dim sessionInfo As New Connection.PuttySession.Info
|
Dim sessionInfo As New Connection.PuttySession.Info
|
||||||
With sessionInfo
|
With sessionInfo
|
||||||
.PuttySession = sessionName
|
.PuttySession = sessionName
|
||||||
@@ -92,6 +158,7 @@ Namespace Config
|
|||||||
.Hostname = sessionKey.GetValue("HostName")
|
.Hostname = sessionKey.GetValue("HostName")
|
||||||
.Username = sessionKey.GetValue("UserName")
|
.Username = sessionKey.GetValue("UserName")
|
||||||
Dim protocol As String = sessionKey.GetValue("Protocol")
|
Dim protocol As String = sessionKey.GetValue("Protocol")
|
||||||
|
If protocol Is Nothing Then protocol = "ssh"
|
||||||
Select Case protocol.ToLowerInvariant()
|
Select Case protocol.ToLowerInvariant()
|
||||||
Case "raw"
|
Case "raw"
|
||||||
.Protocol = Protocols.RAW
|
.Protocol = Protocols.RAW
|
||||||
@@ -100,11 +167,16 @@ Namespace Config
|
|||||||
Case "serial"
|
Case "serial"
|
||||||
Return Nothing
|
Return Nothing
|
||||||
Case "ssh"
|
Case "ssh"
|
||||||
Dim sshVersion As Integer = sessionKey.GetValue("SshProt")
|
Dim sshVersionObject As Object = sessionKey.GetValue("SshProt")
|
||||||
If sshVersion >= 2 Then
|
If sshVersionObject IsNot Nothing Then
|
||||||
.Protocol = Protocols.SSH2
|
Dim sshVersion As Integer = CType(sshVersionObject, Integer)
|
||||||
|
If sshVersion >= 2 Then
|
||||||
|
.Protocol = Protocols.SSH2
|
||||||
|
Else
|
||||||
|
.Protocol = Protocols.SSH1
|
||||||
|
End If
|
||||||
Else
|
Else
|
||||||
.Protocol = Protocols.SSH1
|
.Protocol = Protocols.SSH2
|
||||||
End If
|
End If
|
||||||
Case "telnet"
|
Case "telnet"
|
||||||
.Protocol = Protocols.Telnet
|
.Protocol = Protocols.Telnet
|
||||||
@@ -117,12 +189,38 @@ Namespace Config
|
|||||||
Return sessionInfo
|
Return sessionInfo
|
||||||
End Function
|
End Function
|
||||||
|
|
||||||
|
Public Shared Sub StartWatcher()
|
||||||
|
If _eventWatcher IsNot Nothing Then Return
|
||||||
|
|
||||||
|
Try
|
||||||
|
Dim currentUserSid As String = WindowsIdentity.GetCurrent().User.Value
|
||||||
|
Dim key As String = String.Join("\", {currentUserSid, PuttySessionsKey}).Replace("\", "\\")
|
||||||
|
Dim query As New WqlEventQuery(String.Format("SELECT * FROM RegistryTreeChangeEvent WHERE Hive = 'HKEY_USERS' AND RootPath = '{0}'", key))
|
||||||
|
_eventWatcher = New ManagementEventWatcher(query)
|
||||||
|
AddHandler _eventWatcher.EventArrived, AddressOf OnManagementEventArrived
|
||||||
|
_eventWatcher.Start()
|
||||||
|
Catch ex As Exception
|
||||||
|
MessageCollector.AddExceptionMessage("PuttySessions.Watcher.StartWatching() failed.", ex, MessageClass.WarningMsg, True)
|
||||||
|
End Try
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Public Shared Sub StopWatcher()
|
||||||
|
If _eventWatcher Is Nothing Then Return
|
||||||
|
_eventWatcher.Stop()
|
||||||
|
_eventWatcher.Dispose()
|
||||||
|
_eventWatcher = Nothing
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Shared Sub OnManagementEventArrived(ByVal sender As Object, ByVal e As EventArrivedEventArgs)
|
||||||
|
AddSessionsToTree()
|
||||||
|
End Sub
|
||||||
|
|
||||||
Public Class SessionList
|
Public Class SessionList
|
||||||
Inherits StringConverter
|
Inherits StringConverter
|
||||||
|
|
||||||
Public Shared ReadOnly Property Names() As String()
|
Public Shared ReadOnly Property Names() As String()
|
||||||
Get
|
Get
|
||||||
Return GetSessionNames(True)
|
Return GetSessionNames()
|
||||||
End Get
|
End Get
|
||||||
End Property
|
End Property
|
||||||
|
|
||||||
|
|||||||
@@ -102,17 +102,18 @@ Namespace Connection
|
|||||||
End Property
|
End Property
|
||||||
#End Region
|
#End Region
|
||||||
#Region "2 Connection"
|
#Region "2 Connection"
|
||||||
Private _Hostname As String = ""
|
Private _hostname As String = ""
|
||||||
<LocalizedCategory("strCategoryConnection", 2), _
|
<LocalizedCategory("strCategoryConnection", 2), _
|
||||||
Browsable(True), _
|
Browsable(True), _
|
||||||
LocalizedDisplayName("strPropertyNameAddress"), _
|
LocalizedDisplayName("strPropertyNameAddress"), _
|
||||||
LocalizedDescription("strPropertyDescriptionAddress")> _
|
LocalizedDescription("strPropertyDescriptionAddress")> _
|
||||||
Public Overridable Property Hostname() As String
|
Public Overridable Property Hostname() As String
|
||||||
Get
|
Get
|
||||||
Return Me._Hostname.Trim()
|
Return _hostname.Trim()
|
||||||
End Get
|
End Get
|
||||||
Set(ByVal value As String)
|
Set(ByVal value As String)
|
||||||
Me._Hostname = value.Trim()
|
If String.IsNullOrEmpty(value) Then _hostname = ""
|
||||||
|
_hostname = value.Trim()
|
||||||
End Set
|
End Set
|
||||||
End Property
|
End Property
|
||||||
|
|
||||||
@@ -384,6 +385,32 @@ Namespace Connection
|
|||||||
End Set
|
End Set
|
||||||
End Property
|
End Property
|
||||||
|
|
||||||
|
Private _loadBalanceInfo As String = My.Settings.ConDefaultLoadBalanceInfo
|
||||||
|
<LocalizedCategory("strCategoryProtocol", 3), _
|
||||||
|
Browsable(True), _
|
||||||
|
LocalizedDisplayName("strPropertyNameLoadBalanceInfo"), _
|
||||||
|
LocalizedDescription("strPropertyDescriptionLoadBalanceInfo")> _
|
||||||
|
Public Property LoadBalanceInfo() As String
|
||||||
|
Get
|
||||||
|
If _Inherit.LoadBalanceInfo And _Parent IsNot Nothing Then
|
||||||
|
Dim parCon As Info = TryCast(_Parent, Container.Info).ConnectionInfo
|
||||||
|
|
||||||
|
If _IsContainer = True Then
|
||||||
|
Dim curCont As Container.Info = _Parent
|
||||||
|
Dim parCont As Container.Info = curCont.Parent
|
||||||
|
parCon = parCont.ConnectionInfo
|
||||||
|
End If
|
||||||
|
|
||||||
|
Return parCon.LoadBalanceInfo.Trim()
|
||||||
|
Else
|
||||||
|
Return _loadBalanceInfo.Trim()
|
||||||
|
End If
|
||||||
|
End Get
|
||||||
|
Set(ByVal value As String)
|
||||||
|
_loadBalanceInfo = value.Trim()
|
||||||
|
End Set
|
||||||
|
End Property
|
||||||
|
|
||||||
Private _RenderingEngine As Connection.Protocol.HTTPBase.RenderingEngine = Tools.Misc.StringToEnum(GetType(mRemoteNG.Connection.Protocol.HTTPBase.RenderingEngine), My.Settings.ConDefaultRenderingEngine)
|
Private _RenderingEngine As Connection.Protocol.HTTPBase.RenderingEngine = Tools.Misc.StringToEnum(GetType(mRemoteNG.Connection.Protocol.HTTPBase.RenderingEngine), My.Settings.ConDefaultRenderingEngine)
|
||||||
<LocalizedCategory("strCategoryProtocol", 3), _
|
<LocalizedCategory("strCategoryProtocol", 3), _
|
||||||
Browsable(True), _
|
Browsable(True), _
|
||||||
@@ -626,6 +653,33 @@ Namespace Connection
|
|||||||
End Set
|
End Set
|
||||||
End Property
|
End Property
|
||||||
|
|
||||||
|
Private _automaticResize As Boolean = My.Settings.ConDefaultAutomaticResize
|
||||||
|
<LocalizedCategory("strCategoryAppearance", 5), _
|
||||||
|
Browsable(True), _
|
||||||
|
LocalizedDisplayName("strPropertyNameAutomaticResize"), _
|
||||||
|
LocalizedDescription("strPropertyDescriptionAutomaticResize"), _
|
||||||
|
TypeConverter(GetType(Tools.Misc.YesNoTypeConverter))> _
|
||||||
|
Public Property AutomaticResize() As Boolean
|
||||||
|
Get
|
||||||
|
If _Inherit.CacheBitmaps And _Parent IsNot Nothing Then
|
||||||
|
Dim parCon As Info = TryCast(_Parent, Container.Info).ConnectionInfo
|
||||||
|
|
||||||
|
If _IsContainer = True Then
|
||||||
|
Dim curCont As Container.Info = _Parent
|
||||||
|
Dim parCont As Container.Info = curCont.Parent
|
||||||
|
parCon = parCont.ConnectionInfo
|
||||||
|
End If
|
||||||
|
|
||||||
|
Return parCon.AutomaticResize
|
||||||
|
Else
|
||||||
|
Return _automaticResize
|
||||||
|
End If
|
||||||
|
End Get
|
||||||
|
Set(ByVal value As Boolean)
|
||||||
|
_automaticResize = value
|
||||||
|
End Set
|
||||||
|
End Property
|
||||||
|
|
||||||
Private _Colors As Connection.Protocol.RDP.RDPColors = Tools.Misc.StringToEnum(GetType(Connection.Protocol.RDP.RDPColors), My.Settings.ConDefaultColors)
|
Private _Colors As Connection.Protocol.RDP.RDPColors = Tools.Misc.StringToEnum(GetType(Connection.Protocol.RDP.RDPColors), My.Settings.ConDefaultColors)
|
||||||
<LocalizedCategory("strCategoryAppearance", 5), _
|
<LocalizedCategory("strCategoryAppearance", 5), _
|
||||||
Browsable(True), _
|
Browsable(True), _
|
||||||
@@ -1848,6 +1902,21 @@ Namespace Connection
|
|||||||
End Set
|
End Set
|
||||||
End Property
|
End Property
|
||||||
|
|
||||||
|
Private _loadBalanceInfo As Boolean = My.Settings.InhDefaultLoadBalanceInfo
|
||||||
|
<LocalizedCategory("strCategoryProtocol", 4), _
|
||||||
|
Browsable(True), _
|
||||||
|
LocalizedDisplayNameInheritAttribute("strPropertyNameLoadBalanceInfo"), _
|
||||||
|
LocalizedDescriptionInheritAttribute("strPropertyDescriptionLoadBalanceInfo"), _
|
||||||
|
TypeConverter(GetType(Tools.Misc.YesNoTypeConverter))> _
|
||||||
|
Public Property LoadBalanceInfo() As Boolean
|
||||||
|
Get
|
||||||
|
Return _loadBalanceInfo
|
||||||
|
End Get
|
||||||
|
Set(ByVal value As Boolean)
|
||||||
|
_loadBalanceInfo = value
|
||||||
|
End Set
|
||||||
|
End Property
|
||||||
|
|
||||||
Private _RenderingEngine As Boolean = My.Settings.InhDefaultRenderingEngine
|
Private _RenderingEngine As Boolean = My.Settings.InhDefaultRenderingEngine
|
||||||
<LocalizedCategory("strCategoryProtocol", 4), _
|
<LocalizedCategory("strCategoryProtocol", 4), _
|
||||||
Browsable(True), _
|
Browsable(True), _
|
||||||
@@ -2000,6 +2069,21 @@ Namespace Connection
|
|||||||
End Set
|
End Set
|
||||||
End Property
|
End Property
|
||||||
|
|
||||||
|
Private _automaticResize As Boolean = My.Settings.InhDefaultAutomaticResize
|
||||||
|
<LocalizedCategory("strCategoryAppearance", 6), _
|
||||||
|
Browsable(True), _
|
||||||
|
LocalizedDisplayNameInheritAttribute("strPropertyNameAutomaticResize"), _
|
||||||
|
LocalizedDescriptionInheritAttribute("strPropertyDescriptionAutomaticResize"), _
|
||||||
|
TypeConverter(GetType(Tools.Misc.YesNoTypeConverter))> _
|
||||||
|
Public Property AutomaticResize() As Boolean
|
||||||
|
Get
|
||||||
|
Return _automaticResize
|
||||||
|
End Get
|
||||||
|
Set(ByVal value As Boolean)
|
||||||
|
_automaticResize = value
|
||||||
|
End Set
|
||||||
|
End Property
|
||||||
|
|
||||||
Private _Colors As Boolean = My.Settings.InhDefaultColors
|
Private _Colors As Boolean = My.Settings.InhDefaultColors
|
||||||
<LocalizedCategory("strCategoryAppearance", 6), _
|
<LocalizedCategory("strCategoryAppearance", 6), _
|
||||||
Browsable(True), _
|
Browsable(True), _
|
||||||
|
|||||||
@@ -156,7 +156,8 @@ Namespace Connection
|
|||||||
ICA.SetWindowSize(WFICALib.ICAWindowType.WindowTypeClient, Screen.FromControl(frmMain).Bounds.Width, Screen.FromControl(frmMain).Bounds.Height, 0)
|
ICA.SetWindowSize(WFICALib.ICAWindowType.WindowTypeClient, Screen.FromControl(frmMain).Bounds.Width, Screen.FromControl(frmMain).Bounds.Height, 0)
|
||||||
ICA.FullScreenWindow()
|
ICA.FullScreenWindow()
|
||||||
Case Else
|
Case Else
|
||||||
ICA.SetWindowSize(WFICALib.ICAWindowType.WindowTypeClient, RDP.Resolutions.Items(Int(Info.Resolution)).Width, RDP.Resolutions.Items(Int(Info.Resolution)).Height, 0)
|
Dim resolution As Rectangle = RDP.GetResolutionRectangle(Info.Resolution)
|
||||||
|
ICA.SetWindowSize(WFICALib.ICAWindowType.WindowTypeClient, resolution.Width, resolution.Height, 0)
|
||||||
End Select
|
End Select
|
||||||
Catch ex As Exception
|
Catch ex As Exception
|
||||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strIcaSetResolutionFailed & vbNewLine & ex.Message, True)
|
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strIcaSetResolutionFailed & vbNewLine & ex.Message, True)
|
||||||
|
|||||||
@@ -73,18 +73,6 @@ Namespace Connection
|
|||||||
End Set
|
End Set
|
||||||
End Property
|
End Property
|
||||||
|
|
||||||
'Private borderWidth As Integer = frmMain.Size.Width - frmMain.ClientSize.Width
|
|
||||||
'Private borderHeight As Integer = frmMain.Size.Height - frmMain.ClientSize.Height
|
|
||||||
Private Shared _BorderSize As Size
|
|
||||||
Public Shared Property BorderSize() As Size
|
|
||||||
Get
|
|
||||||
Return _BorderSize
|
|
||||||
End Get
|
|
||||||
Set(ByVal value As Size)
|
|
||||||
_BorderSize = value
|
|
||||||
End Set
|
|
||||||
End Property
|
|
||||||
|
|
||||||
Public ReadOnly Property Focused() As Boolean
|
Public ReadOnly Property Focused() As Boolean
|
||||||
Get
|
Get
|
||||||
If GetForegroundWindow() = PuttyHandle Then
|
If GetForegroundWindow() = PuttyHandle Then
|
||||||
@@ -120,38 +108,45 @@ Namespace Connection
|
|||||||
arguments.EscapeForShell = False
|
arguments.EscapeForShell = False
|
||||||
|
|
||||||
arguments.Add("-load", InterfaceControl.Info.PuttySession)
|
arguments.Add("-load", InterfaceControl.Info.PuttySession)
|
||||||
arguments.Add("-" & _PuttyProtocol.ToString)
|
|
||||||
|
|
||||||
If _PuttyProtocol = Putty_Protocol.ssh Then
|
If Not TypeOf InterfaceControl.Info Is PuttySession.Info Then
|
||||||
Dim username As String = ""
|
arguments.Add("-" & _PuttyProtocol.ToString)
|
||||||
Dim password As String = ""
|
|
||||||
|
|
||||||
If Not String.IsNullOrEmpty(InterfaceControl.Info.Username) Then
|
If _PuttyProtocol = Putty_Protocol.ssh Then
|
||||||
username = InterfaceControl.Info.Username
|
Dim username As String = ""
|
||||||
Else
|
Dim password As String = ""
|
||||||
If My.Settings.EmptyCredentials = "windows" Then
|
|
||||||
username = Environment.UserName
|
If Not String.IsNullOrEmpty(InterfaceControl.Info.Username) Then
|
||||||
ElseIf My.Settings.EmptyCredentials = "custom" Then
|
username = InterfaceControl.Info.Username
|
||||||
username = My.Settings.DefaultUsername
|
Else
|
||||||
|
If My.Settings.EmptyCredentials = "windows" Then
|
||||||
|
username = Environment.UserName
|
||||||
|
ElseIf My.Settings.EmptyCredentials = "custom" Then
|
||||||
|
username = My.Settings.DefaultUsername
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
|
||||||
|
If Not String.IsNullOrEmpty(InterfaceControl.Info.Password) Then
|
||||||
|
password = InterfaceControl.Info.Password
|
||||||
|
Else
|
||||||
|
If My.Settings.EmptyCredentials = "custom" Then
|
||||||
|
password = Security.Crypt.Decrypt(My.Settings.DefaultPassword, App.Info.General.EncryptionKey)
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
|
||||||
|
arguments.Add("-" & _PuttySSHVersion)
|
||||||
|
If Not String.IsNullOrEmpty(username) Then
|
||||||
|
arguments.Add("-l", username)
|
||||||
|
End If
|
||||||
|
If Not String.IsNullOrEmpty(password) Then
|
||||||
|
arguments.Add("-pw", password)
|
||||||
End If
|
End If
|
||||||
End If
|
End If
|
||||||
|
|
||||||
If Not String.IsNullOrEmpty(InterfaceControl.Info.Password) Then
|
arguments.Add("-P", InterfaceControl.Info.Port.ToString)
|
||||||
password = InterfaceControl.Info.Password
|
arguments.Add(InterfaceControl.Info.Hostname)
|
||||||
Else
|
|
||||||
If My.Settings.EmptyCredentials = "custom" Then
|
|
||||||
password = Security.Crypt.Decrypt(My.Settings.DefaultPassword, App.Info.General.EncryptionKey)
|
|
||||||
End If
|
|
||||||
End If
|
|
||||||
|
|
||||||
arguments.Add("-" & _PuttySSHVersion)
|
|
||||||
arguments.Add("-l", username)
|
|
||||||
arguments.Add("-pw", password)
|
|
||||||
End If
|
End If
|
||||||
|
|
||||||
arguments.Add("-P", InterfaceControl.Info.Port.ToString)
|
|
||||||
arguments.Add(InterfaceControl.Info.Hostname)
|
|
||||||
|
|
||||||
If _isPuttyNg Then
|
If _isPuttyNg Then
|
||||||
arguments.Add("-hwndparent", InterfaceControl.Handle.ToString())
|
arguments.Add("-hwndparent", InterfaceControl.Handle.ToString())
|
||||||
End If
|
End If
|
||||||
@@ -252,19 +247,6 @@ Namespace Connection
|
|||||||
End Try
|
End Try
|
||||||
Return isPuttyNg
|
Return isPuttyNg
|
||||||
End Function
|
End Function
|
||||||
|
|
||||||
Public Shared Sub StartPutty()
|
|
||||||
Try
|
|
||||||
Dim p As Process
|
|
||||||
Dim pSI As New ProcessStartInfo
|
|
||||||
pSI.FileName = PuttyPath
|
|
||||||
|
|
||||||
p = Process.Start(pSI)
|
|
||||||
p.WaitForExit()
|
|
||||||
Catch ex As Exception
|
|
||||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strPuttyStartFailed & vbNewLine & ex.Message, True)
|
|
||||||
End Try
|
|
||||||
End Sub
|
|
||||||
#End Region
|
#End Region
|
||||||
|
|
||||||
#Region "Enums"
|
#Region "Enums"
|
||||||
|
|||||||
@@ -3,31 +3,32 @@ Imports System.Threading
|
|||||||
Imports AxMSTSCLib
|
Imports AxMSTSCLib
|
||||||
Imports EOLWTSCOM
|
Imports EOLWTSCOM
|
||||||
Imports System.ComponentModel
|
Imports System.ComponentModel
|
||||||
|
Imports mRemoteNG.Messages
|
||||||
Imports mRemoteNG.App.Runtime
|
Imports mRemoteNG.App.Runtime
|
||||||
Imports mRemoteNG.Tools.LocalizedAttributes
|
Imports mRemoteNG.Tools.LocalizedAttributes
|
||||||
|
Imports MSTSCLib
|
||||||
|
|
||||||
Namespace Connection
|
Namespace Connection
|
||||||
Namespace Protocol
|
Namespace Protocol
|
||||||
Public Class RDP
|
Public Class RDP
|
||||||
Inherits Connection.Protocol.Base
|
Inherits Base
|
||||||
|
|
||||||
#Region "Properties"
|
#Region "Properties"
|
||||||
Public Property SmartSize() As Boolean
|
Public Property SmartSize() As Boolean
|
||||||
Get
|
Get
|
||||||
Return RDP.AdvancedSettings4.SmartSizing
|
Return _rdpClient.AdvancedSettings2.SmartSizing
|
||||||
End Get
|
End Get
|
||||||
Set(ByVal value As Boolean)
|
Set(ByVal value As Boolean)
|
||||||
RDP.AdvancedSettings4.SmartSizing = value
|
_rdpClient.AdvancedSettings2.SmartSizing = value
|
||||||
ReconnectForResize()
|
ReconnectForResize()
|
||||||
End Set
|
End Set
|
||||||
End Property
|
End Property
|
||||||
|
|
||||||
Public Property Fullscreen() As Boolean
|
Public Property Fullscreen() As Boolean
|
||||||
Get
|
Get
|
||||||
Return RDP.FullScreen
|
Return _rdpClient.FullScreen
|
||||||
End Get
|
End Get
|
||||||
Set(ByVal value As Boolean)
|
Set(ByVal value As Boolean)
|
||||||
RDP.FullScreen = value
|
_rdpClient.FullScreen = value
|
||||||
ReconnectForResize()
|
ReconnectForResize()
|
||||||
End Set
|
End Set
|
||||||
End Property
|
End Property
|
||||||
@@ -42,8 +43,8 @@ Namespace Connection
|
|||||||
Try
|
Try
|
||||||
If Not _redirectKeys Then Return
|
If Not _redirectKeys Then Return
|
||||||
|
|
||||||
Debug.Assert(RDP.SecuredSettingsEnabled)
|
Debug.Assert(_rdpClient.SecuredSettingsEnabled)
|
||||||
Dim msRdpClientSecuredSettings As MSTSCLib.IMsRdpClientSecuredSettings = RDP.SecuredSettings2
|
Dim msRdpClientSecuredSettings As MSTSCLib.IMsRdpClientSecuredSettings = _rdpClient.SecuredSettings2
|
||||||
msRdpClientSecuredSettings.KeyboardHookMode = 1 ' Apply key combinations at the remote server.
|
msRdpClientSecuredSettings.KeyboardHookMode = 1 ' Apply key combinations at the remote server.
|
||||||
Catch ex As Exception
|
Catch ex As Exception
|
||||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strRdpSetRedirectKeysFailed & vbNewLine & ex.Message, True)
|
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strRdpSetRedirectKeysFailed & vbNewLine & ex.Message, True)
|
||||||
@@ -53,69 +54,72 @@ Namespace Connection
|
|||||||
#End Region
|
#End Region
|
||||||
|
|
||||||
#Region "Private Declarations"
|
#Region "Private Declarations"
|
||||||
Private RDP As AxMsRdpClient6NotSafeForScripting
|
Private _rdpClient As MsRdpClient5NotSafeForScripting
|
||||||
Private Info As Connection.Info
|
Private _rdpVersion As Version
|
||||||
Private RDPVersion As Version
|
Private _connectionInfo As Info
|
||||||
#End Region
|
#End Region
|
||||||
|
|
||||||
#Region "Public Methods"
|
#Region "Public Methods"
|
||||||
Public Sub New()
|
Public Sub New()
|
||||||
Me.Control = New AxMsRdpClient6NotSafeForScripting
|
Control = New AxMsRdpClient5NotSafeForScripting
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
Public Overrides Function SetProps() As Boolean
|
Public Overrides Function SetProps() As Boolean
|
||||||
MyBase.SetProps()
|
MyBase.SetProps()
|
||||||
|
|
||||||
Try
|
Try
|
||||||
RDP = Me.Control
|
Control.CreateControl()
|
||||||
Info = Me.InterfaceControl.Info
|
_connectionInfo = InterfaceControl.Info
|
||||||
|
|
||||||
Try
|
Try
|
||||||
RDP.CreateControl()
|
Do Until Control.Created
|
||||||
|
Thread.Sleep(0)
|
||||||
Do Until Me.RDP.Created
|
|
||||||
Thread.Sleep(10)
|
|
||||||
System.Windows.Forms.Application.DoEvents()
|
System.Windows.Forms.Application.DoEvents()
|
||||||
Loop
|
Loop
|
||||||
Catch comEx As System.Runtime.InteropServices.COMException
|
|
||||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strRdpControlCreationFailed & vbNewLine & vbNewLine & comEx.Message)
|
_rdpClient = CType(Control, AxMsRdpClient5NotSafeForScripting).GetOcx()
|
||||||
RDP.Dispose()
|
Catch ex As Runtime.InteropServices.COMException
|
||||||
|
MessageCollector.AddExceptionMessage(My.Language.strRdpControlCreationFailed, ex)
|
||||||
|
Control.Dispose()
|
||||||
Return False
|
Return False
|
||||||
End Try
|
End Try
|
||||||
|
|
||||||
Me.RDPVersion = New Version(RDP.Version)
|
_rdpVersion = New Version(_rdpClient.Version)
|
||||||
|
|
||||||
RDP.Server = Me.Info.Hostname
|
_rdpClient.Server = Me._connectionInfo.Hostname
|
||||||
|
|
||||||
Me.SetCredentials()
|
Me.SetCredentials()
|
||||||
Me.SetResolution()
|
Me.SetResolution()
|
||||||
Me.RDP.FullScreenTitle = Me.Info.Name
|
Me._rdpClient.FullScreenTitle = Me._connectionInfo.Name
|
||||||
|
|
||||||
'not user changeable
|
'not user changeable
|
||||||
RDP.AdvancedSettings2.GrabFocusOnConnect = True
|
_rdpClient.AdvancedSettings2.GrabFocusOnConnect = True
|
||||||
RDP.AdvancedSettings3.EnableAutoReconnect = True
|
_rdpClient.AdvancedSettings3.EnableAutoReconnect = True
|
||||||
RDP.AdvancedSettings3.MaxReconnectAttempts = My.Settings.RdpReconnectionCount
|
_rdpClient.AdvancedSettings3.MaxReconnectAttempts = My.Settings.RdpReconnectionCount
|
||||||
RDP.AdvancedSettings2.keepAliveInterval = 60000 'in milliseconds (10.000 = 10 seconds)
|
_rdpClient.AdvancedSettings2.keepAliveInterval = 60000 'in milliseconds (10.000 = 10 seconds)
|
||||||
RDP.AdvancedSettings5.AuthenticationLevel = 0
|
_rdpClient.AdvancedSettings5.AuthenticationLevel = 0
|
||||||
RDP.AdvancedSettings2.EncryptionEnabled = 1
|
_rdpClient.AdvancedSettings2.EncryptionEnabled = 1
|
||||||
|
|
||||||
RDP.AdvancedSettings2.overallConnectionTimeout = 20
|
_rdpClient.AdvancedSettings2.overallConnectionTimeout = 20
|
||||||
|
|
||||||
RDP.AdvancedSettings2.BitmapPeristence = Me.Info.CacheBitmaps
|
_rdpClient.AdvancedSettings2.BitmapPeristence = Me._connectionInfo.CacheBitmaps
|
||||||
RDP.AdvancedSettings7.EnableCredSspSupport = Info.UseCredSsp
|
If _rdpVersion >= Versions.RDC61 Then
|
||||||
|
_rdpClient.AdvancedSettings7.EnableCredSspSupport = _connectionInfo.UseCredSsp
|
||||||
|
End If
|
||||||
|
|
||||||
Me.SetUseConsoleSession()
|
Me.SetUseConsoleSession()
|
||||||
Me.SetPort()
|
Me.SetPort()
|
||||||
RedirectKeys = Info.RedirectKeys
|
RedirectKeys = _connectionInfo.RedirectKeys
|
||||||
Me.SetRedirection()
|
Me.SetRedirection()
|
||||||
Me.SetAuthenticationLevel()
|
Me.SetAuthenticationLevel()
|
||||||
Me.SetRDGateway()
|
SetLoadBalanceInfo()
|
||||||
|
Me.SetRdGateway()
|
||||||
|
|
||||||
RDP.ColorDepth = Int(Me.Info.Colors)
|
_rdpClient.ColorDepth = Int(Me._connectionInfo.Colors)
|
||||||
|
|
||||||
Me.SetPerformanceFlags()
|
Me.SetPerformanceFlags()
|
||||||
|
|
||||||
RDP.ConnectingText = My.Language.strConnecting
|
_rdpClient.ConnectingText = My.Language.strConnecting
|
||||||
|
|
||||||
Control.Anchor = AnchorStyles.None
|
Control.Anchor = AnchorStyles.None
|
||||||
|
|
||||||
@@ -130,7 +134,7 @@ Namespace Connection
|
|||||||
Me.SetEventHandlers()
|
Me.SetEventHandlers()
|
||||||
|
|
||||||
Try
|
Try
|
||||||
RDP.Connect()
|
_rdpClient.Connect()
|
||||||
MyBase.Connect()
|
MyBase.Connect()
|
||||||
Return True
|
Return True
|
||||||
Catch ex As Exception
|
Catch ex As Exception
|
||||||
@@ -142,7 +146,7 @@ Namespace Connection
|
|||||||
|
|
||||||
Public Overrides Sub Disconnect()
|
Public Overrides Sub Disconnect()
|
||||||
Try
|
Try
|
||||||
RDP.Disconnect()
|
_rdpClient.Disconnect()
|
||||||
Catch ex As Exception
|
Catch ex As Exception
|
||||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strRdpDisconnectFailed & vbNewLine & ex.Message, True)
|
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strRdpDisconnectFailed & vbNewLine & ex.Message, True)
|
||||||
MyBase.Close()
|
MyBase.Close()
|
||||||
@@ -167,8 +171,8 @@ Namespace Connection
|
|||||||
|
|
||||||
Public Overrides Sub Focus()
|
Public Overrides Sub Focus()
|
||||||
Try
|
Try
|
||||||
If RDP.ContainsFocus = False Then
|
If Control.ContainsFocus = False Then
|
||||||
RDP.Focus()
|
Control.Focus()
|
||||||
End If
|
End If
|
||||||
Catch ex As Exception
|
Catch ex As Exception
|
||||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strRdpFocusFailed & vbNewLine & ex.Message, True)
|
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strRdpFocusFailed & vbNewLine & ex.Message, True)
|
||||||
@@ -208,11 +212,14 @@ Namespace Connection
|
|||||||
End Function
|
End Function
|
||||||
|
|
||||||
Private Sub ReconnectForResize()
|
Private Sub ReconnectForResize()
|
||||||
If RDPVersion < Versions.RDC80 Then Return
|
If _rdpVersion < Versions.RDC80 Then Return
|
||||||
|
|
||||||
|
If Not InterfaceControl.Info.AutomaticResize Then Return
|
||||||
|
|
||||||
If Not (InterfaceControl.Info.Resolution = RDPResolutions.FitToWindow Or _
|
If Not (InterfaceControl.Info.Resolution = RDPResolutions.FitToWindow Or _
|
||||||
InterfaceControl.Info.Resolution = RDPResolutions.Fullscreen) Or _
|
InterfaceControl.Info.Resolution = RDPResolutions.Fullscreen) Then Return
|
||||||
SmartSize Then Return
|
|
||||||
|
If SmartSize Then Return
|
||||||
|
|
||||||
Dim size As Size
|
Dim size As Size
|
||||||
If Not Fullscreen Then
|
If Not Fullscreen Then
|
||||||
@@ -221,109 +228,104 @@ Namespace Connection
|
|||||||
size = Screen.FromControl(Control).Bounds.Size
|
size = Screen.FromControl(Control).Bounds.Size
|
||||||
End If
|
End If
|
||||||
|
|
||||||
Dim msRdpClient8 As MSTSCLib.IMsRdpClient8 = RDP.GetOcx()
|
Dim msRdpClient8 As IMsRdpClient8 = _rdpClient
|
||||||
msRdpClient8.Reconnect(size.Width, size.Height)
|
msRdpClient8.Reconnect(size.Width, size.Height)
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
Private Sub SetRDGateway()
|
Private Sub SetRdGateway()
|
||||||
Try
|
Try
|
||||||
If RDP.TransportSettings.GatewayIsSupported = 1 Then
|
If _rdpClient.TransportSettings.GatewayIsSupported = 0 Then Return
|
||||||
MessageCollector.AddMessage(Messages.MessageClass.InformationMsg, My.Language.strRdpGatewayIsSupported, True)
|
MessageCollector.AddMessage(MessageClass.InformationMsg, My.Language.strRdpGatewayIsSupported, True)
|
||||||
If Info.RDGatewayUsageMethod <> RDGatewayUsageMethod.Never Then
|
If Not _connectionInfo.RDGatewayUsageMethod = RDGatewayUsageMethod.Never Then
|
||||||
RDP.TransportSettings2.GatewayProfileUsageMethod = 1
|
_rdpClient.TransportSettings.GatewayUsageMethod = _connectionInfo.RDGatewayUsageMethod
|
||||||
RDP.TransportSettings.GatewayUsageMethod = Info.RDGatewayUsageMethod
|
_rdpClient.TransportSettings.GatewayHostname = _connectionInfo.RDGatewayHostname
|
||||||
RDP.TransportSettings.GatewayHostname = Info.RDGatewayHostname
|
_rdpClient.TransportSettings.GatewayProfileUsageMethod = 1 ' TSC_PROXY_PROFILE_MODE_EXPLICIT
|
||||||
If Info.RDGatewayUseConnectionCredentials = RDGatewayUseConnectionCredentials.Yes Then
|
If _connectionInfo.RDGatewayUseConnectionCredentials = RDGatewayUseConnectionCredentials.SmartCard Then
|
||||||
RDP.TransportSettings.GatewayUsername = Info.Username
|
_rdpClient.TransportSettings.GatewayCredsSource = 1 ' TSC_PROXY_CREDS_MODE_SMARTCARD
|
||||||
RDP.TransportSettings.GatewayPassword = Info.Password
|
End If
|
||||||
RDP.TransportSettings.GatewayDomain = Info.Domain
|
If _rdpVersion >= Versions.RDC61 Then
|
||||||
ElseIf Info.RDGatewayUseConnectionCredentials = RDGatewayUseConnectionCredentials.SmartCard Then
|
If _connectionInfo.RDGatewayUseConnectionCredentials = RDGatewayUseConnectionCredentials.Yes Then
|
||||||
RDP.TransportSettings2.GatewayCredsSource = 1 ' TSC_PROXY_CREDS_MODE_SMARTCARD
|
_rdpClient.TransportSettings2.GatewayUsername = _connectionInfo.Username
|
||||||
RDP.TransportSettings2.GatewayCredSharing = 0
|
_rdpClient.TransportSettings2.GatewayPassword = _connectionInfo.Password
|
||||||
|
_rdpClient.TransportSettings2.GatewayDomain = _connectionInfo.Domain
|
||||||
|
ElseIf _connectionInfo.RDGatewayUseConnectionCredentials = RDGatewayUseConnectionCredentials.SmartCard Then
|
||||||
|
_rdpClient.TransportSettings2.GatewayCredSharing = 0
|
||||||
Else
|
Else
|
||||||
RDP.TransportSettings.GatewayUsername = Info.RDGatewayUsername
|
_rdpClient.TransportSettings2.GatewayUsername = _connectionInfo.RDGatewayUsername
|
||||||
RDP.TransportSettings.GatewayPassword = Info.RDGatewayPassword
|
_rdpClient.TransportSettings2.GatewayPassword = _connectionInfo.RDGatewayPassword
|
||||||
RDP.TransportSettings.GatewayDomain = Info.RDGatewayDomain
|
_rdpClient.TransportSettings2.GatewayDomain = _connectionInfo.RDGatewayDomain
|
||||||
RDP.TransportSettings2.GatewayCredSharing = 0
|
_rdpClient.TransportSettings2.GatewayCredSharing = 0
|
||||||
End If
|
End If
|
||||||
End If
|
End If
|
||||||
Else
|
Else
|
||||||
MessageCollector.AddMessage(Messages.MessageClass.InformationMsg, My.Language.strRdpGatewayNotSupported, True)
|
MessageCollector.AddMessage(MessageClass.InformationMsg, My.Language.strRdpGatewayNotSupported, True)
|
||||||
End If
|
End If
|
||||||
Catch ex As Exception
|
Catch ex As Exception
|
||||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strRdpSetGatewayFailed & vbNewLine & ex.Message, True)
|
MessageCollector.AddMessage(MessageClass.ErrorMsg, My.Language.strRdpSetGatewayFailed & vbNewLine & ex.Message, True)
|
||||||
End Try
|
End Try
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
Private Sub SetUseConsoleSession()
|
Private Sub SetUseConsoleSession()
|
||||||
Try
|
Try
|
||||||
If (Me.Force And Connection.Info.Force.UseConsoleSession) = Connection.Info.Force.UseConsoleSession Then
|
Dim value As Boolean
|
||||||
If RDPVersion < Versions.RDC61 Then
|
|
||||||
MessageCollector.AddMessage(Messages.MessageClass.InformationMsg, String.Format(My.Language.strRdpSetConsoleSwitch, "6.0"), True)
|
If (Force And Info.Force.UseConsoleSession) = Info.Force.UseConsoleSession Then
|
||||||
RDP.AdvancedSettings2.ConnectToServerConsole = True
|
value = True
|
||||||
Else
|
ElseIf (Force And Info.Force.DontUseConsoleSession) = Info.Force.DontUseConsoleSession Then
|
||||||
MessageCollector.AddMessage(Messages.MessageClass.InformationMsg, String.Format(My.Language.strRdpSetConsoleSwitch, "6.1"), True)
|
value = False
|
||||||
RDP.AdvancedSettings6.ConnectToAdministerServer = True
|
|
||||||
End If
|
|
||||||
ElseIf (Me.Force And Connection.Info.Force.DontUseConsoleSession) = Connection.Info.Force.DontUseConsoleSession Then
|
|
||||||
If RDPVersion < Versions.RDC61 Then
|
|
||||||
MessageCollector.AddMessage(Messages.MessageClass.InformationMsg, String.Format(My.Language.strRdpSetConsoleSwitch, "6.0"), True)
|
|
||||||
RDP.AdvancedSettings2.ConnectToServerConsole = False
|
|
||||||
Else
|
|
||||||
MessageCollector.AddMessage(Messages.MessageClass.InformationMsg, String.Format(My.Language.strRdpSetConsoleSwitch, "6.1"), True)
|
|
||||||
RDP.AdvancedSettings6.ConnectToAdministerServer = False
|
|
||||||
End If
|
|
||||||
Else
|
Else
|
||||||
If RDPVersion < Versions.RDC61 Then
|
value = _connectionInfo.UseConsoleSession
|
||||||
MessageCollector.AddMessage(Messages.MessageClass.InformationMsg, String.Format(My.Language.strRdpSetConsoleSwitch, "6.0"), True)
|
End If
|
||||||
RDP.AdvancedSettings2.ConnectToServerConsole = Me.Info.UseConsoleSession
|
|
||||||
Else
|
If _rdpVersion >= Versions.RDC61 Then
|
||||||
MessageCollector.AddMessage(Messages.MessageClass.InformationMsg, String.Format(My.Language.strRdpSetConsoleSwitch, "6.1"), True)
|
MessageCollector.AddMessage(MessageClass.InformationMsg, String.Format(My.Language.strRdpSetConsoleSwitch, "6.1"), True)
|
||||||
RDP.AdvancedSettings6.ConnectToAdministerServer = Me.Info.UseConsoleSession
|
_rdpClient.AdvancedSettings7.ConnectToAdministerServer = value
|
||||||
End If
|
Else
|
||||||
|
MessageCollector.AddMessage(MessageClass.InformationMsg, String.Format(My.Language.strRdpSetConsoleSwitch, "6.0"), True)
|
||||||
|
_rdpClient.AdvancedSettings2.ConnectToServerConsole = value
|
||||||
End If
|
End If
|
||||||
Catch ex As Exception
|
Catch ex As Exception
|
||||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strRdpSetConsoleSessionFailed & vbNewLine & ex.Message, True)
|
MessageCollector.AddExceptionMessage(My.Language.strRdpSetConsoleSessionFailed, ex, MessageClass.ErrorMsg, True)
|
||||||
End Try
|
End Try
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
Private Sub SetCredentials()
|
Private Sub SetCredentials()
|
||||||
Try
|
Try
|
||||||
Dim _user As String = Me.Info.Username
|
Dim userName As String = _connectionInfo.Username
|
||||||
Dim _pass As String = Me.Info.Password
|
Dim password As String = _connectionInfo.Password
|
||||||
Dim _dom As String = Me.Info.Domain
|
Dim domain As String = _connectionInfo.Domain
|
||||||
|
|
||||||
If _user = "" Then
|
If userName = "" Then
|
||||||
Select Case My.Settings.EmptyCredentials
|
Select Case My.Settings.EmptyCredentials
|
||||||
Case "windows"
|
Case "windows"
|
||||||
RDP.UserName = Environment.UserName
|
_rdpClient.UserName = Environment.UserName
|
||||||
Case "custom"
|
Case "custom"
|
||||||
RDP.UserName = My.Settings.DefaultUsername
|
_rdpClient.UserName = My.Settings.DefaultUsername
|
||||||
End Select
|
End Select
|
||||||
Else
|
Else
|
||||||
RDP.UserName = _user
|
_rdpClient.UserName = userName
|
||||||
End If
|
End If
|
||||||
|
|
||||||
If _pass = "" Then
|
If password = "" Then
|
||||||
Select Case My.Settings.EmptyCredentials
|
Select Case My.Settings.EmptyCredentials
|
||||||
Case "custom"
|
Case "custom"
|
||||||
If My.Settings.DefaultPassword <> "" Then
|
If My.Settings.DefaultPassword <> "" Then
|
||||||
RDP.AdvancedSettings2.ClearTextPassword = Security.Crypt.Decrypt(My.Settings.DefaultPassword, App.Info.General.EncryptionKey)
|
_rdpClient.AdvancedSettings2.ClearTextPassword = Security.Crypt.Decrypt(My.Settings.DefaultPassword, App.Info.General.EncryptionKey)
|
||||||
End If
|
End If
|
||||||
End Select
|
End Select
|
||||||
Else
|
Else
|
||||||
RDP.AdvancedSettings2.ClearTextPassword = _pass
|
_rdpClient.AdvancedSettings2.ClearTextPassword = password
|
||||||
End If
|
End If
|
||||||
|
|
||||||
If _dom = "" Then
|
If domain = "" Then
|
||||||
Select Case My.Settings.EmptyCredentials
|
Select Case My.Settings.EmptyCredentials
|
||||||
Case "windows"
|
Case "windows"
|
||||||
RDP.Domain = Environment.UserDomainName
|
_rdpClient.Domain = Environment.UserDomainName
|
||||||
Case "custom"
|
Case "custom"
|
||||||
RDP.Domain = My.Settings.DefaultDomain
|
_rdpClient.Domain = My.Settings.DefaultDomain
|
||||||
End Select
|
End Select
|
||||||
Else
|
Else
|
||||||
RDP.Domain = _dom
|
_rdpClient.Domain = domain
|
||||||
End If
|
End If
|
||||||
Catch ex As Exception
|
Catch ex As Exception
|
||||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strRdpSetCredentialsFailed & vbNewLine & ex.Message, True)
|
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strRdpSetCredentialsFailed & vbNewLine & ex.Message, True)
|
||||||
@@ -333,28 +335,25 @@ Namespace Connection
|
|||||||
Private Sub SetResolution()
|
Private Sub SetResolution()
|
||||||
Try
|
Try
|
||||||
If (Me.Force And Connection.Info.Force.Fullscreen) = Connection.Info.Force.Fullscreen Then
|
If (Me.Force And Connection.Info.Force.Fullscreen) = Connection.Info.Force.Fullscreen Then
|
||||||
RDP.FullScreen = True
|
_rdpClient.FullScreen = True
|
||||||
RDP.DesktopWidth = Screen.FromControl(frmMain).Bounds.Width
|
_rdpClient.DesktopWidth = Screen.FromControl(frmMain).Bounds.Width
|
||||||
RDP.DesktopHeight = Screen.FromControl(frmMain).Bounds.Height
|
_rdpClient.DesktopHeight = Screen.FromControl(frmMain).Bounds.Height
|
||||||
|
|
||||||
Exit Sub
|
Exit Sub
|
||||||
End If
|
End If
|
||||||
|
|
||||||
Select Case Me.InterfaceControl.Info.Resolution
|
Select Case Me.InterfaceControl.Info.Resolution
|
||||||
Case RDPResolutions.FitToWindow
|
Case RDPResolutions.FitToWindow, RDPResolutions.SmartSize
|
||||||
RDP.DesktopWidth = Me.InterfaceControl.Size.Width
|
_rdpClient.DesktopWidth = InterfaceControl.Size.Width
|
||||||
RDP.DesktopHeight = Me.InterfaceControl.Size.Height
|
_rdpClient.DesktopHeight = InterfaceControl.Size.Height
|
||||||
Case RDPResolutions.SmartSize
|
|
||||||
RDP.AdvancedSettings.SmartSizing = True
|
|
||||||
RDP.DesktopWidth = Me.InterfaceControl.Size.Width
|
|
||||||
RDP.DesktopHeight = Me.InterfaceControl.Size.Height
|
|
||||||
Case RDPResolutions.Fullscreen
|
Case RDPResolutions.Fullscreen
|
||||||
RDP.FullScreen = True
|
_rdpClient.FullScreen = True
|
||||||
RDP.DesktopWidth = Screen.FromControl(frmMain).Bounds.Width
|
_rdpClient.DesktopWidth = Screen.FromControl(frmMain).Bounds.Width
|
||||||
RDP.DesktopHeight = Screen.FromControl(frmMain).Bounds.Height
|
_rdpClient.DesktopHeight = Screen.FromControl(frmMain).Bounds.Height
|
||||||
Case Else
|
Case Else
|
||||||
RDP.DesktopWidth = Resolutions.Items(Int(Me.Info.Resolution)).Width
|
Dim resolution As Rectangle = GetResolutionRectangle(_connectionInfo.Resolution)
|
||||||
RDP.DesktopHeight = Resolutions.Items(Int(Me.Info.Resolution)).Height
|
_rdpClient.DesktopWidth = resolution.Width
|
||||||
|
_rdpClient.DesktopHeight = resolution.Height
|
||||||
End Select
|
End Select
|
||||||
Catch ex As Exception
|
Catch ex As Exception
|
||||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strRdpSetResolutionFailed & vbNewLine & ex.Message, True)
|
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strRdpSetResolutionFailed & vbNewLine & ex.Message, True)
|
||||||
@@ -363,8 +362,8 @@ Namespace Connection
|
|||||||
|
|
||||||
Private Sub SetPort()
|
Private Sub SetPort()
|
||||||
Try
|
Try
|
||||||
If Me.Info.Port <> Connection.Protocol.RDP.Defaults.Port Then
|
If _connectionInfo.Port <> Defaults.Port Then
|
||||||
RDP.AdvancedSettings2.RDPPort = Me.Info.Port
|
_rdpClient.AdvancedSettings2.RDPPort = _connectionInfo.Port
|
||||||
End If
|
End If
|
||||||
Catch ex As Exception
|
Catch ex As Exception
|
||||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strRdpSetPortFailed & vbNewLine & ex.Message, True)
|
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strRdpSetPortFailed & vbNewLine & ex.Message, True)
|
||||||
@@ -373,11 +372,11 @@ Namespace Connection
|
|||||||
|
|
||||||
Private Sub SetRedirection()
|
Private Sub SetRedirection()
|
||||||
Try
|
Try
|
||||||
RDP.AdvancedSettings2.RedirectDrives = Me.Info.RedirectDiskDrives
|
_rdpClient.AdvancedSettings2.RedirectDrives = Me._connectionInfo.RedirectDiskDrives
|
||||||
RDP.AdvancedSettings2.RedirectPorts = Me.Info.RedirectPorts
|
_rdpClient.AdvancedSettings2.RedirectPorts = Me._connectionInfo.RedirectPorts
|
||||||
RDP.AdvancedSettings2.RedirectPrinters = Me.Info.RedirectPrinters
|
_rdpClient.AdvancedSettings2.RedirectPrinters = Me._connectionInfo.RedirectPrinters
|
||||||
RDP.AdvancedSettings2.RedirectSmartCards = Me.Info.RedirectSmartCards
|
_rdpClient.AdvancedSettings2.RedirectSmartCards = Me._connectionInfo.RedirectSmartCards
|
||||||
RDP.SecuredSettings2.AudioRedirectionMode = Int(Me.Info.RedirectSound)
|
_rdpClient.SecuredSettings2.AudioRedirectionMode = Int(Me._connectionInfo.RedirectSound)
|
||||||
Catch ex As Exception
|
Catch ex As Exception
|
||||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strRdpSetRedirectionFailed & vbNewLine & ex.Message, True)
|
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strRdpSetRedirectionFailed & vbNewLine & ex.Message, True)
|
||||||
End Try
|
End Try
|
||||||
@@ -386,23 +385,23 @@ Namespace Connection
|
|||||||
Private Sub SetPerformanceFlags()
|
Private Sub SetPerformanceFlags()
|
||||||
Try
|
Try
|
||||||
Dim pFlags As Integer
|
Dim pFlags As Integer
|
||||||
If Me.Info.DisplayThemes = False Then
|
If Me._connectionInfo.DisplayThemes = False Then
|
||||||
pFlags += Int(Connection.Protocol.RDP.RDPPerformanceFlags.DisableThemes)
|
pFlags += Int(Connection.Protocol.RDP.RDPPerformanceFlags.DisableThemes)
|
||||||
End If
|
End If
|
||||||
|
|
||||||
If Me.Info.DisplayWallpaper = False Then
|
If Me._connectionInfo.DisplayWallpaper = False Then
|
||||||
pFlags += Int(Connection.Protocol.RDP.RDPPerformanceFlags.DisableWallpaper)
|
pFlags += Int(Connection.Protocol.RDP.RDPPerformanceFlags.DisableWallpaper)
|
||||||
End If
|
End If
|
||||||
|
|
||||||
If Me.Info.EnableFontSmoothing Then
|
If Me._connectionInfo.EnableFontSmoothing Then
|
||||||
pFlags += Int(Connection.Protocol.RDP.RDPPerformanceFlags.EnableFontSmoothing)
|
pFlags += Int(Connection.Protocol.RDP.RDPPerformanceFlags.EnableFontSmoothing)
|
||||||
End If
|
End If
|
||||||
|
|
||||||
If Me.Info.EnableDesktopComposition Then
|
If Me._connectionInfo.EnableDesktopComposition Then
|
||||||
pFlags += Int(Connection.Protocol.RDP.RDPPerformanceFlags.EnableDesktopComposition)
|
pFlags += Int(Connection.Protocol.RDP.RDPPerformanceFlags.EnableDesktopComposition)
|
||||||
End If
|
End If
|
||||||
|
|
||||||
RDP.AdvancedSettings.PerformanceFlags = pFlags
|
_rdpClient.AdvancedSettings2.PerformanceFlags = pFlags
|
||||||
Catch ex As Exception
|
Catch ex As Exception
|
||||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strRdpSetPerformanceFlagsFailed & vbNewLine & ex.Message, True)
|
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strRdpSetPerformanceFlagsFailed & vbNewLine & ex.Message, True)
|
||||||
End Try
|
End Try
|
||||||
@@ -410,19 +409,28 @@ Namespace Connection
|
|||||||
|
|
||||||
Private Sub SetAuthenticationLevel()
|
Private Sub SetAuthenticationLevel()
|
||||||
Try
|
Try
|
||||||
RDP.AdvancedSettings5.AuthenticationLevel = Me.Info.RDPAuthenticationLevel
|
_rdpClient.AdvancedSettings5.AuthenticationLevel = Me._connectionInfo.RDPAuthenticationLevel
|
||||||
Catch ex As Exception
|
Catch ex As Exception
|
||||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strRdpSetAuthenticationLevelFailed & vbNewLine & ex.Message, True)
|
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strRdpSetAuthenticationLevelFailed & vbNewLine & ex.Message, True)
|
||||||
End Try
|
End Try
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
|
Private Sub SetLoadBalanceInfo()
|
||||||
|
If String.IsNullOrEmpty(_connectionInfo.LoadBalanceInfo) Then Return
|
||||||
|
Try
|
||||||
|
_rdpClient.AdvancedSettings2.LoadBalanceInfo = _connectionInfo.LoadBalanceInfo
|
||||||
|
Catch ex As Exception
|
||||||
|
MessageCollector.AddExceptionMessage("Unable to set load balance info.", ex)
|
||||||
|
End Try
|
||||||
|
End Sub
|
||||||
|
|
||||||
Private Sub SetEventHandlers()
|
Private Sub SetEventHandlers()
|
||||||
Try
|
Try
|
||||||
AddHandler RDP.OnConnecting, AddressOf RDPEvent_OnConnecting
|
AddHandler _rdpClient.OnConnecting, AddressOf RDPEvent_OnConnecting
|
||||||
AddHandler RDP.OnConnected, AddressOf RDPEvent_OnConnected
|
AddHandler _rdpClient.OnConnected, AddressOf RDPEvent_OnConnected
|
||||||
AddHandler RDP.OnFatalError, AddressOf RDPEvent_OnFatalError
|
AddHandler _rdpClient.OnFatalError, AddressOf RDPEvent_OnFatalError
|
||||||
AddHandler RDP.OnDisconnected, AddressOf RDPEvent_OnDisconnected
|
AddHandler _rdpClient.OnDisconnected, AddressOf RDPEvent_OnDisconnected
|
||||||
AddHandler RDP.OnLeaveFullScreenMode, AddressOf RDPEvent_OnLeaveFullscreenMode
|
AddHandler _rdpClient.OnLeaveFullScreenMode, AddressOf RDPEvent_OnLeaveFullscreenMode
|
||||||
Catch ex As Exception
|
Catch ex As Exception
|
||||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strRdpSetEventHandlersFailed & vbNewLine & ex.Message, True)
|
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strRdpSetEventHandlersFailed & vbNewLine & ex.Message, True)
|
||||||
End Try
|
End Try
|
||||||
@@ -430,15 +438,15 @@ Namespace Connection
|
|||||||
#End Region
|
#End Region
|
||||||
|
|
||||||
#Region "Private Events & Handlers"
|
#Region "Private Events & Handlers"
|
||||||
Private Sub RDPEvent_OnFatalError(ByVal sender As Object, ByVal e As AxMSTSCLib.IMsTscAxEvents_OnFatalErrorEvent)
|
Private Sub RDPEvent_OnFatalError(ByVal errorCode As Integer)
|
||||||
MyBase.Event_ErrorOccured(Me, e.errorCode)
|
Event_ErrorOccured(Me, errorCode)
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
Private Sub RDPEvent_OnDisconnected(ByVal sender As Object, ByVal e As IMsTscAxEvents_OnDisconnectedEvent)
|
Private Sub RDPEvent_OnDisconnected(ByVal discReason As Integer)
|
||||||
Const UI_ERR_NORMAL_DISCONNECT As Integer = &HB08
|
Const UI_ERR_NORMAL_DISCONNECT As Integer = &HB08
|
||||||
If Not e.discReason = UI_ERR_NORMAL_DISCONNECT Then
|
If Not discReason = UI_ERR_NORMAL_DISCONNECT Then
|
||||||
Dim reason As String = RDP.GetErrorDescription(e.discReason, RDP.ExtendedDisconnectReason)
|
Dim reason As String = _rdpClient.GetErrorDescription(discReason, _rdpClient.ExtendedDisconnectReason)
|
||||||
Event_Disconnected(Me, e.discReason & vbCrLf & reason)
|
Event_Disconnected(Me, discReason & vbCrLf & reason)
|
||||||
End If
|
End If
|
||||||
|
|
||||||
If My.Settings.ReconnectOnDisconnect Then
|
If My.Settings.ReconnectOnDisconnect Then
|
||||||
@@ -453,17 +461,17 @@ Namespace Connection
|
|||||||
End If
|
End If
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
Private Sub RDPEvent_OnConnecting(ByVal sender As Object, ByVal e As System.EventArgs)
|
Private Sub RDPEvent_OnConnecting()
|
||||||
MyBase.Event_Connecting(Me)
|
Event_Connecting(Me)
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
Private Sub RDPEvent_OnConnected(ByVal sender As Object, ByVal e As System.EventArgs)
|
Private Sub RDPEvent_OnConnected()
|
||||||
MyBase.Event_Connected(Me)
|
Event_Connected(Me)
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
Private Sub RDPEvent_OnLeaveFullscreenMode(ByVal sender As Object, ByVal e As System.EventArgs)
|
Private Sub RDPEvent_OnLeaveFullscreenMode()
|
||||||
Fullscreen = False
|
Fullscreen = False
|
||||||
RaiseEvent LeaveFullscreen(Me, e)
|
RaiseEvent LeaveFullscreen(Me, New EventArgs())
|
||||||
End Sub
|
End Sub
|
||||||
#End Region
|
#End Region
|
||||||
|
|
||||||
@@ -594,82 +602,19 @@ Namespace Connection
|
|||||||
#End Region
|
#End Region
|
||||||
|
|
||||||
#Region "Resolution"
|
#Region "Resolution"
|
||||||
Public Class Resolution
|
Public Shared Function GetResolutionRectangle(ByVal resolution As RDPResolutions) As Rectangle
|
||||||
Private _Width As Integer
|
Dim resolutionParts() As String = Nothing
|
||||||
Public Property Width() As Integer
|
If Not resolution = RDPResolutions.FitToWindow And _
|
||||||
Get
|
Not resolution = RDPResolutions.Fullscreen And _
|
||||||
Return Me._Width
|
Not resolution = RDPResolutions.SmartSize Then
|
||||||
End Get
|
resolutionParts = resolution.ToString.Replace("Res", "").Split("x")
|
||||||
Set(ByVal value As Integer)
|
End If
|
||||||
Me._Width = value
|
If resolutionParts Is Nothing OrElse Not resolutionParts.Length = 2 Then
|
||||||
End Set
|
Return New Rectangle(0, 0, 0, 0)
|
||||||
End Property
|
Else
|
||||||
|
Return New Rectangle(0, 0, resolutionParts(0), resolutionParts(1))
|
||||||
Private _Height As Integer
|
End If
|
||||||
Public Property Height() As Integer
|
End Function
|
||||||
Get
|
|
||||||
Return Me._Height
|
|
||||||
End Get
|
|
||||||
Set(ByVal value As Integer)
|
|
||||||
Me._Height = value
|
|
||||||
End Set
|
|
||||||
End Property
|
|
||||||
|
|
||||||
Public Sub New(ByVal Width As Integer, ByVal Height As Integer)
|
|
||||||
Me._Width = Width
|
|
||||||
Me._Height = Height
|
|
||||||
End Sub
|
|
||||||
End Class
|
|
||||||
|
|
||||||
Public Class Resolutions
|
|
||||||
Public Shared List As New Collection
|
|
||||||
|
|
||||||
Public Shared Sub AddResolutions()
|
|
||||||
Try
|
|
||||||
For Each RDPResolution As RDPResolutions In [Enum].GetValues(GetType(RDPResolutions))
|
|
||||||
If RDPResolution = RDPResolutions.FitToWindow Or RDPResolution = RDPResolutions.SmartSize Or RDPResolution = RDPResolutions.Fullscreen Then
|
|
||||||
Resolutions.Add(New Resolution(0, 0))
|
|
||||||
Else
|
|
||||||
Dim ResSize() As String = Split([Enum].GetName(GetType(RDPResolutions), RDPResolution), "x")
|
|
||||||
Dim ResWidth As String = ResSize(0).Substring(3)
|
|
||||||
Dim ResHeight As String = ResSize(1)
|
|
||||||
Resolutions.Add(New Resolution(ResWidth, ResHeight))
|
|
||||||
End If
|
|
||||||
Next
|
|
||||||
Catch ex As Exception
|
|
||||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strRdpAddResolutionsFailed & vbNewLine & ex.Message, True)
|
|
||||||
End Try
|
|
||||||
End Sub
|
|
||||||
|
|
||||||
|
|
||||||
Public Shared ReadOnly Property Items(ByVal Index As Object) As Resolution
|
|
||||||
Get
|
|
||||||
If TypeOf Index Is Resolution Then
|
|
||||||
Return Index
|
|
||||||
Else
|
|
||||||
Return CType(List.Item(Index + 1), Resolution)
|
|
||||||
End If
|
|
||||||
End Get
|
|
||||||
End Property
|
|
||||||
|
|
||||||
Public Shared ReadOnly Property ItemsCount() As Integer
|
|
||||||
Get
|
|
||||||
Return List.Count
|
|
||||||
End Get
|
|
||||||
End Property
|
|
||||||
|
|
||||||
Public Shared Function Add(ByVal nRes As Resolution) As Resolution
|
|
||||||
Try
|
|
||||||
List.Add(nRes)
|
|
||||||
|
|
||||||
Return nRes
|
|
||||||
Catch ex As Exception
|
|
||||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strRdpAddResolutionFailed & vbNewLine & ex.Message, True)
|
|
||||||
End Try
|
|
||||||
|
|
||||||
Return Nothing
|
|
||||||
End Function
|
|
||||||
End Class
|
|
||||||
#End Region
|
#End Region
|
||||||
|
|
||||||
Public Class Versions
|
Public Class Versions
|
||||||
@@ -857,7 +802,7 @@ Namespace Connection
|
|||||||
|
|
||||||
#Region "Reconnect Stuff"
|
#Region "Reconnect Stuff"
|
||||||
Private Sub tmrReconnect_Elapsed(ByVal sender As Object, ByVal e As System.Timers.ElapsedEventArgs) Handles tmrReconnect.Elapsed
|
Private Sub tmrReconnect_Elapsed(ByVal sender As Object, ByVal e As System.Timers.ElapsedEventArgs) Handles tmrReconnect.Elapsed
|
||||||
Dim srvReady As Boolean = Tools.PortScan.Scanner.IsPortOpen(Info.Hostname, Info.Port)
|
Dim srvReady As Boolean = Tools.PortScan.Scanner.IsPortOpen(_connectionInfo.Hostname, _connectionInfo.Port)
|
||||||
|
|
||||||
ReconnectGroup.ServerReady = srvReady
|
ReconnectGroup.ServerReady = srvReady
|
||||||
|
|
||||||
@@ -865,7 +810,7 @@ Namespace Connection
|
|||||||
tmrReconnect.Enabled = False
|
tmrReconnect.Enabled = False
|
||||||
ReconnectGroup.DisposeReconnectGroup()
|
ReconnectGroup.DisposeReconnectGroup()
|
||||||
'SetProps()
|
'SetProps()
|
||||||
RDP.Connect()
|
_rdpClient.Connect()
|
||||||
End If
|
End If
|
||||||
End Sub
|
End Sub
|
||||||
#End Region
|
#End Region
|
||||||
|
|||||||
@@ -1,10 +1,36 @@
|
|||||||
Imports System.ComponentModel
|
Imports System.ComponentModel
|
||||||
|
Imports mRemoteNG.Messages
|
||||||
|
Imports mRemoteNG.Tools.LocalizedAttributes
|
||||||
|
Imports mRemoteNG.My
|
||||||
|
Imports mRemoteNG.App.Runtime
|
||||||
|
Imports mRemoteNG.Tools
|
||||||
|
|
||||||
Namespace Connection
|
Namespace Connection
|
||||||
Namespace PuttySession
|
Namespace PuttySession
|
||||||
Public Class Info
|
Public Class Info
|
||||||
Inherits Connection.Info
|
Inherits Connection.Info
|
||||||
|
Implements IComponent
|
||||||
|
|
||||||
|
#Region "Commands"
|
||||||
|
<Command(),
|
||||||
|
LocalizedDisplayName("strPuttySessionSettings")> _
|
||||||
|
Public Sub SessionSettings()
|
||||||
|
Try
|
||||||
|
Dim puttyProcess As New PuttyProcessController
|
||||||
|
If Not puttyProcess.Start() Then Return
|
||||||
|
If puttyProcess.SelectListBoxItem(PuttySession) Then
|
||||||
|
puttyProcess.ClickButton("&Load")
|
||||||
|
End If
|
||||||
|
puttyProcess.SetControlText("Button", "&Cancel", "&Close")
|
||||||
|
puttyProcess.SetControlVisible("Button", "&Open", False)
|
||||||
|
puttyProcess.WaitForExit()
|
||||||
|
Catch ex As Exception
|
||||||
|
MessageCollector.AddMessage(MessageClass.ErrorMsg, Language.strErrorCouldNotLaunchPutty & vbNewLine & ex.Message, False)
|
||||||
|
End Try
|
||||||
|
End Sub
|
||||||
|
#End Region
|
||||||
|
|
||||||
|
#Region "Properties"
|
||||||
<Browsable(False)> _
|
<Browsable(False)> _
|
||||||
Public Property RootPuttySessionsInfo() As Root.PuttySessions.Info
|
Public Property RootPuttySessionsInfo() As Root.PuttySessions.Info
|
||||||
|
|
||||||
@@ -71,6 +97,24 @@ Namespace Connection
|
|||||||
<[ReadOnly](True), _
|
<[ReadOnly](True), _
|
||||||
Browsable(False)> _
|
Browsable(False)> _
|
||||||
Public Overrides Property UserField() As String
|
Public Overrides Property UserField() As String
|
||||||
|
#End Region
|
||||||
|
|
||||||
|
#Region "IComponent"
|
||||||
|
Public Property Site() As ISite Implements IComponent.Site
|
||||||
|
Get
|
||||||
|
Return New PropertyGridCommandSite(Me)
|
||||||
|
End Get
|
||||||
|
Set(value As ISite)
|
||||||
|
Throw New NotImplementedException()
|
||||||
|
End Set
|
||||||
|
End Property
|
||||||
|
|
||||||
|
Public Sub Dispose() Implements IDisposable.Dispose
|
||||||
|
RaiseEvent Disposed(Me, EventArgs.Empty)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Public Event Disposed As EventHandler Implements IComponent.Disposed
|
||||||
|
#End Region
|
||||||
End Class
|
End Class
|
||||||
End Namespace
|
End Namespace
|
||||||
End Namespace
|
End Namespace
|
||||||
|
|||||||
7
mRemoteV1/Forms/frmMain.Designer.vb
generated
7
mRemoteV1/Forms/frmMain.Designer.vb
generated
@@ -120,7 +120,6 @@ Partial Class frmMain
|
|||||||
Me.ToolStripSplitButton1 = New System.Windows.Forms.ToolStripDropDownButton
|
Me.ToolStripSplitButton1 = New System.Windows.Forms.ToolStripDropDownButton
|
||||||
Me.ToolStripMenuItem1 = New System.Windows.Forms.ToolStripMenuItem
|
Me.ToolStripMenuItem1 = New System.Windows.Forms.ToolStripMenuItem
|
||||||
Me.ToolStripMenuItem2 = New System.Windows.Forms.ToolStripMenuItem
|
Me.ToolStripMenuItem2 = New System.Windows.Forms.ToolStripMenuItem
|
||||||
Me.tmrShowUpdate = New System.Windows.Forms.Timer(Me.components)
|
|
||||||
Me.tmrAutoSave = New System.Windows.Forms.Timer(Me.components)
|
Me.tmrAutoSave = New System.Windows.Forms.Timer(Me.components)
|
||||||
Me.msMain.SuspendLayout()
|
Me.msMain.SuspendLayout()
|
||||||
Me.tsContainer.ContentPanel.SuspendLayout()
|
Me.tsContainer.ContentPanel.SuspendLayout()
|
||||||
@@ -793,11 +792,6 @@ Partial Class frmMain
|
|||||||
Me.ToolStripMenuItem2.Size = New System.Drawing.Size(135, 22)
|
Me.ToolStripMenuItem2.Size = New System.Drawing.Size(135, 22)
|
||||||
Me.ToolStripMenuItem2.Text = "Ctrl-Esc"
|
Me.ToolStripMenuItem2.Text = "Ctrl-Esc"
|
||||||
'
|
'
|
||||||
'tmrShowUpdate
|
|
||||||
'
|
|
||||||
Me.tmrShowUpdate.Enabled = True
|
|
||||||
Me.tmrShowUpdate.Interval = 5000
|
|
||||||
'
|
|
||||||
'tmrAutoSave
|
'tmrAutoSave
|
||||||
'
|
'
|
||||||
Me.tmrAutoSave.Interval = 10000
|
Me.tmrAutoSave.Interval = 10000
|
||||||
@@ -860,7 +854,6 @@ Partial Class frmMain
|
|||||||
Friend WithEvents mMenViewFullscreen As System.Windows.Forms.ToolStripMenuItem
|
Friend WithEvents mMenViewFullscreen As System.Windows.Forms.ToolStripMenuItem
|
||||||
Friend WithEvents mMenToolsSSHTransfer As System.Windows.Forms.ToolStripMenuItem
|
Friend WithEvents mMenToolsSSHTransfer As System.Windows.Forms.ToolStripMenuItem
|
||||||
Friend WithEvents tsContainer As System.Windows.Forms.ToolStripContainer
|
Friend WithEvents tsContainer As System.Windows.Forms.ToolStripContainer
|
||||||
Friend WithEvents tmrShowUpdate As System.Windows.Forms.Timer
|
|
||||||
Friend WithEvents mMenToolsExternalApps As System.Windows.Forms.ToolStripMenuItem
|
Friend WithEvents mMenToolsExternalApps As System.Windows.Forms.ToolStripMenuItem
|
||||||
Friend WithEvents tmrAutoSave As System.Windows.Forms.Timer
|
Friend WithEvents tmrAutoSave As System.Windows.Forms.Timer
|
||||||
Friend WithEvents tsExternalTools As System.Windows.Forms.ToolStrip
|
Friend WithEvents tsExternalTools As System.Windows.Forms.ToolStrip
|
||||||
|
|||||||
@@ -278,9 +278,6 @@
|
|||||||
<metadata name="ToolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
<metadata name="ToolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||||
<value>184, 56</value>
|
<value>184, 56</value>
|
||||||
</metadata>
|
</metadata>
|
||||||
<metadata name="tmrShowUpdate.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
|
||||||
<value>112, 17</value>
|
|
||||||
</metadata>
|
|
||||||
<metadata name="tmrAutoSave.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
<metadata name="tmrAutoSave.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||||
<value>252, 17</value>
|
<value>252, 17</value>
|
||||||
</metadata>
|
</metadata>
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
Imports System.IO
|
|
||||||
Imports WeifenLuo.WinFormsUI.Docking
|
Imports WeifenLuo.WinFormsUI.Docking
|
||||||
Imports mRemoteNG.App.Runtime
|
Imports mRemoteNG.App.Runtime
|
||||||
Imports System.Reflection
|
Imports System.Reflection
|
||||||
@@ -33,6 +32,8 @@ Public Class frmMain
|
|||||||
|
|
||||||
#Region "Startup & Shutdown"
|
#Region "Startup & Shutdown"
|
||||||
Private Sub frmMain_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
|
Private Sub frmMain_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
|
||||||
|
MainForm = Me
|
||||||
|
|
||||||
Startup.CheckCompatibility()
|
Startup.CheckCompatibility()
|
||||||
|
|
||||||
Startup.CreateLogger()
|
Startup.CreateLogger()
|
||||||
@@ -56,13 +57,12 @@ Public Class frmMain
|
|||||||
|
|
||||||
MessageCollector = New Messages.Collector(Windows.errorsForm)
|
MessageCollector = New Messages.Collector(Windows.errorsForm)
|
||||||
|
|
||||||
Connection.Protocol.RDP.Resolutions.AddResolutions()
|
|
||||||
Connection.Protocol.PuttyBase.BorderSize = New Size(SystemInformation.FrameBorderSize.Width, SystemInformation.CaptionHeight + SystemInformation.FrameBorderSize.Height) 'Size.Subtract(Me.Size, Me.ClientSize)
|
|
||||||
|
|
||||||
WindowList = New UI.Window.List
|
WindowList = New UI.Window.List
|
||||||
|
|
||||||
|
Tools.IeBrowserEmulation.Register()
|
||||||
|
|
||||||
Startup.GetConnectionIcons()
|
Startup.GetConnectionIcons()
|
||||||
App.Runtime.GetExtApps()
|
GetExtApps()
|
||||||
Windows.treePanel.Focus()
|
Windows.treePanel.Focus()
|
||||||
|
|
||||||
Tree.Node.TreeView = Windows.treeForm.tvConnections
|
Tree.Node.TreeView = Windows.treeForm.tvConnections
|
||||||
@@ -74,27 +74,13 @@ Public Class frmMain
|
|||||||
Return
|
Return
|
||||||
End If
|
End If
|
||||||
|
|
||||||
PuttySessions.AddSessionsToTree(Tree.Node.TreeView)
|
PuttySessions.StartWatcher()
|
||||||
|
|
||||||
If My.Settings.StartupComponentsCheck Then
|
If My.Settings.StartupComponentsCheck Then
|
||||||
Windows.Show(UI.Window.Type.ComponentsCheck)
|
Windows.Show(UI.Window.Type.ComponentsCheck)
|
||||||
End If
|
End If
|
||||||
|
|
||||||
#If Not PORTABLE Then
|
#If PORTABLE Then
|
||||||
If Not My.Settings.CheckForUpdatesAsked Then
|
|
||||||
Dim CommandButtons() As String = {My.Language.strAskUpdatesCommandRecommended, My.Language.strAskUpdatesCommandCustom, My.Language.strAskUpdatesCommandAskLater}
|
|
||||||
cTaskDialog.ShowTaskDialogBox(Me, My.Application.Info.ProductName, My.Language.strAskUpdatesMainInstruction, String.Format(My.Language.strAskUpdatesContent, My.Application.Info.ProductName), "", "", "", "", String.Join("|", CommandButtons), eTaskDialogButtons.None, eSysIcons.Question, eSysIcons.Question)
|
|
||||||
If cTaskDialog.CommandButtonResult = 0 Or cTaskDialog.CommandButtonResult = 1 Then
|
|
||||||
My.Settings.CheckForUpdatesAsked = True
|
|
||||||
End If
|
|
||||||
If cTaskDialog.CommandButtonResult = 1 Then
|
|
||||||
Windows.ShowUpdatesTab()
|
|
||||||
End If
|
|
||||||
End If
|
|
||||||
|
|
||||||
Startup.UpdateCheck()
|
|
||||||
Startup.AnnouncementCheck()
|
|
||||||
#Else
|
|
||||||
mMenInfoAnnouncements.Visible = False
|
mMenInfoAnnouncements.Visible = False
|
||||||
mMenToolsUpdate.Visible = False
|
mMenToolsUpdate.Visible = False
|
||||||
mMenInfoSep2.Visible = False
|
mMenInfoSep2.Visible = False
|
||||||
@@ -198,7 +184,7 @@ Public Class frmMain
|
|||||||
End With
|
End With
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
Private Sub ApplyMenuColors(itemCollection As ToolStripItemCollection)
|
Private Shared Sub ApplyMenuColors(itemCollection As ToolStripItemCollection)
|
||||||
With ThemeManager.ActiveTheme
|
With ThemeManager.ActiveTheme
|
||||||
Dim menuItem As ToolStripMenuItem
|
Dim menuItem As ToolStripMenuItem
|
||||||
For Each item As ToolStripItem In itemCollection
|
For Each item As ToolStripItem In itemCollection
|
||||||
@@ -213,6 +199,28 @@ Public Class frmMain
|
|||||||
End With
|
End With
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
|
Private Sub frmMain_Shown(sender As Object, e As EventArgs) Handles Me.Shown
|
||||||
|
#If Not PORTABLE Then
|
||||||
|
If Not My.Settings.CheckForUpdatesAsked Then
|
||||||
|
Dim commandButtons() As String = {My.Language.strAskUpdatesCommandRecommended, My.Language.strAskUpdatesCommandCustom, My.Language.strAskUpdatesCommandAskLater}
|
||||||
|
cTaskDialog.ShowTaskDialogBox(Me, My.Application.Info.ProductName, My.Language.strAskUpdatesMainInstruction, String.Format(My.Language.strAskUpdatesContent, My.Application.Info.ProductName), "", "", "", "", String.Join("|", commandButtons), eTaskDialogButtons.None, eSysIcons.Question, eSysIcons.Question)
|
||||||
|
If cTaskDialog.CommandButtonResult = 0 Or cTaskDialog.CommandButtonResult = 1 Then
|
||||||
|
My.Settings.CheckForUpdatesAsked = True
|
||||||
|
End If
|
||||||
|
If cTaskDialog.CommandButtonResult = 1 Then
|
||||||
|
Windows.ShowUpdatesTab()
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
|
||||||
|
Dim nextUpdateCheck As Date = My.Settings.CheckForUpdatesLastCheck.Add(TimeSpan.FromDays(My.Settings.CheckForUpdatesFrequencyDays))
|
||||||
|
If My.Settings.UpdatePending Or Date.UtcNow > nextUpdateCheck Then
|
||||||
|
If Not IsHandleCreated Then CreateHandle() ' Make sure the handle is created so that InvokeRequired returns the correct result
|
||||||
|
Startup.CheckForUpdate()
|
||||||
|
Startup.CheckForAnnouncement()
|
||||||
|
End If
|
||||||
|
#End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
Private Sub frmMain_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
|
Private Sub frmMain_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
|
||||||
If Not (WindowList Is Nothing OrElse WindowList.Count = 0) Then
|
If Not (WindowList Is Nothing OrElse WindowList.Count = 0) Then
|
||||||
Dim connectionWindow As UI.Window.Connection
|
Dim connectionWindow As UI.Window.Connection
|
||||||
@@ -239,6 +247,8 @@ Public Class frmMain
|
|||||||
End If
|
End If
|
||||||
End If
|
End If
|
||||||
|
|
||||||
|
PuttySessions.StopWatcher()
|
||||||
|
|
||||||
Shutdown.BeforeQuit()
|
Shutdown.BeforeQuit()
|
||||||
|
|
||||||
_IsClosing = True
|
_IsClosing = True
|
||||||
@@ -254,25 +264,6 @@ Public Class frmMain
|
|||||||
#End Region
|
#End Region
|
||||||
|
|
||||||
#Region "Timer"
|
#Region "Timer"
|
||||||
Private tmrRuns As Integer = 0
|
|
||||||
Private Sub tmrShowUpdate_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tmrShowUpdate.Tick
|
|
||||||
If tmrRuns = 5 Then
|
|
||||||
Me.tmrShowUpdate.Enabled = False
|
|
||||||
End If
|
|
||||||
|
|
||||||
If App.Runtime.IsUpdateAvailable Then
|
|
||||||
App.Runtime.Windows.Show(UI.Window.Type.Update)
|
|
||||||
Me.tmrShowUpdate.Enabled = False
|
|
||||||
End If
|
|
||||||
|
|
||||||
If App.Runtime.IsAnnouncementAvailable Then
|
|
||||||
App.Runtime.Windows.Show(UI.Window.Type.Announcement)
|
|
||||||
Me.tmrShowUpdate.Enabled = False
|
|
||||||
End If
|
|
||||||
|
|
||||||
tmrRuns += 1
|
|
||||||
End Sub
|
|
||||||
|
|
||||||
Private Sub tmrAutoSave_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tmrAutoSave.Tick
|
Private Sub tmrAutoSave_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tmrAutoSave.Tick
|
||||||
MessageCollector.AddMessage(Messages.MessageClass.InformationMsg, "Doing AutoSave", True)
|
MessageCollector.AddMessage(Messages.MessageClass.InformationMsg, "Doing AutoSave", True)
|
||||||
App.Runtime.SaveConnections()
|
App.Runtime.SaveConnections()
|
||||||
@@ -286,8 +277,8 @@ Public Class frmMain
|
|||||||
|
|
||||||
Public Sub AddExternalToolsToToolBar()
|
Public Sub AddExternalToolsToToolBar()
|
||||||
Try
|
Try
|
||||||
For Each item As ToolStripItem In tsExternalTools.Items
|
For index As Integer = tsExternalTools.Items.Count - 1 To 0 Step -1
|
||||||
item.Dispose()
|
tsExternalTools.Items(index).Dispose()
|
||||||
Next
|
Next
|
||||||
tsExternalTools.Items.Clear()
|
tsExternalTools.Items.Clear()
|
||||||
|
|
||||||
@@ -589,14 +580,10 @@ Public Class frmMain
|
|||||||
End If
|
End If
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
|
Public Fullscreen As New Tools.Misc.Fullscreen(Me)
|
||||||
Private Sub mMenViewFullscreen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mMenViewFullscreen.Click
|
Private Sub mMenViewFullscreen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mMenViewFullscreen.Click
|
||||||
If Tools.Misc.Fullscreen.FullscreenActive Then
|
Fullscreen.Value = Not Fullscreen.Value
|
||||||
Tools.Misc.Fullscreen.ExitFullscreen()
|
mMenViewFullscreen.Checked = Fullscreen.Value
|
||||||
Me.mMenViewFullscreen.Checked = False
|
|
||||||
Else
|
|
||||||
Tools.Misc.Fullscreen.EnterFullscreen()
|
|
||||||
Me.mMenViewFullscreen.Checked = True
|
|
||||||
End If
|
|
||||||
End Sub
|
End Sub
|
||||||
#End Region
|
#End Region
|
||||||
|
|
||||||
@@ -742,7 +729,7 @@ Public Class frmMain
|
|||||||
Next
|
Next
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
Private Sub AddNodeToMenu(ByVal tnc As TreeNodeCollection, ByVal menToolStrip As ToolStripMenuItem)
|
Private Shared Sub AddNodeToMenu(ByVal tnc As TreeNodeCollection, ByVal menToolStrip As ToolStripMenuItem)
|
||||||
Try
|
Try
|
||||||
For Each tNode As TreeNode In tnc
|
For Each tNode As TreeNode In tnc
|
||||||
Dim tMenItem As New ToolStripMenuItem()
|
Dim tMenItem As New ToolStripMenuItem()
|
||||||
@@ -763,16 +750,16 @@ Public Class frmMain
|
|||||||
menToolStrip.DropDownItems.Add(tMenItem)
|
menToolStrip.DropDownItems.Add(tMenItem)
|
||||||
End If
|
End If
|
||||||
|
|
||||||
AddHandler tMenItem.MouseDown, AddressOf ConMenItem_MouseDown
|
AddHandler tMenItem.MouseUp, AddressOf ConMenItem_MouseUp
|
||||||
Next
|
Next
|
||||||
Catch ex As Exception
|
Catch ex As Exception
|
||||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "AddNodeToMenu failed" & vbNewLine & ex.Message, True)
|
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "AddNodeToMenu failed" & vbNewLine & ex.Message, True)
|
||||||
End Try
|
End Try
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
Private Sub ConMenItem_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs)
|
Private Shared Sub ConMenItem_MouseUp(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs)
|
||||||
If e.Button = MouseButtons.Left Then
|
If e.Button = MouseButtons.Left Then
|
||||||
If TypeOf sender.Tag Is mRemoteNG.Connection.Info Then
|
If TypeOf sender.Tag Is Connection.Info Then
|
||||||
App.Runtime.OpenConnection(sender.Tag)
|
App.Runtime.OpenConnection(sender.Tag)
|
||||||
End If
|
End If
|
||||||
End If
|
End If
|
||||||
|
|||||||
@@ -1,6 +1,9 @@
|
|||||||
Imports System.IO
|
Imports System.IO
|
||||||
Imports System.ComponentModel
|
Imports System.ComponentModel
|
||||||
|
Imports mRemoteNG.Messages
|
||||||
Imports mRemoteNG.My
|
Imports mRemoteNG.My
|
||||||
|
Imports mRemoteNG.Tools
|
||||||
|
Imports PSTaskDialog
|
||||||
Imports WeifenLuo.WinFormsUI.Docking
|
Imports WeifenLuo.WinFormsUI.Docking
|
||||||
Imports mRemoteNG.App.Runtime
|
Imports mRemoteNG.App.Runtime
|
||||||
Imports mRemoteNG.Themes
|
Imports mRemoteNG.Themes
|
||||||
@@ -1489,6 +1492,7 @@ Public Class frmOptions
|
|||||||
Me.ThemePropertyGrid.Name = "ThemePropertyGrid"
|
Me.ThemePropertyGrid.Name = "ThemePropertyGrid"
|
||||||
Me.ThemePropertyGrid.Size = New System.Drawing.Size(596, 426)
|
Me.ThemePropertyGrid.Size = New System.Drawing.Size(596, 426)
|
||||||
Me.ThemePropertyGrid.TabIndex = 3
|
Me.ThemePropertyGrid.TabIndex = 3
|
||||||
|
Me.ThemePropertyGrid.UseCompatibleTextRendering = True
|
||||||
'
|
'
|
||||||
'frmOptions
|
'frmOptions
|
||||||
'
|
'
|
||||||
@@ -1646,10 +1650,12 @@ Public Class frmOptions
|
|||||||
Me.chkAutomaticallyGetSessionInfo.Checked = My.Settings.AutomaticallyGetSessionInfo
|
Me.chkAutomaticallyGetSessionInfo.Checked = My.Settings.AutomaticallyGetSessionInfo
|
||||||
Me.chkAutomaticReconnect.Checked = My.Settings.ReconnectOnDisconnect
|
Me.chkAutomaticReconnect.Checked = My.Settings.ReconnectOnDisconnect
|
||||||
Me.chkSingleInstance.Checked = My.Settings.SingleInstance
|
Me.chkSingleInstance.Checked = My.Settings.SingleInstance
|
||||||
Me.chkUseCustomPuttyPath.Checked = My.Settings.UseCustomPuttyPath
|
|
||||||
Me.txtCustomPuttyPath.Text = My.Settings.CustomPuttyPath
|
|
||||||
Me.numPuttyWaitTime.Value = My.Settings.MaxPuttyWaitTime
|
Me.numPuttyWaitTime.Value = My.Settings.MaxPuttyWaitTime
|
||||||
|
|
||||||
|
chkUseCustomPuttyPath.Checked = Settings.UseCustomPuttyPath
|
||||||
|
txtCustomPuttyPath.Text = Settings.CustomPuttyPath
|
||||||
|
SetPuttyLaunchButtonEnabled()
|
||||||
|
|
||||||
Me.chkUseProxyForAutomaticUpdates.Checked = My.Settings.UpdateUseProxy
|
Me.chkUseProxyForAutomaticUpdates.Checked = My.Settings.UpdateUseProxy
|
||||||
Me.btnTestProxy.Enabled = My.Settings.UpdateUseProxy
|
Me.btnTestProxy.Enabled = My.Settings.UpdateUseProxy
|
||||||
Me.pnlProxyBasic.Enabled = My.Settings.UpdateUseProxy
|
Me.pnlProxyBasic.Enabled = My.Settings.UpdateUseProxy
|
||||||
@@ -1779,10 +1785,10 @@ Public Class frmOptions
|
|||||||
My.Settings.UseCustomPuttyPath = Me.chkUseCustomPuttyPath.Checked
|
My.Settings.UseCustomPuttyPath = Me.chkUseCustomPuttyPath.Checked
|
||||||
My.Settings.CustomPuttyPath = Me.txtCustomPuttyPath.Text
|
My.Settings.CustomPuttyPath = Me.txtCustomPuttyPath.Text
|
||||||
|
|
||||||
If My.Settings.UseCustomPuttyPath Then
|
If Settings.UseCustomPuttyPath Then
|
||||||
mRemoteNG.Connection.Protocol.PuttyBase.PuttyPath = My.Settings.CustomPuttyPath
|
Connection.Protocol.PuttyBase.PuttyPath = Settings.CustomPuttyPath
|
||||||
Else
|
Else
|
||||||
mRemoteNG.Connection.Protocol.PuttyBase.PuttyPath = My.Application.Info.DirectoryPath & "\PuTTYNG.exe"
|
Connection.Protocol.PuttyBase.PuttyPath = App.Info.General.PuttyPath
|
||||||
End If
|
End If
|
||||||
|
|
||||||
My.Settings.MaxPuttyWaitTime = Me.numPuttyWaitTime.Value
|
My.Settings.MaxPuttyWaitTime = Me.numPuttyWaitTime.Value
|
||||||
@@ -1822,8 +1828,9 @@ Public Class frmOptions
|
|||||||
End Sub
|
End Sub
|
||||||
#End Region
|
#End Region
|
||||||
|
|
||||||
#Region "Private Variables"
|
#Region "Private Fields"
|
||||||
Private _initialTab As Integer = 0
|
Private _initialTab As Integer = 0
|
||||||
|
Private _appUpdate As App.Update
|
||||||
Private _themeList As BindingList(Of ThemeInfo)
|
Private _themeList As BindingList(Of ThemeInfo)
|
||||||
Private _originalTheme As ThemeInfo
|
Private _originalTheme As ThemeInfo
|
||||||
#End Region
|
#End Region
|
||||||
@@ -2005,26 +2012,70 @@ Public Class frmOptions
|
|||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
Private Sub chkUseCustomPuttyPath_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles chkUseCustomPuttyPath.CheckedChanged
|
Private Sub chkUseCustomPuttyPath_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles chkUseCustomPuttyPath.CheckedChanged
|
||||||
Me.txtCustomPuttyPath.Enabled = Me.chkUseCustomPuttyPath.Checked
|
txtCustomPuttyPath.Enabled = chkUseCustomPuttyPath.Checked
|
||||||
Me.btnBrowseCustomPuttyPath.Enabled = Me.chkUseCustomPuttyPath.Checked
|
btnBrowseCustomPuttyPath.Enabled = chkUseCustomPuttyPath.Checked
|
||||||
|
SetPuttyLaunchButtonEnabled()
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub txtCustomPuttyPath_TextChanged(sender As Object, e As System.EventArgs) Handles txtCustomPuttyPath.TextChanged
|
||||||
|
SetPuttyLaunchButtonEnabled()
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub btnBrowseCustomPuttyPath_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles btnBrowseCustomPuttyPath.Click
|
||||||
|
Using openFileDialog As New OpenFileDialog()
|
||||||
|
With openFileDialog
|
||||||
|
.Filter = String.Format("{0}|*.exe|{1}|*.*", Language.strFilterApplication, Language.strFilterAll)
|
||||||
|
.FileName = Path.GetFileName(App.Info.General.PuttyPath)
|
||||||
|
.CheckFileExists = True
|
||||||
|
.Multiselect = False
|
||||||
|
|
||||||
|
If .ShowDialog = System.Windows.Forms.DialogResult.OK Then
|
||||||
|
txtCustomPuttyPath.Text = .FileName
|
||||||
|
SetPuttyLaunchButtonEnabled()
|
||||||
|
End If
|
||||||
|
End With
|
||||||
|
End Using
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub SetPuttyLaunchButtonEnabled()
|
||||||
|
Dim puttyPath As String
|
||||||
|
If chkUseCustomPuttyPath.Checked Then
|
||||||
|
puttyPath = txtCustomPuttyPath.Text
|
||||||
|
Else
|
||||||
|
puttyPath = App.Info.General.PuttyPath
|
||||||
|
End If
|
||||||
|
|
||||||
|
Dim exists As Boolean = False
|
||||||
|
Try
|
||||||
|
exists = File.Exists(puttyPath)
|
||||||
|
Catch
|
||||||
|
End Try
|
||||||
|
|
||||||
|
If exists Then
|
||||||
|
lblConfigurePuttySessions.Enabled = True
|
||||||
|
btnLaunchPutty.Enabled = True
|
||||||
|
Else
|
||||||
|
lblConfigurePuttySessions.Enabled = False
|
||||||
|
btnLaunchPutty.Enabled = False
|
||||||
|
End If
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
Private Sub btnLaunchPutty_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLaunchPutty.Click
|
Private Sub btnLaunchPutty_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLaunchPutty.Click
|
||||||
mRemoteNG.Connection.Protocol.PuttyBase.StartPutty()
|
Try
|
||||||
End Sub
|
Dim puttyProcess As New PuttyProcessController
|
||||||
|
Dim fileName As String
|
||||||
Private Sub btnBrowseCustomPuttyPath_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBrowseCustomPuttyPath.Click
|
If chkUseCustomPuttyPath.Checked Then
|
||||||
Dim oDlg As New OpenFileDialog()
|
fileName = txtCustomPuttyPath.Text
|
||||||
oDlg.Filter = My.Language.strFilterApplication & "|*.exe|" & My.Language.strFilterAll & "|*.*"
|
Else
|
||||||
oDlg.FileName = "PuTTYNG.exe"
|
fileName = App.Info.General.PuttyPath
|
||||||
oDlg.CheckFileExists = True
|
End If
|
||||||
oDlg.Multiselect = False
|
puttyProcess.Start(fileName)
|
||||||
|
puttyProcess.SetControlText("Button", "&Cancel", "&Close")
|
||||||
If oDlg.ShowDialog = System.Windows.Forms.DialogResult.OK Then
|
puttyProcess.SetControlVisible("Button", "&Open", False)
|
||||||
Me.txtCustomPuttyPath.Text = oDlg.FileName
|
puttyProcess.WaitForExit()
|
||||||
End If
|
Catch ex As Exception
|
||||||
|
cTaskDialog.MessageBox(Application.Info.ProductName, Language.strErrorCouldNotLaunchPutty, "", ex.Message, "", "", eTaskDialogButtons.OK, eSysIcons.Error, Nothing)
|
||||||
oDlg.Dispose()
|
End Try
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
Private Sub btnBrowseXulRunnerPath_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBrowseXulRunnerPath.Click
|
Private Sub btnBrowseXulRunnerPath_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBrowseXulRunnerPath.Click
|
||||||
@@ -2063,14 +2114,41 @@ Public Class frmOptions
|
|||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
Private Sub btnTestProxy_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnTestProxy.Click
|
Private Sub btnTestProxy_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnTestProxy.Click
|
||||||
SaveOptions()
|
If _appUpdate IsNot Nothing Then
|
||||||
Dim ud As New App.Update()
|
If _appUpdate.IsGetUpdateInfoRunning Then Return
|
||||||
|
|
||||||
If ud.IsProxyOK Then
|
|
||||||
MsgBox(My.Language.strProxyTestSucceeded, MsgBoxStyle.Information)
|
|
||||||
Else
|
|
||||||
MsgBox(My.Language.strProxyTestFailed, MsgBoxStyle.Exclamation)
|
|
||||||
End If
|
End If
|
||||||
|
|
||||||
|
_appUpdate = New App.Update
|
||||||
|
_appUpdate.SetProxySettings(chkUseProxyForAutomaticUpdates.Checked, txtProxyAddress.Text, numProxyPort.Value, chkUseProxyAuthentication.Checked, txtProxyUsername.Text, txtProxyPassword.Text)
|
||||||
|
|
||||||
|
btnTestProxy.Enabled = False
|
||||||
|
btnTestProxy.Text = Language.strOptionsProxyTesting
|
||||||
|
|
||||||
|
AddHandler _appUpdate.GetUpdateInfoCompletedEvent, AddressOf GetUpdateInfoCompleted
|
||||||
|
|
||||||
|
_appUpdate.GetUpdateInfoAsync()
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub GetUpdateInfoCompleted(ByVal sender As Object, ByVal e As AsyncCompletedEventArgs)
|
||||||
|
If InvokeRequired Then
|
||||||
|
Dim myDelegate As New AsyncCompletedEventHandler(AddressOf GetUpdateInfoCompleted)
|
||||||
|
Invoke(myDelegate, New Object() {sender, e})
|
||||||
|
Return
|
||||||
|
End If
|
||||||
|
|
||||||
|
Try
|
||||||
|
RemoveHandler _appUpdate.GetUpdateInfoCompletedEvent, AddressOf GetUpdateInfoCompleted
|
||||||
|
|
||||||
|
btnTestProxy.Enabled = True
|
||||||
|
btnTestProxy.Text = Language.strButtonTestProxy
|
||||||
|
|
||||||
|
If e.Cancelled Then Return
|
||||||
|
If e.Error IsNot Nothing Then Throw e.Error
|
||||||
|
|
||||||
|
cTaskDialog.ShowCommandBox(Me, Application.Info.ProductName, Language.strProxyTestSucceeded, "", Language.strButtonOK, False)
|
||||||
|
Catch ex As Exception
|
||||||
|
cTaskDialog.ShowCommandBox(Me, Application.Info.ProductName, Language.strProxyTestFailed, Misc.GetExceptionMessageRecursive(ex), "", "", "", "", False, eSysIcons.Error, 0)
|
||||||
|
End Try
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
Private Sub chkUseProxyAuthentication_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles chkUseProxyAuthentication.CheckedChanged
|
Private Sub chkUseProxyAuthentication_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles chkUseProxyAuthentication.CheckedChanged
|
||||||
|
|||||||
192
mRemoteV1/Language/Language.Designer.vb
generated
192
mRemoteV1/Language/Language.Designer.vb
generated
@@ -263,7 +263,7 @@ Namespace My
|
|||||||
End Property
|
End Property
|
||||||
|
|
||||||
'''<summary>
|
'''<summary>
|
||||||
''' Looks up a localized string similar to Current Version.
|
''' Looks up a localized string similar to Latest version.
|
||||||
'''</summary>
|
'''</summary>
|
||||||
Friend Shared ReadOnly Property strAvailableVersion() As String
|
Friend Shared ReadOnly Property strAvailableVersion() As String
|
||||||
Get
|
Get
|
||||||
@@ -561,10 +561,10 @@ Namespace My
|
|||||||
End Property
|
End Property
|
||||||
|
|
||||||
'''<summary>
|
'''<summary>
|
||||||
''' Looks up a localized string similar to The (RDP) Sessions feature requires that you have a registered copy of eolwtscom.dll on your system.
|
''' Looks up a localized string similar to The (RDP) Sessions feature requires that you have a copy of eolwtscom.dll registered on your system.
|
||||||
'''mRemoteNG ships with this component but will not register it automatically unless you run the setup package.
|
'''mRemoteNG ships with this component but it is not registered automatically if you do not use the mRemoteNG Installer.
|
||||||
'''To do register it manually do this: Open up the run dialog (Start - Run) and enter the following: regsvr32 "c:\Program Files\mRemoteNG\eolwtscom.dll" (Where c:\Program Files\mRemoteNG\ is the path to your mRemoteNG installation).
|
'''To register it manually, run the following command from an elevated command prompt: regsvr32 "C:\Program Files\mRemoteNG\eolwtscom.dll" (where C:\Program Files\mRemoteNG\ is the path to your mRemoteNG installation).
|
||||||
'''If you are still not able to pass this check or use the (RDP) Session [rest of string was truncated]";.
|
'''If this check still fails or you are unable to use the (RDP) Sessions feat [rest of string was truncated]";.
|
||||||
'''</summary>
|
'''</summary>
|
||||||
Friend Shared ReadOnly Property strCcEOLFailed() As String
|
Friend Shared ReadOnly Property strCcEOLFailed() As String
|
||||||
Get
|
Get
|
||||||
@@ -652,9 +652,8 @@ Namespace My
|
|||||||
End Property
|
End Property
|
||||||
|
|
||||||
'''<summary>
|
'''<summary>
|
||||||
''' Looks up a localized string similar to For RDP to work properly you need to have at least Remote Desktop Connection (Terminal Services Client) 6.1 installed. You can get it here: http://support.microsoft.com/kb/951616
|
''' Looks up a localized string similar to For RDP to work properly you need to have at least Remote Desktop Connection (Terminal Services) Client 6.0 installed. You can download it here: http://support.microsoft.com/kb/925876
|
||||||
'''If you have RDP 6.1 installed and the check still fails, try to register mstscax.dll manually. To do this open up the run dialog (Start - Run) and enter the following: regsvr32 "c:\windows\system32\mstscax.dll" (Where c:\ is your system drive).
|
'''If this check still fails or you are unable to use RDP, please consult the mRemoteNG Forum at http://forum.mremoteng.org/..
|
||||||
'''If you still have trouble getting RDP to work please consult the mRemoteNG Forum at ht [rest of string was truncated]";.
|
|
||||||
'''</summary>
|
'''</summary>
|
||||||
Friend Shared ReadOnly Property strCcRDPFailed() As String
|
Friend Shared ReadOnly Property strCcRDPFailed() As String
|
||||||
Get
|
Get
|
||||||
@@ -918,6 +917,15 @@ Namespace My
|
|||||||
End Get
|
End Get
|
||||||
End Property
|
End Property
|
||||||
|
|
||||||
|
'''<summary>
|
||||||
|
''' Looks up a localized string similar to E&xit {0}.
|
||||||
|
'''</summary>
|
||||||
|
Friend Shared ReadOnly Property strCommandExitProgram() As String
|
||||||
|
Get
|
||||||
|
Return ResourceManager.GetString("strCommandExitProgram", resourceCulture)
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
|
||||||
'''<summary>
|
'''<summary>
|
||||||
''' Looks up a localized string similar to Couldn't parse command line args!.
|
''' Looks up a localized string similar to Couldn't parse command line args!.
|
||||||
'''</summary>
|
'''</summary>
|
||||||
@@ -927,6 +935,42 @@ Namespace My
|
|||||||
End Get
|
End Get
|
||||||
End Property
|
End Property
|
||||||
|
|
||||||
|
'''<summary>
|
||||||
|
''' Looks up a localized string similar to &Open a connection file.
|
||||||
|
'''</summary>
|
||||||
|
Friend Shared ReadOnly Property strCommandOpenConnectionFile() As String
|
||||||
|
Get
|
||||||
|
Return ResourceManager.GetString("strCommandOpenConnectionFile", resourceCulture)
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
|
||||||
|
'''<summary>
|
||||||
|
''' Looks up a localized string similar to &Try again.
|
||||||
|
'''</summary>
|
||||||
|
Friend Shared ReadOnly Property strCommandTryAgain() As String
|
||||||
|
Get
|
||||||
|
Return ResourceManager.GetString("strCommandTryAgain", resourceCulture)
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
|
||||||
|
'''<summary>
|
||||||
|
''' Looks up a localized string similar to {0} has detected the Lenovo Auto Scroll Utility running on this system. This utility is known to cause problems with {0}. It is recommended that you disable or uninstall it..
|
||||||
|
'''</summary>
|
||||||
|
Friend Shared ReadOnly Property strCompatibilityLenovoAutoScrollUtilityDetected() As String
|
||||||
|
Get
|
||||||
|
Return ResourceManager.GetString("strCompatibilityLenovoAutoScrollUtilityDetected", resourceCulture)
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
|
||||||
|
'''<summary>
|
||||||
|
''' Looks up a localized string similar to Compatibility problem detected.
|
||||||
|
'''</summary>
|
||||||
|
Friend Shared ReadOnly Property strCompatibilityProblemDetected() As String
|
||||||
|
Get
|
||||||
|
Return ResourceManager.GetString("strCompatibilityProblemDetected", resourceCulture)
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
|
||||||
'''<summary>
|
'''<summary>
|
||||||
''' Looks up a localized string similar to Components Check.
|
''' Looks up a localized string similar to Components Check.
|
||||||
'''</summary>
|
'''</summary>
|
||||||
@@ -1524,6 +1568,15 @@ Namespace My
|
|||||||
End Get
|
End Get
|
||||||
End Property
|
End Property
|
||||||
|
|
||||||
|
'''<summary>
|
||||||
|
''' Looks up a localized string similar to PuTTY could not be launched..
|
||||||
|
'''</summary>
|
||||||
|
Friend Shared ReadOnly Property strErrorCouldNotLaunchPutty() As String
|
||||||
|
Get
|
||||||
|
Return ResourceManager.GetString("strErrorCouldNotLaunchPutty", resourceCulture)
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
|
||||||
'''<summary>
|
'''<summary>
|
||||||
''' Looks up a localized string similar to Decryption failed. {0}.
|
''' Looks up a localized string similar to Decryption failed. {0}.
|
||||||
'''</summary>
|
'''</summary>
|
||||||
@@ -2366,7 +2419,7 @@ Namespace My
|
|||||||
End Property
|
End Property
|
||||||
|
|
||||||
'''<summary>
|
'''<summary>
|
||||||
''' Looks up a localized string similar to Load From SQL failed!.
|
''' Looks up a localized string similar to Load from SQL failed.
|
||||||
'''</summary>
|
'''</summary>
|
||||||
Friend Shared ReadOnly Property strLoadFromSqlFailed() As String
|
Friend Shared ReadOnly Property strLoadFromSqlFailed() As String
|
||||||
Get
|
Get
|
||||||
@@ -2374,6 +2427,15 @@ Namespace My
|
|||||||
End Get
|
End Get
|
||||||
End Property
|
End Property
|
||||||
|
|
||||||
|
'''<summary>
|
||||||
|
''' Looks up a localized string similar to The connection information could not be loaded from the SQL server..
|
||||||
|
'''</summary>
|
||||||
|
Friend Shared ReadOnly Property strLoadFromSqlFailedContent() As String
|
||||||
|
Get
|
||||||
|
Return ResourceManager.GetString("strLoadFromSqlFailedContent", resourceCulture)
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
|
||||||
'''<summary>
|
'''<summary>
|
||||||
''' Looks up a localized string similar to Load From XML failed!.
|
''' Looks up a localized string similar to Load From XML failed!.
|
||||||
'''</summary>
|
'''</summary>
|
||||||
@@ -2950,6 +3012,15 @@ Namespace My
|
|||||||
End Get
|
End Get
|
||||||
End Property
|
End Property
|
||||||
|
|
||||||
|
'''<summary>
|
||||||
|
''' Looks up a localized string similar to Retrieve.
|
||||||
|
'''</summary>
|
||||||
|
Friend Shared ReadOnly Property strMenuSessionRetrieve() As String
|
||||||
|
Get
|
||||||
|
Return ResourceManager.GetString("strMenuSessionRetrieve", resourceCulture)
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
|
||||||
'''<summary>
|
'''<summary>
|
||||||
''' Looks up a localized string similar to Sessions.
|
''' Looks up a localized string similar to Sessions.
|
||||||
'''</summary>
|
'''</summary>
|
||||||
@@ -3257,6 +3328,15 @@ Namespace My
|
|||||||
End Get
|
End Get
|
||||||
End Property
|
End Property
|
||||||
|
|
||||||
|
'''<summary>
|
||||||
|
''' Looks up a localized string similar to Testing....
|
||||||
|
'''</summary>
|
||||||
|
Friend Shared ReadOnly Property strOptionsProxyTesting() As String
|
||||||
|
Get
|
||||||
|
Return ResourceManager.GetString("strOptionsProxyTesting", resourceCulture)
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
|
||||||
'''<summary>
|
'''<summary>
|
||||||
''' Looks up a localized string similar to Theme.
|
''' Looks up a localized string similar to Theme.
|
||||||
'''</summary>
|
'''</summary>
|
||||||
@@ -3365,6 +3445,15 @@ Namespace My
|
|||||||
End Get
|
End Get
|
||||||
End Property
|
End Property
|
||||||
|
|
||||||
|
'''<summary>
|
||||||
|
''' Looks up a localized string similar to Select whether to automatically resize the connection when the window is resized or when fullscreen mode is toggled. Requires RDC 8.0 or higher..
|
||||||
|
'''</summary>
|
||||||
|
Friend Shared ReadOnly Property strPropertyDescriptionAutomaticResize() As String
|
||||||
|
Get
|
||||||
|
Return ResourceManager.GetString("strPropertyDescriptionAutomaticResize", resourceCulture)
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
|
||||||
'''<summary>
|
'''<summary>
|
||||||
''' Looks up a localized string similar to Select whether to use bitmap caching or not..
|
''' Looks up a localized string similar to Select whether to use bitmap caching or not..
|
||||||
'''</summary>
|
'''</summary>
|
||||||
@@ -3500,6 +3589,15 @@ Namespace My
|
|||||||
End Get
|
End Get
|
||||||
End Property
|
End Property
|
||||||
|
|
||||||
|
'''<summary>
|
||||||
|
''' Looks up a localized string similar to Specifies the load balancing information for use by load balancing routers to choose the best server..
|
||||||
|
'''</summary>
|
||||||
|
Friend Shared ReadOnly Property strPropertyDescriptionLoadBalanceInfo() As String
|
||||||
|
Get
|
||||||
|
Return ResourceManager.GetString("strPropertyDescriptionLoadBalanceInfo", resourceCulture)
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
|
||||||
'''<summary>
|
'''<summary>
|
||||||
''' Looks up a localized string similar to Enter the MAC address of the remote host if you wish to use it in an external tool..
|
''' Looks up a localized string similar to Enter the MAC address of the remote host if you wish to use it in an external tool..
|
||||||
'''</summary>
|
'''</summary>
|
||||||
@@ -3815,6 +3913,15 @@ Namespace My
|
|||||||
End Get
|
End Get
|
||||||
End Property
|
End Property
|
||||||
|
|
||||||
|
'''<summary>
|
||||||
|
''' Looks up a localized string similar to Automatic Resize.
|
||||||
|
'''</summary>
|
||||||
|
Friend Shared ReadOnly Property strPropertyNameAutomaticResize() As String
|
||||||
|
Get
|
||||||
|
Return ResourceManager.GetString("strPropertyNameAutomaticResize", resourceCulture)
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
|
||||||
'''<summary>
|
'''<summary>
|
||||||
''' Looks up a localized string similar to Cache Bitmaps.
|
''' Looks up a localized string similar to Cache Bitmaps.
|
||||||
'''</summary>
|
'''</summary>
|
||||||
@@ -3950,6 +4057,15 @@ Namespace My
|
|||||||
End Get
|
End Get
|
||||||
End Property
|
End Property
|
||||||
|
|
||||||
|
'''<summary>
|
||||||
|
''' Looks up a localized string similar to Load Balance Info.
|
||||||
|
'''</summary>
|
||||||
|
Friend Shared ReadOnly Property strPropertyNameLoadBalanceInfo() As String
|
||||||
|
Get
|
||||||
|
Return ResourceManager.GetString("strPropertyNameLoadBalanceInfo", resourceCulture)
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
|
||||||
'''<summary>
|
'''<summary>
|
||||||
''' Looks up a localized string similar to MAC Address.
|
''' Looks up a localized string similar to MAC Address.
|
||||||
'''</summary>
|
'''</summary>
|
||||||
@@ -4367,6 +4483,15 @@ Namespace My
|
|||||||
End Get
|
End Get
|
||||||
End Property
|
End Property
|
||||||
|
|
||||||
|
'''<summary>
|
||||||
|
''' Looks up a localized string similar to PuTTY Session Settings.
|
||||||
|
'''</summary>
|
||||||
|
Friend Shared ReadOnly Property strPuttySessionSettings() As String
|
||||||
|
Get
|
||||||
|
Return ResourceManager.GetString("strPuttySessionSettings", resourceCulture)
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
|
||||||
'''<summary>
|
'''<summary>
|
||||||
''' Looks up a localized string similar to PuTTY Settings.
|
''' Looks up a localized string similar to PuTTY Settings.
|
||||||
'''</summary>
|
'''</summary>
|
||||||
@@ -4836,7 +4961,7 @@ Namespace My
|
|||||||
End Property
|
End Property
|
||||||
|
|
||||||
'''<summary>
|
'''<summary>
|
||||||
''' Looks up a localized string similar to Open RDP Connectin failed!.
|
''' Looks up a localized string similar to Open RDP Connection failed!.
|
||||||
'''</summary>
|
'''</summary>
|
||||||
Friend Shared ReadOnly Property strRdpOpenConnectionFailed() As String
|
Friend Shared ReadOnly Property strRdpOpenConnectionFailed() As String
|
||||||
Get
|
Get
|
||||||
@@ -5403,7 +5528,7 @@ Namespace My
|
|||||||
End Property
|
End Property
|
||||||
|
|
||||||
'''<summary>
|
'''<summary>
|
||||||
''' Looks up a localized string similar to Transfer.
|
''' Looks up a localized string similar to SSH transfer failed..
|
||||||
'''</summary>
|
'''</summary>
|
||||||
Friend Shared ReadOnly Property strSSHTransferFailed() As String
|
Friend Shared ReadOnly Property strSSHTransferFailed() As String
|
||||||
Get
|
Get
|
||||||
@@ -5979,7 +6104,7 @@ Namespace My
|
|||||||
End Property
|
End Property
|
||||||
|
|
||||||
'''<summary>
|
'''<summary>
|
||||||
''' Looks up a localized string similar to Check for update completion failed!.
|
''' Looks up a localized string similar to The update information could not be downloaded..
|
||||||
'''</summary>
|
'''</summary>
|
||||||
Friend Shared ReadOnly Property strUpdateCheckCompleteFailed() As String
|
Friend Shared ReadOnly Property strUpdateCheckCompleteFailed() As String
|
||||||
Get
|
Get
|
||||||
@@ -5988,11 +6113,20 @@ Namespace My
|
|||||||
End Property
|
End Property
|
||||||
|
|
||||||
'''<summary>
|
'''<summary>
|
||||||
''' Looks up a localized string similar to Check For Update failed!.
|
''' Looks up a localized string similar to Check failed.
|
||||||
'''</summary>
|
'''</summary>
|
||||||
Friend Shared ReadOnly Property strUpdateCheckFailed() As String
|
Friend Shared ReadOnly Property strUpdateCheckFailedLabel() As String
|
||||||
Get
|
Get
|
||||||
Return ResourceManager.GetString("strUpdateCheckFailed", resourceCulture)
|
Return ResourceManager.GetString("strUpdateCheckFailedLabel", resourceCulture)
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
|
||||||
|
'''<summary>
|
||||||
|
''' Looks up a localized string similar to Checking for updates....
|
||||||
|
'''</summary>
|
||||||
|
Friend Shared ReadOnly Property strUpdateCheckingLabel() As String
|
||||||
|
Get
|
||||||
|
Return ResourceManager.GetString("strUpdateCheckingLabel", resourceCulture)
|
||||||
End Get
|
End Get
|
||||||
End Property
|
End Property
|
||||||
|
|
||||||
@@ -6005,15 +6139,6 @@ Namespace My
|
|||||||
End Get
|
End Get
|
||||||
End Property
|
End Property
|
||||||
|
|
||||||
'''<summary>
|
|
||||||
''' Looks up a localized string similar to Error deleting update file!.
|
|
||||||
'''</summary>
|
|
||||||
Friend Shared ReadOnly Property strUpdateDeleteFailed() As String
|
|
||||||
Get
|
|
||||||
Return ResourceManager.GetString("strUpdateDeleteFailed", resourceCulture)
|
|
||||||
End Get
|
|
||||||
End Property
|
|
||||||
|
|
||||||
'''<summary>
|
'''<summary>
|
||||||
''' Looks up a localized string similar to Download complete!
|
''' Looks up a localized string similar to Download complete!
|
||||||
'''mRemoteNG will now quit and begin with the installation..
|
'''mRemoteNG will now quit and begin with the installation..
|
||||||
@@ -6025,7 +6150,7 @@ Namespace My
|
|||||||
End Property
|
End Property
|
||||||
|
|
||||||
'''<summary>
|
'''<summary>
|
||||||
''' Looks up a localized string similar to Download complete failed!.
|
''' Looks up a localized string similar to The update could not be downloaded..
|
||||||
'''</summary>
|
'''</summary>
|
||||||
Friend Shared ReadOnly Property strUpdateDownloadCompleteFailed() As String
|
Friend Shared ReadOnly Property strUpdateDownloadCompleteFailed() As String
|
||||||
Get
|
Get
|
||||||
@@ -6034,7 +6159,7 @@ Namespace My
|
|||||||
End Property
|
End Property
|
||||||
|
|
||||||
'''<summary>
|
'''<summary>
|
||||||
''' Looks up a localized string similar to Download Update failed!.
|
''' Looks up a localized string similar to The update download could not be initiated..
|
||||||
'''</summary>
|
'''</summary>
|
||||||
Friend Shared ReadOnly Property strUpdateDownloadFailed() As String
|
Friend Shared ReadOnly Property strUpdateDownloadFailed() As String
|
||||||
Get
|
Get
|
||||||
@@ -6079,11 +6204,20 @@ Namespace My
|
|||||||
End Property
|
End Property
|
||||||
|
|
||||||
'''<summary>
|
'''<summary>
|
||||||
''' Looks up a localized string similar to Error starting update!.
|
''' Looks up a localized string similar to The announcement information could not be downloaded..
|
||||||
'''</summary>
|
'''</summary>
|
||||||
Friend Shared ReadOnly Property strUpdateStartFailed() As String
|
Friend Shared ReadOnly Property strUpdateGetAnnouncementInfoFailed() As String
|
||||||
Get
|
Get
|
||||||
Return ResourceManager.GetString("strUpdateStartFailed", resourceCulture)
|
Return ResourceManager.GetString("strUpdateGetAnnouncementInfoFailed", resourceCulture)
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
|
||||||
|
'''<summary>
|
||||||
|
''' Looks up a localized string similar to The change log could not be downloaded..
|
||||||
|
'''</summary>
|
||||||
|
Friend Shared ReadOnly Property strUpdateGetChangeLogFailed() As String
|
||||||
|
Get
|
||||||
|
Return ResourceManager.GetString("strUpdateGetChangeLogFailed", resourceCulture)
|
||||||
End Get
|
End Get
|
||||||
End Property
|
End Property
|
||||||
|
|
||||||
|
|||||||
@@ -1827,9 +1827,6 @@ Wenn Sie Fehler feststellen, dann sollten Sie eine neue Verbindungs Datei erstel
|
|||||||
<data name="strSSHTransferEndFailed" xml:space="preserve">
|
<data name="strSSHTransferEndFailed" xml:space="preserve">
|
||||||
<value>SSH Abschluss der Übertragung fehlgeschlagen!</value>
|
<value>SSH Abschluss der Übertragung fehlgeschlagen!</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="strSSHTransferFailed" xml:space="preserve">
|
|
||||||
<value>Übertragung fehlgeschlagen!</value>
|
|
||||||
</data>
|
|
||||||
<data name="strStartIP" xml:space="preserve">
|
<data name="strStartIP" xml:space="preserve">
|
||||||
<value>Anfangs IP</value>
|
<value>Anfangs IP</value>
|
||||||
</data>
|
</data>
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<root>
|
<root>
|
||||||
<!--
|
<!--
|
||||||
Microsoft ResX Schema
|
Microsoft ResX Schema
|
||||||
@@ -59,7 +59,7 @@
|
|||||||
: using a System.ComponentModel.TypeConverter
|
: using a System.ComponentModel.TypeConverter
|
||||||
: and then encoded with base64 encoding.
|
: and then encoded with base64 encoding.
|
||||||
-->
|
-->
|
||||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
<xsd:schema xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="root">
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
@@ -105,15 +105,15 @@
|
|||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
</xsd:element>
|
</xsd:element>
|
||||||
</xsd:schema>
|
</xsd:schema>
|
||||||
|
<resheader name="reader">
|
||||||
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
<resheader name="resmimetype">
|
<resheader name="resmimetype">
|
||||||
<value>text/microsoft-resx</value>
|
<value>text/microsoft-resx</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
<resheader name="version">
|
<resheader name="version">
|
||||||
<value>2.0</value>
|
<value>2.0</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
<resheader name="reader">
|
|
||||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="writer">
|
<resheader name="writer">
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
|
|||||||
@@ -416,12 +416,30 @@ Versión de Control {0} de VNCSharpNG</value>
|
|||||||
<data name="strCommandLineArgsCouldNotBeParsed" xml:space="preserve">
|
<data name="strCommandLineArgsCouldNotBeParsed" xml:space="preserve">
|
||||||
<value>¡No se pudieron procesar los argumentos de línea de comandos!</value>
|
<value>¡No se pudieron procesar los argumentos de línea de comandos!</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="strCompatibilityProblemDetected" xml:space="preserve">
|
||||||
|
<value>Detectado problema de compatibilidad</value>
|
||||||
|
</data>
|
||||||
<data name="strComponentsCheck" xml:space="preserve">
|
<data name="strComponentsCheck" xml:space="preserve">
|
||||||
<value>Comprobación de Componentes</value>
|
<value>Comprobación de Componentes</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="strConfigPropertyGridButtonIconClickFailed" xml:space="preserve">
|
||||||
|
<value>¡Error en btnIcon_Click!</value>
|
||||||
|
</data>
|
||||||
|
<data name="strConfigPropertyGridHideItemsFailed" xml:space="preserve">
|
||||||
|
<value>¡Fallo en ShowHideGridItems!</value>
|
||||||
|
</data>
|
||||||
|
<data name="strConfigPropertyGridMenuClickFailed" xml:space="preserve">
|
||||||
|
<value>¡Fallo en IconMenu_Click!</value>
|
||||||
|
</data>
|
||||||
|
<data name="strConfigPropertyGridObjectFailed" xml:space="preserve">
|
||||||
|
<value>¡Fallo en el objeto de propiedad de red!</value>
|
||||||
|
</data>
|
||||||
<data name="strConfigPropertyGridSetHostStatusFailed" xml:space="preserve">
|
<data name="strConfigPropertyGridSetHostStatusFailed" xml:space="preserve">
|
||||||
<value>No se pudo definir el estado del host!</value>
|
<value>No se pudo definir el estado del host!</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="strConfigPropertyGridValueFailed" xml:space="preserve">
|
||||||
|
<value>¡Fallo en pGrid_PopertyValueChanged!</value>
|
||||||
|
</data>
|
||||||
<data name="strConfigUiLoadFailed" xml:space="preserve">
|
<data name="strConfigUiLoadFailed" xml:space="preserve">
|
||||||
<value>Error al Cargar la Interfaz de Configuración de Usuario</value>
|
<value>Error al Cargar la Interfaz de Configuración de Usuario</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -521,6 +539,9 @@ Arrancando con un nuevo archivo de conexiones.</value>
|
|||||||
<data name="strConnenctionClosedByUserDetail" xml:space="preserve">
|
<data name="strConnenctionClosedByUserDetail" xml:space="preserve">
|
||||||
<value>Connexión a {0} via {1} cerrada por el usuario {2}. (Descripción: "{3}"; Campo de Usuario: "{4}")</value>
|
<value>Connexión a {0} via {1} cerrada por el usuario {2}. (Descripción: "{3}"; Campo de Usuario: "{4}")</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="strConnenctionCloseEvent" xml:space="preserve">
|
||||||
|
<value>Evento de conexión cerrado</value>
|
||||||
|
</data>
|
||||||
<data name="strConnenctionCloseEventFailed" xml:space="preserve">
|
<data name="strConnenctionCloseEventFailed" xml:space="preserve">
|
||||||
<value>¡Ha fallado el evento Closed en Connection!</value>
|
<value>¡Ha fallado el evento Closed en Connection!</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -572,6 +593,9 @@ Arrancando con un nuevo archivo de conexiones.</value>
|
|||||||
<data name="strEndPort" xml:space="preserve">
|
<data name="strEndPort" xml:space="preserve">
|
||||||
<value>Puerto Final</value>
|
<value>Puerto Final</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="strErrorAddExternalToolsToToolBarFailed" xml:space="preserve">
|
||||||
|
<value>Fallo al AddExternalToolsToToolBar (frmMain). {0}</value>
|
||||||
|
</data>
|
||||||
<data name="strErrorAddFolderFailed" xml:space="preserve">
|
<data name="strErrorAddFolderFailed" xml:space="preserve">
|
||||||
<value>Añadir Carpeta (UI.Window.Tree) fallida. {0}</value>
|
<value>Añadir Carpeta (UI.Window.Tree) fallida. {0}</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -687,6 +711,9 @@ Ver el articulo de soporte de Microsoft en http://support.microsoft.com/kb/81183
|
|||||||
<data name="strHttpConnectionFailed" xml:space="preserve">
|
<data name="strHttpConnectionFailed" xml:space="preserve">
|
||||||
<value>¡No se pudo crear una nueva conexión HTTP!</value>
|
<value>¡No se pudo crear una nueva conexión HTTP!</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="strHttpDocumentTileChangeFailed" xml:space="preserve">
|
||||||
|
<value>¡Fallo al cambiar el azulejo del documento HTTP!</value>
|
||||||
|
</data>
|
||||||
<data name="strHttpSetPropsFailed" xml:space="preserve">
|
<data name="strHttpSetPropsFailed" xml:space="preserve">
|
||||||
<value>¡Asignación de Propiedades HTTP fallida!</value>
|
<value>¡Asignación de Propiedades HTTP fallida!</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -741,6 +768,21 @@ Ver el articulo de soporte de Microsoft en http://support.microsoft.com/kb/81183
|
|||||||
<data name="strIntAppFocusFailed" xml:space="preserve">
|
<data name="strIntAppFocusFailed" xml:space="preserve">
|
||||||
<value>¡No se pudo centrar el foco en Int App!</value>
|
<value>¡No se pudo centrar el foco en Int App!</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="strIntAppHandle" xml:space="preserve">
|
||||||
|
<value>Manejar aplicación interna: {0}</value>
|
||||||
|
</data>
|
||||||
|
<data name="strIntAppKillFailed" xml:space="preserve">
|
||||||
|
<value>¡Fallo en el proceso de detención de la aplicación interna!</value>
|
||||||
|
</data>
|
||||||
|
<data name="strIntAppParentHandle" xml:space="preserve">
|
||||||
|
<value>Manejar el panel: {0}</value>
|
||||||
|
</data>
|
||||||
|
<data name="strIntAppResizeFailed" xml:space="preserve">
|
||||||
|
<value>¡Fallo al redimensionar la aplicación interna!</value>
|
||||||
|
</data>
|
||||||
|
<data name="strIntAppStuff" xml:space="preserve">
|
||||||
|
<value>--- Cosas de la aplicación interna ---</value>
|
||||||
|
</data>
|
||||||
<data name="strIntAppTitle" xml:space="preserve">
|
<data name="strIntAppTitle" xml:space="preserve">
|
||||||
<value>Título Int App: {0}</value>
|
<value>Título Int App: {0}</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -964,10 +1006,10 @@ Ver el articulo de soporte de Microsoft en http://support.microsoft.com/kb/81183
|
|||||||
<value>Copiar todo</value>
|
<value>Copiar todo</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="strMenuNotificationsDelete" xml:space="preserve">
|
<data name="strMenuNotificationsDelete" xml:space="preserve">
|
||||||
<value>Eliminar</value>
|
<value>Borrar</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="strMenuNotificationsDeleteAll" xml:space="preserve">
|
<data name="strMenuNotificationsDeleteAll" xml:space="preserve">
|
||||||
<value>Eliminar todo</value>
|
<value>Borrar todo</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="strMenuOpenConnectionFile" xml:space="preserve">
|
<data name="strMenuOpenConnectionFile" xml:space="preserve">
|
||||||
<value>Abrir Archivo de Conexión...</value>
|
<value>Abrir Archivo de Conexión...</value>
|
||||||
@@ -1029,9 +1071,15 @@ Ver el articulo de soporte de Microsoft en http://support.microsoft.com/kb/81183
|
|||||||
<data name="strMenuSessionsAndScreenshots" xml:space="preserve">
|
<data name="strMenuSessionsAndScreenshots" xml:space="preserve">
|
||||||
<value>Sesiones y Capturas de Pantalla</value>
|
<value>Sesiones y Capturas de Pantalla</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="strMenuShowHelpText" xml:space="preserve">
|
||||||
|
<value>&Mostrar texto de ayuda</value>
|
||||||
|
</data>
|
||||||
<data name="strMenuShowText" xml:space="preserve">
|
<data name="strMenuShowText" xml:space="preserve">
|
||||||
<value>Mostar Texto</value>
|
<value>Mostar Texto</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="strMenuSmartSize" xml:space="preserve">
|
||||||
|
<value>SmartSize (RDP/VNC)</value>
|
||||||
|
</data>
|
||||||
<data name="strMenuSSHFileTransfer" xml:space="preserve">
|
<data name="strMenuSSHFileTransfer" xml:space="preserve">
|
||||||
<value>Tranferencia de Archivos por SSH</value>
|
<value>Tranferencia de Archivos por SSH</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -1467,12 +1515,21 @@ Mensaje:
|
|||||||
<data name="strPuttyGetSessionsFailed" xml:space="preserve">
|
<data name="strPuttyGetSessionsFailed" xml:space="preserve">
|
||||||
<value>¡Fallo en la carga de las Sesiones de Putty!</value>
|
<value>¡Fallo en la carga de las Sesiones de Putty!</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="strPuttyHandle" xml:space="preserve">
|
||||||
|
<value>Manejar Putty: {0}</value>
|
||||||
|
</data>
|
||||||
<data name="strPuttyKillFailed" xml:space="preserve">
|
<data name="strPuttyKillFailed" xml:space="preserve">
|
||||||
<value>¡Kill del Proceso Putty fallido!</value>
|
<value>¡Kill del Proceso Putty fallido!</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="strPuttyParentHandle" xml:space="preserve">
|
||||||
|
<value>Manejar el panel: {0}</value>
|
||||||
|
</data>
|
||||||
<data name="strPuttyResizeFailed" xml:space="preserve">
|
<data name="strPuttyResizeFailed" xml:space="preserve">
|
||||||
<value>¡Redimensionamiento de Putty fallido!</value>
|
<value>¡Redimensionamiento de Putty fallido!</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="strPuttySavedSessionsRootName" xml:space="preserve">
|
||||||
|
<value>Sesiones guardadas de PuTTY</value>
|
||||||
|
</data>
|
||||||
<data name="strPuttySettings" xml:space="preserve">
|
<data name="strPuttySettings" xml:space="preserve">
|
||||||
<value>Opciones de PuTTY</value>
|
<value>Opciones de PuTTY</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -1482,6 +1539,12 @@ Mensaje:
|
|||||||
<data name="strPuttyStartFailed" xml:space="preserve">
|
<data name="strPuttyStartFailed" xml:space="preserve">
|
||||||
<value>¡Fallo en el arranque de Putty!</value>
|
<value>¡Fallo en el arranque de Putty!</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="strPuttyStuff" xml:space="preserve">
|
||||||
|
<value>--- Cosas de PuTTY ---</value>
|
||||||
|
</data>
|
||||||
|
<data name="strPuttyTitle" xml:space="preserve">
|
||||||
|
<value>Titulo PuTTy: {0}</value>
|
||||||
|
</data>
|
||||||
<data name="strQuickConnect" xml:space="preserve">
|
<data name="strQuickConnect" xml:space="preserve">
|
||||||
<value>Conexión Rápida</value>
|
<value>Conexión Rápida</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -1794,9 +1857,6 @@ Mensaje:
|
|||||||
<data name="strSSHTransferEndFailed" xml:space="preserve">
|
<data name="strSSHTransferEndFailed" xml:space="preserve">
|
||||||
<value>¡Final de Transferencia SSH (UI.Window.SSHTransfer) fallida!</value>
|
<value>¡Final de Transferencia SSH (UI.Window.SSHTransfer) fallida!</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="strSSHTransferFailed" xml:space="preserve">
|
|
||||||
<value>Tranferencia</value>
|
|
||||||
</data>
|
|
||||||
<data name="strStartIP" xml:space="preserve">
|
<data name="strStartIP" xml:space="preserve">
|
||||||
<value>IP Inicial</value>
|
<value>IP Inicial</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -1845,15 +1905,30 @@ Mensaje:
|
|||||||
<data name="strThemeNameConfigPanelBackgroundColor" xml:space="preserve">
|
<data name="strThemeNameConfigPanelBackgroundColor" xml:space="preserve">
|
||||||
<value>Color de fondo del panel de configuración</value>
|
<value>Color de fondo del panel de configuración</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="strThemeNameConfigPanelTextColor" xml:space="preserve">
|
||||||
|
<value>Color del texto del panel de configuración</value>
|
||||||
|
</data>
|
||||||
|
<data name="strThemeNameMenuBackgroundColor" xml:space="preserve">
|
||||||
|
<value>Color de fondo del menú</value>
|
||||||
|
</data>
|
||||||
<data name="strThemeNameMenuTextColor" xml:space="preserve">
|
<data name="strThemeNameMenuTextColor" xml:space="preserve">
|
||||||
<value>Color del texto del menú</value>
|
<value>Color del texto del menú</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="strThemeNameSearchBoxBackgroundColor" xml:space="preserve">
|
||||||
|
<value>Color de fondo de la caja de búsqueda</value>
|
||||||
|
</data>
|
||||||
|
<data name="strThemeNameSearchBoxTextColor" xml:space="preserve">
|
||||||
|
<value>Color del texto de la caja de búsqueda</value>
|
||||||
|
</data>
|
||||||
<data name="strThemeNameToolbarBackgroundColor" xml:space="preserve">
|
<data name="strThemeNameToolbarBackgroundColor" xml:space="preserve">
|
||||||
<value>Color de fondo de la barra de herramientas</value>
|
<value>Color de fondo de la barra de herramientas</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="strThemeNameToolbarTextColor" xml:space="preserve">
|
<data name="strThemeNameToolbarTextColor" xml:space="preserve">
|
||||||
<value>Color del texto de la barra de herramientas</value>
|
<value>Color del texto de la barra de herramientas</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="strThemeNameWindowBackgroundColor" xml:space="preserve">
|
||||||
|
<value>Color de fondo de la ventana</value>
|
||||||
|
</data>
|
||||||
<data name="strTitleError" xml:space="preserve">
|
<data name="strTitleError" xml:space="preserve">
|
||||||
<value>Error ({0})</value>
|
<value>Error ({0})</value>
|
||||||
</data>
|
</data>
|
||||||
|
|||||||
@@ -148,7 +148,7 @@
|
|||||||
<value>Toujours se connecter, même si l'authentification échoue</value>
|
<value>Toujours se connecter, même si l'authentification échoue</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="strAlwaysShowPanelSelection" xml:space="preserve">
|
<data name="strAlwaysShowPanelSelection" xml:space="preserve">
|
||||||
<value>Toujours afficher la sélection de panneau à l'ouverture d'une connexion</value>
|
<value>Toujours demander la sélection d'un panneau lors de l'ouverture d'une connexion</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="strAlwaysShowPanelTabs" xml:space="preserve">
|
<data name="strAlwaysShowPanelTabs" xml:space="preserve">
|
||||||
<value>Toujours afficher les onglets du panneau</value>
|
<value>Toujours afficher les onglets du panneau</value>
|
||||||
@@ -403,6 +403,12 @@ Si la vérification des composants ou l'utilisation d'ICA échoue malgré tout,
|
|||||||
<data name="strCommandLineArgsCouldNotBeParsed" xml:space="preserve">
|
<data name="strCommandLineArgsCouldNotBeParsed" xml:space="preserve">
|
||||||
<value>Impossible de parcourir les arguments de la ligne de commande !</value>
|
<value>Impossible de parcourir les arguments de la ligne de commande !</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="strCompatibilityLenovoAutoScrollUtilityDetected" xml:space="preserve">
|
||||||
|
<value>{0} a détecté que l'utilitaire Lenovo Auto Scroll Utility est executé sur le système. Cet utilitaire est connu pour générer des problèmes avec {0}. Il est recommandé de le désactiver ou de le désinstaller.</value>
|
||||||
|
</data>
|
||||||
|
<data name="strCompatibilityProblemDetected" xml:space="preserve">
|
||||||
|
<value>Problème de compatibilité détecté</value>
|
||||||
|
</data>
|
||||||
<data name="strComponentsCheck" xml:space="preserve">
|
<data name="strComponentsCheck" xml:space="preserve">
|
||||||
<value>Vérifiez les composants</value>
|
<value>Vérifiez les composants</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -603,7 +609,7 @@ Si la vérification des composants ou l'utilisation d'ICA échoue malgré tout,
|
|||||||
</data>
|
</data>
|
||||||
<data name="strErrorFipsPolicyIncompatible" xml:space="preserve">
|
<data name="strErrorFipsPolicyIncompatible" xml:space="preserve">
|
||||||
<value>Les paramètres de sécurité Windows, "Système de cryptographie: Utilise FIPS, algorithmes compatible pour le cryptage, hachage et signature", est activé. Ce paramètre n'est pas compatible avec {0}.
|
<value>Les paramètres de sécurité Windows, "Système de cryptographie: Utilise FIPS, algorithmes compatible pour le cryptage, hachage et signature", est activé. Ce paramètre n'est pas compatible avec {0}.
|
||||||
Allez sur l'article du support de Microsoft pour plus d'informations http://support.microsoft.com/kb/811833 for more information.
|
Consultez l'article du support de Microsoft pour plus d'informations http://support.microsoft.com/kb/811833
|
||||||
|
|
||||||
{0} va maintenant fermer.</value>
|
{0} va maintenant fermer.</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -719,7 +725,7 @@ Allez sur l'article du support de Microsoft pour plus d'informations http://supp
|
|||||||
<value>Échec de ICA Set Resolution !</value>
|
<value>Échec de ICA Set Resolution !</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="strIdentifyQuickConnectTabs" xml:space="preserve">
|
<data name="strIdentifyQuickConnectTabs" xml:space="preserve">
|
||||||
<value>Identifier les onglets de connexion rapide en ajoutant le préfix "Rapide."</value>
|
<value>Identifier les onglets de connexion rapide en ajoutant le préfixe "Rapide."</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="strImportAD" xml:space="preserve">
|
<data name="strImportAD" xml:space="preserve">
|
||||||
<value>Importer à partir d'Active Directory</value>
|
<value>Importer à partir d'Active Directory</value>
|
||||||
@@ -776,7 +782,7 @@ Allez sur l'article du support de Microsoft pour plus d'informations http://supp
|
|||||||
<value>CTRL-ALT-DEL</value>
|
<value>CTRL-ALT-DEL</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="strKeysCtrlEsc" xml:space="preserve">
|
<data name="strKeysCtrlEsc" xml:space="preserve">
|
||||||
<value>CTRL-ESC</value>
|
<value>CTRL-Echap</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="strLabelAddress" xml:space="preserve">
|
<data name="strLabelAddress" xml:space="preserve">
|
||||||
<value>Adresse:</value>
|
<value>Adresse:</value>
|
||||||
@@ -989,7 +995,7 @@ Allez sur l'article du support de Microsoft pour plus d'informations http://supp
|
|||||||
<value>Notifications</value>
|
<value>Notifications</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="strMenuNotificationsCopyAll" xml:space="preserve">
|
<data name="strMenuNotificationsCopyAll" xml:space="preserve">
|
||||||
<value>Copiez tout</value>
|
<value>Tout copier</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="strMenuNotificationsDelete" xml:space="preserve">
|
<data name="strMenuNotificationsDelete" xml:space="preserve">
|
||||||
<value>Supprimer</value>
|
<value>Supprimer</value>
|
||||||
@@ -1522,6 +1528,9 @@ Message:
|
|||||||
<data name="strPuttyResizeFailed" xml:space="preserve">
|
<data name="strPuttyResizeFailed" xml:space="preserve">
|
||||||
<value>Échec du redimensionnement de Putty !</value>
|
<value>Échec du redimensionnement de Putty !</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="strPuttySavedSessionsRootName" xml:space="preserve">
|
||||||
|
<value>Sessions PuTTY sauvegardées</value>
|
||||||
|
</data>
|
||||||
<data name="strPuttySettings" xml:space="preserve">
|
<data name="strPuttySettings" xml:space="preserve">
|
||||||
<value>Paramètres PuTTY</value>
|
<value>Paramètres PuTTY</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -1868,7 +1877,7 @@ Message:
|
|||||||
<value>Échec de SSH Transfer End (UI.Window.SSHTransfer)!</value>
|
<value>Échec de SSH Transfer End (UI.Window.SSHTransfer)!</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="strSSHTransferFailed" xml:space="preserve">
|
<data name="strSSHTransferFailed" xml:space="preserve">
|
||||||
<value>Transfert</value>
|
<value>Echec du transfert SSH échoué.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="strStartIP" xml:space="preserve">
|
<data name="strStartIP" xml:space="preserve">
|
||||||
<value>IP de début</value>
|
<value>IP de début</value>
|
||||||
@@ -1964,7 +1973,7 @@ Message:
|
|||||||
<value>La couleur d'arrière-plan de la fenêtre principale.</value>
|
<value>La couleur d'arrière-plan de la fenêtre principale.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="strThemeNameConfigPanelBackgroundColor" xml:space="preserve">
|
<data name="strThemeNameConfigPanelBackgroundColor" xml:space="preserve">
|
||||||
<value>Couleur de fond de panneau de configuration</value>
|
<value>Couleur de fond du panneau de configuration</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="strThemeNameConfigPanelCategoryTextColor" xml:space="preserve">
|
<data name="strThemeNameConfigPanelCategoryTextColor" xml:space="preserve">
|
||||||
<value>Couleur de texte pour le panneau de configuration</value>
|
<value>Couleur de texte pour le panneau de configuration</value>
|
||||||
@@ -2000,16 +2009,16 @@ Message:
|
|||||||
<value>Couleur de fond de la boite de recherche</value>
|
<value>Couleur de fond de la boite de recherche</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="strThemeNameSearchBoxTextColor" xml:space="preserve">
|
<data name="strThemeNameSearchBoxTextColor" xml:space="preserve">
|
||||||
<value>Couleur du texte pour la boite de recherche</value>
|
<value>Couleur du texte de la recherche</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="strThemeNameSearchBoxTextPromptColor" xml:space="preserve">
|
<data name="strThemeNameSearchBoxTextPromptColor" xml:space="preserve">
|
||||||
<value>Couleur du Texte de la Boîte de Recherche</value>
|
<value>Couleur du Texte de la Boîte de Recherche</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="strThemeNameToolbarBackgroundColor" xml:space="preserve">
|
<data name="strThemeNameToolbarBackgroundColor" xml:space="preserve">
|
||||||
<value>Couleur de fond de barre d'outils</value>
|
<value>Couleur de fond de la barre d'outils</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="strThemeNameToolbarTextColor" xml:space="preserve">
|
<data name="strThemeNameToolbarTextColor" xml:space="preserve">
|
||||||
<value>Couleur du texte pour la barre d'outils</value>
|
<value>Couleur du texte de la barre d'outils</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="strThemeNameWindowBackgroundColor" xml:space="preserve">
|
<data name="strThemeNameWindowBackgroundColor" xml:space="preserve">
|
||||||
<value>Couleur de fond de la fenêtre</value>
|
<value>Couleur de fond de la fenêtre</value>
|
||||||
|
|||||||
@@ -1876,9 +1876,6 @@ Messaggio:
|
|||||||
<data name="strSSHTransferEndFailed" xml:space="preserve">
|
<data name="strSSHTransferEndFailed" xml:space="preserve">
|
||||||
<value>SSH Transfer End (UI.Window.SSHTransfer) fallito!</value>
|
<value>SSH Transfer End (UI.Window.SSHTransfer) fallito!</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="strSSHTransferFailed" xml:space="preserve">
|
|
||||||
<value>Trasferimento</value>
|
|
||||||
</data>
|
|
||||||
<data name="strStartIP" xml:space="preserve">
|
<data name="strStartIP" xml:space="preserve">
|
||||||
<value>IP iniziale</value>
|
<value>IP iniziale</value>
|
||||||
</data>
|
</data>
|
||||||
|
|||||||
2195
mRemoteV1/Language/Language.nb-NO.resx
Normal file
2195
mRemoteV1/Language/Language.nb-NO.resx
Normal file
File diff suppressed because it is too large
Load Diff
@@ -417,6 +417,12 @@ VncSharpNG Versie {0}</value>
|
|||||||
<data name="strCommandLineArgsCouldNotBeParsed" xml:space="preserve">
|
<data name="strCommandLineArgsCouldNotBeParsed" xml:space="preserve">
|
||||||
<value>Kan opdrachtprompt argumenten niet parsen!</value>
|
<value>Kan opdrachtprompt argumenten niet parsen!</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="strCompatibilityLenovoAutoScrollUtilityDetected" xml:space="preserve">
|
||||||
|
<value>{0} heeft de Lenovo Auto Scroll Utility op het systeem ontdekt. Deze utility staat bekend om problemen met {0}. Het wordt aangeraden om het uit te schakelen of te deïnstalleren.</value>
|
||||||
|
</data>
|
||||||
|
<data name="strCompatibilityProblemDetected" xml:space="preserve">
|
||||||
|
<value>Compatibiliteits probleem ontdekt</value>
|
||||||
|
</data>
|
||||||
<data name="strComponentsCheck" xml:space="preserve">
|
<data name="strComponentsCheck" xml:space="preserve">
|
||||||
<value>Controle Componenten</value>
|
<value>Controle Componenten</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -1541,6 +1547,9 @@ Bericht:
|
|||||||
<data name="strPuttyResizeFailed" xml:space="preserve">
|
<data name="strPuttyResizeFailed" xml:space="preserve">
|
||||||
<value>PuTTy Formaat Wijzigen Mislukt!</value>
|
<value>PuTTy Formaat Wijzigen Mislukt!</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="strPuttySavedSessionsRootName" xml:space="preserve">
|
||||||
|
<value>PuTTY opgeslagen sessies</value>
|
||||||
|
</data>
|
||||||
<data name="strPuttySettings" xml:space="preserve">
|
<data name="strPuttySettings" xml:space="preserve">
|
||||||
<value>PuTTY Instellingen</value>
|
<value>PuTTY Instellingen</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -1887,7 +1896,7 @@ Bericht:
|
|||||||
<value>SSH Overdracht (UI.Window.SSHTransfer) mislukt!</value>
|
<value>SSH Overdracht (UI.Window.SSHTransfer) mislukt!</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="strSSHTransferFailed" xml:space="preserve">
|
<data name="strSSHTransferFailed" xml:space="preserve">
|
||||||
<value>Overdracht</value>
|
<value>SSH overdracht heeft gefaald.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="strStartIP" xml:space="preserve">
|
<data name="strStartIP" xml:space="preserve">
|
||||||
<value>Start IP</value>
|
<value>Start IP</value>
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
351
mRemoteV1/Language/Language.pt-BR.resx
Normal file
351
mRemoteV1/Language/Language.pt-BR.resx
Normal file
@@ -0,0 +1,351 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<root>
|
||||||
|
<!--
|
||||||
|
Microsoft ResX Schema
|
||||||
|
|
||||||
|
Version 2.0
|
||||||
|
|
||||||
|
The primary goals of this format is to allow a simple XML format
|
||||||
|
that is mostly human readable. The generation and parsing of the
|
||||||
|
various data types are done through the TypeConverter classes
|
||||||
|
associated with the data types.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
... ado.net/XML headers & schema ...
|
||||||
|
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||||
|
<resheader name="version">2.0</resheader>
|
||||||
|
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||||
|
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||||
|
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||||
|
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||||
|
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
|
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||||
|
</data>
|
||||||
|
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||||
|
<comment>This is a comment</comment>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
There are any number of "resheader" rows that contain simple
|
||||||
|
name/value pairs.
|
||||||
|
|
||||||
|
Each data row contains a name, and value. The row also contains a
|
||||||
|
type or mimetype. Type corresponds to a .NET class that support
|
||||||
|
text/value conversion through the TypeConverter architecture.
|
||||||
|
Classes that don't support this are serialized and stored with the
|
||||||
|
mimetype set.
|
||||||
|
|
||||||
|
The mimetype is used for serialized objects, and tells the
|
||||||
|
ResXResourceReader how to depersist the object. This is currently not
|
||||||
|
extensible. For a given mimetype the value must be set accordingly:
|
||||||
|
|
||||||
|
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||||
|
that the ResXResourceWriter will generate, however the reader can
|
||||||
|
read any of the formats listed below.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.binary.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.soap.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||||
|
value : The object must be serialized into a byte array
|
||||||
|
: using a System.ComponentModel.TypeConverter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
-->
|
||||||
|
<xsd:schema xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="root">
|
||||||
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:choice maxOccurs="unbounded">
|
||||||
|
<xsd:element name="metadata">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="assembly">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="data">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="resheader">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:choice>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:schema>
|
||||||
|
<resheader name="reader">
|
||||||
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="resmimetype">
|
||||||
|
<value>text/microsoft-resx</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="version">
|
||||||
|
<value>2.0</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="writer">
|
||||||
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<data name="strAbout" xml:space="preserve">
|
||||||
|
<value>Sobre</value>
|
||||||
|
</data>
|
||||||
|
<data name="strActive" xml:space="preserve">
|
||||||
|
<value>Ativo</value>
|
||||||
|
</data>
|
||||||
|
<data name="strActivity" xml:space="preserve">
|
||||||
|
<value>Atividade</value>
|
||||||
|
</data>
|
||||||
|
<data name="strAddConnection" xml:space="preserve">
|
||||||
|
<value>Nova conexão</value>
|
||||||
|
</data>
|
||||||
|
<data name="strAddFolder" xml:space="preserve">
|
||||||
|
<value>Nova pasta</value>
|
||||||
|
</data>
|
||||||
|
<data name="strAddNodeFromXmlFailed" xml:space="preserve">
|
||||||
|
<value>AddNodeFromXML falhou!</value>
|
||||||
|
</data>
|
||||||
|
<data name="strAddNodesFromSqlFailed" xml:space="preserve">
|
||||||
|
<value>AddNodesFromSQL falhou!</value>
|
||||||
|
</data>
|
||||||
|
<data name="strAllowOnlySingleInstance" xml:space="preserve">
|
||||||
|
<value>Permitir apenas uma única instância do aplicativo (mRemoteNG é necessário reiniciar)</value>
|
||||||
|
</data>
|
||||||
|
<data name="strAlways" xml:space="preserve">
|
||||||
|
<value>Sempre</value>
|
||||||
|
</data>
|
||||||
|
<data name="strAlwaysConnectEvenIfAuthFails" xml:space="preserve">
|
||||||
|
<value>Conectar sempre, mesmo se a autenticação falhar</value>
|
||||||
|
</data>
|
||||||
|
<data name="strAlwaysShowPanelSelection" xml:space="preserve">
|
||||||
|
<value>Sempre mostrar a caixa de diálogo de seleção de painel ao abrir conexões</value>
|
||||||
|
</data>
|
||||||
|
<data name="strAlwaysShowSysTrayIcon" xml:space="preserve">
|
||||||
|
<value>Sempre mostrar ícone da área de notificação</value>
|
||||||
|
</data>
|
||||||
|
<data name="strAskUpdatesCommandAskLater" xml:space="preserve">
|
||||||
|
<value>Me pergunte novamente mais tarde</value>
|
||||||
|
</data>
|
||||||
|
<data name="strAskUpdatesCommandCustom" xml:space="preserve">
|
||||||
|
<value>Personalizar as configurações agora</value>
|
||||||
|
</data>
|
||||||
|
<data name="strAskUpdatesCommandRecommended" xml:space="preserve">
|
||||||
|
<value>Usar as configurações recomendadas</value>
|
||||||
|
</data>
|
||||||
|
<data name="strAskUpdatesContent" xml:space="preserve">
|
||||||
|
<value>{0} pode verificar automaticamente as atualizações que podem fornecer novas funcionalidades e correções de bugs. É recomendável que você permita {0} verificar atualizações semanais.</value>
|
||||||
|
</data>
|
||||||
|
<data name="strAskUpdatesMainInstruction" xml:space="preserve">
|
||||||
|
<value>Configurações de atualização automática</value>
|
||||||
|
</data>
|
||||||
|
<data name="strAspect" xml:space="preserve">
|
||||||
|
<value>Aspecto</value>
|
||||||
|
</data>
|
||||||
|
<data name="strAutomaticallyGetSessionInfo" xml:space="preserve">
|
||||||
|
<value>Obter automaticamente informações de sessão</value>
|
||||||
|
</data>
|
||||||
|
<data name="strAutoSaveEvery" xml:space="preserve">
|
||||||
|
<value>Salvar automaticamente a cada:</value>
|
||||||
|
</data>
|
||||||
|
<data name="strAutoSaveMins" xml:space="preserve">
|
||||||
|
<value>Minutos (0 significa desativado)</value>
|
||||||
|
</data>
|
||||||
|
<data name="strAvailableVersion" xml:space="preserve">
|
||||||
|
<value>Versão atual</value>
|
||||||
|
</data>
|
||||||
|
<data name="strButtonBrowse" xml:space="preserve">
|
||||||
|
<value>& Procurar...</value>
|
||||||
|
</data>
|
||||||
|
<data name="strButtonCancel" xml:space="preserve">
|
||||||
|
<value>& Cancelar</value>
|
||||||
|
</data>
|
||||||
|
<data name="strButtonChange" xml:space="preserve">
|
||||||
|
<value>Alterar</value>
|
||||||
|
</data>
|
||||||
|
<data name="strButtonClose" xml:space="preserve">
|
||||||
|
<value>& Fechar</value>
|
||||||
|
</data>
|
||||||
|
<data name="strButtonDefaultInheritance" xml:space="preserve">
|
||||||
|
<value>Herança padrão</value>
|
||||||
|
</data>
|
||||||
|
<data name="strButtonDefaultProperties" xml:space="preserve">
|
||||||
|
<value>Propriedades padrões</value>
|
||||||
|
</data>
|
||||||
|
<data name="strButtonDisconnect" xml:space="preserve">
|
||||||
|
<value>Desconectar</value>
|
||||||
|
</data>
|
||||||
|
<data name="strButtonIcon" xml:space="preserve">
|
||||||
|
<value>Ícone</value>
|
||||||
|
</data>
|
||||||
|
<data name="strButtonImport" xml:space="preserve">
|
||||||
|
<value>& Importar</value>
|
||||||
|
</data>
|
||||||
|
<data name="strButtonInheritance" xml:space="preserve">
|
||||||
|
<value>Herança</value>
|
||||||
|
</data>
|
||||||
|
<data name="strButtonLaunchPutty" xml:space="preserve">
|
||||||
|
<value>Executar o PuTTY</value>
|
||||||
|
</data>
|
||||||
|
<data name="strButtonNew" xml:space="preserve">
|
||||||
|
<value>& Novo</value>
|
||||||
|
</data>
|
||||||
|
<data name="strButtonOK" xml:space="preserve">
|
||||||
|
<value>& OK</value>
|
||||||
|
</data>
|
||||||
|
<data name="strButtonProperties" xml:space="preserve">
|
||||||
|
<value>Propriedades</value>
|
||||||
|
</data>
|
||||||
|
<data name="strButtonScan" xml:space="preserve">
|
||||||
|
<value>& Scanear</value>
|
||||||
|
</data>
|
||||||
|
<data name="strButtonStop" xml:space="preserve">
|
||||||
|
<value>& Parar</value>
|
||||||
|
</data>
|
||||||
|
<data name="strButtonTestProxy" xml:space="preserve">
|
||||||
|
<value>Testar Proxy</value>
|
||||||
|
</data>
|
||||||
|
<data name="strCannotImportNormalSessionFile" xml:space="preserve">
|
||||||
|
<value>Você não pode importar um arquivo de conexão normal. Por favor, use Arquivo - Carregar Conexões para os arquivos de conexão normal!</value>
|
||||||
|
</data>
|
||||||
|
<data name="strCannotStartPortScan" xml:space="preserve">
|
||||||
|
<value>Não é possível iniciar a varredura de portas, formato IP incorreto!</value>
|
||||||
|
</data>
|
||||||
|
<data name="strCategoryAppearance" xml:space="preserve">
|
||||||
|
<value>Aparência</value>
|
||||||
|
</data>
|
||||||
|
<data name="strCategoryConnection" xml:space="preserve">
|
||||||
|
<value>Conexão</value>
|
||||||
|
</data>
|
||||||
|
<data name="strCategoryCredentials" xml:space="preserve">
|
||||||
|
<value>Credenciais</value>
|
||||||
|
</data>
|
||||||
|
<data name="strCategoryDisplay" xml:space="preserve">
|
||||||
|
<value>Mostrar</value>
|
||||||
|
</data>
|
||||||
|
<data name="strCategoryGeneral" xml:space="preserve">
|
||||||
|
<value>Geral</value>
|
||||||
|
</data>
|
||||||
|
<data name="strCategoryMiscellaneous" xml:space="preserve">
|
||||||
|
<value>Diversos</value>
|
||||||
|
</data>
|
||||||
|
<data name="strCategoryProtocol" xml:space="preserve">
|
||||||
|
<value>Protocolo</value>
|
||||||
|
</data>
|
||||||
|
<data name="strCategoryRedirect" xml:space="preserve">
|
||||||
|
<value>Redirecionar</value>
|
||||||
|
</data>
|
||||||
|
<data name="strCcAlwaysShowScreen" xml:space="preserve">
|
||||||
|
<value>Sempre mostrar esta tela na inicialização</value>
|
||||||
|
</data>
|
||||||
|
<data name="strCcCheckAgain" xml:space="preserve">
|
||||||
|
<value>Atualizar</value>
|
||||||
|
</data>
|
||||||
|
<data name="strCcCheckFailed" xml:space="preserve">
|
||||||
|
<value>Falha na verificação!</value>
|
||||||
|
</data>
|
||||||
|
<data name="strCcCheckSucceeded" xml:space="preserve">
|
||||||
|
<value>Verificação com sucesso!</value>
|
||||||
|
</data>
|
||||||
|
<data name="strCcNotInstalledProperly" xml:space="preserve">
|
||||||
|
<value>não instalado corretamente</value>
|
||||||
|
</data>
|
||||||
|
<data name="strCheckboxDomain" xml:space="preserve">
|
||||||
|
<value>Domínio</value>
|
||||||
|
</data>
|
||||||
|
<data name="strCheckboxDoNotShowThisMessageAgain" xml:space="preserve">
|
||||||
|
<value>Não mostre esta mensagem novamente.</value>
|
||||||
|
</data>
|
||||||
|
<data name="strCheckboxInheritance" xml:space="preserve">
|
||||||
|
<value>Herança</value>
|
||||||
|
</data>
|
||||||
|
<data name="strCheckboxPassword" xml:space="preserve">
|
||||||
|
<value>Senha</value>
|
||||||
|
</data>
|
||||||
|
<data name="strCheckboxProxyAuthentication" xml:space="preserve">
|
||||||
|
<value>Este servidor proxy requer autenticação</value>
|
||||||
|
</data>
|
||||||
|
<data name="strCheckboxPuttyPath" xml:space="preserve">
|
||||||
|
<value>Use o caminho personalizado para o PuTTY:</value>
|
||||||
|
</data>
|
||||||
|
<data name="strCheckboxReconnectWhenReady" xml:space="preserve">
|
||||||
|
<value>Reconectar quando estiver pronto</value>
|
||||||
|
</data>
|
||||||
|
<data name="strCheckboxUpdateUseProxy" xml:space="preserve">
|
||||||
|
<value>Usar um servidor proxy para se conectar</value>
|
||||||
|
</data>
|
||||||
|
<data name="strCheckboxUsername" xml:space="preserve">
|
||||||
|
<value>Nome de usuário</value>
|
||||||
|
</data>
|
||||||
|
<data name="strCheckboxWaitForExit" xml:space="preserve">
|
||||||
|
<value>Esperar para sair</value>
|
||||||
|
</data>
|
||||||
|
<data name="strCheckForUpdate" xml:space="preserve">
|
||||||
|
<value>Verifique novamente</value>
|
||||||
|
</data>
|
||||||
|
<data name="strCheckForUpdatesOnStartup" xml:space="preserve">
|
||||||
|
<value>Verificar se há atualizações e anúncios na inicialização</value>
|
||||||
|
</data>
|
||||||
|
<data name="strCheckNow" xml:space="preserve">
|
||||||
|
<value>Verificar agora</value>
|
||||||
|
</data>
|
||||||
|
<data name="strClosedPorts" xml:space="preserve">
|
||||||
|
<value>Portas fechadas</value>
|
||||||
|
</data>
|
||||||
|
<data name="strCollapseAllFolders" xml:space="preserve">
|
||||||
|
<value>Recolher todas as pastas</value>
|
||||||
|
</data>
|
||||||
|
<data name="strColumnArguments" xml:space="preserve">
|
||||||
|
<value>Argumentos</value>
|
||||||
|
</data>
|
||||||
|
<data name="strColumnDisplayName" xml:space="preserve">
|
||||||
|
<value>Nome de exibição</value>
|
||||||
|
</data>
|
||||||
|
<data name="strColumnFilename" xml:space="preserve">
|
||||||
|
<value>Nome do arquivo</value>
|
||||||
|
</data>
|
||||||
|
<data name="strColumnHostnameIP" xml:space="preserve">
|
||||||
|
<value>HostName/IP</value>
|
||||||
|
</data>
|
||||||
|
<data name="strColumnMessage" xml:space="preserve">
|
||||||
|
<value>Mensagem</value>
|
||||||
|
</data>
|
||||||
|
<data name="strColumnUsername" xml:space="preserve">
|
||||||
|
<value>Nome de usuário</value>
|
||||||
|
</data>
|
||||||
|
<data name="strColumnWaitForExit" xml:space="preserve">
|
||||||
|
<value>Esperar para sair</value>
|
||||||
|
</data>
|
||||||
|
<data name="strConfigPropertyGridValueFailed" xml:space="preserve">
|
||||||
|
<value>pGrid_PopertyValueChanged falhou!</value>
|
||||||
|
</data>
|
||||||
|
</root>
|
||||||
@@ -1856,9 +1856,6 @@ Descrição do erro: {1}</value>
|
|||||||
<data name="strSSHTransferEndFailed" xml:space="preserve">
|
<data name="strSSHTransferEndFailed" xml:space="preserve">
|
||||||
<value>SSH transferência final (interface do usuário.Window.SSHTransfer) falhou!</value>
|
<value>SSH transferência final (interface do usuário.Window.SSHTransfer) falhou!</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="strSSHTransferFailed" xml:space="preserve">
|
|
||||||
<value>Transferência</value>
|
|
||||||
</data>
|
|
||||||
<data name="strStartIP" xml:space="preserve">
|
<data name="strStartIP" xml:space="preserve">
|
||||||
<value>IP de início</value>
|
<value>IP de início</value>
|
||||||
</data>
|
</data>
|
||||||
|
|||||||
@@ -105,15 +105,15 @@
|
|||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
</xsd:element>
|
</xsd:element>
|
||||||
</xsd:schema>
|
</xsd:schema>
|
||||||
|
<resheader name="reader">
|
||||||
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
<resheader name="resmimetype">
|
<resheader name="resmimetype">
|
||||||
<value>text/microsoft-resx</value>
|
<value>text/microsoft-resx</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
<resheader name="version">
|
<resheader name="version">
|
||||||
<value>2.0</value>
|
<value>2.0</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
<resheader name="reader">
|
|
||||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="writer">
|
<resheader name="writer">
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
@@ -150,6 +150,9 @@
|
|||||||
<data name="strAlwaysShowPanelSelection" xml:space="preserve">
|
<data name="strAlwaysShowPanelSelection" xml:space="preserve">
|
||||||
<value>Always show panel selection dialog when opening connections</value>
|
<value>Always show panel selection dialog when opening connections</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="strAlwaysShowPanelTabs" xml:space="preserve">
|
||||||
|
<value>Always show panel tabs</value>
|
||||||
|
</data>
|
||||||
<data name="strAlwaysShowSysTrayIcon" xml:space="preserve">
|
<data name="strAlwaysShowSysTrayIcon" xml:space="preserve">
|
||||||
<value>Always show notification area icon</value>
|
<value>Always show notification area icon</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -181,7 +184,7 @@
|
|||||||
<value>Minutes (0 means disabled)</value>
|
<value>Minutes (0 means disabled)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="strAvailableVersion" xml:space="preserve">
|
<data name="strAvailableVersion" xml:space="preserve">
|
||||||
<value>Current Version</value>
|
<value>Latest version</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="strButtonBrowse" xml:space="preserve">
|
<data name="strButtonBrowse" xml:space="preserve">
|
||||||
<value>&Browse...</value>
|
<value>&Browse...</value>
|
||||||
@@ -281,10 +284,10 @@ Please use File - Load Connections for normal connection files!</value>
|
|||||||
<value>Check succeeded!</value>
|
<value>Check succeeded!</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="strCcEOLFailed" xml:space="preserve">
|
<data name="strCcEOLFailed" xml:space="preserve">
|
||||||
<value>The (RDP) Sessions feature requires that you have a registered copy of eolwtscom.dll on your system.
|
<value>The (RDP) Sessions feature requires that you have a copy of eolwtscom.dll registered on your system.
|
||||||
mRemoteNG ships with this component but will not register it automatically unless you run the setup package.
|
mRemoteNG ships with this component but it is not registered automatically if you do not use the mRemoteNG Installer.
|
||||||
To do register it manually do this: Open up the run dialog (Start - Run) and enter the following: regsvr32 "c:\Program Files\mRemoteNG\eolwtscom.dll" (Where c:\Program Files\mRemoteNG\ is the path to your mRemoteNG installation).
|
To register it manually, run the following command from an elevated command prompt: regsvr32 "C:\Program Files\mRemoteNG\eolwtscom.dll" (where C:\Program Files\mRemoteNG\ is the path to your mRemoteNG installation).
|
||||||
If you are still not able to pass this check or use the (RDP) Sessions feature in mRemoteNG please consult the mRemoteNG Forum at http://forum.mremoteng.org/</value>
|
If this check still fails or you are unable to use the (RDP) Sessions feature, please consult the mRemoteNG Forum at http://forum.mremoteng.org/.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="strCcEOLOK" xml:space="preserve">
|
<data name="strCcEOLOK" xml:space="preserve">
|
||||||
<value>EOLWTSCOM was found and seems to be registered properly.</value>
|
<value>EOLWTSCOM was found and seems to be registered properly.</value>
|
||||||
@@ -319,9 +322,8 @@ Please make sure that either you have the Putty.exe in your mRemoteNG directory
|
|||||||
<value>The PuTTY executable was found and should be ready to use.</value>
|
<value>The PuTTY executable was found and should be ready to use.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="strCcRDPFailed" xml:space="preserve">
|
<data name="strCcRDPFailed" xml:space="preserve">
|
||||||
<value>For RDP to work properly you need to have at least Remote Desktop Connection (Terminal Services Client) 6.1 installed. You can get it here: http://support.microsoft.com/kb/951616
|
<value>For RDP to work properly you need to have at least Remote Desktop Connection (Terminal Services) Client 6.0 installed. You can download it here: http://support.microsoft.com/kb/925876
|
||||||
If you have RDP 6.1 installed and the check still fails, try to register mstscax.dll manually. To do this open up the run dialog (Start - Run) and enter the following: regsvr32 "c:\windows\system32\mstscax.dll" (Where c:\ is your system drive).
|
If this check still fails or you are unable to use RDP, please consult the mRemoteNG Forum at http://forum.mremoteng.org/.</value>
|
||||||
If you still have trouble getting RDP to work please consult the mRemoteNG Forum at http://forum.mremoteng.org/</value>
|
|
||||||
</data>
|
</data>
|
||||||
<data name="strCcRDPOK" xml:space="preserve">
|
<data name="strCcRDPOK" xml:space="preserve">
|
||||||
<value>All RDP components were found and seem to be registered properly.
|
<value>All RDP components were found and seem to be registered properly.
|
||||||
@@ -411,9 +413,24 @@ VncSharpNG Control Version {0}</value>
|
|||||||
<data name="strColumnWaitForExit" xml:space="preserve">
|
<data name="strColumnWaitForExit" xml:space="preserve">
|
||||||
<value>Wait For Exit</value>
|
<value>Wait For Exit</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="strCommandExitProgram" xml:space="preserve">
|
||||||
|
<value>E&xit {0}</value>
|
||||||
|
</data>
|
||||||
<data name="strCommandLineArgsCouldNotBeParsed" xml:space="preserve">
|
<data name="strCommandLineArgsCouldNotBeParsed" xml:space="preserve">
|
||||||
<value>Couldn't parse command line args!</value>
|
<value>Couldn't parse command line args!</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="strCommandOpenConnectionFile" xml:space="preserve">
|
||||||
|
<value>&Open a connection file</value>
|
||||||
|
</data>
|
||||||
|
<data name="strCommandTryAgain" xml:space="preserve">
|
||||||
|
<value>&Try again</value>
|
||||||
|
</data>
|
||||||
|
<data name="strCompatibilityLenovoAutoScrollUtilityDetected" xml:space="preserve">
|
||||||
|
<value>{0} has detected the Lenovo Auto Scroll Utility running on this system. This utility is known to cause problems with {0}. It is recommended that you disable or uninstall it.</value>
|
||||||
|
</data>
|
||||||
|
<data name="strCompatibilityProblemDetected" xml:space="preserve">
|
||||||
|
<value>Compatibility problem detected</value>
|
||||||
|
</data>
|
||||||
<data name="strComponentsCheck" xml:space="preserve">
|
<data name="strComponentsCheck" xml:space="preserve">
|
||||||
<value>Components Check</value>
|
<value>Components Check</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -543,9 +560,15 @@ Starting with new connections file.</value>
|
|||||||
<data name="strCouldNotCreateNewConnectionsFile" xml:space="preserve">
|
<data name="strCouldNotCreateNewConnectionsFile" xml:space="preserve">
|
||||||
<value>Couldn't create new connections file!</value>
|
<value>Couldn't create new connections file!</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="strCouldNotFindToolStripInFilteredPropertyGrid" xml:space="preserve">
|
||||||
|
<value>Could not find ToolStrip control in FilteredPropertyGrid.</value>
|
||||||
|
</data>
|
||||||
<data name="strCurrentVersion" xml:space="preserve">
|
<data name="strCurrentVersion" xml:space="preserve">
|
||||||
<value>Installed version</value>
|
<value>Installed version</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="strDefaultTheme" xml:space="preserve">
|
||||||
|
<value>Default Theme</value>
|
||||||
|
</data>
|
||||||
<data name="strDetect" xml:space="preserve">
|
<data name="strDetect" xml:space="preserve">
|
||||||
<value>Detect</value>
|
<value>Detect</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -609,6 +632,9 @@ Starting with new connections file.</value>
|
|||||||
<data name="strErrorConnectionListSaveFailed" xml:space="preserve">
|
<data name="strErrorConnectionListSaveFailed" xml:space="preserve">
|
||||||
<value>The connection list could not be saved.</value>
|
<value>The connection list could not be saved.</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="strErrorCouldNotLaunchPutty" xml:space="preserve">
|
||||||
|
<value>PuTTY could not be launched.</value>
|
||||||
|
</data>
|
||||||
<data name="strErrorDecryptionFailed" xml:space="preserve">
|
<data name="strErrorDecryptionFailed" xml:space="preserve">
|
||||||
<value>Decryption failed. {0}</value>
|
<value>Decryption failed. {0}</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -751,6 +777,9 @@ See the Microsoft Support article at http://support.microsoft.com/kb/811833 for
|
|||||||
<data name="strIcaSetResolutionFailed" xml:space="preserve">
|
<data name="strIcaSetResolutionFailed" xml:space="preserve">
|
||||||
<value>ICA Set Resolution Failed!</value>
|
<value>ICA Set Resolution Failed!</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="strIdentifyQuickConnectTabs" xml:space="preserve">
|
||||||
|
<value>Identify quick connect tabs by adding the prefix "Quick:"</value>
|
||||||
|
</data>
|
||||||
<data name="strImportAD" xml:space="preserve">
|
<data name="strImportAD" xml:space="preserve">
|
||||||
<value>Import from Active Directory</value>
|
<value>Import from Active Directory</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -817,6 +846,9 @@ See the Microsoft Support article at http://support.microsoft.com/kb/811833 for
|
|||||||
<data name="strLabelChangeLog" xml:space="preserve">
|
<data name="strLabelChangeLog" xml:space="preserve">
|
||||||
<value>Change Log:</value>
|
<value>Change Log:</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="strLabelClosingConnections" xml:space="preserve">
|
||||||
|
<value>When closing connections:</value>
|
||||||
|
</data>
|
||||||
<data name="strLabelConnect" xml:space="preserve">
|
<data name="strLabelConnect" xml:space="preserve">
|
||||||
<value>&Connect:</value>
|
<value>&Connect:</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -887,7 +919,10 @@ See the Microsoft Support article at http://support.microsoft.com/kb/811833 for
|
|||||||
<value>{0} must be restarted before changes to the language will take effect.</value>
|
<value>{0} must be restarted before changes to the language will take effect.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="strLoadFromSqlFailed" xml:space="preserve">
|
<data name="strLoadFromSqlFailed" xml:space="preserve">
|
||||||
<value>Load From SQL failed!</value>
|
<value>Load from SQL failed</value>
|
||||||
|
</data>
|
||||||
|
<data name="strLoadFromSqlFailedContent" xml:space="preserve">
|
||||||
|
<value>The connection information could not be loaded from the SQL server.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="strLoadFromXmlFailed" xml:space="preserve">
|
<data name="strLoadFromXmlFailed" xml:space="preserve">
|
||||||
<value>Load From XML failed!</value>
|
<value>Load From XML failed!</value>
|
||||||
@@ -1018,6 +1053,15 @@ See the Microsoft Support article at http://support.microsoft.com/kb/811833 for
|
|||||||
<data name="strMenuNotifications" xml:space="preserve">
|
<data name="strMenuNotifications" xml:space="preserve">
|
||||||
<value>Notifications</value>
|
<value>Notifications</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="strMenuNotificationsCopyAll" xml:space="preserve">
|
||||||
|
<value>Copy All</value>
|
||||||
|
</data>
|
||||||
|
<data name="strMenuNotificationsDelete" xml:space="preserve">
|
||||||
|
<value>Delete</value>
|
||||||
|
</data>
|
||||||
|
<data name="strMenuNotificationsDeleteAll" xml:space="preserve">
|
||||||
|
<value>Delete All</value>
|
||||||
|
</data>
|
||||||
<data name="strMenuOpenConnectionFile" xml:space="preserve">
|
<data name="strMenuOpenConnectionFile" xml:space="preserve">
|
||||||
<value>Open Connection File...</value>
|
<value>Open Connection File...</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -1072,12 +1116,18 @@ See the Microsoft Support article at http://support.microsoft.com/kb/811833 for
|
|||||||
<data name="strMenuSendSpecialKeys" xml:space="preserve">
|
<data name="strMenuSendSpecialKeys" xml:space="preserve">
|
||||||
<value>Send Special Keys (VNC)</value>
|
<value>Send Special Keys (VNC)</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="strMenuSessionRetrieve" xml:space="preserve">
|
||||||
|
<value>Retrieve</value>
|
||||||
|
</data>
|
||||||
<data name="strMenuSessions" xml:space="preserve">
|
<data name="strMenuSessions" xml:space="preserve">
|
||||||
<value>Sessions</value>
|
<value>Sessions</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="strMenuSessionsAndScreenshots" xml:space="preserve">
|
<data name="strMenuSessionsAndScreenshots" xml:space="preserve">
|
||||||
<value>Sessions and Screenshots</value>
|
<value>Sessions and Screenshots</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="strMenuShowHelpText" xml:space="preserve">
|
||||||
|
<value>&Show Help Text</value>
|
||||||
|
</data>
|
||||||
<data name="strMenuShowText" xml:space="preserve">
|
<data name="strMenuShowText" xml:space="preserve">
|
||||||
<value>Show Text</value>
|
<value>Show Text</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -1172,6 +1222,18 @@ If you run into such an error, please create a new connection file!</value>
|
|||||||
<data name="strOpenPorts" xml:space="preserve">
|
<data name="strOpenPorts" xml:space="preserve">
|
||||||
<value>Open Ports</value>
|
<value>Open Ports</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="strOptionsProxyTesting" xml:space="preserve">
|
||||||
|
<value>Testing...</value>
|
||||||
|
</data>
|
||||||
|
<data name="strOptionsTabTheme" xml:space="preserve">
|
||||||
|
<value>Theme</value>
|
||||||
|
</data>
|
||||||
|
<data name="strOptionsThemeButtonDelete" xml:space="preserve">
|
||||||
|
<value>&Delete</value>
|
||||||
|
</data>
|
||||||
|
<data name="strOptionsThemeButtonNew" xml:space="preserve">
|
||||||
|
<value>&New</value>
|
||||||
|
</data>
|
||||||
<data name="strPanelName" xml:space="preserve">
|
<data name="strPanelName" xml:space="preserve">
|
||||||
<value>Panel Name</value>
|
<value>Panel Name</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -1199,6 +1261,9 @@ If you run into such an error, please create a new connection file!</value>
|
|||||||
<data name="strPropertyDescriptionAuthenticationMode" xml:space="preserve">
|
<data name="strPropertyDescriptionAuthenticationMode" xml:space="preserve">
|
||||||
<value>Select how you want to authenticate against the VNC server.</value>
|
<value>Select how you want to authenticate against the VNC server.</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="strPropertyDescriptionAutomaticResize" xml:space="preserve">
|
||||||
|
<value>Select whether to automatically resize the connection when the window is resized or when fullscreen mode is toggled. Requires RDC 8.0 or higher.</value>
|
||||||
|
</data>
|
||||||
<data name="strPropertyDescriptionCacheBitmaps" xml:space="preserve">
|
<data name="strPropertyDescriptionCacheBitmaps" xml:space="preserve">
|
||||||
<value>Select whether to use bitmap caching or not.</value>
|
<value>Select whether to use bitmap caching or not.</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -1244,6 +1309,9 @@ If you run into such an error, please create a new connection file!</value>
|
|||||||
<data name="strPropertyDescriptionIcon" xml:space="preserve">
|
<data name="strPropertyDescriptionIcon" xml:space="preserve">
|
||||||
<value>Choose a icon that will be displayed when connected to the host.</value>
|
<value>Choose a icon that will be displayed when connected to the host.</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="strPropertyDescriptionLoadBalanceInfo" xml:space="preserve">
|
||||||
|
<value>Specifies the load balancing information for use by load balancing routers to choose the best server.</value>
|
||||||
|
</data>
|
||||||
<data name="strPropertyDescriptionMACAddress" xml:space="preserve">
|
<data name="strPropertyDescriptionMACAddress" xml:space="preserve">
|
||||||
<value>Enter the MAC address of the remote host if you wish to use it in an external tool.</value>
|
<value>Enter the MAC address of the remote host if you wish to use it in an external tool.</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -1349,6 +1417,9 @@ If you run into such an error, please create a new connection file!</value>
|
|||||||
<data name="strPropertyNameAuthenticationMode" xml:space="preserve">
|
<data name="strPropertyNameAuthenticationMode" xml:space="preserve">
|
||||||
<value>Authentication Mode</value>
|
<value>Authentication Mode</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="strPropertyNameAutomaticResize" xml:space="preserve">
|
||||||
|
<value>Automatic Resize</value>
|
||||||
|
</data>
|
||||||
<data name="strPropertyNameCacheBitmaps" xml:space="preserve">
|
<data name="strPropertyNameCacheBitmaps" xml:space="preserve">
|
||||||
<value>Cache Bitmaps</value>
|
<value>Cache Bitmaps</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -1394,6 +1465,9 @@ If you run into such an error, please create a new connection file!</value>
|
|||||||
<data name="strPropertyNameIcon" xml:space="preserve">
|
<data name="strPropertyNameIcon" xml:space="preserve">
|
||||||
<value>Icon</value>
|
<value>Icon</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="strPropertyNameLoadBalanceInfo" xml:space="preserve">
|
||||||
|
<value>Load Balance Info</value>
|
||||||
|
</data>
|
||||||
<data name="strPropertyNameMACAddress" xml:space="preserve">
|
<data name="strPropertyNameMACAddress" xml:space="preserve">
|
||||||
<value>MAC Address</value>
|
<value>MAC Address</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -1532,6 +1606,12 @@ Message:
|
|||||||
<data name="strPuttyResizeFailed" xml:space="preserve">
|
<data name="strPuttyResizeFailed" xml:space="preserve">
|
||||||
<value>Putty Resize Failed!</value>
|
<value>Putty Resize Failed!</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="strPuttySavedSessionsRootName" xml:space="preserve">
|
||||||
|
<value>PuTTY Saved Sessions</value>
|
||||||
|
</data>
|
||||||
|
<data name="strPuttySessionSettings" xml:space="preserve">
|
||||||
|
<value>PuTTY Session Settings</value>
|
||||||
|
</data>
|
||||||
<data name="strPuttySettings" xml:space="preserve">
|
<data name="strPuttySettings" xml:space="preserve">
|
||||||
<value>PuTTY Settings</value>
|
<value>PuTTY Settings</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -1562,6 +1642,18 @@ Message:
|
|||||||
<data name="strQuickConnectHistoryExistsFailed" xml:space="preserve">
|
<data name="strQuickConnectHistoryExistsFailed" xml:space="preserve">
|
||||||
<value>Quick Connect History Exists Failed!</value>
|
<value>Quick Connect History Exists Failed!</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="strRadioCloseWarnAll" xml:space="preserve">
|
||||||
|
<value>&Warn me when closing connections</value>
|
||||||
|
</data>
|
||||||
|
<data name="strRadioCloseWarnExit" xml:space="preserve">
|
||||||
|
<value>Warn me only when e&xiting mRemoteNG</value>
|
||||||
|
</data>
|
||||||
|
<data name="strRadioCloseWarnMultiple" xml:space="preserve">
|
||||||
|
<value>Warn me only when closing &multiple connections</value>
|
||||||
|
</data>
|
||||||
|
<data name="strRadioCloseWarnNever" xml:space="preserve">
|
||||||
|
<value>Do &not warn me when closing connections</value>
|
||||||
|
</data>
|
||||||
<data name="strRAW" xml:space="preserve">
|
<data name="strRAW" xml:space="preserve">
|
||||||
<value>RAW</value>
|
<value>RAW</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -1677,7 +1769,7 @@ Message:
|
|||||||
<value>GetSessions failed!</value>
|
<value>GetSessions failed!</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="strRdpOpenConnectionFailed" xml:space="preserve">
|
<data name="strRdpOpenConnectionFailed" xml:space="preserve">
|
||||||
<value>Open RDP Connectin failed!</value>
|
<value>Open RDP Connection failed!</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="strRdpReconnectCount" xml:space="preserve">
|
<data name="strRdpReconnectCount" xml:space="preserve">
|
||||||
<value>RDP reconnection count:</value>
|
<value>RDP reconnection count:</value>
|
||||||
@@ -1778,6 +1870,9 @@ Message:
|
|||||||
<data name="strScreenshots" xml:space="preserve">
|
<data name="strScreenshots" xml:space="preserve">
|
||||||
<value>Screenshots</value>
|
<value>Screenshots</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="strSearchPrompt" xml:space="preserve">
|
||||||
|
<value>Search</value>
|
||||||
|
</data>
|
||||||
<data name="strSendTo" xml:space="preserve">
|
<data name="strSendTo" xml:space="preserve">
|
||||||
<value>Send To...</value>
|
<value>Send To...</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -1863,7 +1958,7 @@ Message:
|
|||||||
<value>SSH Transfer End (UI.Window.SSHTransfer) failed!</value>
|
<value>SSH Transfer End (UI.Window.SSHTransfer) failed!</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="strSSHTransferFailed" xml:space="preserve">
|
<data name="strSSHTransferFailed" xml:space="preserve">
|
||||||
<value>Transfer</value>
|
<value>SSH transfer failed.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="strStartIP" xml:space="preserve">
|
<data name="strStartIP" xml:space="preserve">
|
||||||
<value>Start IP</value>
|
<value>Start IP</value>
|
||||||
@@ -1898,216 +1993,14 @@ Message:
|
|||||||
<data name="strTheFollowing" xml:space="preserve">
|
<data name="strTheFollowing" xml:space="preserve">
|
||||||
<value>The following:</value>
|
<value>The following:</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="strTitleError" xml:space="preserve">
|
|
||||||
<value>Error ({0})</value>
|
|
||||||
</data>
|
|
||||||
<data name="strTitleInformation" xml:space="preserve">
|
|
||||||
<value>Information ({0})</value>
|
|
||||||
</data>
|
|
||||||
<data name="strTitlePassword" xml:space="preserve">
|
|
||||||
<value>Password</value>
|
|
||||||
</data>
|
|
||||||
<data name="strTitleSelectPanel" xml:space="preserve">
|
|
||||||
<value>Select Panel</value>
|
|
||||||
</data>
|
|
||||||
<data name="strTitleWarning" xml:space="preserve">
|
|
||||||
<value>Warning ({0})</value>
|
|
||||||
</data>
|
|
||||||
<data name="strTransfer" xml:space="preserve">
|
|
||||||
<value>Transfer</value>
|
|
||||||
</data>
|
|
||||||
<data name="strTransferFailed" xml:space="preserve">
|
|
||||||
<value>Transfer failed!</value>
|
|
||||||
</data>
|
|
||||||
<data name="strTryIntegrate" xml:space="preserve">
|
|
||||||
<value>Try to integrate</value>
|
|
||||||
</data>
|
|
||||||
<data name="strType" xml:space="preserve">
|
|
||||||
<value>Type</value>
|
|
||||||
</data>
|
|
||||||
<data name="strUltraVncRepeater" xml:space="preserve">
|
|
||||||
<value>Ultra VNC Repeater</value>
|
|
||||||
</data>
|
|
||||||
<data name="strUltraVNCSCListeningPort" xml:space="preserve">
|
|
||||||
<value>UltraVNC SingleClick port:</value>
|
|
||||||
</data>
|
|
||||||
<data name="strUncheckProperties" xml:space="preserve">
|
|
||||||
<value>Uncheck the properties you want not to be saved!</value>
|
|
||||||
</data>
|
|
||||||
<data name="strUpdateAvailable" xml:space="preserve">
|
|
||||||
<value>mRemoteNG requires an update</value>
|
|
||||||
</data>
|
|
||||||
<data name="strUpdateCheck" xml:space="preserve">
|
|
||||||
<value>mRemoteNG can periodically connect to the mRemoteNG website to check for updates and product announcements.</value>
|
|
||||||
</data>
|
|
||||||
<data name="strUpdateCheckCompleteFailed" xml:space="preserve">
|
|
||||||
<value>Check for update completion failed!</value>
|
|
||||||
</data>
|
|
||||||
<data name="strUpdateCheckFailed" xml:space="preserve">
|
|
||||||
<value>Check For Update failed!</value>
|
|
||||||
</data>
|
|
||||||
<data name="strUpdateCheckPortableEdition" xml:space="preserve">
|
|
||||||
<value>mRemoteNG Portable Edition does not currently support automatic updates.</value>
|
|
||||||
</data>
|
|
||||||
<data name="strUpdateDeleteFailed" xml:space="preserve">
|
|
||||||
<value>Error deleting update file!</value>
|
|
||||||
</data>
|
|
||||||
<data name="strUpdateDownloadComplete" xml:space="preserve">
|
|
||||||
<value>Download complete!
|
|
||||||
mRemoteNG will now quit and begin with the installation.</value>
|
|
||||||
</data>
|
|
||||||
<data name="strUpdateDownloadCompleteFailed" xml:space="preserve">
|
|
||||||
<value>Download complete failed!</value>
|
|
||||||
</data>
|
|
||||||
<data name="strUpdateDownloadFailed" xml:space="preserve">
|
|
||||||
<value>Download Update failed!</value>
|
|
||||||
</data>
|
|
||||||
<data name="strUpdateFrequencyCustom" xml:space="preserve">
|
|
||||||
<value>Every {0} days</value>
|
|
||||||
</data>
|
|
||||||
<data name="strUpdateFrequencyDaily" xml:space="preserve">
|
|
||||||
<value>Daily</value>
|
|
||||||
</data>
|
|
||||||
<data name="strUpdateFrequencyMonthly" xml:space="preserve">
|
|
||||||
<value>Monthly</value>
|
|
||||||
</data>
|
|
||||||
<data name="strUpdateFrequencyWeekly" xml:space="preserve">
|
|
||||||
<value>Weekly</value>
|
|
||||||
</data>
|
|
||||||
<data name="strUpdateStartFailed" xml:space="preserve">
|
|
||||||
<value>Error starting update!</value>
|
|
||||||
</data>
|
|
||||||
<data name="strUseDifferentUsernameAndPassword" xml:space="preserve">
|
|
||||||
<value>Use a different username and password</value>
|
|
||||||
</data>
|
|
||||||
<data name="strUseOnlyErrorsAndInfosPanel" xml:space="preserve">
|
|
||||||
<value>Use only Notifications panel (no messagebox popups)</value>
|
|
||||||
</data>
|
|
||||||
<data name="strUser" xml:space="preserve">
|
|
||||||
<value>User</value>
|
|
||||||
</data>
|
|
||||||
<data name="strUseSameUsernameAndPassword" xml:space="preserve">
|
|
||||||
<value>Use the same username and password</value>
|
|
||||||
</data>
|
|
||||||
<data name="strUseSmartCard" xml:space="preserve">
|
|
||||||
<value>Use a smart card</value>
|
|
||||||
</data>
|
|
||||||
<data name="strUseSQLServer" xml:space="preserve">
|
|
||||||
<value>Use SQL Server to load && save connections</value>
|
|
||||||
</data>
|
|
||||||
<data name="strVersion" xml:space="preserve">
|
|
||||||
<value>Version</value>
|
|
||||||
</data>
|
|
||||||
<data name="strVnc" xml:space="preserve">
|
|
||||||
<value>VNC</value>
|
|
||||||
</data>
|
|
||||||
<data name="strVncConnectionDisconnectFailed" xml:space="preserve">
|
|
||||||
<value>VNC disconnect failed!</value>
|
|
||||||
</data>
|
|
||||||
<data name="strVncConnectionOpenFailed" xml:space="preserve">
|
|
||||||
<value>Opening connection failed!</value>
|
|
||||||
</data>
|
|
||||||
<data name="strVncRefreshFailed" xml:space="preserve">
|
|
||||||
<value>VNC Refresh Screen Failed!</value>
|
|
||||||
</data>
|
|
||||||
<data name="strVncSendSpecialKeysFailed" xml:space="preserve">
|
|
||||||
<value>VNC SendSpecialKeys failed!</value>
|
|
||||||
</data>
|
|
||||||
<data name="strVncSetEventHandlersFailed" xml:space="preserve">
|
|
||||||
<value>VNC Set Event Handlers failed!</value>
|
|
||||||
</data>
|
|
||||||
<data name="strVncSetPropsFailed" xml:space="preserve">
|
|
||||||
<value>VNC Set Props Failed!</value>
|
|
||||||
</data>
|
|
||||||
<data name="strVncStartChatFailed" xml:space="preserve">
|
|
||||||
<value>VNC Start Chat Failed!</value>
|
|
||||||
</data>
|
|
||||||
<data name="strVncToggleSmartSizeFailed" xml:space="preserve">
|
|
||||||
<value>VNC Toggle SmartSize Failed!</value>
|
|
||||||
</data>
|
|
||||||
<data name="strVncToggleViewOnlyFailed" xml:space="preserve">
|
|
||||||
<value>VNC Toggle ViewOnly Failed!</value>
|
|
||||||
</data>
|
|
||||||
<data name="strWarnIfAuthFails" xml:space="preserve">
|
|
||||||
<value>Warn me if authentication fails</value>
|
|
||||||
</data>
|
|
||||||
<data name="strWarnings" xml:space="preserve">
|
|
||||||
<value>Warnings</value>
|
|
||||||
</data>
|
|
||||||
<data name="strWeifenLuoAttribution" xml:space="preserve">
|
|
||||||
<value>Uses the DockPanel Suite by [Weifen Luo]</value>
|
|
||||||
</data>
|
|
||||||
<data name="strWeifenLuoAttributionURL" xml:space="preserve">
|
|
||||||
<value>http://sourceforge.net/projects/dockpanelsuite/</value>
|
|
||||||
</data>
|
|
||||||
<data name="strWriteLogFile" xml:space="preserve">
|
|
||||||
<value>Write log file (mRemoteNG.log)</value>
|
|
||||||
</data>
|
|
||||||
<data name="strXULrunnerPath" xml:space="preserve">
|
|
||||||
<value>XULrunner path:</value>
|
|
||||||
</data>
|
|
||||||
<data name="strYes" xml:space="preserve">
|
|
||||||
<value>Yes</value>
|
|
||||||
</data>
|
|
||||||
<data name="strCouldNotFindToolStripInFilteredPropertyGrid" xml:space="preserve">
|
|
||||||
<value>Could not find ToolStrip control in FilteredPropertyGrid.</value>
|
|
||||||
</data>
|
|
||||||
<data name="strAlwaysShowPanelTabs" xml:space="preserve">
|
|
||||||
<value>Always show panel tabs</value>
|
|
||||||
</data>
|
|
||||||
<data name="strIdentifyQuickConnectTabs" xml:space="preserve">
|
|
||||||
<value>Identify quick connect tabs by adding the prefix "Quick:"</value>
|
|
||||||
</data>
|
|
||||||
<data name="strSearchPrompt" xml:space="preserve">
|
|
||||||
<value>Search</value>
|
|
||||||
</data>
|
|
||||||
<data name="strMenuNotificationsCopyAll" xml:space="preserve">
|
|
||||||
<value>Copy All</value>
|
|
||||||
</data>
|
|
||||||
<data name="strMenuNotificationsDelete" xml:space="preserve">
|
|
||||||
<value>Delete</value>
|
|
||||||
</data>
|
|
||||||
<data name="strMenuNotificationsDeleteAll" xml:space="preserve">
|
|
||||||
<value>Delete All</value>
|
|
||||||
</data>
|
|
||||||
<data name="strLabelClosingConnections" xml:space="preserve">
|
|
||||||
<value>When closing connections:</value>
|
|
||||||
</data>
|
|
||||||
<data name="strRadioCloseWarnAll" xml:space="preserve">
|
|
||||||
<value>&Warn me when closing connections</value>
|
|
||||||
</data>
|
|
||||||
<data name="strRadioCloseWarnExit" xml:space="preserve">
|
|
||||||
<value>Warn me only when e&xiting mRemoteNG</value>
|
|
||||||
</data>
|
|
||||||
<data name="strRadioCloseWarnMultiple" xml:space="preserve">
|
|
||||||
<value>Warn me only when closing &multiple connections</value>
|
|
||||||
</data>
|
|
||||||
<data name="strRadioCloseWarnNever" xml:space="preserve">
|
|
||||||
<value>Do &not warn me when closing connections</value>
|
|
||||||
</data>
|
|
||||||
<data name="strThemeCategoryGeneral" xml:space="preserve">
|
|
||||||
<value>General</value>
|
|
||||||
</data>
|
|
||||||
<data name="strThemeCategoryConfigPanel" xml:space="preserve">
|
<data name="strThemeCategoryConfigPanel" xml:space="preserve">
|
||||||
<value>Config Panel</value>
|
<value>Config Panel</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="strThemeCategoryConnectionsPanel" xml:space="preserve">
|
<data name="strThemeCategoryConnectionsPanel" xml:space="preserve">
|
||||||
<value>Connections Panel</value>
|
<value>Connections Panel</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="strDefaultTheme" xml:space="preserve">
|
<data name="strThemeCategoryGeneral" xml:space="preserve">
|
||||||
<value>Default Theme</value>
|
<value>General</value>
|
||||||
</data>
|
|
||||||
<data name="strOptionsTabTheme" xml:space="preserve">
|
|
||||||
<value>Theme</value>
|
|
||||||
</data>
|
|
||||||
<data name="strOptionsThemeButtonDelete" xml:space="preserve">
|
|
||||||
<value>&Delete</value>
|
|
||||||
</data>
|
|
||||||
<data name="strOptionsThemeButtonNew" xml:space="preserve">
|
|
||||||
<value>&New</value>
|
|
||||||
</data>
|
|
||||||
<data name="strUnnamedTheme" xml:space="preserve">
|
|
||||||
<value>Unnamed Theme</value>
|
|
||||||
</data>
|
</data>
|
||||||
<data name="strThemeDescriptionConfigPanelBackgroundColor" xml:space="preserve">
|
<data name="strThemeDescriptionConfigPanelBackgroundColor" xml:space="preserve">
|
||||||
<value>The background colour of the config panel.</value>
|
<value>The background colour of the config panel.</value>
|
||||||
@@ -2211,10 +2104,161 @@ mRemoteNG will now quit and begin with the installation.</value>
|
|||||||
<data name="strThemeNameWindowBackgroundColor" xml:space="preserve">
|
<data name="strThemeNameWindowBackgroundColor" xml:space="preserve">
|
||||||
<value>Window Background Colour</value>
|
<value>Window Background Colour</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="strMenuShowHelpText" xml:space="preserve">
|
<data name="strTitleError" xml:space="preserve">
|
||||||
<value>&Show Help Text</value>
|
<value>Error ({0})</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="strPuttySavedSessionsRootName" xml:space="preserve">
|
<data name="strTitleInformation" xml:space="preserve">
|
||||||
<value>PuTTY Saved Sessions</value>
|
<value>Information ({0})</value>
|
||||||
|
</data>
|
||||||
|
<data name="strTitlePassword" xml:space="preserve">
|
||||||
|
<value>Password</value>
|
||||||
|
</data>
|
||||||
|
<data name="strTitleSelectPanel" xml:space="preserve">
|
||||||
|
<value>Select Panel</value>
|
||||||
|
</data>
|
||||||
|
<data name="strTitleWarning" xml:space="preserve">
|
||||||
|
<value>Warning ({0})</value>
|
||||||
|
</data>
|
||||||
|
<data name="strTransfer" xml:space="preserve">
|
||||||
|
<value>Transfer</value>
|
||||||
|
</data>
|
||||||
|
<data name="strTransferFailed" xml:space="preserve">
|
||||||
|
<value>Transfer failed!</value>
|
||||||
|
</data>
|
||||||
|
<data name="strTryIntegrate" xml:space="preserve">
|
||||||
|
<value>Try to integrate</value>
|
||||||
|
</data>
|
||||||
|
<data name="strType" xml:space="preserve">
|
||||||
|
<value>Type</value>
|
||||||
|
</data>
|
||||||
|
<data name="strUltraVncRepeater" xml:space="preserve">
|
||||||
|
<value>Ultra VNC Repeater</value>
|
||||||
|
</data>
|
||||||
|
<data name="strUltraVNCSCListeningPort" xml:space="preserve">
|
||||||
|
<value>UltraVNC SingleClick port:</value>
|
||||||
|
</data>
|
||||||
|
<data name="strUncheckProperties" xml:space="preserve">
|
||||||
|
<value>Uncheck the properties you want not to be saved!</value>
|
||||||
|
</data>
|
||||||
|
<data name="strUnnamedTheme" xml:space="preserve">
|
||||||
|
<value>Unnamed Theme</value>
|
||||||
|
</data>
|
||||||
|
<data name="strUpdateAvailable" xml:space="preserve">
|
||||||
|
<value>mRemoteNG requires an update</value>
|
||||||
|
</data>
|
||||||
|
<data name="strUpdateCheck" xml:space="preserve">
|
||||||
|
<value>mRemoteNG can periodically connect to the mRemoteNG website to check for updates and product announcements.</value>
|
||||||
|
</data>
|
||||||
|
<data name="strUpdateCheckCompleteFailed" xml:space="preserve">
|
||||||
|
<value>The update information could not be downloaded.</value>
|
||||||
|
</data>
|
||||||
|
<data name="strUpdateCheckFailedLabel" xml:space="preserve">
|
||||||
|
<value>Check failed</value>
|
||||||
|
</data>
|
||||||
|
<data name="strUpdateCheckingLabel" xml:space="preserve">
|
||||||
|
<value>Checking for updates...</value>
|
||||||
|
</data>
|
||||||
|
<data name="strUpdateCheckPortableEdition" xml:space="preserve">
|
||||||
|
<value>mRemoteNG Portable Edition does not currently support automatic updates.</value>
|
||||||
|
</data>
|
||||||
|
<data name="strUpdateDownloadComplete" xml:space="preserve">
|
||||||
|
<value>Download complete!
|
||||||
|
mRemoteNG will now quit and begin with the installation.</value>
|
||||||
|
</data>
|
||||||
|
<data name="strUpdateDownloadCompleteFailed" xml:space="preserve">
|
||||||
|
<value>The update could not be downloaded.</value>
|
||||||
|
</data>
|
||||||
|
<data name="strUpdateDownloadFailed" xml:space="preserve">
|
||||||
|
<value>The update download could not be initiated.</value>
|
||||||
|
</data>
|
||||||
|
<data name="strUpdateFrequencyCustom" xml:space="preserve">
|
||||||
|
<value>Every {0} days</value>
|
||||||
|
</data>
|
||||||
|
<data name="strUpdateFrequencyDaily" xml:space="preserve">
|
||||||
|
<value>Daily</value>
|
||||||
|
</data>
|
||||||
|
<data name="strUpdateFrequencyMonthly" xml:space="preserve">
|
||||||
|
<value>Monthly</value>
|
||||||
|
</data>
|
||||||
|
<data name="strUpdateFrequencyWeekly" xml:space="preserve">
|
||||||
|
<value>Weekly</value>
|
||||||
|
</data>
|
||||||
|
<data name="strUpdateGetAnnouncementInfoFailed" xml:space="preserve">
|
||||||
|
<value>The announcement information could not be downloaded.</value>
|
||||||
|
</data>
|
||||||
|
<data name="strUpdateGetChangeLogFailed" xml:space="preserve">
|
||||||
|
<value>The change log could not be downloaded.</value>
|
||||||
|
</data>
|
||||||
|
<data name="strUseDifferentUsernameAndPassword" xml:space="preserve">
|
||||||
|
<value>Use a different username and password</value>
|
||||||
|
</data>
|
||||||
|
<data name="strUseOnlyErrorsAndInfosPanel" xml:space="preserve">
|
||||||
|
<value>Use only Notifications panel (no messagebox popups)</value>
|
||||||
|
</data>
|
||||||
|
<data name="strUser" xml:space="preserve">
|
||||||
|
<value>User</value>
|
||||||
|
</data>
|
||||||
|
<data name="strUseSameUsernameAndPassword" xml:space="preserve">
|
||||||
|
<value>Use the same username and password</value>
|
||||||
|
</data>
|
||||||
|
<data name="strUseSmartCard" xml:space="preserve">
|
||||||
|
<value>Use a smart card</value>
|
||||||
|
</data>
|
||||||
|
<data name="strUseSQLServer" xml:space="preserve">
|
||||||
|
<value>Use SQL Server to load && save connections</value>
|
||||||
|
</data>
|
||||||
|
<data name="strVersion" xml:space="preserve">
|
||||||
|
<value>Version</value>
|
||||||
|
</data>
|
||||||
|
<data name="strVnc" xml:space="preserve">
|
||||||
|
<value>VNC</value>
|
||||||
|
</data>
|
||||||
|
<data name="strVncConnectionDisconnectFailed" xml:space="preserve">
|
||||||
|
<value>VNC disconnect failed!</value>
|
||||||
|
</data>
|
||||||
|
<data name="strVncConnectionOpenFailed" xml:space="preserve">
|
||||||
|
<value>Opening connection failed!</value>
|
||||||
|
</data>
|
||||||
|
<data name="strVncRefreshFailed" xml:space="preserve">
|
||||||
|
<value>VNC Refresh Screen Failed!</value>
|
||||||
|
</data>
|
||||||
|
<data name="strVncSendSpecialKeysFailed" xml:space="preserve">
|
||||||
|
<value>VNC SendSpecialKeys failed!</value>
|
||||||
|
</data>
|
||||||
|
<data name="strVncSetEventHandlersFailed" xml:space="preserve">
|
||||||
|
<value>VNC Set Event Handlers failed!</value>
|
||||||
|
</data>
|
||||||
|
<data name="strVncSetPropsFailed" xml:space="preserve">
|
||||||
|
<value>VNC Set Props Failed!</value>
|
||||||
|
</data>
|
||||||
|
<data name="strVncStartChatFailed" xml:space="preserve">
|
||||||
|
<value>VNC Start Chat Failed!</value>
|
||||||
|
</data>
|
||||||
|
<data name="strVncToggleSmartSizeFailed" xml:space="preserve">
|
||||||
|
<value>VNC Toggle SmartSize Failed!</value>
|
||||||
|
</data>
|
||||||
|
<data name="strVncToggleViewOnlyFailed" xml:space="preserve">
|
||||||
|
<value>VNC Toggle ViewOnly Failed!</value>
|
||||||
|
</data>
|
||||||
|
<data name="strWarnIfAuthFails" xml:space="preserve">
|
||||||
|
<value>Warn me if authentication fails</value>
|
||||||
|
</data>
|
||||||
|
<data name="strWarnings" xml:space="preserve">
|
||||||
|
<value>Warnings</value>
|
||||||
|
</data>
|
||||||
|
<data name="strWeifenLuoAttribution" xml:space="preserve">
|
||||||
|
<value>Uses the DockPanel Suite by [Weifen Luo]</value>
|
||||||
|
</data>
|
||||||
|
<data name="strWeifenLuoAttributionURL" xml:space="preserve">
|
||||||
|
<value>http://sourceforge.net/projects/dockpanelsuite/</value>
|
||||||
|
</data>
|
||||||
|
<data name="strWriteLogFile" xml:space="preserve">
|
||||||
|
<value>Write log file (mRemoteNG.log)</value>
|
||||||
|
</data>
|
||||||
|
<data name="strXULrunnerPath" xml:space="preserve">
|
||||||
|
<value>XULrunner path:</value>
|
||||||
|
</data>
|
||||||
|
<data name="strYes" xml:space="preserve">
|
||||||
|
<value>Yes</value>
|
||||||
</data>
|
</data>
|
||||||
</root>
|
</root>
|
||||||
@@ -417,6 +417,12 @@
|
|||||||
<data name="strCommandLineArgsCouldNotBeParsed" xml:space="preserve">
|
<data name="strCommandLineArgsCouldNotBeParsed" xml:space="preserve">
|
||||||
<value>Невозможно разобрать аргументы командной строки!</value>
|
<value>Невозможно разобрать аргументы командной строки!</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="strCompatibilityLenovoAutoScrollUtilityDetected" xml:space="preserve">
|
||||||
|
<value>{0} обнаружено что на этой системе работает утилита Lenovo Auto Scroll. Известно, что эта утилита вызвает проблемы с {0}. Рекомендуется отключить или удалить ее.</value>
|
||||||
|
</data>
|
||||||
|
<data name="strCompatibilityProblemDetected" xml:space="preserve">
|
||||||
|
<value>Обнаружена проблема совместимости</value>
|
||||||
|
</data>
|
||||||
<data name="strComponentsCheck" xml:space="preserve">
|
<data name="strComponentsCheck" xml:space="preserve">
|
||||||
<value>Проверка компонентов</value>
|
<value>Проверка компонентов</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -1547,6 +1553,9 @@
|
|||||||
<data name="strPuttyResizeFailed" xml:space="preserve">
|
<data name="strPuttyResizeFailed" xml:space="preserve">
|
||||||
<value>Ошибка изменения размера окна Putty!</value>
|
<value>Ошибка изменения размера окна Putty!</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="strPuttySavedSessionsRootName" xml:space="preserve">
|
||||||
|
<value>Сохраненные сессии PuTTY</value>
|
||||||
|
</data>
|
||||||
<data name="strPuttySettings" xml:space="preserve">
|
<data name="strPuttySettings" xml:space="preserve">
|
||||||
<value>Настройки PuTTY</value>
|
<value>Настройки PuTTY</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -1893,7 +1902,7 @@
|
|||||||
<value>Передача по SSH завершена с ошибкой (UI.Window.SSHTransfer)!</value>
|
<value>Передача по SSH завершена с ошибкой (UI.Window.SSHTransfer)!</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="strSSHTransferFailed" xml:space="preserve">
|
<data name="strSSHTransferFailed" xml:space="preserve">
|
||||||
<value>Передача</value>
|
<value>SSH ошибка передачи.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="strStartIP" xml:space="preserve">
|
<data name="strStartIP" xml:space="preserve">
|
||||||
<value>Начальный IP</value>
|
<value>Начальный IP</value>
|
||||||
|
|||||||
@@ -1814,9 +1814,6 @@ VncSharpNG Control Version {0}</value>
|
|||||||
<data name="strSSHTransferEndFailed" xml:space="preserve">
|
<data name="strSSHTransferEndFailed" xml:space="preserve">
|
||||||
<value>Передача по SSH завершена с ошибкой (UI.Window.SSHTransfer)!</value>
|
<value>Передача по SSH завершена с ошибкой (UI.Window.SSHTransfer)!</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="strSSHTransferFailed" xml:space="preserve">
|
|
||||||
<value>Передача</value>
|
|
||||||
</data>
|
|
||||||
<data name="strStartIP" xml:space="preserve">
|
<data name="strStartIP" xml:space="preserve">
|
||||||
<value>Початковий IP</value>
|
<value>Початковий IP</value>
|
||||||
</data>
|
</data>
|
||||||
|
|||||||
@@ -1863,9 +1863,6 @@ VncSharpNG 版本 {0}</value>
|
|||||||
<data name="strSSHTransferEndFailed" xml:space="preserve">
|
<data name="strSSHTransferEndFailed" xml:space="preserve">
|
||||||
<value>SSH 传输结束(UI.Window.SSHTransfer)失败!</value>
|
<value>SSH 传输结束(UI.Window.SSHTransfer)失败!</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="strSSHTransferFailed" xml:space="preserve">
|
|
||||||
<value>传输</value>
|
|
||||||
</data>
|
|
||||||
<data name="strStartIP" xml:space="preserve">
|
<data name="strStartIP" xml:space="preserve">
|
||||||
<value>起始IP</value>
|
<value>起始IP</value>
|
||||||
</data>
|
</data>
|
||||||
|
|||||||
@@ -113,6 +113,10 @@ Namespace Messages
|
|||||||
AddToList(lvItem)
|
AddToList(lvItem)
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
|
Public Sub AddExceptionMessage(ByVal message As String, ByVal ex As Exception, Optional ByVal msgClass As MessageClass = MessageClass.ErrorMsg, Optional ByVal logOnly As Boolean = False)
|
||||||
|
AddMessage(msgClass, message & vbNewLine & Tools.Misc.GetExceptionMessageRecursive(ex), logOnly)
|
||||||
|
End Sub
|
||||||
|
|
||||||
Private Sub SwitchTimerTick(ByVal sender As Object, ByVal e As System.EventArgs)
|
Private Sub SwitchTimerTick(ByVal sender As Object, ByVal e As System.EventArgs)
|
||||||
Me.SwitchToMessage()
|
Me.SwitchToMessage()
|
||||||
Me.ECTimer.Enabled = False
|
Me.ECTimer.Enabled = False
|
||||||
|
|||||||
90
mRemoteV1/My Project/Settings.Designer.vb
generated
90
mRemoteV1/My Project/Settings.Designer.vb
generated
@@ -2080,7 +2080,7 @@ Namespace My
|
|||||||
|
|
||||||
<Global.System.Configuration.ApplicationScopedSettingAttribute(), _
|
<Global.System.Configuration.ApplicationScopedSettingAttribute(), _
|
||||||
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
|
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
|
||||||
Global.System.Configuration.DefaultSettingValueAttribute("de,en,en-US,es-AR,es,fr,it,nl,pt,pl,ru,uk,zh-CN")> _
|
Global.System.Configuration.DefaultSettingValueAttribute("de,en,en-US,es-AR,es,fr,it,nb-NO,nl,pt,pt-BR,pl,ru,uk,zh-CN")> _
|
||||||
Public ReadOnly Property SupportedUICultures() As String
|
Public ReadOnly Property SupportedUICultures() As String
|
||||||
Get
|
Get
|
||||||
Return CType(Me("SupportedUICultures"),String)
|
Return CType(Me("SupportedUICultures"),String)
|
||||||
@@ -2384,6 +2384,94 @@ Namespace My
|
|||||||
Me("PuttySavedSessionsPanel") = value
|
Me("PuttySavedSessionsPanel") = value
|
||||||
End Set
|
End Set
|
||||||
End Property
|
End Property
|
||||||
|
|
||||||
|
<Global.System.Configuration.UserScopedSettingAttribute(), _
|
||||||
|
Global.System.Configuration.SettingsProviderAttribute(GetType(mRemoteNG.Config.Settings.Providers.ChooseProvider)), _
|
||||||
|
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
|
||||||
|
Global.System.Configuration.DefaultSettingValueAttribute("True")> _
|
||||||
|
Public Property CompatibilityWarnLenovoAutoScrollUtility() As Boolean
|
||||||
|
Get
|
||||||
|
Return CType(Me("CompatibilityWarnLenovoAutoScrollUtility"),Boolean)
|
||||||
|
End Get
|
||||||
|
Set
|
||||||
|
Me("CompatibilityWarnLenovoAutoScrollUtility") = value
|
||||||
|
End Set
|
||||||
|
End Property
|
||||||
|
|
||||||
|
<Global.System.Configuration.ApplicationScopedSettingAttribute(), _
|
||||||
|
Global.System.Configuration.SettingsProviderAttribute(GetType(mRemoteNG.Config.Settings.Providers.ChooseProvider)), _
|
||||||
|
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
|
||||||
|
Global.System.Configuration.DefaultSettingValueAttribute("https://update.mremoteng.org/announcement-beta.txt")> _
|
||||||
|
Public ReadOnly Property AnnouncementAddress() As String
|
||||||
|
Get
|
||||||
|
Return CType(Me("AnnouncementAddress"),String)
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
|
||||||
|
<Global.System.Configuration.UserScopedSettingAttribute(), _
|
||||||
|
Global.System.Configuration.SettingsProviderAttribute(GetType(mRemoteNG.Config.Settings.Providers.ChooseProvider)), _
|
||||||
|
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
|
||||||
|
Global.System.Configuration.DefaultSettingValueAttribute("https://update.mremoteng.org/")> _
|
||||||
|
Public Property UpdateAddress() As String
|
||||||
|
Get
|
||||||
|
Return CType(Me("UpdateAddress"),String)
|
||||||
|
End Get
|
||||||
|
Set
|
||||||
|
Me("UpdateAddress") = value
|
||||||
|
End Set
|
||||||
|
End Property
|
||||||
|
|
||||||
|
<Global.System.Configuration.UserScopedSettingAttribute(), _
|
||||||
|
Global.System.Configuration.SettingsProviderAttribute(GetType(mRemoteNG.Config.Settings.Providers.ChooseProvider)), _
|
||||||
|
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
|
||||||
|
Global.System.Configuration.DefaultSettingValueAttribute("")> _
|
||||||
|
Public Property ConDefaultLoadBalanceInfo() As String
|
||||||
|
Get
|
||||||
|
Return CType(Me("ConDefaultLoadBalanceInfo"),String)
|
||||||
|
End Get
|
||||||
|
Set
|
||||||
|
Me("ConDefaultLoadBalanceInfo") = value
|
||||||
|
End Set
|
||||||
|
End Property
|
||||||
|
|
||||||
|
<Global.System.Configuration.UserScopedSettingAttribute(), _
|
||||||
|
Global.System.Configuration.SettingsProviderAttribute(GetType(mRemoteNG.Config.Settings.Providers.ChooseProvider)), _
|
||||||
|
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
|
||||||
|
Global.System.Configuration.DefaultSettingValueAttribute("True")> _
|
||||||
|
Public Property ConDefaultAutomaticResize() As Boolean
|
||||||
|
Get
|
||||||
|
Return CType(Me("ConDefaultAutomaticResize"),Boolean)
|
||||||
|
End Get
|
||||||
|
Set
|
||||||
|
Me("ConDefaultAutomaticResize") = value
|
||||||
|
End Set
|
||||||
|
End Property
|
||||||
|
|
||||||
|
<Global.System.Configuration.UserScopedSettingAttribute(), _
|
||||||
|
Global.System.Configuration.SettingsProviderAttribute(GetType(mRemoteNG.Config.Settings.Providers.ChooseProvider)), _
|
||||||
|
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
|
||||||
|
Global.System.Configuration.DefaultSettingValueAttribute("False")> _
|
||||||
|
Public Property InhDefaultLoadBalanceInfo() As Boolean
|
||||||
|
Get
|
||||||
|
Return CType(Me("InhDefaultLoadBalanceInfo"),Boolean)
|
||||||
|
End Get
|
||||||
|
Set
|
||||||
|
Me("InhDefaultLoadBalanceInfo") = value
|
||||||
|
End Set
|
||||||
|
End Property
|
||||||
|
|
||||||
|
<Global.System.Configuration.UserScopedSettingAttribute(), _
|
||||||
|
Global.System.Configuration.SettingsProviderAttribute(GetType(mRemoteNG.Config.Settings.Providers.ChooseProvider)), _
|
||||||
|
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
|
||||||
|
Global.System.Configuration.DefaultSettingValueAttribute("False")> _
|
||||||
|
Public Property InhDefaultAutomaticResize() As Boolean
|
||||||
|
Get
|
||||||
|
Return CType(Me("InhDefaultAutomaticResize"),Boolean)
|
||||||
|
End Get
|
||||||
|
Set
|
||||||
|
Me("InhDefaultAutomaticResize") = value
|
||||||
|
End Set
|
||||||
|
End Property
|
||||||
End Class
|
End Class
|
||||||
End Namespace
|
End Namespace
|
||||||
|
|
||||||
|
|||||||
@@ -471,7 +471,7 @@
|
|||||||
<Value Profile="(Default)" />
|
<Value Profile="(Default)" />
|
||||||
</Setting>
|
</Setting>
|
||||||
<Setting Name="SupportedUICultures" Type="System.String" Scope="Application">
|
<Setting Name="SupportedUICultures" Type="System.String" Scope="Application">
|
||||||
<Value Profile="(Default)">de,en,en-US,es-AR,es,fr,it,nl,pt,pl,ru,uk,zh-CN</Value>
|
<Value Profile="(Default)">de,en,en-US,es-AR,es,fr,it,nb-NO,nl,pt,pt-BR,pl,ru,uk,zh-CN</Value>
|
||||||
</Setting>
|
</Setting>
|
||||||
<Setting Name="ConDefaultRDGatewayHostname" Provider="mRemoteNG.Config.Settings.Providers.ChooseProvider" Type="System.String" Scope="User">
|
<Setting Name="ConDefaultRDGatewayHostname" Provider="mRemoteNG.Config.Settings.Providers.ChooseProvider" Type="System.String" Scope="User">
|
||||||
<Value Profile="(Default)" />
|
<Value Profile="(Default)" />
|
||||||
@@ -542,5 +542,26 @@
|
|||||||
<Setting Name="PuttySavedSessionsPanel" Provider="mRemoteNG.Config.Settings.Providers.ChooseProvider" Type="System.String" Scope="User">
|
<Setting Name="PuttySavedSessionsPanel" Provider="mRemoteNG.Config.Settings.Providers.ChooseProvider" Type="System.String" Scope="User">
|
||||||
<Value Profile="(Default)" />
|
<Value Profile="(Default)" />
|
||||||
</Setting>
|
</Setting>
|
||||||
|
<Setting Name="CompatibilityWarnLenovoAutoScrollUtility" Provider="mRemoteNG.Config.Settings.Providers.ChooseProvider" Type="System.Boolean" Scope="User">
|
||||||
|
<Value Profile="(Default)">True</Value>
|
||||||
|
</Setting>
|
||||||
|
<Setting Name="AnnouncementAddress" Provider="mRemoteNG.Config.Settings.Providers.ChooseProvider" Type="System.String" Scope="Application">
|
||||||
|
<Value Profile="(Default)">https://update.mremoteng.org/announcement-beta.txt</Value>
|
||||||
|
</Setting>
|
||||||
|
<Setting Name="UpdateAddress" Provider="mRemoteNG.Config.Settings.Providers.ChooseProvider" Type="System.String" Scope="User">
|
||||||
|
<Value Profile="(Default)">https://update.mremoteng.org/</Value>
|
||||||
|
</Setting>
|
||||||
|
<Setting Name="ConDefaultLoadBalanceInfo" Provider="mRemoteNG.Config.Settings.Providers.ChooseProvider" Type="System.String" Scope="User">
|
||||||
|
<Value Profile="(Default)" />
|
||||||
|
</Setting>
|
||||||
|
<Setting Name="ConDefaultAutomaticResize" Provider="mRemoteNG.Config.Settings.Providers.ChooseProvider" Type="System.Boolean" Scope="User">
|
||||||
|
<Value Profile="(Default)">True</Value>
|
||||||
|
</Setting>
|
||||||
|
<Setting Name="InhDefaultLoadBalanceInfo" Provider="mRemoteNG.Config.Settings.Providers.ChooseProvider" Type="System.Boolean" Scope="User">
|
||||||
|
<Value Profile="(Default)">False</Value>
|
||||||
|
</Setting>
|
||||||
|
<Setting Name="InhDefaultAutomaticResize" Provider="mRemoteNG.Config.Settings.Providers.ChooseProvider" Type="System.Boolean" Scope="User">
|
||||||
|
<Value Profile="(Default)">False</Value>
|
||||||
|
</Setting>
|
||||||
</Settings>
|
</Settings>
|
||||||
</SettingsFile>
|
</SettingsFile>
|
||||||
Binary file not shown.
Binary file not shown.
@@ -114,7 +114,7 @@ Namespace Themes
|
|||||||
Return _toolbarBackgroundColor
|
Return _toolbarBackgroundColor
|
||||||
End Get
|
End Get
|
||||||
Set(value As Color)
|
Set(value As Color)
|
||||||
If _toolbarBackgroundColor = value Then Return
|
If _toolbarBackgroundColor = value Or value.A < 255 Then Return
|
||||||
_toolbarBackgroundColor = value
|
_toolbarBackgroundColor = value
|
||||||
NotifyPropertyChanged("ToolbarBackgroundColor")
|
NotifyPropertyChanged("ToolbarBackgroundColor")
|
||||||
End Set
|
End Set
|
||||||
@@ -147,7 +147,7 @@ Namespace Themes
|
|||||||
Return _connectionsPanelBackgroundColor
|
Return _connectionsPanelBackgroundColor
|
||||||
End Get
|
End Get
|
||||||
Set(value As Color)
|
Set(value As Color)
|
||||||
If _connectionsPanelBackgroundColor = value Or value = Color.Transparent Then Return
|
If _connectionsPanelBackgroundColor = value Or value.A < 255 Then Return
|
||||||
_connectionsPanelBackgroundColor = value
|
_connectionsPanelBackgroundColor = value
|
||||||
NotifyPropertyChanged("ConnectionsPanelBackgroundColor")
|
NotifyPropertyChanged("ConnectionsPanelBackgroundColor")
|
||||||
End Set
|
End Set
|
||||||
@@ -192,7 +192,7 @@ Namespace Themes
|
|||||||
Return _searchBoxBackgroundColor
|
Return _searchBoxBackgroundColor
|
||||||
End Get
|
End Get
|
||||||
Set(value As Color)
|
Set(value As Color)
|
||||||
If _searchBoxBackgroundColor = value Or value = Color.Transparent Then Return
|
If _searchBoxBackgroundColor = value Or value.A < 255 Then Return
|
||||||
_searchBoxBackgroundColor = value
|
_searchBoxBackgroundColor = value
|
||||||
NotifyPropertyChanged("SearchBoxBackgroundColor")
|
NotifyPropertyChanged("SearchBoxBackgroundColor")
|
||||||
End Set
|
End Set
|
||||||
@@ -239,7 +239,7 @@ Namespace Themes
|
|||||||
Return _configPanelBackgroundColor
|
Return _configPanelBackgroundColor
|
||||||
End Get
|
End Get
|
||||||
Set(value As Color)
|
Set(value As Color)
|
||||||
If _configPanelBackgroundColor = value Or value = Color.Transparent Then Return
|
If _configPanelBackgroundColor = value Or value.A < 255 Then Return
|
||||||
_configPanelBackgroundColor = value
|
_configPanelBackgroundColor = value
|
||||||
NotifyPropertyChanged("ConfigPanelBackgroundColor")
|
NotifyPropertyChanged("ConfigPanelBackgroundColor")
|
||||||
End Set
|
End Set
|
||||||
@@ -284,7 +284,7 @@ Namespace Themes
|
|||||||
Return _configPanelHelpBackgroundColor
|
Return _configPanelHelpBackgroundColor
|
||||||
End Get
|
End Get
|
||||||
Set(value As Color)
|
Set(value As Color)
|
||||||
If _configPanelHelpBackgroundColor = value Or value = Color.Transparent Then Return
|
If _configPanelHelpBackgroundColor = value Or value.A < 255 Then Return
|
||||||
_configPanelHelpBackgroundColor = value
|
_configPanelHelpBackgroundColor = value
|
||||||
NotifyPropertyChanged("ConfigPanelHelpBackgroundColor")
|
NotifyPropertyChanged("ConfigPanelHelpBackgroundColor")
|
||||||
End Set
|
End Set
|
||||||
|
|||||||
@@ -24,7 +24,11 @@ Namespace Themes
|
|||||||
Public Shared Function LoadThemes() As List(Of ThemeInfo)
|
Public Shared Function LoadThemes() As List(Of ThemeInfo)
|
||||||
Dim themes As New List(Of ThemeInfo)
|
Dim themes As New List(Of ThemeInfo)
|
||||||
themes.Add(DefaultTheme)
|
themes.Add(DefaultTheme)
|
||||||
themes.AddRange(ThemeSerializer.LoadFromXmlFile(Path.Combine(App.Info.Settings.SettingsPath, App.Info.Settings.ThemesFileName)))
|
Try
|
||||||
|
themes.AddRange(ThemeSerializer.LoadFromXmlFile(Path.Combine(App.Info.Settings.SettingsPath, App.Info.Settings.ThemesFileName)))
|
||||||
|
Catch ex As FileNotFoundException
|
||||||
|
End Try
|
||||||
|
|
||||||
Return themes
|
Return themes
|
||||||
End Function
|
End Function
|
||||||
|
|
||||||
@@ -69,16 +73,21 @@ Namespace Themes
|
|||||||
Return _activeTheme
|
Return _activeTheme
|
||||||
End Get
|
End Get
|
||||||
Set(value As ThemeInfo)
|
Set(value As ThemeInfo)
|
||||||
If _activeTheme Is Nothing OrElse Not _activeTheme.Equals(value) Then
|
' We need to set ActiveTheme to the new theme to make sure it references the right object.
|
||||||
If _activeThemeHandlerSet Then RemoveHandler _activeTheme.PropertyChanged, AddressOf NotifyThemeChanged
|
' However, if both themes have the same properties, we don't need to raise a notification event.
|
||||||
|
Dim needNotify As Boolean = True
|
||||||
_activeTheme = value
|
If _activeTheme IsNot Nothing Then
|
||||||
|
If _activeTheme.Equals(value) Then needNotify = False
|
||||||
AddHandler _activeTheme.PropertyChanged, AddressOf NotifyThemeChanged
|
|
||||||
_activeThemeHandlerSet = True
|
|
||||||
|
|
||||||
NotifyThemeChanged(_activeTheme, New PropertyChangedEventArgs(""))
|
|
||||||
End If
|
End If
|
||||||
|
|
||||||
|
If _activeThemeHandlerSet Then RemoveHandler _activeTheme.PropertyChanged, AddressOf NotifyThemeChanged
|
||||||
|
|
||||||
|
_activeTheme = value
|
||||||
|
|
||||||
|
AddHandler _activeTheme.PropertyChanged, AddressOf NotifyThemeChanged
|
||||||
|
_activeThemeHandlerSet = True
|
||||||
|
|
||||||
|
If needNotify Then NotifyThemeChanged(_activeTheme, New PropertyChangedEventArgs(""))
|
||||||
End Set
|
End Set
|
||||||
End Property
|
End Property
|
||||||
#End Region
|
#End Region
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ Namespace Themes
|
|||||||
color = propertyInfo.GetValue(themeInfo, Nothing)
|
color = propertyInfo.GetValue(themeInfo, Nothing)
|
||||||
xmlTextWriter.WriteStartElement("Color")
|
xmlTextWriter.WriteStartElement("Color")
|
||||||
xmlTextWriter.WriteAttributeString("Name", propertyInfo.Name)
|
xmlTextWriter.WriteAttributeString("Name", propertyInfo.Name)
|
||||||
xmlTextWriter.WriteAttributeString("Value", color.Name)
|
xmlTextWriter.WriteAttributeString("Value", EncodeColorName(color))
|
||||||
xmlTextWriter.WriteEndElement() ' Color
|
xmlTextWriter.WriteEndElement() ' Color
|
||||||
Next
|
Next
|
||||||
|
|
||||||
@@ -91,12 +91,29 @@ Namespace Themes
|
|||||||
colorValue = colorNode.Attributes("Value").Value
|
colorValue = colorNode.Attributes("Value").Value
|
||||||
propertyInfo = themeType.GetProperty(colorName)
|
propertyInfo = themeType.GetProperty(colorName)
|
||||||
If propertyInfo Is Nothing OrElse Not propertyInfo.PropertyType Is colorType Then Continue For
|
If propertyInfo Is Nothing OrElse Not propertyInfo.PropertyType Is colorType Then Continue For
|
||||||
propertyInfo.SetValue(themeInfo, Color.FromName(colorValue), Nothing)
|
propertyInfo.SetValue(themeInfo, DecodeColorName(colorValue), Nothing)
|
||||||
Next
|
Next
|
||||||
themes.Add(themeInfo)
|
themes.Add(themeInfo)
|
||||||
Next
|
Next
|
||||||
|
|
||||||
Return themes
|
Return themes
|
||||||
End Function
|
End Function
|
||||||
|
|
||||||
|
Private Shared Function EncodeColorName(ByVal color As Color) As String
|
||||||
|
If color.IsNamedColor Then
|
||||||
|
Return color.Name
|
||||||
|
Else
|
||||||
|
Return Hex(color.ToArgb()).PadLeft(8, "0")
|
||||||
|
End If
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Private Shared Function DecodeColorName(ByVal name As String) As Color
|
||||||
|
Dim regex As New System.Text.RegularExpressions.Regex("^[0-9a-fA-F]{8}$")
|
||||||
|
If regex.Match(name).Success Then
|
||||||
|
Return Color.FromArgb(Convert.ToInt32(name, 16))
|
||||||
|
Else
|
||||||
|
Return Color.FromName(name)
|
||||||
|
End If
|
||||||
|
End Function
|
||||||
End Class
|
End Class
|
||||||
End Namespace
|
End Namespace
|
||||||
|
|||||||
248
mRemoteV1/Tools/Authenticode.vb
Normal file
248
mRemoteV1/Tools/Authenticode.vb
Normal file
@@ -0,0 +1,248 @@
|
|||||||
|
Imports System.IO
|
||||||
|
Imports System.Security.Cryptography.X509Certificates
|
||||||
|
Imports System.Runtime.InteropServices
|
||||||
|
Imports System.Security.Cryptography
|
||||||
|
Imports System.Reflection
|
||||||
|
Imports System.ComponentModel
|
||||||
|
|
||||||
|
Namespace Tools
|
||||||
|
Public Class Authenticode
|
||||||
|
#Region "Public Methods"
|
||||||
|
Public Sub New(ByVal filePath As String)
|
||||||
|
Me.FilePath = filePath
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Public Function Verify() As StatusValue
|
||||||
|
Dim trustFileInfoPointer As IntPtr
|
||||||
|
Dim trustDataPointer As IntPtr
|
||||||
|
Try
|
||||||
|
Dim fileInfo As New FileInfo(FilePath)
|
||||||
|
If Not fileInfo.Exists() Then
|
||||||
|
_status = StatusValue.FileNotExist
|
||||||
|
Return _status
|
||||||
|
End If
|
||||||
|
If fileInfo.Length = 0 Then
|
||||||
|
_status = StatusValue.FileEmpty
|
||||||
|
Return _status
|
||||||
|
End If
|
||||||
|
|
||||||
|
If RequireThumbprintMatch Then
|
||||||
|
If String.IsNullOrEmpty(ThumbprintToMatch) Then
|
||||||
|
_status = StatusValue.NoThumbprintToMatch
|
||||||
|
Return _status
|
||||||
|
End If
|
||||||
|
|
||||||
|
Dim certificate As X509Certificate = X509Certificate.CreateFromSignedFile(FilePath)
|
||||||
|
Dim certificate2 As New X509Certificate2(certificate)
|
||||||
|
_thumbprint = certificate2.Thumbprint
|
||||||
|
If Not _thumbprint = ThumbprintToMatch Then
|
||||||
|
_status = StatusValue.ThumbprintNotMatch
|
||||||
|
Return _status
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
|
||||||
|
Dim trustFileInfo As New Win32.WINTRUST_FILE_INFO
|
||||||
|
trustFileInfo.pcwszFilePath = FilePath
|
||||||
|
trustFileInfoPointer = Marshal.AllocCoTaskMem(Marshal.SizeOf(trustFileInfo))
|
||||||
|
Marshal.StructureToPtr(trustFileInfo, trustFileInfoPointer, False)
|
||||||
|
|
||||||
|
Dim trustData As New Win32.WINTRUST_DATA
|
||||||
|
With trustData
|
||||||
|
.dwUIChoice = Display
|
||||||
|
.fdwRevocationChecks = Win32.WTD_REVOKE_WHOLECHAIN
|
||||||
|
.dwUnionChoice = Win32.WTD_CHOICE_FILE
|
||||||
|
.pFile = trustFileInfoPointer
|
||||||
|
.dwStateAction = Win32.WTD_STATEACTION_IGNORE
|
||||||
|
.dwProvFlags = Win32.WTD_DISABLE_MD2_MD4
|
||||||
|
.dwUIContext = DisplayContext
|
||||||
|
End With
|
||||||
|
trustDataPointer = Marshal.AllocCoTaskMem(Marshal.SizeOf(trustData))
|
||||||
|
Marshal.StructureToPtr(trustData, trustDataPointer, False)
|
||||||
|
|
||||||
|
Dim windowHandle As IntPtr
|
||||||
|
If DisplayParentForm Is Nothing Then
|
||||||
|
windowHandle = IntPtr.Zero
|
||||||
|
Else
|
||||||
|
windowHandle = DisplayParentForm.Handle
|
||||||
|
End If
|
||||||
|
|
||||||
|
_trustProviderErrorCode = Win32.WinVerifyTrust(windowHandle, Win32.WINTRUST_ACTION_GENERIC_VERIFY_V2, trustDataPointer)
|
||||||
|
Select Case _trustProviderErrorCode
|
||||||
|
Case Win32.TRUST_E_NOSIGNATURE
|
||||||
|
_status = StatusValue.NoSignature
|
||||||
|
Case Win32.TRUST_E_SUBJECT_NOT_TRUSTED
|
||||||
|
|
||||||
|
End Select
|
||||||
|
If Not _trustProviderErrorCode = 0 Then
|
||||||
|
_status = StatusValue.TrustProviderError
|
||||||
|
Return _status
|
||||||
|
End If
|
||||||
|
|
||||||
|
_status = StatusValue.Verified
|
||||||
|
Return _status
|
||||||
|
Catch ex As CryptographicException
|
||||||
|
Dim hResultProperty As PropertyInfo = ex.GetType.GetProperty("HResult", BindingFlags.NonPublic Or BindingFlags.Instance)
|
||||||
|
Dim hResult As Integer = hResultProperty.GetValue(ex, Nothing)
|
||||||
|
If hResult = Win32.CRYPT_E_NO_MATCH Then
|
||||||
|
_status = StatusValue.NoSignature
|
||||||
|
Return _status
|
||||||
|
Else
|
||||||
|
_status = StatusValue.UnhandledException
|
||||||
|
Exception = ex
|
||||||
|
Return _status
|
||||||
|
End If
|
||||||
|
Catch ex As Exception
|
||||||
|
_status = StatusValue.UnhandledException
|
||||||
|
Exception = ex
|
||||||
|
Return _status
|
||||||
|
Finally
|
||||||
|
If Not trustDataPointer = IntPtr.Zero Then Marshal.FreeCoTaskMem(trustDataPointer)
|
||||||
|
If Not trustFileInfoPointer = IntPtr.Zero Then Marshal.FreeCoTaskMem(trustFileInfoPointer)
|
||||||
|
End Try
|
||||||
|
End Function
|
||||||
|
#End Region
|
||||||
|
|
||||||
|
#Region "Public Properties"
|
||||||
|
Public Property Display() As DisplayValue = DisplayValue.None
|
||||||
|
Public Property DisplayContext() As DisplayContextValue
|
||||||
|
Public Property DisplayParentForm() As Form
|
||||||
|
Public Property Exception() As Exception
|
||||||
|
Public Property FilePath() As String
|
||||||
|
Public Property RequireThumbprintMatch() As Boolean
|
||||||
|
|
||||||
|
Private _status As StatusValue
|
||||||
|
Public ReadOnly Property Status() As StatusValue
|
||||||
|
Get
|
||||||
|
Return _status
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
|
||||||
|
Public ReadOnly Property StatusMessage() As String
|
||||||
|
Get
|
||||||
|
Select Case Status
|
||||||
|
Case StatusValue.Verified
|
||||||
|
Return "The file was verified successfully."
|
||||||
|
Case StatusValue.FileNotExist
|
||||||
|
Return "The specified file does not exist."
|
||||||
|
Case StatusValue.FileEmpty
|
||||||
|
Return "The specified file is empty."
|
||||||
|
Case StatusValue.NoSignature
|
||||||
|
Return "The specified file is not digitally signed."
|
||||||
|
Case StatusValue.NoThumbprintToMatch
|
||||||
|
Return "A thumbprint match is required but no thumbprint to match against was specified."
|
||||||
|
Case StatusValue.ThumbprintNotMatch
|
||||||
|
Return String.Format("The thumbprint does not match. {0} {1} {2}.", _thumbprint, ChrW(&H2260), ThumbprintToMatch)
|
||||||
|
Case StatusValue.TrustProviderError
|
||||||
|
Dim ex As New Win32Exception(_trustProviderErrorCode)
|
||||||
|
Return String.Format("The trust provider returned an error. {0}", ex.Message)
|
||||||
|
Case StatusValue.UnhandledException
|
||||||
|
Return String.Format("An unhandled exception occurred. {0}", Exception.Message)
|
||||||
|
Case Else
|
||||||
|
Return "The status is unknown."
|
||||||
|
End Select
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
|
||||||
|
Private _thumbprint As String
|
||||||
|
Public ReadOnly Property Thumbprint() As String
|
||||||
|
Get
|
||||||
|
Return _thumbprint
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
|
||||||
|
Public Property ThumbprintToMatch() As String
|
||||||
|
|
||||||
|
Private _trustProviderErrorCode As Integer
|
||||||
|
Public ReadOnly Property TrustProviderErrorCode() As Integer
|
||||||
|
Get
|
||||||
|
Return _trustProviderErrorCode
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
#End Region
|
||||||
|
|
||||||
|
#Region "Public Enums"
|
||||||
|
Public Enum DisplayValue As UInt32
|
||||||
|
Unknown = 0
|
||||||
|
All = Win32.WTD_UI_ALL
|
||||||
|
None = Win32.WTD_UI_NONE
|
||||||
|
NoBad = Win32.WTD_UI_NOBAD
|
||||||
|
NoGood = Win32.WTD_UI_NOGOOD
|
||||||
|
End Enum
|
||||||
|
|
||||||
|
Public Enum DisplayContextValue As UInt32
|
||||||
|
Execute = Win32.WTD_UICONTEXT_EXECUTE
|
||||||
|
Install = Win32.WTD_UICONTEXT_INSTALL
|
||||||
|
End Enum
|
||||||
|
|
||||||
|
Public Enum StatusValue As Integer
|
||||||
|
Unknown = 0
|
||||||
|
Verified
|
||||||
|
FileNotExist
|
||||||
|
FileEmpty
|
||||||
|
NoSignature
|
||||||
|
NoThumbprintToMatch
|
||||||
|
ThumbprintNotMatch
|
||||||
|
TrustProviderError
|
||||||
|
UnhandledException
|
||||||
|
End Enum
|
||||||
|
#End Region
|
||||||
|
|
||||||
|
#Region "Protected Classes"
|
||||||
|
Protected Class Win32
|
||||||
|
' ReSharper disable InconsistentNaming
|
||||||
|
<DllImport("wintrust.dll", CharSet:=CharSet.Auto, SetLastError:=False)> _
|
||||||
|
Public Shared Function WinVerifyTrust(<[In]()> ByVal hWnd As IntPtr, <[In](), MarshalAs(UnmanagedType.LPStruct)> ByVal pgActionOID As Guid, <[In]()> ByVal pWVTData As IntPtr) As Integer
|
||||||
|
End Function
|
||||||
|
|
||||||
|
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)> _
|
||||||
|
Public Class WINTRUST_DATA
|
||||||
|
Public cbStruct As UInt32 = Marshal.SizeOf(GetType(WINTRUST_DATA))
|
||||||
|
Public pPolicyCallbackData As IntPtr
|
||||||
|
Public pSIPClientData As IntPtr
|
||||||
|
Public dwUIChoice As UInt32
|
||||||
|
Public fdwRevocationChecks As UInt32
|
||||||
|
Public dwUnionChoice As UInt32
|
||||||
|
Public pFile As IntPtr
|
||||||
|
Public dwStateAction As UInt32
|
||||||
|
Public hWVTStateData As IntPtr
|
||||||
|
Public pwszURLReference As IntPtr
|
||||||
|
Public dwProvFlags As UInt32
|
||||||
|
Public dwUIContext As UInt32
|
||||||
|
End Class
|
||||||
|
|
||||||
|
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)> _
|
||||||
|
Public Class WINTRUST_FILE_INFO
|
||||||
|
Public cbStruct As UInt32 = Marshal.SizeOf(GetType(WINTRUST_FILE_INFO))
|
||||||
|
<MarshalAs(UnmanagedType.LPTStr)> _
|
||||||
|
Public pcwszFilePath As String
|
||||||
|
Public hFile As IntPtr
|
||||||
|
Public pgKnownSubject As IntPtr
|
||||||
|
End Class
|
||||||
|
|
||||||
|
Public Const CRYPT_E_NO_MATCH As Integer = &H80092009
|
||||||
|
|
||||||
|
Public Const TRUST_E_SUBJECT_NOT_TRUSTED As Integer = &H800B0004
|
||||||
|
Public Const TRUST_E_NOSIGNATURE As Integer = &H800B0100
|
||||||
|
|
||||||
|
Public Shared ReadOnly WINTRUST_ACTION_GENERIC_VERIFY_V2 As New Guid("{00AAC56B-CD44-11d0-8CC2-00C04FC295EE}")
|
||||||
|
|
||||||
|
Public Const WTD_CHOICE_FILE As UInt32 = 1
|
||||||
|
Public Const WTD_DISABLE_MD2_MD4 As UInt32 = &H2000
|
||||||
|
Public Const WTD_REVOKE_WHOLECHAIN As UInt32 = 1
|
||||||
|
|
||||||
|
Public Const WTD_STATEACTION_IGNORE As UInt32 = &H0
|
||||||
|
Public Const WTD_STATEACTION_VERIFY As UInt32 = &H1
|
||||||
|
Public Const WTD_STATEACTION_CLOSE As UInt32 = &H2
|
||||||
|
|
||||||
|
Public Const WTD_UI_ALL As UInt32 = 1
|
||||||
|
Public Const WTD_UI_NONE As UInt32 = 2
|
||||||
|
Public Const WTD_UI_NOBAD As UInt32 = 3
|
||||||
|
Public Const WTD_UI_NOGOOD As UInt32 = 4
|
||||||
|
|
||||||
|
Public Const WTD_UICONTEXT_EXECUTE As UInt32 = 0
|
||||||
|
Public Const WTD_UICONTEXT_INSTALL As UInt32 = 1
|
||||||
|
' ReSharper restore InconsistentNaming
|
||||||
|
End Class
|
||||||
|
#End Region
|
||||||
|
End Class
|
||||||
|
End Namespace
|
||||||
40
mRemoteV1/Tools/EnumWindows.vb
Normal file
40
mRemoteV1/Tools/EnumWindows.vb
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
Namespace Tools
|
||||||
|
Public Class EnumWindows
|
||||||
|
Public Shared Function EnumWindows() As List(Of IntPtr)
|
||||||
|
Dim handleList As New List(Of IntPtr)
|
||||||
|
|
||||||
|
HandleLists.Add(handleList)
|
||||||
|
Dim handleIndex As Integer = HandleLists.IndexOf(handleList)
|
||||||
|
Win32.EnumWindows(AddressOf EnumCallback, handleIndex)
|
||||||
|
HandleLists.Remove(handleList)
|
||||||
|
|
||||||
|
Return handleList
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Public Shared Function EnumChildWindows(ByVal hWndParent As IntPtr) As List(Of IntPtr)
|
||||||
|
Dim handleList As New List(Of IntPtr)
|
||||||
|
|
||||||
|
HandleLists.Add(handleList)
|
||||||
|
Dim handleIndex As Integer = HandleLists.IndexOf(handleList)
|
||||||
|
Win32.EnumChildWindows(hWndParent, AddressOf EnumCallback, handleIndex)
|
||||||
|
HandleLists.Remove(handleList)
|
||||||
|
|
||||||
|
Return handleList
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Private Shared ReadOnly HandleLists As New List(Of List(Of IntPtr))
|
||||||
|
|
||||||
|
Private Shared Function EnumCallback(hwnd As Integer, lParam As Integer) As Boolean
|
||||||
|
HandleLists(lParam).Add(hwnd)
|
||||||
|
Return True
|
||||||
|
End Function
|
||||||
|
|
||||||
|
' ReSharper disable ClassNeverInstantiated.Local
|
||||||
|
Private Class Win32
|
||||||
|
' ReSharper restore ClassNeverInstantiated.Local
|
||||||
|
Public Delegate Function EnumWindowsProc(ByVal hwnd As Integer, ByVal lParam As Integer) As Boolean
|
||||||
|
Declare Function EnumWindows Lib "user32" (ByVal lpEnumFunc As EnumWindowsProc, ByVal lParam As Integer) As Boolean
|
||||||
|
Declare Function EnumChildWindows Lib "user32" (ByVal hWndParent As IntPtr, ByVal lpEnumFunc As EnumWindowsProc, ByVal lParam As Integer) As Boolean
|
||||||
|
End Class
|
||||||
|
End Class
|
||||||
|
End Namespace
|
||||||
43
mRemoteV1/Tools/EnvironmentInfo.vb
Normal file
43
mRemoteV1/Tools/EnvironmentInfo.vb
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
Imports System.Runtime.InteropServices
|
||||||
|
|
||||||
|
Namespace Tools
|
||||||
|
Public Class EnvironmentInfo
|
||||||
|
Public Shared ReadOnly Property IsWow64() As Boolean
|
||||||
|
Get
|
||||||
|
Dim isWow64ProcessDelegate As Win32.IsWow64ProcessDelegate = GetIsWow64ProcessDelegate()
|
||||||
|
If isWow64ProcessDelegate Is Nothing Then Return False
|
||||||
|
|
||||||
|
Dim isWow64Process As Boolean
|
||||||
|
Dim result As Boolean = isWow64ProcessDelegate.Invoke(Process.GetCurrentProcess().Handle, isWow64Process)
|
||||||
|
If Not result Then Return False
|
||||||
|
|
||||||
|
Return isWow64Process
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
|
||||||
|
Private Shared Function GetIsWow64ProcessDelegate() As Win32.IsWow64ProcessDelegate
|
||||||
|
Dim moduleHandle As IntPtr = Win32.LoadLibrary("kernel32")
|
||||||
|
If moduleHandle = IntPtr.Zero Then Return Nothing
|
||||||
|
|
||||||
|
Dim functionPointer As IntPtr = Win32.GetProcAddress(moduleHandle, "IsWow64Process")
|
||||||
|
If functionPointer = IntPtr.Zero Then Return Nothing
|
||||||
|
|
||||||
|
Return Marshal.GetDelegateForFunctionPointer(functionPointer, GetType(Win32.IsWow64ProcessDelegate))
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Protected Class Win32
|
||||||
|
' ReSharper disable InconsistentNaming
|
||||||
|
<DllImport("kernel32", CharSet:=CharSet.Auto, SetLastError:=True)> _
|
||||||
|
Public Shared Function LoadLibrary(<[In](), MarshalAs(UnmanagedType.LPTStr)> ByVal lpFileName As String) As IntPtr
|
||||||
|
End Function
|
||||||
|
|
||||||
|
<DllImport("kernel32", ExactSpelling:=True, CharSet:=CharSet.Ansi, SetLastError:=True)> _
|
||||||
|
Public Shared Function GetProcAddress(<[In]()> ByVal hModule As IntPtr, <[In](), MarshalAs(UnmanagedType.LPStr)> ByVal lpProcName As String) As IntPtr
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Public Delegate Function IsWow64ProcessDelegate(<[In]()> hProcess As IntPtr, <[Out]()> ByRef Wow64Process As Boolean) As Boolean
|
||||||
|
' ReSharper restore InconsistentNaming
|
||||||
|
End Class
|
||||||
|
End Class
|
||||||
|
End Namespace
|
||||||
|
|
||||||
39
mRemoteV1/Tools/IeBrowserEmulation.vb
Normal file
39
mRemoteV1/Tools/IeBrowserEmulation.vb
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
Imports System.IO
|
||||||
|
Imports Microsoft.Win32
|
||||||
|
|
||||||
|
Namespace Tools
|
||||||
|
Public Class IeBrowserEmulation
|
||||||
|
Private Const BrowserEmulationKey As String = "Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION"
|
||||||
|
Private Shared _previousIeBrowserEmulationValue As Integer = 0
|
||||||
|
Public Shared Sub Register()
|
||||||
|
Dim registryKey As RegistryKey = Registry.CurrentUser.OpenSubKey(BrowserEmulationKey, True)
|
||||||
|
If registryKey Is Nothing Then
|
||||||
|
Registry.CurrentUser.CreateSubKey(BrowserEmulationKey)
|
||||||
|
registryKey = Registry.CurrentUser.OpenSubKey(BrowserEmulationKey, True)
|
||||||
|
If registryKey Is Nothing Then Return
|
||||||
|
End If
|
||||||
|
Dim exeName As String = Path.GetFileName(Process.GetCurrentProcess().MainModule.FileName)
|
||||||
|
_previousIeBrowserEmulationValue = registryKey.GetValue(exeName, 0)
|
||||||
|
registryKey.SetValue(exeName, 11000, RegistryValueKind.DWord)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Public Shared Sub Unregister()
|
||||||
|
#If Not PORTABLE Then
|
||||||
|
Return
|
||||||
|
#Else
|
||||||
|
Try
|
||||||
|
Dim registryKey As RegistryKey = Registry.CurrentUser.OpenSubKey(BrowserEmulationKey, True)
|
||||||
|
If registryKey Is Nothing Then Return
|
||||||
|
Dim exeName As String = Path.GetFileName(Process.GetCurrentProcess().MainModule.FileName)
|
||||||
|
If _previousIeBrowserEmulationValue = 0 Then
|
||||||
|
registryKey.DeleteValue(exeName)
|
||||||
|
Else
|
||||||
|
registryKey.SetValue(exeName, _previousIeBrowserEmulationValue, RegistryValueKind.DWord)
|
||||||
|
End If
|
||||||
|
Catch
|
||||||
|
End Try
|
||||||
|
#End If
|
||||||
|
End Sub
|
||||||
|
End Class
|
||||||
|
End Namespace
|
||||||
|
|
||||||
181
mRemoteV1/Tools/ProcessController.vb
Normal file
181
mRemoteV1/Tools/ProcessController.vb
Normal file
@@ -0,0 +1,181 @@
|
|||||||
|
Imports System.Runtime.InteropServices
|
||||||
|
Imports System.Text
|
||||||
|
Imports mRemoteNG.My
|
||||||
|
|
||||||
|
Namespace Tools
|
||||||
|
Public Class ProcessController
|
||||||
|
#Region "Public Methods"
|
||||||
|
Public Function Start(ByVal fileName As String, Optional ByVal arguments As CommandLineArguments = Nothing) As Boolean
|
||||||
|
With Process.StartInfo
|
||||||
|
.UseShellExecute = False
|
||||||
|
.FileName = fileName
|
||||||
|
If arguments IsNot Nothing Then .Arguments = arguments.ToString()
|
||||||
|
End With
|
||||||
|
|
||||||
|
If Not Process.Start() Then Return False
|
||||||
|
GetMainWindowHandle()
|
||||||
|
|
||||||
|
Return True
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Public Function SetControlVisible(ByVal className As String, ByVal text As String, Optional ByVal visible As Boolean = True) As Boolean
|
||||||
|
If Process Is Nothing OrElse Process.HasExited Then Return False
|
||||||
|
If Handle = IntPtr.Zero Then Return False
|
||||||
|
|
||||||
|
Dim controlHandle As IntPtr = GetControlHandle(className, text)
|
||||||
|
If controlHandle = IntPtr.Zero Then Return False
|
||||||
|
|
||||||
|
Dim nCmdShow As Integer
|
||||||
|
If visible Then
|
||||||
|
nCmdShow = Win32.SW_SHOW
|
||||||
|
Else
|
||||||
|
nCmdShow = Win32.SW_HIDE
|
||||||
|
End If
|
||||||
|
|
||||||
|
Win32.ShowWindow(controlHandle, nCmdShow)
|
||||||
|
|
||||||
|
Return True
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Public Function SetControlText(ByVal className As String, ByVal oldText As String, ByVal newText As String) As Boolean
|
||||||
|
If Process Is Nothing OrElse Process.HasExited Then Return False
|
||||||
|
If Handle = IntPtr.Zero Then Return False
|
||||||
|
|
||||||
|
Dim controlHandle As IntPtr = GetControlHandle(className, oldText)
|
||||||
|
If controlHandle = IntPtr.Zero Then Return False
|
||||||
|
|
||||||
|
Dim result As IntPtr = Win32.SendMessage(controlHandle, Win32.WM_SETTEXT, 0, New StringBuilder(newText))
|
||||||
|
If Not result.ToInt32() = Win32.TRUE Then Return False
|
||||||
|
|
||||||
|
Return True
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Public Function SelectListBoxItem(ByVal itemText As String) As Boolean
|
||||||
|
If Process Is Nothing OrElse Process.HasExited Then Return False
|
||||||
|
If Handle = IntPtr.Zero Then Return False
|
||||||
|
|
||||||
|
Dim listBoxHandle As IntPtr = GetControlHandle("ListBox")
|
||||||
|
If listBoxHandle = IntPtr.Zero Then Return False
|
||||||
|
|
||||||
|
Dim result As IntPtr = Win32.SendMessage(listBoxHandle, Win32.LB_SELECTSTRING, -1, New StringBuilder(itemText))
|
||||||
|
If result.ToInt32() = Win32.LB_ERR Then Return False
|
||||||
|
|
||||||
|
Return True
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Public Function ClickButton(ByVal text As String) As Boolean
|
||||||
|
If Process Is Nothing OrElse Process.HasExited Then Return False
|
||||||
|
If Handle = IntPtr.Zero Then Return False
|
||||||
|
|
||||||
|
Dim buttonHandle As IntPtr = GetControlHandle("Button", text)
|
||||||
|
If buttonHandle = IntPtr.Zero Then Return False
|
||||||
|
|
||||||
|
Dim buttonControlId As Integer = Win32.GetDlgCtrlID(buttonHandle)
|
||||||
|
Win32.SendMessage(Handle, Win32.WM_COMMAND, buttonControlId, buttonHandle)
|
||||||
|
|
||||||
|
Return True
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Public Sub WaitForExit()
|
||||||
|
If Process Is Nothing OrElse Process.HasExited Then Return
|
||||||
|
Process.WaitForExit()
|
||||||
|
End Sub
|
||||||
|
#End Region
|
||||||
|
|
||||||
|
#Region "Protected Fields"
|
||||||
|
Protected Process As New Process
|
||||||
|
Protected Handle As IntPtr = IntPtr.Zero
|
||||||
|
Protected Controls As New List(Of IntPtr)
|
||||||
|
#End Region
|
||||||
|
|
||||||
|
#Region "Protected Methods"
|
||||||
|
Protected Function GetMainWindowHandle() As IntPtr
|
||||||
|
If Process Is Nothing OrElse Process.HasExited Then Return IntPtr.Zero
|
||||||
|
|
||||||
|
Process.WaitForInputIdle(Settings.MaxPuttyWaitTime * 1000)
|
||||||
|
|
||||||
|
Handle = IntPtr.Zero
|
||||||
|
Dim startTicks As Integer = Environment.TickCount
|
||||||
|
While Handle = IntPtr.Zero And Environment.TickCount < startTicks + (Settings.MaxPuttyWaitTime * 1000)
|
||||||
|
Process.Refresh()
|
||||||
|
Handle = Process.MainWindowHandle
|
||||||
|
If Handle = IntPtr.Zero Then Threading.Thread.Sleep(0)
|
||||||
|
End While
|
||||||
|
|
||||||
|
Return Handle
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Protected Function GetControlHandle(ByVal className As String, Optional ByVal text As String = "") As IntPtr
|
||||||
|
If Process Is Nothing OrElse Process.HasExited Then Return IntPtr.Zero
|
||||||
|
If Handle = IntPtr.Zero Then Return IntPtr.Zero
|
||||||
|
|
||||||
|
If Controls.Count = 0 Then
|
||||||
|
Controls = EnumWindows.EnumChildWindows(Handle)
|
||||||
|
End If
|
||||||
|
|
||||||
|
Dim stringBuilder As New System.Text.StringBuilder
|
||||||
|
Dim controlHandle As IntPtr = IntPtr.Zero
|
||||||
|
For Each control As IntPtr In Controls
|
||||||
|
Win32.GetClassName(control, stringBuilder, stringBuilder.Capacity)
|
||||||
|
If (stringBuilder.ToString() = className) Then
|
||||||
|
If String.IsNullOrEmpty(text) Then
|
||||||
|
controlHandle = control
|
||||||
|
Exit For
|
||||||
|
Else
|
||||||
|
Win32.SendMessage(control, Win32.WM_GETTEXT, stringBuilder.Capacity, stringBuilder)
|
||||||
|
If (stringBuilder.ToString() = text) Then
|
||||||
|
controlHandle = control
|
||||||
|
Exit For
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
Next
|
||||||
|
|
||||||
|
Return controlHandle
|
||||||
|
End Function
|
||||||
|
#End Region
|
||||||
|
|
||||||
|
#Region "Win32"
|
||||||
|
' ReSharper disable ClassNeverInstantiated.Local
|
||||||
|
Private Class Win32
|
||||||
|
' ReSharper restore ClassNeverInstantiated.Local
|
||||||
|
' ReSharper disable InconsistentNaming
|
||||||
|
' ReSharper disable UnusedMethodReturnValue.Local
|
||||||
|
<DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
|
||||||
|
Public Shared Sub GetClassName(ByVal hWnd As IntPtr, ByVal lpClassName As System.Text.StringBuilder, ByVal nMaxCount As Integer)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
<DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
|
||||||
|
Public Shared Function SendMessage(ByVal hWnd As IntPtr, ByVal Msg As UInteger, ByVal wParam As IntPtr, ByVal lParam As IntPtr) As IntPtr
|
||||||
|
End Function
|
||||||
|
|
||||||
|
<DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
|
||||||
|
Public Shared Function SendMessage(ByVal hWnd As IntPtr, ByVal Msg As UInteger, ByVal wParam As IntPtr, ByVal lParam As System.Text.StringBuilder) As IntPtr
|
||||||
|
End Function
|
||||||
|
|
||||||
|
<DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
|
||||||
|
Public Shared Function GetDlgCtrlID(ByVal hwndCtl As Integer) As Integer
|
||||||
|
End Function
|
||||||
|
|
||||||
|
<DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
|
||||||
|
Public Shared Function ShowWindow(ByVal hWnd As IntPtr, ByVal nCmdShow As Integer) As Boolean
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Public Const LB_ERR As Integer = -1
|
||||||
|
Public Const LB_SELECTSTRING As Integer = &H18C
|
||||||
|
|
||||||
|
Public Const WM_SETTEXT As Integer = &HC
|
||||||
|
Public Const WM_GETTEXT As Integer = &HD
|
||||||
|
Public Const WM_COMMAND As Integer = &H111
|
||||||
|
|
||||||
|
Public Const SW_HIDE As Integer = 0
|
||||||
|
Public Const SW_SHOW As Integer = 5
|
||||||
|
|
||||||
|
Public Const [TRUE] As Integer = 1
|
||||||
|
' ReSharper restore UnusedMethodReturnValue.Local
|
||||||
|
' ReSharper restore InconsistentNaming
|
||||||
|
End Class
|
||||||
|
#End Region
|
||||||
|
End Class
|
||||||
|
End Namespace
|
||||||
|
|
||||||
143
mRemoteV1/Tools/PropertyGridCommandSite.vb
Normal file
143
mRemoteV1/Tools/PropertyGridCommandSite.vb
Normal file
@@ -0,0 +1,143 @@
|
|||||||
|
Imports System.ComponentModel
|
||||||
|
Imports System.ComponentModel.Design
|
||||||
|
Imports System.Reflection
|
||||||
|
|
||||||
|
Namespace Tools
|
||||||
|
Public Class PropertyGridCommandSite
|
||||||
|
Implements IMenuCommandService, ISite
|
||||||
|
|
||||||
|
Protected TheObject As Object
|
||||||
|
Sub New(ByVal [object] As Object)
|
||||||
|
TheObject = [object]
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Public ReadOnly Property Verbs() As DesignerVerbCollection Implements IMenuCommandService.Verbs
|
||||||
|
Get
|
||||||
|
Dim objectVerbs As New DesignerVerbCollection()
|
||||||
|
' ReSharper disable VBPossibleMistakenCallToGetType.2
|
||||||
|
Dim methods() As MethodInfo = TheObject.GetType().GetMethods(BindingFlags.Public Or BindingFlags.Instance)
|
||||||
|
' ReSharper restore VBPossibleMistakenCallToGetType.2
|
||||||
|
For Each method As MethodInfo In methods
|
||||||
|
Dim commandAttributes() As Object = method.GetCustomAttributes(GetType(CommandAttribute), True)
|
||||||
|
If commandAttributes Is Nothing OrElse commandAttributes.Length = 0 Then Continue For
|
||||||
|
|
||||||
|
Dim commandAttribute As CommandAttribute = CType(commandAttributes(0), CommandAttribute)
|
||||||
|
If Not commandAttribute.Command Then Continue For
|
||||||
|
|
||||||
|
Dim displayName As String = method.Name
|
||||||
|
Dim displayNameAttributes() As Object = method.GetCustomAttributes(GetType(DisplayNameAttribute), True)
|
||||||
|
If Not (displayNameAttributes Is Nothing OrElse displayNameAttributes.Length = 0) Then
|
||||||
|
Dim displayNameAttribute As DisplayNameAttribute = CType(displayNameAttributes(0), DisplayNameAttribute)
|
||||||
|
If Not String.IsNullOrEmpty(displayNameAttribute.DisplayName) Then
|
||||||
|
displayName = displayNameAttribute.DisplayName
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
objectVerbs.Add(New DesignerVerb(displayName, New EventHandler(AddressOf VerbEventHandler)))
|
||||||
|
Next
|
||||||
|
|
||||||
|
Return objectVerbs
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
|
||||||
|
Private Sub VerbEventHandler(ByVal sender As Object, ByVal e As EventArgs)
|
||||||
|
Dim verb As DesignerVerb = TryCast(sender, DesignerVerb)
|
||||||
|
If verb Is Nothing Then Return
|
||||||
|
' ReSharper disable VBPossibleMistakenCallToGetType.2
|
||||||
|
Dim methods() As MethodInfo = TheObject.GetType().GetMethods(BindingFlags.Public Or BindingFlags.Instance)
|
||||||
|
' ReSharper restore VBPossibleMistakenCallToGetType.2
|
||||||
|
For Each method As MethodInfo In methods
|
||||||
|
Dim commandAttributes() As Object = method.GetCustomAttributes(GetType(CommandAttribute), True)
|
||||||
|
If commandAttributes Is Nothing OrElse commandAttributes.Length = 0 Then Continue For
|
||||||
|
|
||||||
|
Dim commandAttribute As CommandAttribute = CType(commandAttributes(0), CommandAttribute)
|
||||||
|
If Not commandAttribute.Command Then Continue For
|
||||||
|
|
||||||
|
Dim displayName As String = method.Name
|
||||||
|
Dim displayNameAttributes() As Object = method.GetCustomAttributes(GetType(DisplayNameAttribute), True)
|
||||||
|
If Not (displayNameAttributes Is Nothing OrElse displayNameAttributes.Length = 0) Then
|
||||||
|
Dim displayNameAttribute As DisplayNameAttribute = CType(displayNameAttributes(0), DisplayNameAttribute)
|
||||||
|
If Not String.IsNullOrEmpty(displayNameAttribute.DisplayName) Then
|
||||||
|
displayName = displayNameAttribute.DisplayName
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
|
||||||
|
If verb.Text = displayName Then
|
||||||
|
method.Invoke(TheObject, Nothing)
|
||||||
|
Return
|
||||||
|
End If
|
||||||
|
Next
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Public Function GetService(serviceType As Type) As Object Implements IServiceProvider.GetService
|
||||||
|
If serviceType Is GetType(IMenuCommandService) Then
|
||||||
|
Return Me
|
||||||
|
Else
|
||||||
|
Return Nothing
|
||||||
|
End If
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Public ReadOnly Property Component As System.ComponentModel.IComponent Implements System.ComponentModel.ISite.Component
|
||||||
|
Get
|
||||||
|
Throw New NotImplementedException()
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
|
||||||
|
Public ReadOnly Property Container As System.ComponentModel.IContainer Implements System.ComponentModel.ISite.Container
|
||||||
|
Get
|
||||||
|
Return Nothing
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
|
||||||
|
Public ReadOnly Property DesignMode As Boolean Implements System.ComponentModel.ISite.DesignMode
|
||||||
|
Get
|
||||||
|
Return True
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
|
||||||
|
Public Property Name As String Implements System.ComponentModel.ISite.Name
|
||||||
|
Get
|
||||||
|
Throw New NotImplementedException()
|
||||||
|
End Get
|
||||||
|
Set(value As String)
|
||||||
|
Throw New NotImplementedException()
|
||||||
|
End Set
|
||||||
|
End Property
|
||||||
|
|
||||||
|
Public Sub AddCommand(ByVal command As MenuCommand) Implements IMenuCommandService.AddCommand
|
||||||
|
Throw New NotImplementedException()
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Public Sub AddVerb(ByVal verb As DesignerVerb) Implements IMenuCommandService.AddVerb
|
||||||
|
Throw New NotImplementedException()
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Public Function FindCommand(ByVal commandId As CommandID) As MenuCommand Implements IMenuCommandService.FindCommand
|
||||||
|
Throw New NotImplementedException()
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Public Function GlobalInvoke(ByVal commandId As CommandID) As Boolean Implements IMenuCommandService.GlobalInvoke
|
||||||
|
Throw New NotImplementedException()
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Public Sub RemoveCommand(ByVal command As MenuCommand) Implements IMenuCommandService.RemoveCommand
|
||||||
|
Throw New NotImplementedException()
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Public Sub RemoveVerb(ByVal verb As DesignerVerb) Implements IMenuCommandService.RemoveVerb
|
||||||
|
Throw New NotImplementedException()
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Public Sub ShowContextMenu(ByVal menuId As CommandID, ByVal x As Integer, ByVal y As Integer) Implements IMenuCommandService.ShowContextMenu
|
||||||
|
Throw New NotImplementedException()
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
End Class
|
||||||
|
|
||||||
|
Public Class CommandAttribute
|
||||||
|
Inherits Attribute
|
||||||
|
Public Property Command As Boolean = False
|
||||||
|
Sub New(Optional ByVal isCommand As Boolean = True)
|
||||||
|
Command = isCommand
|
||||||
|
End Sub
|
||||||
|
End Class
|
||||||
|
End Namespace
|
||||||
17
mRemoteV1/Tools/PuttyProcessController.vb
Normal file
17
mRemoteV1/Tools/PuttyProcessController.vb
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
Imports mRemoteNG.My
|
||||||
|
|
||||||
|
Namespace Tools
|
||||||
|
Public Class PuttyProcessController
|
||||||
|
Inherits ProcessController
|
||||||
|
Public Overloads Function Start(Optional ByVal arguments As CommandLineArguments = Nothing) As Boolean
|
||||||
|
Dim filename As String
|
||||||
|
If Settings.UseCustomPuttyPath Then
|
||||||
|
filename = Settings.CustomPuttyPath
|
||||||
|
Else
|
||||||
|
filename = App.Info.General.PuttyPath
|
||||||
|
End If
|
||||||
|
Return Start(filename, arguments)
|
||||||
|
End Function
|
||||||
|
End Class
|
||||||
|
End Namespace
|
||||||
|
|
||||||
@@ -125,14 +125,15 @@ Namespace Tools
|
|||||||
|
|
||||||
menToolStrip.DropDownItems.Add(tMenItem)
|
menToolStrip.DropDownItems.Add(tMenItem)
|
||||||
AddNodeToMenu(tNode.Nodes, tMenItem)
|
AddNodeToMenu(tNode.Nodes, tMenItem)
|
||||||
Else
|
ElseIf Tree.Node.GetNodeType(tNode) = Tree.Node.Type.Connection Or _
|
||||||
tMenItem.Image = My.Resources.Play
|
Tree.Node.GetNodeType(tNode) = Tree.Node.Type.PuttySession Then
|
||||||
|
tMenItem.Image = Windows.treeForm.imgListTree.Images(tNode.ImageIndex)
|
||||||
tMenItem.Tag = tNode.Tag
|
tMenItem.Tag = tNode.Tag
|
||||||
|
|
||||||
menToolStrip.DropDownItems.Add(tMenItem)
|
menToolStrip.DropDownItems.Add(tMenItem)
|
||||||
End If
|
End If
|
||||||
|
|
||||||
AddHandler tMenItem.MouseDown, AddressOf ConMenItem_MouseDown
|
AddHandler tMenItem.MouseUp, AddressOf ConMenItem_MouseUp
|
||||||
Next
|
Next
|
||||||
Catch ex As Exception
|
Catch ex As Exception
|
||||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "AddNodeToMenu failed" & vbNewLine & ex.Message, True)
|
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "AddNodeToMenu failed" & vbNewLine & ex.Message, True)
|
||||||
@@ -162,12 +163,10 @@ Namespace Tools
|
|||||||
frmMain.PreviousWindowState = frmMain.WindowState
|
frmMain.PreviousWindowState = frmMain.WindowState
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
Private Sub ConMenItem_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs)
|
Private Sub ConMenItem_MouseUp(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs)
|
||||||
If e.Button = MouseButtons.Left Then
|
If e.Button = MouseButtons.Left Then
|
||||||
If TypeOf sender.Tag Is mRemoteNG.Connection.Info Then
|
If TypeOf sender.Tag Is Connection.Info Then
|
||||||
If frmMain.Visible = False Then
|
If frmMain.Visible = False Then ShowForm()
|
||||||
ShowForm()
|
|
||||||
End If
|
|
||||||
App.Runtime.OpenConnection(sender.Tag)
|
App.Runtime.OpenConnection(sender.Tag)
|
||||||
End If
|
End If
|
||||||
End If
|
End If
|
||||||
@@ -211,13 +210,13 @@ Namespace Tools
|
|||||||
Return lDlg
|
Return lDlg
|
||||||
End Function
|
End Function
|
||||||
|
|
||||||
Public Shared Function ConnectionsRDPImportDialog() As OpenFileDialog
|
Public Shared Function ImportConnectionsRdpFileDialog() As OpenFileDialog
|
||||||
Dim lDlg As New OpenFileDialog()
|
Dim openFileDialog As New OpenFileDialog()
|
||||||
lDlg.CheckFileExists = True
|
openFileDialog.CheckFileExists = True
|
||||||
'lDlg.InitialDirectory = App.Info.Connections.DefaultConnectionsPath
|
openFileDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Personal)
|
||||||
lDlg.Filter = My.Language.strFilterRDP & "|*.rdp|" & My.Language.strFilterAll & "|*.*"
|
openFileDialog.Filter = String.Join("|", {My.Language.strFilterRDP, "*.rdp", My.Language.strFilterAll, "*.*"})
|
||||||
|
openFileDialog.Multiselect = True
|
||||||
Return lDlg
|
Return openFileDialog
|
||||||
End Function
|
End Function
|
||||||
|
|
||||||
Public Class TreeNodeSorter
|
Public Class TreeNodeSorter
|
||||||
|
|||||||
@@ -116,25 +116,8 @@ Namespace Tools
|
|||||||
End If
|
End If
|
||||||
End Function
|
End Function
|
||||||
|
|
||||||
Private Shared rndNums As New ArrayList
|
|
||||||
Public Shared Function CreateConstantID() As String
|
Public Shared Function CreateConstantID() As String
|
||||||
Dim cID As String
|
Return Guid.NewGuid().ToString()
|
||||||
Dim rnd As New Random(Now.Second)
|
|
||||||
Dim iRnd As Integer
|
|
||||||
Dim NewFound As Boolean = False
|
|
||||||
|
|
||||||
Do Until NewFound
|
|
||||||
iRnd = rnd.Next(10000, 99999)
|
|
||||||
|
|
||||||
If rndNums.Contains(iRnd) = False Then
|
|
||||||
rndNums.Add(iRnd)
|
|
||||||
NewFound = True
|
|
||||||
End If
|
|
||||||
Loop
|
|
||||||
|
|
||||||
cID = Now.Year & LeadingZero(Now.Month) & LeadingZero(Now.Day) & LeadingZero(Now.Hour) & LeadingZero(Now.Minute) & LeadingZero(Now.Second) & LeadingZero(Now.Millisecond & iRnd)
|
|
||||||
|
|
||||||
Return cID
|
|
||||||
End Function
|
End Function
|
||||||
|
|
||||||
Public Shared Function LeadingZero(ByVal Number As String) As String
|
Public Shared Function LeadingZero(ByVal Number As String) As String
|
||||||
@@ -167,15 +150,16 @@ Namespace Tools
|
|||||||
End Function
|
End Function
|
||||||
|
|
||||||
Public Shared Function StringToEnum(ByVal t As Type, ByVal value As String) As Object
|
Public Shared Function StringToEnum(ByVal t As Type, ByVal value As String) As Object
|
||||||
For Each fI As FieldInfo In t.GetFields
|
Return [Enum].Parse(t, value)
|
||||||
If fI.Name = value Then
|
End Function
|
||||||
Return fI.GetValue(vbNull)
|
|
||||||
End If
|
|
||||||
Next
|
|
||||||
|
|
||||||
Dim ex As New Exception(String.Format("Can't convert {0} to {1}", value, t.ToString))
|
Public Shared Function GetExceptionMessageRecursive(ByVal ex As Exception, Optional ByVal separator As String = vbNewLine) As String
|
||||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "StringToEnum failed" & vbNewLine & ex.Message, True)
|
Dim message As String = ex.Message
|
||||||
Throw ex
|
If ex.InnerException IsNot Nothing Then
|
||||||
|
Dim innerMessage As String = GetExceptionMessageRecursive(ex.InnerException, separator)
|
||||||
|
message = String.Join(separator, New String() {message, innerMessage})
|
||||||
|
End If
|
||||||
|
Return message
|
||||||
End Function
|
End Function
|
||||||
|
|
||||||
Public Shared Function TakeScreenshot(ByVal sender As UI.Window.Connection) As Image
|
Public Shared Function TakeScreenshot(ByVal sender As UI.Window.Connection) As Image
|
||||||
@@ -297,62 +281,47 @@ Namespace Tools
|
|||||||
End Class
|
End Class
|
||||||
|
|
||||||
Public Class Fullscreen
|
Public Class Fullscreen
|
||||||
Private Shared winState As FormWindowState
|
Public Sub New(ByVal handledForm As Form)
|
||||||
Private Shared brdStyle As FormBorderStyle
|
_handledForm = handledForm
|
||||||
Private Shared topMost As Boolean
|
End Sub
|
||||||
Private Shared bounds As Rectangle
|
|
||||||
|
|
||||||
Public Shared targetForm As Form = frmMain
|
Private ReadOnly _handledForm As Form
|
||||||
Public Shared FullscreenActive As Boolean = False
|
Private _savedWindowState As FormWindowState
|
||||||
|
Private _savedBorderStyle As FormBorderStyle
|
||||||
|
Private _savedBounds As Rectangle
|
||||||
|
|
||||||
Public Shared Sub EnterFullscreen()
|
Private _value As Boolean = False
|
||||||
Try
|
Public Property Value() As Boolean
|
||||||
If Not FullscreenActive Then
|
Get
|
||||||
FullscreenActive = True
|
Return _value
|
||||||
Save()
|
End Get
|
||||||
targetForm.WindowState = FormWindowState.Maximized
|
Set(newValue As Boolean)
|
||||||
targetForm.FormBorderStyle = FormBorderStyle.None
|
If _value = newValue Then Return
|
||||||
SetWinFullScreen(targetForm.Handle)
|
If Not _value Then
|
||||||
|
EnterFullscreen()
|
||||||
|
Else
|
||||||
|
ExitFullscreen()
|
||||||
End If
|
End If
|
||||||
Catch ex As Exception
|
_value = newValue
|
||||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "Entering Fullscreen failed" & vbNewLine & ex.Message, True)
|
End Set
|
||||||
End Try
|
End Property
|
||||||
|
|
||||||
|
Private Sub EnterFullscreen()
|
||||||
|
_savedBorderStyle = _handledForm.FormBorderStyle
|
||||||
|
_savedWindowState = _handledForm.WindowState
|
||||||
|
_savedBounds = _handledForm.Bounds
|
||||||
|
|
||||||
|
_handledForm.FormBorderStyle = FormBorderStyle.None
|
||||||
|
If _handledForm.WindowState = FormWindowState.Maximized Then
|
||||||
|
_handledForm.WindowState = FormWindowState.Normal
|
||||||
|
End If
|
||||||
|
_handledForm.WindowState = FormWindowState.Maximized
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
Public Shared Sub Save()
|
Private Sub ExitFullscreen()
|
||||||
winState = targetForm.WindowState
|
_handledForm.FormBorderStyle = _savedBorderStyle
|
||||||
brdStyle = targetForm.FormBorderStyle
|
_handledForm.WindowState = _savedWindowState
|
||||||
bounds = targetForm.Bounds
|
_handledForm.Bounds = _savedBounds
|
||||||
End Sub
|
|
||||||
|
|
||||||
Public Shared Sub ExitFullscreen()
|
|
||||||
Try
|
|
||||||
targetForm.WindowState = winState
|
|
||||||
targetForm.FormBorderStyle = brdStyle
|
|
||||||
targetForm.Bounds = bounds
|
|
||||||
FullscreenActive = False
|
|
||||||
Catch ex As Exception
|
|
||||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "Exiting Fullscreen failed" & vbNewLine & ex.Message, True)
|
|
||||||
End Try
|
|
||||||
End Sub
|
|
||||||
|
|
||||||
<DllImport("user32.dll", EntryPoint:="GetSystemMetrics")> Public Shared Function GetSystemMetrics(ByVal which As Integer) As Integer
|
|
||||||
End Function
|
|
||||||
|
|
||||||
<DllImport("user32.dll")> Public Shared Sub SetWindowPos(ByVal hwnd As IntPtr, ByVal hwndInsertAfter As IntPtr, ByVal X As Integer, ByVal Y As Integer, ByVal width As Integer, ByVal height As Integer, ByVal flags As UInteger)
|
|
||||||
End Sub
|
|
||||||
|
|
||||||
Private Shared HWND_TOP As IntPtr = IntPtr.Zero
|
|
||||||
Private Const SWP_SHOWWINDOW As Integer = 64
|
|
||||||
' 0<>0040
|
|
||||||
|
|
||||||
Public Shared Sub SetWinFullScreen(ByVal hwnd As IntPtr)
|
|
||||||
Try
|
|
||||||
Dim curScreen As Screen = Screen.FromHandle(targetForm.Handle)
|
|
||||||
SetWindowPos(hwnd, HWND_TOP, curScreen.Bounds.Left, curScreen.Bounds.Top, curScreen.Bounds.Right, curScreen.Bounds.Bottom, SWP_SHOWWINDOW)
|
|
||||||
Catch ex As Exception
|
|
||||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "SetWindowPos failed" & vbNewLine & ex.Message, True)
|
|
||||||
End Try
|
|
||||||
End Sub
|
End Sub
|
||||||
End Class
|
End Class
|
||||||
|
|
||||||
|
|||||||
@@ -81,43 +81,30 @@ Namespace Tools
|
|||||||
End Set
|
End Set
|
||||||
End Property
|
End Property
|
||||||
|
|
||||||
|
Private _hostName As String = ""
|
||||||
|
|
||||||
Private _HostName As String
|
|
||||||
Public Property HostName() As String
|
Public Property HostName() As String
|
||||||
Get
|
Get
|
||||||
Return _HostName
|
Return _hostName
|
||||||
End Get
|
End Get
|
||||||
Set(ByVal value As String)
|
Set(ByVal value As String)
|
||||||
_HostName = value
|
_hostName = value
|
||||||
End Set
|
End Set
|
||||||
End Property
|
End Property
|
||||||
|
|
||||||
Public ReadOnly Property HostNameWithoutDomain() As String
|
Public ReadOnly Property HostNameWithoutDomain() As String
|
||||||
Get
|
Get
|
||||||
If _HostName <> _HostIP Then
|
If String.IsNullOrEmpty(HostName) OrElse HostName = HostIp Then Return HostIp
|
||||||
If _HostName IsNot Nothing Then
|
Return HostName.Split(".")(0)
|
||||||
If _HostName.Contains(".") Then
|
|
||||||
Return _HostName.Substring(0, _HostName.IndexOf("."))
|
|
||||||
Else
|
|
||||||
Return _HostName
|
|
||||||
End If
|
|
||||||
Else
|
|
||||||
Return _HostIP
|
|
||||||
End If
|
|
||||||
Else
|
|
||||||
Return _HostIP
|
|
||||||
End If
|
|
||||||
End Get
|
End Get
|
||||||
End Property
|
End Property
|
||||||
|
|
||||||
Private _HostIP As String
|
Private _hostIp As String
|
||||||
Public Property HostIP() As String
|
Public Property HostIp() As String
|
||||||
Get
|
Get
|
||||||
Return _HostIP
|
Return _hostIp
|
||||||
End Get
|
End Get
|
||||||
Set(ByVal value As String)
|
Set(ByVal value As String)
|
||||||
_HostIP = value
|
_hostIp = value
|
||||||
End Set
|
End Set
|
||||||
End Property
|
End Property
|
||||||
|
|
||||||
@@ -214,7 +201,7 @@ Namespace Tools
|
|||||||
|
|
||||||
#Region "Methods"
|
#Region "Methods"
|
||||||
Public Sub New(ByVal host As String)
|
Public Sub New(ByVal host As String)
|
||||||
_HostIP = host
|
_hostIp = host
|
||||||
_OpenPorts = New ArrayList
|
_OpenPorts = New ArrayList
|
||||||
_ClosedPorts = New ArrayList
|
_ClosedPorts = New ArrayList
|
||||||
End Sub
|
End Sub
|
||||||
@@ -232,10 +219,10 @@ Namespace Tools
|
|||||||
Try
|
Try
|
||||||
Dim lvI As New ListViewItem
|
Dim lvI As New ListViewItem
|
||||||
lvI.Tag = Me
|
lvI.Tag = Me
|
||||||
If _HostName <> "" Then
|
If _hostName <> "" Then
|
||||||
lvI.Text = _HostName
|
lvI.Text = _hostName
|
||||||
Else
|
Else
|
||||||
lvI.Text = _HostIP
|
lvI.Text = _hostIp
|
||||||
End If
|
End If
|
||||||
|
|
||||||
If Mode = PortScanMode.Import Then
|
If Mode = PortScanMode.Import Then
|
||||||
@@ -463,12 +450,11 @@ Namespace Tools
|
|||||||
Next
|
Next
|
||||||
End If
|
End If
|
||||||
|
|
||||||
If HostAlive = True Then
|
Try
|
||||||
Try
|
sHost.HostName = Net.Dns.GetHostEntry(sHost.HostIp).HostName
|
||||||
sHost.HostName = Net.Dns.GetHostEntry(sHost.HostIP).HostName
|
Catch ex As Exception
|
||||||
Catch ex As Exception
|
End Try
|
||||||
End Try
|
If String.IsNullOrEmpty(sHost.HostName) Then sHost.HostName = sHost.HostIp
|
||||||
End If
|
|
||||||
|
|
||||||
_ScannedHosts.Add(sHost)
|
_ScannedHosts.Add(sHost)
|
||||||
RaiseEvent HostScanned(sHost, hCount, Hosts.Count)
|
RaiseEvent HostScanned(sHost, hCount, Hosts.Count)
|
||||||
|
|||||||
@@ -190,7 +190,7 @@ Namespace Tree
|
|||||||
Dim nNode As New TreeNode
|
Dim nNode As New TreeNode
|
||||||
|
|
||||||
Select Case NodeType
|
Select Case NodeType
|
||||||
Case Type.Connection Or Type.PuttySession
|
Case Type.Connection, Type.PuttySession
|
||||||
nNode.Text = My.Language.strNewConnection
|
nNode.Text = My.Language.strNewConnection
|
||||||
nNode.ImageIndex = Images.Enums.TreeImage.ConnectionClosed
|
nNode.ImageIndex = Images.Enums.TreeImage.ConnectionClosed
|
||||||
nNode.SelectedImageIndex = Images.Enums.TreeImage.ConnectionClosed
|
nNode.SelectedImageIndex = Images.Enums.TreeImage.ConnectionClosed
|
||||||
|
|||||||
35
mRemoteV1/UI/UI.Window.Announcement.Designer.vb
generated
Normal file
35
mRemoteV1/UI/UI.Window.Announcement.Designer.vb
generated
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
Namespace UI
|
||||||
|
Namespace Window
|
||||||
|
Partial Public Class Announcement
|
||||||
|
#Region " Windows Form Designer generated code "
|
||||||
|
Friend WithEvents webBrowser As System.Windows.Forms.WebBrowser
|
||||||
|
|
||||||
|
Private Sub InitializeComponent()
|
||||||
|
Me.webBrowser = New System.Windows.Forms.WebBrowser()
|
||||||
|
Me.SuspendLayout()
|
||||||
|
'
|
||||||
|
'webBrowser
|
||||||
|
'
|
||||||
|
Me.webBrowser.Dock = System.Windows.Forms.DockStyle.Fill
|
||||||
|
Me.webBrowser.Location = New System.Drawing.Point(0, 0)
|
||||||
|
Me.webBrowser.MinimumSize = New System.Drawing.Size(20, 20)
|
||||||
|
Me.webBrowser.Name = "webBrowser"
|
||||||
|
Me.webBrowser.Size = New System.Drawing.Size(549, 474)
|
||||||
|
Me.webBrowser.TabIndex = 0
|
||||||
|
'
|
||||||
|
'Announcement
|
||||||
|
'
|
||||||
|
Me.ClientSize = New System.Drawing.Size(549, 474)
|
||||||
|
Me.Controls.Add(Me.webBrowser)
|
||||||
|
Me.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
|
||||||
|
Me.Icon = Global.mRemoteNG.My.Resources.Resources.News_Icon
|
||||||
|
Me.Name = "Announcement"
|
||||||
|
Me.TabText = "Announcement"
|
||||||
|
Me.Text = "Announcement"
|
||||||
|
Me.ResumeLayout(False)
|
||||||
|
|
||||||
|
End Sub
|
||||||
|
#End Region
|
||||||
|
End Class
|
||||||
|
End Namespace
|
||||||
|
End Namespace
|
||||||
74
mRemoteV1/UI/UI.Window.Announcement.vb
Normal file
74
mRemoteV1/UI/UI.Window.Announcement.vb
Normal file
@@ -0,0 +1,74 @@
|
|||||||
|
Imports System.ComponentModel
|
||||||
|
Imports mRemoteNG.My
|
||||||
|
Imports WeifenLuo.WinFormsUI.Docking
|
||||||
|
Imports mRemoteNG.App.Runtime
|
||||||
|
|
||||||
|
Namespace UI
|
||||||
|
Namespace Window
|
||||||
|
Public Class Announcement
|
||||||
|
Inherits Base
|
||||||
|
#Region "Public Methods"
|
||||||
|
Public Sub New(ByVal panel As DockContent)
|
||||||
|
WindowType = Type.Announcement
|
||||||
|
DockPnl = panel
|
||||||
|
InitializeComponent()
|
||||||
|
End Sub
|
||||||
|
#End Region
|
||||||
|
|
||||||
|
#Region "Private Fields"
|
||||||
|
Private _appUpdate As App.Update
|
||||||
|
#End Region
|
||||||
|
|
||||||
|
#Region "Private Methods"
|
||||||
|
Private Sub Announcement_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
|
||||||
|
AddHandler webBrowser.Navigated, AddressOf webBrowser_Navigated
|
||||||
|
|
||||||
|
ApplyLanguage()
|
||||||
|
CheckForAnnouncement()
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub ApplyLanguage()
|
||||||
|
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub webBrowser_Navigated(sender As Object, e As System.Windows.Forms.WebBrowserNavigatedEventArgs)
|
||||||
|
' This can only be set once the WebBrowser control is shown, it will throw a COM exception otherwise.
|
||||||
|
webBrowser.AllowWebBrowserDrop = False
|
||||||
|
|
||||||
|
RemoveHandler webBrowser.Navigated, AddressOf webBrowser_Navigated
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub CheckForAnnouncement()
|
||||||
|
If _appUpdate Is Nothing Then
|
||||||
|
_appUpdate = New App.Update
|
||||||
|
ElseIf _appUpdate.IsGetAnnouncementInfoRunning Then
|
||||||
|
Return
|
||||||
|
End If
|
||||||
|
|
||||||
|
AddHandler _appUpdate.GetAnnouncementInfoCompletedEvent, AddressOf GetAnnouncementInfoCompleted
|
||||||
|
|
||||||
|
_appUpdate.GetAnnouncementInfoAsync()
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub GetAnnouncementInfoCompleted(ByVal sender As Object, ByVal e As AsyncCompletedEventArgs)
|
||||||
|
If InvokeRequired Then
|
||||||
|
Dim myDelegate As New AsyncCompletedEventHandler(AddressOf GetAnnouncementInfoCompleted)
|
||||||
|
Invoke(myDelegate, New Object() {sender, e})
|
||||||
|
Return
|
||||||
|
End If
|
||||||
|
|
||||||
|
Try
|
||||||
|
RemoveHandler _appUpdate.GetAnnouncementInfoCompletedEvent, AddressOf GetAnnouncementInfoCompleted
|
||||||
|
|
||||||
|
If e.Cancelled Then Return
|
||||||
|
If e.Error IsNot Nothing Then Throw e.Error
|
||||||
|
|
||||||
|
webBrowser.Navigate(_appUpdate.CurrentAnnouncementInfo.Address)
|
||||||
|
Catch ex As Exception
|
||||||
|
MessageCollector.AddExceptionMessage(Language.strUpdateGetAnnouncementInfoFailed, ex)
|
||||||
|
End Try
|
||||||
|
End Sub
|
||||||
|
#End Region
|
||||||
|
End Class
|
||||||
|
End Namespace
|
||||||
|
End Namespace
|
||||||
@@ -1,112 +0,0 @@
|
|||||||
Imports WeifenLuo.WinFormsUI.Docking
|
|
||||||
Imports mRemoteNG.App.Runtime
|
|
||||||
Imports System.Threading
|
|
||||||
|
|
||||||
Namespace UI
|
|
||||||
Namespace Window
|
|
||||||
Public Class Announcement
|
|
||||||
Inherits UI.Window.Base
|
|
||||||
|
|
||||||
#Region "Form Init"
|
|
||||||
Friend WithEvents wBrowser As System.Windows.Forms.WebBrowser
|
|
||||||
|
|
||||||
Private Sub InitializeComponent()
|
|
||||||
Me.wBrowser = New System.Windows.Forms.WebBrowser
|
|
||||||
Me.SuspendLayout()
|
|
||||||
'
|
|
||||||
'wBrowser
|
|
||||||
'
|
|
||||||
Me.wBrowser.Dock = System.Windows.Forms.DockStyle.Fill
|
|
||||||
Me.wBrowser.Location = New System.Drawing.Point(0, 0)
|
|
||||||
Me.wBrowser.MinimumSize = New System.Drawing.Size(20, 20)
|
|
||||||
Me.wBrowser.Name = "wBrowser"
|
|
||||||
Me.wBrowser.Size = New System.Drawing.Size(549, 474)
|
|
||||||
Me.wBrowser.TabIndex = 0
|
|
||||||
'
|
|
||||||
'Announcement
|
|
||||||
'
|
|
||||||
Me.ClientSize = New System.Drawing.Size(549, 474)
|
|
||||||
Me.Controls.Add(Me.wBrowser)
|
|
||||||
Me.Name = "Announcement"
|
|
||||||
Me.TabText = "Announcement"
|
|
||||||
Me.Text = "Announcement"
|
|
||||||
Me.Icon = My.Resources.News_Icon
|
|
||||||
Me.ResumeLayout(False)
|
|
||||||
|
|
||||||
End Sub
|
|
||||||
#End Region
|
|
||||||
|
|
||||||
#Region "Public Methods"
|
|
||||||
Public Sub New(ByVal Panel As DockContent)
|
|
||||||
Me.WindowType = Type.Announcement
|
|
||||||
Me.DockPnl = Panel
|
|
||||||
Me.InitializeComponent()
|
|
||||||
End Sub
|
|
||||||
#End Region
|
|
||||||
|
|
||||||
#Region "Private Methods"
|
|
||||||
Private Sub Announcement_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
|
|
||||||
ApplyLanguage()
|
|
||||||
|
|
||||||
Me.CheckForAnnouncement()
|
|
||||||
End Sub
|
|
||||||
|
|
||||||
Private Sub ApplyLanguage()
|
|
||||||
|
|
||||||
End Sub
|
|
||||||
|
|
||||||
Private Sub Announcement_Shown(sender As Object, e As EventArgs) Handles Me.Shown
|
|
||||||
' This can only be set once the WebBrowser control is shown, it will throw a COM exception otherwise.
|
|
||||||
wBrowser.AllowWebBrowserDrop = False
|
|
||||||
End Sub
|
|
||||||
#End Region
|
|
||||||
|
|
||||||
Private aN As App.Announcement
|
|
||||||
Private uT As Thread
|
|
||||||
|
|
||||||
Public Event AnnouncementCheckCompleted(ByVal AnnouncementAvailable As Boolean)
|
|
||||||
|
|
||||||
Private IsAnnouncementCheckHandlerDeclared As Boolean = False
|
|
||||||
|
|
||||||
Public Sub CheckForAnnouncement()
|
|
||||||
Try
|
|
||||||
uT = New Thread(AddressOf CheckForAnnouncementBG)
|
|
||||||
uT.SetApartmentState(ApartmentState.STA)
|
|
||||||
uT.IsBackground = True
|
|
||||||
|
|
||||||
If Me.IsAnnouncementCheckHandlerDeclared = False Then
|
|
||||||
AddHandler AnnouncementCheckCompleted, AddressOf AnnouncementCheckComplete
|
|
||||||
Me.IsAnnouncementCheckHandlerDeclared = True
|
|
||||||
End If
|
|
||||||
|
|
||||||
uT.Start()
|
|
||||||
Catch ex As Exception
|
|
||||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "CheckForAnnouncement (UI.Window.Announcement) failed" & vbNewLine & ex.Message, True)
|
|
||||||
End Try
|
|
||||||
End Sub
|
|
||||||
|
|
||||||
Private Sub CheckForAnnouncementBG()
|
|
||||||
Try
|
|
||||||
aN = New App.Announcement
|
|
||||||
|
|
||||||
If aN.IsAnnouncementAvailable = True Then
|
|
||||||
RaiseEvent AnnouncementCheckCompleted(True)
|
|
||||||
Else
|
|
||||||
RaiseEvent AnnouncementCheckCompleted(False)
|
|
||||||
End If
|
|
||||||
Catch ex As Exception
|
|
||||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "CheckForAnnouncementBG (UI.Window.Announcement) failed" & vbNewLine & ex.Message, True)
|
|
||||||
End Try
|
|
||||||
End Sub
|
|
||||||
|
|
||||||
Private Sub AnnouncementCheckComplete(ByVal AnnouncementAvailable As Boolean)
|
|
||||||
Try
|
|
||||||
wBrowser.Navigate(aN.CurrentAnnouncementInfo.Url)
|
|
||||||
My.Settings.LastAnnouncement = aN.CurrentAnnouncementInfo.Name
|
|
||||||
Catch ex As Exception
|
|
||||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "AnnouncementCheckComplete (UI.Window.Announcement) failed" & vbNewLine & ex.Message, True)
|
|
||||||
End Try
|
|
||||||
End Sub
|
|
||||||
End Class
|
|
||||||
End Namespace
|
|
||||||
End Namespace
|
|
||||||
@@ -489,21 +489,25 @@ Namespace UI
|
|||||||
pnlCheck6.Visible = True
|
pnlCheck6.Visible = True
|
||||||
|
|
||||||
|
|
||||||
Dim RDP As AxMSTSCLib.AxMsRdpClient6NotSafeForScripting = Nothing
|
Dim rdpClient As AxMSTSCLib.AxMsRdpClient5NotSafeForScripting = Nothing
|
||||||
|
|
||||||
Try
|
Try
|
||||||
RDP = New AxMSTSCLib.AxMsRdpClient6NotSafeForScripting
|
rdpClient = New AxMSTSCLib.AxMsRdpClient5NotSafeForScripting
|
||||||
RDP.CreateControl()
|
rdpClient.CreateControl()
|
||||||
|
|
||||||
Do Until RDP.Created
|
Do Until rdpClient.Created
|
||||||
Thread.Sleep(10)
|
Thread.Sleep(0)
|
||||||
System.Windows.Forms.Application.DoEvents()
|
System.Windows.Forms.Application.DoEvents()
|
||||||
Loop
|
Loop
|
||||||
|
|
||||||
|
If Not New Version(rdpClient.Version) >= mRemoteNG.Connection.Protocol.RDP.Versions.RDC60 Then
|
||||||
|
Throw New Exception(String.Format("Found RDC Client version {0} but version {1} or higher is required.", rdpClient.Version, mRemoteNG.Connection.Protocol.RDP.Versions.RDC60))
|
||||||
|
End If
|
||||||
|
|
||||||
pbCheck1.Image = My.Resources.Good_Symbol
|
pbCheck1.Image = My.Resources.Good_Symbol
|
||||||
lblCheck1.ForeColor = Color.DarkOliveGreen
|
lblCheck1.ForeColor = Color.DarkOliveGreen
|
||||||
lblCheck1.Text = "RDP (Remote Desktop) " & My.Language.strCcCheckSucceeded
|
lblCheck1.Text = "RDP (Remote Desktop) " & My.Language.strCcCheckSucceeded
|
||||||
txtCheck1.Text = String.Format(My.Language.strCcRDPOK, RDP.Version)
|
txtCheck1.Text = String.Format(My.Language.strCcRDPOK, rdpClient.Version)
|
||||||
Catch ex As Exception
|
Catch ex As Exception
|
||||||
pbCheck1.Image = My.Resources.Bad_Symbol
|
pbCheck1.Image = My.Resources.Bad_Symbol
|
||||||
lblCheck1.ForeColor = Color.Firebrick
|
lblCheck1.ForeColor = Color.Firebrick
|
||||||
@@ -514,7 +518,7 @@ Namespace UI
|
|||||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, ex.Message, True)
|
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, ex.Message, True)
|
||||||
End Try
|
End Try
|
||||||
|
|
||||||
If RDP IsNot Nothing Then RDP.Dispose()
|
If rdpClient IsNot Nothing Then rdpClient.Dispose()
|
||||||
|
|
||||||
|
|
||||||
Dim VNC As VncSharp.RemoteDesktop = Nothing
|
Dim VNC As VncSharp.RemoteDesktop = Nothing
|
||||||
@@ -539,7 +543,6 @@ Namespace UI
|
|||||||
txtCheck2.Text = My.Language.strCcVNCFailed
|
txtCheck2.Text = My.Language.strCcVNCFailed
|
||||||
|
|
||||||
MessageCollector.AddMessage(Messages.MessageClass.WarningMsg, "VNC " & errorMsg, True)
|
MessageCollector.AddMessage(Messages.MessageClass.WarningMsg, "VNC " & errorMsg, True)
|
||||||
'mC.AddMessage(Messages.MessageClass.ErrorMsg, ex.Message, True)
|
|
||||||
End Try
|
End Try
|
||||||
|
|
||||||
If VNC IsNot Nothing Then VNC.Dispose()
|
If VNC IsNot Nothing Then VNC.Dispose()
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
Imports mRemoteNG.My
|
Imports mRemoteNG.My
|
||||||
|
Imports mRemoteNG.Connection.Protocol
|
||||||
Imports WeifenLuo.WinFormsUI.Docking
|
Imports WeifenLuo.WinFormsUI.Docking
|
||||||
Imports System.Net.NetworkInformation
|
Imports System.Net.NetworkInformation
|
||||||
Imports mRemoteNG.App.Runtime
|
Imports mRemoteNG.App.Runtime
|
||||||
@@ -710,6 +711,10 @@ Namespace UI
|
|||||||
strHide.Add("RDGatewayPassword")
|
strHide.Add("RDGatewayPassword")
|
||||||
strHide.Add("RDGatewayUsername")
|
strHide.Add("RDGatewayUsername")
|
||||||
End If
|
End If
|
||||||
|
If Not (conI.Resolution = RDP.RDPResolutions.FitToWindow Or _
|
||||||
|
conI.Resolution = RDP.RDPResolutions.Fullscreen) Then
|
||||||
|
strHide.Add("AutomaticResize")
|
||||||
|
End If
|
||||||
Case mRemoteNG.Connection.Protocol.Protocols.VNC
|
Case mRemoteNG.Connection.Protocol.Protocols.VNC
|
||||||
strHide.Add("CacheBitmaps")
|
strHide.Add("CacheBitmaps")
|
||||||
strHide.Add("Colors")
|
strHide.Add("Colors")
|
||||||
@@ -727,6 +732,7 @@ Namespace UI
|
|||||||
strHide.Add("RDGatewayUseConnectionCredentials")
|
strHide.Add("RDGatewayUseConnectionCredentials")
|
||||||
strHide.Add("RDGatewayUsername")
|
strHide.Add("RDGatewayUsername")
|
||||||
strHide.Add("RDPAuthenticationLevel")
|
strHide.Add("RDPAuthenticationLevel")
|
||||||
|
strHide.Add("LoadBalanceInfo")
|
||||||
strHide.Add("RedirectDiskDrives")
|
strHide.Add("RedirectDiskDrives")
|
||||||
strHide.Add("RedirectKeys")
|
strHide.Add("RedirectKeys")
|
||||||
strHide.Add("RedirectPorts")
|
strHide.Add("RedirectPorts")
|
||||||
@@ -735,6 +741,7 @@ Namespace UI
|
|||||||
strHide.Add("RedirectSound")
|
strHide.Add("RedirectSound")
|
||||||
strHide.Add("RenderingEngine")
|
strHide.Add("RenderingEngine")
|
||||||
strHide.Add("Resolution")
|
strHide.Add("Resolution")
|
||||||
|
strHide.Add("AutomaticResize")
|
||||||
strHide.Add("UseConsoleSession")
|
strHide.Add("UseConsoleSession")
|
||||||
strHide.Add("UseCredSsp")
|
strHide.Add("UseCredSsp")
|
||||||
If conI.VNCAuthMode = mRemoteNG.Connection.Protocol.VNC.AuthMode.AuthVNC Then
|
If conI.VNCAuthMode = mRemoteNG.Connection.Protocol.VNC.AuthMode.AuthVNC Then
|
||||||
@@ -764,6 +771,7 @@ Namespace UI
|
|||||||
strHide.Add("RDGatewayUseConnectionCredentials")
|
strHide.Add("RDGatewayUseConnectionCredentials")
|
||||||
strHide.Add("RDGatewayUsername")
|
strHide.Add("RDGatewayUsername")
|
||||||
strHide.Add("RDPAuthenticationLevel")
|
strHide.Add("RDPAuthenticationLevel")
|
||||||
|
strHide.Add("LoadBalanceInfo")
|
||||||
strHide.Add("RedirectDiskDrives")
|
strHide.Add("RedirectDiskDrives")
|
||||||
strHide.Add("RedirectKeys")
|
strHide.Add("RedirectKeys")
|
||||||
strHide.Add("RedirectPorts")
|
strHide.Add("RedirectPorts")
|
||||||
@@ -772,6 +780,7 @@ Namespace UI
|
|||||||
strHide.Add("RedirectSound")
|
strHide.Add("RedirectSound")
|
||||||
strHide.Add("RenderingEngine")
|
strHide.Add("RenderingEngine")
|
||||||
strHide.Add("Resolution")
|
strHide.Add("Resolution")
|
||||||
|
strHide.Add("AutomaticResize")
|
||||||
strHide.Add("UseConsoleSession")
|
strHide.Add("UseConsoleSession")
|
||||||
strHide.Add("UseCredSsp")
|
strHide.Add("UseCredSsp")
|
||||||
strHide.Add("VNCAuthMode")
|
strHide.Add("VNCAuthMode")
|
||||||
@@ -802,6 +811,7 @@ Namespace UI
|
|||||||
strHide.Add("RDGatewayUseConnectionCredentials")
|
strHide.Add("RDGatewayUseConnectionCredentials")
|
||||||
strHide.Add("RDGatewayUsername")
|
strHide.Add("RDGatewayUsername")
|
||||||
strHide.Add("RDPAuthenticationLevel")
|
strHide.Add("RDPAuthenticationLevel")
|
||||||
|
strHide.Add("LoadBalanceInfo")
|
||||||
strHide.Add("RedirectDiskDrives")
|
strHide.Add("RedirectDiskDrives")
|
||||||
strHide.Add("RedirectKeys")
|
strHide.Add("RedirectKeys")
|
||||||
strHide.Add("RedirectPorts")
|
strHide.Add("RedirectPorts")
|
||||||
@@ -810,6 +820,7 @@ Namespace UI
|
|||||||
strHide.Add("RedirectSound")
|
strHide.Add("RedirectSound")
|
||||||
strHide.Add("RenderingEngine")
|
strHide.Add("RenderingEngine")
|
||||||
strHide.Add("Resolution")
|
strHide.Add("Resolution")
|
||||||
|
strHide.Add("AutomaticResize")
|
||||||
strHide.Add("UseConsoleSession")
|
strHide.Add("UseConsoleSession")
|
||||||
strHide.Add("UseCredSsp")
|
strHide.Add("UseCredSsp")
|
||||||
strHide.Add("VNCAuthMode")
|
strHide.Add("VNCAuthMode")
|
||||||
@@ -841,6 +852,7 @@ Namespace UI
|
|||||||
strHide.Add("RDGatewayUseConnectionCredentials")
|
strHide.Add("RDGatewayUseConnectionCredentials")
|
||||||
strHide.Add("RDGatewayUsername")
|
strHide.Add("RDGatewayUsername")
|
||||||
strHide.Add("RDPAuthenticationLevel")
|
strHide.Add("RDPAuthenticationLevel")
|
||||||
|
strHide.Add("LoadBalanceInfo")
|
||||||
strHide.Add("RedirectDiskDrives")
|
strHide.Add("RedirectDiskDrives")
|
||||||
strHide.Add("RedirectKeys")
|
strHide.Add("RedirectKeys")
|
||||||
strHide.Add("RedirectPorts")
|
strHide.Add("RedirectPorts")
|
||||||
@@ -849,6 +861,7 @@ Namespace UI
|
|||||||
strHide.Add("RedirectSound")
|
strHide.Add("RedirectSound")
|
||||||
strHide.Add("RenderingEngine")
|
strHide.Add("RenderingEngine")
|
||||||
strHide.Add("Resolution")
|
strHide.Add("Resolution")
|
||||||
|
strHide.Add("AutomaticResize")
|
||||||
strHide.Add("UseConsoleSession")
|
strHide.Add("UseConsoleSession")
|
||||||
strHide.Add("UseCredSsp")
|
strHide.Add("UseCredSsp")
|
||||||
strHide.Add("Username")
|
strHide.Add("Username")
|
||||||
@@ -881,6 +894,7 @@ Namespace UI
|
|||||||
strHide.Add("RDGatewayUseConnectionCredentials")
|
strHide.Add("RDGatewayUseConnectionCredentials")
|
||||||
strHide.Add("RDGatewayUsername")
|
strHide.Add("RDGatewayUsername")
|
||||||
strHide.Add("RDPAuthenticationLevel")
|
strHide.Add("RDPAuthenticationLevel")
|
||||||
|
strHide.Add("LoadBalanceInfo")
|
||||||
strHide.Add("RedirectDiskDrives")
|
strHide.Add("RedirectDiskDrives")
|
||||||
strHide.Add("RedirectKeys")
|
strHide.Add("RedirectKeys")
|
||||||
strHide.Add("RedirectPorts")
|
strHide.Add("RedirectPorts")
|
||||||
@@ -889,6 +903,7 @@ Namespace UI
|
|||||||
strHide.Add("RedirectSound")
|
strHide.Add("RedirectSound")
|
||||||
strHide.Add("RenderingEngine")
|
strHide.Add("RenderingEngine")
|
||||||
strHide.Add("Resolution")
|
strHide.Add("Resolution")
|
||||||
|
strHide.Add("AutomaticResize")
|
||||||
strHide.Add("UseConsoleSession")
|
strHide.Add("UseConsoleSession")
|
||||||
strHide.Add("UseCredSsp")
|
strHide.Add("UseCredSsp")
|
||||||
strHide.Add("Username")
|
strHide.Add("Username")
|
||||||
@@ -921,6 +936,7 @@ Namespace UI
|
|||||||
strHide.Add("RDGatewayUseConnectionCredentials")
|
strHide.Add("RDGatewayUseConnectionCredentials")
|
||||||
strHide.Add("RDGatewayUsername")
|
strHide.Add("RDGatewayUsername")
|
||||||
strHide.Add("RDPAuthenticationLevel")
|
strHide.Add("RDPAuthenticationLevel")
|
||||||
|
strHide.Add("LoadBalanceInfo")
|
||||||
strHide.Add("RedirectDiskDrives")
|
strHide.Add("RedirectDiskDrives")
|
||||||
strHide.Add("RedirectKeys")
|
strHide.Add("RedirectKeys")
|
||||||
strHide.Add("RedirectPorts")
|
strHide.Add("RedirectPorts")
|
||||||
@@ -929,6 +945,7 @@ Namespace UI
|
|||||||
strHide.Add("RedirectSound")
|
strHide.Add("RedirectSound")
|
||||||
strHide.Add("RenderingEngine")
|
strHide.Add("RenderingEngine")
|
||||||
strHide.Add("Resolution")
|
strHide.Add("Resolution")
|
||||||
|
strHide.Add("AutomaticResize")
|
||||||
strHide.Add("UseConsoleSession")
|
strHide.Add("UseConsoleSession")
|
||||||
strHide.Add("UseCredSsp")
|
strHide.Add("UseCredSsp")
|
||||||
strHide.Add("Username")
|
strHide.Add("Username")
|
||||||
@@ -961,6 +978,7 @@ Namespace UI
|
|||||||
strHide.Add("RDGatewayUseConnectionCredentials")
|
strHide.Add("RDGatewayUseConnectionCredentials")
|
||||||
strHide.Add("RDGatewayUsername")
|
strHide.Add("RDGatewayUsername")
|
||||||
strHide.Add("RDPAuthenticationLevel")
|
strHide.Add("RDPAuthenticationLevel")
|
||||||
|
strHide.Add("LoadBalanceInfo")
|
||||||
strHide.Add("RedirectDiskDrives")
|
strHide.Add("RedirectDiskDrives")
|
||||||
strHide.Add("RedirectKeys")
|
strHide.Add("RedirectKeys")
|
||||||
strHide.Add("RedirectPorts")
|
strHide.Add("RedirectPorts")
|
||||||
@@ -968,6 +986,7 @@ Namespace UI
|
|||||||
strHide.Add("RedirectSmartCards")
|
strHide.Add("RedirectSmartCards")
|
||||||
strHide.Add("RedirectSound")
|
strHide.Add("RedirectSound")
|
||||||
strHide.Add("Resolution")
|
strHide.Add("Resolution")
|
||||||
|
strHide.Add("AutomaticResize")
|
||||||
strHide.Add("UseConsoleSession")
|
strHide.Add("UseConsoleSession")
|
||||||
strHide.Add("UseCredSsp")
|
strHide.Add("UseCredSsp")
|
||||||
strHide.Add("VNCAuthMode")
|
strHide.Add("VNCAuthMode")
|
||||||
@@ -999,12 +1018,14 @@ Namespace UI
|
|||||||
strHide.Add("RDGatewayUseConnectionCredentials")
|
strHide.Add("RDGatewayUseConnectionCredentials")
|
||||||
strHide.Add("RDGatewayUsername")
|
strHide.Add("RDGatewayUsername")
|
||||||
strHide.Add("RDPAuthenticationLevel")
|
strHide.Add("RDPAuthenticationLevel")
|
||||||
|
strHide.Add("LoadBalanceInfo")
|
||||||
strHide.Add("RedirectDiskDrives")
|
strHide.Add("RedirectDiskDrives")
|
||||||
strHide.Add("RedirectKeys")
|
strHide.Add("RedirectKeys")
|
||||||
strHide.Add("RedirectPorts")
|
strHide.Add("RedirectPorts")
|
||||||
strHide.Add("RedirectPrinters")
|
strHide.Add("RedirectPrinters")
|
||||||
strHide.Add("RedirectSmartCards")
|
strHide.Add("RedirectSmartCards")
|
||||||
strHide.Add("RedirectSound;Resolution")
|
strHide.Add("RedirectSound;Resolution")
|
||||||
|
strHide.Add("AutomaticResize")
|
||||||
strHide.Add("UseConsoleSession")
|
strHide.Add("UseConsoleSession")
|
||||||
strHide.Add("UseCredSsp")
|
strHide.Add("UseCredSsp")
|
||||||
strHide.Add("VNCAuthMode")
|
strHide.Add("VNCAuthMode")
|
||||||
@@ -1033,6 +1054,7 @@ Namespace UI
|
|||||||
strHide.Add("RDGatewayUseConnectionCredentials")
|
strHide.Add("RDGatewayUseConnectionCredentials")
|
||||||
strHide.Add("RDGatewayUsername")
|
strHide.Add("RDGatewayUsername")
|
||||||
strHide.Add("RDPAuthenticationLevel")
|
strHide.Add("RDPAuthenticationLevel")
|
||||||
|
strHide.Add("LoadBalanceInfo")
|
||||||
strHide.Add("RedirectDiskDrives")
|
strHide.Add("RedirectDiskDrives")
|
||||||
strHide.Add("RedirectKeys")
|
strHide.Add("RedirectKeys")
|
||||||
strHide.Add("RedirectPorts")
|
strHide.Add("RedirectPorts")
|
||||||
@@ -1040,6 +1062,7 @@ Namespace UI
|
|||||||
strHide.Add("RedirectSmartCards")
|
strHide.Add("RedirectSmartCards")
|
||||||
strHide.Add("RedirectSound")
|
strHide.Add("RedirectSound")
|
||||||
strHide.Add("RenderingEngine")
|
strHide.Add("RenderingEngine")
|
||||||
|
strHide.Add("AutomaticResize")
|
||||||
strHide.Add("UseConsoleSession")
|
strHide.Add("UseConsoleSession")
|
||||||
strHide.Add("UseCredSsp")
|
strHide.Add("UseCredSsp")
|
||||||
strHide.Add("VNCAuthMode")
|
strHide.Add("VNCAuthMode")
|
||||||
@@ -1070,6 +1093,7 @@ Namespace UI
|
|||||||
strHide.Add("RDGatewayUseConnectionCredentials")
|
strHide.Add("RDGatewayUseConnectionCredentials")
|
||||||
strHide.Add("RDGatewayUsername")
|
strHide.Add("RDGatewayUsername")
|
||||||
strHide.Add("RDPAuthenticationLevel")
|
strHide.Add("RDPAuthenticationLevel")
|
||||||
|
strHide.Add("LoadBalanceInfo")
|
||||||
strHide.Add("RedirectDiskDrives")
|
strHide.Add("RedirectDiskDrives")
|
||||||
strHide.Add("RedirectKeys")
|
strHide.Add("RedirectKeys")
|
||||||
strHide.Add("RedirectPorts")
|
strHide.Add("RedirectPorts")
|
||||||
@@ -1078,6 +1102,7 @@ Namespace UI
|
|||||||
strHide.Add("RedirectSound")
|
strHide.Add("RedirectSound")
|
||||||
strHide.Add("RenderingEngine")
|
strHide.Add("RenderingEngine")
|
||||||
strHide.Add("Resolution")
|
strHide.Add("Resolution")
|
||||||
|
strHide.Add("AutomaticResize")
|
||||||
strHide.Add("UseConsoleSession")
|
strHide.Add("UseConsoleSession")
|
||||||
strHide.Add("UseCredSsp")
|
strHide.Add("UseCredSsp")
|
||||||
strHide.Add("VNCAuthMode")
|
strHide.Add("VNCAuthMode")
|
||||||
|
|||||||
99
mRemoteV1/UI/UI.Window.Sessions.Designer.vb
generated
Normal file
99
mRemoteV1/UI/UI.Window.Sessions.Designer.vb
generated
Normal file
@@ -0,0 +1,99 @@
|
|||||||
|
Namespace UI
|
||||||
|
Namespace Window
|
||||||
|
Partial Public Class Sessions
|
||||||
|
#Region " Windows Form Designer generated code "
|
||||||
|
Private components As System.ComponentModel.IContainer
|
||||||
|
Friend WithEvents sessionMenuRetrieve As System.Windows.Forms.ToolStripMenuItem
|
||||||
|
Friend WithEvents sessionMenuLogoff As System.Windows.Forms.ToolStripMenuItem
|
||||||
|
Friend WithEvents sessionList As System.Windows.Forms.ListView
|
||||||
|
|
||||||
|
Private Sub InitializeComponent()
|
||||||
|
Me.components = New System.ComponentModel.Container()
|
||||||
|
Dim sessionMenu As System.Windows.Forms.ContextMenuStrip
|
||||||
|
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(Sessions))
|
||||||
|
Me.sessionMenuRetrieve = New System.Windows.Forms.ToolStripMenuItem()
|
||||||
|
Me.sessionMenuLogoff = New System.Windows.Forms.ToolStripMenuItem()
|
||||||
|
Me.sessionList = New System.Windows.Forms.ListView()
|
||||||
|
Me.sessionUsernameColumn = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader)
|
||||||
|
Me.sessionActivityColumn = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader)
|
||||||
|
Me.sessionTypeColumn = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader)
|
||||||
|
sessionMenu = New System.Windows.Forms.ContextMenuStrip(Me.components)
|
||||||
|
sessionMenu.SuspendLayout()
|
||||||
|
Me.SuspendLayout()
|
||||||
|
'
|
||||||
|
'sessionMenu
|
||||||
|
'
|
||||||
|
sessionMenu.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.sessionMenuRetrieve, Me.sessionMenuLogoff})
|
||||||
|
sessionMenu.Name = "cMenSession"
|
||||||
|
sessionMenu.Size = New System.Drawing.Size(153, 70)
|
||||||
|
AddHandler sessionMenu.Opening, AddressOf Me.menuSession_Opening
|
||||||
|
'
|
||||||
|
'sessionMenuRetrieve
|
||||||
|
'
|
||||||
|
Me.sessionMenuRetrieve.Image = Global.mRemoteNG.My.Resources.Resources.Refresh
|
||||||
|
Me.sessionMenuRetrieve.Name = "sessionMenuRetrieve"
|
||||||
|
Me.sessionMenuRetrieve.Size = New System.Drawing.Size(152, 22)
|
||||||
|
Me.sessionMenuRetrieve.Text = "Retrieve"
|
||||||
|
'
|
||||||
|
'sessionMenuLogoff
|
||||||
|
'
|
||||||
|
Me.sessionMenuLogoff.Image = Global.mRemoteNG.My.Resources.Resources.Session_LogOff
|
||||||
|
Me.sessionMenuLogoff.Name = "sessionMenuLogoff"
|
||||||
|
Me.sessionMenuLogoff.Size = New System.Drawing.Size(152, 22)
|
||||||
|
Me.sessionMenuLogoff.Text = Global.mRemoteNG.My.Language.strLogOff
|
||||||
|
'
|
||||||
|
'sessionList
|
||||||
|
'
|
||||||
|
Me.sessionList.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _
|
||||||
|
Or System.Windows.Forms.AnchorStyles.Left) _
|
||||||
|
Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
|
||||||
|
Me.sessionList.BorderStyle = System.Windows.Forms.BorderStyle.None
|
||||||
|
Me.sessionList.Columns.AddRange(New System.Windows.Forms.ColumnHeader() {Me.sessionUsernameColumn, Me.sessionActivityColumn, Me.sessionTypeColumn})
|
||||||
|
Me.sessionList.ContextMenuStrip = sessionMenu
|
||||||
|
Me.sessionList.FullRowSelect = True
|
||||||
|
Me.sessionList.GridLines = True
|
||||||
|
Me.sessionList.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable
|
||||||
|
Me.sessionList.Location = New System.Drawing.Point(0, -1)
|
||||||
|
Me.sessionList.MultiSelect = False
|
||||||
|
Me.sessionList.Name = "sessionList"
|
||||||
|
Me.sessionList.ShowGroups = False
|
||||||
|
Me.sessionList.Size = New System.Drawing.Size(242, 174)
|
||||||
|
Me.sessionList.TabIndex = 0
|
||||||
|
Me.sessionList.UseCompatibleStateImageBehavior = False
|
||||||
|
Me.sessionList.View = System.Windows.Forms.View.Details
|
||||||
|
'
|
||||||
|
'sessionUsernameColumn
|
||||||
|
'
|
||||||
|
Me.sessionUsernameColumn.Text = Global.mRemoteNG.My.Language.strColumnUsername
|
||||||
|
Me.sessionUsernameColumn.Width = 80
|
||||||
|
'
|
||||||
|
'sessionActivityColumn
|
||||||
|
'
|
||||||
|
Me.sessionActivityColumn.Text = Global.mRemoteNG.My.Language.strActivity
|
||||||
|
'
|
||||||
|
'sessionTypeColumn
|
||||||
|
'
|
||||||
|
Me.sessionTypeColumn.Text = Global.mRemoteNG.My.Language.strType
|
||||||
|
Me.sessionTypeColumn.Width = 80
|
||||||
|
'
|
||||||
|
'Sessions
|
||||||
|
'
|
||||||
|
Me.ClientSize = New System.Drawing.Size(242, 173)
|
||||||
|
Me.Controls.Add(Me.sessionList)
|
||||||
|
Me.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
|
||||||
|
Me.HideOnClose = True
|
||||||
|
Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon)
|
||||||
|
Me.Name = "Sessions"
|
||||||
|
Me.TabText = Global.mRemoteNG.My.Language.strMenuSessions
|
||||||
|
Me.Text = "Sessions"
|
||||||
|
sessionMenu.ResumeLayout(False)
|
||||||
|
Me.ResumeLayout(False)
|
||||||
|
|
||||||
|
End Sub
|
||||||
|
Friend WithEvents sessionUsernameColumn As System.Windows.Forms.ColumnHeader
|
||||||
|
Friend WithEvents sessionActivityColumn As System.Windows.Forms.ColumnHeader
|
||||||
|
Friend WithEvents sessionTypeColumn As System.Windows.Forms.ColumnHeader
|
||||||
|
#End Region
|
||||||
|
End Class
|
||||||
|
End Namespace
|
||||||
|
End Namespace
|
||||||
@@ -117,7 +117,10 @@
|
|||||||
<resheader name="writer">
|
<resheader name="writer">
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
<metadata name="cMenSession.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
<metadata name="sessionMenu.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>False</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="sessionMenu.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||||
<value>14, 16</value>
|
<value>14, 16</value>
|
||||||
</metadata>
|
</metadata>
|
||||||
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
|||||||
@@ -1,412 +1,268 @@
|
|||||||
Imports WeifenLuo.WinFormsUI.Docking
|
Imports System.Threading
|
||||||
|
Imports mRemoteNG.My
|
||||||
|
Imports WeifenLuo.WinFormsUI.Docking
|
||||||
Imports mRemoteNG.App.Runtime
|
Imports mRemoteNG.App.Runtime
|
||||||
|
|
||||||
Namespace UI
|
Namespace UI
|
||||||
Namespace Window
|
Namespace Window
|
||||||
Public Class Sessions
|
Public Class Sessions
|
||||||
Inherits UI.Window.Base
|
Inherits Base
|
||||||
|
#Region "Private Fields"
|
||||||
#Region "Form Init"
|
Private _getSessionsThread As Thread
|
||||||
Friend WithEvents clmSesType As System.Windows.Forms.ColumnHeader
|
Private _retrieved As Boolean = False
|
||||||
Friend WithEvents clmSesUsername As System.Windows.Forms.ColumnHeader
|
|
||||||
Friend WithEvents clmSesActivity As System.Windows.Forms.ColumnHeader
|
|
||||||
Friend WithEvents cMenSession As System.Windows.Forms.ContextMenuStrip
|
|
||||||
Private components As System.ComponentModel.IContainer
|
|
||||||
Friend WithEvents cMenSessionRefresh As System.Windows.Forms.ToolStripMenuItem
|
|
||||||
Friend WithEvents cMenSessionLogOff As System.Windows.Forms.ToolStripMenuItem
|
|
||||||
Friend WithEvents lvSessions As System.Windows.Forms.ListView
|
|
||||||
|
|
||||||
Private Sub InitializeComponent()
|
|
||||||
Me.components = New System.ComponentModel.Container
|
|
||||||
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(Sessions))
|
|
||||||
Me.lvSessions = New System.Windows.Forms.ListView
|
|
||||||
Me.clmSesUsername = New System.Windows.Forms.ColumnHeader
|
|
||||||
Me.clmSesActivity = New System.Windows.Forms.ColumnHeader
|
|
||||||
Me.clmSesType = New System.Windows.Forms.ColumnHeader
|
|
||||||
Me.cMenSession = New System.Windows.Forms.ContextMenuStrip(Me.components)
|
|
||||||
Me.cMenSessionRefresh = New System.Windows.Forms.ToolStripMenuItem
|
|
||||||
Me.cMenSessionLogOff = New System.Windows.Forms.ToolStripMenuItem
|
|
||||||
Me.cMenSession.SuspendLayout()
|
|
||||||
Me.SuspendLayout()
|
|
||||||
'
|
|
||||||
'lvSessions
|
|
||||||
'
|
|
||||||
Me.lvSessions.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _
|
|
||||||
Or System.Windows.Forms.AnchorStyles.Left) _
|
|
||||||
Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
|
|
||||||
Me.lvSessions.BorderStyle = System.Windows.Forms.BorderStyle.None
|
|
||||||
Me.lvSessions.Columns.AddRange(New System.Windows.Forms.ColumnHeader() {Me.clmSesUsername, Me.clmSesActivity, Me.clmSesType})
|
|
||||||
Me.lvSessions.ContextMenuStrip = Me.cMenSession
|
|
||||||
Me.lvSessions.FullRowSelect = True
|
|
||||||
Me.lvSessions.GridLines = True
|
|
||||||
Me.lvSessions.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable
|
|
||||||
Me.lvSessions.Location = New System.Drawing.Point(0, -1)
|
|
||||||
Me.lvSessions.MultiSelect = False
|
|
||||||
Me.lvSessions.Name = "lvSessions"
|
|
||||||
Me.lvSessions.ShowGroups = False
|
|
||||||
Me.lvSessions.Size = New System.Drawing.Size(242, 174)
|
|
||||||
Me.lvSessions.TabIndex = 0
|
|
||||||
Me.lvSessions.UseCompatibleStateImageBehavior = False
|
|
||||||
Me.lvSessions.View = System.Windows.Forms.View.Details
|
|
||||||
'
|
|
||||||
'clmSesUsername
|
|
||||||
'
|
|
||||||
Me.clmSesUsername.Text = My.Language.strColumnUsername
|
|
||||||
Me.clmSesUsername.Width = 80
|
|
||||||
'
|
|
||||||
'clmSesActivity
|
|
||||||
'
|
|
||||||
Me.clmSesActivity.Text = My.Language.strActivity
|
|
||||||
'
|
|
||||||
'clmSesType
|
|
||||||
'
|
|
||||||
Me.clmSesType.Text = My.Language.strType
|
|
||||||
Me.clmSesType.Width = 80
|
|
||||||
'
|
|
||||||
'cMenSession
|
|
||||||
'
|
|
||||||
Me.cMenSession.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.cMenSessionRefresh, Me.cMenSessionLogOff})
|
|
||||||
Me.cMenSession.Name = "cMenSession"
|
|
||||||
Me.cMenSession.Size = New System.Drawing.Size(124, 48)
|
|
||||||
'
|
|
||||||
'cMenSessionRefresh
|
|
||||||
'
|
|
||||||
Me.cMenSessionRefresh.Image = Global.mRemoteNG.My.Resources.Resources.Refresh
|
|
||||||
Me.cMenSessionRefresh.Name = "cMenSessionRefresh"
|
|
||||||
Me.cMenSessionRefresh.Size = New System.Drawing.Size(123, 22)
|
|
||||||
Me.cMenSessionRefresh.Text = My.Language.strRefresh
|
|
||||||
'
|
|
||||||
'cMenSessionLogOff
|
|
||||||
'
|
|
||||||
Me.cMenSessionLogOff.Image = Global.mRemoteNG.My.Resources.Resources.Session_LogOff
|
|
||||||
Me.cMenSessionLogOff.Name = "cMenSessionLogOff"
|
|
||||||
Me.cMenSessionLogOff.Size = New System.Drawing.Size(123, 22)
|
|
||||||
Me.cMenSessionLogOff.Text = My.Language.strLogOff
|
|
||||||
'
|
|
||||||
'Sessions
|
|
||||||
'
|
|
||||||
Me.ClientSize = New System.Drawing.Size(242, 173)
|
|
||||||
Me.Controls.Add(Me.lvSessions)
|
|
||||||
Me.HideOnClose = True
|
|
||||||
Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon)
|
|
||||||
Me.Name = "Sessions"
|
|
||||||
Me.TabText = My.Language.strMenuSessions
|
|
||||||
Me.Text = My.Language.strMenuSessions
|
|
||||||
Me.cMenSession.ResumeLayout(False)
|
|
||||||
Me.ResumeLayout(False)
|
|
||||||
|
|
||||||
End Sub
|
|
||||||
#End Region
|
|
||||||
|
|
||||||
#Region "Private Properties"
|
|
||||||
Private tServerName As String
|
|
||||||
Private tUserName As String
|
|
||||||
Private tPassword As String
|
|
||||||
Private tDomain As String
|
|
||||||
Private tSessionID As Long
|
|
||||||
Private tKillingSession As Boolean
|
|
||||||
Private threadSessions As Threading.Thread
|
|
||||||
Private tServerHandle As Long
|
|
||||||
#End Region
|
|
||||||
|
|
||||||
#Region "Public Properties"
|
|
||||||
Private _CurrentHost As String
|
|
||||||
Public Property CurrentHost() As String
|
|
||||||
Get
|
|
||||||
Return Me._CurrentHost
|
|
||||||
End Get
|
|
||||||
Set(ByVal value As String)
|
|
||||||
Me._CurrentHost = value
|
|
||||||
End Set
|
|
||||||
End Property
|
|
||||||
#End Region
|
|
||||||
|
|
||||||
#Region "Form Stuff"
|
|
||||||
Private Sub Sessions_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
|
|
||||||
ApplyLanguage()
|
|
||||||
End Sub
|
|
||||||
|
|
||||||
Private Sub ApplyLanguage()
|
|
||||||
clmSesUsername.Text = My.Language.strColumnUsername
|
|
||||||
clmSesActivity.Text = My.Language.strActivity
|
|
||||||
clmSesType.Text = My.Language.strType
|
|
||||||
cMenSessionRefresh.Text = My.Language.strRefresh
|
|
||||||
cMenSessionLogOff.Text = My.Language.strLogOff
|
|
||||||
TabText = My.Language.strMenuSessions
|
|
||||||
Text = My.Language.strMenuSessions
|
|
||||||
End Sub
|
|
||||||
#End Region
|
|
||||||
|
|
||||||
#Region "Private Methods"
|
|
||||||
Private Sub GetSessionsBG()
|
|
||||||
Try
|
|
||||||
Dim tS As New mRemoteNG.Connection.Protocol.RDP.TerminalSessions
|
|
||||||
Dim sU As New Security.Impersonator
|
|
||||||
Dim tsSessions As New mRemoteNG.Connection.Protocol.RDP.Sessions
|
|
||||||
|
|
||||||
sU.StartImpersonation(tDomain, tUserName, tPassword)
|
|
||||||
|
|
||||||
Try
|
|
||||||
'Trace.WriteLine("Opening connection to server: " & tServerName)
|
|
||||||
If tS.OpenConnection(tServerName) = True Then
|
|
||||||
tServerHandle = tS.ServerHandle
|
|
||||||
'Trace.WriteLine("Trying to get sessions")
|
|
||||||
tsSessions = tS.GetSessions
|
|
||||||
End If
|
|
||||||
Catch ex As Exception
|
|
||||||
End Try
|
|
||||||
|
|
||||||
Dim i As Integer = 0
|
|
||||||
|
|
||||||
'Trace.WriteLine("Sessions Count: " & tsSessions.Count)
|
|
||||||
|
|
||||||
If tServerName = Me._CurrentHost Then
|
|
||||||
For i = 0 To tsSessions.ItemsCount - 1
|
|
||||||
Dim lItem As New ListViewItem
|
|
||||||
lItem.Tag = tsSessions(i).SessionID
|
|
||||||
lItem.Text = tsSessions(i).SessionUser
|
|
||||||
lItem.SubItems.Add(tsSessions(i).SessionState)
|
|
||||||
lItem.SubItems.Add(Replace(tsSessions(i).SessionName, vbNewLine, ""))
|
|
||||||
|
|
||||||
'Trace.WriteLine("Session " & i & ": " & tsSessions(i).SessionUser)
|
|
||||||
|
|
||||||
AddToList(lItem)
|
|
||||||
Next
|
|
||||||
End If
|
|
||||||
|
|
||||||
sU.StopImpersonation()
|
|
||||||
sU = Nothing
|
|
||||||
tS.CloseConnection(tServerHandle)
|
|
||||||
Catch ex As Exception
|
|
||||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strSessionGetFailed & vbNewLine & ex.Message, True)
|
|
||||||
End Try
|
|
||||||
End Sub
|
|
||||||
|
|
||||||
Private Sub KillSessionBG()
|
|
||||||
Try
|
|
||||||
If tUserName = "" Or tPassword = "" Then
|
|
||||||
'Trace.WriteLine("No Logon Info")
|
|
||||||
Exit Sub
|
|
||||||
End If
|
|
||||||
|
|
||||||
Dim ts As New mRemoteNG.Connection.Protocol.RDP.TerminalSessions
|
|
||||||
Dim sU As New Security.Impersonator
|
|
||||||
|
|
||||||
sU.StartImpersonation(tDomain, tUserName, tPassword)
|
|
||||||
|
|
||||||
Try
|
|
||||||
If ts.OpenConnection(tServerName) = True Then
|
|
||||||
If ts.KillSession(tSessionID) = True Then
|
|
||||||
sU.StopImpersonation()
|
|
||||||
'Trace.WriteLine("Successfully killed session: " & tSessionID)
|
|
||||||
Else
|
|
||||||
sU.StopImpersonation()
|
|
||||||
'Trace.WriteLine("Killing session " & tSessionID & " failed")
|
|
||||||
End If
|
|
||||||
End If
|
|
||||||
Catch ex As Exception
|
|
||||||
sU.StopImpersonation()
|
|
||||||
End Try
|
|
||||||
|
|
||||||
sU.StopImpersonation()
|
|
||||||
|
|
||||||
ClearList()
|
|
||||||
|
|
||||||
GetSessionsBG()
|
|
||||||
Catch ex As Exception
|
|
||||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strSessionKillFailed & vbNewLine & ex.Message, True)
|
|
||||||
End Try
|
|
||||||
End Sub
|
|
||||||
|
|
||||||
|
|
||||||
Delegate Sub AddToListCB(ByVal [ListItem] As ListViewItem)
|
|
||||||
Private Sub AddToList(ByVal [ListItem] As ListViewItem)
|
|
||||||
If Me.lvSessions.InvokeRequired Then
|
|
||||||
Dim d As New AddToListCB(AddressOf AddToList)
|
|
||||||
Me.lvSessions.Invoke(d, New Object() {[ListItem]})
|
|
||||||
Else
|
|
||||||
Me.lvSessions.Items.Add(ListItem)
|
|
||||||
End If
|
|
||||||
End Sub
|
|
||||||
|
|
||||||
Delegate Sub ClearListCB()
|
|
||||||
Private Sub ClearList()
|
|
||||||
If Me.lvSessions.InvokeRequired Then
|
|
||||||
Dim d As New ClearListCB(AddressOf ClearList)
|
|
||||||
Me.lvSessions.Invoke(d)
|
|
||||||
Else
|
|
||||||
Me.lvSessions.Items.Clear()
|
|
||||||
End If
|
|
||||||
End Sub
|
|
||||||
|
|
||||||
Private Sub cMenSessionRefresh_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cMenSessionRefresh.Click
|
|
||||||
Me.GetSessions()
|
|
||||||
End Sub
|
|
||||||
|
|
||||||
Private Sub cMenSessionLogOff_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cMenSessionLogOff.Click
|
|
||||||
Me.KillSession()
|
|
||||||
End Sub
|
|
||||||
#End Region
|
#End Region
|
||||||
|
|
||||||
#Region "Public Methods"
|
#Region "Public Methods"
|
||||||
Public Sub New(ByVal Panel As DockContent)
|
Public Sub New(ByVal panel As DockContent)
|
||||||
Me.WindowType = Type.Sessions
|
WindowType = Type.Sessions
|
||||||
Me.DockPnl = Panel
|
DockPnl = panel
|
||||||
Me.InitializeComponent()
|
InitializeComponent()
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
Public Sub GetSessionsAuto()
|
Public Sub GetSessions(Optional ByVal auto As Boolean = False)
|
||||||
|
ClearList()
|
||||||
|
If auto Then
|
||||||
|
_retrieved = False
|
||||||
|
If Not Settings.AutomaticallyGetSessionInfo Then Return
|
||||||
|
End If
|
||||||
|
|
||||||
Try
|
Try
|
||||||
Dim nowHost As String = ""
|
Dim connectionInfo As mRemoteNG.Connection.Info = TryCast(mRemoteNG.Tree.Node.SelectedNode.Tag, mRemoteNG.Connection.Info)
|
||||||
|
If connectionInfo Is Nothing Then Return
|
||||||
|
|
||||||
If TypeOf mRemoteNG.Tree.Node.SelectedNode.Tag Is mRemoteNG.Connection.Info Then
|
If Not (connectionInfo.Protocol = mRemoteNG.Connection.Protocol.Protocols.RDP Or _
|
||||||
nowHost = TryCast(mRemoteNG.Tree.Node.SelectedNode.Tag, mRemoteNG.Connection.Info).Hostname
|
connectionInfo.Protocol = mRemoteNG.Connection.Protocol.Protocols.ICA) Then Return
|
||||||
Else
|
|
||||||
Me.ClearList()
|
|
||||||
Exit Sub
|
|
||||||
End If
|
|
||||||
|
|
||||||
If My.Settings.AutomaticallyGetSessionInfo And Me._CurrentHost = nowHost Then
|
Dim data As New BackgroundData
|
||||||
Dim conI As mRemoteNG.Connection.Info = mRemoteNG.Tree.Node.SelectedNode.Tag
|
With data
|
||||||
|
.Hostname = connectionInfo.Hostname
|
||||||
|
.Username = connectionInfo.Username
|
||||||
|
.Password = connectionInfo.Password
|
||||||
|
.Domain = connectionInfo.Domain
|
||||||
|
|
||||||
If conI.Protocol = mRemoteNG.Connection.Protocol.Protocols.RDP Or conI.Protocol = mRemoteNG.Connection.Protocol.Protocols.ICA Then
|
If Settings.EmptyCredentials = "custom" Then
|
||||||
'continue
|
If .Username = "" Then
|
||||||
Else
|
.Username = Settings.DefaultUsername
|
||||||
Me.ClearList()
|
|
||||||
Exit Sub
|
|
||||||
End If
|
|
||||||
|
|
||||||
Dim sUser As String = conI.Username
|
|
||||||
Dim sPass As String = conI.Password
|
|
||||||
Dim sDom As String = conI.Domain
|
|
||||||
|
|
||||||
If My.Settings.EmptyCredentials = "custom" Then
|
|
||||||
If sUser = "" Then
|
|
||||||
sUser = My.Settings.DefaultUsername
|
|
||||||
End If
|
End If
|
||||||
|
|
||||||
If sPass = "" Then
|
If .Password = "" Then
|
||||||
sPass = Security.Crypt.Decrypt(My.Settings.DefaultPassword, App.Info.General.EncryptionKey)
|
.Password = Security.Crypt.Decrypt(Settings.DefaultPassword, App.Info.General.EncryptionKey)
|
||||||
End If
|
End If
|
||||||
|
|
||||||
If sDom = "" Then
|
If .Domain = "" Then
|
||||||
sDom = My.Settings.DefaultDomain
|
.Domain = Settings.DefaultDomain
|
||||||
End If
|
End If
|
||||||
End If
|
End If
|
||||||
|
End With
|
||||||
|
|
||||||
Me.GetSessions(conI.Hostname, sUser, sPass, sDom)
|
If _getSessionsThread IsNot Nothing Then
|
||||||
|
If _getSessionsThread.IsAlive Then _getSessionsThread.Abort()
|
||||||
End If
|
End If
|
||||||
|
_getSessionsThread = New Thread(AddressOf GetSessionsBackground)
|
||||||
|
_getSessionsThread.SetApartmentState(ApartmentState.STA)
|
||||||
|
_getSessionsThread.IsBackground = True
|
||||||
|
_getSessionsThread.Start(data)
|
||||||
Catch ex As Exception
|
Catch ex As Exception
|
||||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "GetSessionsAuto (UI.Window.Sessions) failed" & vbNewLine & ex.Message, True)
|
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "UI.Window.Sessions.GetSessions() failed." & vbNewLine & ex.Message, True)
|
||||||
End Try
|
|
||||||
End Sub
|
|
||||||
|
|
||||||
Public Sub GetSessions()
|
|
||||||
If mRemoteNG.Tree.Node.SelectedNode Is Nothing Then
|
|
||||||
Exit Sub
|
|
||||||
End If
|
|
||||||
|
|
||||||
If TypeOf mRemoteNG.Tree.Node.SelectedNode.Tag Is mRemoteNG.Connection.Info Then
|
|
||||||
'continue
|
|
||||||
Else
|
|
||||||
Me.ClearList()
|
|
||||||
Exit Sub
|
|
||||||
End If
|
|
||||||
|
|
||||||
Dim conI As mRemoteNG.Connection.Info = mRemoteNG.Tree.Node.SelectedNode.Tag
|
|
||||||
|
|
||||||
If conI.Protocol = mRemoteNG.Connection.Protocol.Protocols.RDP Or conI.Protocol = mRemoteNG.Connection.Protocol.Protocols.ICA Then
|
|
||||||
'continue
|
|
||||||
Else
|
|
||||||
Me.ClearList()
|
|
||||||
Exit Sub
|
|
||||||
End If
|
|
||||||
|
|
||||||
Me._CurrentHost = conI.Hostname
|
|
||||||
|
|
||||||
Dim sUser As String = conI.Username
|
|
||||||
Dim sPass As String = conI.Password
|
|
||||||
Dim sDom As String = conI.Domain
|
|
||||||
|
|
||||||
If My.Settings.EmptyCredentials = "custom" Then
|
|
||||||
If sUser = "" Then
|
|
||||||
sUser = My.Settings.DefaultUsername
|
|
||||||
End If
|
|
||||||
|
|
||||||
If sPass = "" Then
|
|
||||||
sPass = Security.Crypt.Decrypt(My.Settings.DefaultPassword, App.Info.General.EncryptionKey)
|
|
||||||
End If
|
|
||||||
|
|
||||||
If sDom = "" Then
|
|
||||||
sDom = My.Settings.DefaultDomain
|
|
||||||
End If
|
|
||||||
End If
|
|
||||||
|
|
||||||
Me.GetSessions(conI.Hostname, sUser, sPass, sDom)
|
|
||||||
End Sub
|
|
||||||
|
|
||||||
Public Sub GetSessions(ByVal ServerName As String, ByVal Username As String, ByVal Password As String, ByVal Domain As String)
|
|
||||||
Try
|
|
||||||
Me.lvSessions.Items.Clear()
|
|
||||||
|
|
||||||
tServerName = ServerName
|
|
||||||
tUserName = Username
|
|
||||||
tPassword = Password
|
|
||||||
tDomain = Domain
|
|
||||||
|
|
||||||
threadSessions = New Threading.Thread(AddressOf GetSessionsBG)
|
|
||||||
threadSessions.SetApartmentState(Threading.ApartmentState.STA)
|
|
||||||
threadSessions.IsBackground = True
|
|
||||||
threadSessions.Start()
|
|
||||||
Catch ex As Exception
|
|
||||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "GetSessions (UI.Window.Sessions) failed" & vbNewLine & ex.Message, True)
|
|
||||||
End Try
|
End Try
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
Public Sub KillSession()
|
Public Sub KillSession()
|
||||||
If TypeOf mRemoteNG.Tree.Node.SelectedNode.Tag Is mRemoteNG.Connection.Info Then
|
If sessionList.SelectedItems.Count = 0 Then Return
|
||||||
'continue
|
|
||||||
Else
|
|
||||||
Exit Sub
|
|
||||||
End If
|
|
||||||
|
|
||||||
Dim conI As mRemoteNG.Connection.Info = mRemoteNG.Tree.Node.SelectedNode.Tag
|
Dim connectionInfo As mRemoteNG.Connection.Info = TryCast(mRemoteNG.Tree.Node.SelectedNode.Tag, mRemoteNG.Connection.Info)
|
||||||
|
If connectionInfo Is Nothing Then Return
|
||||||
|
|
||||||
If conI.Protocol = mRemoteNG.Connection.Protocol.Protocols.RDP Then
|
If Not connectionInfo.Protocol = mRemoteNG.Connection.Protocol.Protocols.RDP Then Return
|
||||||
'continue
|
|
||||||
Else
|
|
||||||
Exit Sub
|
|
||||||
End If
|
|
||||||
|
|
||||||
If Me.lvSessions.SelectedItems.Count > 0 Then
|
For Each lvItem As ListViewItem In sessionList.SelectedItems
|
||||||
'continue
|
KillSession(connectionInfo.Hostname, connectionInfo.Username, connectionInfo.Password, connectionInfo.Domain, lvItem.Tag)
|
||||||
Else
|
|
||||||
Exit Sub
|
|
||||||
End If
|
|
||||||
|
|
||||||
For Each lvItem As ListViewItem In Me.lvSessions.SelectedItems
|
|
||||||
Me.KillSession(conI.Hostname, conI.Username, conI.Password, conI.Domain, lvItem.Tag)
|
|
||||||
Next
|
Next
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
Public Sub KillSession(ByVal ServerName As String, ByVal Username As String, ByVal Password As String, ByVal Domain As String, ByVal SessionID As String)
|
Public Sub KillSession(ByVal hostname As String, ByVal username As String, ByVal password As String, ByVal domain As String, ByVal sessionId As String)
|
||||||
Try
|
Try
|
||||||
tServerName = ServerName
|
Dim data As New BackgroundData
|
||||||
tUserName = Username
|
With data
|
||||||
tPassword = Password
|
.Hostname = hostname
|
||||||
tDomain = Domain
|
.Username = username
|
||||||
tSessionID = SessionID
|
.Password = password
|
||||||
|
.Domain = domain
|
||||||
|
.SessionId = sessionId
|
||||||
|
End With
|
||||||
|
|
||||||
threadSessions = New Threading.Thread(AddressOf KillSessionBG)
|
Dim thread As New Thread(AddressOf KillSessionBackground)
|
||||||
threadSessions.SetApartmentState(Threading.ApartmentState.STA)
|
thread.SetApartmentState(ApartmentState.STA)
|
||||||
threadSessions.IsBackground = True
|
thread.IsBackground = True
|
||||||
threadSessions.Start()
|
thread.Start(data)
|
||||||
Catch ex As Exception
|
Catch ex As Exception
|
||||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "KillSession (UI.Window.Sessions) failed" & vbNewLine & ex.Message, True)
|
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "UI.Window.Sessions.KillSession() failed." & vbNewLine & ex.Message, True)
|
||||||
End Try
|
End Try
|
||||||
End Sub
|
End Sub
|
||||||
#End Region
|
#End Region
|
||||||
|
|
||||||
|
#Region "Private Methods"
|
||||||
|
#Region "Form Stuff"
|
||||||
|
Private Sub Sessions_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
|
||||||
|
ApplyLanguage()
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub ApplyLanguage()
|
||||||
|
TabText = Language.strMenuSessions
|
||||||
|
Text = Language.strMenuSessions
|
||||||
|
sessionActivityColumn.Text = Language.strActivity
|
||||||
|
sessionMenuLogoff.Text = Language.strLogOff
|
||||||
|
sessionMenuRetrieve.Text = Language.strMenuSessionRetrieve
|
||||||
|
sessionTypeColumn.Text = Language.strType
|
||||||
|
sessionUsernameColumn.Text = Language.strColumnUsername
|
||||||
|
End Sub
|
||||||
|
#End Region
|
||||||
|
|
||||||
|
Private Sub GetSessionsBackground(ByVal dataObject As Object)
|
||||||
|
Dim data As BackgroundData = TryCast(dataObject, BackgroundData)
|
||||||
|
If data Is Nothing Then Return
|
||||||
|
|
||||||
|
Dim impersonator As New Security.Impersonator
|
||||||
|
Dim terminalSessions As New mRemoteNG.Connection.Protocol.RDP.TerminalSessions
|
||||||
|
Dim serverHandle As Long = 0
|
||||||
|
Try
|
||||||
|
With data
|
||||||
|
impersonator.StartImpersonation(.Domain, .Username, .Password)
|
||||||
|
|
||||||
|
If Not terminalSessions.OpenConnection(.Hostname) Then Return
|
||||||
|
serverHandle = terminalSessions.ServerHandle
|
||||||
|
|
||||||
|
GetSessions(terminalSessions)
|
||||||
|
End With
|
||||||
|
|
||||||
|
_retrieved = True
|
||||||
|
Catch ex As ThreadAbortException
|
||||||
|
|
||||||
|
Catch ex As Exception
|
||||||
|
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, Language.strSessionGetFailed & vbNewLine & ex.Message, True)
|
||||||
|
Finally
|
||||||
|
impersonator.StopImpersonation()
|
||||||
|
If Not serverHandle = 0 Then
|
||||||
|
terminalSessions.CloseConnection(serverHandle)
|
||||||
|
End If
|
||||||
|
End Try
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
' Get sessions from an already impersonated and connected TerminalSessions object
|
||||||
|
Private Sub GetSessions(ByVal terminalSessions As mRemoteNG.Connection.Protocol.RDP.TerminalSessions)
|
||||||
|
Dim rdpSessions As mRemoteNG.Connection.Protocol.RDP.Sessions = terminalSessions.GetSessions
|
||||||
|
For Each session As mRemoteNG.Connection.Protocol.RDP.Session In rdpSessions
|
||||||
|
Dim item As New ListViewItem
|
||||||
|
item.Tag = session.SessionID
|
||||||
|
item.Text = session.SessionUser
|
||||||
|
item.SubItems.Add(session.SessionState)
|
||||||
|
item.SubItems.Add(Replace(session.SessionName, vbNewLine, ""))
|
||||||
|
AddToList(item)
|
||||||
|
Next
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub KillSessionBackground(ByVal dataObject As Object)
|
||||||
|
Dim data As BackgroundData = TryCast(dataObject, BackgroundData)
|
||||||
|
If data Is Nothing Then Return
|
||||||
|
|
||||||
|
Dim impersonator As New Security.Impersonator
|
||||||
|
Dim terminalSessions As New mRemoteNG.Connection.Protocol.RDP.TerminalSessions
|
||||||
|
Dim serverHandle As Long = 0
|
||||||
|
Try
|
||||||
|
With data
|
||||||
|
If String.IsNullOrEmpty(.Username) Or String.IsNullOrEmpty(.Password) Then Return
|
||||||
|
|
||||||
|
impersonator.StartImpersonation(.Domain, .Username, .Password)
|
||||||
|
|
||||||
|
If terminalSessions.OpenConnection(.Hostname) Then
|
||||||
|
serverHandle = terminalSessions.ServerHandle
|
||||||
|
terminalSessions.KillSession(.SessionId)
|
||||||
|
End If
|
||||||
|
|
||||||
|
ClearList()
|
||||||
|
GetSessions(terminalSessions)
|
||||||
|
|
||||||
|
_retrieved = True
|
||||||
|
End With
|
||||||
|
Catch ex As ThreadAbortException
|
||||||
|
|
||||||
|
Catch ex As Exception
|
||||||
|
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, Language.strSessionKillFailed & vbNewLine & ex.Message, True)
|
||||||
|
Finally
|
||||||
|
impersonator.StopImpersonation()
|
||||||
|
If Not serverHandle = 0 Then
|
||||||
|
terminalSessions.CloseConnection(serverHandle)
|
||||||
|
End If
|
||||||
|
End Try
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Delegate Sub AddToListCallback(ByVal item As ListViewItem)
|
||||||
|
Private Sub AddToList(ByVal item As ListViewItem)
|
||||||
|
If sessionList.InvokeRequired Then
|
||||||
|
Dim callback As New AddToListCallback(AddressOf AddToList)
|
||||||
|
sessionList.Invoke(callback, New Object() {item})
|
||||||
|
Else
|
||||||
|
sessionList.Items.Add(item)
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Delegate Sub ClearListCallback()
|
||||||
|
Private Sub ClearList()
|
||||||
|
If sessionList.InvokeRequired Then
|
||||||
|
Dim callback As New ClearListCallback(AddressOf ClearList)
|
||||||
|
sessionList.Invoke(callback)
|
||||||
|
Else
|
||||||
|
sessionList.Items.Clear()
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub menuSession_Opening(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs)
|
||||||
|
Dim connectionInfo As mRemoteNG.Connection.Info = TryCast(mRemoteNG.Tree.Node.SelectedNode.Tag, mRemoteNG.Connection.Info)
|
||||||
|
If connectionInfo Is Nothing Then
|
||||||
|
sessionMenuLogoff.Enabled = False
|
||||||
|
sessionMenuRetrieve.Enabled = False
|
||||||
|
sessionMenuRetrieve.Text = Language.strMenuSessionRetrieve
|
||||||
|
Return
|
||||||
|
End If
|
||||||
|
|
||||||
|
If connectionInfo.Protocol = mRemoteNG.Connection.Protocol.Protocols.RDP And sessionList.SelectedItems.Count > 0 Then
|
||||||
|
sessionMenuLogoff.Enabled = True
|
||||||
|
Else
|
||||||
|
sessionMenuLogoff.Enabled = False
|
||||||
|
End If
|
||||||
|
|
||||||
|
If connectionInfo.Protocol = mRemoteNG.Connection.Protocol.Protocols.RDP Or _
|
||||||
|
connectionInfo.Protocol = mRemoteNG.Connection.Protocol.Protocols.ICA Then
|
||||||
|
sessionMenuRetrieve.Enabled = True
|
||||||
|
Else
|
||||||
|
sessionMenuRetrieve.Enabled = False
|
||||||
|
End If
|
||||||
|
|
||||||
|
If Not _retrieved Then
|
||||||
|
sessionMenuRetrieve.Text = Language.strMenuSessionRetrieve
|
||||||
|
Else
|
||||||
|
sessionMenuRetrieve.Text = Language.strRefresh
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub sessionMenuRetrieve_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles sessionMenuRetrieve.Click
|
||||||
|
GetSessions()
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub sessionMenuLogoff_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles sessionMenuLogoff.Click
|
||||||
|
KillSession()
|
||||||
|
End Sub
|
||||||
|
#End Region
|
||||||
|
|
||||||
|
#Region "Private Classes"
|
||||||
|
Private Class BackgroundData
|
||||||
|
Public Hostname As String
|
||||||
|
Public Username As String
|
||||||
|
Public Password As String
|
||||||
|
Public Domain As String
|
||||||
|
Public SessionId As Long
|
||||||
|
End Class
|
||||||
|
#End Region
|
||||||
End Class
|
End Class
|
||||||
End Namespace
|
End Namespace
|
||||||
End Namespace
|
End Namespace
|
||||||
@@ -589,7 +589,6 @@ Namespace UI
|
|||||||
Select Case mRemoteNG.Tree.Node.GetNodeType(e.Node)
|
Select Case mRemoteNG.Tree.Node.GetNodeType(e.Node)
|
||||||
Case mRemoteNG.Tree.Node.Type.Connection, mRemoteNG.Tree.Node.Type.PuttySession
|
Case mRemoteNG.Tree.Node.Type.Connection, mRemoteNG.Tree.Node.Type.PuttySession
|
||||||
Windows.configForm.SetPropertyGridObject(e.Node.Tag)
|
Windows.configForm.SetPropertyGridObject(e.Node.Tag)
|
||||||
Windows.sessionsForm.CurrentHost = TryCast(e.Node.Tag, mRemoteNG.Connection.Info).Hostname
|
|
||||||
Case mRemoteNG.Tree.Node.Type.Container
|
Case mRemoteNG.Tree.Node.Type.Container
|
||||||
Windows.configForm.SetPropertyGridObject(TryCast(e.Node.Tag, Container.Info).ConnectionInfo)
|
Windows.configForm.SetPropertyGridObject(TryCast(e.Node.Tag, Container.Info).ConnectionInfo)
|
||||||
Case mRemoteNG.Tree.Node.Type.Root, mRemoteNG.Tree.Node.Type.PuttyRoot
|
Case mRemoteNG.Tree.Node.Type.Root, mRemoteNG.Tree.Node.Type.PuttyRoot
|
||||||
@@ -600,7 +599,7 @@ Namespace UI
|
|||||||
|
|
||||||
Windows.configForm.pGrid_SelectedObjectChanged()
|
Windows.configForm.pGrid_SelectedObjectChanged()
|
||||||
ShowHideTreeContextMenuItems(e.Node)
|
ShowHideTreeContextMenuItems(e.Node)
|
||||||
Windows.sessionsForm.GetSessionsAuto()
|
Windows.sessionsForm.GetSessions(True)
|
||||||
|
|
||||||
LastSelected = mRemoteNG.Tree.Node.GetConstantID(e.Node)
|
LastSelected = mRemoteNG.Tree.Node.GetConstantID(e.Node)
|
||||||
Catch ex As Exception
|
Catch ex As Exception
|
||||||
@@ -1183,7 +1182,7 @@ Namespace UI
|
|||||||
|
|
||||||
Private Sub ImportFromRDPFiles()
|
Private Sub ImportFromRDPFiles()
|
||||||
Try
|
Try
|
||||||
App.Runtime.ImportConnectionsFromRDPFiles()
|
App.Runtime.ImportConnectionsRdpFile()
|
||||||
Catch ex As Exception
|
Catch ex As Exception
|
||||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "ImportFromRDPFiles (UI.Window.Tree) failed" & vbNewLine & ex.Message, True)
|
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "ImportFromRDPFiles (UI.Window.Tree) failed" & vbNewLine & ex.Message, True)
|
||||||
End Try
|
End Try
|
||||||
|
|||||||
193
mRemoteV1/UI/UI.Window.Update.Designer.vb
generated
Normal file
193
mRemoteV1/UI/UI.Window.Update.Designer.vb
generated
Normal file
@@ -0,0 +1,193 @@
|
|||||||
|
Namespace UI
|
||||||
|
Namespace Window
|
||||||
|
Partial Public Class Update
|
||||||
|
#Region " Windows Form Designer generated code "
|
||||||
|
Friend WithEvents lblStatus As System.Windows.Forms.Label
|
||||||
|
Friend WithEvents txtChangeLog As System.Windows.Forms.TextBox
|
||||||
|
Friend WithEvents prgbDownload As System.Windows.Forms.ProgressBar
|
||||||
|
Friend WithEvents btnDownload As System.Windows.Forms.Button
|
||||||
|
Friend WithEvents lblChangeLogLabel As System.Windows.Forms.Label
|
||||||
|
Friend WithEvents pnlUpdate As System.Windows.Forms.Panel
|
||||||
|
Friend WithEvents lblLatestVersionLabel As System.Windows.Forms.Label
|
||||||
|
Friend WithEvents lblInstalledVersionLabel As System.Windows.Forms.Label
|
||||||
|
Friend WithEvents lblLatestVersion As System.Windows.Forms.Label
|
||||||
|
Friend WithEvents lblInstalledVersion As System.Windows.Forms.Label
|
||||||
|
Friend WithEvents pbUpdateImage As System.Windows.Forms.PictureBox
|
||||||
|
Friend WithEvents btnCheckForUpdate As System.Windows.Forms.Button
|
||||||
|
|
||||||
|
Private Sub InitializeComponent()
|
||||||
|
Me.btnCheckForUpdate = New System.Windows.Forms.Button()
|
||||||
|
Me.pnlUpdate = New System.Windows.Forms.Panel()
|
||||||
|
Me.lblChangeLogLabel = New System.Windows.Forms.Label()
|
||||||
|
Me.btnDownload = New System.Windows.Forms.Button()
|
||||||
|
Me.prgbDownload = New System.Windows.Forms.ProgressBar()
|
||||||
|
Me.txtChangeLog = New System.Windows.Forms.TextBox()
|
||||||
|
Me.lblStatus = New System.Windows.Forms.Label()
|
||||||
|
Me.lblLatestVersionLabel = New System.Windows.Forms.Label()
|
||||||
|
Me.lblInstalledVersionLabel = New System.Windows.Forms.Label()
|
||||||
|
Me.lblLatestVersion = New System.Windows.Forms.Label()
|
||||||
|
Me.lblInstalledVersion = New System.Windows.Forms.Label()
|
||||||
|
Me.pbUpdateImage = New System.Windows.Forms.PictureBox()
|
||||||
|
Me.pnlUpdate.SuspendLayout()
|
||||||
|
CType(Me.pbUpdateImage, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||||
|
Me.SuspendLayout()
|
||||||
|
'
|
||||||
|
'btnCheckForUpdate
|
||||||
|
'
|
||||||
|
Me.btnCheckForUpdate.FlatStyle = System.Windows.Forms.FlatStyle.Flat
|
||||||
|
Me.btnCheckForUpdate.Location = New System.Drawing.Point(16, 104)
|
||||||
|
Me.btnCheckForUpdate.Name = "btnCheckForUpdate"
|
||||||
|
Me.btnCheckForUpdate.Size = New System.Drawing.Size(104, 32)
|
||||||
|
Me.btnCheckForUpdate.TabIndex = 5
|
||||||
|
Me.btnCheckForUpdate.Text = "Check Again"
|
||||||
|
Me.btnCheckForUpdate.UseVisualStyleBackColor = True
|
||||||
|
'
|
||||||
|
'pnlUpdate
|
||||||
|
'
|
||||||
|
Me.pnlUpdate.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _
|
||||||
|
Or System.Windows.Forms.AnchorStyles.Left) _
|
||||||
|
Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
|
||||||
|
Me.pnlUpdate.Controls.Add(Me.lblChangeLogLabel)
|
||||||
|
Me.pnlUpdate.Controls.Add(Me.btnDownload)
|
||||||
|
Me.pnlUpdate.Controls.Add(Me.prgbDownload)
|
||||||
|
Me.pnlUpdate.Controls.Add(Me.txtChangeLog)
|
||||||
|
Me.pnlUpdate.Location = New System.Drawing.Point(16, 152)
|
||||||
|
Me.pnlUpdate.Name = "pnlUpdate"
|
||||||
|
Me.pnlUpdate.Size = New System.Drawing.Size(718, 248)
|
||||||
|
Me.pnlUpdate.TabIndex = 6
|
||||||
|
Me.pnlUpdate.Visible = False
|
||||||
|
'
|
||||||
|
'lblChangeLogLabel
|
||||||
|
'
|
||||||
|
Me.lblChangeLogLabel.AutoSize = True
|
||||||
|
Me.lblChangeLogLabel.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
|
||||||
|
Me.lblChangeLogLabel.Location = New System.Drawing.Point(0, 0)
|
||||||
|
Me.lblChangeLogLabel.Name = "lblChangeLogLabel"
|
||||||
|
Me.lblChangeLogLabel.Size = New System.Drawing.Size(79, 13)
|
||||||
|
Me.lblChangeLogLabel.TabIndex = 0
|
||||||
|
Me.lblChangeLogLabel.Text = "Change Log:"
|
||||||
|
'
|
||||||
|
'btnDownload
|
||||||
|
'
|
||||||
|
Me.btnDownload.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles)
|
||||||
|
Me.btnDownload.FlatStyle = System.Windows.Forms.FlatStyle.Flat
|
||||||
|
Me.btnDownload.Location = New System.Drawing.Point(0, 216)
|
||||||
|
Me.btnDownload.Name = "btnDownload"
|
||||||
|
Me.btnDownload.Size = New System.Drawing.Size(144, 32)
|
||||||
|
Me.btnDownload.TabIndex = 2
|
||||||
|
Me.btnDownload.Text = "Download and Install"
|
||||||
|
Me.btnDownload.UseVisualStyleBackColor = True
|
||||||
|
'
|
||||||
|
'prgbDownload
|
||||||
|
'
|
||||||
|
Me.prgbDownload.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _
|
||||||
|
Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
|
||||||
|
Me.prgbDownload.Location = New System.Drawing.Point(160, 224)
|
||||||
|
Me.prgbDownload.Name = "prgbDownload"
|
||||||
|
Me.prgbDownload.Size = New System.Drawing.Size(542, 23)
|
||||||
|
Me.prgbDownload.TabIndex = 3
|
||||||
|
Me.prgbDownload.Visible = False
|
||||||
|
'
|
||||||
|
'txtChangeLog
|
||||||
|
'
|
||||||
|
Me.txtChangeLog.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _
|
||||||
|
Or System.Windows.Forms.AnchorStyles.Left) _
|
||||||
|
Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
|
||||||
|
Me.txtChangeLog.BorderStyle = System.Windows.Forms.BorderStyle.None
|
||||||
|
Me.txtChangeLog.Cursor = System.Windows.Forms.Cursors.Arrow
|
||||||
|
Me.txtChangeLog.Location = New System.Drawing.Point(16, 24)
|
||||||
|
Me.txtChangeLog.Multiline = True
|
||||||
|
Me.txtChangeLog.Name = "txtChangeLog"
|
||||||
|
Me.txtChangeLog.ReadOnly = True
|
||||||
|
Me.txtChangeLog.ScrollBars = System.Windows.Forms.ScrollBars.Vertical
|
||||||
|
Me.txtChangeLog.Size = New System.Drawing.Size(699, 181)
|
||||||
|
Me.txtChangeLog.TabIndex = 1
|
||||||
|
Me.txtChangeLog.TabStop = False
|
||||||
|
'
|
||||||
|
'lblStatus
|
||||||
|
'
|
||||||
|
Me.lblStatus.Font = New System.Drawing.Font("Microsoft Sans Serif", 12.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
|
||||||
|
Me.lblStatus.ForeColor = System.Drawing.SystemColors.ControlText
|
||||||
|
Me.lblStatus.Location = New System.Drawing.Point(12, 16)
|
||||||
|
Me.lblStatus.Name = "lblStatus"
|
||||||
|
Me.lblStatus.Size = New System.Drawing.Size(660, 23)
|
||||||
|
Me.lblStatus.TabIndex = 0
|
||||||
|
Me.lblStatus.Text = "Status"
|
||||||
|
Me.lblStatus.TextAlign = System.Drawing.ContentAlignment.MiddleLeft
|
||||||
|
'
|
||||||
|
'lblLatestVersionLabel
|
||||||
|
'
|
||||||
|
Me.lblLatestVersionLabel.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
|
||||||
|
Me.lblLatestVersionLabel.Location = New System.Drawing.Point(16, 72)
|
||||||
|
Me.lblLatestVersionLabel.Name = "lblLatestVersionLabel"
|
||||||
|
Me.lblLatestVersionLabel.Size = New System.Drawing.Size(120, 16)
|
||||||
|
Me.lblLatestVersionLabel.TabIndex = 3
|
||||||
|
Me.lblLatestVersionLabel.Text = "Current version:"
|
||||||
|
Me.lblLatestVersionLabel.TextAlign = System.Drawing.ContentAlignment.MiddleRight
|
||||||
|
'
|
||||||
|
'lblInstalledVersionLabel
|
||||||
|
'
|
||||||
|
Me.lblInstalledVersionLabel.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
|
||||||
|
Me.lblInstalledVersionLabel.Location = New System.Drawing.Point(16, 48)
|
||||||
|
Me.lblInstalledVersionLabel.Name = "lblInstalledVersionLabel"
|
||||||
|
Me.lblInstalledVersionLabel.Size = New System.Drawing.Size(120, 16)
|
||||||
|
Me.lblInstalledVersionLabel.TabIndex = 1
|
||||||
|
Me.lblInstalledVersionLabel.Text = "Installed version:"
|
||||||
|
Me.lblInstalledVersionLabel.TextAlign = System.Drawing.ContentAlignment.MiddleRight
|
||||||
|
'
|
||||||
|
'lblLatestVersion
|
||||||
|
'
|
||||||
|
Me.lblLatestVersion.Location = New System.Drawing.Point(136, 72)
|
||||||
|
Me.lblLatestVersion.Name = "lblLatestVersion"
|
||||||
|
Me.lblLatestVersion.Size = New System.Drawing.Size(104, 16)
|
||||||
|
Me.lblLatestVersion.TabIndex = 4
|
||||||
|
Me.lblLatestVersion.Text = "Version"
|
||||||
|
Me.lblLatestVersion.TextAlign = System.Drawing.ContentAlignment.MiddleLeft
|
||||||
|
'
|
||||||
|
'lblInstalledVersion
|
||||||
|
'
|
||||||
|
Me.lblInstalledVersion.Location = New System.Drawing.Point(136, 48)
|
||||||
|
Me.lblInstalledVersion.Name = "lblInstalledVersion"
|
||||||
|
Me.lblInstalledVersion.Size = New System.Drawing.Size(104, 16)
|
||||||
|
Me.lblInstalledVersion.TabIndex = 2
|
||||||
|
Me.lblInstalledVersion.Text = "Version"
|
||||||
|
Me.lblInstalledVersion.TextAlign = System.Drawing.ContentAlignment.MiddleLeft
|
||||||
|
'
|
||||||
|
'pbUpdateImage
|
||||||
|
'
|
||||||
|
Me.pbUpdateImage.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
|
||||||
|
Me.pbUpdateImage.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
|
||||||
|
Me.pbUpdateImage.Cursor = System.Windows.Forms.Cursors.Hand
|
||||||
|
Me.pbUpdateImage.Location = New System.Drawing.Point(246, 48)
|
||||||
|
Me.pbUpdateImage.Name = "pbUpdateImage"
|
||||||
|
Me.pbUpdateImage.Size = New System.Drawing.Size(468, 60)
|
||||||
|
Me.pbUpdateImage.TabIndex = 45
|
||||||
|
Me.pbUpdateImage.TabStop = False
|
||||||
|
Me.pbUpdateImage.Visible = False
|
||||||
|
'
|
||||||
|
'Update
|
||||||
|
'
|
||||||
|
Me.ClientSize = New System.Drawing.Size(734, 418)
|
||||||
|
Me.Controls.Add(Me.pbUpdateImage)
|
||||||
|
Me.Controls.Add(Me.lblLatestVersionLabel)
|
||||||
|
Me.Controls.Add(Me.lblInstalledVersionLabel)
|
||||||
|
Me.Controls.Add(Me.lblLatestVersion)
|
||||||
|
Me.Controls.Add(Me.btnCheckForUpdate)
|
||||||
|
Me.Controls.Add(Me.lblInstalledVersion)
|
||||||
|
Me.Controls.Add(Me.pnlUpdate)
|
||||||
|
Me.Controls.Add(Me.lblStatus)
|
||||||
|
Me.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
|
||||||
|
Me.Icon = Global.mRemoteNG.My.Resources.Resources.Update_Icon
|
||||||
|
Me.Name = "Update"
|
||||||
|
Me.TabText = "Update"
|
||||||
|
Me.Text = "Update"
|
||||||
|
Me.pnlUpdate.ResumeLayout(False)
|
||||||
|
Me.pnlUpdate.PerformLayout()
|
||||||
|
CType(Me.pbUpdateImage, System.ComponentModel.ISupportInitialize).EndInit()
|
||||||
|
Me.ResumeLayout(False)
|
||||||
|
|
||||||
|
End Sub
|
||||||
|
#End Region
|
||||||
|
End Class
|
||||||
|
End Namespace
|
||||||
|
End Namespace
|
||||||
@@ -1,454 +1,208 @@
|
|||||||
|
Imports System.ComponentModel
|
||||||
|
Imports mRemoteNG.My
|
||||||
Imports WeifenLuo.WinFormsUI.Docking
|
Imports WeifenLuo.WinFormsUI.Docking
|
||||||
Imports System.Threading
|
|
||||||
Imports System.IO
|
Imports System.IO
|
||||||
Imports mRemoteNG.App.Runtime
|
Imports mRemoteNG.App.Runtime
|
||||||
|
|
||||||
Namespace UI
|
Namespace UI
|
||||||
Namespace Window
|
Namespace Window
|
||||||
Public Class Update
|
Public Class Update
|
||||||
Inherits UI.Window.Base
|
Inherits Base
|
||||||
|
|
||||||
#Region "Form Init"
|
|
||||||
Friend WithEvents lblStatus As System.Windows.Forms.Label
|
|
||||||
Friend WithEvents txtChangeLog As System.Windows.Forms.TextBox
|
|
||||||
Friend WithEvents prgbDownload As System.Windows.Forms.ProgressBar
|
|
||||||
Friend WithEvents btnDownload As System.Windows.Forms.Button
|
|
||||||
Friend WithEvents lblChangeLogLabel As System.Windows.Forms.Label
|
|
||||||
Friend WithEvents pnlUp As System.Windows.Forms.Panel
|
|
||||||
Friend WithEvents lblCurrentVersionLabel As System.Windows.Forms.Label
|
|
||||||
Friend WithEvents lblInstalledVersionLabel As System.Windows.Forms.Label
|
|
||||||
Friend WithEvents lblAvailableVersion As System.Windows.Forms.Label
|
|
||||||
Friend WithEvents lblCurrentVersion As System.Windows.Forms.Label
|
|
||||||
Friend WithEvents pbUpdateImage As System.Windows.Forms.PictureBox
|
|
||||||
Friend WithEvents btnCheckForUpdate As System.Windows.Forms.Button
|
|
||||||
|
|
||||||
Private Sub InitializeComponent()
|
|
||||||
Me.btnCheckForUpdate = New System.Windows.Forms.Button
|
|
||||||
Me.pnlUp = New System.Windows.Forms.Panel
|
|
||||||
Me.lblChangeLogLabel = New System.Windows.Forms.Label
|
|
||||||
Me.btnDownload = New System.Windows.Forms.Button
|
|
||||||
Me.prgbDownload = New System.Windows.Forms.ProgressBar
|
|
||||||
Me.txtChangeLog = New System.Windows.Forms.TextBox
|
|
||||||
Me.lblStatus = New System.Windows.Forms.Label
|
|
||||||
Me.lblCurrentVersionLabel = New System.Windows.Forms.Label
|
|
||||||
Me.lblInstalledVersionLabel = New System.Windows.Forms.Label
|
|
||||||
Me.lblAvailableVersion = New System.Windows.Forms.Label
|
|
||||||
Me.lblCurrentVersion = New System.Windows.Forms.Label
|
|
||||||
Me.pbUpdateImage = New System.Windows.Forms.PictureBox
|
|
||||||
Me.pnlUp.SuspendLayout()
|
|
||||||
CType(Me.pbUpdateImage, System.ComponentModel.ISupportInitialize).BeginInit()
|
|
||||||
Me.SuspendLayout()
|
|
||||||
'
|
|
||||||
'btnCheckForUpdate
|
|
||||||
'
|
|
||||||
Me.btnCheckForUpdate.FlatStyle = System.Windows.Forms.FlatStyle.Flat
|
|
||||||
Me.btnCheckForUpdate.Location = New System.Drawing.Point(16, 104)
|
|
||||||
Me.btnCheckForUpdate.Name = "btnCheckForUpdate"
|
|
||||||
Me.btnCheckForUpdate.Size = New System.Drawing.Size(104, 32)
|
|
||||||
Me.btnCheckForUpdate.TabIndex = 5
|
|
||||||
Me.btnCheckForUpdate.Text = "Check Again"
|
|
||||||
Me.btnCheckForUpdate.UseVisualStyleBackColor = True
|
|
||||||
'
|
|
||||||
'pnlUp
|
|
||||||
'
|
|
||||||
Me.pnlUp.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _
|
|
||||||
Or System.Windows.Forms.AnchorStyles.Left) _
|
|
||||||
Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
|
|
||||||
Me.pnlUp.Controls.Add(Me.lblChangeLogLabel)
|
|
||||||
Me.pnlUp.Controls.Add(Me.btnDownload)
|
|
||||||
Me.pnlUp.Controls.Add(Me.prgbDownload)
|
|
||||||
Me.pnlUp.Controls.Add(Me.txtChangeLog)
|
|
||||||
Me.pnlUp.Location = New System.Drawing.Point(16, 152)
|
|
||||||
Me.pnlUp.Name = "pnlUp"
|
|
||||||
Me.pnlUp.Size = New System.Drawing.Size(718, 248)
|
|
||||||
Me.pnlUp.TabIndex = 6
|
|
||||||
Me.pnlUp.Visible = False
|
|
||||||
'
|
|
||||||
'lblChangeLogLabel
|
|
||||||
'
|
|
||||||
Me.lblChangeLogLabel.AutoSize = True
|
|
||||||
Me.lblChangeLogLabel.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
|
|
||||||
Me.lblChangeLogLabel.Location = New System.Drawing.Point(0, 0)
|
|
||||||
Me.lblChangeLogLabel.Name = "lblChangeLogLabel"
|
|
||||||
Me.lblChangeLogLabel.Size = New System.Drawing.Size(79, 13)
|
|
||||||
Me.lblChangeLogLabel.TabIndex = 0
|
|
||||||
Me.lblChangeLogLabel.Text = "Change Log:"
|
|
||||||
'
|
|
||||||
'btnDownload
|
|
||||||
'
|
|
||||||
Me.btnDownload.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles)
|
|
||||||
Me.btnDownload.FlatStyle = System.Windows.Forms.FlatStyle.Flat
|
|
||||||
Me.btnDownload.Location = New System.Drawing.Point(0, 216)
|
|
||||||
Me.btnDownload.Name = "btnDownload"
|
|
||||||
Me.btnDownload.Size = New System.Drawing.Size(144, 32)
|
|
||||||
Me.btnDownload.TabIndex = 2
|
|
||||||
Me.btnDownload.Text = "Download and Install"
|
|
||||||
Me.btnDownload.UseVisualStyleBackColor = True
|
|
||||||
'
|
|
||||||
'prgbDownload
|
|
||||||
'
|
|
||||||
Me.prgbDownload.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _
|
|
||||||
Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
|
|
||||||
Me.prgbDownload.Location = New System.Drawing.Point(160, 224)
|
|
||||||
Me.prgbDownload.Name = "prgbDownload"
|
|
||||||
Me.prgbDownload.Size = New System.Drawing.Size(542, 23)
|
|
||||||
Me.prgbDownload.TabIndex = 3
|
|
||||||
'
|
|
||||||
'txtChangeLog
|
|
||||||
'
|
|
||||||
Me.txtChangeLog.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _
|
|
||||||
Or System.Windows.Forms.AnchorStyles.Left) _
|
|
||||||
Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
|
|
||||||
Me.txtChangeLog.BorderStyle = System.Windows.Forms.BorderStyle.None
|
|
||||||
Me.txtChangeLog.Cursor = System.Windows.Forms.Cursors.Arrow
|
|
||||||
Me.txtChangeLog.Location = New System.Drawing.Point(16, 24)
|
|
||||||
Me.txtChangeLog.Multiline = True
|
|
||||||
Me.txtChangeLog.Name = "txtChangeLog"
|
|
||||||
Me.txtChangeLog.ReadOnly = True
|
|
||||||
Me.txtChangeLog.ScrollBars = System.Windows.Forms.ScrollBars.Vertical
|
|
||||||
Me.txtChangeLog.Size = New System.Drawing.Size(699, 181)
|
|
||||||
Me.txtChangeLog.TabIndex = 1
|
|
||||||
Me.txtChangeLog.TabStop = False
|
|
||||||
'
|
|
||||||
'lblStatus
|
|
||||||
'
|
|
||||||
Me.lblStatus.Font = New System.Drawing.Font("Microsoft Sans Serif", 12.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
|
|
||||||
Me.lblStatus.ForeColor = System.Drawing.SystemColors.ControlText
|
|
||||||
Me.lblStatus.Location = New System.Drawing.Point(12, 16)
|
|
||||||
Me.lblStatus.Name = "lblStatus"
|
|
||||||
Me.lblStatus.Size = New System.Drawing.Size(660, 23)
|
|
||||||
Me.lblStatus.TabIndex = 0
|
|
||||||
Me.lblStatus.Text = "Status"
|
|
||||||
Me.lblStatus.TextAlign = System.Drawing.ContentAlignment.MiddleLeft
|
|
||||||
'
|
|
||||||
'lblCurrentVersionLabel
|
|
||||||
'
|
|
||||||
Me.lblCurrentVersionLabel.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
|
|
||||||
Me.lblCurrentVersionLabel.Location = New System.Drawing.Point(16, 72)
|
|
||||||
Me.lblCurrentVersionLabel.Name = "lblCurrentVersionLabel"
|
|
||||||
Me.lblCurrentVersionLabel.Size = New System.Drawing.Size(120, 16)
|
|
||||||
Me.lblCurrentVersionLabel.TabIndex = 3
|
|
||||||
Me.lblCurrentVersionLabel.Text = "Current version:"
|
|
||||||
Me.lblCurrentVersionLabel.TextAlign = System.Drawing.ContentAlignment.MiddleRight
|
|
||||||
'
|
|
||||||
'lblInstalledVersionLabel
|
|
||||||
'
|
|
||||||
Me.lblInstalledVersionLabel.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
|
|
||||||
Me.lblInstalledVersionLabel.Location = New System.Drawing.Point(16, 48)
|
|
||||||
Me.lblInstalledVersionLabel.Name = "lblInstalledVersionLabel"
|
|
||||||
Me.lblInstalledVersionLabel.Size = New System.Drawing.Size(120, 16)
|
|
||||||
Me.lblInstalledVersionLabel.TabIndex = 1
|
|
||||||
Me.lblInstalledVersionLabel.Text = "Installed version:"
|
|
||||||
Me.lblInstalledVersionLabel.TextAlign = System.Drawing.ContentAlignment.MiddleRight
|
|
||||||
'
|
|
||||||
'lblAvailableVersion
|
|
||||||
'
|
|
||||||
Me.lblAvailableVersion.Location = New System.Drawing.Point(136, 72)
|
|
||||||
Me.lblAvailableVersion.Name = "lblAvailableVersion"
|
|
||||||
Me.lblAvailableVersion.Size = New System.Drawing.Size(104, 16)
|
|
||||||
Me.lblAvailableVersion.TabIndex = 4
|
|
||||||
Me.lblAvailableVersion.Text = "Version"
|
|
||||||
Me.lblAvailableVersion.TextAlign = System.Drawing.ContentAlignment.MiddleLeft
|
|
||||||
'
|
|
||||||
'lblCurrentVersion
|
|
||||||
'
|
|
||||||
Me.lblCurrentVersion.Location = New System.Drawing.Point(136, 48)
|
|
||||||
Me.lblCurrentVersion.Name = "lblCurrentVersion"
|
|
||||||
Me.lblCurrentVersion.Size = New System.Drawing.Size(104, 16)
|
|
||||||
Me.lblCurrentVersion.TabIndex = 2
|
|
||||||
Me.lblCurrentVersion.Text = "Version"
|
|
||||||
Me.lblCurrentVersion.TextAlign = System.Drawing.ContentAlignment.MiddleLeft
|
|
||||||
'
|
|
||||||
'pbUpdateImage
|
|
||||||
'
|
|
||||||
Me.pbUpdateImage.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
|
|
||||||
Me.pbUpdateImage.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
|
|
||||||
Me.pbUpdateImage.Cursor = System.Windows.Forms.Cursors.Hand
|
|
||||||
Me.pbUpdateImage.Location = New System.Drawing.Point(246, 48)
|
|
||||||
Me.pbUpdateImage.Name = "pbUpdateImage"
|
|
||||||
Me.pbUpdateImage.Size = New System.Drawing.Size(468, 60)
|
|
||||||
Me.pbUpdateImage.TabIndex = 45
|
|
||||||
Me.pbUpdateImage.TabStop = False
|
|
||||||
Me.pbUpdateImage.Visible = False
|
|
||||||
'
|
|
||||||
'Update
|
|
||||||
'
|
|
||||||
Me.ClientSize = New System.Drawing.Size(734, 418)
|
|
||||||
Me.Controls.Add(Me.pbUpdateImage)
|
|
||||||
Me.Controls.Add(Me.lblCurrentVersionLabel)
|
|
||||||
Me.Controls.Add(Me.lblInstalledVersionLabel)
|
|
||||||
Me.Controls.Add(Me.lblAvailableVersion)
|
|
||||||
Me.Controls.Add(Me.btnCheckForUpdate)
|
|
||||||
Me.Controls.Add(Me.lblCurrentVersion)
|
|
||||||
Me.Controls.Add(Me.pnlUp)
|
|
||||||
Me.Controls.Add(Me.lblStatus)
|
|
||||||
Me.Icon = Global.mRemoteNG.My.Resources.Resources.Update_Icon
|
|
||||||
Me.Name = "Update"
|
|
||||||
Me.TabText = "Update"
|
|
||||||
Me.Text = "Update"
|
|
||||||
Me.pnlUp.ResumeLayout(False)
|
|
||||||
Me.pnlUp.PerformLayout()
|
|
||||||
CType(Me.pbUpdateImage, System.ComponentModel.ISupportInitialize).EndInit()
|
|
||||||
Me.ResumeLayout(False)
|
|
||||||
|
|
||||||
End Sub
|
|
||||||
#End Region
|
|
||||||
|
|
||||||
#Region "Private Properties"
|
|
||||||
Private uD As App.Update
|
|
||||||
Private uT As Thread
|
|
||||||
|
|
||||||
Private IsUpdateCheckHandlerDeclared As Boolean = False
|
|
||||||
Private IsUpdateDownloadHandlerDeclared As Boolean = False
|
|
||||||
#End Region
|
|
||||||
|
|
||||||
#Region "Public Events"
|
|
||||||
Public Event UpdateCheckCompleted(ByVal UpdateAvailable As Boolean)
|
|
||||||
#End Region
|
|
||||||
|
|
||||||
#Region "Public Methods"
|
#Region "Public Methods"
|
||||||
Public Sub New(ByVal Panel As DockContent)
|
Public Sub New(ByVal panel As DockContent)
|
||||||
Me.WindowType = Type.Update
|
WindowType = Type.Update
|
||||||
Me.DockPnl = Panel
|
DockPnl = panel
|
||||||
Me.InitializeComponent()
|
InitializeComponent()
|
||||||
App.Runtime.FontOverride(Me)
|
FontOverride(Me)
|
||||||
End Sub
|
|
||||||
|
|
||||||
Public Sub CheckForUpdate()
|
|
||||||
Try
|
|
||||||
uT = New Thread(AddressOf CheckForUpdateBG)
|
|
||||||
uT.SetApartmentState(ApartmentState.STA)
|
|
||||||
uT.IsBackground = True
|
|
||||||
|
|
||||||
If Me.IsUpdateCheckHandlerDeclared = False Then
|
|
||||||
AddHandler UpdateCheckCompleted, AddressOf UpdateCheckComplete
|
|
||||||
Me.IsUpdateCheckHandlerDeclared = True
|
|
||||||
End If
|
|
||||||
|
|
||||||
uT.Start()
|
|
||||||
Catch ex As Exception
|
|
||||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strUpdateCheckFailed & vbNewLine & ex.Message, True)
|
|
||||||
End Try
|
|
||||||
End Sub
|
|
||||||
#End Region
|
|
||||||
|
|
||||||
#Region "Private Methods"
|
|
||||||
Private Sub CheckForUpdateBG()
|
|
||||||
Try
|
|
||||||
uD = New App.Update
|
|
||||||
|
|
||||||
If uD.IsUpdateAvailable = True Then
|
|
||||||
RaiseEvent UpdateCheckCompleted(True)
|
|
||||||
Else
|
|
||||||
RaiseEvent UpdateCheckCompleted(False)
|
|
||||||
End If
|
|
||||||
Catch ex As Exception
|
|
||||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strUpdateCheckFailed & vbNewLine & ex.Message, True)
|
|
||||||
End Try
|
|
||||||
End Sub
|
|
||||||
|
|
||||||
Private Sub UpdateCheckComplete(ByVal UpdateAvailable As Boolean)
|
|
||||||
Try
|
|
||||||
My.Settings.CheckForUpdatesLastCheck = Date.Now
|
|
||||||
SetCurrentVersionText(My.Application.Info.Version.ToString)
|
|
||||||
|
|
||||||
If UpdateAvailable = True Then
|
|
||||||
My.Settings.UpdatePending = True
|
|
||||||
|
|
||||||
SetStatus(Color.OrangeRed, My.Language.strUpdateAvailable)
|
|
||||||
SetVisible(pnlUp, True)
|
|
||||||
|
|
||||||
Dim uI As App.Update.Info = uD.GetUpdateInfo()
|
|
||||||
SetAvailableVersionText(uI.Version.ToString)
|
|
||||||
SetChangeLogText(uI.ChangeLog)
|
|
||||||
|
|
||||||
If uI.ImageURL <> String.Empty Then
|
|
||||||
SetImageURL(uI.ImageURL)
|
|
||||||
|
|
||||||
If uI.ImageURLLink <> String.Empty Then
|
|
||||||
pbUpdateImage.Tag = uI.ImageURLLink
|
|
||||||
End If
|
|
||||||
|
|
||||||
SetVisible(pbUpdateImage, True)
|
|
||||||
Else
|
|
||||||
SetVisible(pbUpdateImage, False)
|
|
||||||
End If
|
|
||||||
|
|
||||||
FocusDownloadButton()
|
|
||||||
Else
|
|
||||||
My.Settings.UpdatePending = False
|
|
||||||
|
|
||||||
SetStatus(Color.ForestGreen, My.Language.strNoUpdateAvailable)
|
|
||||||
SetVisible(pnlUp, False)
|
|
||||||
|
|
||||||
Dim uI As App.Update.Info = uD.GetUpdateInfo()
|
|
||||||
SetAvailableVersionText(uI.Version.ToString)
|
|
||||||
End If
|
|
||||||
Catch ex As Exception
|
|
||||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strUpdateCheckCompleteFailed & vbNewLine & ex.Message, True)
|
|
||||||
End Try
|
|
||||||
End Sub
|
|
||||||
#End Region
|
|
||||||
|
|
||||||
#Region "Threading Callbacks"
|
|
||||||
Private Delegate Sub SetImageURLCB(ByVal img As String)
|
|
||||||
Private Sub SetImageURL(ByVal img As String)
|
|
||||||
If Me.pbUpdateImage.InvokeRequired = True Then
|
|
||||||
Dim d As New SetImageURLCB(AddressOf SetImageURL)
|
|
||||||
Me.pbUpdateImage.Invoke(d, New Object() {img})
|
|
||||||
Else
|
|
||||||
Me.pbUpdateImage.ImageLocation = img
|
|
||||||
End If
|
|
||||||
End Sub
|
|
||||||
|
|
||||||
Private Delegate Sub SetStatusCB(ByVal Color As Color, ByVal Text As String)
|
|
||||||
Private Sub SetStatus(ByVal Color As Color, ByVal Text As String)
|
|
||||||
If Me.lblStatus.InvokeRequired = True Then
|
|
||||||
Dim d As New SetStatusCB(AddressOf SetStatus)
|
|
||||||
Me.lblStatus.Invoke(d, New Object() {Color, Text})
|
|
||||||
Else
|
|
||||||
Me.lblStatus.ForeColor = Color
|
|
||||||
Me.lblStatus.Text = Text
|
|
||||||
End If
|
|
||||||
End Sub
|
|
||||||
|
|
||||||
Private Delegate Sub SetVisibleCB(ByVal ctrl As Control, ByVal visible As Boolean)
|
|
||||||
Private Sub SetVisible(ByVal ctrl As Control, ByVal visible As Boolean)
|
|
||||||
If ctrl.InvokeRequired Then
|
|
||||||
Dim d As New SetVisibleCB(AddressOf SetVisible)
|
|
||||||
ctrl.Invoke(d, New Object() {ctrl, visible})
|
|
||||||
Else
|
|
||||||
ctrl.Visible = visible
|
|
||||||
End If
|
|
||||||
End Sub
|
|
||||||
|
|
||||||
Private Delegate Sub SetCurrentVersionTextCB(ByVal Text As String)
|
|
||||||
Private Sub SetCurrentVersionText(ByVal Text As String)
|
|
||||||
If Me.lblCurrentVersion.InvokeRequired = True Then
|
|
||||||
Dim d As New SetCurrentVersionTextCB(AddressOf SetCurrentVersionText)
|
|
||||||
Me.lblCurrentVersion.Invoke(d, New Object() {Text})
|
|
||||||
Else
|
|
||||||
Me.lblCurrentVersion.Text = Text
|
|
||||||
End If
|
|
||||||
End Sub
|
|
||||||
|
|
||||||
Private Delegate Sub SetAvailableVersionTextCB(ByVal Text As String)
|
|
||||||
Private Sub SetAvailableVersionText(ByVal Text As String)
|
|
||||||
If Me.lblAvailableVersion.InvokeRequired = True Then
|
|
||||||
Dim d As New SetAvailableVersionTextCB(AddressOf SetAvailableVersionText)
|
|
||||||
Me.lblAvailableVersion.Invoke(d, New Object() {Text})
|
|
||||||
Else
|
|
||||||
Me.lblAvailableVersion.Text = Text
|
|
||||||
End If
|
|
||||||
End Sub
|
|
||||||
|
|
||||||
Private Delegate Sub SetChangeLogTextCB(ByVal Text As String)
|
|
||||||
Private Sub SetChangeLogText(ByVal Text As String)
|
|
||||||
If Me.txtChangeLog.InvokeRequired = True Then
|
|
||||||
Dim d As New SetChangeLogTextCB(AddressOf SetChangeLogText)
|
|
||||||
Me.txtChangeLog.Invoke(d, New Object() {Text})
|
|
||||||
Else
|
|
||||||
Me.txtChangeLog.Text = Text
|
|
||||||
End If
|
|
||||||
End Sub
|
|
||||||
|
|
||||||
Private Delegate Sub FocusDownloadButtonCB()
|
|
||||||
Private Sub FocusDownloadButton()
|
|
||||||
If Me.btnDownload.InvokeRequired = True Then
|
|
||||||
Dim d As New FocusDownloadButtonCB(AddressOf FocusDownloadButton)
|
|
||||||
Me.btnDownload.Invoke(d)
|
|
||||||
Else
|
|
||||||
Me.btnDownload.Focus()
|
|
||||||
End If
|
|
||||||
End Sub
|
End Sub
|
||||||
#End Region
|
#End Region
|
||||||
|
|
||||||
#Region "Form Stuff"
|
#Region "Form Stuff"
|
||||||
Private Sub Update_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
|
Private Sub Update_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
|
||||||
ApplyLanguage()
|
ApplyLanguage()
|
||||||
|
CheckForUpdate()
|
||||||
|
|
||||||
Me.CheckForUpdate()
|
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
Private Sub ApplyLanguage()
|
Private Sub ApplyLanguage()
|
||||||
btnCheckForUpdate.Text = My.Language.strCheckForUpdate
|
Text = Language.strMenuCheckForUpdates
|
||||||
lblChangeLogLabel.Text = My.Language.strLabelChangeLog
|
TabText = Language.strMenuCheckForUpdates
|
||||||
btnDownload.Text = My.Language.strDownloadAndInstall
|
btnCheckForUpdate.Text = Language.strCheckForUpdate
|
||||||
lblCurrentVersionLabel.Text = My.Language.strAvailableVersion & ":"
|
btnDownload.Text = Language.strDownloadAndInstall
|
||||||
lblInstalledVersionLabel.Text = My.Language.strCurrentVersion & ":"
|
lblChangeLogLabel.Text = Language.strLabelChangeLog
|
||||||
lblAvailableVersion.Text = My.Language.strVersion
|
lblInstalledVersion.Text = Language.strVersion
|
||||||
lblCurrentVersion.Text = My.Language.strVersion
|
lblInstalledVersionLabel.Text = String.Format("{0}:", Language.strCurrentVersion)
|
||||||
TabText = My.Language.strMenuCheckForUpdates
|
lblLatestVersion.Text = Language.strVersion
|
||||||
Text = My.Language.strMenuCheckForUpdates
|
lblLatestVersionLabel.Text = String.Format("{0}:", Language.strAvailableVersion)
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
Private Sub btnCheckForUpdate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCheckForUpdate.Click
|
Private Sub btnCheckForUpdate_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles btnCheckForUpdate.Click
|
||||||
Me.CheckForUpdate()
|
CheckForUpdate()
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
Private Sub btnDownload_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDownload.Click
|
Private Sub btnDownload_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles btnDownload.Click
|
||||||
Me.DownloadUpdate()
|
DownloadUpdate()
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub pbUpdateImage_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles pbUpdateImage.Click
|
||||||
|
Dim linkUri As Uri = TryCast(pbUpdateImage.Tag, Uri)
|
||||||
|
If linkUri Is Nothing OrElse linkUri.IsFile Or linkUri.IsUnc Or linkUri.IsLoopback Then Return
|
||||||
|
Process.Start(linkUri.ToString())
|
||||||
|
End Sub
|
||||||
|
#End Region
|
||||||
|
|
||||||
|
#Region "Private Fields"
|
||||||
|
Private _appUpdate As App.Update
|
||||||
|
Private _isUpdateDownloadHandlerDeclared As Boolean = False
|
||||||
|
#End Region
|
||||||
|
|
||||||
|
#Region "Private Methods"
|
||||||
|
Private Sub CheckForUpdate()
|
||||||
|
If _appUpdate Is Nothing Then
|
||||||
|
_appUpdate = New App.Update
|
||||||
|
ElseIf _appUpdate.IsGetUpdateInfoRunning Then
|
||||||
|
Return
|
||||||
|
End If
|
||||||
|
|
||||||
|
lblStatus.Text = Language.strUpdateCheckingLabel
|
||||||
|
lblStatus.ForeColor = SystemColors.WindowText
|
||||||
|
lblLatestVersionLabel.Visible = False
|
||||||
|
lblInstalledVersion.Visible = False
|
||||||
|
lblInstalledVersionLabel.Visible = False
|
||||||
|
lblLatestVersion.Visible = False
|
||||||
|
btnCheckForUpdate.Visible = False
|
||||||
|
pnlUpdate.Visible = False
|
||||||
|
|
||||||
|
AddHandler _appUpdate.GetUpdateInfoCompletedEvent, AddressOf GetUpdateInfoCompleted
|
||||||
|
|
||||||
|
_appUpdate.GetUpdateInfoAsync()
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub GetUpdateInfoCompleted(ByVal sender As Object, ByVal e As AsyncCompletedEventArgs)
|
||||||
|
If InvokeRequired Then
|
||||||
|
Dim myDelegate As New AsyncCompletedEventHandler(AddressOf GetUpdateInfoCompleted)
|
||||||
|
Invoke(myDelegate, New Object() {sender, e})
|
||||||
|
Return
|
||||||
|
End If
|
||||||
|
|
||||||
|
Try
|
||||||
|
RemoveHandler _appUpdate.GetUpdateInfoCompletedEvent, AddressOf GetUpdateInfoCompleted
|
||||||
|
|
||||||
|
lblInstalledVersion.Text = Application.Info.Version.ToString
|
||||||
|
lblInstalledVersion.Visible = True
|
||||||
|
lblInstalledVersionLabel.Visible = True
|
||||||
|
btnCheckForUpdate.Visible = True
|
||||||
|
|
||||||
|
If e.Cancelled Then Return
|
||||||
|
If e.Error IsNot Nothing Then Throw e.Error
|
||||||
|
|
||||||
|
If _appUpdate.IsUpdateAvailable() Then
|
||||||
|
lblStatus.Text = Language.strUpdateAvailable
|
||||||
|
lblStatus.ForeColor = Color.OrangeRed
|
||||||
|
pnlUpdate.Visible = True
|
||||||
|
|
||||||
|
Dim updateInfo As App.Update.UpdateInfo = _appUpdate.CurrentUpdateInfo
|
||||||
|
lblLatestVersion.Text = updateInfo.Version.ToString
|
||||||
|
lblLatestVersionLabel.Visible = True
|
||||||
|
lblLatestVersion.Visible = True
|
||||||
|
|
||||||
|
If updateInfo.ImageAddress Is Nothing OrElse String.IsNullOrEmpty(updateInfo.ImageAddress.ToString()) Then
|
||||||
|
pbUpdateImage.Visible = False
|
||||||
|
Else
|
||||||
|
pbUpdateImage.ImageLocation = updateInfo.ImageAddress.ToString()
|
||||||
|
pbUpdateImage.Tag = updateInfo.ImageLinkAddress
|
||||||
|
pbUpdateImage.Visible = True
|
||||||
|
End If
|
||||||
|
|
||||||
|
AddHandler _appUpdate.GetChangeLogCompletedEvent, AddressOf GetChangeLogCompleted
|
||||||
|
_appUpdate.GetChangeLogAsync()
|
||||||
|
|
||||||
|
btnDownload.Focus()
|
||||||
|
Else
|
||||||
|
lblStatus.Text = Language.strNoUpdateAvailable
|
||||||
|
lblStatus.ForeColor = Color.ForestGreen
|
||||||
|
|
||||||
|
If _appUpdate.CurrentUpdateInfo IsNot Nothing Then
|
||||||
|
Dim updateInfo As App.Update.UpdateInfo = _appUpdate.CurrentUpdateInfo
|
||||||
|
If updateInfo.IsValid And updateInfo.Version IsNot Nothing Then
|
||||||
|
lblLatestVersion.Text = updateInfo.Version.ToString
|
||||||
|
lblLatestVersionLabel.Visible = True
|
||||||
|
lblLatestVersion.Visible = True
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
Catch ex As Exception
|
||||||
|
lblStatus.Text = Language.strUpdateCheckFailedLabel
|
||||||
|
lblStatus.ForeColor = Color.OrangeRed
|
||||||
|
|
||||||
|
MessageCollector.AddExceptionMessage(Language.strUpdateCheckCompleteFailed, ex)
|
||||||
|
End Try
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub GetChangeLogCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.AsyncCompletedEventArgs)
|
||||||
|
If InvokeRequired Then
|
||||||
|
Dim myDelegate As New AsyncCompletedEventHandler(AddressOf GetChangeLogCompleted)
|
||||||
|
Invoke(myDelegate, New Object() {sender, e})
|
||||||
|
Return
|
||||||
|
End If
|
||||||
|
|
||||||
|
Try
|
||||||
|
RemoveHandler _appUpdate.GetChangeLogCompletedEvent, AddressOf GetChangeLogCompleted
|
||||||
|
|
||||||
|
If e.Cancelled Then Return
|
||||||
|
If e.Error IsNot Nothing Then Throw e.Error
|
||||||
|
|
||||||
|
txtChangeLog.Text = _appUpdate.ChangeLog
|
||||||
|
Catch ex As Exception
|
||||||
|
MessageCollector.AddExceptionMessage(Language.strUpdateGetChangeLogFailed, ex)
|
||||||
|
End Try
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
Private Sub DownloadUpdate()
|
Private Sub DownloadUpdate()
|
||||||
Try
|
Try
|
||||||
If uD.DownloadUpdate(uD.curUI.DownloadUrl) = True Then
|
btnDownload.Enabled = False
|
||||||
Me.btnDownload.Enabled = False
|
prgbDownload.Visible = True
|
||||||
|
prgbDownload.Value = 0
|
||||||
|
|
||||||
If Me.IsUpdateDownloadHandlerDeclared = False Then
|
If _isUpdateDownloadHandlerDeclared = False Then
|
||||||
AddHandler uD.DownloadProgressChanged, AddressOf DLProgressChanged
|
AddHandler _appUpdate.DownloadUpdateProgressChangedEvent, AddressOf DownloadUpdateProgressChanged
|
||||||
AddHandler uD.DownloadCompleted, AddressOf DLCompleted
|
AddHandler _appUpdate.DownloadUpdateCompletedEvent, AddressOf DownloadUpdateCompleted
|
||||||
Me.IsUpdateDownloadHandlerDeclared = True
|
_isUpdateDownloadHandlerDeclared = True
|
||||||
End If
|
|
||||||
End If
|
End If
|
||||||
|
|
||||||
|
_appUpdate.DownloadUpdateAsync()
|
||||||
Catch ex As Exception
|
Catch ex As Exception
|
||||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strUpdateDownloadFailed & vbNewLine & ex.Message, True)
|
MessageCollector.AddExceptionMessage(Language.strUpdateDownloadFailed, ex)
|
||||||
End Try
|
End Try
|
||||||
End Sub
|
End Sub
|
||||||
#End Region
|
#End Region
|
||||||
|
|
||||||
#Region "Events"
|
#Region "Events"
|
||||||
Private Sub DLProgressChanged(ByVal sender As Object, ByVal e As System.Net.DownloadProgressChangedEventArgs)
|
Private Sub DownloadUpdateProgressChanged(ByVal sender As Object, ByVal e As Net.DownloadProgressChangedEventArgs)
|
||||||
Me.prgbDownload.Value = e.ProgressPercentage
|
prgbDownload.Value = e.ProgressPercentage
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
Private Sub DLCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.AsyncCompletedEventArgs, ByVal Success As Boolean)
|
Private Sub DownloadUpdateCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.AsyncCompletedEventArgs)
|
||||||
Try
|
Try
|
||||||
Me.btnDownload.Enabled = True
|
btnDownload.Enabled = True
|
||||||
|
prgbDownload.Visible = False
|
||||||
|
|
||||||
If Success = True Then
|
If e.Cancelled Then Return
|
||||||
If MessageBox.Show(My.Language.strUpdateDownloadComplete, My.Language.strMenuCheckForUpdates, MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) = System.Windows.Forms.DialogResult.OK Then
|
If e.Error IsNot Nothing Then Throw e.Error
|
||||||
Try
|
|
||||||
App.Runtime.Shutdown.BeforeQuit()
|
|
||||||
|
|
||||||
Process.Start(uD.curUI.UpdateLocation)
|
If MessageBox.Show(Language.strUpdateDownloadComplete, Language.strMenuCheckForUpdates, MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) = System.Windows.Forms.DialogResult.OK Then
|
||||||
Catch ex As Exception
|
Shutdown.BeforeQuit()
|
||||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strUpdateStartFailed & vbNewLine & ex.Message)
|
|
||||||
End Try
|
|
||||||
|
|
||||||
End
|
Process.Start(_appUpdate.CurrentUpdateInfo.UpdateFilePath)
|
||||||
Else
|
System.Windows.Forms.Application.Exit()
|
||||||
Try
|
Return
|
||||||
File.Delete(uD.curUI.UpdateLocation)
|
|
||||||
Catch ex As Exception
|
|
||||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strUpdateDeleteFailed & vbNewLine & ex.Message)
|
|
||||||
End Try
|
|
||||||
End If
|
|
||||||
Else
|
Else
|
||||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strUpdateDownloadFailed)
|
File.Delete(_appUpdate.CurrentUpdateInfo.UpdateFilePath)
|
||||||
End If
|
End If
|
||||||
Catch ex As Exception
|
Catch ex As Exception
|
||||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strUpdateDownloadCompleteFailed & vbNewLine & ex.Message, True)
|
MessageCollector.AddExceptionMessage(Language.strUpdateDownloadCompleteFailed, ex)
|
||||||
End Try
|
End Try
|
||||||
End Sub
|
End Sub
|
||||||
#End Region
|
#End Region
|
||||||
|
|
||||||
Private Sub pbUpdateImage_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
|
|
||||||
If pbUpdateImage.Tag IsNot Nothing Then
|
|
||||||
Process.Start(pbUpdateImage.Tag)
|
|
||||||
End If
|
|
||||||
End Sub
|
|
||||||
End Class
|
End Class
|
||||||
End Namespace
|
End Namespace
|
||||||
End Namespace
|
End Namespace
|
||||||
@@ -577,16 +577,37 @@
|
|||||||
<setting name="PuttySavedSessionsPanel" serializeAs="String">
|
<setting name="PuttySavedSessionsPanel" serializeAs="String">
|
||||||
<value />
|
<value />
|
||||||
</setting>
|
</setting>
|
||||||
|
<setting name="CompatibilityWarnLenovoAutoScrollUtility" serializeAs="String">
|
||||||
|
<value>True</value>
|
||||||
|
</setting>
|
||||||
|
<setting name="UpdateAddress" serializeAs="String">
|
||||||
|
<value>https://update.mremoteng.org/</value>
|
||||||
|
</setting>
|
||||||
|
<setting name="ConDefaultLoadBalanceInfo" serializeAs="String">
|
||||||
|
<value />
|
||||||
|
</setting>
|
||||||
|
<setting name="ConDefaultAutomaticResize" serializeAs="String">
|
||||||
|
<value>True</value>
|
||||||
|
</setting>
|
||||||
|
<setting name="InhDefaultLoadBalanceInfo" serializeAs="String">
|
||||||
|
<value>False</value>
|
||||||
|
</setting>
|
||||||
|
<setting name="InhDefaultAutomaticResize" serializeAs="String">
|
||||||
|
<value>False</value>
|
||||||
|
</setting>
|
||||||
</mRemoteNG.My.MySettings>
|
</mRemoteNG.My.MySettings>
|
||||||
</userSettings>
|
</userSettings>
|
||||||
<applicationSettings>
|
<applicationSettings>
|
||||||
<mRemoteNG.My.MySettings>
|
<mRemoteNG.My.MySettings>
|
||||||
<setting name="SupportedUICultures" serializeAs="String">
|
<setting name="SupportedUICultures" serializeAs="String">
|
||||||
<value>de,en,en-US,es-AR,es,fr,it,nl,pt,pl,ru,uk,zh-CN</value>
|
<value>de,en,en-US,es-AR,es,fr,it,nb-NO,nl,pt,pt-BR,pl,ru,uk,zh-CN</value>
|
||||||
</setting>
|
</setting>
|
||||||
<setting name="UpdateChannel" serializeAs="String">
|
<setting name="UpdateChannel" serializeAs="String">
|
||||||
<value>release</value>
|
<value>release</value>
|
||||||
</setting>
|
</setting>
|
||||||
|
<setting name="AnnouncementAddress" serializeAs="String">
|
||||||
|
<value>https://update.mremoteng.org/announcement-beta.txt</value>
|
||||||
|
</setting>
|
||||||
</mRemoteNG.My.MySettings>
|
</mRemoteNG.My.MySettings>
|
||||||
</applicationSettings>
|
</applicationSettings>
|
||||||
<startup><supportedRuntime version="v2.0.50727"/></startup></configuration>
|
<startup><supportedRuntime version="v2.0.50727"/></startup></configuration>
|
||||||
|
|||||||
@@ -175,7 +175,6 @@
|
|||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Compile Include="ApplicationEvents.vb" />
|
<Compile Include="ApplicationEvents.vb" />
|
||||||
<Compile Include="App\App.Announcement.vb" />
|
|
||||||
<Compile Include="App\App.Info.vb" />
|
<Compile Include="App\App.Info.vb" />
|
||||||
<Compile Include="App\App.Native.vb" />
|
<Compile Include="App\App.Native.vb" />
|
||||||
<Compile Include="App\App.Runtime.vb" />
|
<Compile Include="App\App.Runtime.vb" />
|
||||||
@@ -188,6 +187,10 @@
|
|||||||
<Compile Include="Config\Config.Settings.Save.vb" />
|
<Compile Include="Config\Config.Settings.Save.vb" />
|
||||||
<Compile Include="Config\ConfirmClose.vb" />
|
<Compile Include="Config\ConfirmClose.vb" />
|
||||||
<Compile Include="Config\PuttySessions.vb" />
|
<Compile Include="Config\PuttySessions.vb" />
|
||||||
|
<Compile Include="Tools\Authenticode.vb" />
|
||||||
|
<Compile Include="Tools\EnumWindows.vb" />
|
||||||
|
<Compile Include="Tools\EnvironmentInfo.vb" />
|
||||||
|
<Compile Include="Tools\PropertyGridCommandSite.vb" />
|
||||||
<Compile Include="Connection\PuttySession.Info.vb" />
|
<Compile Include="Connection\PuttySession.Info.vb" />
|
||||||
<Compile Include="Root\PuttySessions.Info.vb" />
|
<Compile Include="Root\PuttySessions.Info.vb" />
|
||||||
<Compile Include="Themes\ThemeManager.vb" />
|
<Compile Include="Themes\ThemeManager.vb" />
|
||||||
@@ -270,6 +273,9 @@
|
|||||||
<Compile Include="Security\Security.Crypt.vb" />
|
<Compile Include="Security\Security.Crypt.vb" />
|
||||||
<Compile Include="Security\Security.Impersonator.vb" />
|
<Compile Include="Security\Security.Impersonator.vb" />
|
||||||
<Compile Include="Security\Security.Save.vb" />
|
<Compile Include="Security\Security.Save.vb" />
|
||||||
|
<Compile Include="Tools\IeBrowserEmulation.vb" />
|
||||||
|
<Compile Include="Tools\ProcessController.vb" />
|
||||||
|
<Compile Include="Tools\PuttyProcessController.vb" />
|
||||||
<Compile Include="Tools\ReconnectGroup.Designer.vb">
|
<Compile Include="Tools\ReconnectGroup.Designer.vb">
|
||||||
<DependentUpon>ReconnectGroup.vb</DependentUpon>
|
<DependentUpon>ReconnectGroup.vb</DependentUpon>
|
||||||
</Compile>
|
</Compile>
|
||||||
@@ -291,7 +297,10 @@
|
|||||||
<Compile Include="UI\UI.Window.ADImport.vb">
|
<Compile Include="UI\UI.Window.ADImport.vb">
|
||||||
<SubType>Form</SubType>
|
<SubType>Form</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="UI\UI.Window.Announcment.vb">
|
<Compile Include="UI\UI.Window.Announcement.Designer.vb">
|
||||||
|
<DependentUpon>UI.Window.Announcement.vb</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="UI\UI.Window.Announcement.vb">
|
||||||
<SubType>Form</SubType>
|
<SubType>Form</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="UI\UI.Window.Base.vb">
|
<Compile Include="UI\UI.Window.Base.vb">
|
||||||
@@ -331,6 +340,9 @@
|
|||||||
<Compile Include="UI\UI.Window.ScreenshotManager.vb">
|
<Compile Include="UI\UI.Window.ScreenshotManager.vb">
|
||||||
<SubType>Form</SubType>
|
<SubType>Form</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
<Compile Include="UI\UI.Window.Sessions.Designer.vb">
|
||||||
|
<DependentUpon>UI.Window.Sessions.vb</DependentUpon>
|
||||||
|
</Compile>
|
||||||
<Compile Include="UI\UI.Window.Sessions.vb">
|
<Compile Include="UI\UI.Window.Sessions.vb">
|
||||||
<SubType>Form</SubType>
|
<SubType>Form</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
@@ -344,6 +356,9 @@
|
|||||||
<Compile Include="UI\UI.Window.UltraVNCSC.vb">
|
<Compile Include="UI\UI.Window.UltraVNCSC.vb">
|
||||||
<SubType>Form</SubType>
|
<SubType>Form</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
<Compile Include="UI\UI.Window.Update.Designer.vb">
|
||||||
|
<DependentUpon>UI.Window.Update.vb</DependentUpon>
|
||||||
|
</Compile>
|
||||||
<Compile Include="UI\UI.Window.Update.vb">
|
<Compile Include="UI\UI.Window.Update.vb">
|
||||||
<SubType>Form</SubType>
|
<SubType>Form</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
@@ -372,9 +387,11 @@
|
|||||||
<SubType>Designer</SubType>
|
<SubType>Designer</SubType>
|
||||||
</EmbeddedResource>
|
</EmbeddedResource>
|
||||||
<EmbeddedResource Include="Language\Language.it.resx" />
|
<EmbeddedResource Include="Language\Language.it.resx" />
|
||||||
|
<EmbeddedResource Include="Language\Language.nb-NO.resx" />
|
||||||
<EmbeddedResource Include="Language\Language.nl.resx">
|
<EmbeddedResource Include="Language\Language.nl.resx">
|
||||||
<SubType>Designer</SubType>
|
<SubType>Designer</SubType>
|
||||||
</EmbeddedResource>
|
</EmbeddedResource>
|
||||||
|
<EmbeddedResource Include="Language\Language.pt-BR.resx" />
|
||||||
<EmbeddedResource Include="Language\Language.pt.resx" />
|
<EmbeddedResource Include="Language\Language.pt.resx" />
|
||||||
<EmbeddedResource Include="Language\Language.resx">
|
<EmbeddedResource Include="Language\Language.resx">
|
||||||
<Generator>ResXFileCodeGenerator</Generator>
|
<Generator>ResXFileCodeGenerator</Generator>
|
||||||
@@ -413,8 +430,8 @@
|
|||||||
<DependentUpon>UI.Window.ADImport.vb</DependentUpon>
|
<DependentUpon>UI.Window.ADImport.vb</DependentUpon>
|
||||||
<SubType>Designer</SubType>
|
<SubType>Designer</SubType>
|
||||||
</EmbeddedResource>
|
</EmbeddedResource>
|
||||||
<EmbeddedResource Include="UI\UI.Window.Announcment.resx">
|
<EmbeddedResource Include="UI\UI.Window.Announcement.resx">
|
||||||
<DependentUpon>UI.Window.Announcment.vb</DependentUpon>
|
<DependentUpon>UI.Window.Announcement.vb</DependentUpon>
|
||||||
<SubType>Designer</SubType>
|
<SubType>Designer</SubType>
|
||||||
</EmbeddedResource>
|
</EmbeddedResource>
|
||||||
<EmbeddedResource Include="UI\UI.Window.ComponentsCheck.resx">
|
<EmbeddedResource Include="UI\UI.Window.ComponentsCheck.resx">
|
||||||
|
|||||||
Reference in New Issue
Block a user