mirror of
https://github.com/mRemoteNG/mRemoteNG.git
synced 2026-02-17 22:11:48 +08:00
Compare commits
120 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 | ||
|
|
d72dbdace0 | ||
|
|
5c887b648f | ||
|
|
4de7167352 | ||
|
|
54825b353f | ||
|
|
b23fb58977 | ||
|
|
7b831c6ab8 | ||
|
|
167344bd14 | ||
|
|
14f31ba461 | ||
|
|
13a82799b2 | ||
|
|
66fe33683e | ||
|
|
8030c9a63d | ||
|
|
60630a5cab | ||
|
|
d9ba8f81e2 | ||
|
|
7fe56402fd | ||
|
|
634bce25cd | ||
|
|
437ff003b0 | ||
|
|
9f09798da5 | ||
|
|
5da85b6a88 | ||
|
|
bb42a31486 | ||
|
|
7e5e1e6342 | ||
|
|
6f43bbf96e | ||
|
|
8ea514643d | ||
|
|
f7e12c6e92 | ||
|
|
30f2cc9e28 | ||
|
|
45b9dddb4b | ||
|
|
650dc487db | ||
|
|
5bc443707f | ||
|
|
4510219300 | ||
|
|
cd8601c7ff | ||
|
|
73c27069ee | ||
|
|
7dcad234f5 | ||
|
|
66281639b4 | ||
|
|
83ec9e50b8 | ||
|
|
0ff00e59ba | ||
|
|
850a342e38 | ||
|
|
1caba06aca | ||
|
|
a115196cee | ||
|
|
5f451de94e | ||
|
|
a4921fc564 | ||
|
|
7d1d03e8cd | ||
|
|
92c18a45ba | ||
|
|
e1deaf73ea | ||
|
|
7d6d602477 | ||
|
|
0a7c88a853 | ||
|
|
960ecba12a | ||
|
|
3988820db9 | ||
|
|
22ea7055c9 | ||
|
|
edba3fbea0 | ||
|
|
51e4bc7eae | ||
|
|
3e680235ee | ||
|
|
c218f0362e | ||
|
|
a3c9c667b4 | ||
|
|
73f71050a0 | ||
|
|
94d901ec4c | ||
|
|
9e67f36615 | ||
|
|
bf6f166d8f | ||
|
|
1de5ab43d6 | ||
|
|
39dd75dbde | ||
|
|
b509f75c17 | ||
|
|
877649b80a | ||
|
|
b5846f2286 | ||
|
|
80dd98e7fb | ||
|
|
80f35cea71 |
48
BUILD.CMD
48
BUILD.CMD
@@ -2,13 +2,13 @@
|
||||
|
||||
setlocal enabledelayedexpansion
|
||||
|
||||
set VERSIONTAG=
|
||||
set VERSIONTAG=Beta4
|
||||
|
||||
set VCVARSALL="%ProgramFiles(x86)%\Microsoft Visual Studio 10.0\VC\vcvarsall.bat"
|
||||
set DEVENV="devenv.exe"
|
||||
set MAKENSIS="%ProgramFiles(x86)%\NSIS\Unicode\makensis.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
|
||||
set SIGCHECK="%ProgramFiles(x86)%\Sigcheck\sigcheck.exe"
|
||||
@@ -25,7 +25,49 @@ echo Building portable version...
|
||||
%DEVENV% "%~dp0\mRemoteV1.sln" /build "Release Portable"
|
||||
|
||||
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
|
||||
|
||||
|
||||
@@ -1,3 +1,83 @@
|
||||
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):
|
||||
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-346 - Option to show/hide the description box at the bottom of the Config panel
|
||||
Added feature MR-351 - Import connections from PuTTY
|
||||
Fixed issue MR-354 - Re-ordering tabs doesn't give good, reliable visual feedback
|
||||
Fixed issue MR-375 - Changing a connection's icon using the picture button should immediately update Icon field
|
||||
Fixed issue MR-377 - Several redundant panels can be opened
|
||||
Fixed issue MR-379 - Connection variables not working with external tools
|
||||
Fixed issue MR-381 - Notifications panel - whitespace context menu allows Copy and Delete on nothing
|
||||
Fixed issue MR-401 - Checkbox misaligned
|
||||
The username and domain settings are now hidden for VNC connections since they are not supported.
|
||||
Changed "Automatically get session information" to be disabled by default.
|
||||
RDP connections can now be switched to full screen mode when redirect key combinations is enabled.
|
||||
|
||||
1.71 Beta 1 (2013-03-04):
|
||||
Added feature MR-329 - Create Option to disable the "Quick: " prefix
|
||||
Fixed issue MR-67 - Sort does not recursively sort
|
||||
Fixed issue MR-117 - Remote Session Info Window / Tab does not populate
|
||||
Fixed issue MR-121 - Config pane not sorting properties correctly when switching between alphabetical and categorized view
|
||||
Fixed issue MR-130 - Issues duplicating folders
|
||||
Fixed issue MR-142 - Start of mRemoteNG takes about one minute and consumes excessive CPU
|
||||
Fixed issue MR-158 - Password field not accepting Pipe
|
||||
Fixed issue MR-330 - Portable version saves log to user's profile folder
|
||||
Fixed issue MR-333 - Unnecessary prompt for 'close all open connections?'
|
||||
Fixed issue MR-342 - Incorrect view in config pane of new connection after viewing default inheritance
|
||||
Fixed issue MR-352 - Passwords with " (quotation mark) and # (hash key) characters make mRemoteNG to open PuttyNG dialog
|
||||
Fixed issue MR-362 - Rename 'Screenshot Manager' to 'Screenshots' on the View menu to match Panel name
|
||||
Added detection of newer versions of connection files and database schemata. mRemoteNG will now refuse to open them to avoid data loss.
|
||||
Improved appearance and discoverability of the connection search box.
|
||||
If RDC 7.0 or higher is installed, the connection bar is no longer briefly shown when connecting to an RDP connection with redirect key combinations enabled.
|
||||
If RDC 8.0 or higher is installed, RDP connections automatically adjust their size when the window is resized or when toggling full screen mode.
|
||||
|
||||
1.70 (2013-03-07):
|
||||
Fixed issue MR-339 - Connection group collapses with just one click
|
||||
Fixed issue MR-340 - Object reference not set to an instance of an object.
|
||||
|
||||
@@ -13,6 +13,15 @@ Andreas Rehm
|
||||
David Vidmar
|
||||
|
||||
|
||||
Translators
|
||||
===========
|
||||
|
||||
Eugenio "Ryo567" Mart<72>nez
|
||||
Mathieu Pape
|
||||
Emanuel Silva
|
||||
Robert Siwiec
|
||||
|
||||
|
||||
Included Source Code
|
||||
====================
|
||||
|
||||
|
||||
Binary file not shown.
@@ -1,22 +1,22 @@
|
||||
; Spanish installer translation
|
||||
|
||||
; Start mRemoteNG after installation
|
||||
LangString LaunchMremoteNow ${LANG_SPANISH} "mRemoteNG run SPANISH message"
|
||||
LangString LaunchMremoteNow ${LANG_SPANISH} "Iniciando de mRemoteNG"
|
||||
|
||||
; Installer Language
|
||||
LangString InstallerLanguage ${LANG_SPANISH} "Installer Language"
|
||||
LangString InstallerLanguage ${LANG_SPANISH} "Lenguaje de Instalación"
|
||||
|
||||
; 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
|
||||
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
|
||||
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
|
||||
LangString CreditsLinkName ${LANG_SPANISH} "Credits"
|
||||
LangString CopyingLinkName ${LANG_SPANISH} "License"
|
||||
LangString UninstallLinkName ${LANG_SPANISH} "Uninstall"
|
||||
LangString ChangeLogLinkName ${LANG_SPANISH} "Version History"
|
||||
LangString CreditsLinkName ${LANG_SPANISH} "Créditos"
|
||||
LangString CopyingLinkName ${LANG_SPANISH} "Licencia"
|
||||
LangString UninstallLinkName ${LANG_SPANISH} "Desinstalar"
|
||||
LangString ChangeLogLinkName ${LANG_SPANISH} "Historial de Versiones"
|
||||
|
||||
26
Sort Language Files.cmd
Normal file
26
Sort Language Files.cmd
Normal file
@@ -0,0 +1,26 @@
|
||||
@echo off
|
||||
|
||||
set TEMP_FOLDER="%TEMP%\Translations.tmp"
|
||||
set SORTRESX="%~dp0\Tools\SortRESX.exe"
|
||||
|
||||
echo.
|
||||
echo This script sorts the language files
|
||||
echo.
|
||||
|
||||
choice /m "Would you like to continue?"
|
||||
|
||||
echo.
|
||||
|
||||
rmdir /s /q %TEMP_FOLDER%
|
||||
mkdir %TEMP_FOLDER%
|
||||
copy "%~dp0\mRemoteV1\Language\*.resx" %TEMP_FOLDER%
|
||||
|
||||
pushd %TEMP_FOLDER%
|
||||
for %%f in (*) do %SORTRESX% %TEMP_FOLDER%\%%f "%~dp0\mRemoteV1\Language\%%f"
|
||||
popd
|
||||
|
||||
rmdir /s /q %TEMP_FOLDER%
|
||||
|
||||
echo Done.
|
||||
echo.
|
||||
pause
|
||||
@@ -29,12 +29,15 @@ mkdir %TEMP_FOLDER%
|
||||
|
||||
%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%\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%\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%\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%\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%\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"
|
||||
|
||||
@@ -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.Threading
|
||||
|
||||
Namespace App
|
||||
Namespace Info
|
||||
@@ -7,10 +8,27 @@ Namespace App
|
||||
Public Shared ReadOnly URLDonate As String = "http://donate.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 URLAnnouncement As String = "http://update.mremoteng.org/announcement.txt"
|
||||
Public Shared ReadOnly HomePath As String = My.Application.Info.DirectoryPath
|
||||
Public Shared EncryptionKey As String = "mR3m"
|
||||
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
|
||||
|
||||
Public Class Settings
|
||||
@@ -21,22 +39,29 @@ Namespace App
|
||||
#End If
|
||||
Public Shared ReadOnly LayoutFileName As String = "pnlLayout.xml"
|
||||
Public Shared ReadOnly ExtAppsFilesName As String = "extApps.xml"
|
||||
Public Const ThemesFileName As String = "Themes.xml"
|
||||
End Class
|
||||
|
||||
Public Class Update
|
||||
Public Shared ReadOnly URL As String = "http://update.mremoteng.org/"
|
||||
#If DEBUG Then
|
||||
Public Shared ReadOnly File As String = "update-debug.txt"
|
||||
#Else
|
||||
Public Shared ReadOnly File As String = "update.txt"
|
||||
#End If
|
||||
Public Shared ReadOnly Property FileName As String
|
||||
Get
|
||||
Select Case My.Settings.UpdateChannel.ToLowerInvariant()
|
||||
Case "beta"
|
||||
Return "update-beta.txt"
|
||||
Case "debug"
|
||||
Return "update-debug.txt"
|
||||
Case Else
|
||||
Return "update.txt"
|
||||
End Select
|
||||
End Get
|
||||
End Property
|
||||
End Class
|
||||
|
||||
Public Class Connections
|
||||
Public Shared ReadOnly DefaultConnectionsPath As String = App.Info.Settings.SettingsPath
|
||||
Public Shared ReadOnly DefaultConnectionsFile As String = "confCons.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
|
||||
|
||||
Public Class Credentials
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
Imports log4net
|
||||
Imports System.ComponentModel
|
||||
Imports log4net
|
||||
Imports mRemoteNG.Messages
|
||||
Imports mRemoteNG.Connection
|
||||
Imports mRemoteNG.Config.Settings
|
||||
Imports mRemoteNG.Tools
|
||||
Imports PSTaskDialog
|
||||
Imports WeifenLuo.WinFormsUI.Docking
|
||||
Imports System.IO
|
||||
Imports Crownwood
|
||||
@@ -20,6 +21,8 @@ Namespace App
|
||||
End Sub
|
||||
|
||||
#Region "Public Properties"
|
||||
Public Shared Property MainForm As frmMain
|
||||
|
||||
Private Shared _connectionList As Connection.List
|
||||
Public Shared Property ConnectionList() As List
|
||||
Get
|
||||
@@ -131,26 +134,6 @@ Namespace App
|
||||
End Set
|
||||
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
|
||||
Public Shared Property IsConnectionsFileLoaded() As Boolean
|
||||
Get
|
||||
@@ -262,70 +245,88 @@ Namespace App
|
||||
Public Shared AnnouncementForm As UI.Window.Announcement
|
||||
Public Shared AnnouncementPanel As New DockContent
|
||||
|
||||
Public Shared Sub Show(ByVal WindowType As UI.Window.Type, Optional ByVal PortScanMode As Tools.PortScan.PortScanMode = Tools.PortScan.PortScanMode.Normal)
|
||||
Public Shared Sub Show(ByVal windowType As UI.Window.Type, Optional ByVal portScanMode As PortScan.PortScanMode = PortScan.PortScanMode.Normal)
|
||||
Try
|
||||
Select Case WindowType
|
||||
Select Case windowType
|
||||
Case UI.Window.Type.About
|
||||
Windows.aboutForm = New UI.Window.About(Windows.aboutPanel)
|
||||
Windows.aboutPanel = Windows.aboutForm
|
||||
If aboutForm Is Nothing OrElse aboutForm.IsDisposed Then
|
||||
aboutForm = New UI.Window.About(aboutPanel)
|
||||
aboutPanel = aboutForm
|
||||
End If
|
||||
|
||||
Windows.aboutForm.Show(frmMain.pnlDock)
|
||||
aboutForm.Show(frmMain.pnlDock)
|
||||
Case UI.Window.Type.ADImport
|
||||
Windows.adimportForm = New UI.Window.ADImport(Windows.adimportPanel)
|
||||
Windows.adimportPanel = Windows.adimportForm
|
||||
If adimportForm Is Nothing OrElse adimportForm.IsDisposed Then
|
||||
adimportForm = New UI.Window.ADImport(adimportPanel)
|
||||
adimportPanel = adimportForm
|
||||
End If
|
||||
|
||||
Windows.adimportPanel.Show(frmMain.pnlDock)
|
||||
adimportPanel.Show(frmMain.pnlDock)
|
||||
Case UI.Window.Type.Options
|
||||
Windows.optionsForm = New frmOptions(Windows.optionsPanel)
|
||||
Windows.optionsForm.Show(frmMain.pnlDock)
|
||||
optionsForm = New frmOptions(optionsPanel)
|
||||
optionsForm.Show(frmMain.pnlDock)
|
||||
Case UI.Window.Type.Export
|
||||
Windows.exportForm = New UI.Window.Export(Windows.exportPanel)
|
||||
Windows.exportPanel = Windows.exportForm
|
||||
If exportForm Is Nothing OrElse exportForm.IsDisposed Then
|
||||
exportForm = New UI.Window.Export(exportPanel)
|
||||
exportPanel = exportForm
|
||||
End If
|
||||
|
||||
Windows.exportForm.Show(frmMain.pnlDock)
|
||||
exportForm.Show(frmMain.pnlDock)
|
||||
Case UI.Window.Type.SSHTransfer
|
||||
Windows.sshtransferForm = New UI.Window.SSHTransfer(Windows.sshtransferPanel)
|
||||
Windows.sshtransferPanel = Windows.sshtransferForm
|
||||
sshtransferForm = New UI.Window.SSHTransfer(sshtransferPanel)
|
||||
sshtransferPanel = sshtransferForm
|
||||
|
||||
Windows.sshtransferForm.Show(frmMain.pnlDock)
|
||||
sshtransferForm.Show(frmMain.pnlDock)
|
||||
Case UI.Window.Type.Update
|
||||
Windows.updateForm = New UI.Window.Update(Windows.updatePanel)
|
||||
Windows.updatePanel = Windows.updateForm
|
||||
If updateForm Is Nothing OrElse updateForm.IsDisposed Then
|
||||
updateForm = New UI.Window.Update(updatePanel)
|
||||
updatePanel = updateForm
|
||||
End If
|
||||
|
||||
Windows.updateForm.Show(frmMain.pnlDock)
|
||||
updateForm.Show(frmMain.pnlDock)
|
||||
Case UI.Window.Type.Help
|
||||
Windows.helpForm = New UI.Window.Help(Windows.helpPanel)
|
||||
Windows.helpPanel = Windows.helpForm
|
||||
If helpForm Is Nothing OrElse helpForm.IsDisposed Then
|
||||
helpForm = New UI.Window.Help(helpPanel)
|
||||
helpPanel = helpForm
|
||||
End If
|
||||
|
||||
Windows.helpForm.Show(frmMain.pnlDock)
|
||||
helpForm.Show(frmMain.pnlDock)
|
||||
Case UI.Window.Type.ExternalApps
|
||||
Windows.externalappsForm = New UI.Window.ExternalApps(Windows.externalappsPanel)
|
||||
Windows.externalappsPanel = Windows.externalappsForm
|
||||
If externalappsForm Is Nothing OrElse externalappsForm.IsDisposed Then
|
||||
externalappsForm = New UI.Window.ExternalApps(externalappsPanel)
|
||||
externalappsPanel = externalappsForm
|
||||
End If
|
||||
|
||||
Windows.externalappsForm.Show(frmMain.pnlDock)
|
||||
externalappsForm.Show(frmMain.pnlDock)
|
||||
Case UI.Window.Type.PortScan
|
||||
Windows.portscanForm = New UI.Window.PortScan(Windows.portscanPanel, PortScanMode)
|
||||
Windows.portscanPanel = Windows.portscanForm
|
||||
portscanForm = New UI.Window.PortScan(portscanPanel, portScanMode)
|
||||
portscanPanel = portscanForm
|
||||
|
||||
Windows.portscanForm.Show(frmMain.pnlDock)
|
||||
portscanForm.Show(frmMain.pnlDock)
|
||||
Case UI.Window.Type.UltraVNCSC
|
||||
Windows.ultravncscForm = New UI.Window.UltraVNCSC(Windows.ultravncscPanel)
|
||||
Windows.ultravncscPanel = Windows.ultravncscForm
|
||||
If ultravncscForm Is Nothing OrElse ultravncscForm.IsDisposed Then
|
||||
ultravncscForm = New UI.Window.UltraVNCSC(ultravncscPanel)
|
||||
ultravncscPanel = ultravncscForm
|
||||
End If
|
||||
|
||||
Windows.ultravncscForm.Show(frmMain.pnlDock)
|
||||
ultravncscForm.Show(frmMain.pnlDock)
|
||||
Case UI.Window.Type.ComponentsCheck
|
||||
Windows.componentscheckForm = New UI.Window.ComponentsCheck(Windows.componentscheckPanel)
|
||||
Windows.componentscheckPanel = Windows.componentscheckForm
|
||||
If componentscheckForm Is Nothing OrElse componentscheckForm.IsDisposed Then
|
||||
componentscheckForm = New UI.Window.ComponentsCheck(componentscheckPanel)
|
||||
componentscheckPanel = componentscheckForm
|
||||
End If
|
||||
|
||||
Windows.componentscheckForm.Show(frmMain.pnlDock)
|
||||
componentscheckForm.Show(frmMain.pnlDock)
|
||||
Case UI.Window.Type.Announcement
|
||||
Windows.AnnouncementForm = New UI.Window.Announcement(AnnouncementPanel)
|
||||
Windows.AnnouncementPanel = Windows.AnnouncementForm
|
||||
If AnnouncementForm Is Nothing OrElse AnnouncementForm.IsDisposed Then
|
||||
AnnouncementForm = New UI.Window.Announcement(AnnouncementPanel)
|
||||
AnnouncementPanel = AnnouncementForm
|
||||
End If
|
||||
|
||||
Windows.AnnouncementForm.Show(frmMain.pnlDock)
|
||||
AnnouncementForm.Show(frmMain.pnlDock)
|
||||
End Select
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "Show (App.Runtime.Windows) failed" & vbNewLine & ex.Message, True)
|
||||
MessageCollector.AddMessage(MessageClass.ErrorMsg, "App.Runtime.Windows.Show() failed." & vbNewLine & ex.Message, True)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
@@ -360,6 +361,11 @@ Namespace App
|
||||
|
||||
Public Class Startup
|
||||
Public Shared Sub CheckCompatibility()
|
||||
CheckFipsPolicy()
|
||||
CheckLenovoAutoScrollUtility()
|
||||
End Sub
|
||||
|
||||
Private Shared Sub CheckFipsPolicy()
|
||||
Dim regKey As RegistryKey
|
||||
|
||||
Dim isFipsPolicyEnabled As Boolean = False
|
||||
@@ -382,6 +388,22 @@ Namespace App
|
||||
End If
|
||||
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()
|
||||
Windows.configForm = New UI.Window.Config(Windows.configPanel)
|
||||
Windows.configPanel = Windows.configForm
|
||||
@@ -447,66 +469,118 @@ Namespace App
|
||||
Next
|
||||
End Sub
|
||||
|
||||
Public Shared Sub GetPuttySessions()
|
||||
Connection.PuttySession.PuttySessions = Connection.Protocol.PuttyBase.GetSessions()
|
||||
End Sub
|
||||
|
||||
Public Shared Sub CreateLogger()
|
||||
log4net.Config.XmlConfigurator.Configure(New FileInfo("mRemoteNG.exe.config"))
|
||||
Log = log4net.LogManager.GetLogger("mRemoteNG.Log")
|
||||
Log.InfoFormat("{0} started.", My.Application.Info.ProductName)
|
||||
Log.InfoFormat("Command Line: {0}", Environment.GetCommandLineArgs)
|
||||
Try
|
||||
Dim servicePack As Integer
|
||||
For Each managementObject As ManagementObject In New ManagementObjectSearcher("SELECT * FROM Win32_OperatingSystem").Get()
|
||||
servicePack = managementObject.GetPropertyValue("ServicePackMajorVersion")
|
||||
If servicePack = 0 Then
|
||||
Log.InfoFormat("{0} {1}", managementObject.GetPropertyValue("Caption").Trim, managementObject.GetPropertyValue("OSArchitecture"))
|
||||
Else
|
||||
Log.InfoFormat("{0} Service Pack {1} {2}", managementObject.GetPropertyValue("Caption").Trim, servicePack.ToString, managementObject.GetPropertyValue("OSArchitecture"))
|
||||
End If
|
||||
Next
|
||||
Catch ex As Exception
|
||||
Log.WarnFormat("Error retrieving operating system information from WMI. {0}", ex.Message)
|
||||
End Try
|
||||
Log.InfoFormat("Microsoft .NET Framework {0}", System.Environment.Version.ToString)
|
||||
log4net.Config.XmlConfigurator.Configure()
|
||||
|
||||
Dim logFilePath As String
|
||||
#If Not PORTABLE Then
|
||||
Log.InfoFormat("{0} {1}", My.Application.Info.ProductName.ToString, My.Application.Info.Version.ToString)
|
||||
logFilePath = Path.Combine(GetFolderPath(SpecialFolder.LocalApplicationData), Application.ProductName)
|
||||
#Else
|
||||
log.InfoFormat("{0} {1} {2}", My.Application.Info.ProductName.ToString, My.Application.Info.Version.ToString, My.Language.strLabelPortableEdition)
|
||||
logFilePath = Application.StartupPath
|
||||
#End If
|
||||
Log.InfoFormat("System Culture: {0}/{1}", Threading.Thread.CurrentThread.CurrentUICulture.Name, Threading.Thread.CurrentThread.CurrentUICulture.NativeName)
|
||||
End Sub
|
||||
Dim logFileName As String = Path.ChangeExtension(Application.ProductName, ".log")
|
||||
Dim logFile As String = Path.Combine(logFilePath, logFileName)
|
||||
|
||||
Public Shared Sub UpdateCheck()
|
||||
If My.Settings.CheckForUpdatesAsked And My.Settings.CheckForUpdatesOnStartup Then
|
||||
If My.Settings.UpdatePending Or My.Settings.CheckForUpdatesLastCheck < Date.Now.Subtract(TimeSpan.FromDays(My.Settings.CheckForUpdatesFrequencyDays)) Then
|
||||
frmMain.tmrShowUpdate.Enabled = True
|
||||
Windows.updateForm.CheckForUpdate()
|
||||
AddHandler Windows.updateForm.UpdateCheckCompleted, AddressOf UpdateCheckComplete
|
||||
Dim repository As Repository.ILoggerRepository = LogManager.GetRepository()
|
||||
Dim appenders As Appender.IAppender() = repository.GetAppenders()
|
||||
Dim fileAppender As Appender.FileAppender
|
||||
For Each appender As Appender.IAppender In appenders
|
||||
fileAppender = TryCast(appender, Appender.FileAppender)
|
||||
If Not (fileAppender Is Nothing OrElse Not fileAppender.Name = "LogFileAppender") Then
|
||||
fileAppender.File = logFile
|
||||
fileAppender.ActivateOptions()
|
||||
End If
|
||||
Next
|
||||
|
||||
Log = LogManager.GetLogger("Logger")
|
||||
|
||||
If My.Settings.WriteLogFile Then
|
||||
#If Not PORTABLE Then
|
||||
Log.InfoFormat("{0} {1} starting.", Application.ProductName, Application.ProductVersion)
|
||||
#Else
|
||||
Log.InfoFormat("{0} {1} {2} starting.", Application.ProductName, Application.ProductVersion, My.Language.strLabelPortableEdition)
|
||||
#End If
|
||||
Log.InfoFormat("Command Line: {0}", Environment.GetCommandLineArgs)
|
||||
|
||||
Try
|
||||
Dim servicePack As Integer
|
||||
For Each managementObject As ManagementObject In New ManagementObjectSearcher("SELECT * FROM Win32_OperatingSystem").Get()
|
||||
servicePack = managementObject.GetPropertyValue("ServicePackMajorVersion")
|
||||
If servicePack = 0 Then
|
||||
Log.InfoFormat("{0} {1}", managementObject.GetPropertyValue("Caption").Trim, managementObject.GetPropertyValue("OSArchitecture"))
|
||||
Else
|
||||
Log.InfoFormat("{0} Service Pack {1} {2}", managementObject.GetPropertyValue("Caption").Trim, servicePack.ToString, managementObject.GetPropertyValue("OSArchitecture"))
|
||||
End If
|
||||
Next
|
||||
Catch ex As Exception
|
||||
Log.WarnFormat("Error retrieving operating system information from WMI. {0}", ex.Message)
|
||||
End Try
|
||||
|
||||
Log.InfoFormat("Microsoft .NET CLR {0}", Version.ToString)
|
||||
Log.InfoFormat("System Culture: {0}/{1}", Thread.CurrentThread.CurrentUICulture.Name, Thread.CurrentThread.CurrentUICulture.NativeName)
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Shared Sub UpdateCheckComplete(ByVal UpdateAvailable As Boolean)
|
||||
My.Settings.CheckForUpdatesLastCheck = Date.Now
|
||||
My.Settings.UpdatePending = UpdateAvailable
|
||||
IsUpdateAvailable = UpdateAvailable
|
||||
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
|
||||
Private Shared _appUpdate As Update
|
||||
Public Shared Sub CheckForUpdate()
|
||||
If _appUpdate Is Nothing Then
|
||||
_appUpdate = New Update
|
||||
ElseIf _appUpdate.IsGetUpdateInfoRunning Then
|
||||
Return
|
||||
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
|
||||
|
||||
Private Shared Sub AnnouncementCheckComplete(ByVal AnnouncementAvailable As Boolean)
|
||||
My.Settings.CheckForUpdatesLastCheck = Date.Now
|
||||
IsAnnouncementAvailable = AnnouncementAvailable
|
||||
Private Shared Sub GetUpdateInfoCompleted(ByVal sender As Object, ByVal e As AsyncCompletedEventArgs)
|
||||
If MainForm.InvokeRequired Then
|
||||
MainForm.Invoke(New AsyncCompletedEventHandler(AddressOf GetUpdateInfoCompleted), New Object() {sender, e})
|
||||
Return
|
||||
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
|
||||
|
||||
Public Shared Sub CheckForAnnouncement()
|
||||
If _appUpdate Is Nothing Then
|
||||
_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
|
||||
|
||||
Public Shared Sub ParseCommandLineArgs()
|
||||
@@ -640,6 +714,8 @@ Namespace App
|
||||
|
||||
Dim SettingsSave As New Config.Settings.Save()
|
||||
SettingsSave.Save()
|
||||
|
||||
IeBrowserEmulation.Unregister()
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strSettingsCouldNotBeSavedOrTrayDispose & vbNewLine & ex.Message, True)
|
||||
End Try
|
||||
@@ -666,10 +742,12 @@ Namespace App
|
||||
My.Settings.ConDefaultPuttySession = .PuttySession
|
||||
My.Settings.ConDefaultICAEncryptionStrength = .ICAEncryption.ToString
|
||||
My.Settings.ConDefaultRDPAuthenticationLevel = .RDPAuthenticationLevel.ToString
|
||||
My.Settings.ConDefaultLoadBalanceInfo = .LoadBalanceInfo
|
||||
My.Settings.ConDefaultUseConsoleSession = .UseConsoleSession
|
||||
My.Settings.ConDefaultUseCredSsp = .UseCredSsp
|
||||
My.Settings.ConDefaultRenderingEngine = .RenderingEngine.ToString
|
||||
My.Settings.ConDefaultResolution = .Resolution.ToString
|
||||
My.Settings.ConDefaultAutomaticResize = .AutomaticResize
|
||||
My.Settings.ConDefaultColors = .Colors.ToString
|
||||
My.Settings.ConDefaultCacheBitmaps = .CacheBitmaps
|
||||
My.Settings.ConDefaultDisplayWallpaper = .DisplayWallpaper
|
||||
@@ -732,7 +810,9 @@ Namespace App
|
||||
My.Settings.InhDefaultRenderingEngine = .RenderingEngine
|
||||
My.Settings.InhDefaultICAEncryptionStrength = .ICAEncryption
|
||||
My.Settings.InhDefaultRDPAuthenticationLevel = .RDPAuthenticationLevel
|
||||
My.Settings.InhDefaultLoadBalanceInfo = .LoadBalanceInfo
|
||||
My.Settings.InhDefaultResolution = .Resolution
|
||||
My.Settings.InhDefaultAutomaticResize = .AutomaticResize
|
||||
My.Settings.InhDefaultColors = .Colors
|
||||
My.Settings.InhDefaultCacheBitmaps = .CacheBitmaps
|
||||
My.Settings.InhDefaultDisplayWallpaper = .DisplayWallpaper
|
||||
@@ -894,7 +974,7 @@ Namespace App
|
||||
xW.WriteAttributeString("Name", My.Language.strConnections)
|
||||
xW.WriteAttributeString("Export", "", "False")
|
||||
xW.WriteAttributeString("Protected", "", "GiUis20DIbnYzWPcdaQKfjE2H5jh//L5v4RGrJMGNXuIq2CttB/d/BxaBP2LwRhY")
|
||||
xW.WriteAttributeString("ConfVersion", "", "2.4")
|
||||
xW.WriteAttributeString("ConfVersion", "", "2.5")
|
||||
|
||||
xW.WriteEndElement()
|
||||
xW.WriteEndDocument()
|
||||
@@ -903,7 +983,6 @@ Namespace App
|
||||
|
||||
conL.ConnectionList = ConnectionList
|
||||
conL.ContainerList = ContainerList
|
||||
conL.Import = False
|
||||
|
||||
Tree.Node.ResetTree()
|
||||
|
||||
@@ -911,7 +990,7 @@ Namespace App
|
||||
|
||||
' Load config
|
||||
conL.ConnectionFileName = filename
|
||||
conL.Load()
|
||||
conL.Load(False)
|
||||
|
||||
Windows.treeForm.tvConnections.SelectedNode = conL.RootTreeNode
|
||||
Catch ex As Exception
|
||||
@@ -994,8 +1073,6 @@ Namespace App
|
||||
conL.PreviousSelected = LastSelected
|
||||
End If
|
||||
|
||||
conL.Import = False
|
||||
|
||||
Tree.Node.ResetTree()
|
||||
|
||||
conL.RootTreeNode = Windows.treeForm.tvConnections.Nodes(0)
|
||||
@@ -1007,7 +1084,7 @@ Namespace App
|
||||
conL.SQLPassword = Security.Crypt.Decrypt(My.Settings.SQLPass, App.Info.General.EncryptionKey)
|
||||
conL.SQLUpdate = Update
|
||||
|
||||
conL.Load()
|
||||
conL.Load(False)
|
||||
|
||||
If My.Settings.UseSQLServer = True Then
|
||||
LastSqlUpdate = Now
|
||||
@@ -1024,14 +1101,31 @@ Namespace App
|
||||
TimerSqlWatcher.Start()
|
||||
End If
|
||||
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 = False Then
|
||||
If My.Settings.UseSQLServer 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
|
||||
LoadConnections()
|
||||
Exit Sub
|
||||
LoadConnections(WithDialog, Update)
|
||||
Return
|
||||
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()
|
||||
Return
|
||||
End If
|
||||
End If
|
||||
End Try
|
||||
@@ -1119,11 +1213,10 @@ Namespace App
|
||||
Dim conL As New Config.Connections.Load
|
||||
conL.ConnectionFileName = lD.FileNames(i)
|
||||
conL.RootTreeNode = nNode
|
||||
conL.Import = True
|
||||
conL.ConnectionList = App.Runtime.ConnectionList
|
||||
conL.ContainerList = App.Runtime.ContainerList
|
||||
|
||||
conL.Load()
|
||||
conL.Load(True)
|
||||
|
||||
Windows.treeForm.tvConnections.SelectedNode.Nodes.Add(nNode)
|
||||
Next
|
||||
@@ -1133,136 +1226,139 @@ Namespace App
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
Public Shared Sub ImportConnectionsFromRDPFiles()
|
||||
Public Shared Sub ImportConnectionsRdpFile()
|
||||
Try
|
||||
Dim lD As OpenFileDialog = Tools.Controls.ConnectionsRDPImportDialog
|
||||
lD.Multiselect = True
|
||||
Dim openFileDialog As OpenFileDialog = Controls.ImportConnectionsRdpFileDialog
|
||||
If Not openFileDialog.ShowDialog = DialogResult.OK Then Return
|
||||
|
||||
If lD.ShowDialog = DialogResult.OK Then
|
||||
For i As Integer = 0 To lD.FileNames.Length - 1
|
||||
Dim lines As String() = File.ReadAllLines(lD.FileNames(i))
|
||||
For Each fileName As String In openFileDialog.FileNames
|
||||
Dim lines As String() = File.ReadAllLines(fileName)
|
||||
|
||||
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()
|
||||
nConI.Inherit = New Connection.Info.Inheritance(nConI)
|
||||
Dim connectionInfo As New Connection.Info()
|
||||
connectionInfo.Inherit = New Connection.Info.Inheritance(connectionInfo)
|
||||
|
||||
nConI.Name = nNode.Text
|
||||
connectionInfo.Name = treeNode.Text
|
||||
|
||||
For Each l As String In lines
|
||||
Dim pName As String = l.Substring(0, l.IndexOf(":"))
|
||||
Dim pValue As String = l.Substring(l.LastIndexOf(":") + 1)
|
||||
For Each line As String In lines
|
||||
Dim parts() As String = line.Split(New Char() {":"}, 3)
|
||||
If parts.Length < 3 Then Continue For
|
||||
|
||||
Select Case LCase(pName)
|
||||
Case "full address"
|
||||
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
|
||||
Dim key As String = parts(0)
|
||||
Dim value As String = parts(2)
|
||||
|
||||
nNode.Tag = nConI
|
||||
Windows.treeForm.tvConnections.SelectedNode.Nodes.Add(nNode)
|
||||
|
||||
If Tree.Node.GetNodeType(nNode.Parent) = Tree.Node.Type.Container Then
|
||||
nConI.Parent = nNode.Parent.Tag
|
||||
End If
|
||||
|
||||
ConnectionList.Add(nConI)
|
||||
Select Case LCase(key)
|
||||
Case "full address"
|
||||
Dim uri As New Uri("dummyscheme" + uri.SchemeDelimiter + value)
|
||||
If Not String.IsNullOrEmpty(uri.Host) Then connectionInfo.Hostname = uri.Host
|
||||
If Not uri.Port = -1 Then connectionInfo.Port = uri.Port
|
||||
Case "server port"
|
||||
connectionInfo.Port = value
|
||||
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
|
||||
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
|
||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strRdpFileCouldNotBeImported & vbNewLine & vbNewLine & ex.Message)
|
||||
MessageCollector.AddExceptionMessage(My.Language.strRdpFileCouldNotBeImported, ex)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
@@ -1482,7 +1578,12 @@ Namespace App
|
||||
If Not String.IsNullOrEmpty(Uri.Host) Then
|
||||
Dim newConnectionInfo As New Connection.Info
|
||||
|
||||
newConnectionInfo.Name = String.Format(My.Language.strQuick, Uri.Host)
|
||||
If My.Settings.IdentifyQuickConnectTabs Then
|
||||
newConnectionInfo.Name = String.Format(My.Language.strQuick, Uri.Host)
|
||||
Else
|
||||
newConnectionInfo.Name = Uri.Host
|
||||
End If
|
||||
|
||||
newConnectionInfo.Protocol = Protocol
|
||||
newConnectionInfo.Hostname = Uri.Host
|
||||
If Uri.Port = -1 Then
|
||||
@@ -1521,11 +1622,13 @@ Namespace App
|
||||
Exit Sub
|
||||
End If
|
||||
|
||||
If Tree.Node.GetNodeType(Tree.Node.SelectedNode) = Tree.Node.Type.Connection Then
|
||||
If Tree.Node.GetNodeType(Tree.Node.SelectedNode) = Tree.Node.Type.Connection Or _
|
||||
Tree.Node.GetNodeType(Tree.Node.SelectedNode) = Tree.Node.Type.PuttySession Then
|
||||
OpenConnection(Windows.treeForm.tvConnections.SelectedNode.Tag, Force)
|
||||
ElseIf Tree.Node.GetNodeType(Tree.Node.SelectedNode) = Tree.Node.Type.Container Then
|
||||
For Each tNode As TreeNode In Tree.Node.SelectedNode.Nodes
|
||||
If Tree.Node.GetNodeType(tNode) = Tree.Node.Type.Connection Then
|
||||
If Tree.Node.GetNodeType(tNode) = Tree.Node.Type.Connection Or _
|
||||
Tree.Node.GetNodeType(Tree.Node.SelectedNode) = Tree.Node.Type.PuttySession Then
|
||||
If tNode.Tag IsNot Nothing Then
|
||||
OpenConnection(tNode.Tag, Force)
|
||||
End If
|
||||
|
||||
@@ -1,264 +1,431 @@
|
||||
Imports System.IO
|
||||
Imports System.Net
|
||||
Imports mRemoteNG.App.Runtime
|
||||
Imports System.ComponentModel
|
||||
Imports System.Threading
|
||||
Imports mRemoteNG.Tools
|
||||
Imports System.Reflection
|
||||
|
||||
Namespace App
|
||||
Public Class Update
|
||||
Public Event DownloadProgressChanged(ByVal sender As Object, ByVal e As System.Net.DownloadProgressChangedEventArgs)
|
||||
Public Event DownloadCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.AsyncCompletedEventArgs, ByVal Success As Boolean)
|
||||
#Region "Events"
|
||||
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"
|
||||
Private _curUI As Info
|
||||
Public ReadOnly Property curUI() As Info
|
||||
Private _currentUpdateInfo As UpdateInfo
|
||||
Public ReadOnly Property CurrentUpdateInfo() As UpdateInfo
|
||||
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 Property
|
||||
#End Region
|
||||
|
||||
#Region "Private Properties"
|
||||
Private wCl As WebClient
|
||||
Private wPr As WebProxy
|
||||
#End Region
|
||||
|
||||
#Region "Public Methods"
|
||||
Public Function IsProxyOK() As Boolean
|
||||
Try
|
||||
Dim uI As Info = GetUpdateInfo()
|
||||
Public Sub New()
|
||||
SetProxySettings()
|
||||
End Sub
|
||||
|
||||
Return uI.InfoOk
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddMessage(Messages.MessageClass.WarningMsg, "IsProxyOK (App.Update) failed" & vbNewLine & ex.Message, False)
|
||||
Return False
|
||||
End Try
|
||||
End Function
|
||||
Public Sub SetProxySettings()
|
||||
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))
|
||||
End Sub
|
||||
|
||||
Public Function IsUpdateAvailable() As Boolean
|
||||
Try
|
||||
Dim uI As Info = GetUpdateInfo()
|
||||
|
||||
If uI.InfoOk = False Then
|
||||
Return False
|
||||
End If
|
||||
|
||||
If uI.Version > My.Application.Info.Version Then
|
||||
Return True
|
||||
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)
|
||||
If useProxy And Not String.IsNullOrEmpty(address) Then
|
||||
If Not port = 0 Then
|
||||
_webProxy = New WebProxy(address, port)
|
||||
Else
|
||||
Return False
|
||||
_webProxy = New WebProxy(address)
|
||||
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
|
||||
Try
|
||||
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
|
||||
If useAuthentication Then
|
||||
_webProxy.Credentials = New NetworkCredential(username, password)
|
||||
Else
|
||||
uI.InfoOk = False
|
||||
_webProxy.Credentials = Nothing
|
||||
End If
|
||||
|
||||
_curUI = uI
|
||||
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
|
||||
Else
|
||||
_webProxy = Nothing
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Function GetUpdateFile() As String
|
||||
Try
|
||||
CreateWebClient()
|
||||
Public Function IsUpdateAvailable() As Boolean
|
||||
If _currentUpdateInfo Is Nothing OrElse Not _currentUpdateInfo.IsValid Then Return False
|
||||
|
||||
Dim strTemp As String
|
||||
|
||||
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
|
||||
Return _currentUpdateInfo.Version > My.Application.Info.Version
|
||||
End Function
|
||||
|
||||
Private Sub DLProgressChanged(ByVal sender As Object, ByVal e As System.Net.DownloadProgressChangedEventArgs)
|
||||
RaiseEvent DownloadProgressChanged(sender, e)
|
||||
Public Function IsAnnouncementAvailable() As Boolean
|
||||
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
|
||||
|
||||
Private Sub DLCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.AsyncCompletedEventArgs)
|
||||
Try
|
||||
Dim fInfo As New FileInfo(_curUI.UpdateLocation)
|
||||
Public Sub GetChangeLogAsync()
|
||||
If _currentUpdateInfo Is Nothing OrElse Not _currentUpdateInfo.IsValid Then
|
||||
Throw New InvalidOperationException("CurrentUpdateInfo is not valid. GetUpdateInfoAsync() must be called before calling GetChangeLogAsync().")
|
||||
End If
|
||||
|
||||
If fInfo.Length > 0 Then
|
||||
RaiseEvent DownloadCompleted(sender, e, True)
|
||||
Else
|
||||
fInfo.Delete()
|
||||
RaiseEvent DownloadCompleted(sender, e, False)
|
||||
End If
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddMessage(Messages.MessageClass.WarningMsg, "DLCompleted failed" & vbNewLine & ex.Message, True)
|
||||
End Try
|
||||
If IsGetChangeLogRunning Then _getChangeLogThread.Abort()
|
||||
|
||||
_getChangeLogThread = New Thread(AddressOf GetChangeLog)
|
||||
With _getChangeLogThread
|
||||
.SetApartmentState(ApartmentState.STA)
|
||||
.IsBackground = True
|
||||
.Start()
|
||||
End With
|
||||
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 Region
|
||||
|
||||
Public Class Info
|
||||
Private _Version As Version
|
||||
Public Property Version() As Version
|
||||
Get
|
||||
Return _Version
|
||||
End Get
|
||||
Set(ByVal value As Version)
|
||||
_Version = value
|
||||
End Set
|
||||
End Property
|
||||
#Region "Private Properties"
|
||||
Private _downloadUpdateWebClient As WebClient
|
||||
Private ReadOnly Property DownloadUpdateWebClient() As WebClient
|
||||
Get
|
||||
If _downloadUpdateWebClient IsNot Nothing Then Return _downloadUpdateWebClient
|
||||
|
||||
Private _DownloadUrl As String
|
||||
Public Property DownloadUrl() As String
|
||||
Get
|
||||
Return _DownloadUrl
|
||||
End Get
|
||||
Set(ByVal value As String)
|
||||
_DownloadUrl = value
|
||||
End Set
|
||||
End Property
|
||||
_downloadUpdateWebClient = CreateWebClient()
|
||||
|
||||
Private _UpdateLocation As String
|
||||
Public Property UpdateLocation() As String
|
||||
Get
|
||||
Return _UpdateLocation
|
||||
End Get
|
||||
Set(ByVal value As String)
|
||||
_UpdateLocation = value
|
||||
End Set
|
||||
End Property
|
||||
AddHandler _downloadUpdateWebClient.DownloadProgressChanged, AddressOf DownloadUpdateProgressChanged
|
||||
AddHandler _downloadUpdateWebClient.DownloadFileCompleted, AddressOf DownloadUpdateCompleted
|
||||
|
||||
Private _ChangeLog As String
|
||||
Public Property ChangeLog() As String
|
||||
Get
|
||||
Return _ChangeLog
|
||||
End Get
|
||||
Set(ByVal value As String)
|
||||
_ChangeLog = value
|
||||
End Set
|
||||
End Property
|
||||
Return _downloadUpdateWebClient
|
||||
End Get
|
||||
End Property
|
||||
#End Region
|
||||
|
||||
Private _ImageURL As String
|
||||
Public Property ImageURL() As String
|
||||
Get
|
||||
Return _ImageURL
|
||||
End Get
|
||||
Set(ByVal value As String)
|
||||
_ImageURL = value
|
||||
End Set
|
||||
End Property
|
||||
#Region "Private Fields"
|
||||
Private _webProxy As WebProxy
|
||||
Private _getUpdateInfoThread As Thread
|
||||
Private _getChangeLogThread As Thread
|
||||
Private _getAnnouncementInfoThread As Thread
|
||||
#End Region
|
||||
|
||||
Private _ImageURLLink As String
|
||||
Public Property ImageURLLink() As String
|
||||
Get
|
||||
Return _ImageURLLink
|
||||
End Get
|
||||
Set(ByVal value As String)
|
||||
_ImageURLLink = value
|
||||
End Set
|
||||
End Property
|
||||
#Region "Private Methods"
|
||||
Private Function CreateWebClient() As WebClient
|
||||
Dim webClient As New WebClient
|
||||
webClient.Headers.Add("user-agent", Info.General.UserAgent)
|
||||
webClient.Proxy = _webProxy
|
||||
Return webClient
|
||||
End Function
|
||||
|
||||
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
|
||||
Private Shared Function NewDownloadStringCompletedEventArgs(ByVal result As String, ByVal exception As Exception, ByVal cancelled As Boolean, ByVal userToken As Object) As DownloadStringCompletedEventArgs
|
||||
Dim type As Type = GetType(DownloadStringCompletedEventArgs)
|
||||
Const bindingFlags As BindingFlags = bindingFlags.NonPublic Or bindingFlags.Instance
|
||||
Dim argumentTypes() As Type = {GetType(String), GetType(Exception), GetType(Boolean), GetType(Object)}
|
||||
Dim constructor As ConstructorInfo = type.GetConstructor(bindingFlags, Nothing, argumentTypes, Nothing)
|
||||
Dim arguments() As Object = {result, exception, cancelled, userToken}
|
||||
|
||||
Return constructor.Invoke(arguments)
|
||||
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
|
||||
|
||||
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 Namespace
|
||||
@@ -5,6 +5,7 @@ Imports mRemoteNG.App.Runtime
|
||||
Imports System.Data
|
||||
Imports System.Data.SqlClient
|
||||
Imports System.IO
|
||||
Imports PSTaskDialog
|
||||
|
||||
Namespace Config
|
||||
Namespace Connections
|
||||
@@ -112,16 +113,6 @@ Namespace Config
|
||||
End Set
|
||||
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
|
||||
Public Property ConnectionList() As Connection.List
|
||||
Get
|
||||
@@ -164,17 +155,18 @@ Namespace Config
|
||||
#End Region
|
||||
|
||||
#Region "Public Methods"
|
||||
Public Sub Load()
|
||||
Public Sub Load(ByVal import As Boolean)
|
||||
If _UseSQL = True Then
|
||||
LoadFromSQL()
|
||||
SetMainFormText("SQL Server")
|
||||
Else
|
||||
Dim strCons As String = DecryptCompleteFile()
|
||||
LoadFromXML(strCons)
|
||||
LoadFromXML(strCons, import)
|
||||
End If
|
||||
|
||||
If Import = False Then
|
||||
If import = False Then
|
||||
SetMainFormText(ConnectionFileName)
|
||||
PuttySessions.AddSessionsToTree()
|
||||
End If
|
||||
End Sub
|
||||
#End Region
|
||||
@@ -206,7 +198,12 @@ Namespace Config
|
||||
sqlRd.Read()
|
||||
End If
|
||||
|
||||
Me.confVersion = Convert.ToDouble(sqlRd.Item("confVersion"), CultureInfo.InvariantCulture)
|
||||
confVersion = Convert.ToDouble(sqlRd.Item("confVersion"), CultureInfo.InvariantCulture)
|
||||
Const maxSupportedSchemaVersion As Double = 2.5
|
||||
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)
|
||||
Throw New Exception(String.Format("Incompatible database schema (schema version {0}).", confVersion))
|
||||
End If
|
||||
|
||||
Dim rootNode As TreeNode
|
||||
rootNode = New TreeNode(sqlRd.Item("Name"))
|
||||
@@ -235,6 +232,8 @@ Namespace Config
|
||||
|
||||
sqlRd.Close()
|
||||
|
||||
Windows.treeForm.tvConnections.BeginUpdate()
|
||||
|
||||
' SECTION 3. Populate the TreeView with the DOM nodes.
|
||||
AddNodesFromSQL(rootNode)
|
||||
'AddNodeFromXml(xDom.DocumentElement, Me._RootTreeNode)
|
||||
@@ -248,6 +247,8 @@ Namespace Config
|
||||
End If
|
||||
Next
|
||||
|
||||
Windows.treeForm.tvConnections.EndUpdate()
|
||||
|
||||
'open connections from last mremote session
|
||||
If My.Settings.OpenConsFromLastSession = True And My.Settings.NoReconnect = False Then
|
||||
For Each conI As Connection.Info In Me._ConnectionList
|
||||
@@ -265,10 +266,12 @@ Namespace Config
|
||||
|
||||
App.Runtime.IsConnectionsFileLoaded = True
|
||||
'App.Runtime.Windows.treeForm.InitialRefresh()
|
||||
|
||||
sqlCon.Close()
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strLoadFromSqlFailed & vbNewLine & ex.Message, True)
|
||||
Throw
|
||||
Finally
|
||||
If sqlCon IsNot Nothing Then
|
||||
sqlCon.Close()
|
||||
End If
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
@@ -564,6 +567,13 @@ Namespace Config
|
||||
conI.Inherit.UseCredSsp = .Item("InheritUseCredSsp")
|
||||
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
|
||||
conI.PleaseConnect = .Item("Connected")
|
||||
End If
|
||||
@@ -626,7 +636,7 @@ Namespace Config
|
||||
Return ""
|
||||
End Function
|
||||
|
||||
Private Sub LoadFromXML(Optional ByVal cons As String = "")
|
||||
Private Sub LoadFromXML(ByVal cons As String, ByVal import As Boolean)
|
||||
Try
|
||||
App.Runtime.IsConnectionsFileLoaded = False
|
||||
|
||||
@@ -644,6 +654,12 @@ Namespace Config
|
||||
MessageCollector.AddMessage(Messages.MessageClass.WarningMsg, My.Language.strOldConffile)
|
||||
End If
|
||||
|
||||
Const maxSupportedConfVersion As Double = 2.5
|
||||
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)
|
||||
Throw New Exception(String.Format("Incompatible connection file format (file format version {0}).", confVersion))
|
||||
End If
|
||||
|
||||
' SECTION 2. Initialize the treeview control.
|
||||
Dim rootNode As TreeNode
|
||||
|
||||
@@ -672,29 +688,29 @@ Namespace Config
|
||||
End If
|
||||
End If
|
||||
|
||||
Dim imp As Boolean = False
|
||||
|
||||
If Me.confVersion > 0.9 Then '1.0
|
||||
Dim isExportFile As Boolean = False
|
||||
If confVersion >= 1.0 Then
|
||||
If xDom.DocumentElement.Attributes("Export").Value = True Then
|
||||
imp = True
|
||||
isExportFile = True
|
||||
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)
|
||||
|
||||
Exit Sub
|
||||
Return
|
||||
End If
|
||||
|
||||
If imp = False Then
|
||||
Me._RootTreeNode.Text = rootNode.Text
|
||||
Me._RootTreeNode.Tag = rootNode.Tag
|
||||
Me._RootTreeNode.ImageIndex = Images.Enums.TreeImage.Root
|
||||
Me._RootTreeNode.SelectedImageIndex = Images.Enums.TreeImage.Root
|
||||
If Not isExportFile Then
|
||||
_RootTreeNode.Text = rootNode.Text
|
||||
_RootTreeNode.Tag = rootNode.Tag
|
||||
_RootTreeNode.ImageIndex = Images.Enums.TreeImage.Root
|
||||
_RootTreeNode.SelectedImageIndex = Images.Enums.TreeImage.Root
|
||||
End If
|
||||
|
||||
Windows.treeForm.tvConnections.BeginUpdate()
|
||||
|
||||
' SECTION 3. Populate the TreeView with the DOM nodes.
|
||||
AddNodeFromXML(xDom.DocumentElement, Me._RootTreeNode)
|
||||
AddNodeFromXml(xDom.DocumentElement, _RootTreeNode)
|
||||
|
||||
Me._RootTreeNode.Expand()
|
||||
|
||||
@@ -705,6 +721,8 @@ Namespace Config
|
||||
End If
|
||||
Next
|
||||
|
||||
Windows.treeForm.tvConnections.EndUpdate()
|
||||
|
||||
'open connections from last mremote session
|
||||
If My.Settings.OpenConsFromLastSession = True And My.Settings.NoReconnect = False Then
|
||||
For Each conI As Connection.Info In Me._ConnectionList
|
||||
@@ -1037,6 +1055,13 @@ Namespace Config
|
||||
conI.UseCredSsp = .Attributes("UseCredSsp").Value
|
||||
conI.Inherit.UseCredSsp = .Attributes("InheritUseCredSsp").Value
|
||||
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
|
||||
Catch ex As Exception
|
||||
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 System.Data.SqlClient
|
||||
Imports mRemoteNG.Tools.Misc
|
||||
Imports mRemoteNG.My.Resources
|
||||
|
||||
Namespace Config
|
||||
Namespace Connections
|
||||
@@ -98,7 +97,14 @@ Namespace Config
|
||||
databaseVersion = New Version(2, 4)
|
||||
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
|
||||
End If
|
||||
|
||||
@@ -173,7 +179,7 @@ Namespace Config
|
||||
Dim curConI As Connection.Info
|
||||
_sqlQuery = New SqlCommand("INSERT INTO tblCons (Name, Type, Expanded, Description, Icon, Panel, Username, " & _
|
||||
"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, " & _
|
||||
"RedirectPrinters, RedirectSmartCards, RedirectSound, RedirectKeys, " & _
|
||||
"Connected, PreExtApp, PostExtApp, MacAddress, UserField, ExtApp, VNCCompression, VNCEncoding, VNCAuthMode, " & _
|
||||
@@ -186,8 +192,8 @@ Namespace Config
|
||||
"InheritIcon, InheritPanel, InheritPassword, InheritPort, " & _
|
||||
"InheritProtocol, InheritPuttySession, InheritRedirectDiskDrives, " & _
|
||||
"InheritRedirectKeys, InheritRedirectPorts, InheritRedirectPrinters, " & _
|
||||
"InheritRedirectSmartCards, InheritRedirectSound, InheritResolution, " & _
|
||||
"InheritUseConsoleSession, InheritRenderingEngine, InheritUsername, InheritICAEncryptionStrength, InheritRDPAuthenticationLevel, " & _
|
||||
"InheritRedirectSmartCards, InheritRedirectSound, InheritResolution, InheritAutomaticResize, " & _
|
||||
"InheritUseConsoleSession, InheritRenderingEngine, InheritUsername, InheritICAEncryptionStrength, InheritRDPAuthenticationLevel, InheritLoadBalanceInfo, " & _
|
||||
"InheritPreExtApp, InheritPostExtApp, InheritMacAddress, InheritUserField, InheritExtApp, InheritVNCCompression, InheritVNCEncoding, " & _
|
||||
"InheritVNCAuthMode, InheritVNCProxyType, InheritVNCProxyIP, InheritVNCProxyPort, " & _
|
||||
"InheritVNCProxyUsername, InheritVNCProxyPassword, InheritVNCColors, " & _
|
||||
@@ -260,8 +266,10 @@ Namespace Config
|
||||
_sqlQuery.CommandText &= "'" & .RenderingEngine.ToString & "',"
|
||||
_sqlQuery.CommandText &= "'" & .ICAEncryption.ToString & "',"
|
||||
_sqlQuery.CommandText &= "'" & .RDPAuthenticationLevel.ToString & "',"
|
||||
_sqlQuery.CommandText &= "'" & .LoadBalanceInfo & "',"
|
||||
_sqlQuery.CommandText &= "'" & .Colors.ToString & "',"
|
||||
_sqlQuery.CommandText &= "'" & .Resolution.ToString & "',"
|
||||
_sqlQuery.CommandText &= "'" & .AutomaticResize & "',"
|
||||
_sqlQuery.CommandText &= "'" & .DisplayWallpaper & "',"
|
||||
_sqlQuery.CommandText &= "'" & .DisplayThemes & "',"
|
||||
_sqlQuery.CommandText &= "'" & .EnableFontSmoothing & "',"
|
||||
@@ -345,11 +353,13 @@ Namespace Config
|
||||
_sqlQuery.CommandText &= "'" & .RedirectSmartCards & "',"
|
||||
_sqlQuery.CommandText &= "'" & .RedirectSound & "',"
|
||||
_sqlQuery.CommandText &= "'" & .Resolution & "',"
|
||||
_sqlQuery.CommandText &= "'" & .AutomaticResize & "',"
|
||||
_sqlQuery.CommandText &= "'" & .UseConsoleSession & "',"
|
||||
_sqlQuery.CommandText &= "'" & .RenderingEngine & "',"
|
||||
_sqlQuery.CommandText &= "'" & .Username & "',"
|
||||
_sqlQuery.CommandText &= "'" & .ICAEncryption & "',"
|
||||
_sqlQuery.CommandText &= "'" & .RDPAuthenticationLevel & "',"
|
||||
_sqlQuery.CommandText &= "'" & .LoadBalanceInfo & "',"
|
||||
_sqlQuery.CommandText &= "'" & .PreExtApp & "',"
|
||||
_sqlQuery.CommandText &= "'" & .PostExtApp & "',"
|
||||
_sqlQuery.CommandText &= "'" & .MacAddress & "',"
|
||||
@@ -398,11 +408,15 @@ Namespace Config
|
||||
_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 & "'," ' .LoadBalanceInfo
|
||||
_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("LoadBalanceInfo", "", curConI.LoadBalanceInfo)
|
||||
|
||||
_xmlTextWriter.WriteAttributeString("Colors", "", curConI.Colors.ToString)
|
||||
|
||||
_xmlTextWriter.WriteAttributeString("Resolution", "", curConI.Resolution.ToString)
|
||||
|
||||
_xmlTextWriter.WriteAttributeString("AutomaticResize", "", curConI.AutomaticResize)
|
||||
|
||||
_xmlTextWriter.WriteAttributeString("DisplayWallpaper", "", curConI.DisplayWallpaper)
|
||||
|
||||
_xmlTextWriter.WriteAttributeString("DisplayThemes", "", curConI.DisplayThemes)
|
||||
@@ -692,12 +710,14 @@ Namespace Config
|
||||
_xmlTextWriter.WriteAttributeString("InheritRedirectSmartCards", "", curConI.Inherit.RedirectSmartCards)
|
||||
_xmlTextWriter.WriteAttributeString("InheritRedirectSound", "", curConI.Inherit.RedirectSound)
|
||||
_xmlTextWriter.WriteAttributeString("InheritResolution", "", curConI.Inherit.Resolution)
|
||||
_xmlTextWriter.WriteAttributeString("InheritAutomaticResize", "", curConI.Inherit.AutomaticResize)
|
||||
_xmlTextWriter.WriteAttributeString("InheritUseConsoleSession", "", curConI.Inherit.UseConsoleSession)
|
||||
_xmlTextWriter.WriteAttributeString("InheritUseCredSsp", "", curConI.Inherit.UseCredSsp)
|
||||
_xmlTextWriter.WriteAttributeString("InheritRenderingEngine", "", curConI.Inherit.RenderingEngine)
|
||||
_xmlTextWriter.WriteAttributeString("InheritUsername", "", curConI.Inherit.Username)
|
||||
_xmlTextWriter.WriteAttributeString("InheritICAEncryptionStrength", "", curConI.Inherit.ICAEncryption)
|
||||
_xmlTextWriter.WriteAttributeString("InheritRDPAuthenticationLevel", "", curConI.Inherit.RDPAuthenticationLevel)
|
||||
_xmlTextWriter.WriteAttributeString("InheritLoadBalanceInfo", "", curConI.Inherit.LoadBalanceInfo)
|
||||
_xmlTextWriter.WriteAttributeString("InheritPreExtApp", "", curConI.Inherit.PreExtApp)
|
||||
_xmlTextWriter.WriteAttributeString("InheritPostExtApp", "", curConI.Inherit.PostExtApp)
|
||||
_xmlTextWriter.WriteAttributeString("InheritMacAddress", "", curConI.Inherit.MacAddress)
|
||||
@@ -742,12 +762,14 @@ Namespace Config
|
||||
_xmlTextWriter.WriteAttributeString("InheritRedirectSmartCards", "", False)
|
||||
_xmlTextWriter.WriteAttributeString("InheritRedirectSound", "", False)
|
||||
_xmlTextWriter.WriteAttributeString("InheritResolution", "", False)
|
||||
_xmlTextWriter.WriteAttributeString("InheritAutomaticResize", "", False)
|
||||
_xmlTextWriter.WriteAttributeString("InheritUseConsoleSession", "", False)
|
||||
_xmlTextWriter.WriteAttributeString("InheritUseCredSsp", "", False)
|
||||
_xmlTextWriter.WriteAttributeString("InheritRenderingEngine", "", False)
|
||||
_xmlTextWriter.WriteAttributeString("InheritUsername", "", False)
|
||||
_xmlTextWriter.WriteAttributeString("InheritICAEncryptionStrength", "", False)
|
||||
_xmlTextWriter.WriteAttributeString("InheritRDPAuthenticationLevel", "", False)
|
||||
_xmlTextWriter.WriteAttributeString("InheritLoadBalanceInfo", "", False)
|
||||
_xmlTextWriter.WriteAttributeString("InheritPreExtApp", "", False)
|
||||
_xmlTextWriter.WriteAttributeString("InheritPostExtApp", "", False)
|
||||
_xmlTextWriter.WriteAttributeString("InheritMacAddress", "", False)
|
||||
@@ -809,10 +831,10 @@ Namespace Config
|
||||
csvLn += "Domain;"
|
||||
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
|
||||
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
|
||||
|
||||
csvWr.WriteLine(csvLn)
|
||||
@@ -863,10 +885,10 @@ Namespace Config
|
||||
csvLn += con.Domain & ";"
|
||||
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
|
||||
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
|
||||
|
||||
csvWr.WriteLine(csvLn)
|
||||
@@ -1040,7 +1062,7 @@ Namespace Config
|
||||
|
||||
'Smart Size
|
||||
_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()
|
||||
|
||||
'SeparateResolutionX
|
||||
@@ -1053,26 +1075,18 @@ Namespace Config
|
||||
_xmlTextWriter.WriteValue("768")
|
||||
_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
|
||||
_xmlTextWriter.WriteStartElement("TabResolutionX")
|
||||
If con.Resolution <> Connection.Protocol.RDP.RDPResolutions.FitToWindow And _
|
||||
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.WriteValue(resolution.Width)
|
||||
_xmlTextWriter.WriteEndElement()
|
||||
|
||||
'TabResolutionY
|
||||
_xmlTextWriter.WriteStartElement("TabResolutionY")
|
||||
If con.Resolution <> Connection.Protocol.RDP.RDPResolutions.FitToWindow And _
|
||||
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.WriteValue(resolution.Height)
|
||||
_xmlTextWriter.WriteEndElement()
|
||||
|
||||
'RDPColorDepth
|
||||
|
||||
@@ -44,6 +44,8 @@ Namespace Config
|
||||
log.InfoFormat("Override Culture: {0}/{1}", Threading.Thread.CurrentThread.CurrentUICulture.Name, Threading.Thread.CurrentThread.CurrentUICulture.NativeName)
|
||||
End If
|
||||
|
||||
Themes.ThemeManager.LoadTheme(My.Settings.ThemeName)
|
||||
|
||||
.WindowState = FormWindowState.Normal
|
||||
If My.Settings.MainFormState = FormWindowState.Normal Then
|
||||
If Not My.Settings.MainFormLocation.IsEmpty Then .Location = My.Settings.MainFormLocation
|
||||
@@ -78,13 +80,14 @@ Namespace Config
|
||||
.Location = newBounds.Location
|
||||
|
||||
If My.Settings.MainFormKiosk = True Then
|
||||
Tools.Misc.Fullscreen.EnterFullscreen()
|
||||
.Fullscreen.Value = True
|
||||
.mMenViewFullscreen.Checked = True
|
||||
End If
|
||||
|
||||
If My.Settings.UseCustomPuttyPath Then
|
||||
Connection.Protocol.PuttyBase.PuttyPath = My.Settings.CustomPuttyPath
|
||||
Else
|
||||
Connection.Protocol.PuttyBase.PuttyPath = My.Application.Info.DirectoryPath & "\PuTTYNG.exe"
|
||||
Connection.Protocol.PuttyBase.PuttyPath = App.Info.General.PuttyPath
|
||||
End If
|
||||
|
||||
If My.Settings.ShowSystemTrayIcon Then
|
||||
@@ -112,8 +115,7 @@ Namespace Config
|
||||
End If
|
||||
End With
|
||||
Catch ex As Exception
|
||||
App.Runtime.log.Error("Loading settings failed" & vbNewLine & ex.Message)
|
||||
'mC.AddMessage(Messages.MessageClass.ErrorMsg, "Loading settings failed" & vbNewLine & ex.Message, True)
|
||||
Log.Error("Loading settings failed" & vbNewLine & ex.Message)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
@@ -194,8 +196,7 @@ Namespace Config
|
||||
End If
|
||||
End With
|
||||
Catch ex As Exception
|
||||
App.Runtime.log.Error("LoadPanelsFromXML failed" & vbNewLine & ex.Message)
|
||||
'mC.AddMessage(Messages.MessageClass.ErrorMsg, "LoadPanelsFromXML failed" & vbNewLine & ex.Message, True)
|
||||
Log.Error("LoadPanelsFromXML failed" & vbNewLine & ex.Message)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
@@ -266,8 +267,7 @@ Namespace Config
|
||||
Return Windows.screenshotPanel
|
||||
End If
|
||||
Catch ex As Exception
|
||||
App.Runtime.log.Error("GetContentFromPersistString failed" & vbNewLine & ex.Message)
|
||||
'mC.AddMessage(Messages.MessageClass.ErrorMsg, "GetContentFromPersistString failed" & vbNewLine & ex.Message, True)
|
||||
Log.Error("GetContentFromPersistString failed" & vbNewLine & ex.Message)
|
||||
End Try
|
||||
|
||||
Return Nothing
|
||||
|
||||
@@ -25,7 +25,7 @@ Namespace Config
|
||||
|
||||
My.Settings.MainFormState = .WindowState
|
||||
|
||||
My.Settings.MainFormKiosk = Tools.Misc.Fullscreen.FullscreenActive
|
||||
My.Settings.MainFormKiosk = .Fullscreen.Value
|
||||
|
||||
My.Settings.FirstStart = False
|
||||
My.Settings.ResetPanels = False
|
||||
|
||||
9
mRemoteV1/Config/ConfirmClose.vb
Normal file
9
mRemoteV1/Config/ConfirmClose.vb
Normal file
@@ -0,0 +1,9 @@
|
||||
Namespace Config
|
||||
Public Enum ConfirmClose
|
||||
Unspecified = 0
|
||||
Never = 1
|
||||
[Exit] = 2
|
||||
Multiple = 3
|
||||
All = 4
|
||||
End Enum
|
||||
End Namespace
|
||||
240
mRemoteV1/Config/PuttySessions.vb
Normal file
240
mRemoteV1/Config/PuttySessions.vb
Normal file
@@ -0,0 +1,240 @@
|
||||
Imports System.ComponentModel
|
||||
Imports System.Management
|
||||
Imports mRemoteNG.Messages
|
||||
Imports Microsoft.Win32
|
||||
Imports mRemoteNG.Connection.Protocol
|
||||
Imports mRemoteNG.My
|
||||
Imports mRemoteNG.App.Runtime
|
||||
Imports System.Security.Principal
|
||||
|
||||
Namespace Config
|
||||
Public Class PuttySessions
|
||||
Private Const PuttySessionsKey As String = "Software\SimonTatham\PuTTY\Sessions"
|
||||
Private Shared _rootTreeNode As TreeNode
|
||||
Private Shared _eventWatcher As ManagementEventWatcher
|
||||
|
||||
Private Delegate Sub AddSessionsToTreeDelegate()
|
||||
Public Shared Sub AddSessionsToTree()
|
||||
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()
|
||||
If String.IsNullOrEmpty(My.Settings.PuttySavedSessionsName) Then
|
||||
puttyRootInfo.Name = Language.strPuttySavedSessionsRootName
|
||||
Else
|
||||
puttyRootInfo.Name = My.Settings.PuttySavedSessionsName
|
||||
End If
|
||||
If String.IsNullOrEmpty(My.Settings.PuttySavedSessionsPanel) Then
|
||||
puttyRootInfo.Panel = Language.strGeneral
|
||||
Else
|
||||
puttyRootInfo.Panel = My.Settings.PuttySavedSessionsPanel
|
||||
End If
|
||||
|
||||
Dim inUpdate As Boolean = False
|
||||
|
||||
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
|
||||
|
||||
puttyRootInfo.TreeNode = _rootTreeNode
|
||||
|
||||
Dim newTreeNodes As New List(Of TreeNode)
|
||||
For Each sessionInfo As Connection.PuttySession.Info In savedSessions
|
||||
Dim treeNode As TreeNode
|
||||
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.TreeNode = treeNode
|
||||
sessionInfo.Inherit.TurnOffInheritanceCompletely()
|
||||
|
||||
treeNode.Tag = sessionInfo
|
||||
|
||||
If isNewNode Then newTreeNodes.Add(treeNode)
|
||||
Next
|
||||
|
||||
For Each treeNode As TreeNode In _rootTreeNode.Nodes
|
||||
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
|
||||
|
||||
Protected Shared Function GetSessionNames(Optional ByVal raw As Boolean = False) As String()
|
||||
Dim sessionsKey As RegistryKey = Registry.CurrentUser.OpenSubKey(PuttySessionsKey)
|
||||
If sessionsKey Is Nothing Then Return New String() {}
|
||||
|
||||
Dim sessionNames As New List(Of String)
|
||||
For Each sessionName As String In sessionsKey.GetSubKeyNames()
|
||||
If raw Then
|
||||
sessionNames.Add(sessionName)
|
||||
Else
|
||||
sessionNames.Add(Web.HttpUtility.UrlDecode(sessionName.Replace("+", "%2B")))
|
||||
End If
|
||||
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()
|
||||
End Function
|
||||
|
||||
Protected Shared Function LoadSessions() As Connection.PuttySession.Info()
|
||||
Dim sessionList As New List(Of Connection.PuttySession.Info)
|
||||
Dim sessionInfo As Connection.Info
|
||||
For Each sessionName As String In GetSessionNames(True)
|
||||
sessionInfo = SessionToConnectionInfo(sessionName)
|
||||
If sessionInfo Is Nothing OrElse String.IsNullOrEmpty(sessionInfo.Hostname) Then Continue For
|
||||
sessionList.Add(sessionInfo)
|
||||
Next
|
||||
Return sessionList.ToArray()
|
||||
End Function
|
||||
|
||||
Protected Shared Function SessionToConnectionInfo(ByVal sessionName As String) As Connection.PuttySession.Info
|
||||
Dim sessionsKey As RegistryKey = Registry.CurrentUser.OpenSubKey(PuttySessionsKey)
|
||||
If sessionsKey Is Nothing Then Return Nothing
|
||||
|
||||
Dim sessionKey As RegistryKey = sessionsKey.OpenSubKey(sessionName)
|
||||
If sessionKey Is Nothing Then Return Nothing
|
||||
|
||||
sessionName = Web.HttpUtility.UrlDecode(sessionName.Replace("+", "%2B"))
|
||||
|
||||
Dim sessionInfo As New Connection.PuttySession.Info
|
||||
With sessionInfo
|
||||
.PuttySession = sessionName
|
||||
.Name = sessionName
|
||||
.Hostname = sessionKey.GetValue("HostName")
|
||||
.Username = sessionKey.GetValue("UserName")
|
||||
Dim protocol As String = sessionKey.GetValue("Protocol")
|
||||
If protocol Is Nothing Then protocol = "ssh"
|
||||
Select Case protocol.ToLowerInvariant()
|
||||
Case "raw"
|
||||
.Protocol = Protocols.RAW
|
||||
Case "rlogin"
|
||||
.Protocol = Protocols.Rlogin
|
||||
Case "serial"
|
||||
Return Nothing
|
||||
Case "ssh"
|
||||
Dim sshVersionObject As Object = sessionKey.GetValue("SshProt")
|
||||
If sshVersionObject IsNot Nothing Then
|
||||
Dim sshVersion As Integer = CType(sshVersionObject, Integer)
|
||||
If sshVersion >= 2 Then
|
||||
.Protocol = Protocols.SSH2
|
||||
Else
|
||||
.Protocol = Protocols.SSH1
|
||||
End If
|
||||
Else
|
||||
.Protocol = Protocols.SSH2
|
||||
End If
|
||||
Case "telnet"
|
||||
.Protocol = Protocols.Telnet
|
||||
Case Else
|
||||
Return Nothing
|
||||
End Select
|
||||
.Port = sessionKey.GetValue("PortNumber")
|
||||
End With
|
||||
|
||||
Return sessionInfo
|
||||
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
|
||||
Inherits StringConverter
|
||||
|
||||
Public Shared ReadOnly Property Names() As String()
|
||||
Get
|
||||
Return GetSessionNames()
|
||||
End Get
|
||||
End Property
|
||||
|
||||
Public Overloads Overrides Function GetStandardValues(ByVal context As System.ComponentModel.ITypeDescriptorContext) As System.ComponentModel.TypeConverter.StandardValuesCollection
|
||||
Return New StandardValuesCollection(Names)
|
||||
End Function
|
||||
|
||||
Public Overloads Overrides Function GetStandardValuesExclusive(ByVal context As System.ComponentModel.ITypeDescriptorContext) As Boolean
|
||||
Return True
|
||||
End Function
|
||||
|
||||
Public Overloads Overrides Function GetStandardValuesSupported(ByVal context As ITypeDescriptorContext) As Boolean
|
||||
Return True
|
||||
End Function
|
||||
End Class
|
||||
End Class
|
||||
End Namespace
|
||||
@@ -13,7 +13,7 @@ Namespace Connection
|
||||
Browsable(True), _
|
||||
LocalizedDisplayName("strPropertyNameName"), _
|
||||
LocalizedDescription("strPropertyDescriptionName")> _
|
||||
Public Property Name() As String
|
||||
Public Overridable Property Name() As String
|
||||
Get
|
||||
Return Me._Name
|
||||
End Get
|
||||
@@ -27,7 +27,7 @@ Namespace Connection
|
||||
Browsable(True), _
|
||||
LocalizedDisplayName("strPropertyNameDescription"), _
|
||||
LocalizedDescription("strPropertyDescriptionDescription")> _
|
||||
Public Property Description() As String
|
||||
Public Overridable Property Description() As String
|
||||
Get
|
||||
If Me._Inherit.Description And Me._Parent IsNot Nothing Then
|
||||
Dim parCon As Connection.Info = TryCast(Me._Parent, Container.Info).ConnectionInfo
|
||||
@@ -54,7 +54,7 @@ Namespace Connection
|
||||
Browsable(True), _
|
||||
LocalizedDisplayName("strPropertyNameIcon"), _
|
||||
LocalizedDescription("strPropertyDescriptionIcon")> _
|
||||
Public Property Icon() As String
|
||||
Public Overridable Property Icon() As String
|
||||
Get
|
||||
If Me._Inherit.Icon And Me._Parent IsNot Nothing Then
|
||||
Dim parCon As Connection.Info = TryCast(Me._Parent, Container.Info).ConnectionInfo
|
||||
@@ -80,7 +80,7 @@ Namespace Connection
|
||||
Browsable(True), _
|
||||
LocalizedDisplayName("strPropertyNamePanel"), _
|
||||
LocalizedDescription("strPropertyDescriptionPanel")> _
|
||||
Public Property Panel() As String
|
||||
Public Overridable Property Panel() As String
|
||||
Get
|
||||
If Me._Inherit.Panel And Me._Parent IsNot Nothing Then
|
||||
Dim parCon As Connection.Info = TryCast(Me._Parent, Container.Info).ConnectionInfo
|
||||
@@ -102,17 +102,18 @@ Namespace Connection
|
||||
End Property
|
||||
#End Region
|
||||
#Region "2 Connection"
|
||||
Private _Hostname As String = ""
|
||||
Private _hostname As String = ""
|
||||
<LocalizedCategory("strCategoryConnection", 2), _
|
||||
Browsable(True), _
|
||||
LocalizedDisplayName("strPropertyNameAddress"), _
|
||||
LocalizedDescription("strPropertyDescriptionAddress")> _
|
||||
Public Property Hostname() As String
|
||||
Public Overridable Property Hostname() As String
|
||||
Get
|
||||
Return Me._Hostname.Trim()
|
||||
Return _hostname.Trim()
|
||||
End Get
|
||||
Set(ByVal value As String)
|
||||
Me._Hostname = value.Trim()
|
||||
If String.IsNullOrEmpty(value) Then _hostname = ""
|
||||
_hostname = value.Trim()
|
||||
End Set
|
||||
End Property
|
||||
|
||||
@@ -121,7 +122,7 @@ Namespace Connection
|
||||
Browsable(True), _
|
||||
LocalizedDisplayName("strPropertyNameUsername"), _
|
||||
LocalizedDescription("strPropertyDescriptionUsername")> _
|
||||
Public Property Username() As String
|
||||
Public Overridable Property Username() As String
|
||||
Get
|
||||
If Me._Inherit.Username And Me._Parent IsNot Nothing Then
|
||||
Dim parCon As Connection.Info = TryCast(Me._Parent, Container.Info).ConnectionInfo
|
||||
@@ -148,7 +149,7 @@ Namespace Connection
|
||||
LocalizedDisplayName("strPropertyNamePassword"), _
|
||||
LocalizedDescription("strPropertyDescriptionPassword"), _
|
||||
PasswordPropertyText(True)> _
|
||||
Public Property Password() As String
|
||||
Public Overridable Property Password() As String
|
||||
Get
|
||||
If Me._Inherit.Password And Me._Parent IsNot Nothing Then
|
||||
Dim parCon As Connection.Info = TryCast(Me._Parent, Container.Info).ConnectionInfo
|
||||
@@ -202,7 +203,7 @@ Namespace Connection
|
||||
LocalizedDisplayName("strPropertyNameProtocol"), _
|
||||
LocalizedDescription("strPropertyDescriptionProtocol"), _
|
||||
TypeConverter(GetType(Tools.Misc.EnumTypeConverter))> _
|
||||
Public Property Protocol() As Connection.Protocol.Protocols
|
||||
Public Overridable Property Protocol() As Connection.Protocol.Protocols
|
||||
Get
|
||||
If Me._Inherit.Protocol And Me._Parent IsNot Nothing Then
|
||||
Dim parCon As Connection.Info = TryCast(Me._Parent, Container.Info).ConnectionInfo
|
||||
@@ -255,7 +256,7 @@ Namespace Connection
|
||||
Browsable(True), _
|
||||
LocalizedDisplayName("strPropertyNamePort"), _
|
||||
LocalizedDescription("strPropertyDescriptionPort")> _
|
||||
Public Property Port() As Integer
|
||||
Public Overridable Property Port() As Integer
|
||||
Get
|
||||
If Me._Inherit.Port And Me._Parent IsNot Nothing Then
|
||||
Dim parCon As Connection.Info = TryCast(Me._Parent, Container.Info).ConnectionInfo
|
||||
@@ -281,8 +282,8 @@ Namespace Connection
|
||||
Browsable(True), _
|
||||
LocalizedDisplayName("strPropertyNamePuttySession"), _
|
||||
LocalizedDescription("strPropertyDescriptionPuttySession"), _
|
||||
TypeConverter(GetType(mRemoteNG.Connection.PuttySession))> _
|
||||
Public Property PuttySession() As String
|
||||
TypeConverter(GetType(Config.PuttySessions.SessionList))> _
|
||||
Public Overridable Property PuttySession() As String
|
||||
Get
|
||||
If Me._Inherit.PuttySession And Me._Parent IsNot Nothing Then
|
||||
Dim parCon As Connection.Info = TryCast(Me._Parent, Container.Info).ConnectionInfo
|
||||
@@ -384,6 +385,32 @@ Namespace Connection
|
||||
End Set
|
||||
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)
|
||||
<LocalizedCategory("strCategoryProtocol", 3), _
|
||||
Browsable(True), _
|
||||
@@ -626,6 +653,33 @@ Namespace Connection
|
||||
End Set
|
||||
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)
|
||||
<LocalizedCategory("strCategoryAppearance", 5), _
|
||||
Browsable(True), _
|
||||
@@ -958,7 +1012,7 @@ Namespace Connection
|
||||
LocalizedDisplayName("strPropertyNameExternalToolBefore"), _
|
||||
LocalizedDescription("strPropertyDescriptionExternalToolBefore"), _
|
||||
TypeConverter(GetType(Tools.ExternalAppsTypeConverter))> _
|
||||
Public Property PreExtApp() As String
|
||||
Public Overridable Property PreExtApp() As String
|
||||
Get
|
||||
If Me._Inherit.PreExtApp And Me._Parent IsNot Nothing Then
|
||||
Dim parCon As Connection.Info = TryCast(Me._Parent, Container.Info).ConnectionInfo
|
||||
@@ -985,7 +1039,7 @@ Namespace Connection
|
||||
LocalizedDisplayName("strPropertyNameExternalToolAfter"), _
|
||||
LocalizedDescription("strPropertyDescriptionExternalToolAfter"), _
|
||||
TypeConverter(GetType(Tools.ExternalAppsTypeConverter))> _
|
||||
Public Property PostExtApp() As String
|
||||
Public Overridable Property PostExtApp() As String
|
||||
Get
|
||||
If Me._Inherit.PostExtApp And Me._Parent IsNot Nothing Then
|
||||
Dim parCon As Connection.Info = TryCast(Me._Parent, Container.Info).ConnectionInfo
|
||||
@@ -1011,7 +1065,7 @@ Namespace Connection
|
||||
Browsable(True), _
|
||||
LocalizedDisplayName("strPropertyNameMACAddress"), _
|
||||
LocalizedDescription("strPropertyDescriptionMACAddress")> _
|
||||
Public Property MacAddress() As String
|
||||
Public Overridable Property MacAddress() As String
|
||||
Get
|
||||
If Me._Inherit.MacAddress And Me._Parent IsNot Nothing Then
|
||||
Dim parCon As Connection.Info = TryCast(Me._Parent, Container.Info).ConnectionInfo
|
||||
@@ -1037,7 +1091,7 @@ Namespace Connection
|
||||
Browsable(True), _
|
||||
LocalizedDisplayName("strPropertyNameUser1"), _
|
||||
LocalizedDescription("strPropertyDescriptionUser1")> _
|
||||
Public Property UserField() As String
|
||||
Public Overridable Property UserField() As String
|
||||
Get
|
||||
If Me._Inherit.UserField And Me._Parent IsNot Nothing Then
|
||||
Dim parCon As Connection.Info = TryCast(Me._Parent, Container.Info).ConnectionInfo
|
||||
@@ -1848,6 +1902,21 @@ Namespace Connection
|
||||
End Set
|
||||
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
|
||||
<LocalizedCategory("strCategoryProtocol", 4), _
|
||||
Browsable(True), _
|
||||
@@ -2000,6 +2069,21 @@ Namespace Connection
|
||||
End Set
|
||||
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
|
||||
<LocalizedCategory("strCategoryAppearance", 6), _
|
||||
Browsable(True), _
|
||||
|
||||
@@ -17,14 +17,24 @@ Namespace Connection
|
||||
End Set
|
||||
End Property
|
||||
|
||||
|
||||
Private _InterfaceControl As Connection.InterfaceControl
|
||||
Public Property InterfaceControl() As Connection.InterfaceControl
|
||||
Private WithEvents _connectionWindow As UI.Window.Connection
|
||||
Public Property ConnectionWindow As UI.Window.Connection
|
||||
Get
|
||||
Return Me._InterfaceControl
|
||||
Return _connectionWindow
|
||||
End Get
|
||||
Set(ByVal value As Connection.InterfaceControl)
|
||||
Me._InterfaceControl = value
|
||||
Set(value As UI.Window.Connection)
|
||||
_connectionWindow = value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Private _interfaceControl As InterfaceControl
|
||||
Public Property InterfaceControl() As InterfaceControl
|
||||
Get
|
||||
Return _interfaceControl
|
||||
End Get
|
||||
Set(ByVal value As InterfaceControl)
|
||||
_interfaceControl = value
|
||||
ConnectionWindow = TryCast(_interfaceControl.GetContainerControl(), UI.Window.Connection)
|
||||
End Set
|
||||
End Property
|
||||
|
||||
@@ -62,17 +72,29 @@ Namespace Connection
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
Public Overridable Sub ResizeBegin(ByVal sender As System.Object, ByVal e As EventArgs) Handles _connectionWindow.ResizeBegin
|
||||
|
||||
End Sub
|
||||
|
||||
Public Overridable Sub Resize(ByVal sender As System.Object, ByVal e As EventArgs) Handles _connectionWindow.Resize
|
||||
|
||||
End Sub
|
||||
|
||||
Public Overridable Sub ResizeEnd(ByVal sender As System.Object, ByVal e As EventArgs) Handles _connectionWindow.ResizeEnd
|
||||
|
||||
End Sub
|
||||
|
||||
Public Overridable Function SetProps() As Boolean
|
||||
Try
|
||||
Me._InterfaceControl.Parent.Tag = Me._InterfaceControl
|
||||
Me._InterfaceControl.Show()
|
||||
Me._interfaceControl.Parent.Tag = Me._interfaceControl
|
||||
Me._interfaceControl.Show()
|
||||
|
||||
If Me._Control IsNot Nothing Then
|
||||
Me._Control.Name = Me._Name
|
||||
Me._Control.Parent = Me._InterfaceControl
|
||||
Me._Control.Location = Me._InterfaceControl.Location
|
||||
Me._Control.Parent = Me._interfaceControl
|
||||
Me._Control.Location = Me._interfaceControl.Location
|
||||
Me._Control.Size = Me.InterfaceControl.Size
|
||||
Me._Control.Anchor = Me._InterfaceControl.Anchor
|
||||
Me._Control.Anchor = Me._interfaceControl.Anchor
|
||||
End If
|
||||
|
||||
Return True
|
||||
@@ -92,10 +114,6 @@ Namespace Connection
|
||||
Me.Close()
|
||||
End Sub
|
||||
|
||||
Public Overridable Sub Resize()
|
||||
|
||||
End Sub
|
||||
|
||||
Public Overridable Sub Close()
|
||||
Dim t As New Thread(AddressOf CloseBG)
|
||||
t.SetApartmentState(Threading.ApartmentState.STA)
|
||||
|
||||
@@ -55,9 +55,9 @@ Namespace Connection
|
||||
Dim objWebBrowser As WebBrowser = TryCast(wBrowser, WebBrowser)
|
||||
Dim objAxWebBrowser As SHDocVw.WebBrowser = DirectCast(objWebBrowser.ActiveXInstance, SHDocVw.WebBrowser)
|
||||
|
||||
objWebBrowser.AllowWebBrowserDrop = False
|
||||
objWebBrowser.ScrollBarsEnabled = True
|
||||
|
||||
AddHandler objWebBrowser.Navigated, AddressOf wBrowser_Navigated
|
||||
AddHandler objWebBrowser.DocumentTitleChanged, AddressOf wBrowser_DocumentTitleChanged
|
||||
AddHandler objAxWebBrowser.NewWindow3, AddressOf wBrowser_NewWindow3
|
||||
End If
|
||||
@@ -118,8 +118,14 @@ Namespace Connection
|
||||
#End Region
|
||||
|
||||
#Region "Events"
|
||||
Private Sub gex_CreateWindow(ByVal sender As Object, ByVal e As Skybound.Gecko.GeckoCreateWindowEventArgs)
|
||||
e.WebBrowser = Me.wBrowser
|
||||
Private Sub wBrowser_Navigated(sender As Object, e As System.Windows.Forms.WebBrowserNavigatedEventArgs)
|
||||
Dim objWebBrowser As WebBrowser = TryCast(wBrowser, WebBrowser)
|
||||
If objWebBrowser Is Nothing Then Return
|
||||
|
||||
' This can only be set once the WebBrowser control is shown, it will throw a COM exception otherwise.
|
||||
objWebBrowser.AllowWebBrowserDrop = False
|
||||
|
||||
RemoveHandler objWebBrowser.Navigated, AddressOf wBrowser_Navigated
|
||||
End Sub
|
||||
|
||||
Private Sub wBrowser_NewWindow3(ByRef ppDisp As Object, ByRef Cancel As Boolean, ByVal dwFlags As Long, ByVal bstrUrlContext As String, ByVal bstrUrl As String)
|
||||
@@ -177,6 +183,7 @@ Namespace Connection
|
||||
End Enum
|
||||
|
||||
Private Enum NWMF
|
||||
' ReSharper disable InconsistentNaming
|
||||
NWMF_UNLOADING = &H1
|
||||
NWMF_USERINITED = &H2
|
||||
NWMF_FIRST = &H4
|
||||
@@ -191,6 +198,7 @@ Namespace Connection
|
||||
NWMF_SUGGESTWINDOW = &H40000
|
||||
NWMF_SUGGESTTAB = &H80000
|
||||
NWMF_INACTIVETAB = &H100000
|
||||
' ReSharper restore InconsistentNaming
|
||||
End Enum
|
||||
#End Region
|
||||
End Class
|
||||
|
||||
@@ -156,7 +156,8 @@ Namespace Connection
|
||||
ICA.SetWindowSize(WFICALib.ICAWindowType.WindowTypeClient, Screen.FromControl(frmMain).Bounds.Width, Screen.FromControl(frmMain).Bounds.Height, 0)
|
||||
ICA.FullScreenWindow()
|
||||
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
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strIcaSetResolutionFailed & vbNewLine & ex.Message, True)
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
Imports mRemoteNG.App.Native
|
||||
Imports System.Threading
|
||||
Imports mRemoteNG.App.Runtime
|
||||
Imports mRemoteNG.Tools
|
||||
|
||||
Namespace Connection
|
||||
Namespace Protocol
|
||||
@@ -86,8 +87,9 @@ Namespace Connection
|
||||
Return Nothing
|
||||
End If
|
||||
|
||||
IntAppProcessStartInfo.UseShellExecute = False
|
||||
IntAppProcessStartInfo.FileName = _IntAppPath
|
||||
IntAppProcessStartInfo.Arguments = Arguments
|
||||
IntAppProcessStartInfo.Arguments = CommandLineArguments.EscapeBackslashes(Arguments)
|
||||
|
||||
IntAppProcess = Process.Start(IntAppProcessStartInfo)
|
||||
IntAppProcess.EnableRaisingEvents = True
|
||||
@@ -120,7 +122,7 @@ Namespace Connection
|
||||
SetWindowLong(Me.IntAppHandle, 0, WS_VISIBLE)
|
||||
ShowWindow(Me.IntAppHandle, SW_SHOWMAXIMIZED)
|
||||
|
||||
Resize()
|
||||
Resize(Me, New EventArgs)
|
||||
|
||||
MyBase.Connect()
|
||||
Return True
|
||||
@@ -139,8 +141,9 @@ Namespace Connection
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
Public Overrides Sub Resize()
|
||||
Public Overrides Sub Resize(ByVal sender As Object, ByVal e As EventArgs)
|
||||
Try
|
||||
If InterfaceControl.Size = Size.Empty Then Return
|
||||
MoveWindow(IntAppHandle, -SystemInformation.FrameBorderSize.Width, -(SystemInformation.CaptionHeight + SystemInformation.FrameBorderSize.Height), Me.InterfaceControl.Width + (SystemInformation.FrameBorderSize.Width * 2), Me.InterfaceControl.Height + SystemInformation.CaptionHeight + (SystemInformation.FrameBorderSize.Height * 2), True)
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strIntAppResizeFailed & vbNewLine & ex.Message, True)
|
||||
|
||||
@@ -6,6 +6,8 @@ Imports System.Threading
|
||||
Imports Microsoft.Win32
|
||||
Imports System.Drawing
|
||||
Imports mRemoteNG.App.Runtime
|
||||
Imports System.Text.RegularExpressions
|
||||
Imports mRemoteNG.Tools
|
||||
|
||||
Namespace Connection
|
||||
Namespace Protocol
|
||||
@@ -71,18 +73,6 @@ Namespace Connection
|
||||
End Set
|
||||
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
|
||||
Get
|
||||
If GetForegroundWindow() = PuttyHandle Then
|
||||
@@ -111,45 +101,57 @@ Namespace Connection
|
||||
|
||||
PuttyProcess = New Process
|
||||
With PuttyProcess.StartInfo
|
||||
.UseShellExecute = False
|
||||
.FileName = _PuttyPath
|
||||
|
||||
Select Case _PuttyProtocol
|
||||
Case Putty_Protocol.raw
|
||||
.Arguments = "-load " & """" & PuttyEscapeArgument(InterfaceControl.Info.PuttySession) & """" & " -" & _PuttyProtocol.ToString & " -P " & InterfaceControl.Info.Port & " """ & InterfaceControl.Info.Hostname & """"
|
||||
Case Putty_Protocol.rlogin
|
||||
.Arguments = "-load " & """" & PuttyEscapeArgument(InterfaceControl.Info.PuttySession) & """" & " -" & _PuttyProtocol.ToString & " -P " & InterfaceControl.Info.Port & " """ & InterfaceControl.Info.Hostname & """"
|
||||
Case Putty_Protocol.ssh
|
||||
Dim userArgument As String = ""
|
||||
Dim passwordArgument As String = ""
|
||||
Dim arguments As New CommandLineArguments
|
||||
arguments.EscapeForShell = False
|
||||
|
||||
If My.Settings.EmptyCredentials = "windows" Then
|
||||
userArgument = " -l """ & Environment.UserName & """"
|
||||
ElseIf My.Settings.EmptyCredentials = "custom" Then
|
||||
userArgument = " -l """ & My.Settings.DefaultUsername & """"
|
||||
passwordArgument = " -pw """ & PuttyEscapeArgument(Security.Crypt.Decrypt(My.Settings.DefaultPassword, App.Info.General.EncryptionKey)) & """"
|
||||
arguments.Add("-load", InterfaceControl.Info.PuttySession)
|
||||
|
||||
If Not TypeOf InterfaceControl.Info Is PuttySession.Info Then
|
||||
arguments.Add("-" & _PuttyProtocol.ToString)
|
||||
|
||||
If _PuttyProtocol = Putty_Protocol.ssh Then
|
||||
Dim username As String = ""
|
||||
Dim password As String = ""
|
||||
|
||||
If Not String.IsNullOrEmpty(InterfaceControl.Info.Username) Then
|
||||
username = InterfaceControl.Info.Username
|
||||
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 InterfaceControl.Info.Username <> "" Then
|
||||
userArgument = " -l """ & InterfaceControl.Info.Username & """"
|
||||
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
|
||||
|
||||
If InterfaceControl.Info.Password <> "" Then
|
||||
passwordArgument = " -pw """ & PuttyEscapeArgument(InterfaceControl.Info.Password) & """"
|
||||
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
|
||||
|
||||
.Arguments = "-load " & """" & PuttyEscapeArgument(InterfaceControl.Info.PuttySession) & """" & " -" & _PuttyProtocol.ToString & " -" & _PuttySSHVersion & userArgument & passwordArgument & " -P " & InterfaceControl.Info.Port & " """ & InterfaceControl.Info.Hostname & """"
|
||||
Case Putty_Protocol.telnet
|
||||
.Arguments = "-load " & """" & PuttyEscapeArgument(InterfaceControl.Info.PuttySession) & """" & " -" & _PuttyProtocol.ToString & " -P " & InterfaceControl.Info.Port & " """ & InterfaceControl.Info.Hostname & """"
|
||||
Case Putty_Protocol.serial
|
||||
.Arguments = "-load " & """" & PuttyEscapeArgument(InterfaceControl.Info.PuttySession) & """" & " -" & _PuttyProtocol.ToString & " -P " & InterfaceControl.Info.Port & " """ & InterfaceControl.Info.Hostname & """"
|
||||
End Select
|
||||
|
||||
If _isPuttyNg Then
|
||||
.Arguments = .Arguments & " -hwndparent " & InterfaceControl.Handle.ToString()
|
||||
arguments.Add("-P", InterfaceControl.Info.Port.ToString)
|
||||
arguments.Add(InterfaceControl.Info.Hostname)
|
||||
End If
|
||||
|
||||
'REMOVE IN RELEASE!
|
||||
'MessageCollector.AddMessage(MessageClass.InformationMsg, "PuTTY Arguments: " & .Arguments, True)
|
||||
If _isPuttyNg Then
|
||||
arguments.Add("-hwndparent", InterfaceControl.Handle.ToString())
|
||||
End If
|
||||
|
||||
.Arguments = arguments.ToString
|
||||
End With
|
||||
|
||||
PuttyProcess.EnableRaisingEvents = True
|
||||
@@ -179,7 +181,7 @@ Namespace Connection
|
||||
MessageCollector.AddMessage(MessageClass.InformationMsg, String.Format(My.Language.strPuttyTitle, PuttyProcess.MainWindowTitle), True)
|
||||
MessageCollector.AddMessage(MessageClass.InformationMsg, String.Format(My.Language.strPuttyParentHandle, InterfaceControl.Parent.Handle.ToString), True)
|
||||
|
||||
Resize()
|
||||
Resize(Me, New EventArgs)
|
||||
|
||||
MyBase.Connect()
|
||||
Return True
|
||||
@@ -189,26 +191,18 @@ Namespace Connection
|
||||
End Try
|
||||
End Function
|
||||
|
||||
' Due to the way PuTTY handles command line arguments, backslashes followed by a quotation mark will be removed.
|
||||
' Since all the strings we send to PuTTY are surrounded by quotation marks, we need to escape any trailing
|
||||
' backslashes by adding another. See split_into_argv() in WINDOWS\WINUTILS.C of the PuTTY source for more info.
|
||||
Private Shared Function PuttyEscapeArgument(ByVal argument As String) As String
|
||||
If argument.EndsWith("\") Then argument = argument & "\"
|
||||
Return argument
|
||||
End Function
|
||||
|
||||
Public Overrides Sub Focus()
|
||||
Try
|
||||
If ConnectionWindow.InTabDrag Then Return
|
||||
SetForegroundWindow(PuttyHandle)
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strPuttyFocusFailed & vbNewLine & ex.Message, True)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
Public Overrides Sub Resize()
|
||||
Public Overrides Sub Resize(ByVal sender As Object, ByVal e As EventArgs)
|
||||
Try
|
||||
If frmMain.WindowState = FormWindowState.Minimized Then Return
|
||||
|
||||
If InterfaceControl.Size = Size.Empty Then Return
|
||||
MoveWindow(PuttyHandle, -SystemInformation.FrameBorderSize.Width, -(SystemInformation.CaptionHeight + SystemInformation.FrameBorderSize.Height), InterfaceControl.Width + (SystemInformation.FrameBorderSize.Width * 2), InterfaceControl.Height + SystemInformation.CaptionHeight + (SystemInformation.FrameBorderSize.Height * 2), True)
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strPuttyResizeFailed & vbNewLine & ex.Message, True)
|
||||
@@ -244,27 +238,6 @@ Namespace Connection
|
||||
#End Region
|
||||
|
||||
#Region "Public Shared Methods"
|
||||
Public Shared Function GetSessions() As Array
|
||||
Try
|
||||
Dim regKey As RegistryKey
|
||||
regKey = Registry.CurrentUser.OpenSubKey("Software\SimonTatham\PuTTY\Sessions")
|
||||
|
||||
Dim arrKeys() As String
|
||||
arrKeys = regKey.GetSubKeyNames()
|
||||
Array.Resize(arrKeys, arrKeys.Length + 1)
|
||||
arrKeys(arrKeys.Length - 1) = "Default Settings"
|
||||
|
||||
For i As Integer = 0 To arrKeys.Length - 1
|
||||
arrKeys(i) = System.Web.HttpUtility.UrlDecode(arrKeys(i))
|
||||
Next
|
||||
|
||||
Return arrKeys
|
||||
Catch ex As Exception
|
||||
App.Runtime.MessageCollector.AddMessage(Messages.MessageClass.WarningMsg, My.Language.strPuttyGetSessionsFailed & vbNewLine & ex.Message, True)
|
||||
Return Nothing
|
||||
End Try
|
||||
End Function
|
||||
|
||||
Public Shared Function IsFilePuttyNg(file As String) As Boolean
|
||||
Dim isPuttyNg As Boolean
|
||||
Try
|
||||
@@ -274,21 +247,6 @@ Namespace Connection
|
||||
End Try
|
||||
Return isPuttyNg
|
||||
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()
|
||||
|
||||
mRemoteNG.Connection.PuttySession.PuttySessions = GetSessions()
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strPuttyStartFailed & vbNewLine & ex.Message, True)
|
||||
End Try
|
||||
End Sub
|
||||
#End Region
|
||||
|
||||
#Region "Enums"
|
||||
|
||||
@@ -3,100 +3,123 @@ Imports System.Threading
|
||||
Imports AxMSTSCLib
|
||||
Imports EOLWTSCOM
|
||||
Imports System.ComponentModel
|
||||
Imports mRemoteNG.Messages
|
||||
Imports mRemoteNG.App.Runtime
|
||||
Imports mRemoteNG.Tools.LocalizedAttributes
|
||||
Imports MSTSCLib
|
||||
|
||||
Namespace Connection
|
||||
Namespace Protocol
|
||||
Public Class RDP
|
||||
Inherits Connection.Protocol.Base
|
||||
|
||||
Inherits Base
|
||||
#Region "Properties"
|
||||
Private _SmartSize As Boolean
|
||||
Public Property SmartSize() As Boolean
|
||||
Get
|
||||
Return Me.RDP.AdvancedSettings4.SmartSizing
|
||||
Return _rdpClient.AdvancedSettings2.SmartSizing
|
||||
End Get
|
||||
Set(ByVal value As Boolean)
|
||||
Me.RDP.AdvancedSettings4.SmartSizing = value
|
||||
_rdpClient.AdvancedSettings2.SmartSizing = value
|
||||
ReconnectForResize()
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Private _Fullscreen As Boolean
|
||||
Public Property Fullscreen() As Boolean
|
||||
Get
|
||||
Return Me.RDP.FullScreen
|
||||
Return _rdpClient.FullScreen
|
||||
End Get
|
||||
Set(ByVal value As Boolean)
|
||||
Me.RDP.FullScreen = value
|
||||
_rdpClient.FullScreen = value
|
||||
ReconnectForResize()
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Private _redirectKeys As Boolean = False
|
||||
Public Property RedirectKeys As Boolean
|
||||
Get
|
||||
Return _redirectKeys
|
||||
End Get
|
||||
Set(value As Boolean)
|
||||
_redirectKeys = value
|
||||
Try
|
||||
If Not _redirectKeys Then Return
|
||||
|
||||
Debug.Assert(_rdpClient.SecuredSettingsEnabled)
|
||||
Dim msRdpClientSecuredSettings As MSTSCLib.IMsRdpClientSecuredSettings = _rdpClient.SecuredSettings2
|
||||
msRdpClientSecuredSettings.KeyboardHookMode = 1 ' Apply key combinations at the remote server.
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strRdpSetRedirectKeysFailed & vbNewLine & ex.Message, True)
|
||||
End Try
|
||||
End Set
|
||||
End Property
|
||||
#End Region
|
||||
|
||||
#Region "Private Declarations"
|
||||
Private RDP As AxMsRdpClient6NotSafeForScripting
|
||||
Private Info As Connection.Info
|
||||
Private RDPVersion As Version
|
||||
Private _rdpClient As MsRdpClient5NotSafeForScripting
|
||||
Private _rdpVersion As Version
|
||||
Private _connectionInfo As Info
|
||||
#End Region
|
||||
|
||||
#Region "Public Methods"
|
||||
Public Sub New()
|
||||
Me.Control = New AxMsRdpClient6NotSafeForScripting
|
||||
Control = New AxMsRdpClient5NotSafeForScripting
|
||||
End Sub
|
||||
|
||||
Public Overrides Function SetProps() As Boolean
|
||||
MyBase.SetProps()
|
||||
|
||||
Try
|
||||
RDP = Me.Control
|
||||
Info = Me.InterfaceControl.Info
|
||||
Control.CreateControl()
|
||||
_connectionInfo = InterfaceControl.Info
|
||||
|
||||
Try
|
||||
RDP.CreateControl()
|
||||
|
||||
Do Until Me.RDP.Created
|
||||
Thread.Sleep(10)
|
||||
Do Until Control.Created
|
||||
Thread.Sleep(0)
|
||||
System.Windows.Forms.Application.DoEvents()
|
||||
Loop
|
||||
Catch comEx As System.Runtime.InteropServices.COMException
|
||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strRdpControlCreationFailed & vbNewLine & vbNewLine & comEx.Message)
|
||||
RDP.Dispose()
|
||||
|
||||
_rdpClient = CType(Control, AxMsRdpClient5NotSafeForScripting).GetOcx()
|
||||
Catch ex As Runtime.InteropServices.COMException
|
||||
MessageCollector.AddExceptionMessage(My.Language.strRdpControlCreationFailed, ex)
|
||||
Control.Dispose()
|
||||
Return False
|
||||
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.SetResolution()
|
||||
Me.RDP.FullScreenTitle = Me.Info.Name
|
||||
Me._rdpClient.FullScreenTitle = Me._connectionInfo.Name
|
||||
|
||||
'not user changeable
|
||||
RDP.AdvancedSettings2.GrabFocusOnConnect = True
|
||||
RDP.AdvancedSettings3.EnableAutoReconnect = True
|
||||
RDP.AdvancedSettings3.MaxReconnectAttempts = My.Settings.RdpReconnectionCount
|
||||
RDP.AdvancedSettings2.keepAliveInterval = 60000 'in milliseconds (10.000 = 10 seconds)
|
||||
RDP.AdvancedSettings5.AuthenticationLevel = 0
|
||||
RDP.AdvancedSettings.EncryptionEnabled = 1
|
||||
_rdpClient.AdvancedSettings2.GrabFocusOnConnect = True
|
||||
_rdpClient.AdvancedSettings3.EnableAutoReconnect = True
|
||||
_rdpClient.AdvancedSettings3.MaxReconnectAttempts = My.Settings.RdpReconnectionCount
|
||||
_rdpClient.AdvancedSettings2.keepAliveInterval = 60000 'in milliseconds (10.000 = 10 seconds)
|
||||
_rdpClient.AdvancedSettings5.AuthenticationLevel = 0
|
||||
_rdpClient.AdvancedSettings2.EncryptionEnabled = 1
|
||||
|
||||
RDP.AdvancedSettings2.overallConnectionTimeout = 20
|
||||
_rdpClient.AdvancedSettings2.overallConnectionTimeout = 20
|
||||
|
||||
RDP.AdvancedSettings2.BitmapPeristence = Me.Info.CacheBitmaps
|
||||
RDP.AdvancedSettings7.EnableCredSspSupport = Info.UseCredSsp
|
||||
_rdpClient.AdvancedSettings2.BitmapPeristence = Me._connectionInfo.CacheBitmaps
|
||||
If _rdpVersion >= Versions.RDC61 Then
|
||||
_rdpClient.AdvancedSettings7.EnableCredSspSupport = _connectionInfo.UseCredSsp
|
||||
End If
|
||||
|
||||
Me.SetUseConsoleSession()
|
||||
Me.SetPort()
|
||||
Me.SetRedirectKeys()
|
||||
RedirectKeys = _connectionInfo.RedirectKeys
|
||||
Me.SetRedirection()
|
||||
Me.SetAuthenticationLevel()
|
||||
Me.SetRDGateway()
|
||||
SetLoadBalanceInfo()
|
||||
Me.SetRdGateway()
|
||||
|
||||
RDP.ColorDepth = Int(Me.Info.Colors)
|
||||
_rdpClient.ColorDepth = Int(Me._connectionInfo.Colors)
|
||||
|
||||
Me.SetPerformanceFlags()
|
||||
|
||||
RDP.ConnectingText = My.Language.strConnecting
|
||||
_rdpClient.ConnectingText = My.Language.strConnecting
|
||||
|
||||
Control.Anchor = AnchorStyles.None
|
||||
|
||||
@@ -111,7 +134,7 @@ Namespace Connection
|
||||
Me.SetEventHandlers()
|
||||
|
||||
Try
|
||||
RDP.Connect()
|
||||
_rdpClient.Connect()
|
||||
MyBase.Connect()
|
||||
Return True
|
||||
Catch ex As Exception
|
||||
@@ -123,7 +146,7 @@ Namespace Connection
|
||||
|
||||
Public Overrides Sub Disconnect()
|
||||
Try
|
||||
RDP.Disconnect()
|
||||
_rdpClient.Disconnect()
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strRdpDisconnectFailed & vbNewLine & ex.Message, True)
|
||||
MyBase.Close()
|
||||
@@ -148,121 +171,161 @@ Namespace Connection
|
||||
|
||||
Public Overrides Sub Focus()
|
||||
Try
|
||||
If RDP.ContainsFocus = False Then
|
||||
RDP.Focus()
|
||||
If Control.ContainsFocus = False Then
|
||||
Control.Focus()
|
||||
End If
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strRdpFocusFailed & vbNewLine & ex.Message, True)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
Public Overrides Sub Resize()
|
||||
Control.Location = InterfaceControl.Location
|
||||
Control.Size = InterfaceControl.Size
|
||||
MyBase.Resize()
|
||||
Private _controlBeginningSize As New Size
|
||||
Public Overrides Sub ResizeBegin(ByVal sender As Object, ByVal e As EventArgs)
|
||||
_controlBeginningSize = Control.Size
|
||||
End Sub
|
||||
|
||||
Public Overrides Sub Resize(ByVal sender As Object, ByVal e As EventArgs)
|
||||
If DoResize() And _controlBeginningSize.IsEmpty Then
|
||||
ReconnectForResize()
|
||||
End If
|
||||
MyBase.Resize(sender, e)
|
||||
End Sub
|
||||
|
||||
Public Overrides Sub ResizeEnd(ByVal sender As Object, ByVal e As EventArgs)
|
||||
DoResize()
|
||||
If Not Control.Size = _controlBeginningSize Then
|
||||
ReconnectForResize()
|
||||
End If
|
||||
_controlBeginningSize = Size.Empty
|
||||
End Sub
|
||||
#End Region
|
||||
|
||||
#Region "Private Methods"
|
||||
Private Sub SetRDGateway()
|
||||
Private Function DoResize() As Boolean
|
||||
Control.Location = InterfaceControl.Location
|
||||
If Not Control.Size = InterfaceControl.Size And Not InterfaceControl.Size = Size.Empty Then
|
||||
Control.Size = InterfaceControl.Size
|
||||
Return True
|
||||
Else
|
||||
Return False
|
||||
End If
|
||||
End Function
|
||||
|
||||
Private Sub ReconnectForResize()
|
||||
If _rdpVersion < Versions.RDC80 Then Return
|
||||
|
||||
If Not InterfaceControl.Info.AutomaticResize Then Return
|
||||
|
||||
If Not (InterfaceControl.Info.Resolution = RDPResolutions.FitToWindow Or _
|
||||
InterfaceControl.Info.Resolution = RDPResolutions.Fullscreen) Then Return
|
||||
|
||||
If SmartSize Then Return
|
||||
|
||||
Dim size As Size
|
||||
If Not Fullscreen Then
|
||||
size = Control.Size
|
||||
Else
|
||||
size = Screen.FromControl(Control).Bounds.Size
|
||||
End If
|
||||
|
||||
Dim msRdpClient8 As IMsRdpClient8 = _rdpClient
|
||||
msRdpClient8.Reconnect(size.Width, size.Height)
|
||||
End Sub
|
||||
|
||||
Private Sub SetRdGateway()
|
||||
Try
|
||||
If RDP.TransportSettings.GatewayIsSupported = 1 Then
|
||||
MessageCollector.AddMessage(Messages.MessageClass.InformationMsg, My.Language.strRdpGatewayIsSupported, True)
|
||||
If Info.RDGatewayUsageMethod <> RDGatewayUsageMethod.Never Then
|
||||
RDP.TransportSettings2.GatewayProfileUsageMethod = 1
|
||||
RDP.TransportSettings.GatewayUsageMethod = Info.RDGatewayUsageMethod
|
||||
RDP.TransportSettings.GatewayHostname = Info.RDGatewayHostname
|
||||
If Info.RDGatewayUseConnectionCredentials = RDGatewayUseConnectionCredentials.Yes Then
|
||||
RDP.TransportSettings.GatewayUsername = Info.Username
|
||||
RDP.TransportSettings.GatewayPassword = Info.Password
|
||||
RDP.TransportSettings.GatewayDomain = Info.Domain
|
||||
ElseIf Info.RDGatewayUseConnectionCredentials = RDGatewayUseConnectionCredentials.SmartCard Then
|
||||
RDP.TransportSettings2.GatewayCredsSource = 1 ' TSC_PROXY_CREDS_MODE_SMARTCARD
|
||||
RDP.TransportSettings2.GatewayCredSharing = 0
|
||||
If _rdpClient.TransportSettings.GatewayIsSupported = 0 Then Return
|
||||
MessageCollector.AddMessage(MessageClass.InformationMsg, My.Language.strRdpGatewayIsSupported, True)
|
||||
If Not _connectionInfo.RDGatewayUsageMethod = RDGatewayUsageMethod.Never Then
|
||||
_rdpClient.TransportSettings.GatewayUsageMethod = _connectionInfo.RDGatewayUsageMethod
|
||||
_rdpClient.TransportSettings.GatewayHostname = _connectionInfo.RDGatewayHostname
|
||||
_rdpClient.TransportSettings.GatewayProfileUsageMethod = 1 ' TSC_PROXY_PROFILE_MODE_EXPLICIT
|
||||
If _connectionInfo.RDGatewayUseConnectionCredentials = RDGatewayUseConnectionCredentials.SmartCard Then
|
||||
_rdpClient.TransportSettings.GatewayCredsSource = 1 ' TSC_PROXY_CREDS_MODE_SMARTCARD
|
||||
End If
|
||||
If _rdpVersion >= Versions.RDC61 Then
|
||||
If _connectionInfo.RDGatewayUseConnectionCredentials = RDGatewayUseConnectionCredentials.Yes Then
|
||||
_rdpClient.TransportSettings2.GatewayUsername = _connectionInfo.Username
|
||||
_rdpClient.TransportSettings2.GatewayPassword = _connectionInfo.Password
|
||||
_rdpClient.TransportSettings2.GatewayDomain = _connectionInfo.Domain
|
||||
ElseIf _connectionInfo.RDGatewayUseConnectionCredentials = RDGatewayUseConnectionCredentials.SmartCard Then
|
||||
_rdpClient.TransportSettings2.GatewayCredSharing = 0
|
||||
Else
|
||||
RDP.TransportSettings.GatewayUsername = Info.RDGatewayUsername
|
||||
RDP.TransportSettings.GatewayPassword = Info.RDGatewayPassword
|
||||
RDP.TransportSettings.GatewayDomain = Info.RDGatewayDomain
|
||||
RDP.TransportSettings2.GatewayCredSharing = 0
|
||||
_rdpClient.TransportSettings2.GatewayUsername = _connectionInfo.RDGatewayUsername
|
||||
_rdpClient.TransportSettings2.GatewayPassword = _connectionInfo.RDGatewayPassword
|
||||
_rdpClient.TransportSettings2.GatewayDomain = _connectionInfo.RDGatewayDomain
|
||||
_rdpClient.TransportSettings2.GatewayCredSharing = 0
|
||||
End If
|
||||
End If
|
||||
Else
|
||||
MessageCollector.AddMessage(Messages.MessageClass.InformationMsg, My.Language.strRdpGatewayNotSupported, True)
|
||||
MessageCollector.AddMessage(MessageClass.InformationMsg, My.Language.strRdpGatewayNotSupported, True)
|
||||
End If
|
||||
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 Sub
|
||||
|
||||
Private Sub SetUseConsoleSession()
|
||||
Try
|
||||
If (Me.Force And Connection.Info.Force.UseConsoleSession) = Connection.Info.Force.UseConsoleSession Then
|
||||
If RDPVersion < Versions.RDC61 Then
|
||||
MessageCollector.AddMessage(Messages.MessageClass.InformationMsg, String.Format(My.Language.strRdpSetConsoleSwitch, "6.0"), True)
|
||||
RDP.AdvancedSettings2.ConnectToServerConsole = True
|
||||
Else
|
||||
MessageCollector.AddMessage(Messages.MessageClass.InformationMsg, String.Format(My.Language.strRdpSetConsoleSwitch, "6.1"), True)
|
||||
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
|
||||
Dim value As Boolean
|
||||
|
||||
If (Force And Info.Force.UseConsoleSession) = Info.Force.UseConsoleSession Then
|
||||
value = True
|
||||
ElseIf (Force And Info.Force.DontUseConsoleSession) = Info.Force.DontUseConsoleSession Then
|
||||
value = False
|
||||
Else
|
||||
If RDPVersion < Versions.RDC61 Then
|
||||
MessageCollector.AddMessage(Messages.MessageClass.InformationMsg, String.Format(My.Language.strRdpSetConsoleSwitch, "6.0"), True)
|
||||
RDP.AdvancedSettings2.ConnectToServerConsole = Me.Info.UseConsoleSession
|
||||
Else
|
||||
MessageCollector.AddMessage(Messages.MessageClass.InformationMsg, String.Format(My.Language.strRdpSetConsoleSwitch, "6.1"), True)
|
||||
RDP.AdvancedSettings6.ConnectToAdministerServer = Me.Info.UseConsoleSession
|
||||
End If
|
||||
value = _connectionInfo.UseConsoleSession
|
||||
End If
|
||||
|
||||
If _rdpVersion >= Versions.RDC61 Then
|
||||
MessageCollector.AddMessage(MessageClass.InformationMsg, String.Format(My.Language.strRdpSetConsoleSwitch, "6.1"), True)
|
||||
_rdpClient.AdvancedSettings7.ConnectToAdministerServer = value
|
||||
Else
|
||||
MessageCollector.AddMessage(MessageClass.InformationMsg, String.Format(My.Language.strRdpSetConsoleSwitch, "6.0"), True)
|
||||
_rdpClient.AdvancedSettings2.ConnectToServerConsole = value
|
||||
End If
|
||||
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 Sub
|
||||
|
||||
Private Sub SetCredentials()
|
||||
Try
|
||||
Dim _user As String = Me.Info.Username
|
||||
Dim _pass As String = Me.Info.Password
|
||||
Dim _dom As String = Me.Info.Domain
|
||||
Dim userName As String = _connectionInfo.Username
|
||||
Dim password As String = _connectionInfo.Password
|
||||
Dim domain As String = _connectionInfo.Domain
|
||||
|
||||
If _user = "" Then
|
||||
If userName = "" Then
|
||||
Select Case My.Settings.EmptyCredentials
|
||||
Case "windows"
|
||||
RDP.UserName = Environment.UserName
|
||||
_rdpClient.UserName = Environment.UserName
|
||||
Case "custom"
|
||||
RDP.UserName = My.Settings.DefaultUsername
|
||||
_rdpClient.UserName = My.Settings.DefaultUsername
|
||||
End Select
|
||||
Else
|
||||
RDP.UserName = _user
|
||||
_rdpClient.UserName = userName
|
||||
End If
|
||||
|
||||
If _pass = "" Then
|
||||
If password = "" Then
|
||||
Select Case My.Settings.EmptyCredentials
|
||||
Case "custom"
|
||||
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 Select
|
||||
Else
|
||||
RDP.AdvancedSettings2.ClearTextPassword = _pass
|
||||
_rdpClient.AdvancedSettings2.ClearTextPassword = password
|
||||
End If
|
||||
|
||||
If _dom = "" Then
|
||||
If domain = "" Then
|
||||
Select Case My.Settings.EmptyCredentials
|
||||
Case "windows"
|
||||
RDP.Domain = Environment.UserDomainName
|
||||
_rdpClient.Domain = Environment.UserDomainName
|
||||
Case "custom"
|
||||
RDP.Domain = My.Settings.DefaultDomain
|
||||
_rdpClient.Domain = My.Settings.DefaultDomain
|
||||
End Select
|
||||
Else
|
||||
RDP.Domain = _dom
|
||||
_rdpClient.Domain = domain
|
||||
End If
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strRdpSetCredentialsFailed & vbNewLine & ex.Message, True)
|
||||
@@ -272,28 +335,25 @@ Namespace Connection
|
||||
Private Sub SetResolution()
|
||||
Try
|
||||
If (Me.Force And Connection.Info.Force.Fullscreen) = Connection.Info.Force.Fullscreen Then
|
||||
RDP.FullScreen = True
|
||||
RDP.DesktopWidth = Screen.FromControl(frmMain).Bounds.Width
|
||||
RDP.DesktopHeight = Screen.FromControl(frmMain).Bounds.Height
|
||||
_rdpClient.FullScreen = True
|
||||
_rdpClient.DesktopWidth = Screen.FromControl(frmMain).Bounds.Width
|
||||
_rdpClient.DesktopHeight = Screen.FromControl(frmMain).Bounds.Height
|
||||
|
||||
Exit Sub
|
||||
End If
|
||||
|
||||
Select Case Me.InterfaceControl.Info.Resolution
|
||||
Case RDPResolutions.FitToWindow
|
||||
RDP.DesktopWidth = Me.InterfaceControl.Size.Width
|
||||
RDP.DesktopHeight = Me.InterfaceControl.Size.Height
|
||||
Case RDPResolutions.SmartSize
|
||||
RDP.AdvancedSettings.SmartSizing = True
|
||||
RDP.DesktopWidth = Me.InterfaceControl.Size.Width
|
||||
RDP.DesktopHeight = Me.InterfaceControl.Size.Height
|
||||
Case RDPResolutions.FitToWindow, RDPResolutions.SmartSize
|
||||
_rdpClient.DesktopWidth = InterfaceControl.Size.Width
|
||||
_rdpClient.DesktopHeight = InterfaceControl.Size.Height
|
||||
Case RDPResolutions.Fullscreen
|
||||
RDP.FullScreen = True
|
||||
RDP.DesktopWidth = Screen.FromControl(frmMain).Bounds.Width
|
||||
RDP.DesktopHeight = Screen.FromControl(frmMain).Bounds.Height
|
||||
_rdpClient.FullScreen = True
|
||||
_rdpClient.DesktopWidth = Screen.FromControl(frmMain).Bounds.Width
|
||||
_rdpClient.DesktopHeight = Screen.FromControl(frmMain).Bounds.Height
|
||||
Case Else
|
||||
RDP.DesktopWidth = Resolutions.Items(Int(Me.Info.Resolution)).Width
|
||||
RDP.DesktopHeight = Resolutions.Items(Int(Me.Info.Resolution)).Height
|
||||
Dim resolution As Rectangle = GetResolutionRectangle(_connectionInfo.Resolution)
|
||||
_rdpClient.DesktopWidth = resolution.Width
|
||||
_rdpClient.DesktopHeight = resolution.Height
|
||||
End Select
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strRdpSetResolutionFailed & vbNewLine & ex.Message, True)
|
||||
@@ -302,34 +362,21 @@ Namespace Connection
|
||||
|
||||
Private Sub SetPort()
|
||||
Try
|
||||
If Me.Info.Port <> Connection.Protocol.RDP.Defaults.Port Then
|
||||
RDP.AdvancedSettings2.RDPPort = Me.Info.Port
|
||||
If _connectionInfo.Port <> Defaults.Port Then
|
||||
_rdpClient.AdvancedSettings2.RDPPort = _connectionInfo.Port
|
||||
End If
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strRdpSetPortFailed & vbNewLine & ex.Message, True)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
Private Sub SetRedirectKeys()
|
||||
Try
|
||||
If Me.Info.RedirectKeys Then
|
||||
RDP.AdvancedSettings2.ContainerHandledFullScreen = 1
|
||||
RDP.AdvancedSettings2.DisplayConnectionBar = False
|
||||
RDP.AdvancedSettings2.PinConnectionBar = False
|
||||
RDP.FullScreen = True
|
||||
End If
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strRdpSetRedirectKeysFailed & vbNewLine & ex.Message, True)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
Private Sub SetRedirection()
|
||||
Try
|
||||
RDP.AdvancedSettings2.RedirectDrives = Me.Info.RedirectDiskDrives
|
||||
RDP.AdvancedSettings2.RedirectPorts = Me.Info.RedirectPorts
|
||||
RDP.AdvancedSettings2.RedirectPrinters = Me.Info.RedirectPrinters
|
||||
RDP.AdvancedSettings2.RedirectSmartCards = Me.Info.RedirectSmartCards
|
||||
RDP.SecuredSettings2.AudioRedirectionMode = Int(Me.Info.RedirectSound)
|
||||
_rdpClient.AdvancedSettings2.RedirectDrives = Me._connectionInfo.RedirectDiskDrives
|
||||
_rdpClient.AdvancedSettings2.RedirectPorts = Me._connectionInfo.RedirectPorts
|
||||
_rdpClient.AdvancedSettings2.RedirectPrinters = Me._connectionInfo.RedirectPrinters
|
||||
_rdpClient.AdvancedSettings2.RedirectSmartCards = Me._connectionInfo.RedirectSmartCards
|
||||
_rdpClient.SecuredSettings2.AudioRedirectionMode = Int(Me._connectionInfo.RedirectSound)
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strRdpSetRedirectionFailed & vbNewLine & ex.Message, True)
|
||||
End Try
|
||||
@@ -338,23 +385,23 @@ Namespace Connection
|
||||
Private Sub SetPerformanceFlags()
|
||||
Try
|
||||
Dim pFlags As Integer
|
||||
If Me.Info.DisplayThemes = False Then
|
||||
If Me._connectionInfo.DisplayThemes = False Then
|
||||
pFlags += Int(Connection.Protocol.RDP.RDPPerformanceFlags.DisableThemes)
|
||||
End If
|
||||
|
||||
If Me.Info.DisplayWallpaper = False Then
|
||||
If Me._connectionInfo.DisplayWallpaper = False Then
|
||||
pFlags += Int(Connection.Protocol.RDP.RDPPerformanceFlags.DisableWallpaper)
|
||||
End If
|
||||
|
||||
If Me.Info.EnableFontSmoothing Then
|
||||
If Me._connectionInfo.EnableFontSmoothing Then
|
||||
pFlags += Int(Connection.Protocol.RDP.RDPPerformanceFlags.EnableFontSmoothing)
|
||||
End If
|
||||
|
||||
If Me.Info.EnableDesktopComposition Then
|
||||
If Me._connectionInfo.EnableDesktopComposition Then
|
||||
pFlags += Int(Connection.Protocol.RDP.RDPPerformanceFlags.EnableDesktopComposition)
|
||||
End If
|
||||
|
||||
RDP.AdvancedSettings.PerformanceFlags = pFlags
|
||||
_rdpClient.AdvancedSettings2.PerformanceFlags = pFlags
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strRdpSetPerformanceFlagsFailed & vbNewLine & ex.Message, True)
|
||||
End Try
|
||||
@@ -362,19 +409,28 @@ Namespace Connection
|
||||
|
||||
Private Sub SetAuthenticationLevel()
|
||||
Try
|
||||
RDP.AdvancedSettings5.AuthenticationLevel = Me.Info.RDPAuthenticationLevel
|
||||
_rdpClient.AdvancedSettings5.AuthenticationLevel = Me._connectionInfo.RDPAuthenticationLevel
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strRdpSetAuthenticationLevelFailed & vbNewLine & ex.Message, True)
|
||||
End Try
|
||||
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()
|
||||
Try
|
||||
AddHandler RDP.OnConnecting, AddressOf RDPEvent_OnConnecting
|
||||
AddHandler RDP.OnConnected, AddressOf RDPEvent_OnConnected
|
||||
AddHandler RDP.OnFatalError, AddressOf RDPEvent_OnFatalError
|
||||
AddHandler RDP.OnDisconnected, AddressOf RDPEvent_OnDisconnected
|
||||
AddHandler RDP.OnLeaveFullScreenMode, AddressOf RDPEvent_OnLeaveFullscreenMode
|
||||
AddHandler _rdpClient.OnConnecting, AddressOf RDPEvent_OnConnecting
|
||||
AddHandler _rdpClient.OnConnected, AddressOf RDPEvent_OnConnected
|
||||
AddHandler _rdpClient.OnFatalError, AddressOf RDPEvent_OnFatalError
|
||||
AddHandler _rdpClient.OnDisconnected, AddressOf RDPEvent_OnDisconnected
|
||||
AddHandler _rdpClient.OnLeaveFullScreenMode, AddressOf RDPEvent_OnLeaveFullscreenMode
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strRdpSetEventHandlersFailed & vbNewLine & ex.Message, True)
|
||||
End Try
|
||||
@@ -382,15 +438,15 @@ Namespace Connection
|
||||
#End Region
|
||||
|
||||
#Region "Private Events & Handlers"
|
||||
Private Sub RDPEvent_OnFatalError(ByVal sender As Object, ByVal e As AxMSTSCLib.IMsTscAxEvents_OnFatalErrorEvent)
|
||||
MyBase.Event_ErrorOccured(Me, e.errorCode)
|
||||
Private Sub RDPEvent_OnFatalError(ByVal errorCode As Integer)
|
||||
Event_ErrorOccured(Me, errorCode)
|
||||
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
|
||||
If Not e.discReason = UI_ERR_NORMAL_DISCONNECT Then
|
||||
Dim reason As String = RDP.GetErrorDescription(e.discReason, RDP.ExtendedDisconnectReason)
|
||||
Event_Disconnected(Me, e.discReason & vbCrLf & reason)
|
||||
If Not discReason = UI_ERR_NORMAL_DISCONNECT Then
|
||||
Dim reason As String = _rdpClient.GetErrorDescription(discReason, _rdpClient.ExtendedDisconnectReason)
|
||||
Event_Disconnected(Me, discReason & vbCrLf & reason)
|
||||
End If
|
||||
|
||||
If My.Settings.ReconnectOnDisconnect Then
|
||||
@@ -405,16 +461,17 @@ Namespace Connection
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub RDPEvent_OnConnecting(ByVal sender As Object, ByVal e As System.EventArgs)
|
||||
MyBase.Event_Connecting(Me)
|
||||
Private Sub RDPEvent_OnConnecting()
|
||||
Event_Connecting(Me)
|
||||
End Sub
|
||||
|
||||
Private Sub RDPEvent_OnConnected(ByVal sender As Object, ByVal e As System.EventArgs)
|
||||
MyBase.Event_Connected(Me)
|
||||
Private Sub RDPEvent_OnConnected()
|
||||
Event_Connected(Me)
|
||||
End Sub
|
||||
|
||||
Private Sub RDPEvent_OnLeaveFullscreenMode(ByVal sender As Object, ByVal e As System.EventArgs)
|
||||
RaiseEvent LeaveFullscreen(Me, e)
|
||||
Private Sub RDPEvent_OnLeaveFullscreenMode()
|
||||
Fullscreen = False
|
||||
RaiseEvent LeaveFullscreen(Me, New EventArgs())
|
||||
End Sub
|
||||
#End Region
|
||||
|
||||
@@ -545,87 +602,26 @@ Namespace Connection
|
||||
#End Region
|
||||
|
||||
#Region "Resolution"
|
||||
Public Class Resolution
|
||||
Private _Width As Integer
|
||||
Public Property Width() As Integer
|
||||
Get
|
||||
Return Me._Width
|
||||
End Get
|
||||
Set(ByVal value As Integer)
|
||||
Me._Width = value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Private _Height As Integer
|
||||
Public Property Height() As Integer
|
||||
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
|
||||
Public Shared Function GetResolutionRectangle(ByVal resolution As RDPResolutions) As Rectangle
|
||||
Dim resolutionParts() As String = Nothing
|
||||
If Not resolution = RDPResolutions.FitToWindow And _
|
||||
Not resolution = RDPResolutions.Fullscreen And _
|
||||
Not resolution = RDPResolutions.SmartSize Then
|
||||
resolutionParts = resolution.ToString.Replace("Res", "").Split("x")
|
||||
End If
|
||||
If resolutionParts Is Nothing OrElse Not resolutionParts.Length = 2 Then
|
||||
Return New Rectangle(0, 0, 0, 0)
|
||||
Else
|
||||
Return New Rectangle(0, 0, resolutionParts(0), resolutionParts(1))
|
||||
End If
|
||||
End Function
|
||||
#End Region
|
||||
|
||||
Public Class Versions
|
||||
Public Shared RDC60 As New Version(6, 0, 6000)
|
||||
Public Shared RDC61 As New Version(6, 0, 6001)
|
||||
Public Shared RDC70 As New Version(6, 1, 7600)
|
||||
Public Shared RDC80 As New Version(6, 2, 9200)
|
||||
End Class
|
||||
|
||||
#Region "Terminal Sessions"
|
||||
@@ -806,7 +802,7 @@ Namespace Connection
|
||||
|
||||
#Region "Reconnect Stuff"
|
||||
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
|
||||
|
||||
@@ -814,11 +810,10 @@ Namespace Connection
|
||||
tmrReconnect.Enabled = False
|
||||
ReconnectGroup.DisposeReconnectGroup()
|
||||
'SetProps()
|
||||
RDP.Connect()
|
||||
_rdpClient.Connect()
|
||||
End If
|
||||
End Sub
|
||||
#End Region
|
||||
|
||||
End Class
|
||||
End Namespace
|
||||
End Namespace
|
||||
|
||||
@@ -1,21 +0,0 @@
|
||||
Imports System.ComponentModel
|
||||
|
||||
Namespace Connection
|
||||
Public Class PuttySession
|
||||
Inherits StringConverter
|
||||
|
||||
Public Shared PuttySessions As String() = New String() {}
|
||||
|
||||
Public Overloads Overrides Function GetStandardValues(ByVal context As System.ComponentModel.ITypeDescriptorContext) As System.ComponentModel.TypeConverter.StandardValuesCollection
|
||||
Return New StandardValuesCollection(PuttySessions)
|
||||
End Function
|
||||
|
||||
Public Overloads Overrides Function GetStandardValuesExclusive(ByVal context As System.ComponentModel.ITypeDescriptorContext) As Boolean
|
||||
Return True
|
||||
End Function
|
||||
|
||||
Public Overloads Overrides Function GetStandardValuesSupported(ByVal context As ITypeDescriptorContext) As Boolean
|
||||
Return True
|
||||
End Function
|
||||
End Class
|
||||
End Namespace
|
||||
121
mRemoteV1/Connection/PuttySession.Info.vb
Normal file
121
mRemoteV1/Connection/PuttySession.Info.vb
Normal file
@@ -0,0 +1,121 @@
|
||||
Imports System.ComponentModel
|
||||
Imports mRemoteNG.Messages
|
||||
Imports mRemoteNG.Tools.LocalizedAttributes
|
||||
Imports mRemoteNG.My
|
||||
Imports mRemoteNG.App.Runtime
|
||||
Imports mRemoteNG.Tools
|
||||
|
||||
Namespace Connection
|
||||
Namespace PuttySession
|
||||
Public Class 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)> _
|
||||
Public Property RootPuttySessionsInfo() As Root.PuttySessions.Info
|
||||
|
||||
<[ReadOnly](True)> _
|
||||
Public Overrides Property PuttySession() As String
|
||||
|
||||
<[ReadOnly](True)> _
|
||||
Public Overrides Property Name() As String
|
||||
|
||||
<[ReadOnly](True), _
|
||||
Browsable(False)> _
|
||||
Public Overrides Property Description() As String
|
||||
|
||||
<[ReadOnly](True), _
|
||||
Browsable(False)> _
|
||||
Public Overrides Property Icon() As String
|
||||
Get
|
||||
Return "PuTTY"
|
||||
End Get
|
||||
Set(value As String)
|
||||
|
||||
End Set
|
||||
End Property
|
||||
|
||||
<[ReadOnly](True), _
|
||||
Browsable(False)> _
|
||||
Public Overrides Property Panel() As String
|
||||
Get
|
||||
Return RootPuttySessionsInfo.Panel
|
||||
End Get
|
||||
Set(value As String)
|
||||
|
||||
End Set
|
||||
End Property
|
||||
|
||||
<[ReadOnly](True)> _
|
||||
Public Overrides Property Hostname() As String
|
||||
|
||||
<[ReadOnly](True)> _
|
||||
Public Overrides Property Username() As String
|
||||
|
||||
<[ReadOnly](True), _
|
||||
Browsable(False)> _
|
||||
Public Overrides Property Password() As String
|
||||
|
||||
<[ReadOnly](True)> _
|
||||
Public Overrides Property Protocol() As Protocol.Protocols
|
||||
|
||||
<[ReadOnly](True)> _
|
||||
Public Overrides Property Port() As Integer
|
||||
|
||||
<[ReadOnly](True), _
|
||||
Browsable(False)> _
|
||||
Public Overrides Property PreExtApp() As String
|
||||
|
||||
<[ReadOnly](True), _
|
||||
Browsable(False)> _
|
||||
Public Overrides Property PostExtApp() As String
|
||||
|
||||
<[ReadOnly](True), _
|
||||
Browsable(False)> _
|
||||
Public Overrides Property MacAddress() As String
|
||||
|
||||
<[ReadOnly](True), _
|
||||
Browsable(False)> _
|
||||
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 Namespace
|
||||
End Namespace
|
||||
|
||||
10
mRemoteV1/Forms/frmMain.Designer.vb
generated
10
mRemoteV1/Forms/frmMain.Designer.vb
generated
@@ -120,7 +120,6 @@ Partial Class frmMain
|
||||
Me.ToolStripSplitButton1 = New System.Windows.Forms.ToolStripDropDownButton
|
||||
Me.ToolStripMenuItem1 = 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.msMain.SuspendLayout()
|
||||
Me.tsContainer.ContentPanel.SuspendLayout()
|
||||
@@ -689,6 +688,7 @@ Partial Class frmMain
|
||||
Me.tsExternalTools.Location = New System.Drawing.Point(39, 49)
|
||||
Me.tsExternalTools.Name = "tsExtAppsToolbar"
|
||||
Me.tsExternalTools.Size = New System.Drawing.Size(111, 25)
|
||||
Me.tsExternalTools.MaximumSize = New System.Drawing.Size(0, 25)
|
||||
Me.tsExternalTools.TabIndex = 17
|
||||
'
|
||||
'cMenExtAppsToolbar
|
||||
@@ -712,6 +712,7 @@ Partial Class frmMain
|
||||
Me.tsQuickConnect.Location = New System.Drawing.Point(3, 24)
|
||||
Me.tsQuickConnect.Name = "tsQuickConnect"
|
||||
Me.tsQuickConnect.Size = New System.Drawing.Size(331, 25)
|
||||
Me.tsQuickConnect.MaximumSize = New System.Drawing.Size(0, 25)
|
||||
Me.tsQuickConnect.TabIndex = 18
|
||||
'
|
||||
'btnQuickyPlay
|
||||
@@ -741,6 +742,7 @@ Partial Class frmMain
|
||||
Me.ToolStrip1.Location = New System.Drawing.Point(3, 74)
|
||||
Me.ToolStrip1.Name = "ToolStrip1"
|
||||
Me.ToolStrip1.Size = New System.Drawing.Size(264, 25)
|
||||
Me.ToolStrip1.MaximumSize = New System.Drawing.Size(0, 25)
|
||||
Me.ToolStrip1.TabIndex = 19
|
||||
Me.ToolStrip1.Visible = False
|
||||
'
|
||||
@@ -790,11 +792,6 @@ Partial Class frmMain
|
||||
Me.ToolStripMenuItem2.Size = New System.Drawing.Size(135, 22)
|
||||
Me.ToolStripMenuItem2.Text = "Ctrl-Esc"
|
||||
'
|
||||
'tmrShowUpdate
|
||||
'
|
||||
Me.tmrShowUpdate.Enabled = True
|
||||
Me.tmrShowUpdate.Interval = 5000
|
||||
'
|
||||
'tmrAutoSave
|
||||
'
|
||||
Me.tmrAutoSave.Interval = 10000
|
||||
@@ -857,7 +854,6 @@ Partial Class frmMain
|
||||
Friend WithEvents mMenViewFullscreen As System.Windows.Forms.ToolStripMenuItem
|
||||
Friend WithEvents mMenToolsSSHTransfer As System.Windows.Forms.ToolStripMenuItem
|
||||
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 tmrAutoSave As System.Windows.Forms.Timer
|
||||
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">
|
||||
<value>184, 56</value>
|
||||
</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">
|
||||
<value>252, 17</value>
|
||||
</metadata>
|
||||
|
||||
@@ -5,6 +5,8 @@ Imports System.Runtime.InteropServices
|
||||
Imports Crownwood
|
||||
Imports mRemoteNG.App.Native
|
||||
Imports PSTaskDialog
|
||||
Imports mRemoteNG.Config
|
||||
Imports mRemoteNG.Themes
|
||||
|
||||
Public Class frmMain
|
||||
Private _previousWindowState As FormWindowState
|
||||
@@ -30,6 +32,8 @@ Public Class frmMain
|
||||
|
||||
#Region "Startup & Shutdown"
|
||||
Private Sub frmMain_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
|
||||
MainForm = Me
|
||||
|
||||
Startup.CheckCompatibility()
|
||||
|
||||
Startup.CreateLogger()
|
||||
@@ -46,18 +50,19 @@ Public Class frmMain
|
||||
|
||||
ApplyLanguage()
|
||||
|
||||
AddHandler ThemeManager.ThemeChanged, AddressOf ApplyThemes
|
||||
ApplyThemes()
|
||||
|
||||
fpChainedWindowHandle = SetClipboardViewer(Me.Handle)
|
||||
|
||||
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
|
||||
|
||||
Tools.IeBrowserEmulation.Register()
|
||||
|
||||
Startup.GetConnectionIcons()
|
||||
Startup.GetPuttySessions()
|
||||
App.Runtime.GetExtApps()
|
||||
GetExtApps()
|
||||
Windows.treePanel.Focus()
|
||||
|
||||
Tree.Node.TreeView = Windows.treeForm.tvConnections
|
||||
@@ -69,25 +74,13 @@ Public Class frmMain
|
||||
Return
|
||||
End If
|
||||
|
||||
PuttySessions.StartWatcher()
|
||||
|
||||
If My.Settings.StartupComponentsCheck Then
|
||||
Windows.Show(UI.Window.Type.ComponentsCheck)
|
||||
End If
|
||||
|
||||
#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
|
||||
|
||||
Startup.UpdateCheck()
|
||||
Startup.AnnouncementCheck()
|
||||
#Else
|
||||
#If PORTABLE Then
|
||||
mMenInfoAnnouncements.Visible = False
|
||||
mMenToolsUpdate.Visible = False
|
||||
mMenInfoSep2.Visible = False
|
||||
@@ -124,7 +117,7 @@ Public Class frmMain
|
||||
mMenViewConfig.Text = My.Language.strMenuConfig
|
||||
mMenViewSessions.Text = My.Language.strMenuSessions
|
||||
mMenViewErrorsAndInfos.Text = My.Language.strMenuNotifications
|
||||
mMenViewScreenshotManager.Text = My.Language.strMenuScreenshotManager
|
||||
mMenViewScreenshotManager.Text = My.Language.strScreenshots
|
||||
mMenViewJumpTo.Text = My.Language.strMenuJumpTo
|
||||
mMenViewJumpToConnectionsConfig.Text = My.Language.strMenuConnectionsAndConfig
|
||||
mMenViewJumpToSessionsScreenshots.Text = My.Language.strMenuSessionsAndScreenshots
|
||||
@@ -166,12 +159,86 @@ Public Class frmMain
|
||||
ToolStripMenuItem2.Text = My.Language.strKeysCtrlEsc
|
||||
End Sub
|
||||
|
||||
Public Sub ApplyThemes()
|
||||
With ThemeManager.ActiveTheme
|
||||
pnlDock.DockBackColor = .WindowBackgroundColor
|
||||
tsContainer.BackColor = .ToolbarBackgroundColor
|
||||
tsContainer.ForeColor = .ToolbarTextColor
|
||||
tsContainer.TopToolStripPanel.BackColor = .ToolbarBackgroundColor
|
||||
tsContainer.TopToolStripPanel.ForeColor = .ToolbarTextColor
|
||||
tsContainer.BottomToolStripPanel.BackColor = .ToolbarBackgroundColor
|
||||
tsContainer.BottomToolStripPanel.ForeColor = .ToolbarTextColor
|
||||
tsContainer.LeftToolStripPanel.BackColor = .ToolbarBackgroundColor
|
||||
tsContainer.LeftToolStripPanel.ForeColor = .ToolbarTextColor
|
||||
tsContainer.RightToolStripPanel.BackColor = .ToolbarBackgroundColor
|
||||
tsContainer.RightToolStripPanel.ForeColor = .ToolbarTextColor
|
||||
tsContainer.ContentPanel.BackColor = .ToolbarBackgroundColor
|
||||
tsContainer.ContentPanel.ForeColor = .ToolbarTextColor
|
||||
msMain.BackColor = .ToolbarBackgroundColor
|
||||
msMain.ForeColor = .ToolbarTextColor
|
||||
ApplyMenuColors(msMain.Items)
|
||||
tsExternalTools.BackColor = .ToolbarBackgroundColor
|
||||
tsExternalTools.ForeColor = .ToolbarTextColor
|
||||
tsQuickConnect.BackColor = .ToolbarBackgroundColor
|
||||
tsQuickConnect.ForeColor = .ToolbarTextColor
|
||||
End With
|
||||
End Sub
|
||||
|
||||
Private Shared Sub ApplyMenuColors(itemCollection As ToolStripItemCollection)
|
||||
With ThemeManager.ActiveTheme
|
||||
Dim menuItem As ToolStripMenuItem
|
||||
For Each item As ToolStripItem In itemCollection
|
||||
item.BackColor = .MenuBackgroundColor
|
||||
item.ForeColor = .MenuTextColor
|
||||
|
||||
menuItem = TryCast(item, ToolStripMenuItem)
|
||||
If menuItem IsNot Nothing Then
|
||||
ApplyMenuColors(menuItem.DropDownItems)
|
||||
End If
|
||||
Next
|
||||
End With
|
||||
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
|
||||
If WindowList IsNot Nothing Then
|
||||
If My.Settings.ConfirmExit And WindowList.Count > 0 Then
|
||||
If Not (WindowList Is Nothing OrElse WindowList.Count = 0) Then
|
||||
Dim connectionWindow As UI.Window.Connection
|
||||
Dim openConnections As Integer = 0
|
||||
For Each window As UI.Window.Base In WindowList
|
||||
connectionWindow = TryCast(window, UI.Window.Connection)
|
||||
If connectionWindow IsNot Nothing Then
|
||||
openConnections = openConnections + connectionWindow.TabController.TabPages.Count
|
||||
End If
|
||||
Next
|
||||
|
||||
If openConnections > 0 And _
|
||||
(My.Settings.ConfirmCloseConnection = ConfirmClose.All Or _
|
||||
(My.Settings.ConfirmCloseConnection = ConfirmClose.Multiple And openConnections > 1) Or _
|
||||
My.Settings.ConfirmCloseConnection = ConfirmClose.Exit) Then
|
||||
Dim result As DialogResult = cTaskDialog.MessageBox(Me, My.Application.Info.ProductName, My.Language.strConfirmExitMainInstruction, "", "", "", My.Language.strCheckboxDoNotShowThisMessageAgain, eTaskDialogButtons.YesNo, eSysIcons.Question, Nothing)
|
||||
If cTaskDialog.VerificationChecked Then
|
||||
My.Settings.ConfirmExit = False
|
||||
My.Settings.ConfirmCloseConnection = My.Settings.ConfirmCloseConnection - 1
|
||||
End If
|
||||
If result = DialogResult.No Then
|
||||
e.Cancel = True
|
||||
@@ -180,6 +247,8 @@ Public Class frmMain
|
||||
End If
|
||||
End If
|
||||
|
||||
PuttySessions.StopWatcher()
|
||||
|
||||
Shutdown.BeforeQuit()
|
||||
|
||||
_IsClosing = True
|
||||
@@ -195,25 +264,6 @@ Public Class frmMain
|
||||
#End Region
|
||||
|
||||
#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
|
||||
MessageCollector.AddMessage(Messages.MessageClass.InformationMsg, "Doing AutoSave", True)
|
||||
App.Runtime.SaveConnections()
|
||||
@@ -227,8 +277,8 @@ Public Class frmMain
|
||||
|
||||
Public Sub AddExternalToolsToToolBar()
|
||||
Try
|
||||
For Each item As ToolStripItem In tsExternalTools.Items
|
||||
item.Dispose()
|
||||
For index As Integer = tsExternalTools.Items.Count - 1 To 0 Step -1
|
||||
tsExternalTools.Items(index).Dispose()
|
||||
Next
|
||||
tsExternalTools.Items.Clear()
|
||||
|
||||
@@ -256,7 +306,8 @@ Public Class frmMain
|
||||
Private Sub tsExtAppEntry_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
|
||||
Dim extA As Tools.ExternalTool = sender.Tag
|
||||
|
||||
If Tree.Node.GetNodeType(Tree.Node.SelectedNode) = Tree.Node.Type.Connection Then
|
||||
If Tree.Node.GetNodeType(Tree.Node.SelectedNode) = Tree.Node.Type.Connection Or _
|
||||
Tree.Node.GetNodeType(Tree.Node.SelectedNode) = Tree.Node.Type.PuttySession Then
|
||||
extA.Start(Tree.Node.SelectedNode.Tag)
|
||||
Else
|
||||
extA.Start()
|
||||
@@ -283,8 +334,10 @@ Public Class frmMain
|
||||
#Region "Menu"
|
||||
#Region "File"
|
||||
Private Sub mMenFile_DropDownOpening(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mMenFile.DropDownOpening
|
||||
Select Case Tree.Node.GetNodeType(mRemoteNG.Tree.Node.SelectedNode)
|
||||
Select Case Tree.Node.GetNodeType(Tree.Node.SelectedNode)
|
||||
Case Tree.Node.Type.Root
|
||||
mMenFileNewConnection.Enabled = True
|
||||
mMenFileNewFolder.Enabled = True
|
||||
mMenFileImportExport.Enabled = True
|
||||
mMenFileDelete.Enabled = False
|
||||
mMenFileRename.Enabled = True
|
||||
@@ -293,6 +346,8 @@ Public Class frmMain
|
||||
mMenFileRename.Text = My.Language.strMenuRenameFolder
|
||||
mMenFileDuplicate.Text = My.Language.strMenuDuplicate
|
||||
Case Tree.Node.Type.Container
|
||||
mMenFileNewConnection.Enabled = True
|
||||
mMenFileNewFolder.Enabled = True
|
||||
mMenFileImportExport.Enabled = True
|
||||
mMenFileDelete.Enabled = True
|
||||
mMenFileRename.Enabled = True
|
||||
@@ -301,6 +356,8 @@ Public Class frmMain
|
||||
mMenFileRename.Text = My.Language.strMenuRenameFolder
|
||||
mMenFileDuplicate.Text = My.Language.strMenuDuplicateFolder
|
||||
Case Tree.Node.Type.Connection
|
||||
mMenFileNewConnection.Enabled = True
|
||||
mMenFileNewFolder.Enabled = True
|
||||
mMenFileImportExport.Enabled = False
|
||||
mMenFileDelete.Enabled = True
|
||||
mMenFileRename.Enabled = True
|
||||
@@ -308,7 +365,19 @@ Public Class frmMain
|
||||
mMenFileDelete.Text = My.Language.strMenuDeleteConnection
|
||||
mMenFileRename.Text = My.Language.strMenuRenameConnection
|
||||
mMenFileDuplicate.Text = My.Language.strMenuDuplicateConnection
|
||||
Case Tree.Node.Type.PuttyRoot, Tree.Node.Type.PuttySession
|
||||
mMenFileNewConnection.Enabled = False
|
||||
mMenFileNewFolder.Enabled = False
|
||||
mMenFileImportExport.Enabled = False
|
||||
mMenFileDelete.Enabled = False
|
||||
mMenFileRename.Enabled = False
|
||||
mMenFileDuplicate.Enabled = False
|
||||
mMenFileDelete.Text = My.Language.strMenuDelete
|
||||
mMenFileRename.Text = My.Language.strMenuRename
|
||||
mMenFileDuplicate.Text = My.Language.strMenuDuplicate
|
||||
Case Else
|
||||
mMenFileNewConnection.Enabled = True
|
||||
mMenFileNewFolder.Enabled = True
|
||||
mMenFileImportExport.Enabled = False
|
||||
mMenFileDelete.Enabled = False
|
||||
mMenFileRename.Enabled = False
|
||||
@@ -511,14 +580,10 @@ Public Class frmMain
|
||||
End If
|
||||
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
|
||||
If Tools.Misc.Fullscreen.FullscreenActive Then
|
||||
Tools.Misc.Fullscreen.ExitFullscreen()
|
||||
Me.mMenViewFullscreen.Checked = False
|
||||
Else
|
||||
Tools.Misc.Fullscreen.EnterFullscreen()
|
||||
Me.mMenViewFullscreen.Checked = True
|
||||
End If
|
||||
Fullscreen.Value = Not Fullscreen.Value
|
||||
mMenViewFullscreen.Checked = Fullscreen.Value
|
||||
End Sub
|
||||
#End Region
|
||||
|
||||
@@ -664,7 +729,7 @@ Public Class frmMain
|
||||
Next
|
||||
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
|
||||
For Each tNode As TreeNode In tnc
|
||||
Dim tMenItem As New ToolStripMenuItem()
|
||||
@@ -677,23 +742,24 @@ Public Class frmMain
|
||||
|
||||
menToolStrip.DropDownItems.Add(tMenItem)
|
||||
AddNodeToMenu(tNode.Nodes, tMenItem)
|
||||
ElseIf Tree.Node.GetNodeType(tNode) = Tree.Node.Type.Connection Then
|
||||
ElseIf Tree.Node.GetNodeType(tNode) = Tree.Node.Type.Connection Or _
|
||||
Tree.Node.GetNodeType(tNode) = Tree.Node.Type.PuttySession Then
|
||||
tMenItem.Image = Windows.treeForm.imgListTree.Images(tNode.ImageIndex)
|
||||
tMenItem.Tag = tNode.Tag
|
||||
|
||||
menToolStrip.DropDownItems.Add(tMenItem)
|
||||
End If
|
||||
|
||||
AddHandler tMenItem.MouseDown, AddressOf ConMenItem_MouseDown
|
||||
AddHandler tMenItem.MouseUp, AddressOf ConMenItem_MouseUp
|
||||
Next
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "AddNodeToMenu failed" & vbNewLine & ex.Message, True)
|
||||
End Try
|
||||
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 TypeOf sender.Tag Is mRemoteNG.Connection.Info Then
|
||||
If TypeOf sender.Tag Is Connection.Info Then
|
||||
App.Runtime.OpenConnection(sender.Tag)
|
||||
End If
|
||||
End If
|
||||
@@ -701,28 +767,34 @@ Public Class frmMain
|
||||
#End Region
|
||||
|
||||
#Region "Window Overrides and DockPanel Stuff"
|
||||
Private Sub frmMain_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Resize
|
||||
If Me.WindowState = FormWindowState.Minimized Then
|
||||
Private _inSizeMove As Boolean = False
|
||||
Private Sub frmMain_ResizeBegin(ByVal sender As Object, ByVal e As EventArgs) Handles Me.ResizeBegin
|
||||
_inSizeMove = True
|
||||
End Sub
|
||||
|
||||
Private Sub frmMain_Resize(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Resize
|
||||
If WindowState = FormWindowState.Minimized Then
|
||||
If My.Settings.MinimizeToTray Then
|
||||
If App.Runtime.NotificationAreaIcon Is Nothing Then
|
||||
App.Runtime.NotificationAreaIcon = New Tools.Controls.NotificationAreaIcon()
|
||||
If NotificationAreaIcon Is Nothing Then
|
||||
NotificationAreaIcon = New Tools.Controls.NotificationAreaIcon()
|
||||
End If
|
||||
Me.Hide()
|
||||
Hide()
|
||||
End If
|
||||
Else
|
||||
PreviousWindowState = Me.WindowState
|
||||
PreviousWindowState = WindowState
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private _inMouseActivate As Boolean = False
|
||||
Private _inSizeMove As Boolean = False
|
||||
Private Sub frmMain_ResizeEnd(ByVal sender As Object, ByVal e As EventArgs) Handles Me.ResizeEnd
|
||||
_inSizeMove = False
|
||||
|
||||
' This handles activations from clicks that started a size/move operation
|
||||
ActivateConnection()
|
||||
End Sub
|
||||
|
||||
Private _inMouseActivate As Boolean = False
|
||||
Protected Overloads Overrides Sub WndProc(ByRef m As Message)
|
||||
Try
|
||||
#If Config = "Debug" Then
|
||||
'Debug.Print(m.Msg)
|
||||
#End If
|
||||
|
||||
Select Case m.Msg
|
||||
Case WM_MOUSEACTIVATE
|
||||
_inMouseActivate = True
|
||||
@@ -737,7 +809,7 @@ Public Class frmMain
|
||||
' Let TreeViews and ComboBoxes get focus but don't simulate a mouse event
|
||||
If TypeOf control Is TreeView Or TypeOf control Is ComboBox Then Exit Select
|
||||
|
||||
If control.CanSelect Or TypeOf control Is MenuStrip Or TypeOf control Is ToolStrip Or TypeOf control Is Magic.Controls.InertButton Then
|
||||
If control.CanSelect Or TypeOf control Is MenuStrip Or TypeOf control Is ToolStrip Or TypeOf control Is Magic.Controls.TabControl Or TypeOf control Is Magic.Controls.InertButton Then
|
||||
' Simulate a mouse event since one wasn't generated by Windows
|
||||
Dim clientMousePosition As Point = control.PointToClient(MousePosition)
|
||||
SendMessage(control.Handle, WM_LBUTTONDOWN, MK_LBUTTON, MAKELPARAM(clientMousePosition.X, clientMousePosition.Y))
|
||||
@@ -749,13 +821,6 @@ Public Class frmMain
|
||||
|
||||
' This handles activations from clicks that did not start a size/move operation
|
||||
ActivateConnection()
|
||||
Case WM_ENTERSIZEMOVE
|
||||
_inSizeMove = True
|
||||
Case WM_EXITSIZEMOVE
|
||||
_inSizeMove = False
|
||||
|
||||
' This handles activations from clicks that started a size/move operation
|
||||
ActivateConnection()
|
||||
Case WM_WINDOWPOSCHANGED
|
||||
' Ignore this message if the window wasn't activated
|
||||
Dim windowPos As WINDOWPOS = Marshal.PtrToStructure(m.LParam, GetType(WINDOWPOS))
|
||||
|
||||
@@ -124,154 +124,177 @@
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w
|
||||
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
|
||||
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAABi
|
||||
IgAAAk1TRnQBSQFMAgEBBwEAASABAQEgAQEBEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA
|
||||
AwABIAMAAQEBAAEgBgABIB4AAeIB7wH0Af8BqAHJAdcB/wFtAaQBtgH/AVABhgGcAf8BOwFiAYoB/wE2
|
||||
AV0BhwH/ATYBZwGVAf8BSQGOAasB/wGPAbcBzQH/Ad0B6gHxAf8MAANXAbcDnwH/A5oB/wOWAf8DkQH/
|
||||
A40B/wOJAf8DhAH/A4AB/wNYAf8DVAH/A1AB/wNNAf8DSQH/A0YB/wNXAbcYAAMNARIDVgG2A1YBtgMN
|
||||
ARFgAAGtAc8B3wH/AUgBkQGtAf8BTQGjAb8B/wFpAcAB1AH/AZUB2QHmAf8BgQHbAfAB/wFBAcYB7AH/
|
||||
ARUBqgHdAf8BBwGSAccB/wETAYABrAH/ASoBYgGSAf8BnQG/AdEB/wgAA6gB/wPpAf8D0wH/A9IB/wPR
|
||||
Af8D0AH/A84B/wPNAf8DzQH/A8sB/wPLAf8DygH/A8kB/wPIAf8D4gH/A0YB/xgAA14B2QPkAf8D4wH/
|
||||
A1gBwWAAAUsBhAGbAf8BNQG9AecB/wFYAdMB8QH/AYwB4wH0Af8BogHrAfYB/wGDAd8B9AH/AUEBygHw
|
||||
Af8BDwG2Ae0B/wEAAacB6AH/AQABoQHhAf8BAAGWAdIB/wEuAU8BawH/CAADrQH/A9YB/wO6Af8DuAH/
|
||||
A7UB/wOzAf8DsQH/A7AB/wOtAf8DqwH/A6oB/wOoAf8DpwH/A6YB/wPIAf8DSgH/CAADCwEPA1QBrQM6
|
||||
AWEDPwFuA3EB+AHiAeEB3wH/AeEB4AHfAf8DXwHzAzwBZwM8AWYDUwGtAwsBD1AAAU4BhwGeAf8BNAHE
|
||||
AfAB/wFaAdQB8QH/AYwB4wH0Af8BogHrAfYB/wGDAd8B9AH/AUEBygHwAf8BDwG2Ae0B/wEAAagB6AH/
|
||||
AQABoQHhAf8BAAGcAdoB/wEvAVABbQH/CAADsQH/A9kB/wO9Af8DugH/A7gB/wO2Af8DtQH/A7MB/wOw
|
||||
Af8DrwH/A60B/wOrAf8DqQH/A6gB/wPKAf8DTgH/CAADWgHFBP8ClgGVAf4ClQGUAf4C5wHmAf8B1gHV
|
||||
AdMB/wHXAdYB1AH/AeMB4gHgAf8BigGJAYcB/gOoAf0B6QHoAeYB/wNYAcFQAAFQAYkBoAH/ATQBxAHv
|
||||
Af8BWQHUAfEB/wGNAeMB9AH/AaIB6wH2Af8BggHfAfMB/wFCAcoB8AH/AQ8BtgHtAf8BAAGoAegB/wEA
|
||||
AaEB4QH/AQABnAHaAf8BMQFTAW8B/wgAA7YB/wPdAf8DwQH/A70B/wO8Af8DugH/A7gB/wO1Af8DtAH/
|
||||
A7IB/wOwAf8DrQH/A6wB/wOsAf8DzwH/A1IB/wgAA2QB5wL5AfcB/wLvAe4B/wLbAdoB/wHKAskB/wHJ
|
||||
AcgBxgH/AckByAHHAf8ByQHIAccB/wLLAckB/wHmAeUB5AH/AeUB5AHiAf8DZQHlUAABUgGMAaIB/wE2
|
||||
AcYB8AH/AVsB1AHxAf8BjAHjAfQB/wGiAesB9gH/AYIB3wH0Af8BQgHKAfAB/wEPAbYB7QH/AQABqAHo
|
||||
Af8BAAGiAeIB/wEAAZsB2wH/ATMBVgGAAf8IAANaAb0D2gH/A8gB/wPAAf8DvwH/A70B/wO6Af8DuAH/
|
||||
A7cB/wO1Af8DswH/A7AB/wOvAf8DswH/A8IB/wNaAb0IAANOAZUB9gH1AfQB/wHmAeUB5AH/Ab8BvgG9
|
||||
Af8C6wHqAf8B1AHTAdIB/wHWAdUB1AH/AeIC4QH/ArQBswH/AdcB1gHUAf8B4gHhAd8B/wNKAY1QAAFV
|
||||
AY8BpQH/ATcBxgHwAf8BWwHUAfIB/wGNAeMB9AH/AaIB6wH2Af8BgwHfAfQB/wFBAcoB8AH/AQ8BtgHt
|
||||
Af8BAAGnAegB/wEAAaEB4gH/AQABnAHbAf8BNQFZAYMB/wgAA1oBvQPjAf8D5wH/A+EB/wPgAf8D4AH/
|
||||
A98B/wPfAf8D3gH/A90B/wPdAf8D3AH/A9sB/wPgAf8D0AH/A1oBvQMLAQ8DVQG1A2QB5wHkAeMB4gH/
|
||||
AdEB0AHPAf8C8AHvAf8DrgH/A2QB8QNnAfICrAGrAf8C6AHnAf8CywHKAf8B4AHfAd0B/wNhAeQDVQG1
|
||||
AwsBD0gAAVYBkgGoAf8BNwHFAfAB/wFcAdQB8gH/AY0B4wH0Af8BogHrAfYB/wGCAd8B9AH/AUEBygHw
|
||||
Af8BDwG2Ae0B/wEAAacB6AH/AQABoQHhAf8BAAGcAdsB/wE3AVwBhgH/CAADKQE/A84B/wPsAf8D3gH/
|
||||
A9gB/wPSAf8DzAH/A8gB/wPHAf8DyAH/A8sB/wPQAf8D3QH/A+gB/wOkAf8DKwFCAz8BbQLkAeMB/wHY
|
||||
AdYB1QH/AdIB0QHQAf8BxQHEAcMB/wHtAewB6wH/A1cBuggAA1wBzQHoAecB5gH/AbYBtQG0Af8B1gHV
|
||||
AdMB/wHiAeEB4AH/AuAB3wH/AzwBZkgAAVkBlQGrAf8BNwHFAfAB/wFcAdQB8gH/AY0B4wH0Af8BogHr
|
||||
AfYB/wGDAd8B9AH/AUIBywHwAf8BDwG1Ae0B/wEAAacB6AH/AQABoQHiAf8BAAGcAdoB/wE6AV8BiAH/
|
||||
DAADWgG9A+MB/wPbAf8D4gH/AbcB0AG4Af8BQAGtAUQB/wFSAaoBQAH/AUwBrwFEAf8BMgGlAT4B/wGs
|
||||
AcUBrAH/A8IB/wPRAf8D0wH/A1oBvQQAA0IBdgHsAesB6AH/AdoB2QHXAf8B1AHTAdEB/wHGAcUBxAH/
|
||||
Ad4C3AH/A0YBfggAA1ABmgHdAdwB2wH/AcgBxgHFAf8C4gHhAf8C4QHfAf8B7gHtAewB/wM/AW9IAAFb
|
||||
AZgBrgH/ATcBxQHwAf8BXAHUAfEB/wGNAeMB9AH/AaIB6wH2Af8BgwHfAfQB/wFCAcoB8AH/AQ8BtgHt
|
||||
Af8BAAGoAekB/wEAAaEB4QH/AQABnAHaAf8BPAFhAYoB/wwAAykBPwPRAf8D8wH/AccB3gHKAf8BQAHJ
|
||||
AYUB/wGzAdwBpAH/AecBxwFYAf8B3AG/AU8B/wFSAcwBjwH/ASsBrQFEAf8BuAHQAbgB/wPxAf8DrwH/
|
||||
AysBQgQAAy8BSgNgAesDeAH8Ad4B3QHcAf8BywLKAf8B5gLlAf8DYQHhAzIBUAM4AVwDYAHrAu4B7AH/
|
||||
AcwCywH/AecB5gHlAf8DeAH8A2AB6wMsAUNIAAFeAZsBsAH/ATYBxgHwAf8BXAHUAfIB/wGNAeMB9AH/
|
||||
AaIB6wH2Af8BgwHfAfQB/wFCAcoB8AH/AQ8BtgHtAf8BAAGoAegB/wEAAaEB4QH/AQABnAHaAf8BPwFl
|
||||
AY4B/xAAA1oBvQPEAf8BUgHOAYsB/wGZAeQBqwH/AbABxQE5Af8B6gG1ASQB/wHhAaIBFQH/AaUBnQEc
|
||||
Af8BggHFAY8B/wElAZoBMgH/A6AB/wNaAb0QAANeAc4B4QHgAd4B/wHZAdcB1gH/AbgCtwH/AeEB4AHf
|
||||
Af8DqAH9A6gB/QL2AfUB/wLAAb8B/wHqAekB6AH/AvMB8gH/A1wByVAAAWEBnwGzAf8BNgHGAfAB/wFa
|
||||
AdQB8QH/AYwB4wH0Af8BogHrAfYB/wGDAd8B9AH/AUIBygHwAf8BDwG2Ae0B/wEAAacB6AH/AQABoQHh
|
||||
Af8BAAGbAdoB/wFBAWgBkAH/GAABXgF6AWkB/AGiAekBlQH/AdYBzwFFAf8B4gGzASMB/wHRAbsBKwH/
|
||||
AcIBrgEeAf8BggG9AUgB/wErAW8BUgH8GAADTAGRAeMB4gHgAf8C3gHcAf8B4QHgAd8B/wHMAssB/wHE
|
||||
AcMBwgH/As8BzgH/At4B3QH/AvAB7wH/AvAB7wH/AvYB9QH/A0gBh1AAAWIBoQG1Af8BXAHVAfQB/wGa
|
||||
AegB9wH/AbUB8wH6Af8BwgH4AfwB/wHDAfgB/QH/AcEB9wH9Af8BrwHwAfsB/wGPAeIB9wH/AVsB0AHw
|
||||
Af8BLwG4AeUB/wFEAWsBkwH/GAABYAF6AWoB/AGiAfABnwH/AdgB7QGvAf8B3gHFAUQB/wG0AeIBQQH/
|
||||
ATwB5wEVAf8BRwHXAUcB/wEsAXEBWwH8FAADAQECA18B4wHlAeQB4QH/Au4B7QH/Au4B7QH/AusB6gH/
|
||||
AeMB4gHhAf8C6AHnAf8C6gHpAf8C8wHyAf8C9QH0Af8B+gH5AfgB/wNcAd9QAAFlAaMBuAH/AcUB+QH9
|
||||
Af8BxQH5Af0B/wHFAfkB/QH/AcUB+QH9Af8BxQH5Af0B/wHFAfkB/QH/AcUB+QH9Af8BxQH5Af0B/wHF
|
||||
AfkB/QH/AcUB+QH9Af8BRgFuAZUB/xgAA2EB3AHIAfcB1AH/AdgB9gHKAf8B5wHjAakB/wHbAc8BSAH/
|
||||
Aa8B3AFEAf8BnQHqAasB/wNfAeAYAANAAW8DfwH+A2QB5wNfAfMB6AHnAeYB/wHnAeYB5QH/Au0B7AH/
|
||||
AvsB+gH/A2cB8gNkAecDfwH+Az0BaFAAAbcB1wHhAf8BjAG9AcwB/wGdAc8B2wH/Aa0B3wHoAf8BuQHs
|
||||
AfMB/wHCAfUB+gH/AcIB9QH6Af8BuAHrAfEB/wGpAdoB4wH/AZQBxAHRAf8BbAGoAbgB/wGpAcUB0QH/
|
||||
GAADLQFFAVcBdgFtAfoB2wH4AekB/wHnAfIB2AH/Ae0B5QGzAf8B3wHZAaYB/wFfAYUBXwH7AzIBUCAA
|
||||
Aw8BFAMKAQ4DUwGqAe8B7gHtAf8C9AHzAf8DUgGkAwgBCwMRARdYAAL+Av8B4wHxAfQB/wG5AdcB4QH/
|
||||
AZUBvgHMAf8BbAGoAbsB/wFfAZsBsAH/AVsBmAGtAf8BZAGhAbMB/wGMAbIBwgH/AbEBzQHXAf8B3wHr
|
||||
Ae8B/wP+Af8cAAMuAUcDXgHZAWQBegFoAfwBZAF5AWQB/ANeAd0DMgFQLAADLwFKA10B8ANiAe8DLAFD
|
||||
ZAADEQEXA1YBswFTAVQBUwGstAADBAEFAxABFQMfAS0DKQE/Ay8BSQMuAUgDKAE9Ax4BKwMPARQDAwEE
|
||||
EAADtwH/AZwBqAGeAf8BAAFTAS4B/wEYAZIBUAH/AQABVwEuAf8BAAFEAaAB/wEAAUIBngH/AQABPwGb
|
||||
Af8BAAE9AZkB/wEAATsBlwH/AQABOAGUAf8BAAE3AZMB/wNIAf8DSAH/HAADQQFyAUwCXwHzAVkCXAHP
|
||||
AUsCTAGQAyMBM1wAAwUBBwMfASwCPgE9AWoCUgFQAaMBWwJZAcQBXQJaAdMBXQJaAdMBWwJZAcMBUgJR
|
||||
AaEDPAFmAxwBKAMEAQYMAAMVAR0DUQGiAR0BlQFUAf8BggG+AaoB/wEsAaUBggH/AQ0BlwFGAf8BEAGZ
|
||||
AUsB/wEUAZkBTwH/ARgBnQFUAf8BUgGqAdIB/wFQAagB0QH/AQABOQGVAf8gAAMhATABKwEwAWgB/AGG
|
||||
Aa0B4QH/AVoBqAHcAf8BOwGSAckB/wEMAU4BqwH/AVUCVgGxAx8BLVMAAQEDEgEYAz4BawFdAlkB1wFW
|
||||
AisB/AGsASkBAAH/AeEBSQEdAf8B5AFbATEB/wHTAUcBFQH/AaMBQAE6Af0BYQJeAdoCPgE9AWoDDwEU
|
||||
CAADGAEiAVABUgFQAaQDVgGzAUkBrAGfAf8BUAG3AZ4B/wFaAbsBrAH/AVoBuwGuAf8BWwG7AbAB/wGA
|
||||
AbwBswH/ARMBmgFXAf8BMAGVAccB/wFTAasB0wH/AQABPAGYAf8gAAFUAlYBqwFJAZ0B0QH/AZkBvAHr
|
||||
Af8BTQGgAeMB/wGWAbkB6gH/AZQBuAHqAf8BPAGTAcoB/wIrAWQB/ANDAXhQAAMbASYDWQHSARkBAwEA
|
||||
Af8BigE4ASAB/wHKAYYBQgH/AfYBvAGcAf8B+QHMAbcB/wHjAaABVAH/AbEBUwE5Af8BVQEvARAB/wFe
|
||||
AlgB3QMcASgIAAFVAVYBVQGxA1YBswNWAbMBOAGkAZEB/wFLAbYBmwH/AUQBsgGbAf8BRgGyAZ4B/wFI
|
||||
AbMBoQH/AYUBvwG2Af8BGgGeAYIB/wE1AZkByQH/AVcBrQHUAf8BAAFAAZwB/xwAAx8BLQErAUMBbAH8
|
||||
AZ0BvwHsAf8BRQGcAeIB/wE3AZMB3wH/ATQBkQHfAf8BOwGUAeAB/wGVAbgB6gH/AYYBrQHhAf8BJQGD
|
||||
AbsB/wFLAkwBkAQAA50B/wOdAf8DnQH/A50B/wOdAf8DnQH/A50B/wOdAf8DnQH/A50B/wOdAf8DnQH/
|
||||
A50B/wOdAf8DnQH/A50B/wgAAVMCTwGlATABFQEAAf8BVQFAASsB/wGPAVIBPQH/AawBiAFHAf8BwgGj
|
||||
AYgB/wHBAaUBjgH/AbMBmAGBAf8BkQFSATwB/wFQATcBIgH/AT8BGAEAAf8BVgJVAbEIAAMIAQsDVQGy
|
||||
A1YBswFSAbIBqAH/AVkBvQGnAf8BhwHBAbUB/wGGAcEBtgH/AYcBwQG3Af8BiAHBAbkB/wEgAaIBiAH/
|
||||
AToBnAHLAf8BWwGwAdUB/wEAAUMBnwH/EAADKwFCA0gBhAFVAlcBtwFMAl8B8wFSAaQB1wH/AaEBwgHt
|
||||
Af8BnwHAAe0B/wGdAb8B7QH/AVABowHkAf8BNgGSAd8B/wE0AZAB3gH/AVcBpwHmAf8BkgG2AegB/wEf
|
||||
AVsBtwH/AzcBWgOdAf8BugK9Af8B5gLsAf8B5gLtAf8B5wLtAf8B6ALuAf8B6QLvAf8B6QLvAf8B6gLv
|
||||
Af8B6gLwAf8B6wLwAf8B6wLxAf8B7ALxAf8B7ALxAf8BvQK/Af8DnQH/BAADOQFfAVEBMQEWAf8BwwGx
|
||||
AaIB/wG2AZwBgwH/AaYBVQEoAf8BqAFTASUB/wHDAaQBhwH/AdgBxgGwAf8BvQGpAYsB/wFbATsBGwH/
|
||||
ATgBGAEAAf8BLgEKAQAB/wE1AQ4BAAH/AzMBUwgAAwYBCANVAbIBKwGgAYoB/wGTAckBugH/ATsBrwGX
|
||||
Af8BIAGiAYMB/wEhAaMBhwH/ASMBpAGLAf8BIgGqAZIB/wEwAcIB7QH/AYEBtAHXAf8BBAFHAaMB/wwA
|
||||
A0wBkwFAAZcBzwH/AVcBqAHZAf8BjQG0AeIB/wGjAcQB7QH/AacBxwHuAf8BQAGXAc0B/wEQAVEBsgH/
|
||||
ATsBkwHJAf8BnwHAAe0B/wFUAZYBowH/AZ4BlgEkAf8BWAGUAZEB/wGNAbMB6QH/AVUBpQHYAf8BWgJe
|
||||
AdgEAANcAeoB2wLiAf8BzQLPAf8DywH/A8wB/wPOAf8DzwH/A9AB/wPSAf8D0wH/A9UB/wHXAtgB/wHn
|
||||
AuwB/wNtAfcEAAMiATEBVgJVAbEBQwEXAQAB/wGqAYUBOwH/AbIBTgEMAf8BrQErAQAB/wG6AUgBAAH/
|
||||
AeoB1QG/Af8B/QH8AfoB/wHWAb4BpgH/AZABOwEIAf8BPgEMAQAB/wE/ARwBAAH/ATgBGAEAAf8DVwHF
|
||||
AxwBJwgAAwQBBgERAZQBUwH/AUoBuQGeAf8BJQGmAYkB/wFVAbEB1QH/AVEBrQHUAf8BTQGrAdIB/wE7
|
||||
AboB5AH/AQABmQFFAf8BAwGOATQB/wEGAUwBmgH/DAABSAJiAfYBrgHNAfAB/wGwAc8B8AH/AZgBvwHs
|
||||
Af8BWgGuAecB/wGqAcoB7wH/ARkBVwG4Af8EAAERAVIBswH/AaIBwwHtAf8BqAGXAQ0B/wHEAbUBNgH/
|
||||
AawBlwECAf8BNwGTAd8B/wGYAbsB6wH/AQABQAGfAf8EAANcAeoB2QLhAf8BywLMAf8DxwH/A8gB/wPK
|
||||
Af8DywH/A80B/wPOAf8D0AH/A9EB/wHTAtQB/wHlAusB/wNtAfcEAAMuAUcDWQHsAT4BDAEAAf8BmQEr
|
||||
AQAB/wG4AUMBAAH/AcIBPwEAAf8ByQFRAQAB/wHmAb8BlAH/AewB1AG2Af8BzQGcAT4B/wGoAUgBCAH/
|
||||
AZkBSQEdAf8BowGMAU4B/wFbAUIBKwH/AlEBPwH3ATUCNAFVDAABNAGOAcQB/wEuAawBiwH/ASsBqgGP
|
||||
Af8BWgG1AdgB/wFWAbIB1gH/AVMBrwHVAf8BTwGsAdMB/wEAAZABPgH/ATUBqAGEAf8BAAFUAS8B/wMU
|
||||
ARsIAAFaAmAB3gGoAckB7QH/AYQBpwHtAf8BNAFGAe0B/wFGAY4B6QH/Aa0BzQHwAf8BSQGdAdIB/wEa
|
||||
AVgBuQH/AUMBmQHOAf8BpQHFAe4B/wGVAZoBRQH/Aa0BlwECAf8BnQGXASkB/wFCAZsB4gH/AZgBuwHq
|
||||
Af8BSAJiAfYEAANcAeoB1wLfAf8BxwLJAf8DwgH/A8QB/wPFAf8DyAH/A8kB/wPKAf8DzAH/A80B/wHQ
|
||||
AtEB/wHjAuoB/wNtAfcEAAM5AV8CQAEnAf0BUAEXAQAB/wGuATUBAAH/AcABPQEAAf8B5wGWASIB/wHo
|
||||
AbIBVgH/AeQBsQFWAf8B0gGJARUB/wG9AUIBAAH/AagBMAEAAf8BuAGNATkB/wHUAcMBsgH/AZgBhAFK
|
||||
Af8BNwEZAQAB/wE+Aj0BagwAAToBkQHJAf8BpAHMAeQB/wGHAbsB2wH/ARsBoQFWAf8BFQGcAVAB/wEQ
|
||||
AZoBTAH/AQsBlgFGAf8BJwGjAYEB/wGEAcABqwH/AR4BlgFVAf8DUQGiAxUBHQQAA1EBnAGSAbkB5QH/
|
||||
AUoBUAH2Af8BgQGEAfUB/wIcAfAB/wGQAbsB6wH/Aa4BzQHwAf8BrAHMAfAB/wGqAcoB8AH/AYUBsgHp
|
||||
Af8BOgGpAcEB/wEgAbMBjQH/ATIBqAG2Af8BTAGhAeQB/wGXAboB6AH/A10B7QQAA1wB6gHWAt8B/wHD
|
||||
AsUB/wPAAf8DwAH/A8IB/wPDAf8DxAH/A8UB/wPIAf8DyQH/A80B/wHgAugB/wNtAfcEAAM3AVoCTQEo
|
||||
AfoBgwEiAQAB/wHLAUwBAAH/AeUBiwEZAf8B/gG2AU4C/wHjAcIB/wH0AbwBhQH/AdYBUwEFAf8BxQFK
|
||||
AQAB/wG6AT8BAAH/Aa8BUwEVAf8BrgGIATkB/wGUAVIBOQH/ATgBGgEAAf8DPAFmDAABPwGVAc0B/wGo
|
||||
Ac8B5QH/AYwBvwHdAf8BIQGlAYEB/wGNAcUBuAH/AYkBwwG0Af8BhgHBAbEB/wGEAb8BrwH/AVMBuQGf
|
||||
Af8BSgGtAaAB/wNWAbMBUAFSAVABpAMYASIDIwEzASsBYQF3AfwBkgGkAfUB/wE1ATYB9gH/AS0BhgH0
|
||||
Af8BFwGmAfsB/wE4AasB8gH/AVoBrwHnAf8BVwGtAecB/wFUAaoB5gH/ARsBtgGAAf8BPAHIAZcB/wEX
|
||||
AbcBVgH/AVkBrAHnAf8BjwG1AeMB/wFaAl4B1QQAA2AB1gHHAs0B/wHbAuQB/wHbAuQB/wHbAuUB/wHc
|
||||
AuUB/wHcAuUB/wHdAuYB/wHdAuYB/wHeAucB/wHfAugB/wHgAugB/wHNAtMB/wNfAeMEAAMmATkBYAJa
|
||||
Ad4BjgEqAQAB/wHsAZ4BLwH/Af4BvwGFAv8BzAGhAv8B3wG7Af8B/gHCAVsB/wHiAY4BJQH/AdMBhAEW
|
||||
Af8BygFVAQgB/wG1AUwBBgH/AZcBPQEDAf8BgQE6ARUB/wNZAewDLgFIDAABQwGYAdAB/wGrAdEB5wH/
|
||||
AZABwgHfAf8BKAGpAYgB/wGRAckBuwH/AVIBugGlAf8BTgG4AaEB/wFKAbYBngH/AU4BuAGdAf8BOQGl
|
||||
AZIB/wNWAbMDVgGzAVUBVgFVAbEEAANJAYcBhgGvAeEB/wG5AdcB8wH/AQ4BpgH+Af8BSAG/Av8BBwGj
|
||||
Av8BQgG+AfAB/wEWAc4B+wH/ATYBvgHxAf8BLgGzAaAB/wEXAbcBVQH/ASMBswGQAf8BpwHIAe4B/wFT
|
||||
AaUB1gH/AU8CUQGcBAADLAFDA1sByAOdAf8DnQH/A50B/wOdAf8DnQH/A50B/wOdAf8DnQH/A50B/wOd
|
||||
Af8DXgHdAzEBTgQAAwkBDANLAY4BwAFKAQkC/wG8AVsB/wH6Ac4BpwH/AfgB2wG+Av8B4gHGAv8BvgGG
|
||||
Af8B9AGsAVEB/wHsAcIBmgH/AeIBtQGLAf8BuAFRAQ8B/wGdAUABCAH/AYgBQAEcAf8DTwGlAxABFQwA
|
||||
AUcBmwHTAf8BrgHUAegB/wGrAdMB6AH/ATUBsQGQAf8BmwHOAcAB/wGZAc0BvQH/AZYBywG7Af8BlQHK
|
||||
AbkB/wGAAb8BqAH/AVMBswGpAf8DVgGzA1UBsgMIAQsEAAMEAQYDUQGfAYUBrgHhAf8BNgGyAfkB/wEH
|
||||
AaMC/wEcAakB+wH/AQwB0wH+Af8BSAHiAv8BBwHVAv8BWwGwAegB/wFYAa0B5wH/AakBygHvAf8BpQHF
|
||||
Ae0B/wErAU8BbgH8AyEBMEQAAxMBGgJkAVMB8QHYAZ4BTgH/AecB0wHAAf8B/AH1Ae4C/wH4AesC/wHl
|
||||
AcIB/wH2AbkBggH/AfIB0gG4Af8B7gHSAbYB/wHCAYYBKgH/AacBUgEjAf8CTQEpAfoDHQEpEAABSgGd
|
||||
AdUB/wFIAZsB0wH/AUUBmgHSAf8BJQGhAYwB/wEgAZ8BigH/AR0BnQGFAf8BGQGZAYAB/wEyAaUBkgH/
|
||||
AVsBuAGxAf8BLAGhAYsB/wNVAbIDBgEIEAADQgF1AV8CYgH2AY4BtgHjAf8BuQHXAfMB/wE5AdUB+wH/
|
||||
AQYB1QL/AR0B0QH7Af8BswHSAfIB/wGxAdAB8QH/AZIBuAHiAf8BPgGVAcwB/wNKAYpMAAM1AVcBqQE+
|
||||
ARAB/wHKAbgBqAb/Af4B/AL/AfYB4gH/AfsBxQGgAf8B5AG5AZUB/wHbAawBWQH/AcMBjgE4Af8BkwFA
|
||||
ARQB/wE+Aj0BajAAAVMCVAGsA1YBswNWAbMDBAEGGAADFgEeA1QBrgFSAaMB3AH/AZEBuAHkAf8BqAHK
|
||||
AewB/wGlAccB7AH/AY0BtQHiAf8BRAGaAdIB/wFaAl8B2wMxAU5UAAMyAVECZAFZAewB0AGyAZUB/wHs
|
||||
AeAB2QH/AeYB1QHEAf8B0wGwAZQB/wHTAaYBUwH/AcsBjwExAf8BZwFlAVkB8gE6AjkBYDQAAVMCVAGs
|
||||
A1YBswMEAQYkAAMrAUIDTAGQAVsCXQHSAVkCXAHPA04BmQMtAUVgAAMRARcDRAF6AloBVwHFAmUBXgHl
|
||||
AmEBWAHmAlwBWQHJAkgBRwGDAxUBHRAAAUIBTQE+BwABPgMAASgDAAFAAwABIAMAAQEBAAEBBgABARYA
|
||||
A/8BAAHgAQcCAAH8AT8CAAHAAQMCAAH8AT8CAAHAAQMCAAHAAQMCAAHAAQMCAAHAAQMCAAHAAQMCAAHA
|
||||
AQMCAAHAAQMCAAHAAQMCAAHAAQMGAAHAAQMCAAEBAYACAAHAAQMBgAIBAYACAAHAAQMBgAEBBAABwAED
|
||||
AcABAwHAAQMCAAHAAQMB8AEPAcABAwIAAcABAwHwAQ8BgAEDAgABwAEDAfABDwHAAQMCAAHAAQMB8AEP
|
||||
AfABDwIAAcABAwH4AR8B/AE/AgAB4wX/AeABBwGAAQEB/AEfAv8BwAEDAYABBwH4AQcC/wGAAQMBAAEH
|
||||
AfgBAwL/AcABAwEAAQcB8AEBAgABwAEDAQABBwGAAwABgAEBAYABBwIAAYABAQIAAcABBwEBAQABgAEB
|
||||
AgAB4AEDAgABgAEBAgAB4AEBAgABgAEBAgAB4AMAAYABAQIAAeABAAGAAQABgAEBAgAB4AEAAYABAAL/
|
||||
AYABAQHgAQEB4AEBAv8BwAEDAf8BwwHwAQMC/wHgAQcB/wHHAfwBDwL/AfABDws=
|
||||
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAD+
|
||||
JgAAAk1TRnQBSQFMAgEBCAEAAVABAQFQAQEBEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA
|
||||
AwABMAMAAQEBAAEgBgABMP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8ALgAB4gHvAfQB/wGo
|
||||
AckB1wH/AWcBpAG2Af8BSgGGAZwB/wE1AVwBigH/ATABVwGHAf8BMAFhAZUB/wFDAY4BqwH/AY8BtwHN
|
||||
Af8B3QHqAfEB/wwAA1cBtwOfAf8DmgH/A5YB/wORAf8DjQH/A4kB/wOEAf8DgAH/A1IB/wNOAf8DSgH/
|
||||
A0cB/wNDAf8DQAH/A1cBtxgAAw0BEgNWAbYDVgG2Aw0BEWAAAa0BzwHfAf8BQgGRAa0B/wFHAaMBvwH/
|
||||
AWMBwAHUAf8BlQHZAeYB/wGBAdsB8AH/ATsBxgHsAf8BDwGqAd0B/wEBAZIBxwH/AQ0BgAGsAf8BJAFc
|
||||
AZIB/wGdAb8B0QH/CAADqAH/A+kB/wPTAf8D0gH/A9EB/wPQAf8DzgH/A80B/wPNAf8DywH/A8sB/wPK
|
||||
Af8DyQH/A8gB/wPiAf8DQAH/GAADXgHZA+QB/wPjAf8DWAHBMAADQQFyAUwCXwHzAVkCXAHPAUsCTAGQ
|
||||
AyMBMxwAAUUBhAGbAf8BLwG9AecB/wFSAdMB8QH/AYwB4wH0Af8BogHrAfYB/wGDAd8B9AH/ATsBygHw
|
||||
Af8BCQG2Ae0B/wEAAacB6AH/AQABoQHhAf8BAAGWAdIB/wEoAUkBZQH/CAADrQH/A9YB/wO6Af8DuAH/
|
||||
A7UB/wOzAf8DsQH/A7AB/wOtAf8DqwH/A6oB/wOoAf8DpwH/A6YB/wPIAf8DRAH/CAADCwEPA1QBrQM6
|
||||
AWEDPwFuA2cB+AHiAeEB3wH/AeEB4AHfAf8DXwHzAzwBZwM8AWYDUwGtAwsBDxwAAyEBMAIrAWIB/AGG
|
||||
Aa0B4QH/AVQBqAHcAf8BNQGSAckB/wEGAUgBqwH/AVUCVgGxAx8BLRQAAUgBhwGeAf8BLgHEAfAB/wFU
|
||||
AdQB8QH/AYwB4wH0Af8BogHrAfYB/wGDAd8B9AH/ATsBygHwAf8BCQG2Ae0B/wEAAagB6AH/AQABoQHh
|
||||
Af8BAAGcAdoB/wEpAUoBZwH/CAADsQH/A9kB/wO9Af8DugH/A7gB/wO2Af8DtQH/A7MB/wOwAf8DrwH/
|
||||
A60B/wOrAf8DqQH/A6gB/wPKAf8DSAH/CAADWgHFBP8ChAGDAf4CgwGCAf4C5wHmAf8B1gHVAdMB/wHX
|
||||
AdYB1AH/AeMB4gHgAf8DfwH+A6gB/QHpAegB5gH/A1gBwRwAAVQCVgGrAUMBnQHRAf8BmQG8AesB/wFH
|
||||
AaAB4wH/AZYBuQHqAf8BlAG4AeoB/wE2AZMBygH/AisBXgH8A0MBeBAAAUoBiQGgAf8BLgHEAe8B/wFT
|
||||
AdQB8QH/AY0B4wH0Af8BogHrAfYB/wGCAd8B8wH/ATwBygHwAf8BCQG2Ae0B/wEAAagB6AH/AQABoQHh
|
||||
Af8BAAGcAdoB/wErAU0BaQH/CAADtgH/A90B/wPBAf8DvQH/A7wB/wO6Af8DuAH/A7UB/wO0Af8DsgH/
|
||||
A7AB/wOtAf8DrAH/A6wB/wPPAf8DTAH/CAADZAHnAvkB9wH/Au8B7gH/AtsB2gH/AcoCyQH/AckByAHG
|
||||
Af8ByQHIAccB/wHJAcgBxwH/AssByQH/AeYB5QHkAf8B5QHkAeIB/wNlAeUYAAMfAS0BKwE2AWYB/AGd
|
||||
Ab8B7AH/AT8BnAHiAf8BMQGTAd8B/wEuAZEB3wH/ATUBlAHgAf8BlQG4AeoB/wGGAa0B4QH/AR8BgwG7
|
||||
Af8BSwJMAZAMAAFMAYwBogH/ATABxgHwAf8BVQHUAfEB/wGMAeMB9AH/AaIB6wH2Af8BggHfAfQB/wE8
|
||||
AcoB8AH/AQkBtgHtAf8BAAGoAegB/wEAAaIB4gH/AQABmwHbAf8BLQFQAYAB/wgAA1oBvQPaAf8DyAH/
|
||||
A8AB/wO/Af8DvQH/A7oB/wO4Af8DtwH/A7UB/wOzAf8DsAH/A68B/wOzAf8DwgH/A1oBvQgAA04BlQH2
|
||||
AfUB9AH/AeYB5QHkAf8BvwG+Ab0B/wLrAeoB/wHUAdMB0gH/AdYB1QHUAf8B4gLhAf8CtAGzAf8B1wHW
|
||||
AdQB/wHiAeEB3wH/A0oBjQwAAysBQgNIAYQBVQJXAbcBTAJfAfMBTAGkAdcB/wGhAcIB7QH/AZ8BwAHt
|
||||
Af8BnQG/Ae0B/wFKAaMB5AH/ATABkgHfAf8BLgGQAd4B/wFRAacB5gH/AZIBtgHoAf8BGQFVAbcB/wM3
|
||||
AVoIAAFPAY8BpQH/ATEBxgHwAf8BVQHUAfIB/wGNAeMB9AH/AaIB6wH2Af8BgwHfAfQB/wE7AcoB8AH/
|
||||
AQkBtgHtAf8BAAGnAegB/wEAAaEB4gH/AQABnAHbAf8BLwFTAYMB/wgAA1oBvQPjAf8D5wH/A+EB/wPg
|
||||
Af8D4AH/A98B/wPfAf8D3gH/A90B/wPdAf8D3AH/A9sB/wPgAf8D0AH/A1oBvQMLAQ8DVQG1A2QB5wHk
|
||||
AeMB4gH/AdEB0AHPAf8C8AHvAf8DrgH/A2QB8QNnAfICrAGrAf8C6AHnAf8CywHKAf8B4AHfAd0B/wNh
|
||||
AeQDVQG1AwsBDwNMAZMBOgGXAc8B/wFRAagB2QH/AY0BtAHiAf8BowHEAe0B/wGnAccB7gH/AToBlwHN
|
||||
Af8BCgFLAbIB/wE1AZMByQH/AZ8BwAHtAf8BTgGWAaMB/wGeAZYBHgH/AVIBlAGRAf8BjQGzAekB/wFP
|
||||
AaUB2AH/AVoCXgHYCAABUAGSAagB/wExAcUB8AH/AVYB1AHyAf8BjQHjAfQB/wGiAesB9gH/AYIB3wH0
|
||||
Af8BOwHKAfAB/wEJAbYB7QH/AQABpwHoAf8BAAGhAeEB/wEAAZwB2wH/ATEBVgGGAf8IAAMpAT8DzgH/
|
||||
A+wB/wPeAf8D2AH/A9IB/wPMAf8DyAH/A8cB/wPIAf8DywH/A9AB/wPdAf8D6AH/A6QB/wMrAUIDPwFt
|
||||
AuQB4wH/AdgB1gHVAf8B0gHRAdAB/wHFAcQBwwH/Ae0B7AHrAf8DVwG6CAADXAHNAegB5wHmAf8BtgG1
|
||||
AbQB/wHWAdUB0wH/AeIB4QHgAf8C4AHfAf8DPAFmAUgCYgH2Aa4BzQHwAf8BsAHPAfAB/wGYAb8B7AH/
|
||||
AVQBrgHnAf8BqgHKAe8B/wETAVEBuAH/BAABCwFMAbMB/wGiAcMB7QH/AagBlwEHAf8BxAG1ATAB/wGs
|
||||
AZcBAAH/ATEBkwHfAf8BmAG7AesB/wEAAToBnwH/CAABUwGVAasB/wExAcUB8AH/AVYB1AHyAf8BjQHj
|
||||
AfQB/wGiAesB9gH/AYMB3wH0Af8BPAHLAfAB/wEJAbUB7QH/AQABpwHoAf8BAAGhAeIB/wEAAZwB2gH/
|
||||
ATQBWQGIAf8MAANaAb0D4wH/A9sB/wPiAf8BtwHQAbgB/wE6Aa0BPgH/AUwBqgE6Af8BRgGvAT4B/wEs
|
||||
AaUBOAH/AawBxQGsAf8DwgH/A9EB/wPTAf8DWgG9BAADQgF2AewB6wHoAf8B2gHZAdcB/wHUAdMB0QH/
|
||||
AcYBxQHEAf8B3gLcAf8DRgF+CAADUAGaAd0B3AHbAf8ByAHGAcUB/wLiAeEB/wLhAd8B/wHuAe0B7AH/
|
||||
Az8BbwFaAmAB3gGoAckB7QH/AYQBpwHtAf8BLgFAAe0B/wFAAY4B6QH/Aa0BzQHwAf8BQwGdAdIB/wEU
|
||||
AVIBuQH/AT0BmQHOAf8BpQHFAe4B/wGVAZoBPwH/Aa0BlwEAAf8BnQGXASMB/wE8AZsB4gH/AZgBuwHq
|
||||
Af8BSAJiAfYIAAFVAZgBrgH/ATEBxQHwAf8BVgHUAfEB/wGNAeMB9AH/AaIB6wH2Af8BgwHfAfQB/wE8
|
||||
AcoB8AH/AQkBtgHtAf8BAAGoAekB/wEAAaEB4QH/AQABnAHaAf8BNgFbAYoB/wwAAykBPwPRAf8D8wH/
|
||||
AccB3gHKAf8BOgHJAYUB/wGzAdwBpAH/AecBxwFSAf8B3AG/AUkB/wFMAcwBjwH/ASUBrQE+Af8BuAHQ
|
||||
AbgB/wPxAf8DrwH/AysBQgQAAy8BSgNgAesDcgH8Ad4B3QHcAf8BywLKAf8B5gLlAf8DYQHhAzIBUAM4
|
||||
AVwDYAHrAu4B7AH/AcwCywH/AecB5gHlAf8DcgH8A2AB6wMsAUMDUQGcAZIBuQHlAf8BRAFKAfYB/wGB
|
||||
AYQB9QH/AhYB8AH/AZABuwHrAf8BrgHNAfAB/wGsAcwB8AH/AaoBygHwAf8BhQGyAekB/wE0AakBwQH/
|
||||
ARoBswGNAf8BLAGoAbYB/wFGAaEB5AH/AZcBugHoAf8DXQHtCAABWAGbAbAB/wEwAcYB8AH/AVYB1AHy
|
||||
Af8BjQHjAfQB/wGiAesB9gH/AYMB3wH0Af8BPAHKAfAB/wEJAbYB7QH/AQABqAHoAf8BAAGhAeEB/wEA
|
||||
AZwB2gH/ATkBXwGOAf8QAANaAb0DxAH/AUwBzgGLAf8BmQHkAasB/wGwAcUBMwH/AeoBtQEeAf8B4QGi
|
||||
AQ8B/wGlAZ0BFgH/AYIBxQGPAf8BHwGaASwB/wOgAf8DWgG9EAADXgHOAeEB4AHeAf8B2QHXAdYB/wG4
|
||||
ArcB/wHhAeAB3wH/A6gB/QOoAf0C9gH1Af8CwAG/Af8B6gHpAegB/wLzAfIB/wNcAckIAAMjATMBKwFb
|
||||
AXEB/AGSAaQB9QH/AS8BMAH2Af8BJwGGAfQB/wERAaYB+wH/ATIBqwHyAf8BVAGvAecB/wFRAa0B5wH/
|
||||
AU4BqgHmAf8BFQG2AYAB/wE2AcgBlwH/AREBtwFQAf8BUwGsAecB/wGPAbUB4wH/AVoCXgHVCAABWwGf
|
||||
AbMB/wEwAcYB8AH/AVQB1AHxAf8BjAHjAfQB/wGiAesB9gH/AYMB3wH0Af8BPAHKAfAB/wEJAbYB7QH/
|
||||
AQABpwHoAf8BAAGhAeEB/wEAAZsB2gH/ATsBYgGQAf8YAAFYAXQBYwH8AaIB6QGVAf8B1gHPAT8B/wHi
|
||||
AbMBHQH/AdEBuwElAf8BwgGuARgB/wGCAb0BQgH/ASsBaQFAAfwYAANMAZEB4wHiAeAB/wLeAdwB/wHh
|
||||
AeAB3wH/AcwCywH/AcQBwwHCAf8CzwHOAf8C3gHdAf8C8AHvAf8C8AHvAf8C9gH1Af8DSAGHDAADSQGH
|
||||
AYYBrwHhAf8BuQHXAfMB/wEIAaYB/gH/AUIBvwL/AQEBowL/ATwBvgHwAf8BEAHOAfsB/wEwAb4B8QH/
|
||||
ASgBswGgAf8BEQG3AU8B/wEdAbMBkAH/AacByAHuAf8BTQGlAdYB/wFPAlEBnAgAAVwBoQG1Af8BVgHV
|
||||
AfQB/wGaAegB9wH/AbUB8wH6Af8BwgH4AfwB/wHDAfgB/QH/AcEB9wH9Af8BrwHwAfsB/wGPAeIB9wH/
|
||||
AVUB0AHwAf8BKQG4AeUB/wE+AWUBkwH/GAABWgF0AWQB/AGiAfABnwH/AdgB7QGvAf8B3gHFAT4B/wG0
|
||||
AeIBOwH/ATYB5wEPAf8BQQHXAUEB/wErAWsBVQH8FAADAQECA18B4wHlAeQB4QH/Au4B7QH/Au4B7QH/
|
||||
AusB6gH/AeMB4gHhAf8C6AHnAf8C6gHpAf8C8wHyAf8C9QH0Af8B+gH5AfgB/wNcAd8MAAMEAQYDUQGf
|
||||
AYUBrgHhAf8BMAGyAfkB/wEBAaMC/wEWAakB+wH/AQYB0wH+Af8BQgHiAv8BAQHVAv8BVQGwAegB/wFS
|
||||
Aa0B5wH/AakBygHvAf8BpQHFAe0B/wErAT4BaAH8AyEBMAgAAV8BowG4Af8BxQH5Af0B/wHFAfkB/QH/
|
||||
AcUB+QH9Af8BxQH5Af0B/wHFAfkB/QH/AcUB+QH9Af8BxQH5Af0B/wHFAfkB/QH/AcUB+QH9Af8BxQH5
|
||||
Af0B/wFAAWgBlQH/GAADYQHcAcgB9wHUAf8B2AH2AcoB/wHnAeMBqQH/AdsBzwFCAf8BrwHcAT4B/wGd
|
||||
AeoBqwH/A18B4BgAA0ABbwN/Af4DZAHnA18B8wHoAecB5gH/AecB5gHlAf8C7QHsAf8C+wH6Af8DZwHy
|
||||
A2QB5wN/Af4DPQFoFAADQgF1AV8CYgH2AY4BtgHjAf8BuQHXAfMB/wEzAdUB+wH/AQAB1QL/ARcB0QH7
|
||||
Af8BswHSAfIB/wGxAdAB8QH/AZIBuAHiAf8BOAGVAcwB/wNKAYoMAAG3AdcB4QH/AYwBvQHMAf8BnQHP
|
||||
AdsB/wGtAd8B6AH/AbkB7AHzAf8BwgH1AfoB/wHCAfUB+gH/AbgB6wHxAf8BqQHaAeMB/wGUAcQB0QH/
|
||||
AWYBqAG4Af8BqQHFAdEB/xgAAy0BRQFNAXABZwH6AdsB+AHpAf8B5wHyAdgB/wHtAeUBswH/Ad8B2QGm
|
||||
Af8BXwF/AV8B+wMyAVAgAAMPARQDCgEOA1MBqgHvAe4B7QH/AvQB8wH/A1IBpAMIAQsDEQEXIAADFgEe
|
||||
A1QBrgFMAaMB3AH/AZEBuAHkAf8BqAHKAewB/wGlAccB7AH/AY0BtQHiAf8BPgGaAdIB/wFaAl8B2wMx
|
||||
AU4QAAL+Av8B4wHxAfQB/wG5AdcB4QH/AZUBvgHMAf8BZgGoAbsB/wFZAZsBsAH/AVUBmAGtAf8BXgGh
|
||||
AbMB/wGMAbIBwgH/AbEBzQHXAf8B3wHrAe8B/wP+Af8cAAMuAUcDXgHZAV4BdAFiAfwBXgFzAV4B/ANe
|
||||
Ad0DMgFQLAADLwFKA10B8ANiAe8DLAFDMAADKwFCA0wBkAFbAl0B0gFZAlwBzwNOAZkDLQFFHAADEQEX
|
||||
A1YBswFTAVQBUwGstAADBAEFAxABFQMfAS0DKQE/Ay8BSQMuAUgDKAE9Ax4BKwMPARQDAwEEEAADtwH/
|
||||
AZwBqAGeAf8BAAFNASgB/wESAZIBSgH/AQABUQEoAf8BAAE+AaAB/wEAATwBngH/AQABOQGbAf8BAAE3
|
||||
AZkB/wEAATUBlwH/AQABMgGUAf8BAAExAZMB/wNCAf8DQgH/CAABVwFQAU0BjwFwAWABVQG1AaQBcgFU
|
||||
Ae4BuQF2AVAB/wG1AXQBTgH/AbMBcwFOAf8BsAFxAU0B/wGsAW8BTAH/AakBbgFMAf8BpwFsAUsB/wGm
|
||||
AWsBSgH/AaABbQFMAf4BlQFoAVEB8QF1AWEBVAHETAADBQEHAx8BLAI+AT0BagJSAVABowFbAlkBxAFd
|
||||
AloB0wFdAloB0wFbAlkBwwFSAlEBoQM8AWYDHAEoAwQBBgwAAxUBHQNRAaIBFwGVAU4B/wGCAb4BqgH/
|
||||
ASYBpQGCAf8BBwGXAUAB/wEKAZkBRQH/AQ4BmQFJAf8BEgGdAU4B/wFMAaoB0gH/AUoBqAHRAf8BAAEz
|
||||
AZUB/xAAAZYBcgFVAd4w/wGSAWkBUAHtSwABAQMSARgDPgFrAV0CWQHXAUYCKwH8AawBIwEAAf8B4QFD
|
||||
ARcB/wHkAVUBKwH/AdMBQQEPAf8BowJAAf0BYQJeAdoCPgE9AWoDDwEUCAADGAEiAVABUgFQAaQDVgGz
|
||||
AUMBrAGfAf8BSgG3AZ4B/wFUAbsBrAH/AVQBuwGuAf8BVQG7AbAB/wGAAbwBswH/AQ0BmgFRAf8BKgGV
|
||||
AccB/wFNAasB0wH/AQABNgGYAf8QAAG8AX8BVwH+BP8BrgFkASkB/wGsAWEBKAH/AawBYQEoBf8BUwGq
|
||||
AVoB/wFOAaUBVAH/AUkBoAFPAf8BRAGbAUkB/wFBAZcBRgH/AT0BkwFCBf8BoQFuAU0B/kwAAxsBJgNZ
|
||||
AdIBEwIAAf8BigEyARoB/wHKAYYBPAH/AfYBvAGcAf8B+QHMAbcB/wHjAaABTgH/AbEBTQEzAf8BTwEp
|
||||
AQoB/wFeAlgB3QMcASgIAAFVAVYBVQGxA1YBswNWAbMBMgGkAZEB/wFFAbYBmwH/AT4BsgGbAf8BQAGy
|
||||
AZ4B/wFCAbMBoQH/AYUBvwG2Af8BFAGeAYIB/wEvAZkByQH/AVEBrQHUAf8BAAE6AZwB/xAAAcMBhQFX
|
||||
Bf8BrgFkASkB/wHNAZ4BcQH/AawBYQEoBf8BSAGeAU0B/wFtAckBeAH/AW0ByQF4Af8BbAHIAXcB/wFr
|
||||
AccBdQH/ATsBkgFABf8BpwFuAUwB/wQAA50B/wOdAf8DnQH/A50B/wOdAf8DnQH/A50B/wOdAf8DnQH/
|
||||
A50B/wOdAf8DnQH/A50B/wOdAf8DnQH/A50B/wgAAVMCTwGlASoBDwEAAf8BTwE6ASUB/wGPAUwBNwH/
|
||||
AawBiAFBAf8BwgGjAYgB/wHBAaUBjgH/AbMBmAGBAf8BkQFMATYB/wFKATEBHAH/ATkBEgEAAf8BVgJV
|
||||
AbEIAAMIAQsDVQGyA1YBswFMAbIBqAH/AVMBvQGnAf8BhwHBAbUB/wGGAcEBtgH/AYcBwQG3Af8BiAHB
|
||||
AbkB/wEaAaIBiAH/ATQBnAHLAf8BVQGwAdUB/wEAAT0BnwH/EAABxAGFAVgF/wGuAWQBKQH/Ac0BnwFy
|
||||
Af8BrAFhASgF/wFLAaIBUQH/AXABygF6Af8BbwHKAXoB/wFuAckBeQH/AWwByAF3Af8BPgGUAUMF/wGr
|
||||
AW8BTQH/BAADnQH/AboCvQH/AeYC7AH/AeYC7QH/AecC7QH/AegC7gH/AekC7wH/AekC7wH/AeoC7wH/
|
||||
AeoC8AH/AesC8AH/AesC8QH/AewC8QH/AewC8QH/Ab0CvwH/A50B/wQAAzkBXwFLASsBEAH/AcMBsQGi
|
||||
Af8BtgGcAYMB/wGmAU8BIgH/AagBTQEfAf8BwwGkAYcB/wHYAcYBsAH/Ab0BqQGLAf8BVQE1ARUB/wEy
|
||||
ARIBAAH/ASgBBAEAAf8BLwEIAQAB/wMzAVMIAAMGAQgDVQGyASUBoAGKAf8BkwHJAboB/wE1Aa8BlwH/
|
||||
ARoBogGDAf8BGwGjAYcB/wEdAaQBiwH/ARwBqgGSAf8BKgHCAe0B/wGBAbQB1wH/AQABQQGjAf8QAAHH
|
||||
AYcBVwX/AbMBawEwAf8B0AGkAXsB/wGxAWkBKwX/AU0BpAFTAf8BcQHLAXsB/wFwAcsBegH/AW8BygF5
|
||||
Af8BbQHJAXgB/wFBAZgBRgX/AbEBcwFOAf8IAANcAeoB2wLiAf8BzQLPAf8DywH/A8wB/wPOAf8DzwH/
|
||||
A9AB/wPSAf8D0wH/A9UB/wHXAtgB/wHnAuwB/wNtAfcEAAMiATEBVgJVAbEBPQERAQAB/wGqAYUBNQH/
|
||||
AbIBSAEGAf8BrQElAQAB/wG6AUIBAAH/AeoB1QG/Af8B/QH8AfoB/wHWAb4BpgH/AZABNQECAf8BOAEG
|
||||
AQAB/wE5ARYBAAH/ATIBEgEAAf8DVwHFAxwBJwgAAwQBBgELAZQBTQH/AUQBuQGeAf8BHwGmAYkB/wFP
|
||||
AbEB1QH/AUsBrQHUAf8BRwGrAdIB/wE1AboB5AH/AQABmQE/Af8BAAGOAS4B/wEAAUYBmgH/EAAByAGJ
|
||||
AVgF/wG2AXMBPQH/AdEBpQGCAf8BtQFwATUF/wFPAacBVgH/AXABywF6Af8BcAHLAXoB/wFvAcoBeQH/
|
||||
AW0ByQF4Af8BRAGbAUoF/wG1AXUBUAH/CAADXAHqAdkC4QH/AcsCzAH/A8cB/wPIAf8DygH/A8sB/wPN
|
||||
Af8DzgH/A9AB/wPRAf8B0wLUAf8B5QLrAf8DbQH3BAADLgFHA1kB7AE4AQYBAAH/AZkBJQEAAf8BuAE9
|
||||
AQAB/wHCATkBAAH/AckBSwEAAf8B5gG/AZQB/wHsAdQBtgH/Ac0BnAE4Af8BqAFCAQIB/wGZAUMBFwH/
|
||||
AaMBjAFIAf8BVQE8ASUB/wJRAT8B9wE1AjQBVQwAAS4BjgHEAf8BKAGsAYsB/wElAaoBjwH/AVQBtQHY
|
||||
Af8BUAGyAdYB/wFNAa8B1QH/AUkBrAHTAf8BAAGQATgB/wEvAagBhAH/AQABTgEpAf8DFAEbDAABygGL
|
||||
AVkF/wG7AXwBUQH/AbkBegFJAf8BuQF5AUcF/wFDAZoBSQH/AVABpwFWAf8BTgGlAVQB/wFMAaMBUgH/
|
||||
AUoBoQFQAf8BRwGeAU0F/wG4AXkBUQH/CAADXAHqAdcC3wH/AccCyQH/A8IB/wPEAf8DxQH/A8gB/wPJ
|
||||
Af8DygH/A8wB/wPNAf8B0ALRAf8B4wLqAf8DbQH3BAADOQFfAkABLQH9AUoBEQEAAf8BrgEvAQAB/wHA
|
||||
ATcBAAH/AecBlgEcAf8B6AGyAVAB/wHkAbEBUAH/AdIBiQEPAf8BvQE8AQAB/wGoASoBAAH/AbgBjQEz
|
||||
Af8B1AHDAbIB/wGYAYQBRAH/ATEBEwEAAf8BPgI9AWoMAAE0AZEByQH/AaQBzAHkAf8BhwG7AdsB/wEV
|
||||
AaEBUAH/AQ8BnAFKAf8BCgGaAUYB/wEFAZYBQAH/ASEBowGBAf8BhAHAAasB/wEYAZYBTwH/A1EBogMV
|
||||
AR0IAAHGAYgBXAH+MP8BuwF7AVIB/wgAA1wB6gHWAt8B/wHDAsUB/wPAAf8DwAH/A8IB/wPDAf8DxAH/
|
||||
A8UB/wPIAf8DyQH/A80B/wHgAugB/wNtAfcEAAM3AVoCTQEoAfoBgwEcAQAB/wHLAUYBAAH/AeUBiwET
|
||||
Af8B/gG2AUgC/wHjAcIB/wH0AbwBhQH/AdYBTQEAAf8BxQFEAQAB/wG6ATkBAAH/Aa8BTQEPAf8BrgGI
|
||||
ATMB/wGUAUwBMwH/ATIBFAEAAf8DPAFmDAABOQGVAc0B/wGoAc8B5QH/AYwBvwHdAf8BGwGlAYEB/wGN
|
||||
AcUBuAH/AYkBwwG0Af8BhgHBAbEB/wGEAb8BrwH/AU0BuQGfAf8BRAGtAaAB/wNWAbMBUAFSAVABpAMY
|
||||
ASIEAAHBAYgBWAH6BP8B7QHDAZoB/wHtAcMBmgH/Ae0BwwGaAf8B7QHDAZoB/wHtAcMBmgH/Ae0BwwGa
|
||||
Af8B7QHDAZoB/wHtAcMBmgH/Ae0BwwGaAf8B7QHDAZoF/wG9AYABVAH/CAADYAHWAccCzQH/AdsC5AH/
|
||||
AdsC5AH/AdsC5QH/AdwC5QH/AdwC5QH/Ad0C5gH/Ad0C5gH/Ad4C5wH/Ad8C6AH/AeAC6AH/Ac0C0wH/
|
||||
A18B4wQAAyYBOQFgAloB3gGOASQBAAH/AewBngEpAf8B/gG/AYUC/wHMAaEC/wHfAbsB/wH+AcIBVQH/
|
||||
AeIBjgEfAf8B0wGEARAB/wHKAU8BAgH/AbUBRgEAAf8BlwE3AQAB/wGBATQBDwH/A1kB7AMuAUgMAAE9
|
||||
AZgB0AH/AasB0QHnAf8BkAHCAd8B/wEiAakBiAH/AZEByQG7Af8BTAG6AaUB/wFIAbgBoQH/AUQBtgGe
|
||||
Af8BSAG4AZ0B/wEzAaUBkgH/A1YBswNWAbMBVQFWAVUBsQQAAbYBhwFdAfAE/wHtAcMBmwH/AfQB2gHA
|
||||
Af8B9AHaAcAB/wH0AdsBwQH/AfQB2wHBAf8B9AHbAcEB/wH0AdsBwQH/AfQB2wHBAf8B9AHbAcEB/wHt
|
||||
AcMBmgX/AbsBfwFXAf4IAAMsAUMDWwHIA50B/wOdAf8DnQH/A50B/wOdAf8DnQH/A50B/wOdAf8DnQH/
|
||||
A50B/wNeAd0DMQFOBAADCQEMA0sBjgHAAUQBAwL/AbwBVQH/AfoBzgGnAf8B+AHbAb4C/wHiAcYC/wG+
|
||||
AYYB/wH0AawBSwH/AewBwgGaAf8B4gG1AYsB/wG4AUsBCQH/AZ0BOgECAf8BiAE6ARYB/wNPAaUDEAEV
|
||||
DAABQQGbAdMB/wGuAdQB6AH/AasB0wHoAf8BLwGxAZAB/wGbAc4BwAH/AZkBzQG9Af8BlgHLAbsB/wGV
|
||||
AcoBuQH/AYABvwGoAf8BTQGzAakB/wNWAbMDVQGyAwgBCwQAAZcBegFeAdgE/wHtAcMBmwH/Ae0BwwGb
|
||||
Af8B7QHDAZsB/wHtAcMBmgH/Ae0BwwGaAf8B7QHDAZoB/wHtAcMBmgH/Ae0BwwGaAf8B7QHDAZoB/wHt
|
||||
AcMBmgX/AbsBhAFcAfhIAAMTARoCZAFTAfEB2AGeAUgB/wHnAdMBwAH/AfwB9QHuAv8B+AHrAv8B5QHC
|
||||
Af8B9gG5AYIB/wHyAdIBuAH/Ae4B0gG2Af8BwgGGASQB/wGnAUwBHQH/Ak0BKQH6Ax0BKRAAAUQBnQHV
|
||||
Af8BQgGbAdMB/wE/AZoB0gH/AR8BoQGMAf8BGgGfAYoB/wEXAZ0BhQH/ARMBmQGAAf8BLAGlAZIB/wFV
|
||||
AbgBsQH/ASYBoQGLAf8DVQGyAwYBCAgAAWEBWQFSAZsw/wHWAakBiAH/TAADNQFXAakBOAEKAf8BygG4
|
||||
AagG/wH+AfwC/wH2AeIB/wH7AcUBoAH/AeQBuQGVAf8B2wGsAVMB/wHDAY4BMgH/AZMBOgEOAf8BPgI9
|
||||
AWowAAFTAlQBrANWAbMDVgGzAwQBBgwAAUYBQwFBAXEBWQFTAU4BkAGLAXMBXAHMAc4BkgFcAf8ByAGN
|
||||
AV4B/gHNAZEBXAH/AcwBjwFcAf8BzQGRAV4B/wHNAZIBYAH/AcsBkAFeAf8BsAGDAVsB7wGJAXIBXgHL
|
||||
AdgBrQGKAf8B1wGrAYoB/1AAAzIBUQJkAVkB7AHQAbIBlQH/AewB4AHZAf8B5gHVAcQB/wHTAbABlAH/
|
||||
AdMBpgFNAf8BywGPASsB/wFnAWUBWQHyAToCOQFgNAABUwJUAawDVgGzAwQBBpwAAxEBFwNEAXoCWgFX
|
||||
AcUCZQFeAeUCYQFYAeYCXAFZAckCSAFHAYMDFQEdEAABQgFNAT4HAAE+AwABKAMAAUADAAEwAwABAQEA
|
||||
AQEFAAGAAQEWAAP/gQAB4AEHAgAB/AE/Av8BwAEDAgAB/AE/AfwBHwHAAQMCAAHAAQMB+AEHAcABAwIA
|
||||
AcABAwH4AQMBwAEDAgABwAEDAfABAQHAAQMCAAHAAQMBgAEAAcABAwYAAcABAwIAAQEBgAEBAQABwAED
|
||||
AYACAQGAAgABwAEDAYABAQQAAcABAwHAAQMBwAEDAgABwAEDAfABDwHAAQMBgAEAAcABAwHwAQ8BgAED
|
||||
AYABAAHAAQMB8AEPAcABAwHgAQEBwAEDAfABDwHwAQ8B8AEDAcABAwH4AR8B/AE/AfwBDwHjBf8B4AEH
|
||||
AYABAQGAAQEC/wHAAQMBgAEHAYABAQL/AYABAwEAAQcBgAEBAv8BwAEDAQABBwGAAQECAAHAAQMBAAEH
|
||||
AYABAQIAAYABAQGAAQcBgAEBAYABAQIAAcABBwGAAQEBgAEBAgAB4AEDAYABAQGAAQECAAHgAQEBgAEB
|
||||
AYABAQIAAeABAAGAAQEBgAEBAgAB4AEAAYABAQGAAQECAAHgAQABgAEBAv8BgAEBAeABAQGAAQEC/wHA
|
||||
AQMB/wHDAYABAQL/AeABBwH/AccE/wHwAQ8L
|
||||
</value>
|
||||
</data>
|
||||
<metadata name="dlgColor.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>140, 17</value>
|
||||
</metadata>
|
||||
</root>
|
||||
@@ -1,6 +1,12 @@
|
||||
Imports mRemoteNG.My
|
||||
Imports System.IO
|
||||
Imports System.ComponentModel
|
||||
Imports mRemoteNG.Messages
|
||||
Imports mRemoteNG.My
|
||||
Imports mRemoteNG.Tools
|
||||
Imports PSTaskDialog
|
||||
Imports WeifenLuo.WinFormsUI.Docking
|
||||
Imports mRemoteNG.App.Runtime
|
||||
Imports mRemoteNG.Themes
|
||||
|
||||
Public Class frmOptions
|
||||
Inherits System.Windows.Forms.Form
|
||||
@@ -73,10 +79,8 @@ Public Class frmOptions
|
||||
Friend WithEvents chkMinimizeToSystemTray As System.Windows.Forms.CheckBox
|
||||
Friend WithEvents chkShowSystemTrayIcon As System.Windows.Forms.CheckBox
|
||||
Friend WithEvents chkShowFullConnectionsFilePathInTitle As System.Windows.Forms.CheckBox
|
||||
Friend WithEvents chkConfirmCloseConnection As System.Windows.Forms.CheckBox
|
||||
Friend WithEvents chkSaveConsOnExit As System.Windows.Forms.CheckBox
|
||||
Friend WithEvents chkProperInstallationOfComponentsAtStartup As System.Windows.Forms.CheckBox
|
||||
Friend WithEvents chkConfirmExit As System.Windows.Forms.CheckBox
|
||||
Friend WithEvents chkSingleInstance As System.Windows.Forms.CheckBox
|
||||
Friend WithEvents chkReconnectOnStart As System.Windows.Forms.CheckBox
|
||||
Friend WithEvents tcTabControl As System.Windows.Forms.TabControl
|
||||
@@ -110,17 +114,31 @@ Public Class frmOptions
|
||||
Friend WithEvents lblSQLDatabaseName As System.Windows.Forms.Label
|
||||
Friend WithEvents txtSQLDatabaseName As System.Windows.Forms.TextBox
|
||||
Friend WithEvents chkAlwaysShowPanelTabs As System.Windows.Forms.CheckBox
|
||||
Friend WithEvents chkIdentifyQuickConnectTabs As System.Windows.Forms.CheckBox
|
||||
Friend WithEvents pnlConfirmCloseConnection As System.Windows.Forms.Panel
|
||||
Friend WithEvents lblClosingConnections As System.Windows.Forms.Label
|
||||
Friend WithEvents radCloseWarnAll As System.Windows.Forms.RadioButton
|
||||
Friend WithEvents radCloseWarnMultiple As System.Windows.Forms.RadioButton
|
||||
Friend WithEvents radCloseWarnExit As System.Windows.Forms.RadioButton
|
||||
Friend WithEvents radCloseWarnNever As System.Windows.Forms.RadioButton
|
||||
Friend WithEvents tabTheme As System.Windows.Forms.TabPage
|
||||
Friend WithEvents ThemePropertyGrid As System.Windows.Forms.PropertyGrid
|
||||
Friend WithEvents dlgColor As System.Windows.Forms.ColorDialog
|
||||
Friend WithEvents btnThemeNew As System.Windows.Forms.Button
|
||||
Friend WithEvents cboTheme As System.Windows.Forms.ComboBox
|
||||
Friend WithEvents btnThemeDelete As System.Windows.Forms.Button
|
||||
Private components As System.ComponentModel.IContainer
|
||||
|
||||
Private Sub InitializeComponent()
|
||||
Me.components = New System.ComponentModel.Container()
|
||||
Dim ListViewItem1 As System.Windows.Forms.ListViewItem = New System.Windows.Forms.ListViewItem("Startup/Exit", 0)
|
||||
Dim ListViewItem2 As System.Windows.Forms.ListViewItem = New System.Windows.Forms.ListViewItem("Appearance", 1)
|
||||
Dim ListViewItem3 As System.Windows.Forms.ListViewItem = New System.Windows.Forms.ListViewItem("Tabs & Panels", 2)
|
||||
Dim ListViewItem4 As System.Windows.Forms.ListViewItem = New System.Windows.Forms.ListViewItem("Connections", 3)
|
||||
Dim ListViewItem5 As System.Windows.Forms.ListViewItem = New System.Windows.Forms.ListViewItem("SQL Server", 4)
|
||||
Dim ListViewItem6 As System.Windows.Forms.ListViewItem = New System.Windows.Forms.ListViewItem("Updates", 5)
|
||||
Dim ListViewItem7 As System.Windows.Forms.ListViewItem = New System.Windows.Forms.ListViewItem("Advanced", 6)
|
||||
Dim ListViewItem1 As System.Windows.Forms.ListViewItem = New System.Windows.Forms.ListViewItem("Startup/Exit", "StartupExit_Icon.ico")
|
||||
Dim ListViewItem2 As System.Windows.Forms.ListViewItem = New System.Windows.Forms.ListViewItem("Appearance", "Panels_Icon.ico")
|
||||
Dim ListViewItem3 As System.Windows.Forms.ListViewItem = New System.Windows.Forms.ListViewItem("Tabs & Panels", "Tab_Icon.ico")
|
||||
Dim ListViewItem4 As System.Windows.Forms.ListViewItem = New System.Windows.Forms.ListViewItem("Connections", "Root_Icon.ico")
|
||||
Dim ListViewItem5 As System.Windows.Forms.ListViewItem = New System.Windows.Forms.ListViewItem("SQL Server", "database.bmp")
|
||||
Dim ListViewItem6 As System.Windows.Forms.ListViewItem = New System.Windows.Forms.ListViewItem("Updates", "Update_Icon.ico")
|
||||
Dim ListViewItem7 As System.Windows.Forms.ListViewItem = New System.Windows.Forms.ListViewItem("Advanced", "Config_Icon.ico")
|
||||
Dim ListViewItem8 As System.Windows.Forms.ListViewItem = New System.Windows.Forms.ListViewItem("Theme", "Appearance_Icon.ico")
|
||||
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(frmOptions))
|
||||
Me.btnOK = New System.Windows.Forms.Button()
|
||||
Me.btnCancel = New System.Windows.Forms.Button()
|
||||
@@ -191,15 +209,14 @@ Public Class frmOptions
|
||||
Me.lblLanguageRestartRequired = New System.Windows.Forms.Label()
|
||||
Me.chkReconnectOnStart = New System.Windows.Forms.CheckBox()
|
||||
Me.chkSingleInstance = New System.Windows.Forms.CheckBox()
|
||||
Me.chkConfirmExit = New System.Windows.Forms.CheckBox()
|
||||
Me.chkProperInstallationOfComponentsAtStartup = New System.Windows.Forms.CheckBox()
|
||||
Me.chkSaveConsOnExit = New System.Windows.Forms.CheckBox()
|
||||
Me.chkConfirmCloseConnection = New System.Windows.Forms.CheckBox()
|
||||
Me.tcTabControl = New System.Windows.Forms.TabControl()
|
||||
Me.tabStartupExit = New System.Windows.Forms.TabPage()
|
||||
Me.tabAppearance = New System.Windows.Forms.TabPage()
|
||||
Me.tabTabsAndPanels = New System.Windows.Forms.TabPage()
|
||||
Me.chkAlwaysShowPanelTabs = New System.Windows.Forms.CheckBox()
|
||||
Me.chkIdentifyQuickConnectTabs = New System.Windows.Forms.CheckBox()
|
||||
Me.tabConnections = New System.Windows.Forms.TabPage()
|
||||
Me.pnlDefaultCredentials = New System.Windows.Forms.Panel()
|
||||
Me.radCredentialsCustom = New System.Windows.Forms.RadioButton()
|
||||
@@ -212,6 +229,12 @@ Public Class frmOptions
|
||||
Me.lblCredentialsPassword = New System.Windows.Forms.Label()
|
||||
Me.txtCredentialsUsername = New System.Windows.Forms.TextBox()
|
||||
Me.lblCredentialsDomain = New System.Windows.Forms.Label()
|
||||
Me.pnlConfirmCloseConnection = New System.Windows.Forms.Panel()
|
||||
Me.lblClosingConnections = New System.Windows.Forms.Label()
|
||||
Me.radCloseWarnAll = New System.Windows.Forms.RadioButton()
|
||||
Me.radCloseWarnMultiple = New System.Windows.Forms.RadioButton()
|
||||
Me.radCloseWarnExit = New System.Windows.Forms.RadioButton()
|
||||
Me.radCloseWarnNever = New System.Windows.Forms.RadioButton()
|
||||
Me.tabSQLServer = New System.Windows.Forms.TabPage()
|
||||
Me.lblSQLDatabaseName = New System.Windows.Forms.Label()
|
||||
Me.txtSQLDatabaseName = New System.Windows.Forms.TextBox()
|
||||
@@ -226,6 +249,12 @@ Public Class frmOptions
|
||||
Me.lblSQLPassword = New System.Windows.Forms.Label()
|
||||
Me.tabUpdates = New System.Windows.Forms.TabPage()
|
||||
Me.tabAdvanced = New System.Windows.Forms.TabPage()
|
||||
Me.tabTheme = New System.Windows.Forms.TabPage()
|
||||
Me.btnThemeDelete = New System.Windows.Forms.Button()
|
||||
Me.btnThemeNew = New System.Windows.Forms.Button()
|
||||
Me.cboTheme = New System.Windows.Forms.ComboBox()
|
||||
Me.ThemePropertyGrid = New System.Windows.Forms.PropertyGrid()
|
||||
Me.dlgColor = New System.Windows.Forms.ColorDialog()
|
||||
CType(Me.numPuttyWaitTime, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||
CType(Me.numUVNCSCPort, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||
Me.pnlProxy.SuspendLayout()
|
||||
@@ -243,9 +272,11 @@ Public Class frmOptions
|
||||
Me.tabTabsAndPanels.SuspendLayout()
|
||||
Me.tabConnections.SuspendLayout()
|
||||
Me.pnlDefaultCredentials.SuspendLayout()
|
||||
Me.pnlConfirmCloseConnection.SuspendLayout()
|
||||
Me.tabSQLServer.SuspendLayout()
|
||||
Me.tabUpdates.SuspendLayout()
|
||||
Me.tabAdvanced.SuspendLayout()
|
||||
Me.tabTheme.SuspendLayout()
|
||||
Me.SuspendLayout()
|
||||
'
|
||||
'btnOK
|
||||
@@ -275,7 +306,7 @@ Public Class frmOptions
|
||||
Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles)
|
||||
Me.lvPages.FullRowSelect = True
|
||||
Me.lvPages.HideSelection = False
|
||||
Me.lvPages.Items.AddRange(New System.Windows.Forms.ListViewItem() {ListViewItem1, ListViewItem2, ListViewItem3, ListViewItem4, ListViewItem5, ListViewItem6, ListViewItem7})
|
||||
Me.lvPages.Items.AddRange(New System.Windows.Forms.ListViewItem() {ListViewItem1, ListViewItem2, ListViewItem3, ListViewItem4, ListViewItem5, ListViewItem6, ListViewItem7, ListViewItem8})
|
||||
Me.lvPages.LabelWrap = False
|
||||
Me.lvPages.LargeImageList = Me.imgListPages
|
||||
Me.lvPages.Location = New System.Drawing.Point(12, 12)
|
||||
@@ -293,12 +324,13 @@ Public Class frmOptions
|
||||
Me.imgListPages.ImageStream = CType(resources.GetObject("imgListPages.ImageStream"), System.Windows.Forms.ImageListStreamer)
|
||||
Me.imgListPages.TransparentColor = System.Drawing.Color.Fuchsia
|
||||
Me.imgListPages.Images.SetKeyName(0, "StartupExit_Icon.ico")
|
||||
Me.imgListPages.Images.SetKeyName(1, "Appearance_Icon.ico")
|
||||
Me.imgListPages.Images.SetKeyName(1, "Panels_Icon.ico")
|
||||
Me.imgListPages.Images.SetKeyName(2, "Tab_Icon.ico")
|
||||
Me.imgListPages.Images.SetKeyName(3, "Root_Icon.ico")
|
||||
Me.imgListPages.Images.SetKeyName(4, "database.bmp")
|
||||
Me.imgListPages.Images.SetKeyName(5, "Update_Icon.ico")
|
||||
Me.imgListPages.Images.SetKeyName(6, "Config_Icon.ico")
|
||||
Me.imgListPages.Images.SetKeyName(7, "Appearance_Icon.ico")
|
||||
'
|
||||
'lblMaximumPuttyWaitTime
|
||||
'
|
||||
@@ -427,7 +459,7 @@ Public Class frmOptions
|
||||
'chkEncryptCompleteFile
|
||||
'
|
||||
Me.chkEncryptCompleteFile.AutoSize = True
|
||||
Me.chkEncryptCompleteFile.Location = New System.Drawing.Point(2, 26)
|
||||
Me.chkEncryptCompleteFile.Location = New System.Drawing.Point(3, 26)
|
||||
Me.chkEncryptCompleteFile.Name = "chkEncryptCompleteFile"
|
||||
Me.chkEncryptCompleteFile.Size = New System.Drawing.Size(180, 17)
|
||||
Me.chkEncryptCompleteFile.TabIndex = 1
|
||||
@@ -665,7 +697,7 @@ Public Class frmOptions
|
||||
Me.pnlAutoSave.Controls.Add(Me.lblAutoSave2)
|
||||
Me.pnlAutoSave.Location = New System.Drawing.Point(3, 107)
|
||||
Me.pnlAutoSave.Name = "pnlAutoSave"
|
||||
Me.pnlAutoSave.Size = New System.Drawing.Size(500, 29)
|
||||
Me.pnlAutoSave.Size = New System.Drawing.Size(596, 29)
|
||||
Me.pnlAutoSave.TabIndex = 4
|
||||
'
|
||||
'lblAutoSave1
|
||||
@@ -721,7 +753,7 @@ Public Class frmOptions
|
||||
Me.pnlRdpReconnectionCount.Controls.Add(Me.numRdpReconnectionCount)
|
||||
Me.pnlRdpReconnectionCount.Location = New System.Drawing.Point(3, 72)
|
||||
Me.pnlRdpReconnectionCount.Name = "pnlRdpReconnectionCount"
|
||||
Me.pnlRdpReconnectionCount.Size = New System.Drawing.Size(500, 29)
|
||||
Me.pnlRdpReconnectionCount.Size = New System.Drawing.Size(596, 29)
|
||||
Me.pnlRdpReconnectionCount.TabIndex = 3
|
||||
'
|
||||
'lblRdpReconnectionCount
|
||||
@@ -746,7 +778,7 @@ Public Class frmOptions
|
||||
'chkAlwaysShowPanelSelectionDlg
|
||||
'
|
||||
Me.chkAlwaysShowPanelSelectionDlg.AutoSize = True
|
||||
Me.chkAlwaysShowPanelSelectionDlg.Location = New System.Drawing.Point(3, 118)
|
||||
Me.chkAlwaysShowPanelSelectionDlg.Location = New System.Drawing.Point(3, 141)
|
||||
Me.chkAlwaysShowPanelSelectionDlg.Name = "chkAlwaysShowPanelSelectionDlg"
|
||||
Me.chkAlwaysShowPanelSelectionDlg.Size = New System.Drawing.Size(317, 17)
|
||||
Me.chkAlwaysShowPanelSelectionDlg.TabIndex = 4
|
||||
@@ -766,7 +798,7 @@ Public Class frmOptions
|
||||
'chkDoubleClickClosesTab
|
||||
'
|
||||
Me.chkDoubleClickClosesTab.AutoSize = True
|
||||
Me.chkDoubleClickClosesTab.Location = New System.Drawing.Point(3, 95)
|
||||
Me.chkDoubleClickClosesTab.Location = New System.Drawing.Point(3, 118)
|
||||
Me.chkDoubleClickClosesTab.Name = "chkDoubleClickClosesTab"
|
||||
Me.chkDoubleClickClosesTab.Size = New System.Drawing.Size(159, 17)
|
||||
Me.chkDoubleClickClosesTab.TabIndex = 3
|
||||
@@ -797,7 +829,7 @@ Public Class frmOptions
|
||||
'
|
||||
Me.chkMCWarnings.AutoSize = True
|
||||
Me.chkMCWarnings.Enabled = False
|
||||
Me.chkMCWarnings.Location = New System.Drawing.Point(19, 233)
|
||||
Me.chkMCWarnings.Location = New System.Drawing.Point(19, 256)
|
||||
Me.chkMCWarnings.Name = "chkMCWarnings"
|
||||
Me.chkMCWarnings.Size = New System.Drawing.Size(71, 17)
|
||||
Me.chkMCWarnings.TabIndex = 8
|
||||
@@ -808,7 +840,7 @@ Public Class frmOptions
|
||||
'
|
||||
Me.chkMCErrors.AutoSize = True
|
||||
Me.chkMCErrors.Enabled = False
|
||||
Me.chkMCErrors.Location = New System.Drawing.Point(19, 256)
|
||||
Me.chkMCErrors.Location = New System.Drawing.Point(19, 279)
|
||||
Me.chkMCErrors.Name = "chkMCErrors"
|
||||
Me.chkMCErrors.Size = New System.Drawing.Size(53, 17)
|
||||
Me.chkMCErrors.TabIndex = 9
|
||||
@@ -819,7 +851,7 @@ Public Class frmOptions
|
||||
'
|
||||
Me.chkMCInformation.AutoSize = True
|
||||
Me.chkMCInformation.Enabled = False
|
||||
Me.chkMCInformation.Location = New System.Drawing.Point(19, 210)
|
||||
Me.chkMCInformation.Location = New System.Drawing.Point(19, 233)
|
||||
Me.chkMCInformation.Name = "chkMCInformation"
|
||||
Me.chkMCInformation.Size = New System.Drawing.Size(83, 17)
|
||||
Me.chkMCInformation.TabIndex = 7
|
||||
@@ -829,7 +861,7 @@ Public Class frmOptions
|
||||
'lblSwitchToErrorsAndInfos
|
||||
'
|
||||
Me.lblSwitchToErrorsAndInfos.AutoSize = True
|
||||
Me.lblSwitchToErrorsAndInfos.Location = New System.Drawing.Point(3, 190)
|
||||
Me.lblSwitchToErrorsAndInfos.Location = New System.Drawing.Point(3, 213)
|
||||
Me.lblSwitchToErrorsAndInfos.Name = "lblSwitchToErrorsAndInfos"
|
||||
Me.lblSwitchToErrorsAndInfos.Size = New System.Drawing.Size(159, 13)
|
||||
Me.lblSwitchToErrorsAndInfos.TabIndex = 6
|
||||
@@ -838,7 +870,7 @@ Public Class frmOptions
|
||||
'chkUseOnlyErrorsAndInfosPanel
|
||||
'
|
||||
Me.chkUseOnlyErrorsAndInfosPanel.AutoSize = True
|
||||
Me.chkUseOnlyErrorsAndInfosPanel.Location = New System.Drawing.Point(3, 165)
|
||||
Me.chkUseOnlyErrorsAndInfosPanel.Location = New System.Drawing.Point(3, 188)
|
||||
Me.chkUseOnlyErrorsAndInfosPanel.Name = "chkUseOnlyErrorsAndInfosPanel"
|
||||
Me.chkUseOnlyErrorsAndInfosPanel.Size = New System.Drawing.Size(278, 17)
|
||||
Me.chkUseOnlyErrorsAndInfosPanel.TabIndex = 5
|
||||
@@ -916,7 +948,7 @@ Public Class frmOptions
|
||||
'chkReconnectOnStart
|
||||
'
|
||||
Me.chkReconnectOnStart.AutoSize = True
|
||||
Me.chkReconnectOnStart.Location = New System.Drawing.Point(3, 75)
|
||||
Me.chkReconnectOnStart.Location = New System.Drawing.Point(3, 27)
|
||||
Me.chkReconnectOnStart.Name = "chkReconnectOnStart"
|
||||
Me.chkReconnectOnStart.Size = New System.Drawing.Size(273, 17)
|
||||
Me.chkReconnectOnStart.TabIndex = 3
|
||||
@@ -926,27 +958,17 @@ Public Class frmOptions
|
||||
'chkSingleInstance
|
||||
'
|
||||
Me.chkSingleInstance.AutoSize = True
|
||||
Me.chkSingleInstance.Location = New System.Drawing.Point(3, 99)
|
||||
Me.chkSingleInstance.Location = New System.Drawing.Point(3, 51)
|
||||
Me.chkSingleInstance.Name = "chkSingleInstance"
|
||||
Me.chkSingleInstance.Size = New System.Drawing.Size(366, 17)
|
||||
Me.chkSingleInstance.TabIndex = 4
|
||||
Me.chkSingleInstance.Text = "Allow only a single instance of the application (mRemote restart required)"
|
||||
Me.chkSingleInstance.UseVisualStyleBackColor = True
|
||||
'
|
||||
'chkConfirmExit
|
||||
'
|
||||
Me.chkConfirmExit.AutoSize = True
|
||||
Me.chkConfirmExit.Location = New System.Drawing.Point(3, 27)
|
||||
Me.chkConfirmExit.Name = "chkConfirmExit"
|
||||
Me.chkConfirmExit.Size = New System.Drawing.Size(221, 17)
|
||||
Me.chkConfirmExit.TabIndex = 1
|
||||
Me.chkConfirmExit.Text = "Confirm exit if there are open connections"
|
||||
Me.chkConfirmExit.UseVisualStyleBackColor = True
|
||||
'
|
||||
'chkProperInstallationOfComponentsAtStartup
|
||||
'
|
||||
Me.chkProperInstallationOfComponentsAtStartup.AutoSize = True
|
||||
Me.chkProperInstallationOfComponentsAtStartup.Location = New System.Drawing.Point(3, 123)
|
||||
Me.chkProperInstallationOfComponentsAtStartup.Location = New System.Drawing.Point(3, 75)
|
||||
Me.chkProperInstallationOfComponentsAtStartup.Name = "chkProperInstallationOfComponentsAtStartup"
|
||||
Me.chkProperInstallationOfComponentsAtStartup.Size = New System.Drawing.Size(262, 17)
|
||||
Me.chkProperInstallationOfComponentsAtStartup.TabIndex = 5
|
||||
@@ -956,23 +978,13 @@ Public Class frmOptions
|
||||
'chkSaveConsOnExit
|
||||
'
|
||||
Me.chkSaveConsOnExit.AutoSize = True
|
||||
Me.chkSaveConsOnExit.Location = New System.Drawing.Point(3, 51)
|
||||
Me.chkSaveConsOnExit.Location = New System.Drawing.Point(3, 3)
|
||||
Me.chkSaveConsOnExit.Name = "chkSaveConsOnExit"
|
||||
Me.chkSaveConsOnExit.Size = New System.Drawing.Size(146, 17)
|
||||
Me.chkSaveConsOnExit.TabIndex = 2
|
||||
Me.chkSaveConsOnExit.Text = "Save connections on exit"
|
||||
Me.chkSaveConsOnExit.UseVisualStyleBackColor = True
|
||||
'
|
||||
'chkConfirmCloseConnection
|
||||
'
|
||||
Me.chkConfirmCloseConnection.AutoSize = True
|
||||
Me.chkConfirmCloseConnection.Location = New System.Drawing.Point(3, 3)
|
||||
Me.chkConfirmCloseConnection.Name = "chkConfirmCloseConnection"
|
||||
Me.chkConfirmCloseConnection.Size = New System.Drawing.Size(176, 17)
|
||||
Me.chkConfirmCloseConnection.TabIndex = 0
|
||||
Me.chkConfirmCloseConnection.Text = "Confirm closing connection tabs"
|
||||
Me.chkConfirmCloseConnection.UseVisualStyleBackColor = True
|
||||
'
|
||||
'tcTabControl
|
||||
'
|
||||
Me.tcTabControl.Controls.Add(Me.tabStartupExit)
|
||||
@@ -982,6 +994,7 @@ Public Class frmOptions
|
||||
Me.tcTabControl.Controls.Add(Me.tabSQLServer)
|
||||
Me.tcTabControl.Controls.Add(Me.tabUpdates)
|
||||
Me.tcTabControl.Controls.Add(Me.tabAdvanced)
|
||||
Me.tcTabControl.Controls.Add(Me.tabTheme)
|
||||
Me.tcTabControl.Location = New System.Drawing.Point(172, 12)
|
||||
Me.tcTabControl.Name = "tcTabControl"
|
||||
Me.tcTabControl.SelectedIndex = 0
|
||||
@@ -992,12 +1005,10 @@ Public Class frmOptions
|
||||
'
|
||||
'tabStartupExit
|
||||
'
|
||||
Me.tabStartupExit.Controls.Add(Me.chkConfirmCloseConnection)
|
||||
Me.tabStartupExit.Controls.Add(Me.chkReconnectOnStart)
|
||||
Me.tabStartupExit.Controls.Add(Me.chkSaveConsOnExit)
|
||||
Me.tabStartupExit.Controls.Add(Me.chkSingleInstance)
|
||||
Me.tabStartupExit.Controls.Add(Me.chkProperInstallationOfComponentsAtStartup)
|
||||
Me.tabStartupExit.Controls.Add(Me.chkConfirmExit)
|
||||
Me.tabStartupExit.Location = New System.Drawing.Point(4, 22)
|
||||
Me.tabStartupExit.Name = "tabStartupExit"
|
||||
Me.tabStartupExit.Size = New System.Drawing.Size(602, 463)
|
||||
@@ -1024,6 +1035,7 @@ Public Class frmOptions
|
||||
'tabTabsAndPanels
|
||||
'
|
||||
Me.tabTabsAndPanels.Controls.Add(Me.chkAlwaysShowPanelTabs)
|
||||
Me.tabTabsAndPanels.Controls.Add(Me.chkIdentifyQuickConnectTabs)
|
||||
Me.tabTabsAndPanels.Controls.Add(Me.chkUseOnlyErrorsAndInfosPanel)
|
||||
Me.tabTabsAndPanels.Controls.Add(Me.chkOpenNewTabRightOfSelected)
|
||||
Me.tabTabsAndPanels.Controls.Add(Me.lblSwitchToErrorsAndInfos)
|
||||
@@ -1051,6 +1063,16 @@ Public Class frmOptions
|
||||
Me.chkAlwaysShowPanelTabs.Text = "Always show panel tabs"
|
||||
Me.chkAlwaysShowPanelTabs.UseVisualStyleBackColor = True
|
||||
'
|
||||
'chkIdentifyQuickConnectTabs
|
||||
'
|
||||
Me.chkIdentifyQuickConnectTabs.AutoSize = True
|
||||
Me.chkIdentifyQuickConnectTabs.Location = New System.Drawing.Point(3, 95)
|
||||
Me.chkIdentifyQuickConnectTabs.Name = "chkIdentifyQuickConnectTabs"
|
||||
Me.chkIdentifyQuickConnectTabs.Size = New System.Drawing.Size(293, 17)
|
||||
Me.chkIdentifyQuickConnectTabs.TabIndex = 10
|
||||
Me.chkIdentifyQuickConnectTabs.Text = Global.mRemoteNG.My.Language.strIdentifyQuickConnectTabs
|
||||
Me.chkIdentifyQuickConnectTabs.UseVisualStyleBackColor = True
|
||||
'
|
||||
'tabConnections
|
||||
'
|
||||
Me.tabConnections.Controls.Add(Me.pnlRdpReconnectionCount)
|
||||
@@ -1059,6 +1081,7 @@ Public Class frmOptions
|
||||
Me.tabConnections.Controls.Add(Me.pnlDefaultCredentials)
|
||||
Me.tabConnections.Controls.Add(Me.chkSingleClickOnOpenedConnectionSwitchesToIt)
|
||||
Me.tabConnections.Controls.Add(Me.pnlAutoSave)
|
||||
Me.tabConnections.Controls.Add(Me.pnlConfirmCloseConnection)
|
||||
Me.tabConnections.Location = New System.Drawing.Point(4, 22)
|
||||
Me.tabConnections.Name = "tabConnections"
|
||||
Me.tabConnections.Size = New System.Drawing.Size(602, 463)
|
||||
@@ -1182,6 +1205,71 @@ Public Class frmOptions
|
||||
Me.lblCredentialsDomain.Text = "Domain:"
|
||||
Me.lblCredentialsDomain.TextAlign = System.Drawing.ContentAlignment.TopRight
|
||||
'
|
||||
'pnlConfirmCloseConnection
|
||||
'
|
||||
Me.pnlConfirmCloseConnection.Controls.Add(Me.lblClosingConnections)
|
||||
Me.pnlConfirmCloseConnection.Controls.Add(Me.radCloseWarnAll)
|
||||
Me.pnlConfirmCloseConnection.Controls.Add(Me.radCloseWarnMultiple)
|
||||
Me.pnlConfirmCloseConnection.Controls.Add(Me.radCloseWarnExit)
|
||||
Me.pnlConfirmCloseConnection.Controls.Add(Me.radCloseWarnNever)
|
||||
Me.pnlConfirmCloseConnection.Location = New System.Drawing.Point(3, 323)
|
||||
Me.pnlConfirmCloseConnection.Name = "pnlConfirmCloseConnection"
|
||||
Me.pnlConfirmCloseConnection.Size = New System.Drawing.Size(596, 137)
|
||||
Me.pnlConfirmCloseConnection.TabIndex = 10
|
||||
'
|
||||
'lblClosingConnections
|
||||
'
|
||||
Me.lblClosingConnections.AutoSize = True
|
||||
Me.lblClosingConnections.Location = New System.Drawing.Point(3, 9)
|
||||
Me.lblClosingConnections.Name = "lblClosingConnections"
|
||||
Me.lblClosingConnections.Size = New System.Drawing.Size(136, 13)
|
||||
Me.lblClosingConnections.TabIndex = 12
|
||||
Me.lblClosingConnections.Text = "When closing connections:"
|
||||
'
|
||||
'radCloseWarnAll
|
||||
'
|
||||
Me.radCloseWarnAll.AutoSize = True
|
||||
Me.radCloseWarnAll.Location = New System.Drawing.Point(16, 31)
|
||||
Me.radCloseWarnAll.Name = "radCloseWarnAll"
|
||||
Me.radCloseWarnAll.Size = New System.Drawing.Size(194, 17)
|
||||
Me.radCloseWarnAll.TabIndex = 11
|
||||
Me.radCloseWarnAll.TabStop = True
|
||||
Me.radCloseWarnAll.Text = "Warn me when closing connections"
|
||||
Me.radCloseWarnAll.UseVisualStyleBackColor = True
|
||||
'
|
||||
'radCloseWarnMultiple
|
||||
'
|
||||
Me.radCloseWarnMultiple.AutoSize = True
|
||||
Me.radCloseWarnMultiple.Location = New System.Drawing.Point(16, 54)
|
||||
Me.radCloseWarnMultiple.Name = "radCloseWarnMultiple"
|
||||
Me.radCloseWarnMultiple.Size = New System.Drawing.Size(254, 17)
|
||||
Me.radCloseWarnMultiple.TabIndex = 10
|
||||
Me.radCloseWarnMultiple.TabStop = True
|
||||
Me.radCloseWarnMultiple.Text = "Warn me only when closing multiple connections"
|
||||
Me.radCloseWarnMultiple.UseVisualStyleBackColor = True
|
||||
'
|
||||
'radCloseWarnExit
|
||||
'
|
||||
Me.radCloseWarnExit.AutoSize = True
|
||||
Me.radCloseWarnExit.Location = New System.Drawing.Point(16, 77)
|
||||
Me.radCloseWarnExit.Name = "radCloseWarnExit"
|
||||
Me.radCloseWarnExit.Size = New System.Drawing.Size(216, 17)
|
||||
Me.radCloseWarnExit.TabIndex = 9
|
||||
Me.radCloseWarnExit.TabStop = True
|
||||
Me.radCloseWarnExit.Text = "Warn me only when exiting mRemoteNG"
|
||||
Me.radCloseWarnExit.UseVisualStyleBackColor = True
|
||||
'
|
||||
'radCloseWarnNever
|
||||
'
|
||||
Me.radCloseWarnNever.AutoSize = True
|
||||
Me.radCloseWarnNever.Location = New System.Drawing.Point(16, 100)
|
||||
Me.radCloseWarnNever.Name = "radCloseWarnNever"
|
||||
Me.radCloseWarnNever.Size = New System.Drawing.Size(226, 17)
|
||||
Me.radCloseWarnNever.TabIndex = 8
|
||||
Me.radCloseWarnNever.TabStop = True
|
||||
Me.radCloseWarnNever.Text = "Do not warn me when closing connections"
|
||||
Me.radCloseWarnNever.UseVisualStyleBackColor = True
|
||||
'
|
||||
'tabSQLServer
|
||||
'
|
||||
Me.tabSQLServer.Controls.Add(Me.lblSQLDatabaseName)
|
||||
@@ -1355,6 +1443,57 @@ Public Class frmOptions
|
||||
Me.tabAdvanced.Text = "Advanced"
|
||||
Me.tabAdvanced.UseVisualStyleBackColor = True
|
||||
'
|
||||
'tabTheme
|
||||
'
|
||||
Me.tabTheme.Controls.Add(Me.btnThemeDelete)
|
||||
Me.tabTheme.Controls.Add(Me.btnThemeNew)
|
||||
Me.tabTheme.Controls.Add(Me.cboTheme)
|
||||
Me.tabTheme.Controls.Add(Me.ThemePropertyGrid)
|
||||
Me.tabTheme.Location = New System.Drawing.Point(4, 22)
|
||||
Me.tabTheme.Name = "tabTheme"
|
||||
Me.tabTheme.Padding = New System.Windows.Forms.Padding(3)
|
||||
Me.tabTheme.Size = New System.Drawing.Size(602, 463)
|
||||
Me.tabTheme.TabIndex = 7
|
||||
Me.tabTheme.Text = "Theme"
|
||||
Me.tabTheme.UseVisualStyleBackColor = True
|
||||
'
|
||||
'btnThemeDelete
|
||||
'
|
||||
Me.btnThemeDelete.Location = New System.Drawing.Point(524, 5)
|
||||
Me.btnThemeDelete.Name = "btnThemeDelete"
|
||||
Me.btnThemeDelete.Size = New System.Drawing.Size(75, 23)
|
||||
Me.btnThemeDelete.TabIndex = 2
|
||||
Me.btnThemeDelete.Text = "&Delete"
|
||||
Me.btnThemeDelete.UseVisualStyleBackColor = True
|
||||
'
|
||||
'btnThemeNew
|
||||
'
|
||||
Me.btnThemeNew.Location = New System.Drawing.Point(443, 5)
|
||||
Me.btnThemeNew.Name = "btnThemeNew"
|
||||
Me.btnThemeNew.Size = New System.Drawing.Size(75, 23)
|
||||
Me.btnThemeNew.TabIndex = 1
|
||||
Me.btnThemeNew.Text = "&New"
|
||||
Me.btnThemeNew.UseVisualStyleBackColor = True
|
||||
'
|
||||
'cboTheme
|
||||
'
|
||||
Me.cboTheme.FormattingEnabled = True
|
||||
Me.cboTheme.Location = New System.Drawing.Point(3, 7)
|
||||
Me.cboTheme.Name = "cboTheme"
|
||||
Me.cboTheme.Size = New System.Drawing.Size(434, 21)
|
||||
Me.cboTheme.TabIndex = 0
|
||||
'
|
||||
'ThemePropertyGrid
|
||||
'
|
||||
Me.ThemePropertyGrid.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.ThemePropertyGrid.Location = New System.Drawing.Point(3, 34)
|
||||
Me.ThemePropertyGrid.Name = "ThemePropertyGrid"
|
||||
Me.ThemePropertyGrid.Size = New System.Drawing.Size(596, 426)
|
||||
Me.ThemePropertyGrid.TabIndex = 3
|
||||
Me.ThemePropertyGrid.UseCompatibleTextRendering = True
|
||||
'
|
||||
'frmOptions
|
||||
'
|
||||
Me.CancelButton = Me.btnCancel
|
||||
@@ -1399,11 +1538,14 @@ Public Class frmOptions
|
||||
Me.tabConnections.PerformLayout()
|
||||
Me.pnlDefaultCredentials.ResumeLayout(False)
|
||||
Me.pnlDefaultCredentials.PerformLayout()
|
||||
Me.pnlConfirmCloseConnection.ResumeLayout(False)
|
||||
Me.pnlConfirmCloseConnection.PerformLayout()
|
||||
Me.tabSQLServer.ResumeLayout(False)
|
||||
Me.tabSQLServer.PerformLayout()
|
||||
Me.tabUpdates.ResumeLayout(False)
|
||||
Me.tabAdvanced.ResumeLayout(False)
|
||||
Me.tabAdvanced.PerformLayout()
|
||||
Me.tabTheme.ResumeLayout(False)
|
||||
Me.ResumeLayout(False)
|
||||
|
||||
End Sub
|
||||
@@ -1413,8 +1555,16 @@ Public Class frmOptions
|
||||
Private Sub LoadOptions()
|
||||
Try
|
||||
Me.chkSaveConsOnExit.Checked = My.Settings.SaveConsOnExit
|
||||
Me.chkConfirmCloseConnection.Checked = My.Settings.ConfirmCloseConnection
|
||||
Me.chkConfirmExit.Checked = My.Settings.ConfirmExit
|
||||
Select Case Settings.ConfirmCloseConnection
|
||||
Case Config.ConfirmClose.Never
|
||||
radCloseWarnNever.Checked = True
|
||||
Case Config.ConfirmClose.Exit
|
||||
radCloseWarnExit.Checked = True
|
||||
Case Config.ConfirmClose.Multiple
|
||||
radCloseWarnMultiple.Checked = True
|
||||
Case Else
|
||||
radCloseWarnAll.Checked = True
|
||||
End Select
|
||||
Me.chkReconnectOnStart.Checked = My.Settings.OpenConsFromLastSession
|
||||
Me.chkProperInstallationOfComponentsAtStartup.Checked = My.Settings.StartupComponentsCheck
|
||||
|
||||
@@ -1439,6 +1589,7 @@ Public Class frmOptions
|
||||
Me.chkOpenNewTabRightOfSelected.Checked = My.Settings.OpenTabsRightOfSelected
|
||||
Me.chkShowLogonInfoOnTabs.Checked = My.Settings.ShowLogonInfoOnTabs
|
||||
Me.chkShowProtocolOnTabs.Checked = My.Settings.ShowProtocolOnTabs
|
||||
chkIdentifyQuickConnectTabs.Checked = Settings.IdentifyQuickConnectTabs
|
||||
Me.chkShowFullConnectionsFilePathInTitle.Checked = My.Settings.ShowCompleteConsPathInTitle
|
||||
Me.chkDoubleClickClosesTab.Checked = My.Settings.DoubleClickOnTabClosesIt
|
||||
Me.chkAlwaysShowPanelSelectionDlg.Checked = My.Settings.AlwaysShowPanelSelectionDlg
|
||||
@@ -1499,10 +1650,12 @@ Public Class frmOptions
|
||||
Me.chkAutomaticallyGetSessionInfo.Checked = My.Settings.AutomaticallyGetSessionInfo
|
||||
Me.chkAutomaticReconnect.Checked = My.Settings.ReconnectOnDisconnect
|
||||
Me.chkSingleInstance.Checked = My.Settings.SingleInstance
|
||||
Me.chkUseCustomPuttyPath.Checked = My.Settings.UseCustomPuttyPath
|
||||
Me.txtCustomPuttyPath.Text = My.Settings.CustomPuttyPath
|
||||
Me.numPuttyWaitTime.Value = My.Settings.MaxPuttyWaitTime
|
||||
|
||||
chkUseCustomPuttyPath.Checked = Settings.UseCustomPuttyPath
|
||||
txtCustomPuttyPath.Text = Settings.CustomPuttyPath
|
||||
SetPuttyLaunchButtonEnabled()
|
||||
|
||||
Me.chkUseProxyForAutomaticUpdates.Checked = My.Settings.UpdateUseProxy
|
||||
Me.btnTestProxy.Enabled = My.Settings.UpdateUseProxy
|
||||
Me.pnlProxyBasic.Enabled = My.Settings.UpdateUseProxy
|
||||
@@ -1519,6 +1672,15 @@ Public Class frmOptions
|
||||
Me.numUVNCSCPort.Value = My.Settings.UVNCSCPort
|
||||
|
||||
Me.txtXULrunnerPath.Text = My.Settings.XULRunnerPath
|
||||
|
||||
_themeList = New BindingList(Of ThemeInfo)(ThemeManager.LoadThemes())
|
||||
cboTheme.DataSource = _themeList
|
||||
cboTheme.SelectedItem = ThemeManager.ActiveTheme
|
||||
cboTheme_SelectionChangeCommitted(Me, New EventArgs())
|
||||
|
||||
ThemePropertyGrid.PropertySort = PropertySort.Categorized
|
||||
|
||||
_originalTheme = ThemeManager.ActiveTheme
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "LoadOptions (UI.Window.Options) failed" & vbNewLine & ex.Message, True)
|
||||
End Try
|
||||
@@ -1527,8 +1689,10 @@ Public Class frmOptions
|
||||
Private Sub SaveOptions()
|
||||
Try
|
||||
My.Settings.SaveConsOnExit = Me.chkSaveConsOnExit.Checked
|
||||
My.Settings.ConfirmCloseConnection = Me.chkConfirmCloseConnection.Checked
|
||||
My.Settings.ConfirmExit = Me.chkConfirmExit.Checked
|
||||
If radCloseWarnAll.Checked Then Settings.ConfirmCloseConnection = Config.ConfirmClose.All
|
||||
If radCloseWarnMultiple.Checked Then Settings.ConfirmCloseConnection = Config.ConfirmClose.Multiple
|
||||
If radCloseWarnExit.Checked Then Settings.ConfirmCloseConnection = Config.ConfirmClose.Exit
|
||||
If radCloseWarnNever.Checked Then Settings.ConfirmCloseConnection = Config.ConfirmClose.Never
|
||||
My.Settings.OpenConsFromLastSession = Me.chkReconnectOnStart.Checked
|
||||
My.Settings.StartupComponentsCheck = Me.chkProperInstallationOfComponentsAtStartup.Checked
|
||||
|
||||
@@ -1561,6 +1725,7 @@ Public Class frmOptions
|
||||
My.Settings.OpenTabsRightOfSelected = Me.chkOpenNewTabRightOfSelected.Checked
|
||||
My.Settings.ShowLogonInfoOnTabs = Me.chkShowLogonInfoOnTabs.Checked
|
||||
My.Settings.ShowProtocolOnTabs = Me.chkShowProtocolOnTabs.Checked
|
||||
Settings.IdentifyQuickConnectTabs = chkIdentifyQuickConnectTabs.Checked
|
||||
My.Settings.DoubleClickOnTabClosesIt = Me.chkDoubleClickClosesTab.Checked
|
||||
My.Settings.AlwaysShowPanelSelectionDlg = Me.chkAlwaysShowPanelSelectionDlg.Checked
|
||||
|
||||
@@ -1620,10 +1785,10 @@ Public Class frmOptions
|
||||
My.Settings.UseCustomPuttyPath = Me.chkUseCustomPuttyPath.Checked
|
||||
My.Settings.CustomPuttyPath = Me.txtCustomPuttyPath.Text
|
||||
|
||||
If My.Settings.UseCustomPuttyPath Then
|
||||
mRemoteNG.Connection.Protocol.PuttyBase.PuttyPath = My.Settings.CustomPuttyPath
|
||||
If Settings.UseCustomPuttyPath Then
|
||||
Connection.Protocol.PuttyBase.PuttyPath = Settings.CustomPuttyPath
|
||||
Else
|
||||
mRemoteNG.Connection.Protocol.PuttyBase.PuttyPath = My.Application.Info.DirectoryPath & "\PuTTYNG.exe"
|
||||
Connection.Protocol.PuttyBase.PuttyPath = App.Info.General.PuttyPath
|
||||
End If
|
||||
|
||||
My.Settings.MaxPuttyWaitTime = Me.numPuttyWaitTime.Value
|
||||
@@ -1642,6 +1807,8 @@ Public Class frmOptions
|
||||
|
||||
My.Settings.XULRunnerPath = Me.txtXULrunnerPath.Text
|
||||
|
||||
ThemeManager.SaveThemes(_themeList)
|
||||
Settings.ThemeName = ThemeManager.ActiveTheme.Name
|
||||
|
||||
If My.Settings.LoadConsFromCustomLocation = False Then
|
||||
App.Runtime.SetMainFormText(App.Info.Connections.DefaultConnectionsPath & "\" & App.Info.Connections.DefaultConnectionsFile)
|
||||
@@ -1661,8 +1828,11 @@ Public Class frmOptions
|
||||
End Sub
|
||||
#End Region
|
||||
|
||||
#Region "Private Variables"
|
||||
#Region "Private Fields"
|
||||
Private _initialTab As Integer = 0
|
||||
Private _appUpdate As App.Update
|
||||
Private _themeList As BindingList(Of ThemeInfo)
|
||||
Private _originalTheme As ThemeInfo
|
||||
#End Region
|
||||
|
||||
#Region "Public Methods"
|
||||
@@ -1702,6 +1872,7 @@ Public Class frmOptions
|
||||
lvPages.Items(4).Text = My.Language.strSQLServer
|
||||
lvPages.Items(5).Text = My.Language.strTabUpdates
|
||||
lvPages.Items(6).Text = My.Language.strTabAdvanced
|
||||
lvPages.Items(7).Text = Language.strOptionsTabTheme
|
||||
#If Not PORTABLE Then
|
||||
lblUpdatesExplanation.Text = My.Language.strUpdateCheck
|
||||
#Else
|
||||
@@ -1726,8 +1897,6 @@ Public Class frmOptions
|
||||
chkSingleInstance.Text = My.Language.strAllowOnlySingleInstance
|
||||
chkReconnectOnStart.Text = My.Language.strReconnectAtStartup
|
||||
chkCheckForUpdatesOnStartup.Text = My.Language.strCheckForUpdatesOnStartup
|
||||
chkConfirmCloseConnection.Text = My.Language.strConfirmCloseConnection
|
||||
chkConfirmExit.Text = My.Language.strConfirmExit
|
||||
chkSaveConsOnExit.Text = My.Language.strSaveConsOnExit
|
||||
chkMinimizeToSystemTray.Text = My.Language.strMinimizeToSysTray
|
||||
chkShowFullConnectionsFilePathInTitle.Text = My.Language.strShowFullConsFilePath
|
||||
@@ -1735,6 +1904,7 @@ Public Class frmOptions
|
||||
chkAlwaysShowPanelTabs.Text = My.Language.strAlwaysShowPanelTabs
|
||||
chkShowDescriptionTooltipsInTree.Text = My.Language.strShowDescriptionTooltips
|
||||
chkShowProtocolOnTabs.Text = My.Language.strShowProtocolOnTabs
|
||||
chkIdentifyQuickConnectTabs.Text = Language.strIdentifyQuickConnectTabs
|
||||
chkShowLogonInfoOnTabs.Text = My.Language.strShowLogonInfoOnTabs
|
||||
chkOpenNewTabRightOfSelected.Text = My.Language.strOpenNewTabRight
|
||||
chkAlwaysShowPanelSelectionDlg.Text = My.Language.strAlwaysShowPanelSelection
|
||||
@@ -1757,6 +1927,11 @@ Public Class frmOptions
|
||||
radCredentialsWindows.Text = My.Language.strMyCurrentWindowsCreds
|
||||
radCredentialsNoInfo.Text = My.Language.strNoInformation
|
||||
lblDefaultCredentials.Text = My.Language.strEmptyUsernamePasswordDomainFields
|
||||
lblClosingConnections.Text = Language.strLabelClosingConnections
|
||||
radCloseWarnAll.Text = Language.strRadioCloseWarnAll
|
||||
radCloseWarnMultiple.Text = Language.strRadioCloseWarnMultiple
|
||||
radCloseWarnExit.Text = Language.strRadioCloseWarnExit
|
||||
radCloseWarnNever.Text = Language.strRadioCloseWarnNever
|
||||
chkSingleClickOnOpenedConnectionSwitchesToIt.Text = My.Language.strSingleClickOnOpenConnectionSwitchesToIt
|
||||
chkSingleClickOnConnectionOpensIt.Text = My.Language.strSingleClickOnConnectionOpensIt
|
||||
lblSwitchToErrorsAndInfos.Text = My.Language.strSwitchToErrorsAndInfos
|
||||
@@ -1775,6 +1950,8 @@ Public Class frmOptions
|
||||
chkEncryptCompleteFile.Text = My.Language.strEncryptCompleteConnectionFile
|
||||
lblLanguage.Text = My.Language.strLanguage
|
||||
lblLanguageRestartRequired.Text = String.Format(My.Language.strLanguageRestartRequired, My.Application.Info.ProductName)
|
||||
btnThemeDelete.Text = Language.strOptionsThemeButtonDelete
|
||||
btnThemeNew.Text = Language.strOptionsThemeButtonNew
|
||||
End Sub
|
||||
|
||||
Public Shadows Sub Show(ByVal dockPanel As DockPanel, Optional ByVal initialTab As Integer = 0)
|
||||
@@ -1784,8 +1961,9 @@ Public Class frmOptions
|
||||
MyBase.ShowDialog(frmMain)
|
||||
End Sub
|
||||
|
||||
Private Sub btnCancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCancel.Click
|
||||
Me.Close()
|
||||
Private Sub btnCancel_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles btnCancel.Click
|
||||
ThemeManager.ActiveTheme = _originalTheme
|
||||
Close()
|
||||
End Sub
|
||||
|
||||
Private Sub btnOK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOK.Click
|
||||
@@ -1834,26 +2012,70 @@ Public Class frmOptions
|
||||
End Sub
|
||||
|
||||
Private Sub chkUseCustomPuttyPath_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles chkUseCustomPuttyPath.CheckedChanged
|
||||
Me.txtCustomPuttyPath.Enabled = Me.chkUseCustomPuttyPath.Checked
|
||||
Me.btnBrowseCustomPuttyPath.Enabled = Me.chkUseCustomPuttyPath.Checked
|
||||
txtCustomPuttyPath.Enabled = 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
|
||||
|
||||
Private Sub btnLaunchPutty_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLaunchPutty.Click
|
||||
mRemoteNG.Connection.Protocol.PuttyBase.StartPutty()
|
||||
End Sub
|
||||
|
||||
Private Sub btnBrowseCustomPuttyPath_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBrowseCustomPuttyPath.Click
|
||||
Dim oDlg As New OpenFileDialog()
|
||||
oDlg.Filter = My.Language.strFilterApplication & "|*.exe|" & My.Language.strFilterAll & "|*.*"
|
||||
oDlg.FileName = "PuTTYNG.exe"
|
||||
oDlg.CheckFileExists = True
|
||||
oDlg.Multiselect = False
|
||||
|
||||
If oDlg.ShowDialog = System.Windows.Forms.DialogResult.OK Then
|
||||
Me.txtCustomPuttyPath.Text = oDlg.FileName
|
||||
End If
|
||||
|
||||
oDlg.Dispose()
|
||||
Try
|
||||
Dim puttyProcess As New PuttyProcessController
|
||||
Dim fileName As String
|
||||
If chkUseCustomPuttyPath.Checked Then
|
||||
fileName = txtCustomPuttyPath.Text
|
||||
Else
|
||||
fileName = App.Info.General.PuttyPath
|
||||
End If
|
||||
puttyProcess.Start(fileName)
|
||||
puttyProcess.SetControlText("Button", "&Cancel", "&Close")
|
||||
puttyProcess.SetControlVisible("Button", "&Open", False)
|
||||
puttyProcess.WaitForExit()
|
||||
Catch ex As Exception
|
||||
cTaskDialog.MessageBox(Application.Info.ProductName, Language.strErrorCouldNotLaunchPutty, "", ex.Message, "", "", eTaskDialogButtons.OK, eSysIcons.Error, Nothing)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
Private Sub btnBrowseXulRunnerPath_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBrowseXulRunnerPath.Click
|
||||
@@ -1892,14 +2114,41 @@ Public Class frmOptions
|
||||
End Sub
|
||||
|
||||
Private Sub btnTestProxy_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnTestProxy.Click
|
||||
SaveOptions()
|
||||
Dim ud As New App.Update()
|
||||
|
||||
If ud.IsProxyOK Then
|
||||
MsgBox(My.Language.strProxyTestSucceeded, MsgBoxStyle.Information)
|
||||
Else
|
||||
MsgBox(My.Language.strProxyTestFailed, MsgBoxStyle.Exclamation)
|
||||
If _appUpdate IsNot Nothing Then
|
||||
If _appUpdate.IsGetUpdateInfoRunning Then Return
|
||||
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
|
||||
|
||||
Private Sub chkUseProxyAuthentication_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles chkUseProxyAuthentication.CheckedChanged
|
||||
@@ -1911,5 +2160,50 @@ Public Class frmOptions
|
||||
End If
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub cboTheme_DropDown(ByVal sender As Object, ByVal e As EventArgs) Handles cboTheme.DropDown, cboTheme.LostFocus
|
||||
If ThemeManager.ActiveTheme Is ThemeManager.DefaultTheme Then Return
|
||||
ThemeManager.ActiveTheme.Name = cboTheme.Text
|
||||
End Sub
|
||||
|
||||
Private Sub cboTheme_SelectionChangeCommitted(ByVal sender As Object, ByVal e As EventArgs) Handles cboTheme.SelectionChangeCommitted ', cboTheme.SelectedIndexChanged, cboTheme.SelectedValueChanged
|
||||
If cboTheme.SelectedItem Is Nothing Then cboTheme.SelectedItem = ThemeManager.DefaultTheme
|
||||
|
||||
If cboTheme.SelectedItem Is ThemeManager.DefaultTheme Then
|
||||
cboTheme.DropDownStyle = ComboBoxStyle.DropDownList
|
||||
btnThemeDelete.Enabled = False
|
||||
ThemePropertyGrid.Enabled = False
|
||||
Else
|
||||
cboTheme.DropDownStyle = ComboBoxStyle.DropDown
|
||||
btnThemeDelete.Enabled = True
|
||||
ThemePropertyGrid.Enabled = True
|
||||
End If
|
||||
|
||||
ThemeManager.ActiveTheme = cboTheme.SelectedItem
|
||||
ThemePropertyGrid.SelectedObject = ThemeManager.ActiveTheme
|
||||
ThemePropertyGrid.Refresh()
|
||||
End Sub
|
||||
|
||||
Private Sub btnThemeNew_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnThemeNew.Click
|
||||
Dim newTheme As ThemeInfo = ThemeManager.ActiveTheme.Clone()
|
||||
newTheme.Name = Language.strUnnamedTheme
|
||||
|
||||
_themeList.Add(newTheme)
|
||||
|
||||
cboTheme.SelectedItem = newTheme
|
||||
cboTheme_SelectionChangeCommitted(Me, New EventArgs())
|
||||
|
||||
cboTheme.Focus()
|
||||
End Sub
|
||||
|
||||
Private Sub btnThemeDelete_Click(sender As System.Object, e As EventArgs) Handles btnThemeDelete.Click
|
||||
Dim theme As ThemeInfo = cboTheme.SelectedItem
|
||||
If theme Is Nothing Then Return
|
||||
|
||||
_themeList.Remove(theme)
|
||||
|
||||
cboTheme.SelectedItem = ThemeManager.DefaultTheme
|
||||
cboTheme_SelectionChangeCommitted(Me, New EventArgs())
|
||||
End Sub
|
||||
#End Region
|
||||
End Class
|
||||
|
||||
BIN
mRemoteV1/Icons/PuTTY.ico
Normal file
BIN
mRemoteV1/Icons/PuTTY.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 318 B |
@@ -5,6 +5,7 @@ Namespace Images
|
||||
Container = 1
|
||||
ConnectionOpen = 2
|
||||
ConnectionClosed = 3
|
||||
PuttySessions = 4
|
||||
End Enum
|
||||
|
||||
Public Enum ErrorImage
|
||||
|
||||
698
mRemoteV1/Language/Language.Designer.vb
generated
698
mRemoteV1/Language/Language.Designer.vb
generated
@@ -263,7 +263,7 @@ Namespace My
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Current Version.
|
||||
''' Looks up a localized string similar to Latest version.
|
||||
'''</summary>
|
||||
Friend Shared ReadOnly Property strAvailableVersion() As String
|
||||
Get
|
||||
@@ -561,10 +561,10 @@ Namespace My
|
||||
End Property
|
||||
|
||||
'''<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.
|
||||
'''mRemoteNG ships with this component but will not register it automatically unless you run the setup package.
|
||||
'''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).
|
||||
'''If you are still not able to pass this check or use the (RDP) Session [rest of string was truncated]";.
|
||||
''' 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 it is not registered automatically if you do not use the mRemoteNG Installer.
|
||||
'''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 this check still fails or you are unable to use the (RDP) Sessions feat [rest of string was truncated]";.
|
||||
'''</summary>
|
||||
Friend Shared ReadOnly Property strCcEOLFailed() As String
|
||||
Get
|
||||
@@ -652,9 +652,8 @@ Namespace My
|
||||
End Property
|
||||
|
||||
'''<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
|
||||
'''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 you still have trouble getting RDP to work please consult the mRemoteNG Forum at ht [rest of string was truncated]";.
|
||||
''' 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 this check still fails or you are unable to use RDP, please consult the mRemoteNG Forum at http://forum.mremoteng.org/..
|
||||
'''</summary>
|
||||
Friend Shared ReadOnly Property strCcRDPFailed() As String
|
||||
Get
|
||||
@@ -918,6 +917,15 @@ Namespace My
|
||||
End Get
|
||||
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>
|
||||
''' Looks up a localized string similar to Couldn't parse command line args!.
|
||||
'''</summary>
|
||||
@@ -927,6 +935,42 @@ Namespace My
|
||||
End Get
|
||||
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>
|
||||
''' Looks up a localized string similar to Components Check.
|
||||
'''</summary>
|
||||
@@ -999,15 +1043,6 @@ Namespace My
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Confirm closing connection tabs.
|
||||
'''</summary>
|
||||
Friend Shared ReadOnly Property strConfirmCloseConnection() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("strConfirmCloseConnection", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Do you want to close the connection, "{0}"?.
|
||||
'''</summary>
|
||||
@@ -1071,15 +1106,6 @@ Namespace My
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Confirm exit if there are open connections.
|
||||
'''</summary>
|
||||
Friend Shared ReadOnly Property strConfirmExit() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("strConfirmExit", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Do you want to close all open connections?.
|
||||
'''</summary>
|
||||
@@ -1344,6 +1370,15 @@ Namespace My
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Default Theme.
|
||||
'''</summary>
|
||||
Friend Shared ReadOnly Property strDefaultTheme() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("strDefaultTheme", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Detect.
|
||||
'''</summary>
|
||||
@@ -1533,6 +1568,15 @@ Namespace My
|
||||
End Get
|
||||
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>
|
||||
''' Looks up a localized string similar to Decryption failed. {0}.
|
||||
'''</summary>
|
||||
@@ -1844,7 +1888,7 @@ Namespace My
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Changeing HTTP Document Tile Failed!.
|
||||
''' Looks up a localized string similar to Changing HTTP Document Tile Failed!.
|
||||
'''</summary>
|
||||
Friend Shared ReadOnly Property strHttpDocumentTileChangeFailed() As String
|
||||
Get
|
||||
@@ -1951,6 +1995,15 @@ Namespace My
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Identify quick connect tabs by adding the prefix "Quick:".
|
||||
'''</summary>
|
||||
Friend Shared ReadOnly Property strIdentifyQuickConnectTabs() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("strIdentifyQuickConnectTabs", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Import from Active Directory.
|
||||
'''</summary>
|
||||
@@ -2149,6 +2202,15 @@ Namespace My
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to When closing connections:.
|
||||
'''</summary>
|
||||
Friend Shared ReadOnly Property strLabelClosingConnections() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("strLabelClosingConnections", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to &Connect:.
|
||||
'''</summary>
|
||||
@@ -2357,7 +2419,7 @@ Namespace My
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Load From SQL failed!.
|
||||
''' Looks up a localized string similar to Load from SQL failed.
|
||||
'''</summary>
|
||||
Friend Shared ReadOnly Property strLoadFromSqlFailed() As String
|
||||
Get
|
||||
@@ -2365,6 +2427,15 @@ Namespace My
|
||||
End Get
|
||||
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>
|
||||
''' Looks up a localized string similar to Load From XML failed!.
|
||||
'''</summary>
|
||||
@@ -2752,6 +2823,33 @@ Namespace My
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Copy All.
|
||||
'''</summary>
|
||||
Friend Shared ReadOnly Property strMenuNotificationsCopyAll() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("strMenuNotificationsCopyAll", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Delete.
|
||||
'''</summary>
|
||||
Friend Shared ReadOnly Property strMenuNotificationsDelete() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("strMenuNotificationsDelete", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Delete All.
|
||||
'''</summary>
|
||||
Friend Shared ReadOnly Property strMenuNotificationsDeleteAll() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("strMenuNotificationsDeleteAll", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Open Connection File....
|
||||
'''</summary>
|
||||
@@ -2914,6 +3012,15 @@ Namespace My
|
||||
End Get
|
||||
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>
|
||||
''' Looks up a localized string similar to Sessions.
|
||||
'''</summary>
|
||||
@@ -2932,6 +3039,15 @@ Namespace My
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to &Show Help Text.
|
||||
'''</summary>
|
||||
Friend Shared ReadOnly Property strMenuShowHelpText() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("strMenuShowHelpText", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Show Text.
|
||||
'''</summary>
|
||||
@@ -3212,6 +3328,42 @@ Namespace My
|
||||
End Get
|
||||
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>
|
||||
''' Looks up a localized string similar to Theme.
|
||||
'''</summary>
|
||||
Friend Shared ReadOnly Property strOptionsTabTheme() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("strOptionsTabTheme", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to &Delete.
|
||||
'''</summary>
|
||||
Friend Shared ReadOnly Property strOptionsThemeButtonDelete() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("strOptionsThemeButtonDelete", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to &New.
|
||||
'''</summary>
|
||||
Friend Shared ReadOnly Property strOptionsThemeButtonNew() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("strOptionsThemeButtonNew", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Panel Name.
|
||||
'''</summary>
|
||||
@@ -3293,6 +3445,15 @@ Namespace My
|
||||
End Get
|
||||
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>
|
||||
''' Looks up a localized string similar to Select whether to use bitmap caching or not..
|
||||
'''</summary>
|
||||
@@ -3428,6 +3589,15 @@ Namespace My
|
||||
End Get
|
||||
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>
|
||||
''' 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>
|
||||
@@ -3743,6 +3913,15 @@ Namespace My
|
||||
End Get
|
||||
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>
|
||||
''' Looks up a localized string similar to Cache Bitmaps.
|
||||
'''</summary>
|
||||
@@ -3878,6 +4057,15 @@ Namespace My
|
||||
End Get
|
||||
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>
|
||||
''' Looks up a localized string similar to MAC Address.
|
||||
'''</summary>
|
||||
@@ -4286,6 +4474,24 @@ Namespace My
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to PuTTY Saved Sessions.
|
||||
'''</summary>
|
||||
Friend Shared ReadOnly Property strPuttySavedSessionsRootName() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("strPuttySavedSessionsRootName", resourceCulture)
|
||||
End Get
|
||||
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>
|
||||
''' Looks up a localized string similar to PuTTY Settings.
|
||||
'''</summary>
|
||||
@@ -4376,6 +4582,42 @@ Namespace My
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to &Warn me when closing connections.
|
||||
'''</summary>
|
||||
Friend Shared ReadOnly Property strRadioCloseWarnAll() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("strRadioCloseWarnAll", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Warn me only when e&xiting mRemoteNG.
|
||||
'''</summary>
|
||||
Friend Shared ReadOnly Property strRadioCloseWarnExit() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("strRadioCloseWarnExit", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Warn me only when closing &multiple connections.
|
||||
'''</summary>
|
||||
Friend Shared ReadOnly Property strRadioCloseWarnMultiple() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("strRadioCloseWarnMultiple", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Do &not warn me when closing connections.
|
||||
'''</summary>
|
||||
Friend Shared ReadOnly Property strRadioCloseWarnNever() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("strRadioCloseWarnNever", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to RAW.
|
||||
'''</summary>
|
||||
@@ -4719,7 +4961,7 @@ Namespace My
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Open RDP Connectin failed!.
|
||||
''' Looks up a localized string similar to Open RDP Connection failed!.
|
||||
'''</summary>
|
||||
Friend Shared ReadOnly Property strRdpOpenConnectionFailed() As String
|
||||
Get
|
||||
@@ -5024,6 +5266,15 @@ Namespace My
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Search.
|
||||
'''</summary>
|
||||
Friend Shared ReadOnly Property strSearchPrompt() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("strSearchPrompt", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Send To....
|
||||
'''</summary>
|
||||
@@ -5277,7 +5528,7 @@ Namespace My
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Transfer.
|
||||
''' Looks up a localized string similar to SSH transfer failed..
|
||||
'''</summary>
|
||||
Friend Shared ReadOnly Property strSSHTransferFailed() As String
|
||||
Get
|
||||
@@ -5384,6 +5635,339 @@ Namespace My
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Config Panel.
|
||||
'''</summary>
|
||||
Friend Shared ReadOnly Property strThemeCategoryConfigPanel() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("strThemeCategoryConfigPanel", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Connections Panel.
|
||||
'''</summary>
|
||||
Friend Shared ReadOnly Property strThemeCategoryConnectionsPanel() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("strThemeCategoryConnectionsPanel", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to General.
|
||||
'''</summary>
|
||||
Friend Shared ReadOnly Property strThemeCategoryGeneral() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("strThemeCategoryGeneral", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to The background colour of the config panel..
|
||||
'''</summary>
|
||||
Friend Shared ReadOnly Property strThemeDescriptionConfigPanelBackgroundColor() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("strThemeDescriptionConfigPanelBackgroundColor", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to The colour of the category text in the config panel..
|
||||
'''</summary>
|
||||
Friend Shared ReadOnly Property strThemeDescriptionConfigPanelCategoryTextColor() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("strThemeDescriptionConfigPanelCategoryTextColor", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to The colour of the grid lines in the config panel.
|
||||
'''</summary>
|
||||
Friend Shared ReadOnly Property strThemeDescriptionConfigPanelGridLineColor() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("strThemeDescriptionConfigPanelGridLineColor", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to The background colour of the help area of the config panel..
|
||||
'''</summary>
|
||||
Friend Shared ReadOnly Property strThemeDescriptionConfigPanelHelpBackgroundColor() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("strThemeDescriptionConfigPanelHelpBackgroundColor", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to The colour of the text in the help area of the config panel..
|
||||
'''</summary>
|
||||
Friend Shared ReadOnly Property strThemeDescriptionConfigPanelHelpTextColor() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("strThemeDescriptionConfigPanelHelpTextColor", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to The colour of the text in the config panel..
|
||||
'''</summary>
|
||||
Friend Shared ReadOnly Property strThemeDescriptionConfigPanelTextColor() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("strThemeDescriptionConfigPanelTextColor", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to The background colour of the connections panel..
|
||||
'''</summary>
|
||||
Friend Shared ReadOnly Property strThemeDescriptionConnectionsPanelBackgroundColor() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("strThemeDescriptionConnectionsPanelBackgroundColor", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to The colour of the text in the connections panel..
|
||||
'''</summary>
|
||||
Friend Shared ReadOnly Property strThemeDescriptionConnectionsPanelTextColor() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("strThemeDescriptionConnectionsPanelTextColor", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to The colour of the tree lines in the connections panel..
|
||||
'''</summary>
|
||||
Friend Shared ReadOnly Property strThemeDescriptionConnectionsPanelTreeLineColor() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("strThemeDescriptionConnectionsPanelTreeLineColor", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to The background colour of the menus..
|
||||
'''</summary>
|
||||
Friend Shared ReadOnly Property strThemeDescriptionMenuBackgroundColor() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("strThemeDescriptionMenuBackgroundColor", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to The colour of the text in the menus..
|
||||
'''</summary>
|
||||
Friend Shared ReadOnly Property strThemeDescriptionMenuTextColor() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("strThemeDescriptionMenuTextColor", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to The background colour of the search box..
|
||||
'''</summary>
|
||||
Friend Shared ReadOnly Property strThemeDescriptionSearchBoxBackgroundColor() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("strThemeDescriptionSearchBoxBackgroundColor", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to The colour of the text in the search box..
|
||||
'''</summary>
|
||||
Friend Shared ReadOnly Property strThemeDescriptionSearchBoxTextColor() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("strThemeDescriptionSearchBoxTextColor", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to The colour of the prompt text in the search box..
|
||||
'''</summary>
|
||||
Friend Shared ReadOnly Property strThemeDescriptionSearchBoxTextPromptColor() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("strThemeDescriptionSearchBoxTextPromptColor", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to The background colour of the toolbars..
|
||||
'''</summary>
|
||||
Friend Shared ReadOnly Property strThemeDescriptionToolbarBackgroundColor() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("strThemeDescriptionToolbarBackgroundColor", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to The colour of the text in the toolbars..
|
||||
'''</summary>
|
||||
Friend Shared ReadOnly Property strThemeDescriptionToolbarTextColor() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("strThemeDescriptionToolbarTextColor", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to The background colour of the main window..
|
||||
'''</summary>
|
||||
Friend Shared ReadOnly Property strThemeDescriptionWindowBackgroundColor() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("strThemeDescriptionWindowBackgroundColor", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Config Panel Background Colour.
|
||||
'''</summary>
|
||||
Friend Shared ReadOnly Property strThemeNameConfigPanelBackgroundColor() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("strThemeNameConfigPanelBackgroundColor", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Config Panel Category Text Colour.
|
||||
'''</summary>
|
||||
Friend Shared ReadOnly Property strThemeNameConfigPanelCategoryTextColor() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("strThemeNameConfigPanelCategoryTextColor", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Config Panel Grid Line Colour.
|
||||
'''</summary>
|
||||
Friend Shared ReadOnly Property strThemeNameConfigPanelGridLineColor() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("strThemeNameConfigPanelGridLineColor", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Config Panel Help Background Colour.
|
||||
'''</summary>
|
||||
Friend Shared ReadOnly Property strThemeNameConfigPanelHelpBackgroundColor() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("strThemeNameConfigPanelHelpBackgroundColor", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Config Panel Help Text Colour.
|
||||
'''</summary>
|
||||
Friend Shared ReadOnly Property strThemeNameConfigPanelHelpTextColor() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("strThemeNameConfigPanelHelpTextColor", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Config Panel Text Colour.
|
||||
'''</summary>
|
||||
Friend Shared ReadOnly Property strThemeNameConfigPanelTextColor() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("strThemeNameConfigPanelTextColor", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Connections Panel Background Colour.
|
||||
'''</summary>
|
||||
Friend Shared ReadOnly Property strThemeNameConnectionsPanelBackgroundColor() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("strThemeNameConnectionsPanelBackgroundColor", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Connections Panel Text Colour.
|
||||
'''</summary>
|
||||
Friend Shared ReadOnly Property strThemeNameConnectionsPanelTextColor() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("strThemeNameConnectionsPanelTextColor", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Connections Panel Tree Line Colour.
|
||||
'''</summary>
|
||||
Friend Shared ReadOnly Property strThemeNameConnectionsPanelTreeLineColor() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("strThemeNameConnectionsPanelTreeLineColor", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Menu Background Colour.
|
||||
'''</summary>
|
||||
Friend Shared ReadOnly Property strThemeNameMenuBackgroundColor() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("strThemeNameMenuBackgroundColor", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Menu Text Colour.
|
||||
'''</summary>
|
||||
Friend Shared ReadOnly Property strThemeNameMenuTextColor() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("strThemeNameMenuTextColor", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Search Box Background Colour.
|
||||
'''</summary>
|
||||
Friend Shared ReadOnly Property strThemeNameSearchBoxBackgroundColor() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("strThemeNameSearchBoxBackgroundColor", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Search Box Text Colour.
|
||||
'''</summary>
|
||||
Friend Shared ReadOnly Property strThemeNameSearchBoxTextColor() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("strThemeNameSearchBoxTextColor", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Search Box Text Prompt Colour.
|
||||
'''</summary>
|
||||
Friend Shared ReadOnly Property strThemeNameSearchBoxTextPromptColor() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("strThemeNameSearchBoxTextPromptColor", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Toolbar Background Colour.
|
||||
'''</summary>
|
||||
Friend Shared ReadOnly Property strThemeNameToolbarBackgroundColor() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("strThemeNameToolbarBackgroundColor", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Toolbar Text Colour.
|
||||
'''</summary>
|
||||
Friend Shared ReadOnly Property strThemeNameToolbarTextColor() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("strThemeNameToolbarTextColor", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Window Background Colour.
|
||||
'''</summary>
|
||||
Friend Shared ReadOnly Property strThemeNameWindowBackgroundColor() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("strThemeNameWindowBackgroundColor", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Error ({0}).
|
||||
'''</summary>
|
||||
@@ -5492,6 +6076,15 @@ Namespace My
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Unnamed Theme.
|
||||
'''</summary>
|
||||
Friend Shared ReadOnly Property strUnnamedTheme() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("strUnnamedTheme", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to mRemoteNG requires an update.
|
||||
'''</summary>
|
||||
@@ -5511,7 +6104,7 @@ Namespace My
|
||||
End Property
|
||||
|
||||
'''<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>
|
||||
Friend Shared ReadOnly Property strUpdateCheckCompleteFailed() As String
|
||||
Get
|
||||
@@ -5520,11 +6113,20 @@ Namespace My
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Check For Update failed!.
|
||||
''' Looks up a localized string similar to Check failed.
|
||||
'''</summary>
|
||||
Friend Shared ReadOnly Property strUpdateCheckFailed() As String
|
||||
Friend Shared ReadOnly Property strUpdateCheckFailedLabel() As String
|
||||
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 Property
|
||||
|
||||
@@ -5537,15 +6139,6 @@ Namespace My
|
||||
End Get
|
||||
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>
|
||||
''' Looks up a localized string similar to Download complete!
|
||||
'''mRemoteNG will now quit and begin with the installation..
|
||||
@@ -5557,7 +6150,7 @@ Namespace My
|
||||
End Property
|
||||
|
||||
'''<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>
|
||||
Friend Shared ReadOnly Property strUpdateDownloadCompleteFailed() As String
|
||||
Get
|
||||
@@ -5566,7 +6159,7 @@ Namespace My
|
||||
End Property
|
||||
|
||||
'''<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>
|
||||
Friend Shared ReadOnly Property strUpdateDownloadFailed() As String
|
||||
Get
|
||||
@@ -5611,11 +6204,20 @@ Namespace My
|
||||
End Property
|
||||
|
||||
'''<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>
|
||||
Friend Shared ReadOnly Property strUpdateStartFailed() As String
|
||||
Friend Shared ReadOnly Property strUpdateGetAnnouncementInfoFailed() As String
|
||||
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 Property
|
||||
|
||||
|
||||
@@ -438,9 +438,6 @@ VncSharpNG Control Version {0}</value>
|
||||
<data name="strConfigUiLoadFailed" xml:space="preserve">
|
||||
<value>Konfigurationsfenster laden fehlgeschlagen!</value>
|
||||
</data>
|
||||
<data name="strConfirmCloseConnection" xml:space="preserve">
|
||||
<value>Bestätigen Sie das schließen der Verbindungstabs</value>
|
||||
</data>
|
||||
<data name="strConfirmCloseConnectionMainInstruction" xml:space="preserve">
|
||||
<value>Möchten Sie die Verbindung "{0}" schließen?</value>
|
||||
</data>
|
||||
@@ -462,9 +459,6 @@ VncSharpNG Control Version {0}</value>
|
||||
<data name="strConfirmDeleteNodeFolderNotEmpty" xml:space="preserve">
|
||||
<value>Sind Sie sicher dass Sie den Ordner "{0}" entfernen möchten? Jeder Ordner und jede Verbindung in diesem Ordner werden ebenfalls gelöscht.</value>
|
||||
</data>
|
||||
<data name="strConfirmExit" xml:space="preserve">
|
||||
<value>Schließen bestätigen wenn Verbindungen bestehen</value>
|
||||
</data>
|
||||
<data name="strConfirmExitMainInstruction" xml:space="preserve">
|
||||
<value>Möchten Sie alle offenen Verbindungen schließen?</value>
|
||||
</data>
|
||||
@@ -595,19 +589,19 @@ Starte mit neuer Datei.</value>
|
||||
<value>Letzte IP</value>
|
||||
</data>
|
||||
<data name="strEndPort" xml:space="preserve">
|
||||
<value>letzte Port</value>
|
||||
<value>Letzter Port</value>
|
||||
</data>
|
||||
<data name="strErrorAddExternalToolsToToolBarFailed" xml:space="preserve">
|
||||
<value>AddExternalToolsToToolBar (FrmMain) ist fehlgeschlagen. {0}</value>
|
||||
</data>
|
||||
<data name="strErrorAddFolderFailed" xml:space="preserve">
|
||||
<value>AddFolder (UI.Window.Tree) fehlgeschlagen. {0}</value>
|
||||
<value>AddFolder (UI.Window.Tree) ist fehlgeschlagen. {0}</value>
|
||||
</data>
|
||||
<data name="strErrorBadDatabaseVersion" xml:space="preserve">
|
||||
<value>Die Datenbankversion {0} ist nicht kompatibel mit dieser Version von {1}.</value>
|
||||
</data>
|
||||
<data name="strErrorCloneNodeFailed" xml:space="preserve">
|
||||
<value>CloneNode (Tree.Node) fehlgeschlagen. {0}</value>
|
||||
<value>CloneNode (Tree.Node) ist fehlgeschlagen. {0}</value>
|
||||
</data>
|
||||
<data name="strErrorCode" xml:space="preserve">
|
||||
<value>Fehler Nummer {0}.</value>
|
||||
@@ -711,9 +705,6 @@ Starte mit neuer Datei.</value>
|
||||
<data name="strHttpConnectionFailed" xml:space="preserve">
|
||||
<value>Erstellen der HTTP Verbindung fehlgeschlagen!</value>
|
||||
</data>
|
||||
<data name="strHttpDocumentTileChangeFailed" xml:space="preserve">
|
||||
<value>Ändern des Webseiten Titels fehlgeschlagen!</value>
|
||||
</data>
|
||||
<data name="strHttpSetPropsFailed" xml:space="preserve">
|
||||
<value>Setzen der HTTP Parameter fehlgeschlagen!</value>
|
||||
</data>
|
||||
@@ -1836,9 +1827,6 @@ Wenn Sie Fehler feststellen, dann sollten Sie eine neue Verbindungs Datei erstel
|
||||
<data name="strSSHTransferEndFailed" xml:space="preserve">
|
||||
<value>SSH Abschluss der Übertragung fehlgeschlagen!</value>
|
||||
</data>
|
||||
<data name="strSSHTransferFailed" xml:space="preserve">
|
||||
<value>Übertragung fehlgeschlagen!</value>
|
||||
</data>
|
||||
<data name="strStartIP" xml:space="preserve">
|
||||
<value>Anfangs IP</value>
|
||||
</data>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
@@ -59,7 +59,7 @@
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: 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:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
@@ -105,15 +105,15 @@
|
||||
</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="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
@@ -138,4 +138,106 @@
|
||||
<data name="strRDP65536Colors" xml:space="preserve">
|
||||
<value>65536 Colors (16-bit)</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionConfigPanelBackgroundColor" xml:space="preserve">
|
||||
<value>The background color of the config panel.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionConfigPanelCategoryTextColor" xml:space="preserve">
|
||||
<value>The color of the category text in the config panel.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionConfigPanelGridLineColor" xml:space="preserve">
|
||||
<value>The color of the grid lines in the config panel</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionConfigPanelHelpBackgroundColor" xml:space="preserve">
|
||||
<value>The background color of the help area of the config panel.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionConfigPanelHelpTextColor" xml:space="preserve">
|
||||
<value>The color of the text in the help area of the config panel.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionConfigPanelTextColor" xml:space="preserve">
|
||||
<value>The color of the text in the config panel.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionConnectionsPanelBackgroundColor" xml:space="preserve">
|
||||
<value>The background color of the connections panel.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionConnectionsPanelTextColor" xml:space="preserve">
|
||||
<value>The color of the text in the connections panel.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionConnectionsPanelTreeLineColor" xml:space="preserve">
|
||||
<value>The color of the tree lines in the connections panel.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionMenuBackgroundColor" xml:space="preserve">
|
||||
<value>The background color of the menus.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionMenuTextColor" xml:space="preserve">
|
||||
<value>The color of the text in the menus.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionSearchBoxBackgroundColor" xml:space="preserve">
|
||||
<value>The background color of the search box.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionSearchBoxTextColor" xml:space="preserve">
|
||||
<value>The color of the text in the search box.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionSearchBoxTextPromptColor" xml:space="preserve">
|
||||
<value>The color of the prompt text in the search box.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionToolbarBackgroundColor" xml:space="preserve">
|
||||
<value>The background color of the toolbars.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionToolbarTextColor" xml:space="preserve">
|
||||
<value>The color of the text in the toolbars.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionWindowBackgroundColor" xml:space="preserve">
|
||||
<value>The background color of the main window.</value>
|
||||
</data>
|
||||
<data name="strThemeNameConfigPanelBackgroundColor" xml:space="preserve">
|
||||
<value>Config Panel Background Color</value>
|
||||
</data>
|
||||
<data name="strThemeNameConfigPanelCategoryTextColor" xml:space="preserve">
|
||||
<value>Config Panel Category Text Color</value>
|
||||
</data>
|
||||
<data name="strThemeNameConfigPanelGridLineColor" xml:space="preserve">
|
||||
<value>Config Panel Grid Line Color</value>
|
||||
</data>
|
||||
<data name="strThemeNameConfigPanelHelpBackgroundColor" xml:space="preserve">
|
||||
<value>Config Panel Help Background Color</value>
|
||||
</data>
|
||||
<data name="strThemeNameConfigPanelHelpTextColor" xml:space="preserve">
|
||||
<value>Config Panel Help Text Color</value>
|
||||
</data>
|
||||
<data name="strThemeNameConfigPanelTextColor" xml:space="preserve">
|
||||
<value>Config Panel Text Color</value>
|
||||
</data>
|
||||
<data name="strThemeNameConnectionsPanelBackgroundColor" xml:space="preserve">
|
||||
<value>Connections Panel Background Color</value>
|
||||
</data>
|
||||
<data name="strThemeNameConnectionsPanelTextColor" xml:space="preserve">
|
||||
<value>Connections Panel Text Color</value>
|
||||
</data>
|
||||
<data name="strThemeNameConnectionsPanelTreeLineColor" xml:space="preserve">
|
||||
<value>Connections Panel Tree Line Color</value>
|
||||
</data>
|
||||
<data name="strThemeNameMenuBackgroundColor" xml:space="preserve">
|
||||
<value>Menu Background Color</value>
|
||||
</data>
|
||||
<data name="strThemeNameMenuTextColor" xml:space="preserve">
|
||||
<value>Menu Text Color</value>
|
||||
</data>
|
||||
<data name="strThemeNameSearchBoxBackgroundColor" xml:space="preserve">
|
||||
<value>Search Box Background Color</value>
|
||||
</data>
|
||||
<data name="strThemeNameSearchBoxTextColor" xml:space="preserve">
|
||||
<value>Search Box Text Color</value>
|
||||
</data>
|
||||
<data name="strThemeNameSearchBoxTextPromptColor" xml:space="preserve">
|
||||
<value>Search Box Text Prompt Color</value>
|
||||
</data>
|
||||
<data name="strThemeNameToolbarBackgroundColor" xml:space="preserve">
|
||||
<value>Toolbar Background Color</value>
|
||||
</data>
|
||||
<data name="strThemeNameToolbarTextColor" xml:space="preserve">
|
||||
<value>Toolbar Text Color</value>
|
||||
</data>
|
||||
<data name="strThemeNameWindowBackgroundColor" xml:space="preserve">
|
||||
<value>Window Background Color</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -244,9 +244,6 @@ VncSharpNG Control {0}</value>
|
||||
<data name="strConfirmDeleteNodeFolderNotEmpty" xml:space="preserve">
|
||||
<value>¿Está seguro que desea eliminar la carpeta "{0}"? También se eliminará cualquier carpetas o conexiones que contiene.</value>
|
||||
</data>
|
||||
<data name="strConfirmExit" xml:space="preserve">
|
||||
<value>Confirmar salida si hay conexiones abiertas</value>
|
||||
</data>
|
||||
<data name="strConfirmExitMainInstruction" xml:space="preserve">
|
||||
<value>¿Desea cerrar todas las conexiones abiertas?</value>
|
||||
</data>
|
||||
|
||||
@@ -150,6 +150,9 @@
|
||||
<data name="strAlwaysShowPanelSelection" xml:space="preserve">
|
||||
<value>Mostrar siempre el diálogo de selección de panel cuando se abran conexiones</value>
|
||||
</data>
|
||||
<data name="strAlwaysShowPanelTabs" xml:space="preserve">
|
||||
<value>Mostrar las pestañas del panel siempre</value>
|
||||
</data>
|
||||
<data name="strAlwaysShowSysTrayIcon" xml:space="preserve">
|
||||
<value>Mostrar siempre el Icono de la Bandeja del Sistema</value>
|
||||
</data>
|
||||
@@ -413,18 +416,33 @@ Versión de Control {0} de VNCSharpNG</value>
|
||||
<data name="strCommandLineArgsCouldNotBeParsed" xml:space="preserve">
|
||||
<value>¡No se pudieron procesar los argumentos de línea de comandos!</value>
|
||||
</data>
|
||||
<data name="strCompatibilityProblemDetected" xml:space="preserve">
|
||||
<value>Detectado problema de compatibilidad</value>
|
||||
</data>
|
||||
<data name="strComponentsCheck" xml:space="preserve">
|
||||
<value>Comprobación de Componentes</value>
|
||||
</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">
|
||||
<value>No se pudo definir el estado del host!</value>
|
||||
</data>
|
||||
<data name="strConfigPropertyGridValueFailed" xml:space="preserve">
|
||||
<value>¡Fallo en pGrid_PopertyValueChanged!</value>
|
||||
</data>
|
||||
<data name="strConfigUiLoadFailed" xml:space="preserve">
|
||||
<value>Error al Cargar la Interfaz de Configuración de Usuario</value>
|
||||
</data>
|
||||
<data name="strConfirmCloseConnection" xml:space="preserve">
|
||||
<value>Confirme el cierre de las pestañas de conexiones</value>
|
||||
</data>
|
||||
<data name="strConfirmCloseConnectionMainInstruction" xml:space="preserve">
|
||||
<value>Desea cerrar la conexión, "{0}"?</value>
|
||||
</data>
|
||||
@@ -446,9 +464,6 @@ Versión de Control {0} de VNCSharpNG</value>
|
||||
<data name="strConfirmDeleteNodeFolderNotEmpty" xml:space="preserve">
|
||||
<value>¿Está seguro de querer eliminar la carpeta, "{0}"? Cualquier carpeta o conexión que contenga será también eliminada.</value>
|
||||
</data>
|
||||
<data name="strConfirmExit" xml:space="preserve">
|
||||
<value>Confirmar al salir si hay conexiones abiertas</value>
|
||||
</data>
|
||||
<data name="strConfirmExitMainInstruction" xml:space="preserve">
|
||||
<value>¿Quiere cerrar todas las conexiones abiertas?</value>
|
||||
</data>
|
||||
@@ -524,6 +539,9 @@ Arrancando con un nuevo archivo de conexiones.</value>
|
||||
<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>
|
||||
</data>
|
||||
<data name="strConnenctionCloseEvent" xml:space="preserve">
|
||||
<value>Evento de conexión cerrado</value>
|
||||
</data>
|
||||
<data name="strConnenctionCloseEventFailed" xml:space="preserve">
|
||||
<value>¡Ha fallado el evento Closed en Connection!</value>
|
||||
</data>
|
||||
@@ -533,6 +551,9 @@ Arrancando con un nuevo archivo de conexiones.</value>
|
||||
<data name="strCurrentVersion" xml:space="preserve">
|
||||
<value>Versión Instalada</value>
|
||||
</data>
|
||||
<data name="strDefaultTheme" xml:space="preserve">
|
||||
<value>Tema por defecto</value>
|
||||
</data>
|
||||
<data name="strDetect" xml:space="preserve">
|
||||
<value>Detectar</value>
|
||||
</data>
|
||||
@@ -572,6 +593,9 @@ Arrancando con un nuevo archivo de conexiones.</value>
|
||||
<data name="strEndPort" xml:space="preserve">
|
||||
<value>Puerto Final</value>
|
||||
</data>
|
||||
<data name="strErrorAddExternalToolsToToolBarFailed" xml:space="preserve">
|
||||
<value>Fallo al AddExternalToolsToToolBar (frmMain). {0}</value>
|
||||
</data>
|
||||
<data name="strErrorAddFolderFailed" xml:space="preserve">
|
||||
<value>Añadir Carpeta (UI.Window.Tree) fallida. {0}</value>
|
||||
</data>
|
||||
@@ -688,7 +712,7 @@ Ver el articulo de soporte de Microsoft en http://support.microsoft.com/kb/81183
|
||||
<value>¡No se pudo crear una nueva conexión HTTP!</value>
|
||||
</data>
|
||||
<data name="strHttpDocumentTileChangeFailed" xml:space="preserve">
|
||||
<value>¡Fallo en el cambio de HTTP Document Tile!</value>
|
||||
<value>¡Fallo al cambiar el azulejo del documento HTTP!</value>
|
||||
</data>
|
||||
<data name="strHttpSetPropsFailed" xml:space="preserve">
|
||||
<value>¡Asignación de Propiedades HTTP fallida!</value>
|
||||
@@ -744,6 +768,21 @@ Ver el articulo de soporte de Microsoft en http://support.microsoft.com/kb/81183
|
||||
<data name="strIntAppFocusFailed" xml:space="preserve">
|
||||
<value>¡No se pudo centrar el foco en Int App!</value>
|
||||
</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">
|
||||
<value>Título Int App: {0}</value>
|
||||
</data>
|
||||
@@ -762,6 +801,9 @@ Ver el articulo de soporte de Microsoft en http://support.microsoft.com/kb/81183
|
||||
<data name="strLabelChangeLog" xml:space="preserve">
|
||||
<value>Registro de cambios:</value>
|
||||
</data>
|
||||
<data name="strLabelClosingConnections" xml:space="preserve">
|
||||
<value>Al cerrar las conexiones:</value>
|
||||
</data>
|
||||
<data name="strLabelConnect" xml:space="preserve">
|
||||
<value>&Conectar:</value>
|
||||
</data>
|
||||
@@ -960,6 +1002,15 @@ Ver el articulo de soporte de Microsoft en http://support.microsoft.com/kb/81183
|
||||
<data name="strMenuNotifications" xml:space="preserve">
|
||||
<value>Notificaciones</value>
|
||||
</data>
|
||||
<data name="strMenuNotificationsCopyAll" xml:space="preserve">
|
||||
<value>Copiar todo</value>
|
||||
</data>
|
||||
<data name="strMenuNotificationsDelete" xml:space="preserve">
|
||||
<value>Borrar</value>
|
||||
</data>
|
||||
<data name="strMenuNotificationsDeleteAll" xml:space="preserve">
|
||||
<value>Borrar todo</value>
|
||||
</data>
|
||||
<data name="strMenuOpenConnectionFile" xml:space="preserve">
|
||||
<value>Abrir Archivo de Conexión...</value>
|
||||
</data>
|
||||
@@ -1020,9 +1071,15 @@ Ver el articulo de soporte de Microsoft en http://support.microsoft.com/kb/81183
|
||||
<data name="strMenuSessionsAndScreenshots" xml:space="preserve">
|
||||
<value>Sesiones y Capturas de Pantalla</value>
|
||||
</data>
|
||||
<data name="strMenuShowHelpText" xml:space="preserve">
|
||||
<value>&Mostrar texto de ayuda</value>
|
||||
</data>
|
||||
<data name="strMenuShowText" xml:space="preserve">
|
||||
<value>Mostar Texto</value>
|
||||
</data>
|
||||
<data name="strMenuSmartSize" xml:space="preserve">
|
||||
<value>SmartSize (RDP/VNC)</value>
|
||||
</data>
|
||||
<data name="strMenuSSHFileTransfer" xml:space="preserve">
|
||||
<value>Tranferencia de Archivos por SSH</value>
|
||||
</data>
|
||||
@@ -1111,6 +1168,15 @@ Ver el articulo de soporte de Microsoft en http://support.microsoft.com/kb/81183
|
||||
<data name="strOpenPorts" xml:space="preserve">
|
||||
<value>Puertos Abiertos</value>
|
||||
</data>
|
||||
<data name="strOptionsTabTheme" xml:space="preserve">
|
||||
<value>Tema</value>
|
||||
</data>
|
||||
<data name="strOptionsThemeButtonDelete" xml:space="preserve">
|
||||
<value>&Eliminar</value>
|
||||
</data>
|
||||
<data name="strOptionsThemeButtonNew" xml:space="preserve">
|
||||
<value>&Nuevo</value>
|
||||
</data>
|
||||
<data name="strPanelName" xml:space="preserve">
|
||||
<value>Nombre del Panel</value>
|
||||
</data>
|
||||
@@ -1399,6 +1465,9 @@ Ver el articulo de soporte de Microsoft en http://support.microsoft.com/kb/81183
|
||||
<data name="strPropertyNameUseConsoleSession" xml:space="preserve">
|
||||
<value>Usar Sesión de Consola</value>
|
||||
</data>
|
||||
<data name="strPropertyNameUseCredSsp" xml:space="preserve">
|
||||
<value>Usar CredSSP</value>
|
||||
</data>
|
||||
<data name="strPropertyNameUser1" xml:space="preserve">
|
||||
<value>Campo de Usuario</value>
|
||||
</data>
|
||||
@@ -1446,12 +1515,21 @@ Mensaje:
|
||||
<data name="strPuttyGetSessionsFailed" xml:space="preserve">
|
||||
<value>¡Fallo en la carga de las Sesiones de Putty!</value>
|
||||
</data>
|
||||
<data name="strPuttyHandle" xml:space="preserve">
|
||||
<value>Manejar Putty: {0}</value>
|
||||
</data>
|
||||
<data name="strPuttyKillFailed" xml:space="preserve">
|
||||
<value>¡Kill del Proceso Putty fallido!</value>
|
||||
</data>
|
||||
<data name="strPuttyParentHandle" xml:space="preserve">
|
||||
<value>Manejar el panel: {0}</value>
|
||||
</data>
|
||||
<data name="strPuttyResizeFailed" xml:space="preserve">
|
||||
<value>¡Redimensionamiento de Putty fallido!</value>
|
||||
</data>
|
||||
<data name="strPuttySavedSessionsRootName" xml:space="preserve">
|
||||
<value>Sesiones guardadas de PuTTY</value>
|
||||
</data>
|
||||
<data name="strPuttySettings" xml:space="preserve">
|
||||
<value>Opciones de PuTTY</value>
|
||||
</data>
|
||||
@@ -1461,6 +1539,12 @@ Mensaje:
|
||||
<data name="strPuttyStartFailed" xml:space="preserve">
|
||||
<value>¡Fallo en el arranque de Putty!</value>
|
||||
</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">
|
||||
<value>Conexión Rápida</value>
|
||||
</data>
|
||||
@@ -1473,6 +1557,9 @@ Mensaje:
|
||||
<data name="strQuickConnectHistoryExistsFailed" xml:space="preserve">
|
||||
<value>¡Fallo en el Histórico de Conexiones Rápidas!</value>
|
||||
</data>
|
||||
<data name="strRadioCloseWarnAll" xml:space="preserve">
|
||||
<value>&Avisarme al cerrar conexiones</value>
|
||||
</data>
|
||||
<data name="strRAW" xml:space="preserve">
|
||||
<value>RAW</value>
|
||||
</data>
|
||||
@@ -1683,6 +1770,9 @@ Mensaje:
|
||||
<data name="strScreenshots" xml:space="preserve">
|
||||
<value>Volcados de Pantalla</value>
|
||||
</data>
|
||||
<data name="strSearchPrompt" xml:space="preserve">
|
||||
<value>Buscar</value>
|
||||
</data>
|
||||
<data name="strSendTo" xml:space="preserve">
|
||||
<value>Enviar a...</value>
|
||||
</data>
|
||||
@@ -1767,9 +1857,6 @@ Mensaje:
|
||||
<data name="strSSHTransferEndFailed" xml:space="preserve">
|
||||
<value>¡Final de Transferencia SSH (UI.Window.SSHTransfer) fallida!</value>
|
||||
</data>
|
||||
<data name="strSSHTransferFailed" xml:space="preserve">
|
||||
<value>Tranferencia</value>
|
||||
</data>
|
||||
<data name="strStartIP" xml:space="preserve">
|
||||
<value>IP Inicial</value>
|
||||
</data>
|
||||
@@ -1803,6 +1890,45 @@ Mensaje:
|
||||
<data name="strTheFollowing" xml:space="preserve">
|
||||
<value>El siguiente:</value>
|
||||
</data>
|
||||
<data name="strThemeCategoryConfigPanel" xml:space="preserve">
|
||||
<value>Panel de configuración</value>
|
||||
</data>
|
||||
<data name="strThemeCategoryConnectionsPanel" xml:space="preserve">
|
||||
<value>Panel de conexiones</value>
|
||||
</data>
|
||||
<data name="strThemeCategoryGeneral" xml:space="preserve">
|
||||
<value>General</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionConfigPanelBackgroundColor" xml:space="preserve">
|
||||
<value>El color de fondo del panel de configuración.</value>
|
||||
</data>
|
||||
<data name="strThemeNameConfigPanelBackgroundColor" xml:space="preserve">
|
||||
<value>Color de fondo del panel de configuración</value>
|
||||
</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">
|
||||
<value>Color del texto del menú</value>
|
||||
</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">
|
||||
<value>Color de fondo de la barra de herramientas</value>
|
||||
</data>
|
||||
<data name="strThemeNameToolbarTextColor" xml:space="preserve">
|
||||
<value>Color del texto de la barra de herramientas</value>
|
||||
</data>
|
||||
<data name="strThemeNameWindowBackgroundColor" xml:space="preserve">
|
||||
<value>Color de fondo de la ventana</value>
|
||||
</data>
|
||||
<data name="strTitleError" xml:space="preserve">
|
||||
<value>Error ({0})</value>
|
||||
</data>
|
||||
@@ -1839,6 +1965,9 @@ Mensaje:
|
||||
<data name="strUncheckProperties" xml:space="preserve">
|
||||
<value>¡Desmarque las propiedades que no quiera que sean guardadas!</value>
|
||||
</data>
|
||||
<data name="strUnnamedTheme" xml:space="preserve">
|
||||
<value>Tema sin nombre</value>
|
||||
</data>
|
||||
<data name="strUpdateAvailable" xml:space="preserve">
|
||||
<value>Actualización de mRemoteNG disponible</value>
|
||||
</data>
|
||||
|
||||
@@ -148,7 +148,10 @@
|
||||
<value>Toujours se connecter, même si l'authentification échoue</value>
|
||||
</data>
|
||||
<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 name="strAlwaysShowPanelTabs" xml:space="preserve">
|
||||
<value>Toujours afficher les onglets du panneau</value>
|
||||
</data>
|
||||
<data name="strAlwaysShowSysTrayIcon" xml:space="preserve">
|
||||
<value>Toujours afficher l'icone dans la zone de notification</value>
|
||||
@@ -400,6 +403,12 @@ Si la vérification des composants ou l'utilisation d'ICA échoue malgré tout,
|
||||
<data name="strCommandLineArgsCouldNotBeParsed" xml:space="preserve">
|
||||
<value>Impossible de parcourir les arguments de la ligne de commande !</value>
|
||||
</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">
|
||||
<value>Vérifiez les composants</value>
|
||||
</data>
|
||||
@@ -424,9 +433,6 @@ Si la vérification des composants ou l'utilisation d'ICA échoue malgré tout,
|
||||
<data name="strConfigUiLoadFailed" xml:space="preserve">
|
||||
<value>Fenêtre de configuration échec du chargement!</value>
|
||||
</data>
|
||||
<data name="strConfirmCloseConnection" xml:space="preserve">
|
||||
<value>Confirmez la fermeture de l'onglet des connexions</value>
|
||||
</data>
|
||||
<data name="strConfirmCloseConnectionMainInstruction" xml:space="preserve">
|
||||
<value>Voulez-vous fermer la connexion, "{0}"?</value>
|
||||
</data>
|
||||
@@ -448,9 +454,6 @@ Si la vérification des composants ou l'utilisation d'ICA échoue malgré tout,
|
||||
<data name="strConfirmDeleteNodeFolderNotEmpty" xml:space="preserve">
|
||||
<value>Etes-vous sûr de vouloir supprimer le dossier, "{0}"? Tous les dossiers ou les connexions qu'il contient seront également supprimés.</value>
|
||||
</data>
|
||||
<data name="strConfirmExit" xml:space="preserve">
|
||||
<value>Confirmer la sortie si des connexions sont ouvertes</value>
|
||||
</data>
|
||||
<data name="strConfirmExitMainInstruction" xml:space="preserve">
|
||||
<value>Voulez-vous de fermer toutes les connexions ouvertes?</value>
|
||||
</data>
|
||||
@@ -532,9 +535,15 @@ Si la vérification des composants ou l'utilisation d'ICA échoue malgré tout,
|
||||
<data name="strCouldNotCreateNewConnectionsFile" xml:space="preserve">
|
||||
<value>Impossible de créer le nouveau fichier de connexions!</value>
|
||||
</data>
|
||||
<data name="strCouldNotFindToolStripInFilteredPropertyGrid" xml:space="preserve">
|
||||
<value>Le contrôle ToolStrip est introuvable dans le FilteredPropertyGrid.</value>
|
||||
</data>
|
||||
<data name="strCurrentVersion" xml:space="preserve">
|
||||
<value>Version installée</value>
|
||||
</data>
|
||||
<data name="strDefaultTheme" xml:space="preserve">
|
||||
<value>Thème par défaut</value>
|
||||
</data>
|
||||
<data name="strDetect" xml:space="preserve">
|
||||
<value>Détecter</value>
|
||||
</data>
|
||||
@@ -600,7 +609,7 @@ Si la vérification des composants ou l'utilisation d'ICA échoue malgré tout,
|
||||
</data>
|
||||
<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}.
|
||||
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>
|
||||
</data>
|
||||
@@ -715,6 +724,9 @@ Allez sur l'article du support de Microsoft pour plus d'informations http://supp
|
||||
<data name="strIcaSetResolutionFailed" xml:space="preserve">
|
||||
<value>Échec de ICA Set Resolution !</value>
|
||||
</data>
|
||||
<data name="strIdentifyQuickConnectTabs" xml:space="preserve">
|
||||
<value>Identifier les onglets de connexion rapide en ajoutant le préfixe "Rapide."</value>
|
||||
</data>
|
||||
<data name="strImportAD" xml:space="preserve">
|
||||
<value>Importer à partir d'Active Directory</value>
|
||||
</data>
|
||||
@@ -770,7 +782,7 @@ Allez sur l'article du support de Microsoft pour plus d'informations http://supp
|
||||
<value>CTRL-ALT-DEL</value>
|
||||
</data>
|
||||
<data name="strKeysCtrlEsc" xml:space="preserve">
|
||||
<value>CTRL-ESC</value>
|
||||
<value>CTRL-Echap</value>
|
||||
</data>
|
||||
<data name="strLabelAddress" xml:space="preserve">
|
||||
<value>Adresse:</value>
|
||||
@@ -781,6 +793,9 @@ Allez sur l'article du support de Microsoft pour plus d'informations http://supp
|
||||
<data name="strLabelChangeLog" xml:space="preserve">
|
||||
<value>Historique des changements:</value>
|
||||
</data>
|
||||
<data name="strLabelClosingConnections" xml:space="preserve">
|
||||
<value>Lors de la fermeture des connexions :</value>
|
||||
</data>
|
||||
<data name="strLabelConnect" xml:space="preserve">
|
||||
<value>&Connecter:</value>
|
||||
</data>
|
||||
@@ -979,6 +994,15 @@ Allez sur l'article du support de Microsoft pour plus d'informations http://supp
|
||||
<data name="strMenuNotifications" xml:space="preserve">
|
||||
<value>Notifications</value>
|
||||
</data>
|
||||
<data name="strMenuNotificationsCopyAll" xml:space="preserve">
|
||||
<value>Tout copier</value>
|
||||
</data>
|
||||
<data name="strMenuNotificationsDelete" xml:space="preserve">
|
||||
<value>Supprimer</value>
|
||||
</data>
|
||||
<data name="strMenuNotificationsDeleteAll" xml:space="preserve">
|
||||
<value>Supprimer tout</value>
|
||||
</data>
|
||||
<data name="strMenuOpenConnectionFile" xml:space="preserve">
|
||||
<value>Ouvrir un fichier de connexion...</value>
|
||||
</data>
|
||||
@@ -1039,6 +1063,9 @@ Allez sur l'article du support de Microsoft pour plus d'informations http://supp
|
||||
<data name="strMenuSessionsAndScreenshots" xml:space="preserve">
|
||||
<value>Sessions et capture d'ecran</value>
|
||||
</data>
|
||||
<data name="strMenuShowHelpText" xml:space="preserve">
|
||||
<value>&Afficher le texte d'aide</value>
|
||||
</data>
|
||||
<data name="strMenuShowText" xml:space="preserve">
|
||||
<value>Afficher le texte</value>
|
||||
</data>
|
||||
@@ -1133,6 +1160,15 @@ Si vous rencontrez une erreur, créez un nouveau fichier de connexion s'il vous
|
||||
<data name="strOpenPorts" xml:space="preserve">
|
||||
<value>Ports ouverts</value>
|
||||
</data>
|
||||
<data name="strOptionsTabTheme" xml:space="preserve">
|
||||
<value>Thème</value>
|
||||
</data>
|
||||
<data name="strOptionsThemeButtonDelete" xml:space="preserve">
|
||||
<value>&Supprimer</value>
|
||||
</data>
|
||||
<data name="strOptionsThemeButtonNew" xml:space="preserve">
|
||||
<value>&Nouveau</value>
|
||||
</data>
|
||||
<data name="strPanelName" xml:space="preserve">
|
||||
<value>Nom du panneau</value>
|
||||
</data>
|
||||
@@ -1271,6 +1307,9 @@ Si vous rencontrez une erreur, créez un nouveau fichier de connexion s'il vous
|
||||
<data name="strPropertyDescriptionUseConsoleSession" xml:space="preserve">
|
||||
<value>Connexion à la console de l'hôte distant.</value>
|
||||
</data>
|
||||
<data name="strPropertyDescriptionUseCredSsp" xml:space="preserve">
|
||||
<value>Utilisez les informations d'identification Security Support Provider (CredSSP) pour l'authentification si elle est disponible.</value>
|
||||
</data>
|
||||
<data name="strPropertyDescriptionUser1" xml:space="preserve">
|
||||
<value>N'hésitez pas à entrer toutes les informations dont vous avez besoin ici.</value>
|
||||
</data>
|
||||
@@ -1421,6 +1460,9 @@ Si vous rencontrez une erreur, créez un nouveau fichier de connexion s'il vous
|
||||
<data name="strPropertyNameUseConsoleSession" xml:space="preserve">
|
||||
<value>Utilisez la session console</value>
|
||||
</data>
|
||||
<data name="strPropertyNameUseCredSsp" xml:space="preserve">
|
||||
<value>Utiliser CredSSP</value>
|
||||
</data>
|
||||
<data name="strPropertyNameUser1" xml:space="preserve">
|
||||
<value>Champ utilisateur</value>
|
||||
</data>
|
||||
@@ -1486,6 +1528,9 @@ Message:
|
||||
<data name="strPuttyResizeFailed" xml:space="preserve">
|
||||
<value>Échec du redimensionnement de Putty !</value>
|
||||
</data>
|
||||
<data name="strPuttySavedSessionsRootName" xml:space="preserve">
|
||||
<value>Sessions PuTTY sauvegardées</value>
|
||||
</data>
|
||||
<data name="strPuttySettings" xml:space="preserve">
|
||||
<value>Paramètres PuTTY</value>
|
||||
</data>
|
||||
@@ -1516,6 +1561,18 @@ Message:
|
||||
<data name="strQuickConnectHistoryExistsFailed" xml:space="preserve">
|
||||
<value>Échec d'Existence d'Historique de Connexion Rapide !</value>
|
||||
</data>
|
||||
<data name="strRadioCloseWarnAll" xml:space="preserve">
|
||||
<value>&M'avertir lors de la fermeture des connexions</value>
|
||||
</data>
|
||||
<data name="strRadioCloseWarnExit" xml:space="preserve">
|
||||
<value>M'avertir uniquement lorsque mRemoteNG se f&erme</value>
|
||||
</data>
|
||||
<data name="strRadioCloseWarnMultiple" xml:space="preserve">
|
||||
<value>M'avertir seulement lors de la fermeture de connexions &multiples</value>
|
||||
</data>
|
||||
<data name="strRadioCloseWarnNever" xml:space="preserve">
|
||||
<value>&Ne pas m'avertir lors de la fermeture des connexions</value>
|
||||
</data>
|
||||
<data name="strRAW" xml:space="preserve">
|
||||
<value>RAW</value>
|
||||
</data>
|
||||
@@ -1732,6 +1789,9 @@ Message:
|
||||
<data name="strScreenshots" xml:space="preserve">
|
||||
<value>Captures d'écran</value>
|
||||
</data>
|
||||
<data name="strSearchPrompt" xml:space="preserve">
|
||||
<value>Rechercher</value>
|
||||
</data>
|
||||
<data name="strSendTo" xml:space="preserve">
|
||||
<value>Envoyer à ...</value>
|
||||
</data>
|
||||
@@ -1817,7 +1877,7 @@ Message:
|
||||
<value>Échec de SSH Transfer End (UI.Window.SSHTransfer)!</value>
|
||||
</data>
|
||||
<data name="strSSHTransferFailed" xml:space="preserve">
|
||||
<value>Transfert</value>
|
||||
<value>Echec du transfert SSH échoué.</value>
|
||||
</data>
|
||||
<data name="strStartIP" xml:space="preserve">
|
||||
<value>IP de début</value>
|
||||
@@ -1852,6 +1912,117 @@ Message:
|
||||
<data name="strTheFollowing" xml:space="preserve">
|
||||
<value>Ce qui suit :</value>
|
||||
</data>
|
||||
<data name="strThemeCategoryConfigPanel" xml:space="preserve">
|
||||
<value>Panneau de configuration</value>
|
||||
</data>
|
||||
<data name="strThemeCategoryConnectionsPanel" xml:space="preserve">
|
||||
<value>Panneau de connexions</value>
|
||||
</data>
|
||||
<data name="strThemeCategoryGeneral" xml:space="preserve">
|
||||
<value>Générale</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionConfigPanelBackgroundColor" xml:space="preserve">
|
||||
<value>La couleur de fond du panneau de configuration.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionConfigPanelCategoryTextColor" xml:space="preserve">
|
||||
<value>La couleur du texte catégorie dans le panneau de configuration.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionConfigPanelGridLineColor" xml:space="preserve">
|
||||
<value>La couleur du quadrillage dans le panneau de configuration</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionConfigPanelHelpBackgroundColor" xml:space="preserve">
|
||||
<value>La couleur de fond de la section d'aide du panneau de configuration.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionConfigPanelHelpTextColor" xml:space="preserve">
|
||||
<value>La couleur du texte dans la section d'aide du panneau de configuration.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionConfigPanelTextColor" xml:space="preserve">
|
||||
<value>La couleur du texte dans le panneau de configuration.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionConnectionsPanelBackgroundColor" xml:space="preserve">
|
||||
<value>La couleur de fond du panneau des connexions.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionConnectionsPanelTextColor" xml:space="preserve">
|
||||
<value>La couleur du texte dans le panneau des connexions.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionConnectionsPanelTreeLineColor" xml:space="preserve">
|
||||
<value>La couleur des lignes d'arborescence dans le panneau des connexions.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionMenuBackgroundColor" xml:space="preserve">
|
||||
<value>La couleur de fond des menus.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionMenuTextColor" xml:space="preserve">
|
||||
<value>La couleur du texte dans les menus.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionSearchBoxBackgroundColor" xml:space="preserve">
|
||||
<value>La couleur de fond de la boîte de recherche.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionSearchBoxTextColor" xml:space="preserve">
|
||||
<value>La couleur du texte dans la zone Rechercher.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionSearchBoxTextPromptColor" xml:space="preserve">
|
||||
<value>La couleur du texte dans la zone de recherche rapide.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionToolbarBackgroundColor" xml:space="preserve">
|
||||
<value>La couleur de fond des barres d'outils.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionToolbarTextColor" xml:space="preserve">
|
||||
<value>La couleur du texte dans les barres d'outils.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionWindowBackgroundColor" xml:space="preserve">
|
||||
<value>La couleur d'arrière-plan de la fenêtre principale.</value>
|
||||
</data>
|
||||
<data name="strThemeNameConfigPanelBackgroundColor" xml:space="preserve">
|
||||
<value>Couleur de fond du panneau de configuration</value>
|
||||
</data>
|
||||
<data name="strThemeNameConfigPanelCategoryTextColor" xml:space="preserve">
|
||||
<value>Couleur de texte pour le panneau de configuration</value>
|
||||
</data>
|
||||
<data name="strThemeNameConfigPanelGridLineColor" xml:space="preserve">
|
||||
<value>Couleur des ligne de la grille du panneau de configuration</value>
|
||||
</data>
|
||||
<data name="strThemeNameConfigPanelHelpBackgroundColor" xml:space="preserve">
|
||||
<value>Couleur de Fond de l'Aide du Panneau de Configuration</value>
|
||||
</data>
|
||||
<data name="strThemeNameConfigPanelHelpTextColor" xml:space="preserve">
|
||||
<value>Couleur du Texte de l'Aide du Panneau de Configuration</value>
|
||||
</data>
|
||||
<data name="strThemeNameConfigPanelTextColor" xml:space="preserve">
|
||||
<value>Couleur du Texte du Panneau de Configuration</value>
|
||||
</data>
|
||||
<data name="strThemeNameConnectionsPanelBackgroundColor" xml:space="preserve">
|
||||
<value>Couleur de Fond du Panneau des Connexions</value>
|
||||
</data>
|
||||
<data name="strThemeNameConnectionsPanelTextColor" xml:space="preserve">
|
||||
<value>Couleur du Texte du Panneau de Connexions</value>
|
||||
</data>
|
||||
<data name="strThemeNameConnectionsPanelTreeLineColor" xml:space="preserve">
|
||||
<value>Couleur de l'arbre des connections dans le menu</value>
|
||||
</data>
|
||||
<data name="strThemeNameMenuBackgroundColor" xml:space="preserve">
|
||||
<value>Couleur de Fond du Menu</value>
|
||||
</data>
|
||||
<data name="strThemeNameMenuTextColor" xml:space="preserve">
|
||||
<value>Couleur de texte du menu</value>
|
||||
</data>
|
||||
<data name="strThemeNameSearchBoxBackgroundColor" xml:space="preserve">
|
||||
<value>Couleur de fond de la boite de recherche</value>
|
||||
</data>
|
||||
<data name="strThemeNameSearchBoxTextColor" xml:space="preserve">
|
||||
<value>Couleur du texte de la recherche</value>
|
||||
</data>
|
||||
<data name="strThemeNameSearchBoxTextPromptColor" xml:space="preserve">
|
||||
<value>Couleur du Texte de la Boîte de Recherche</value>
|
||||
</data>
|
||||
<data name="strThemeNameToolbarBackgroundColor" xml:space="preserve">
|
||||
<value>Couleur de fond de la barre d'outils</value>
|
||||
</data>
|
||||
<data name="strThemeNameToolbarTextColor" xml:space="preserve">
|
||||
<value>Couleur du texte de la barre d'outils</value>
|
||||
</data>
|
||||
<data name="strThemeNameWindowBackgroundColor" xml:space="preserve">
|
||||
<value>Couleur de fond de la fenêtre</value>
|
||||
</data>
|
||||
<data name="strTitleError" xml:space="preserve">
|
||||
<value>Erreur ({0})</value>
|
||||
</data>
|
||||
@@ -1888,6 +2059,9 @@ Message:
|
||||
<data name="strUncheckProperties" xml:space="preserve">
|
||||
<value>Décochez les propriétés que vous souhaitez ne pas être enregistrer!</value>
|
||||
</data>
|
||||
<data name="strUnnamedTheme" xml:space="preserve">
|
||||
<value>Thème sans nom</value>
|
||||
</data>
|
||||
<data name="strUpdateAvailable" xml:space="preserve">
|
||||
<value>mRemoteNG nécessite une mise à jour</value>
|
||||
</data>
|
||||
|
||||
@@ -150,6 +150,9 @@
|
||||
<data name="strAlwaysShowPanelSelection" xml:space="preserve">
|
||||
<value>Mostra sempre la finsetra di selezione pannello all'apertura di una connessione</value>
|
||||
</data>
|
||||
<data name="strAlwaysShowPanelTabs" xml:space="preserve">
|
||||
<value>Mostra sempre le schede dei pannelli</value>
|
||||
</data>
|
||||
<data name="strAlwaysShowSysTrayIcon" xml:space="preserve">
|
||||
<value>Mostra sempre l'icona nell'area delle notifiche</value>
|
||||
</data>
|
||||
@@ -435,9 +438,6 @@ VncSharpNG Control versione {0}</value>
|
||||
<data name="strConfigUiLoadFailed" xml:space="preserve">
|
||||
<value>Caricamento Config UI fallito!</value>
|
||||
</data>
|
||||
<data name="strConfirmCloseConnection" xml:space="preserve">
|
||||
<value>Conferma la chiusura delle tab delle connessioni</value>
|
||||
</data>
|
||||
<data name="strConfirmCloseConnectionMainInstruction" xml:space="preserve">
|
||||
<value>Vuoi chiudere la connessione "{0}"?</value>
|
||||
</data>
|
||||
@@ -459,9 +459,6 @@ VncSharpNG Control versione {0}</value>
|
||||
<data name="strConfirmDeleteNodeFolderNotEmpty" xml:space="preserve">
|
||||
<value>Sei sicuro di voler cancellare la cartella "{0}"? Tutte le sottocartelle e le connessioni contenute in essa verranno eliminate.</value>
|
||||
</data>
|
||||
<data name="strConfirmExit" xml:space="preserve">
|
||||
<value>Chiedi conferma prima di uscire se ci sono connessioni aperte</value>
|
||||
</data>
|
||||
<data name="strConfirmExitMainInstruction" xml:space="preserve">
|
||||
<value>Vuoi chiudere tutte le connessioni aperte?</value>
|
||||
</data>
|
||||
@@ -549,6 +546,9 @@ Creazione di un nuovo file delle connessioni.</value>
|
||||
<data name="strCurrentVersion" xml:space="preserve">
|
||||
<value>Versione installata</value>
|
||||
</data>
|
||||
<data name="strDefaultTheme" xml:space="preserve">
|
||||
<value>Tema predefinito</value>
|
||||
</data>
|
||||
<data name="strDetect" xml:space="preserve">
|
||||
<value>Rileva</value>
|
||||
</data>
|
||||
@@ -706,9 +706,6 @@ Visualizza il supporto Microsoft http://support.microsoft.com/kb/811833/it per o
|
||||
<data name="strHttpConnectionFailed" xml:space="preserve">
|
||||
<value>Impossibile creare una nuova connessione HTTP!</value>
|
||||
</data>
|
||||
<data name="strHttpDocumentTileChangeFailed" xml:space="preserve">
|
||||
<value>Cambiamento HTTP Document Tile fallito!</value>
|
||||
</data>
|
||||
<data name="strHttpSetPropsFailed" xml:space="preserve">
|
||||
<value>Impostazione delle proprietà HTTP fallita!</value>
|
||||
</data>
|
||||
@@ -730,6 +727,9 @@ Visualizza il supporto Microsoft http://support.microsoft.com/kb/811833/it per o
|
||||
<data name="strIcaSetResolutionFailed" xml:space="preserve">
|
||||
<value>ICA Set Resolution fallito!</value>
|
||||
</data>
|
||||
<data name="strIdentifyQuickConnectTabs" xml:space="preserve">
|
||||
<value>Aggiungi il prefisso "Quick:" alle schede di connessioni rapide</value>
|
||||
</data>
|
||||
<data name="strImportAD" xml:space="preserve">
|
||||
<value>Importa da Active Directory</value>
|
||||
</data>
|
||||
@@ -796,6 +796,9 @@ Visualizza il supporto Microsoft http://support.microsoft.com/kb/811833/it per o
|
||||
<data name="strLabelChangeLog" xml:space="preserve">
|
||||
<value>Modifiche recenti:</value>
|
||||
</data>
|
||||
<data name="strLabelClosingConnections" xml:space="preserve">
|
||||
<value>Alla chiusura delle connessioni:</value>
|
||||
</data>
|
||||
<data name="strLabelConnect" xml:space="preserve">
|
||||
<value>&Connetti:</value>
|
||||
</data>
|
||||
@@ -994,6 +997,15 @@ Visualizza il supporto Microsoft http://support.microsoft.com/kb/811833/it per o
|
||||
<data name="strMenuNotifications" xml:space="preserve">
|
||||
<value>Notifiche</value>
|
||||
</data>
|
||||
<data name="strMenuNotificationsCopyAll" xml:space="preserve">
|
||||
<value>Copia tutto</value>
|
||||
</data>
|
||||
<data name="strMenuNotificationsDelete" xml:space="preserve">
|
||||
<value>Elimina</value>
|
||||
</data>
|
||||
<data name="strMenuNotificationsDeleteAll" xml:space="preserve">
|
||||
<value>Elimina tutto</value>
|
||||
</data>
|
||||
<data name="strMenuOpenConnectionFile" xml:space="preserve">
|
||||
<value>Apri file delle connessioni...</value>
|
||||
</data>
|
||||
@@ -1054,6 +1066,9 @@ Visualizza il supporto Microsoft http://support.microsoft.com/kb/811833/it per o
|
||||
<data name="strMenuSessionsAndScreenshots" xml:space="preserve">
|
||||
<value>Sessioni e screenshot</value>
|
||||
</data>
|
||||
<data name="strMenuShowHelpText" xml:space="preserve">
|
||||
<value>&Mostra testo di aiuto</value>
|
||||
</data>
|
||||
<data name="strMenuShowText" xml:space="preserve">
|
||||
<value>Mostra testo</value>
|
||||
</data>
|
||||
@@ -1147,6 +1162,15 @@ Visualizza il supporto Microsoft http://support.microsoft.com/kb/811833/it per o
|
||||
<data name="strOpenPorts" xml:space="preserve">
|
||||
<value>Porte aperte</value>
|
||||
</data>
|
||||
<data name="strOptionsTabTheme" xml:space="preserve">
|
||||
<value>Tema</value>
|
||||
</data>
|
||||
<data name="strOptionsThemeButtonDelete" xml:space="preserve">
|
||||
<value>Elimina</value>
|
||||
</data>
|
||||
<data name="strOptionsThemeButtonNew" xml:space="preserve">
|
||||
<value>&Nuovo</value>
|
||||
</data>
|
||||
<data name="strPanelName" xml:space="preserve">
|
||||
<value>Nome del pannello</value>
|
||||
</data>
|
||||
@@ -1285,6 +1309,9 @@ Visualizza il supporto Microsoft http://support.microsoft.com/kb/811833/it per o
|
||||
<data name="strPropertyDescriptionUseConsoleSession" xml:space="preserve">
|
||||
<value>Connettiti alla sessione della console dell'host remoto.</value>
|
||||
</data>
|
||||
<data name="strPropertyDescriptionUseCredSsp" xml:space="preserve">
|
||||
<value>Usa Credential Security Support Provider (CredSSP) per l'autenticazione, se disponibile.</value>
|
||||
</data>
|
||||
<data name="strPropertyDescriptionUser1" xml:space="preserve">
|
||||
<value>Sentiti libero di inserire qui informazioni a piacimento.</value>
|
||||
</data>
|
||||
@@ -1435,6 +1462,9 @@ Visualizza il supporto Microsoft http://support.microsoft.com/kb/811833/it per o
|
||||
<data name="strPropertyNameUseConsoleSession" xml:space="preserve">
|
||||
<value>Utilizza la sessione della console</value>
|
||||
</data>
|
||||
<data name="strPropertyNameUseCredSsp" xml:space="preserve">
|
||||
<value>Usa CredSSP</value>
|
||||
</data>
|
||||
<data name="strPropertyNameUser1" xml:space="preserve">
|
||||
<value>Campo utente</value>
|
||||
</data>
|
||||
@@ -1531,6 +1561,18 @@ Messaggio:
|
||||
<data name="strQuickConnectHistoryExistsFailed" xml:space="preserve">
|
||||
<value>Operazione Quick Connect History Exists fallita!</value>
|
||||
</data>
|
||||
<data name="strRadioCloseWarnAll" xml:space="preserve">
|
||||
<value>&Avvisami alla chiusura delle connessioni</value>
|
||||
</data>
|
||||
<data name="strRadioCloseWarnExit" xml:space="preserve">
|
||||
<value>Avvisami soltanto all'&uscita da mRemoteNG</value>
|
||||
</data>
|
||||
<data name="strRadioCloseWarnMultiple" xml:space="preserve">
|
||||
<value>Avvisami soltanto alla chiusura di &più connessioni</value>
|
||||
</data>
|
||||
<data name="strRadioCloseWarnNever" xml:space="preserve">
|
||||
<value>&Non avvisarmi alla chiusura delle connessioni</value>
|
||||
</data>
|
||||
<data name="strRAW" xml:space="preserve">
|
||||
<value>RAW</value>
|
||||
</data>
|
||||
@@ -1747,6 +1789,9 @@ Messaggio:
|
||||
<data name="strScreenshots" xml:space="preserve">
|
||||
<value>Screenshot</value>
|
||||
</data>
|
||||
<data name="strSearchPrompt" xml:space="preserve">
|
||||
<value>Cerca</value>
|
||||
</data>
|
||||
<data name="strSendTo" xml:space="preserve">
|
||||
<value>Invia a...</value>
|
||||
</data>
|
||||
@@ -1831,9 +1876,6 @@ Messaggio:
|
||||
<data name="strSSHTransferEndFailed" xml:space="preserve">
|
||||
<value>SSH Transfer End (UI.Window.SSHTransfer) fallito!</value>
|
||||
</data>
|
||||
<data name="strSSHTransferFailed" xml:space="preserve">
|
||||
<value>Trasferimento</value>
|
||||
</data>
|
||||
<data name="strStartIP" xml:space="preserve">
|
||||
<value>IP iniziale</value>
|
||||
</data>
|
||||
@@ -1867,6 +1909,117 @@ Messaggio:
|
||||
<data name="strTheFollowing" xml:space="preserve">
|
||||
<value>Il seguente:</value>
|
||||
</data>
|
||||
<data name="strThemeCategoryConfigPanel" xml:space="preserve">
|
||||
<value>Pannello configurazione</value>
|
||||
</data>
|
||||
<data name="strThemeCategoryConnectionsPanel" xml:space="preserve">
|
||||
<value>Pannello connessioni</value>
|
||||
</data>
|
||||
<data name="strThemeCategoryGeneral" xml:space="preserve">
|
||||
<value>Generale</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionConfigPanelBackgroundColor" xml:space="preserve">
|
||||
<value>Colore di sfondo del pannello configurazione.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionConfigPanelCategoryTextColor" xml:space="preserve">
|
||||
<value>Colore della categoria nel pannello configurazione.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionConfigPanelGridLineColor" xml:space="preserve">
|
||||
<value>Colore delle linee griglia nel pannello configurazione</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionConfigPanelHelpBackgroundColor" xml:space="preserve">
|
||||
<value>Colore di sfondo nell'area aiuto del pannello configurazione.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionConfigPanelHelpTextColor" xml:space="preserve">
|
||||
<value>Colore del testo nell'area aiuto del pannello configurazione.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionConfigPanelTextColor" xml:space="preserve">
|
||||
<value>Colore del testo nel pannello configurazione.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionConnectionsPanelBackgroundColor" xml:space="preserve">
|
||||
<value>Colore di sfondo nel pannello connessioni.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionConnectionsPanelTextColor" xml:space="preserve">
|
||||
<value>Colore del testo nel pannello connessioni.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionConnectionsPanelTreeLineColor" xml:space="preserve">
|
||||
<value>Colore delle linee di alberatura nel pannello connessioni.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionMenuBackgroundColor" xml:space="preserve">
|
||||
<value>Colore di sfondo dei menu.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionMenuTextColor" xml:space="preserve">
|
||||
<value>Colore del testo nei menu.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionSearchBoxBackgroundColor" xml:space="preserve">
|
||||
<value>Colore di sfondo della casella di ricerca.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionSearchBoxTextColor" xml:space="preserve">
|
||||
<value>Colore del testo nella casella di ricerca.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionSearchBoxTextPromptColor" xml:space="preserve">
|
||||
<value>Colore del prompt nella casella di ricerca.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionToolbarBackgroundColor" xml:space="preserve">
|
||||
<value>Colore di sfondo delle barre degli strumenti.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionToolbarTextColor" xml:space="preserve">
|
||||
<value>Colore del testo nelle barre degli strumenti.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionWindowBackgroundColor" xml:space="preserve">
|
||||
<value>Colore di sfondo della finestra principale.</value>
|
||||
</data>
|
||||
<data name="strThemeNameConfigPanelBackgroundColor" xml:space="preserve">
|
||||
<value>Colore sfondo pannello configurazione</value>
|
||||
</data>
|
||||
<data name="strThemeNameConfigPanelCategoryTextColor" xml:space="preserve">
|
||||
<value>Colore categoria pannello configurazione</value>
|
||||
</data>
|
||||
<data name="strThemeNameConfigPanelGridLineColor" xml:space="preserve">
|
||||
<value>Colore linee griglia pannello configurazione</value>
|
||||
</data>
|
||||
<data name="strThemeNameConfigPanelHelpBackgroundColor" xml:space="preserve">
|
||||
<value>Colore sfondo aiuto pannello configurazione</value>
|
||||
</data>
|
||||
<data name="strThemeNameConfigPanelHelpTextColor" xml:space="preserve">
|
||||
<value>Colore testo aiuto pannello configurazione</value>
|
||||
</data>
|
||||
<data name="strThemeNameConfigPanelTextColor" xml:space="preserve">
|
||||
<value>Colore testo pannello configurazione</value>
|
||||
</data>
|
||||
<data name="strThemeNameConnectionsPanelBackgroundColor" xml:space="preserve">
|
||||
<value>Colore sfondo pannello connessioni</value>
|
||||
</data>
|
||||
<data name="strThemeNameConnectionsPanelTextColor" xml:space="preserve">
|
||||
<value>Colore testo pannello connessioni</value>
|
||||
</data>
|
||||
<data name="strThemeNameConnectionsPanelTreeLineColor" xml:space="preserve">
|
||||
<value>Colore linee alberatura pannello connessioni</value>
|
||||
</data>
|
||||
<data name="strThemeNameMenuBackgroundColor" xml:space="preserve">
|
||||
<value>Colore sfondo menu</value>
|
||||
</data>
|
||||
<data name="strThemeNameMenuTextColor" xml:space="preserve">
|
||||
<value>Colore testo menu</value>
|
||||
</data>
|
||||
<data name="strThemeNameSearchBoxBackgroundColor" xml:space="preserve">
|
||||
<value>Colore sfondo casella ricerca</value>
|
||||
</data>
|
||||
<data name="strThemeNameSearchBoxTextColor" xml:space="preserve">
|
||||
<value>Colore testo casella ricerca</value>
|
||||
</data>
|
||||
<data name="strThemeNameSearchBoxTextPromptColor" xml:space="preserve">
|
||||
<value>Colore prompt casella ricerca</value>
|
||||
</data>
|
||||
<data name="strThemeNameToolbarBackgroundColor" xml:space="preserve">
|
||||
<value>Colore sfondo barra strumenti</value>
|
||||
</data>
|
||||
<data name="strThemeNameToolbarTextColor" xml:space="preserve">
|
||||
<value>Colore testo barra strumenti</value>
|
||||
</data>
|
||||
<data name="strThemeNameWindowBackgroundColor" xml:space="preserve">
|
||||
<value>Colore sfondo finestra</value>
|
||||
</data>
|
||||
<data name="strTitleError" xml:space="preserve">
|
||||
<value>Errore ({0})</value>
|
||||
</data>
|
||||
@@ -1903,6 +2056,9 @@ Messaggio:
|
||||
<data name="strUncheckProperties" xml:space="preserve">
|
||||
<value>Deseleziona le proprietà che non vuoi salvare!</value>
|
||||
</data>
|
||||
<data name="strUnnamedTheme" xml:space="preserve">
|
||||
<value>Tema senza nome</value>
|
||||
</data>
|
||||
<data name="strUpdateAvailable" xml:space="preserve">
|
||||
<value>mRemoteNG richiede un aggiornamento</value>
|
||||
</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
@@ -150,6 +150,9 @@
|
||||
<data name="strAlwaysShowPanelSelection" xml:space="preserve">
|
||||
<value>Altijd Paneel dialoogvenster tonen bij het openen van verbindingen</value>
|
||||
</data>
|
||||
<data name="strAlwaysShowPanelTabs" xml:space="preserve">
|
||||
<value>Altijd tabbladen tonen</value>
|
||||
</data>
|
||||
<data name="strAlwaysShowSysTrayIcon" xml:space="preserve">
|
||||
<value>Altijd het icoon in het systeemvak tonen</value>
|
||||
</data>
|
||||
@@ -414,6 +417,12 @@ VncSharpNG Versie {0}</value>
|
||||
<data name="strCommandLineArgsCouldNotBeParsed" xml:space="preserve">
|
||||
<value>Kan opdrachtprompt argumenten niet parsen!</value>
|
||||
</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">
|
||||
<value>Controle Componenten</value>
|
||||
</data>
|
||||
@@ -438,9 +447,6 @@ VncSharpNG Versie {0}</value>
|
||||
<data name="strConfigUiLoadFailed" xml:space="preserve">
|
||||
<value>Configuratie UI laden mislukt!</value>
|
||||
</data>
|
||||
<data name="strConfirmCloseConnection" xml:space="preserve">
|
||||
<value>Bevestig sluiten connectie tab</value>
|
||||
</data>
|
||||
<data name="strConfirmCloseConnectionMainInstruction" xml:space="preserve">
|
||||
<value>Wilt u de verbinding sluiten, "{0}"?</value>
|
||||
</data>
|
||||
@@ -462,9 +468,6 @@ VncSharpNG Versie {0}</value>
|
||||
<data name="strConfirmDeleteNodeFolderNotEmpty" xml:space="preserve">
|
||||
<value>Weet u het zeker dat u de map wilt verwijderen, "{0}"? Alle mappen of connecties daaronder zullen ook worden verwijderd.</value>
|
||||
</data>
|
||||
<data name="strConfirmExit" xml:space="preserve">
|
||||
<value>Bevestig afsluiten als er geopende verbindingen zijn</value>
|
||||
</data>
|
||||
<data name="strConfirmExitMainInstruction" xml:space="preserve">
|
||||
<value>Wilt u alle geopende verbindingen sluiten?</value>
|
||||
</data>
|
||||
@@ -549,9 +552,15 @@ Beginnen met nieuwe Connectie bestand.</value>
|
||||
<data name="strCouldNotCreateNewConnectionsFile" xml:space="preserve">
|
||||
<value>Kon geen nieuwe connectie bestand aanmaken!</value>
|
||||
</data>
|
||||
<data name="strCouldNotFindToolStripInFilteredPropertyGrid" xml:space="preserve">
|
||||
<value>Kan geen ToolStrip vinden in FilteredPropertyGrid.</value>
|
||||
</data>
|
||||
<data name="strCurrentVersion" xml:space="preserve">
|
||||
<value>Geïnstalleerde versie</value>
|
||||
</data>
|
||||
<data name="strDefaultTheme" xml:space="preserve">
|
||||
<value>Standaard thema</value>
|
||||
</data>
|
||||
<data name="strDetect" xml:space="preserve">
|
||||
<value>Detecteer</value>
|
||||
</data>
|
||||
@@ -710,7 +719,7 @@ Zie het Microsoft Support artikel op http://support.microsoft.com/kb/811833 voor
|
||||
<value>Kon geen nieuwe HTTP verbinding aanmaken!</value>
|
||||
</data>
|
||||
<data name="strHttpDocumentTileChangeFailed" xml:space="preserve">
|
||||
<value>Aanpassen HTTP Document Tegel mislukt!</value>
|
||||
<value>Verandering van HTTP document tegel niet gelukt!</value>
|
||||
</data>
|
||||
<data name="strHttpSetPropsFailed" xml:space="preserve">
|
||||
<value>Instellen HTTP Eigenschappen mislukt!</value>
|
||||
@@ -733,6 +742,9 @@ Zie het Microsoft Support artikel op http://support.microsoft.com/kb/811833 voor
|
||||
<data name="strIcaSetResolutionFailed" xml:space="preserve">
|
||||
<value>ICA Instellen Resolutie mislukt!</value>
|
||||
</data>
|
||||
<data name="strIdentifyQuickConnectTabs" xml:space="preserve">
|
||||
<value>Vindt de Snel aansluit tabs met het voorzetsel "Quick"</value>
|
||||
</data>
|
||||
<data name="strImportAD" xml:space="preserve">
|
||||
<value>Importeer van Active Directory</value>
|
||||
</data>
|
||||
@@ -799,6 +811,9 @@ Zie het Microsoft Support artikel op http://support.microsoft.com/kb/811833 voor
|
||||
<data name="strLabelChangeLog" xml:space="preserve">
|
||||
<value>Veranderingen:</value>
|
||||
</data>
|
||||
<data name="strLabelClosingConnections" xml:space="preserve">
|
||||
<value>Bij het sluiten van connecties:</value>
|
||||
</data>
|
||||
<data name="strLabelConnect" xml:space="preserve">
|
||||
<value>&Verbind:</value>
|
||||
</data>
|
||||
@@ -997,6 +1012,15 @@ Zie het Microsoft Support artikel op http://support.microsoft.com/kb/811833 voor
|
||||
<data name="strMenuNotifications" xml:space="preserve">
|
||||
<value>Notificaties</value>
|
||||
</data>
|
||||
<data name="strMenuNotificationsCopyAll" xml:space="preserve">
|
||||
<value>Kopieër alles</value>
|
||||
</data>
|
||||
<data name="strMenuNotificationsDelete" xml:space="preserve">
|
||||
<value>Verwijder</value>
|
||||
</data>
|
||||
<data name="strMenuNotificationsDeleteAll" xml:space="preserve">
|
||||
<value>Verwijder alles</value>
|
||||
</data>
|
||||
<data name="strMenuOpenConnectionFile" xml:space="preserve">
|
||||
<value>Open Connectie Bestand...</value>
|
||||
</data>
|
||||
@@ -1057,6 +1081,9 @@ Zie het Microsoft Support artikel op http://support.microsoft.com/kb/811833 voor
|
||||
<data name="strMenuSessionsAndScreenshots" xml:space="preserve">
|
||||
<value>Sessies en Screenshots</value>
|
||||
</data>
|
||||
<data name="strMenuShowHelpText" xml:space="preserve">
|
||||
<value>&Laat hulp zien</value>
|
||||
</data>
|
||||
<data name="strMenuShowText" xml:space="preserve">
|
||||
<value>Toon tekst</value>
|
||||
</data>
|
||||
@@ -1151,6 +1178,15 @@ Als dergelijke problemen voorkomen maak dan een nieuwe verbindings bestand aan!<
|
||||
<data name="strOpenPorts" xml:space="preserve">
|
||||
<value>Open Poorten</value>
|
||||
</data>
|
||||
<data name="strOptionsTabTheme" xml:space="preserve">
|
||||
<value>Thema</value>
|
||||
</data>
|
||||
<data name="strOptionsThemeButtonDelete" xml:space="preserve">
|
||||
<value>&Verwijder</value>
|
||||
</data>
|
||||
<data name="strOptionsThemeButtonNew" xml:space="preserve">
|
||||
<value>&Nieuw</value>
|
||||
</data>
|
||||
<data name="strPanelName" xml:space="preserve">
|
||||
<value>Paneel Naam</value>
|
||||
</data>
|
||||
@@ -1289,6 +1325,9 @@ Als dergelijke problemen voorkomen maak dan een nieuwe verbindings bestand aan!<
|
||||
<data name="strPropertyDescriptionUseConsoleSession" xml:space="preserve">
|
||||
<value>Verbinding maken met de console sessie van de remote host.</value>
|
||||
</data>
|
||||
<data name="strPropertyDescriptionUseCredSsp" xml:space="preserve">
|
||||
<value>Gebruik, indien beschikbaar, de Credential Security Support Provider (CredSSP) voor authenticatie.</value>
|
||||
</data>
|
||||
<data name="strPropertyDescriptionUser1" xml:space="preserve">
|
||||
<value>Voel je vrij om alle informatie die u nodig heeft hier in te voeren.</value>
|
||||
</data>
|
||||
@@ -1439,6 +1478,9 @@ Als dergelijke problemen voorkomen maak dan een nieuwe verbindings bestand aan!<
|
||||
<data name="strPropertyNameUseConsoleSession" xml:space="preserve">
|
||||
<value>Gebruik consolesessie</value>
|
||||
</data>
|
||||
<data name="strPropertyNameUseCredSsp" xml:space="preserve">
|
||||
<value>Gebruik CredSSP</value>
|
||||
</data>
|
||||
<data name="strPropertyNameUser1" xml:space="preserve">
|
||||
<value>Gebruiker veld</value>
|
||||
</data>
|
||||
@@ -1505,6 +1547,9 @@ Bericht:
|
||||
<data name="strPuttyResizeFailed" xml:space="preserve">
|
||||
<value>PuTTy Formaat Wijzigen Mislukt!</value>
|
||||
</data>
|
||||
<data name="strPuttySavedSessionsRootName" xml:space="preserve">
|
||||
<value>PuTTY opgeslagen sessies</value>
|
||||
</data>
|
||||
<data name="strPuttySettings" xml:space="preserve">
|
||||
<value>PuTTY Instellingen</value>
|
||||
</data>
|
||||
@@ -1535,6 +1580,18 @@ Bericht:
|
||||
<data name="strQuickConnectHistoryExistsFailed" xml:space="preserve">
|
||||
<value>Snelle Connectie geschiedenis bestaat mislukt!</value>
|
||||
</data>
|
||||
<data name="strRadioCloseWarnAll" xml:space="preserve">
|
||||
<value>&Waarschuw bij het sluiten van connecties</value>
|
||||
</data>
|
||||
<data name="strRadioCloseWarnExit" xml:space="preserve">
|
||||
<value>&xWaarschuw alleen bij het sluiten van mRemoteNG</value>
|
||||
</data>
|
||||
<data name="strRadioCloseWarnMultiple" xml:space="preserve">
|
||||
<value>Waarschuw alleen bij het sluiten van &meerdere connecties</value>
|
||||
</data>
|
||||
<data name="strRadioCloseWarnNever" xml:space="preserve">
|
||||
<value>Waarschuw &niet bij het sluiten van connecties</value>
|
||||
</data>
|
||||
<data name="strRAW" xml:space="preserve">
|
||||
<value>RAW</value>
|
||||
</data>
|
||||
@@ -1751,6 +1808,9 @@ Bericht:
|
||||
<data name="strScreenshots" xml:space="preserve">
|
||||
<value>Schermafbeeldingen</value>
|
||||
</data>
|
||||
<data name="strSearchPrompt" xml:space="preserve">
|
||||
<value>Zoek</value>
|
||||
</data>
|
||||
<data name="strSendTo" xml:space="preserve">
|
||||
<value>Verstuur naar...</value>
|
||||
</data>
|
||||
@@ -1836,7 +1896,7 @@ Bericht:
|
||||
<value>SSH Overdracht (UI.Window.SSHTransfer) mislukt!</value>
|
||||
</data>
|
||||
<data name="strSSHTransferFailed" xml:space="preserve">
|
||||
<value>Overdracht</value>
|
||||
<value>SSH overdracht heeft gefaald.</value>
|
||||
</data>
|
||||
<data name="strStartIP" xml:space="preserve">
|
||||
<value>Start IP</value>
|
||||
@@ -1871,6 +1931,117 @@ Bericht:
|
||||
<data name="strTheFollowing" xml:space="preserve">
|
||||
<value>De volgende:</value>
|
||||
</data>
|
||||
<data name="strThemeCategoryConfigPanel" xml:space="preserve">
|
||||
<value>Configuratie paneel</value>
|
||||
</data>
|
||||
<data name="strThemeCategoryConnectionsPanel" xml:space="preserve">
|
||||
<value>Connectie paneel</value>
|
||||
</data>
|
||||
<data name="strThemeCategoryGeneral" xml:space="preserve">
|
||||
<value>Algemeen</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionConfigPanelBackgroundColor" xml:space="preserve">
|
||||
<value>De achtergrondkleur van het configuratie paneel.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionConfigPanelCategoryTextColor" xml:space="preserve">
|
||||
<value>De kleur van de categorie tekst in het configuratie paneel.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionConfigPanelGridLineColor" xml:space="preserve">
|
||||
<value>De kleur van de gridlijnen in het configuratiepaneel</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionConfigPanelHelpBackgroundColor" xml:space="preserve">
|
||||
<value>De achtergrondkleur van de helptekst in het configuratiepaneel.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionConfigPanelHelpTextColor" xml:space="preserve">
|
||||
<value>De tekst kleur ven de help in het configurateipaneel.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionConfigPanelTextColor" xml:space="preserve">
|
||||
<value>De tekstkleur van het configuratiepaneel.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionConnectionsPanelBackgroundColor" xml:space="preserve">
|
||||
<value>De achtergrondkleur van het connectie paneel.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionConnectionsPanelTextColor" xml:space="preserve">
|
||||
<value>De tekstkleur van het connectie paneel.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionConnectionsPanelTreeLineColor" xml:space="preserve">
|
||||
<value>De boomstructuur lijnen kleur in het connectie paneel.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionMenuBackgroundColor" xml:space="preserve">
|
||||
<value>De achtergrondkleur van de menu's.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionMenuTextColor" xml:space="preserve">
|
||||
<value>De tekstkleur in de menu's.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionSearchBoxBackgroundColor" xml:space="preserve">
|
||||
<value>De achtergrondkleur van de zoekboks.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionSearchBoxTextColor" xml:space="preserve">
|
||||
<value>De tekstkleur in de zoekboks.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionSearchBoxTextPromptColor" xml:space="preserve">
|
||||
<value>De prompttekst kleur in de zoekboks.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionToolbarBackgroundColor" xml:space="preserve">
|
||||
<value>De achtergrondkleur van de gereedschapsbalk.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionToolbarTextColor" xml:space="preserve">
|
||||
<value>De tekstkleur in de gereedschapsbalk.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionWindowBackgroundColor" xml:space="preserve">
|
||||
<value>De achtergrondkleur van het hoofdwindow.</value>
|
||||
</data>
|
||||
<data name="strThemeNameConfigPanelBackgroundColor" xml:space="preserve">
|
||||
<value>Achtergrondkleur configuratiepaneel</value>
|
||||
</data>
|
||||
<data name="strThemeNameConfigPanelCategoryTextColor" xml:space="preserve">
|
||||
<value>Categorie tekst kleur in het configuratiepaneel</value>
|
||||
</data>
|
||||
<data name="strThemeNameConfigPanelGridLineColor" xml:space="preserve">
|
||||
<value>Lijnenkleur in het configuratiepaneel</value>
|
||||
</data>
|
||||
<data name="strThemeNameConfigPanelHelpBackgroundColor" xml:space="preserve">
|
||||
<value>Help achtergrondkleur van het configuratiepaneel</value>
|
||||
</data>
|
||||
<data name="strThemeNameConfigPanelHelpTextColor" xml:space="preserve">
|
||||
<value>Help tekstkleur van het configuratiepaneel</value>
|
||||
</data>
|
||||
<data name="strThemeNameConfigPanelTextColor" xml:space="preserve">
|
||||
<value>Configuratiepaneel tekstkleur</value>
|
||||
</data>
|
||||
<data name="strThemeNameConnectionsPanelBackgroundColor" xml:space="preserve">
|
||||
<value>Achtergrondkleur connectie paneel</value>
|
||||
</data>
|
||||
<data name="strThemeNameConnectionsPanelTextColor" xml:space="preserve">
|
||||
<value>Tekstkleur connectiepaneel</value>
|
||||
</data>
|
||||
<data name="strThemeNameConnectionsPanelTreeLineColor" xml:space="preserve">
|
||||
<value>Boomstructuur lijnen kleur connectiepaneel</value>
|
||||
</data>
|
||||
<data name="strThemeNameMenuBackgroundColor" xml:space="preserve">
|
||||
<value>Menu achtergrondkleur</value>
|
||||
</data>
|
||||
<data name="strThemeNameMenuTextColor" xml:space="preserve">
|
||||
<value>Tekstkleur menu</value>
|
||||
</data>
|
||||
<data name="strThemeNameSearchBoxBackgroundColor" xml:space="preserve">
|
||||
<value>Achtergrondkleur zoekboks</value>
|
||||
</data>
|
||||
<data name="strThemeNameSearchBoxTextColor" xml:space="preserve">
|
||||
<value>Tekstkleur zoekboks</value>
|
||||
</data>
|
||||
<data name="strThemeNameSearchBoxTextPromptColor" xml:space="preserve">
|
||||
<value>Prompt tekstkleur zoekboks</value>
|
||||
</data>
|
||||
<data name="strThemeNameToolbarBackgroundColor" xml:space="preserve">
|
||||
<value>Achtergrondkleur gereedschapsbalk</value>
|
||||
</data>
|
||||
<data name="strThemeNameToolbarTextColor" xml:space="preserve">
|
||||
<value>Tekstkleur gereedschapskleur</value>
|
||||
</data>
|
||||
<data name="strThemeNameWindowBackgroundColor" xml:space="preserve">
|
||||
<value>Achtergrondkleur window</value>
|
||||
</data>
|
||||
<data name="strTitleError" xml:space="preserve">
|
||||
<value>Fout ({0})</value>
|
||||
</data>
|
||||
@@ -1907,6 +2078,9 @@ Bericht:
|
||||
<data name="strUncheckProperties" xml:space="preserve">
|
||||
<value>Verwijder het vinkje bij eigenschappen die u niet wil opslaan!</value>
|
||||
</data>
|
||||
<data name="strUnnamedTheme" xml:space="preserve">
|
||||
<value>Thema zonder naam</value>
|
||||
</data>
|
||||
<data name="strUpdateAvailable" xml:space="preserve">
|
||||
<value>Er is een update voor mRemoteNG beschikbaar</value>
|
||||
</data>
|
||||
|
||||
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>
|
||||
@@ -150,6 +150,9 @@
|
||||
<data name="strAlwaysShowPanelSelection" xml:space="preserve">
|
||||
<value>Mostrar sempre a caixa de diálogo de seleção do painel ao abrir ligações</value>
|
||||
</data>
|
||||
<data name="strAlwaysShowPanelTabs" xml:space="preserve">
|
||||
<value>Sempre Mostrar painel abas</value>
|
||||
</data>
|
||||
<data name="strAlwaysShowSysTrayIcon" xml:space="preserve">
|
||||
<value>Mostrar sempre o ícone da área de notificação</value>
|
||||
</data>
|
||||
@@ -420,9 +423,6 @@
|
||||
<data name="strConfigUiLoadFailed" xml:space="preserve">
|
||||
<value>Config UI carregamento falhado!</value>
|
||||
</data>
|
||||
<data name="strConfirmCloseConnection" xml:space="preserve">
|
||||
<value>Confira o fecho de ligações ativas</value>
|
||||
</data>
|
||||
<data name="strConfirmCloseConnectionMainInstruction" xml:space="preserve">
|
||||
<value>Pretende fechar a ligação, "{0}"?</value>
|
||||
</data>
|
||||
@@ -444,9 +444,6 @@
|
||||
<data name="strConfirmDeleteNodeFolderNotEmpty" xml:space="preserve">
|
||||
<value>Tem certeza que deseja excluir a pasta, "{0}"? Pastas ou ligações que ele contém também serão excluídas.</value>
|
||||
</data>
|
||||
<data name="strConfirmExit" xml:space="preserve">
|
||||
<value>Confirmar saída se houver ligações abertas</value>
|
||||
</data>
|
||||
<data name="strConfirmExitMainInstruction" xml:space="preserve">
|
||||
<value>Pretende fechar todas as ligações abertas?</value>
|
||||
</data>
|
||||
@@ -530,9 +527,15 @@ Descrição do erro: {1}</value>
|
||||
<data name="strCouldNotCreateNewConnectionsFile" xml:space="preserve">
|
||||
<value>Impossível criar novo arquivo de ligações!</value>
|
||||
</data>
|
||||
<data name="strCouldNotFindToolStripInFilteredPropertyGrid" xml:space="preserve">
|
||||
<value>Não foi possível encontrar o controlo ToolStrip em FilteredPropertyGrid.</value>
|
||||
</data>
|
||||
<data name="strCurrentVersion" xml:space="preserve">
|
||||
<value>Versão instalada</value>
|
||||
</data>
|
||||
<data name="strDefaultTheme" xml:space="preserve">
|
||||
<value>Tema padrão</value>
|
||||
</data>
|
||||
<data name="strDetect" xml:space="preserve">
|
||||
<value>Detetar</value>
|
||||
</data>
|
||||
@@ -687,7 +690,7 @@ Descrição do erro: {1}</value>
|
||||
<value>Impossível criar nova ligação HTTP!</value>
|
||||
</data>
|
||||
<data name="strHttpDocumentTileChangeFailed" xml:space="preserve">
|
||||
<value>Telha de alteração de documento HTTP falhou!</value>
|
||||
<value>Alteração da aba HTTP falhou!</value>
|
||||
</data>
|
||||
<data name="strHttpSetPropsFailed" xml:space="preserve">
|
||||
<value>Falhou configuração de props HTTP!</value>
|
||||
@@ -710,6 +713,9 @@ Descrição do erro: {1}</value>
|
||||
<data name="strIcaSetResolutionFailed" xml:space="preserve">
|
||||
<value>Configuração de resolução ICA falhou!</value>
|
||||
</data>
|
||||
<data name="strIdentifyQuickConnectTabs" xml:space="preserve">
|
||||
<value>Identificar guias de ligação rápida, adicionando o prefixo "rápido:"</value>
|
||||
</data>
|
||||
<data name="strImportAD" xml:space="preserve">
|
||||
<value>Importar do Active Directory</value>
|
||||
</data>
|
||||
@@ -776,6 +782,9 @@ Descrição do erro: {1}</value>
|
||||
<data name="strLabelChangeLog" xml:space="preserve">
|
||||
<value>Log de alterações:</value>
|
||||
</data>
|
||||
<data name="strLabelClosingConnections" xml:space="preserve">
|
||||
<value>Ao fechar ligações:</value>
|
||||
</data>
|
||||
<data name="strLabelConnect" xml:space="preserve">
|
||||
<value>&Ligar:</value>
|
||||
</data>
|
||||
@@ -974,6 +983,15 @@ Descrição do erro: {1}</value>
|
||||
<data name="strMenuNotifications" xml:space="preserve">
|
||||
<value>Notificações</value>
|
||||
</data>
|
||||
<data name="strMenuNotificationsCopyAll" xml:space="preserve">
|
||||
<value>Copie todos</value>
|
||||
</data>
|
||||
<data name="strMenuNotificationsDelete" xml:space="preserve">
|
||||
<value>Excluir</value>
|
||||
</data>
|
||||
<data name="strMenuNotificationsDeleteAll" xml:space="preserve">
|
||||
<value>Apagar tudo</value>
|
||||
</data>
|
||||
<data name="strMenuOpenConnectionFile" xml:space="preserve">
|
||||
<value>Abrir arquivo de ligações...</value>
|
||||
</data>
|
||||
@@ -1127,6 +1145,15 @@ Descrição do erro: {1}</value>
|
||||
<data name="strOpenPorts" xml:space="preserve">
|
||||
<value>Portas abertas</value>
|
||||
</data>
|
||||
<data name="strOptionsTabTheme" xml:space="preserve">
|
||||
<value>Tema</value>
|
||||
</data>
|
||||
<data name="strOptionsThemeButtonDelete" xml:space="preserve">
|
||||
<value>&Excluir</value>
|
||||
</data>
|
||||
<data name="strOptionsThemeButtonNew" xml:space="preserve">
|
||||
<value>&Novo</value>
|
||||
</data>
|
||||
<data name="strPanelName" xml:space="preserve">
|
||||
<value>Nome do painel</value>
|
||||
</data>
|
||||
@@ -1265,6 +1292,9 @@ Descrição do erro: {1}</value>
|
||||
<data name="strPropertyDescriptionUseConsoleSession" xml:space="preserve">
|
||||
<value>ligar-se à sessão consola do host remoto.</value>
|
||||
</data>
|
||||
<data name="strPropertyDescriptionUseCredSsp" xml:space="preserve">
|
||||
<value>Use o Credential Security Support Provider (CredSSP) para autenticação, se ele estiver disponível.</value>
|
||||
</data>
|
||||
<data name="strPropertyDescriptionUser1" xml:space="preserve">
|
||||
<value>Insira qualquer informação que necessite aqui.</value>
|
||||
</data>
|
||||
@@ -1415,6 +1445,9 @@ Descrição do erro: {1}</value>
|
||||
<data name="strPropertyNameUseConsoleSession" xml:space="preserve">
|
||||
<value>Use a sessão de Consola</value>
|
||||
</data>
|
||||
<data name="strPropertyNameUseCredSsp" xml:space="preserve">
|
||||
<value>Utilize o CredSSP</value>
|
||||
</data>
|
||||
<data name="strPropertyNameUser1" xml:space="preserve">
|
||||
<value>Campo de utilizador</value>
|
||||
</data>
|
||||
@@ -1508,6 +1541,18 @@ Descrição do erro: {1}</value>
|
||||
<data name="strQuickConnectHistoryExistsFailed" xml:space="preserve">
|
||||
<value>Histórico de Ligação rápida falhou!</value>
|
||||
</data>
|
||||
<data name="strRadioCloseWarnAll" xml:space="preserve">
|
||||
<value>&Avisar-me quando fechar ligações</value>
|
||||
</data>
|
||||
<data name="strRadioCloseWarnExit" xml:space="preserve">
|
||||
<value>Avisar-me apenas ao &sair do mRemoteNG</value>
|
||||
</data>
|
||||
<data name="strRadioCloseWarnMultiple" xml:space="preserve">
|
||||
<value>Avisar-me somente ao fechar ligações múltiplas</value>
|
||||
</data>
|
||||
<data name="strRadioCloseWarnNever" xml:space="preserve">
|
||||
<value>&Não avisar ao fechar ligações</value>
|
||||
</data>
|
||||
<data name="strRAW" xml:space="preserve">
|
||||
<value>RAW</value>
|
||||
</data>
|
||||
@@ -1724,6 +1769,9 @@ Descrição do erro: {1}</value>
|
||||
<data name="strScreenshots" xml:space="preserve">
|
||||
<value>Imagens do ecrã</value>
|
||||
</data>
|
||||
<data name="strSearchPrompt" xml:space="preserve">
|
||||
<value>Pesquisa</value>
|
||||
</data>
|
||||
<data name="strSendTo" xml:space="preserve">
|
||||
<value>Enviar para...</value>
|
||||
</data>
|
||||
@@ -1808,9 +1856,6 @@ Descrição do erro: {1}</value>
|
||||
<data name="strSSHTransferEndFailed" xml:space="preserve">
|
||||
<value>SSH transferência final (interface do usuário.Window.SSHTransfer) falhou!</value>
|
||||
</data>
|
||||
<data name="strSSHTransferFailed" xml:space="preserve">
|
||||
<value>Transferência</value>
|
||||
</data>
|
||||
<data name="strStartIP" xml:space="preserve">
|
||||
<value>IP de início</value>
|
||||
</data>
|
||||
@@ -1844,6 +1889,93 @@ Descrição do erro: {1}</value>
|
||||
<data name="strTheFollowing" xml:space="preserve">
|
||||
<value>A seguir:</value>
|
||||
</data>
|
||||
<data name="strThemeCategoryConfigPanel" xml:space="preserve">
|
||||
<value>Painel de configuração</value>
|
||||
</data>
|
||||
<data name="strThemeCategoryConnectionsPanel" xml:space="preserve">
|
||||
<value>Painel de ligações</value>
|
||||
</data>
|
||||
<data name="strThemeCategoryGeneral" xml:space="preserve">
|
||||
<value>Geral</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionConfigPanelBackgroundColor" xml:space="preserve">
|
||||
<value>A cor de fundo do painel de configuração.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionConfigPanelCategoryTextColor" xml:space="preserve">
|
||||
<value>A cor do texto no painel de configuração de categoria.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionConfigPanelGridLineColor" xml:space="preserve">
|
||||
<value>A cor das linhas de grade do painel de configuração</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionConfigPanelHelpBackgroundColor" xml:space="preserve">
|
||||
<value>A cor de fundo da área de ajuda do painel de configuração.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionConfigPanelHelpTextColor" xml:space="preserve">
|
||||
<value>A cor do texto na área de ajuda do painel de configuração.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionConfigPanelTextColor" xml:space="preserve">
|
||||
<value>A cor do texto no painel de configuração.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionConnectionsPanelBackgroundColor" xml:space="preserve">
|
||||
<value>A cor de fundo do painel de ligações.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionConnectionsPanelTextColor" xml:space="preserve">
|
||||
<value>A cor do texto no painel de ligações.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionConnectionsPanelTreeLineColor" xml:space="preserve">
|
||||
<value>A cor das linhas de árvore no painel de ligações.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionMenuBackgroundColor" xml:space="preserve">
|
||||
<value>A cor de fundo dos menus.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionMenuTextColor" xml:space="preserve">
|
||||
<value>A cor do texto nos menus.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionSearchBoxBackgroundColor" xml:space="preserve">
|
||||
<value>A cor de fundo da caixa de pesquisa.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionSearchBoxTextColor" xml:space="preserve">
|
||||
<value>A cor do texto na caixa de pesquisa.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionSearchBoxTextPromptColor" xml:space="preserve">
|
||||
<value>A cor do texto na caixa de pesquisa rápida.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionToolbarBackgroundColor" xml:space="preserve">
|
||||
<value>A cor de fundo das barras de ferramentas.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionToolbarTextColor" xml:space="preserve">
|
||||
<value>A cor do texto em barras de ferramentas.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionWindowBackgroundColor" xml:space="preserve">
|
||||
<value>A cor de fundo da janela principal.</value>
|
||||
</data>
|
||||
<data name="strThemeNameConfigPanelBackgroundColor" xml:space="preserve">
|
||||
<value>Cor de fundo do painel de configuração</value>
|
||||
</data>
|
||||
<data name="strThemeNameConfigPanelCategoryTextColor" xml:space="preserve">
|
||||
<value>Cor do texto da categoria do Painel de configuração</value>
|
||||
</data>
|
||||
<data name="strThemeNameConfigPanelGridLineColor" xml:space="preserve">
|
||||
<value>Cor de linha de grade do painel de configuração</value>
|
||||
</data>
|
||||
<data name="strThemeNameConfigPanelHelpBackgroundColor" xml:space="preserve">
|
||||
<value>Cor de fundo do painel de configuração ajuda</value>
|
||||
</data>
|
||||
<data name="strThemeNameConfigPanelHelpTextColor" xml:space="preserve">
|
||||
<value>Cor do texto do painel de configuração ajuda</value>
|
||||
</data>
|
||||
<data name="strThemeNameConfigPanelTextColor" xml:space="preserve">
|
||||
<value>Cor do texto do painel de configuração</value>
|
||||
</data>
|
||||
<data name="strThemeNameConnectionsPanelBackgroundColor" xml:space="preserve">
|
||||
<value>Cor de fundo de painel de ligações</value>
|
||||
</data>
|
||||
<data name="strThemeNameConnectionsPanelTextColor" xml:space="preserve">
|
||||
<value>Cor de texto de painel de ligações</value>
|
||||
</data>
|
||||
<data name="strThemeNameConnectionsPanelTreeLineColor" xml:space="preserve">
|
||||
<value>Cor linha da da árvore do painel de ligações</value>
|
||||
</data>
|
||||
<data name="strTitleError" xml:space="preserve">
|
||||
<value>Erro ({0})</value>
|
||||
</data>
|
||||
@@ -1880,6 +2012,9 @@ Descrição do erro: {1}</value>
|
||||
<data name="strUncheckProperties" xml:space="preserve">
|
||||
<value>Desmarcar as propriedades que não deseja salvar!</value>
|
||||
</data>
|
||||
<data name="strUnnamedTheme" xml:space="preserve">
|
||||
<value>Tema sem nome</value>
|
||||
</data>
|
||||
<data name="strUpdateAvailable" xml:space="preserve">
|
||||
<value>mRemoteNG requer uma atualização</value>
|
||||
</data>
|
||||
@@ -1931,6 +2066,9 @@ Descrição do erro: {1}</value>
|
||||
<data name="strUser" xml:space="preserve">
|
||||
<value>Utilizador</value>
|
||||
</data>
|
||||
<data name="strUseSameUsernameAndPassword" xml:space="preserve">
|
||||
<value>Use o mesmo nome de utilizador e senha</value>
|
||||
</data>
|
||||
<data name="strUseSmartCard" xml:space="preserve">
|
||||
<value>Usar um smart card</value>
|
||||
</data>
|
||||
|
||||
@@ -105,15 +105,15 @@
|
||||
</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="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
@@ -150,6 +150,9 @@
|
||||
<data name="strAlwaysShowPanelSelection" xml:space="preserve">
|
||||
<value>Always show panel selection dialog when opening connections</value>
|
||||
</data>
|
||||
<data name="strAlwaysShowPanelTabs" xml:space="preserve">
|
||||
<value>Always show panel tabs</value>
|
||||
</data>
|
||||
<data name="strAlwaysShowSysTrayIcon" xml:space="preserve">
|
||||
<value>Always show notification area icon</value>
|
||||
</data>
|
||||
@@ -181,7 +184,7 @@
|
||||
<value>Minutes (0 means disabled)</value>
|
||||
</data>
|
||||
<data name="strAvailableVersion" xml:space="preserve">
|
||||
<value>Current Version</value>
|
||||
<value>Latest version</value>
|
||||
</data>
|
||||
<data name="strButtonBrowse" xml:space="preserve">
|
||||
<value>&Browse...</value>
|
||||
@@ -281,10 +284,10 @@ Please use File - Load Connections for normal connection files!</value>
|
||||
<value>Check succeeded!</value>
|
||||
</data>
|
||||
<data name="strCcEOLFailed" xml:space="preserve">
|
||||
<value>The (RDP) Sessions feature requires that you have a registered copy of eolwtscom.dll on your system.
|
||||
mRemoteNG ships with this component but will not register it automatically unless you run the setup package.
|
||||
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).
|
||||
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>
|
||||
<value>The (RDP) Sessions feature requires that you have a copy of eolwtscom.dll registered on your system.
|
||||
mRemoteNG ships with this component but it is not registered automatically if you do not use the mRemoteNG Installer.
|
||||
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 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 name="strCcEOLOK" xml:space="preserve">
|
||||
<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>
|
||||
</data>
|
||||
<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
|
||||
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 you still have trouble getting RDP to work please consult the mRemoteNG Forum at http://forum.mremoteng.org/</value>
|
||||
<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 this check still fails or you are unable to use RDP, please consult the mRemoteNG Forum at http://forum.mremoteng.org/.</value>
|
||||
</data>
|
||||
<data name="strCcRDPOK" xml:space="preserve">
|
||||
<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">
|
||||
<value>Wait For Exit</value>
|
||||
</data>
|
||||
<data name="strCommandExitProgram" xml:space="preserve">
|
||||
<value>E&xit {0}</value>
|
||||
</data>
|
||||
<data name="strCommandLineArgsCouldNotBeParsed" xml:space="preserve">
|
||||
<value>Couldn't parse command line args!</value>
|
||||
</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">
|
||||
<value>Components Check</value>
|
||||
</data>
|
||||
@@ -438,9 +455,6 @@ VncSharpNG Control Version {0}</value>
|
||||
<data name="strConfigUiLoadFailed" xml:space="preserve">
|
||||
<value>Config UI load failed!</value>
|
||||
</data>
|
||||
<data name="strConfirmCloseConnection" xml:space="preserve">
|
||||
<value>Confirm closing connection tabs</value>
|
||||
</data>
|
||||
<data name="strConfirmCloseConnectionMainInstruction" xml:space="preserve">
|
||||
<value>Do you want to close the connection, "{0}"?</value>
|
||||
</data>
|
||||
@@ -462,9 +476,6 @@ VncSharpNG Control Version {0}</value>
|
||||
<data name="strConfirmDeleteNodeFolderNotEmpty" xml:space="preserve">
|
||||
<value>Are you sure you want to delete the folder, "{0}"? Any folders or connections that it contains will also be deleted.</value>
|
||||
</data>
|
||||
<data name="strConfirmExit" xml:space="preserve">
|
||||
<value>Confirm exit if there are open connections</value>
|
||||
</data>
|
||||
<data name="strConfirmExitMainInstruction" xml:space="preserve">
|
||||
<value>Do you want to close all open connections?</value>
|
||||
</data>
|
||||
@@ -549,9 +560,15 @@ Starting with new connections file.</value>
|
||||
<data name="strCouldNotCreateNewConnectionsFile" xml:space="preserve">
|
||||
<value>Couldn't create new connections file!</value>
|
||||
</data>
|
||||
<data name="strCouldNotFindToolStripInFilteredPropertyGrid" xml:space="preserve">
|
||||
<value>Could not find ToolStrip control in FilteredPropertyGrid.</value>
|
||||
</data>
|
||||
<data name="strCurrentVersion" xml:space="preserve">
|
||||
<value>Installed version</value>
|
||||
</data>
|
||||
<data name="strDefaultTheme" xml:space="preserve">
|
||||
<value>Default Theme</value>
|
||||
</data>
|
||||
<data name="strDetect" xml:space="preserve">
|
||||
<value>Detect</value>
|
||||
</data>
|
||||
@@ -615,6 +632,9 @@ Starting with new connections file.</value>
|
||||
<data name="strErrorConnectionListSaveFailed" xml:space="preserve">
|
||||
<value>The connection list could not be saved.</value>
|
||||
</data>
|
||||
<data name="strErrorCouldNotLaunchPutty" xml:space="preserve">
|
||||
<value>PuTTY could not be launched.</value>
|
||||
</data>
|
||||
<data name="strErrorDecryptionFailed" xml:space="preserve">
|
||||
<value>Decryption failed. {0}</value>
|
||||
</data>
|
||||
@@ -722,7 +742,7 @@ See the Microsoft Support article at http://support.microsoft.com/kb/811833 for
|
||||
<value>Couldn't create new HTTP Connection!</value>
|
||||
</data>
|
||||
<data name="strHttpDocumentTileChangeFailed" xml:space="preserve">
|
||||
<value>Changeing HTTP Document Tile Failed!</value>
|
||||
<value>Changing HTTP Document Tile Failed!</value>
|
||||
</data>
|
||||
<data name="strHttpGecko" xml:space="preserve">
|
||||
<value>Gecko (Firefox)</value>
|
||||
@@ -757,6 +777,9 @@ See the Microsoft Support article at http://support.microsoft.com/kb/811833 for
|
||||
<data name="strIcaSetResolutionFailed" xml:space="preserve">
|
||||
<value>ICA Set Resolution Failed!</value>
|
||||
</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">
|
||||
<value>Import from Active Directory</value>
|
||||
</data>
|
||||
@@ -823,6 +846,9 @@ See the Microsoft Support article at http://support.microsoft.com/kb/811833 for
|
||||
<data name="strLabelChangeLog" xml:space="preserve">
|
||||
<value>Change Log:</value>
|
||||
</data>
|
||||
<data name="strLabelClosingConnections" xml:space="preserve">
|
||||
<value>When closing connections:</value>
|
||||
</data>
|
||||
<data name="strLabelConnect" xml:space="preserve">
|
||||
<value>&Connect:</value>
|
||||
</data>
|
||||
@@ -893,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>
|
||||
</data>
|
||||
<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 name="strLoadFromXmlFailed" xml:space="preserve">
|
||||
<value>Load From XML failed!</value>
|
||||
@@ -1024,6 +1053,15 @@ See the Microsoft Support article at http://support.microsoft.com/kb/811833 for
|
||||
<data name="strMenuNotifications" xml:space="preserve">
|
||||
<value>Notifications</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="strMenuOpenConnectionFile" xml:space="preserve">
|
||||
<value>Open Connection File...</value>
|
||||
</data>
|
||||
@@ -1078,12 +1116,18 @@ See the Microsoft Support article at http://support.microsoft.com/kb/811833 for
|
||||
<data name="strMenuSendSpecialKeys" xml:space="preserve">
|
||||
<value>Send Special Keys (VNC)</value>
|
||||
</data>
|
||||
<data name="strMenuSessionRetrieve" xml:space="preserve">
|
||||
<value>Retrieve</value>
|
||||
</data>
|
||||
<data name="strMenuSessions" xml:space="preserve">
|
||||
<value>Sessions</value>
|
||||
</data>
|
||||
<data name="strMenuSessionsAndScreenshots" xml:space="preserve">
|
||||
<value>Sessions and Screenshots</value>
|
||||
</data>
|
||||
<data name="strMenuShowHelpText" xml:space="preserve">
|
||||
<value>&Show Help Text</value>
|
||||
</data>
|
||||
<data name="strMenuShowText" xml:space="preserve">
|
||||
<value>Show Text</value>
|
||||
</data>
|
||||
@@ -1178,6 +1222,18 @@ If you run into such an error, please create a new connection file!</value>
|
||||
<data name="strOpenPorts" xml:space="preserve">
|
||||
<value>Open Ports</value>
|
||||
</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">
|
||||
<value>Panel Name</value>
|
||||
</data>
|
||||
@@ -1205,6 +1261,9 @@ If you run into such an error, please create a new connection file!</value>
|
||||
<data name="strPropertyDescriptionAuthenticationMode" xml:space="preserve">
|
||||
<value>Select how you want to authenticate against the VNC server.</value>
|
||||
</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">
|
||||
<value>Select whether to use bitmap caching or not.</value>
|
||||
</data>
|
||||
@@ -1250,6 +1309,9 @@ If you run into such an error, please create a new connection file!</value>
|
||||
<data name="strPropertyDescriptionIcon" xml:space="preserve">
|
||||
<value>Choose a icon that will be displayed when connected to the host.</value>
|
||||
</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">
|
||||
<value>Enter the MAC address of the remote host if you wish to use it in an external tool.</value>
|
||||
</data>
|
||||
@@ -1355,6 +1417,9 @@ If you run into such an error, please create a new connection file!</value>
|
||||
<data name="strPropertyNameAuthenticationMode" xml:space="preserve">
|
||||
<value>Authentication Mode</value>
|
||||
</data>
|
||||
<data name="strPropertyNameAutomaticResize" xml:space="preserve">
|
||||
<value>Automatic Resize</value>
|
||||
</data>
|
||||
<data name="strPropertyNameCacheBitmaps" xml:space="preserve">
|
||||
<value>Cache Bitmaps</value>
|
||||
</data>
|
||||
@@ -1400,6 +1465,9 @@ If you run into such an error, please create a new connection file!</value>
|
||||
<data name="strPropertyNameIcon" xml:space="preserve">
|
||||
<value>Icon</value>
|
||||
</data>
|
||||
<data name="strPropertyNameLoadBalanceInfo" xml:space="preserve">
|
||||
<value>Load Balance Info</value>
|
||||
</data>
|
||||
<data name="strPropertyNameMACAddress" xml:space="preserve">
|
||||
<value>MAC Address</value>
|
||||
</data>
|
||||
@@ -1538,6 +1606,12 @@ Message:
|
||||
<data name="strPuttyResizeFailed" xml:space="preserve">
|
||||
<value>Putty Resize Failed!</value>
|
||||
</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">
|
||||
<value>PuTTY Settings</value>
|
||||
</data>
|
||||
@@ -1568,6 +1642,18 @@ Message:
|
||||
<data name="strQuickConnectHistoryExistsFailed" xml:space="preserve">
|
||||
<value>Quick Connect History Exists Failed!</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="strRAW" xml:space="preserve">
|
||||
<value>RAW</value>
|
||||
</data>
|
||||
@@ -1683,7 +1769,7 @@ Message:
|
||||
<value>GetSessions failed!</value>
|
||||
</data>
|
||||
<data name="strRdpOpenConnectionFailed" xml:space="preserve">
|
||||
<value>Open RDP Connectin failed!</value>
|
||||
<value>Open RDP Connection failed!</value>
|
||||
</data>
|
||||
<data name="strRdpReconnectCount" xml:space="preserve">
|
||||
<value>RDP reconnection count:</value>
|
||||
@@ -1784,6 +1870,9 @@ Message:
|
||||
<data name="strScreenshots" xml:space="preserve">
|
||||
<value>Screenshots</value>
|
||||
</data>
|
||||
<data name="strSearchPrompt" xml:space="preserve">
|
||||
<value>Search</value>
|
||||
</data>
|
||||
<data name="strSendTo" xml:space="preserve">
|
||||
<value>Send To...</value>
|
||||
</data>
|
||||
@@ -1869,7 +1958,7 @@ Message:
|
||||
<value>SSH Transfer End (UI.Window.SSHTransfer) failed!</value>
|
||||
</data>
|
||||
<data name="strSSHTransferFailed" xml:space="preserve">
|
||||
<value>Transfer</value>
|
||||
<value>SSH transfer failed.</value>
|
||||
</data>
|
||||
<data name="strStartIP" xml:space="preserve">
|
||||
<value>Start IP</value>
|
||||
@@ -1904,6 +1993,117 @@ Message:
|
||||
<data name="strTheFollowing" xml:space="preserve">
|
||||
<value>The following:</value>
|
||||
</data>
|
||||
<data name="strThemeCategoryConfigPanel" xml:space="preserve">
|
||||
<value>Config Panel</value>
|
||||
</data>
|
||||
<data name="strThemeCategoryConnectionsPanel" xml:space="preserve">
|
||||
<value>Connections Panel</value>
|
||||
</data>
|
||||
<data name="strThemeCategoryGeneral" xml:space="preserve">
|
||||
<value>General</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionConfigPanelBackgroundColor" xml:space="preserve">
|
||||
<value>The background colour of the config panel.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionConfigPanelCategoryTextColor" xml:space="preserve">
|
||||
<value>The colour of the category text in the config panel.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionConfigPanelGridLineColor" xml:space="preserve">
|
||||
<value>The colour of the grid lines in the config panel</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionConfigPanelHelpBackgroundColor" xml:space="preserve">
|
||||
<value>The background colour of the help area of the config panel.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionConfigPanelHelpTextColor" xml:space="preserve">
|
||||
<value>The colour of the text in the help area of the config panel.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionConfigPanelTextColor" xml:space="preserve">
|
||||
<value>The colour of the text in the config panel.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionConnectionsPanelBackgroundColor" xml:space="preserve">
|
||||
<value>The background colour of the connections panel.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionConnectionsPanelTextColor" xml:space="preserve">
|
||||
<value>The colour of the text in the connections panel.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionConnectionsPanelTreeLineColor" xml:space="preserve">
|
||||
<value>The colour of the tree lines in the connections panel.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionMenuBackgroundColor" xml:space="preserve">
|
||||
<value>The background colour of the menus.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionMenuTextColor" xml:space="preserve">
|
||||
<value>The colour of the text in the menus.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionSearchBoxBackgroundColor" xml:space="preserve">
|
||||
<value>The background colour of the search box.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionSearchBoxTextColor" xml:space="preserve">
|
||||
<value>The colour of the text in the search box.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionSearchBoxTextPromptColor" xml:space="preserve">
|
||||
<value>The colour of the prompt text in the search box.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionToolbarBackgroundColor" xml:space="preserve">
|
||||
<value>The background colour of the toolbars.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionToolbarTextColor" xml:space="preserve">
|
||||
<value>The colour of the text in the toolbars.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionWindowBackgroundColor" xml:space="preserve">
|
||||
<value>The background colour of the main window.</value>
|
||||
</data>
|
||||
<data name="strThemeNameConfigPanelBackgroundColor" xml:space="preserve">
|
||||
<value>Config Panel Background Colour</value>
|
||||
</data>
|
||||
<data name="strThemeNameConfigPanelCategoryTextColor" xml:space="preserve">
|
||||
<value>Config Panel Category Text Colour</value>
|
||||
</data>
|
||||
<data name="strThemeNameConfigPanelGridLineColor" xml:space="preserve">
|
||||
<value>Config Panel Grid Line Colour</value>
|
||||
</data>
|
||||
<data name="strThemeNameConfigPanelHelpBackgroundColor" xml:space="preserve">
|
||||
<value>Config Panel Help Background Colour</value>
|
||||
</data>
|
||||
<data name="strThemeNameConfigPanelHelpTextColor" xml:space="preserve">
|
||||
<value>Config Panel Help Text Colour</value>
|
||||
</data>
|
||||
<data name="strThemeNameConfigPanelTextColor" xml:space="preserve">
|
||||
<value>Config Panel Text Colour</value>
|
||||
</data>
|
||||
<data name="strThemeNameConnectionsPanelBackgroundColor" xml:space="preserve">
|
||||
<value>Connections Panel Background Colour</value>
|
||||
</data>
|
||||
<data name="strThemeNameConnectionsPanelTextColor" xml:space="preserve">
|
||||
<value>Connections Panel Text Colour</value>
|
||||
</data>
|
||||
<data name="strThemeNameConnectionsPanelTreeLineColor" xml:space="preserve">
|
||||
<value>Connections Panel Tree Line Colour</value>
|
||||
</data>
|
||||
<data name="strThemeNameMenuBackgroundColor" xml:space="preserve">
|
||||
<value>Menu Background Colour</value>
|
||||
</data>
|
||||
<data name="strThemeNameMenuTextColor" xml:space="preserve">
|
||||
<value>Menu Text Colour</value>
|
||||
</data>
|
||||
<data name="strThemeNameSearchBoxBackgroundColor" xml:space="preserve">
|
||||
<value>Search Box Background Colour</value>
|
||||
</data>
|
||||
<data name="strThemeNameSearchBoxTextColor" xml:space="preserve">
|
||||
<value>Search Box Text Colour</value>
|
||||
</data>
|
||||
<data name="strThemeNameSearchBoxTextPromptColor" xml:space="preserve">
|
||||
<value>Search Box Text Prompt Colour</value>
|
||||
</data>
|
||||
<data name="strThemeNameToolbarBackgroundColor" xml:space="preserve">
|
||||
<value>Toolbar Background Colour</value>
|
||||
</data>
|
||||
<data name="strThemeNameToolbarTextColor" xml:space="preserve">
|
||||
<value>Toolbar Text Colour</value>
|
||||
</data>
|
||||
<data name="strThemeNameWindowBackgroundColor" xml:space="preserve">
|
||||
<value>Window Background Colour</value>
|
||||
</data>
|
||||
<data name="strTitleError" xml:space="preserve">
|
||||
<value>Error ({0})</value>
|
||||
</data>
|
||||
@@ -1940,6 +2140,9 @@ Message:
|
||||
<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>
|
||||
@@ -1947,26 +2150,26 @@ Message:
|
||||
<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>
|
||||
<value>The update information could not be downloaded.</value>
|
||||
</data>
|
||||
<data name="strUpdateCheckFailed" xml:space="preserve">
|
||||
<value>Check For Update failed!</value>
|
||||
<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="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>
|
||||
<value>The update could not be downloaded.</value>
|
||||
</data>
|
||||
<data name="strUpdateDownloadFailed" xml:space="preserve">
|
||||
<value>Download Update failed!</value>
|
||||
<value>The update download could not be initiated.</value>
|
||||
</data>
|
||||
<data name="strUpdateFrequencyCustom" xml:space="preserve">
|
||||
<value>Every {0} days</value>
|
||||
@@ -1980,8 +2183,11 @@ mRemoteNG will now quit and begin with the installation.</value>
|
||||
<data name="strUpdateFrequencyWeekly" xml:space="preserve">
|
||||
<value>Weekly</value>
|
||||
</data>
|
||||
<data name="strUpdateStartFailed" xml:space="preserve">
|
||||
<value>Error starting update!</value>
|
||||
<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>
|
||||
@@ -2055,10 +2261,4 @@ mRemoteNG will now quit and begin with the installation.</value>
|
||||
<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>
|
||||
</root>
|
||||
@@ -150,6 +150,9 @@
|
||||
<data name="strAlwaysShowPanelSelection" xml:space="preserve">
|
||||
<value>Всегда показывать диалог выбора панели при открытии подключения</value>
|
||||
</data>
|
||||
<data name="strAlwaysShowPanelTabs" xml:space="preserve">
|
||||
<value>Всегда показывать панель закладок</value>
|
||||
</data>
|
||||
<data name="strAlwaysShowSysTrayIcon" xml:space="preserve">
|
||||
<value>Всегда показывать значок в системном трее</value>
|
||||
</data>
|
||||
@@ -414,6 +417,12 @@
|
||||
<data name="strCommandLineArgsCouldNotBeParsed" xml:space="preserve">
|
||||
<value>Невозможно разобрать аргументы командной строки!</value>
|
||||
</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">
|
||||
<value>Проверка компонентов</value>
|
||||
</data>
|
||||
@@ -438,9 +447,6 @@
|
||||
<data name="strConfigUiLoadFailed" xml:space="preserve">
|
||||
<value>Ошибка загрузки Config UI!</value>
|
||||
</data>
|
||||
<data name="strConfirmCloseConnection" xml:space="preserve">
|
||||
<value>Запрашивать подтверждение при закрытии вкладки подключения</value>
|
||||
</data>
|
||||
<data name="strConfirmCloseConnectionMainInstruction" xml:space="preserve">
|
||||
<value>Хотите закрыть подключение, "{0}"?</value>
|
||||
</data>
|
||||
@@ -462,9 +468,6 @@
|
||||
<data name="strConfirmDeleteNodeFolderNotEmpty" xml:space="preserve">
|
||||
<value>Хотите удалить папку "{0}"? Любые папки или подключения, которые она содержит также будут удалены.</value>
|
||||
</data>
|
||||
<data name="strConfirmExit" xml:space="preserve">
|
||||
<value>Подтверждение при выходе, если есть открытые подключения</value>
|
||||
</data>
|
||||
<data name="strConfirmExitMainInstruction" xml:space="preserve">
|
||||
<value>Хотите закрыть все открытые подключения?</value>
|
||||
</data>
|
||||
@@ -549,9 +552,15 @@
|
||||
<data name="strCouldNotCreateNewConnectionsFile" xml:space="preserve">
|
||||
<value>Не удается создать новый файл подключений!</value>
|
||||
</data>
|
||||
<data name="strCouldNotFindToolStripInFilteredPropertyGrid" xml:space="preserve">
|
||||
<value>Не удалось найти элемент управления ToolStrip в FilteredPropertyGrid.</value>
|
||||
</data>
|
||||
<data name="strCurrentVersion" xml:space="preserve">
|
||||
<value>Установленная версия</value>
|
||||
</data>
|
||||
<data name="strDefaultTheme" xml:space="preserve">
|
||||
<value>Тема по умолчанию</value>
|
||||
</data>
|
||||
<data name="strDetect" xml:space="preserve">
|
||||
<value>Обнаружение</value>
|
||||
</data>
|
||||
@@ -739,6 +748,9 @@
|
||||
<data name="strIcaSetResolutionFailed" xml:space="preserve">
|
||||
<value>Ошибка установки разрешений ICA!</value>
|
||||
</data>
|
||||
<data name="strIdentifyQuickConnectTabs" xml:space="preserve">
|
||||
<value>Определить вкладки быстрых подключений, добавляя префикс «Quick:»</value>
|
||||
</data>
|
||||
<data name="strImportAD" xml:space="preserve">
|
||||
<value>Импорт из Active Directory</value>
|
||||
</data>
|
||||
@@ -805,6 +817,9 @@
|
||||
<data name="strLabelChangeLog" xml:space="preserve">
|
||||
<value>История версий:</value>
|
||||
</data>
|
||||
<data name="strLabelClosingConnections" xml:space="preserve">
|
||||
<value>При закрытии подключений:</value>
|
||||
</data>
|
||||
<data name="strLabelConnect" xml:space="preserve">
|
||||
<value>&Подключение:</value>
|
||||
</data>
|
||||
@@ -1003,6 +1018,15 @@
|
||||
<data name="strMenuNotifications" xml:space="preserve">
|
||||
<value>Уведомления</value>
|
||||
</data>
|
||||
<data name="strMenuNotificationsCopyAll" xml:space="preserve">
|
||||
<value>Скопировать все</value>
|
||||
</data>
|
||||
<data name="strMenuNotificationsDelete" xml:space="preserve">
|
||||
<value>Удалить</value>
|
||||
</data>
|
||||
<data name="strMenuNotificationsDeleteAll" xml:space="preserve">
|
||||
<value>Удалить все</value>
|
||||
</data>
|
||||
<data name="strMenuOpenConnectionFile" xml:space="preserve">
|
||||
<value>Открыть файл подключения...</value>
|
||||
</data>
|
||||
@@ -1063,6 +1087,9 @@
|
||||
<data name="strMenuSessionsAndScreenshots" xml:space="preserve">
|
||||
<value>Сессии и скриншоты</value>
|
||||
</data>
|
||||
<data name="strMenuShowHelpText" xml:space="preserve">
|
||||
<value>Показать текст справки</value>
|
||||
</data>
|
||||
<data name="strMenuShowText" xml:space="preserve">
|
||||
<value>Показать текст</value>
|
||||
</data>
|
||||
@@ -1157,6 +1184,15 @@
|
||||
<data name="strOpenPorts" xml:space="preserve">
|
||||
<value>Открытые порты</value>
|
||||
</data>
|
||||
<data name="strOptionsTabTheme" xml:space="preserve">
|
||||
<value>Тема</value>
|
||||
</data>
|
||||
<data name="strOptionsThemeButtonDelete" xml:space="preserve">
|
||||
<value>Удалить</value>
|
||||
</data>
|
||||
<data name="strOptionsThemeButtonNew" xml:space="preserve">
|
||||
<value>Новая</value>
|
||||
</data>
|
||||
<data name="strPanelName" xml:space="preserve">
|
||||
<value>Название группы</value>
|
||||
</data>
|
||||
@@ -1295,6 +1331,9 @@
|
||||
<data name="strPropertyDescriptionUseConsoleSession" xml:space="preserve">
|
||||
<value>Подключение к текущему сеансу удаленного пользователя.</value>
|
||||
</data>
|
||||
<data name="strPropertyDescriptionUseCredSsp" xml:space="preserve">
|
||||
<value>Использовать поставщика поддержки безопасности (CredSSP) для проверки подлинности учетных данных, если он доступен.</value>
|
||||
</data>
|
||||
<data name="strPropertyDescriptionUser1" xml:space="preserve">
|
||||
<value>Введите любую информацию.</value>
|
||||
</data>
|
||||
@@ -1445,6 +1484,9 @@
|
||||
<data name="strPropertyNameUseConsoleSession" xml:space="preserve">
|
||||
<value>Сеанс консоли</value>
|
||||
</data>
|
||||
<data name="strPropertyNameUseCredSsp" xml:space="preserve">
|
||||
<value>Использовать проверку подлинности CredSSP</value>
|
||||
</data>
|
||||
<data name="strPropertyNameUser1" xml:space="preserve">
|
||||
<value>Дополнительно</value>
|
||||
</data>
|
||||
@@ -1511,6 +1553,9 @@
|
||||
<data name="strPuttyResizeFailed" xml:space="preserve">
|
||||
<value>Ошибка изменения размера окна Putty!</value>
|
||||
</data>
|
||||
<data name="strPuttySavedSessionsRootName" xml:space="preserve">
|
||||
<value>Сохраненные сессии PuTTY</value>
|
||||
</data>
|
||||
<data name="strPuttySettings" xml:space="preserve">
|
||||
<value>Настройки PuTTY</value>
|
||||
</data>
|
||||
@@ -1541,6 +1586,18 @@
|
||||
<data name="strQuickConnectHistoryExistsFailed" xml:space="preserve">
|
||||
<value>Ошибка истории Быстрых подключений!</value>
|
||||
</data>
|
||||
<data name="strRadioCloseWarnAll" xml:space="preserve">
|
||||
<value>Предупреждать при закрытии подключений</value>
|
||||
</data>
|
||||
<data name="strRadioCloseWarnExit" xml:space="preserve">
|
||||
<value>Предупреждать меня только при выходе из mRemoteNG</value>
|
||||
</data>
|
||||
<data name="strRadioCloseWarnMultiple" xml:space="preserve">
|
||||
<value>Предупреждать меня только при закрытии нескольких подключений</value>
|
||||
</data>
|
||||
<data name="strRadioCloseWarnNever" xml:space="preserve">
|
||||
<value>Не предупреждать при закрытии подключений</value>
|
||||
</data>
|
||||
<data name="strRAW" xml:space="preserve">
|
||||
<value>RAW</value>
|
||||
</data>
|
||||
@@ -1665,7 +1722,7 @@
|
||||
<value>RDP: Установить уровень проверки подлинности не удалась!</value>
|
||||
</data>
|
||||
<data name="strRdpSetConsoleSessionFailed" xml:space="preserve">
|
||||
<value>RDP: Не удалось использование консольную сессию!</value>
|
||||
<value>RDP: Не удалось использовать консольную сессию!</value>
|
||||
</data>
|
||||
<data name="strRdpSetConsoleSwitch" xml:space="preserve">
|
||||
<value>Настройка переключения консолей для RDC {0}.</value>
|
||||
@@ -1757,6 +1814,9 @@
|
||||
<data name="strScreenshots" xml:space="preserve">
|
||||
<value>Скриншоты</value>
|
||||
</data>
|
||||
<data name="strSearchPrompt" xml:space="preserve">
|
||||
<value>Поиск</value>
|
||||
</data>
|
||||
<data name="strSendTo" xml:space="preserve">
|
||||
<value>Отправить...</value>
|
||||
</data>
|
||||
@@ -1842,7 +1902,7 @@
|
||||
<value>Передача по SSH завершена с ошибкой (UI.Window.SSHTransfer)!</value>
|
||||
</data>
|
||||
<data name="strSSHTransferFailed" xml:space="preserve">
|
||||
<value>Передача</value>
|
||||
<value>SSH ошибка передачи.</value>
|
||||
</data>
|
||||
<data name="strStartIP" xml:space="preserve">
|
||||
<value>Начальный IP</value>
|
||||
@@ -1877,6 +1937,117 @@
|
||||
<data name="strTheFollowing" xml:space="preserve">
|
||||
<value>Установить вручную:</value>
|
||||
</data>
|
||||
<data name="strThemeCategoryConfigPanel" xml:space="preserve">
|
||||
<value>Конфигурация</value>
|
||||
</data>
|
||||
<data name="strThemeCategoryConnectionsPanel" xml:space="preserve">
|
||||
<value>Подключения</value>
|
||||
</data>
|
||||
<data name="strThemeCategoryGeneral" xml:space="preserve">
|
||||
<value>Общие</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionConfigPanelBackgroundColor" xml:space="preserve">
|
||||
<value>Цвет фона панели конфигурации.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionConfigPanelCategoryTextColor" xml:space="preserve">
|
||||
<value>Цвет текста категории на панели конфигурации.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionConfigPanelGridLineColor" xml:space="preserve">
|
||||
<value>Цвет линий сетки на панели конфигурации</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionConfigPanelHelpBackgroundColor" xml:space="preserve">
|
||||
<value>Цвет фона области справки панели конфигурации.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionConfigPanelHelpTextColor" xml:space="preserve">
|
||||
<value>Цвет текста в области справки панели конфигурации.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionConfigPanelTextColor" xml:space="preserve">
|
||||
<value>Цвет текста в панели конфигурации.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionConnectionsPanelBackgroundColor" xml:space="preserve">
|
||||
<value>Цвет фона панели подключений.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionConnectionsPanelTextColor" xml:space="preserve">
|
||||
<value>Цвет текста в панели подключений.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionConnectionsPanelTreeLineColor" xml:space="preserve">
|
||||
<value>Цвет линий дерева на панели подключений.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionMenuBackgroundColor" xml:space="preserve">
|
||||
<value>Цвет фона меню.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionMenuTextColor" xml:space="preserve">
|
||||
<value>Цвет текста в меню.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionSearchBoxBackgroundColor" xml:space="preserve">
|
||||
<value>Цвет фона поля поиска.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionSearchBoxTextColor" xml:space="preserve">
|
||||
<value>Цвет текста в поле поиска.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionSearchBoxTextPromptColor" xml:space="preserve">
|
||||
<value>Цвет текста подсказки в поле поиска.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionToolbarBackgroundColor" xml:space="preserve">
|
||||
<value>Цвет фона панели инструментов.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionToolbarTextColor" xml:space="preserve">
|
||||
<value>Цвет текста в панели инструментов.</value>
|
||||
</data>
|
||||
<data name="strThemeDescriptionWindowBackgroundColor" xml:space="preserve">
|
||||
<value>Цвет фона главного окна.</value>
|
||||
</data>
|
||||
<data name="strThemeNameConfigPanelBackgroundColor" xml:space="preserve">
|
||||
<value>Цвет фона панели конфигурации</value>
|
||||
</data>
|
||||
<data name="strThemeNameConfigPanelCategoryTextColor" xml:space="preserve">
|
||||
<value>Цвет текста категории панели конфигурации</value>
|
||||
</data>
|
||||
<data name="strThemeNameConfigPanelGridLineColor" xml:space="preserve">
|
||||
<value>Цвет линий сетки панели конфигурации</value>
|
||||
</data>
|
||||
<data name="strThemeNameConfigPanelHelpBackgroundColor" xml:space="preserve">
|
||||
<value>Цвет фона справки панели конфигурации</value>
|
||||
</data>
|
||||
<data name="strThemeNameConfigPanelHelpTextColor" xml:space="preserve">
|
||||
<value>Цвет текста справки панели конфигурации</value>
|
||||
</data>
|
||||
<data name="strThemeNameConfigPanelTextColor" xml:space="preserve">
|
||||
<value>Цвет текста панели конфигурации</value>
|
||||
</data>
|
||||
<data name="strThemeNameConnectionsPanelBackgroundColor" xml:space="preserve">
|
||||
<value>Цвет фона панели подключений</value>
|
||||
</data>
|
||||
<data name="strThemeNameConnectionsPanelTextColor" xml:space="preserve">
|
||||
<value>Цвет текста панели подключений</value>
|
||||
</data>
|
||||
<data name="strThemeNameConnectionsPanelTreeLineColor" xml:space="preserve">
|
||||
<value>Цвет линий дерева панели подключений</value>
|
||||
</data>
|
||||
<data name="strThemeNameMenuBackgroundColor" xml:space="preserve">
|
||||
<value>Цвет фона меню</value>
|
||||
</data>
|
||||
<data name="strThemeNameMenuTextColor" xml:space="preserve">
|
||||
<value>Цвет текста меню</value>
|
||||
</data>
|
||||
<data name="strThemeNameSearchBoxBackgroundColor" xml:space="preserve">
|
||||
<value>Цвет фона поля поиска</value>
|
||||
</data>
|
||||
<data name="strThemeNameSearchBoxTextColor" xml:space="preserve">
|
||||
<value>Цвет текста поля поиска</value>
|
||||
</data>
|
||||
<data name="strThemeNameSearchBoxTextPromptColor" xml:space="preserve">
|
||||
<value>Цвет текста подсказки поля поиска</value>
|
||||
</data>
|
||||
<data name="strThemeNameToolbarBackgroundColor" xml:space="preserve">
|
||||
<value>Цвет фона панели инструментов</value>
|
||||
</data>
|
||||
<data name="strThemeNameToolbarTextColor" xml:space="preserve">
|
||||
<value>Цвет текста панели инструментов</value>
|
||||
</data>
|
||||
<data name="strThemeNameWindowBackgroundColor" xml:space="preserve">
|
||||
<value>Цвет фона окна</value>
|
||||
</data>
|
||||
<data name="strTitleError" xml:space="preserve">
|
||||
<value>Ошибка ({0})</value>
|
||||
</data>
|
||||
@@ -1913,6 +2084,9 @@
|
||||
<data name="strUncheckProperties" xml:space="preserve">
|
||||
<value>Снимите свойства, которые не хотите сохранять!</value>
|
||||
</data>
|
||||
<data name="strUnnamedTheme" xml:space="preserve">
|
||||
<value>Безымянный тема</value>
|
||||
</data>
|
||||
<data name="strUpdateAvailable" xml:space="preserve">
|
||||
<value>Требуется обновление mRemoteNG</value>
|
||||
</data>
|
||||
|
||||
@@ -438,9 +438,6 @@ VncSharpNG Control Version {0}</value>
|
||||
<data name="strConfigUiLoadFailed" xml:space="preserve">
|
||||
<value>Помилка завантаження Config UI!</value>
|
||||
</data>
|
||||
<data name="strConfirmCloseConnection" xml:space="preserve">
|
||||
<value>Запитувати підтвердження при закритті вкладки з'єднання</value>
|
||||
</data>
|
||||
<data name="strConfirmCloseConnectionMainInstruction" xml:space="preserve">
|
||||
<value>Хочете закрити з'єднання, "{0}"?</value>
|
||||
</data>
|
||||
@@ -462,9 +459,6 @@ VncSharpNG Control Version {0}</value>
|
||||
<data name="strConfirmDeleteNodeFolderNotEmpty" xml:space="preserve">
|
||||
<value>Хочете видалити папку "{0}"? Будь-які папки або з'єднання, які вона містить також будуть видалені.</value>
|
||||
</data>
|
||||
<data name="strConfirmExit" xml:space="preserve">
|
||||
<value>Підтвердження при виході, якщо є відкриті з'єднання</value>
|
||||
</data>
|
||||
<data name="strConfirmExitMainInstruction" xml:space="preserve">
|
||||
<value>Хочете закрити всі відкриті з'єднання?</value>
|
||||
</data>
|
||||
@@ -715,9 +709,6 @@ VncSharpNG Control Version {0}</value>
|
||||
<data name="strHttpConnectionFailed" xml:space="preserve">
|
||||
<value>Не вдається створити нове з'єднання HTTP!</value>
|
||||
</data>
|
||||
<data name="strHttpDocumentTileChangeFailed" xml:space="preserve">
|
||||
<value>Змінити HTTP документ не вдалося!</value>
|
||||
</data>
|
||||
<data name="strHttpSetPropsFailed" xml:space="preserve">
|
||||
<value>Не вдалося задати параметри HTTP!</value>
|
||||
</data>
|
||||
@@ -1823,9 +1814,6 @@ VncSharpNG Control Version {0}</value>
|
||||
<data name="strSSHTransferEndFailed" xml:space="preserve">
|
||||
<value>Передача по SSH завершена с ошибкой (UI.Window.SSHTransfer)!</value>
|
||||
</data>
|
||||
<data name="strSSHTransferFailed" xml:space="preserve">
|
||||
<value>Передача</value>
|
||||
</data>
|
||||
<data name="strStartIP" xml:space="preserve">
|
||||
<value>Початковий IP</value>
|
||||
</data>
|
||||
|
||||
@@ -150,6 +150,9 @@
|
||||
<data name="strAlwaysShowPanelSelection" xml:space="preserve">
|
||||
<value>在打开连接时总是显示面板选择对话框</value>
|
||||
</data>
|
||||
<data name="strAlwaysShowPanelTabs" xml:space="preserve">
|
||||
<value>始终显示标签面板</value>
|
||||
</data>
|
||||
<data name="strAlwaysShowSysTrayIcon" xml:space="preserve">
|
||||
<value>始终显示通知区域图标</value>
|
||||
</data>
|
||||
@@ -433,9 +436,6 @@ VncSharpNG 版本 {0}</value>
|
||||
<data name="strConfigUiLoadFailed" xml:space="preserve">
|
||||
<value>无法加载配置界面。</value>
|
||||
</data>
|
||||
<data name="strConfirmCloseConnection" xml:space="preserve">
|
||||
<value>关闭连接选项卡时确认。</value>
|
||||
</data>
|
||||
<data name="strConfirmCloseConnectionMainInstruction" xml:space="preserve">
|
||||
<value>确定要关闭连接“{0}”?</value>
|
||||
</data>
|
||||
@@ -457,9 +457,6 @@ VncSharpNG 版本 {0}</value>
|
||||
<data name="strConfirmDeleteNodeFolderNotEmpty" xml:space="preserve">
|
||||
<value>确定要删除目录,"{0}"?目录下所有目录及连接都将被删除。</value>
|
||||
</data>
|
||||
<data name="strConfirmExit" xml:space="preserve">
|
||||
<value>退出时如有已打开的连接,需进行确认。</value>
|
||||
</data>
|
||||
<data name="strConfirmExitMainInstruction" xml:space="preserve">
|
||||
<value>确认要关闭所有已打开的连接吗?</value>
|
||||
</data>
|
||||
@@ -547,6 +544,9 @@ VncSharpNG 版本 {0}</value>
|
||||
<data name="strCurrentVersion" xml:space="preserve">
|
||||
<value>已安装版本</value>
|
||||
</data>
|
||||
<data name="strDefaultTheme" xml:space="preserve">
|
||||
<value>默认主题</value>
|
||||
</data>
|
||||
<data name="strDetect" xml:space="preserve">
|
||||
<value>检测</value>
|
||||
</data>
|
||||
@@ -702,9 +702,6 @@ VncSharpNG 版本 {0}</value>
|
||||
<data name="strHttpConnectionFailed" xml:space="preserve">
|
||||
<value>无法创建新的 HTTP 连接!</value>
|
||||
</data>
|
||||
<data name="strHttpDocumentTileChangeFailed" xml:space="preserve">
|
||||
<value>更改HTTP文档标题失败!</value>
|
||||
</data>
|
||||
<data name="strHttpSetPropsFailed" xml:space="preserve">
|
||||
<value>设置 HTTP 属性失败!</value>
|
||||
</data>
|
||||
@@ -792,6 +789,9 @@ VncSharpNG 版本 {0}</value>
|
||||
<data name="strLabelChangeLog" xml:space="preserve">
|
||||
<value>更新记录:</value>
|
||||
</data>
|
||||
<data name="strLabelClosingConnections" xml:space="preserve">
|
||||
<value>当关闭连接时:</value>
|
||||
</data>
|
||||
<data name="strLabelConnect" xml:space="preserve">
|
||||
<value>连接(&C)</value>
|
||||
</data>
|
||||
@@ -990,6 +990,15 @@ VncSharpNG 版本 {0}</value>
|
||||
<data name="strMenuNotifications" xml:space="preserve">
|
||||
<value>通知</value>
|
||||
</data>
|
||||
<data name="strMenuNotificationsCopyAll" xml:space="preserve">
|
||||
<value>复制全部</value>
|
||||
</data>
|
||||
<data name="strMenuNotificationsDelete" xml:space="preserve">
|
||||
<value>删除</value>
|
||||
</data>
|
||||
<data name="strMenuNotificationsDeleteAll" xml:space="preserve">
|
||||
<value>删除全部</value>
|
||||
</data>
|
||||
<data name="strMenuOpenConnectionFile" xml:space="preserve">
|
||||
<value>打开连接配置文件…</value>
|
||||
</data>
|
||||
@@ -1050,6 +1059,9 @@ VncSharpNG 版本 {0}</value>
|
||||
<data name="strMenuSessionsAndScreenshots" xml:space="preserve">
|
||||
<value>会话和屏幕截图</value>
|
||||
</data>
|
||||
<data name="strMenuShowHelpText" xml:space="preserve">
|
||||
<value>显示(&S)帮助文本</value>
|
||||
</data>
|
||||
<data name="strMenuShowText" xml:space="preserve">
|
||||
<value>显示文本</value>
|
||||
</data>
|
||||
@@ -1143,6 +1155,15 @@ VncSharpNG 版本 {0}</value>
|
||||
<data name="strOpenPorts" xml:space="preserve">
|
||||
<value>打开端口</value>
|
||||
</data>
|
||||
<data name="strOptionsTabTheme" xml:space="preserve">
|
||||
<value>主题</value>
|
||||
</data>
|
||||
<data name="strOptionsThemeButtonDelete" xml:space="preserve">
|
||||
<value>删除(&D)</value>
|
||||
</data>
|
||||
<data name="strOptionsThemeButtonNew" xml:space="preserve">
|
||||
<value>新建(&N)</value>
|
||||
</data>
|
||||
<data name="strPanelName" xml:space="preserve">
|
||||
<value>面板名称</value>
|
||||
</data>
|
||||
@@ -1527,6 +1548,18 @@ VncSharpNG 版本 {0}</value>
|
||||
<data name="strQuickConnectHistoryExistsFailed" xml:space="preserve">
|
||||
<value>快速连接历史记录检测失败 !</value>
|
||||
</data>
|
||||
<data name="strRadioCloseWarnAll" xml:space="preserve">
|
||||
<value>(&W)关闭连接时确认</value>
|
||||
</data>
|
||||
<data name="strRadioCloseWarnExit" xml:space="preserve">
|
||||
<value>退出(&e)mRemoteNG时确认</value>
|
||||
</data>
|
||||
<data name="strRadioCloseWarnMultiple" xml:space="preserve">
|
||||
<value>关闭多个(&m)连接时确认</value>
|
||||
</data>
|
||||
<data name="strRadioCloseWarnNever" xml:space="preserve">
|
||||
<value>关闭连接时不需确认</value>
|
||||
</data>
|
||||
<data name="strRAW" xml:space="preserve">
|
||||
<value>RAW</value>
|
||||
</data>
|
||||
@@ -1743,6 +1776,9 @@ VncSharpNG 版本 {0}</value>
|
||||
<data name="strScreenshots" xml:space="preserve">
|
||||
<value>屏幕截图</value>
|
||||
</data>
|
||||
<data name="strSearchPrompt" xml:space="preserve">
|
||||
<value>搜索</value>
|
||||
</data>
|
||||
<data name="strSendTo" xml:space="preserve">
|
||||
<value>发送到…</value>
|
||||
</data>
|
||||
@@ -1827,9 +1863,6 @@ VncSharpNG 版本 {0}</value>
|
||||
<data name="strSSHTransferEndFailed" xml:space="preserve">
|
||||
<value>SSH 传输结束(UI.Window.SSHTransfer)失败!</value>
|
||||
</data>
|
||||
<data name="strSSHTransferFailed" xml:space="preserve">
|
||||
<value>传输</value>
|
||||
</data>
|
||||
<data name="strStartIP" xml:space="preserve">
|
||||
<value>起始IP</value>
|
||||
</data>
|
||||
@@ -1863,6 +1896,66 @@ VncSharpNG 版本 {0}</value>
|
||||
<data name="strTheFollowing" xml:space="preserve">
|
||||
<value>以下:</value>
|
||||
</data>
|
||||
<data name="strThemeCategoryConfigPanel" xml:space="preserve">
|
||||
<value>配置面板</value>
|
||||
</data>
|
||||
<data name="strThemeCategoryConnectionsPanel" xml:space="preserve">
|
||||
<value>连接面板</value>
|
||||
</data>
|
||||
<data name="strThemeCategoryGeneral" xml:space="preserve">
|
||||
<value>常规</value>
|
||||
</data>
|
||||
<data name="strThemeNameConfigPanelBackgroundColor" xml:space="preserve">
|
||||
<value>配置面板背景色</value>
|
||||
</data>
|
||||
<data name="strThemeNameConfigPanelCategoryTextColor" xml:space="preserve">
|
||||
<value>配置面板类别文本颜色</value>
|
||||
</data>
|
||||
<data name="strThemeNameConfigPanelGridLineColor" xml:space="preserve">
|
||||
<value>配置面板网格线颜色</value>
|
||||
</data>
|
||||
<data name="strThemeNameConfigPanelHelpBackgroundColor" xml:space="preserve">
|
||||
<value>配置面板帮助背景颜色</value>
|
||||
</data>
|
||||
<data name="strThemeNameConfigPanelHelpTextColor" xml:space="preserve">
|
||||
<value>配置面板帮助文本颜色</value>
|
||||
</data>
|
||||
<data name="strThemeNameConfigPanelTextColor" xml:space="preserve">
|
||||
<value>配置面板文本颜色</value>
|
||||
</data>
|
||||
<data name="strThemeNameConnectionsPanelBackgroundColor" xml:space="preserve">
|
||||
<value>连接面板背景色</value>
|
||||
</data>
|
||||
<data name="strThemeNameConnectionsPanelTextColor" xml:space="preserve">
|
||||
<value>连接面板文本颜色</value>
|
||||
</data>
|
||||
<data name="strThemeNameConnectionsPanelTreeLineColor" xml:space="preserve">
|
||||
<value>连接面板树线颜色</value>
|
||||
</data>
|
||||
<data name="strThemeNameMenuBackgroundColor" xml:space="preserve">
|
||||
<value>菜单背景颜色</value>
|
||||
</data>
|
||||
<data name="strThemeNameMenuTextColor" xml:space="preserve">
|
||||
<value>菜单文本颜色</value>
|
||||
</data>
|
||||
<data name="strThemeNameSearchBoxBackgroundColor" xml:space="preserve">
|
||||
<value>搜索栏背景颜色</value>
|
||||
</data>
|
||||
<data name="strThemeNameSearchBoxTextColor" xml:space="preserve">
|
||||
<value>搜索栏文本颜色</value>
|
||||
</data>
|
||||
<data name="strThemeNameSearchBoxTextPromptColor" xml:space="preserve">
|
||||
<value>搜索栏提示文本颜色</value>
|
||||
</data>
|
||||
<data name="strThemeNameToolbarBackgroundColor" xml:space="preserve">
|
||||
<value>工具栏背景颜色</value>
|
||||
</data>
|
||||
<data name="strThemeNameToolbarTextColor" xml:space="preserve">
|
||||
<value>工具栏文本颜色</value>
|
||||
</data>
|
||||
<data name="strThemeNameWindowBackgroundColor" xml:space="preserve">
|
||||
<value>窗口背景颜色</value>
|
||||
</data>
|
||||
<data name="strTitleError" xml:space="preserve">
|
||||
<value>错误 ({0})</value>
|
||||
</data>
|
||||
@@ -1899,6 +1992,9 @@ VncSharpNG 版本 {0}</value>
|
||||
<data name="strUncheckProperties" xml:space="preserve">
|
||||
<value>请勾去您不想保存的属性!</value>
|
||||
</data>
|
||||
<data name="strUnnamedTheme" xml:space="preserve">
|
||||
<value>未命名主题</value>
|
||||
</data>
|
||||
<data name="strUpdateAvailable" xml:space="preserve">
|
||||
<value>mRemoteNG 需要更新</value>
|
||||
</data>
|
||||
|
||||
@@ -113,6 +113,10 @@ Namespace Messages
|
||||
AddToList(lvItem)
|
||||
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)
|
||||
Me.SwitchToMessage()
|
||||
Me.ECTimer.Enabled = False
|
||||
|
||||
@@ -32,6 +32,6 @@ Imports System.Runtime.InteropServices
|
||||
' by using the '*' as shown below:
|
||||
' <Assembly: AssemblyVersion("1.0.*")>
|
||||
|
||||
<Assembly: AssemblyVersion("1.70.*")>
|
||||
<Assembly: AssemblyVersion("1.71.*")>
|
||||
|
||||
<Assembly: NeutralResourcesLanguageAttribute("en")>
|
||||
|
||||
9
mRemoteV1/My Project/Resources.Designer.vb
generated
9
mRemoteV1/My Project/Resources.Designer.vb
generated
@@ -1,7 +1,7 @@
|
||||
'------------------------------------------------------------------------------
|
||||
' <auto-generated>
|
||||
' This code was generated by a tool.
|
||||
' Runtime Version:4.0.30319.239
|
||||
' Runtime Version:4.0.30319.296
|
||||
'
|
||||
' Changes to this file may cause incorrect behavior and will be lost if
|
||||
' the code is regenerated.
|
||||
@@ -585,6 +585,13 @@ Namespace My.Resources
|
||||
End Get
|
||||
End Property
|
||||
|
||||
Friend ReadOnly Property PuttySessions() As System.Drawing.Bitmap
|
||||
Get
|
||||
Dim obj As Object = ResourceManager.GetObject("PuttySessions", resourceCulture)
|
||||
Return CType(obj,System.Drawing.Bitmap)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
Friend ReadOnly Property Quit() As System.Drawing.Bitmap
|
||||
Get
|
||||
Dim obj As Object = ResourceManager.GetObject("Quit", resourceCulture)
|
||||
|
||||
@@ -445,4 +445,8 @@
|
||||
<data name="News" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\Images_FamFamFam\News.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
</root>
|
||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="PuttySessions" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\Images\PuttySessions.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
</root>
|
||||
187
mRemoteV1/My Project/Settings.Designer.vb
generated
187
mRemoteV1/My Project/Settings.Designer.vb
generated
@@ -185,7 +185,7 @@ Namespace My
|
||||
<Global.System.Configuration.UserScopedSettingAttribute(), _
|
||||
Global.System.Configuration.SettingsProviderAttribute(GetType(mRemoteNG.Config.Settings.Providers.ChooseProvider)), _
|
||||
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
|
||||
Global.System.Configuration.DefaultSettingValueAttribute("True")> _
|
||||
Global.System.Configuration.DefaultSettingValueAttribute("False")> _
|
||||
Public Property AutomaticallyGetSessionInfo() As Boolean
|
||||
Get
|
||||
Return CType(Me("AutomaticallyGetSessionInfo"),Boolean)
|
||||
@@ -234,19 +234,6 @@ Namespace My
|
||||
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 ConfirmExit() As Boolean
|
||||
Get
|
||||
Return CType(Me("ConfirmExit"),Boolean)
|
||||
End Get
|
||||
Set
|
||||
Me("ConfirmExit") = value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
<Global.System.Configuration.UserScopedSettingAttribute(), _
|
||||
Global.System.Configuration.SettingsProviderAttribute(GetType(mRemoteNG.Config.Settings.Providers.ChooseProvider)), _
|
||||
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
|
||||
@@ -2093,7 +2080,7 @@ Namespace My
|
||||
|
||||
<Global.System.Configuration.ApplicationScopedSettingAttribute(), _
|
||||
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
|
||||
Get
|
||||
Return CType(Me("SupportedUICultures"),String)
|
||||
@@ -2207,10 +2194,10 @@ Namespace My
|
||||
<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 ConfirmCloseConnection() As Boolean
|
||||
Global.System.Configuration.DefaultSettingValueAttribute("4")> _
|
||||
Public Property ConfirmCloseConnection() As Integer
|
||||
Get
|
||||
Return CType(Me("ConfirmCloseConnection"),Boolean)
|
||||
Return CType(Me("ConfirmCloseConnection"),Integer)
|
||||
End Get
|
||||
Set
|
||||
Me("ConfirmCloseConnection") = value
|
||||
@@ -2321,6 +2308,170 @@ Namespace My
|
||||
Me("AlwaysShowPanelTabs") = 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"), _
|
||||
Global.System.Configuration.SettingsManageabilityAttribute(Global.System.Configuration.SettingsManageability.Roaming)> _
|
||||
Public Property IdentifyQuickConnectTabs() As Boolean
|
||||
Get
|
||||
Return CType(Me("IdentifyQuickConnectTabs"),Boolean)
|
||||
End Get
|
||||
Set
|
||||
Me("IdentifyQuickConnectTabs") = 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("release")> _
|
||||
Public ReadOnly Property UpdateChannel() As String
|
||||
Get
|
||||
Return CType(Me("UpdateChannel"),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("")> _
|
||||
Public Property ThemeName() As String
|
||||
Get
|
||||
Return CType(Me("ThemeName"),String)
|
||||
End Get
|
||||
Set
|
||||
Me("ThemeName") = 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 ShowConfigHelpText() As Boolean
|
||||
Get
|
||||
Return CType(Me("ShowConfigHelpText"),Boolean)
|
||||
End Get
|
||||
Set
|
||||
Me("ShowConfigHelpText") = 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 PuttySavedSessionsName() As String
|
||||
Get
|
||||
Return CType(Me("PuttySavedSessionsName"),String)
|
||||
End Get
|
||||
Set
|
||||
Me("PuttySavedSessionsName") = 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 PuttySavedSessionsPanel() As String
|
||||
Get
|
||||
Return CType(Me("PuttySavedSessionsPanel"),String)
|
||||
End Get
|
||||
Set
|
||||
Me("PuttySavedSessionsPanel") = 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 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 Namespace
|
||||
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
<Value Profile="(Default)">True</Value>
|
||||
</Setting>
|
||||
<Setting Name="AutomaticallyGetSessionInfo" Provider="mRemoteNG.Config.Settings.Providers.ChooseProvider" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">True</Value>
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="LoadConsFromCustomLocation" Provider="mRemoteNG.Config.Settings.Providers.ChooseProvider" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
@@ -44,9 +44,6 @@
|
||||
<Setting Name="SaveConsOnExit" Provider="mRemoteNG.Config.Settings.Providers.ChooseProvider" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">True</Value>
|
||||
</Setting>
|
||||
<Setting Name="ConfirmExit" Provider="mRemoteNG.Config.Settings.Providers.ChooseProvider" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">True</Value>
|
||||
</Setting>
|
||||
<Setting Name="CheckForUpdatesOnStartup" Provider="mRemoteNG.Config.Settings.Providers.ChooseProvider" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">True</Value>
|
||||
</Setting>
|
||||
@@ -474,7 +471,7 @@
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
<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 Name="ConDefaultRDGatewayHostname" Provider="mRemoteNG.Config.Settings.Providers.ChooseProvider" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
@@ -500,8 +497,8 @@
|
||||
<Setting Name="InhDefaultEnableDesktopComposition" Provider="mRemoteNG.Config.Settings.Providers.ChooseProvider" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="ConfirmCloseConnection" Provider="mRemoteNG.Config.Settings.Providers.ChooseProvider" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">True</Value>
|
||||
<Setting Name="ConfirmCloseConnection" Provider="mRemoteNG.Config.Settings.Providers.ChooseProvider" Type="System.Int32" Scope="User">
|
||||
<Value Profile="(Default)">4</Value>
|
||||
</Setting>
|
||||
<Setting Name="MainFormRestoreSize" Provider="mRemoteNG.Config.Settings.Providers.ChooseProvider" Type="System.Drawing.Size" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
@@ -527,5 +524,44 @@
|
||||
<Setting Name="AlwaysShowPanelTabs" Provider="mRemoteNG.Config.Settings.Providers.ChooseProvider" Roaming="true" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="IdentifyQuickConnectTabs" Provider="mRemoteNG.Config.Settings.Providers.ChooseProvider" Roaming="true" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="UpdateChannel" Provider="mRemoteNG.Config.Settings.Providers.ChooseProvider" Type="System.String" Scope="Application">
|
||||
<Value Profile="(Default)">release</Value>
|
||||
</Setting>
|
||||
<Setting Name="ThemeName" Provider="mRemoteNG.Config.Settings.Providers.ChooseProvider" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
<Setting Name="ShowConfigHelpText" Provider="mRemoteNG.Config.Settings.Providers.ChooseProvider" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">True</Value>
|
||||
</Setting>
|
||||
<Setting Name="PuttySavedSessionsName" Provider="mRemoteNG.Config.Settings.Providers.ChooseProvider" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
<Setting Name="PuttySavedSessionsPanel" Provider="mRemoteNG.Config.Settings.Providers.ChooseProvider" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</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>
|
||||
</SettingsFile>
|
||||
Binary file not shown.
Binary file not shown.
BIN
mRemoteV1/Resources/Images/PuttySessions.png
Normal file
BIN
mRemoteV1/Resources/Images/PuttySessions.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 322 B |
29
mRemoteV1/Root/PuttySessions.Info.vb
Normal file
29
mRemoteV1/Root/PuttySessions.Info.vb
Normal file
@@ -0,0 +1,29 @@
|
||||
Imports mRemoteNG.Tools.LocalizedAttributes
|
||||
|
||||
Namespace Root
|
||||
Namespace PuttySessions
|
||||
Public Class Info
|
||||
Inherits Root.Info
|
||||
|
||||
Public Sub New()
|
||||
MyBase.New(RootType.PuttySessions)
|
||||
End Sub
|
||||
|
||||
Public Overrides Property Name() As String
|
||||
|
||||
Private _panel As String = My.Language.strGeneral
|
||||
<LocalizedCategory("strCategoryDisplay", 1), _
|
||||
LocalizedDisplayName("strPropertyNamePanel"), _
|
||||
LocalizedDescription("strPropertyDescriptionPanel")> _
|
||||
Public Property Panel() As String
|
||||
Get
|
||||
Return _panel
|
||||
End Get
|
||||
Set(ByVal value As String)
|
||||
_panel = value
|
||||
End Set
|
||||
End Property
|
||||
End Class
|
||||
End Namespace
|
||||
End Namespace
|
||||
|
||||
@@ -20,7 +20,7 @@ Namespace Root
|
||||
LocalizedDisplayName("strPropertyNameName"), _
|
||||
LocalizedDescription("strPropertyDescriptionName"), _
|
||||
Attributes.Root()> _
|
||||
Public Property Name() As String
|
||||
Public Overridable Property Name() As String
|
||||
Get
|
||||
Return Me._Name
|
||||
End Get
|
||||
@@ -104,6 +104,7 @@ Namespace Root
|
||||
Public Enum RootType
|
||||
Connection
|
||||
Credential
|
||||
PuttySessions
|
||||
End Enum
|
||||
|
||||
Public Class Attributes
|
||||
|
||||
@@ -43,36 +43,38 @@ Namespace Security
|
||||
Return StrToEncrypt
|
||||
End Function
|
||||
|
||||
Public Shared Function Decrypt(ByVal StrToDecrypt As String, ByVal StrSecret As String) As String
|
||||
If StrToDecrypt = "" Or StrSecret = "" Then
|
||||
Return StrToDecrypt
|
||||
Public Shared Function Decrypt(ByVal ciphertextBase64 As String, ByVal password As String) As String
|
||||
If String.IsNullOrEmpty(ciphertextBase64) Or String.IsNullOrEmpty(password) Then
|
||||
Return ciphertextBase64
|
||||
End If
|
||||
|
||||
Try
|
||||
Dim rd As New RijndaelManaged
|
||||
Dim rijndaelIvLength As Integer = 16
|
||||
Dim md5 As New MD5CryptoServiceProvider
|
||||
Dim key() As Byte = md5.ComputeHash(Encoding.UTF8.GetBytes(StrSecret))
|
||||
Dim plaintext As String
|
||||
|
||||
md5.Clear()
|
||||
Using rijndaelManaged As New RijndaelManaged
|
||||
Using md5 As New MD5CryptoServiceProvider
|
||||
Dim key() As Byte = md5.ComputeHash(Encoding.UTF8.GetBytes(password))
|
||||
rijndaelManaged.Key = key
|
||||
End Using
|
||||
|
||||
Dim encdata() As Byte = Convert.FromBase64String(StrToDecrypt)
|
||||
Dim ms As New MemoryStream(encdata)
|
||||
Dim iv(15) As Byte
|
||||
Dim ciphertext() As Byte = Convert.FromBase64String(ciphertextBase64)
|
||||
|
||||
ms.Read(iv, 0, rijndaelIvLength)
|
||||
rd.IV = iv
|
||||
rd.Key = key
|
||||
Using memoryStream As New MemoryStream(ciphertext)
|
||||
Const ivLength As Integer = 16
|
||||
Dim iv(ivLength - 1) As Byte
|
||||
memoryStream.Read(iv, 0, ivLength)
|
||||
rijndaelManaged.IV = iv
|
||||
|
||||
Dim cs As New CryptoStream(ms, rd.CreateDecryptor, CryptoStreamMode.Read)
|
||||
Using cryptoStream As New CryptoStream(memoryStream, rijndaelManaged.CreateDecryptor, CryptoStreamMode.Read)
|
||||
Using streamReader As New StreamReader(cryptoStream, System.Text.Encoding.UTF8, True)
|
||||
plaintext = streamReader.ReadToEnd()
|
||||
End Using
|
||||
rijndaelManaged.Clear()
|
||||
End Using ' cryptoStream
|
||||
End Using ' memoryStream
|
||||
End Using ' rijndaelManaged
|
||||
|
||||
Dim data(ms.Length - rijndaelIvLength) As Byte
|
||||
Dim i As Integer = cs.Read(data, 0, data.Length)
|
||||
|
||||
cs.Close()
|
||||
rd.Clear()
|
||||
|
||||
Return System.Text.Encoding.UTF8.GetString(data, 0, i)
|
||||
Return plaintext
|
||||
Catch ex As Exception
|
||||
' Ignore CryptographicException "Padding is invalid and cannot be removed." when password is incorrect.
|
||||
If Not TypeOf ex Is CryptographicException Then
|
||||
@@ -80,7 +82,7 @@ Namespace Security
|
||||
End If
|
||||
End Try
|
||||
|
||||
Return StrToDecrypt
|
||||
Return ciphertextBase64
|
||||
End Function
|
||||
End Class
|
||||
End Namespace
|
||||
|
||||
@@ -10,7 +10,7 @@ Namespace Security
|
||||
Public Class Impersonator
|
||||
#Region "Logon API"
|
||||
Private Const LOGON32_PROVIDER_DEFAULT As Integer = 0
|
||||
Private Const LOGON32_LOGON_INTERACTIVE As Integer = 2 ' This parameter causes LogonUser to create a primary token.
|
||||
Private Const LOGON32_LOGON_NEW_CREDENTIALS As Integer = 9
|
||||
|
||||
Private Const SecurityImpersonation As Integer = 2
|
||||
|
||||
@@ -37,7 +37,6 @@ Namespace Security
|
||||
#End Region
|
||||
|
||||
Private tokenHandle As New IntPtr(0)
|
||||
Private dupeTokenHandle As New IntPtr(0)
|
||||
Private impersonatedUser As WindowsImpersonationContext = Nothing
|
||||
|
||||
' GetErrorMessage formats and returns an error message corresponding to the input errorCode.
|
||||
@@ -59,9 +58,8 @@ Namespace Security
|
||||
If Not (impersonatedUser Is Nothing) Then Throw New Exception("Already impersonating a user.")
|
||||
|
||||
tokenHandle = IntPtr.Zero
|
||||
dupeTokenHandle = IntPtr.Zero
|
||||
|
||||
Dim returnValue As Integer = LogonUser(UserName, DomainName, Password, LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, tokenHandle)
|
||||
Dim returnValue As Integer = LogonUser(UserName, DomainName, Password, LOGON32_LOGON_NEW_CREDENTIALS, LOGON32_PROVIDER_DEFAULT, tokenHandle)
|
||||
|
||||
If 0 = returnValue Then
|
||||
Dim errCode As Integer = Marshal.GetLastWin32Error()
|
||||
@@ -70,17 +68,8 @@ Namespace Security
|
||||
Throw exLogon
|
||||
End If
|
||||
|
||||
returnValue = DuplicateToken(tokenHandle, SecurityImpersonation, dupeTokenHandle)
|
||||
If 0 = returnValue Then
|
||||
CloseHandle(tokenHandle)
|
||||
Throw New ApplicationException("Error trying to duplicate handle.")
|
||||
End If
|
||||
|
||||
' The token that is passed to the following constructor must
|
||||
' be a primary token in order to use it for impersonation.
|
||||
Dim newId As New WindowsIdentity(dupeTokenHandle)
|
||||
Dim newId As New WindowsIdentity(tokenHandle)
|
||||
impersonatedUser = newId.Impersonate()
|
||||
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddMessage(Messages.MessageClass.WarningMsg, "Starting Impersonation failed (Sessions feature will not work)" & vbNewLine & ex.Message, True)
|
||||
End Try
|
||||
@@ -98,7 +87,6 @@ Namespace Security
|
||||
Finally
|
||||
|
||||
If Not System.IntPtr.op_Equality(tokenHandle, IntPtr.Zero) Then CloseHandle(tokenHandle)
|
||||
If Not System.IntPtr.op_Equality(dupeTokenHandle, IntPtr.Zero) Then CloseHandle(dupeTokenHandle)
|
||||
|
||||
impersonatedUser = Nothing
|
||||
End Try
|
||||
|
||||
325
mRemoteV1/Themes/ThemeInfo.vb
Normal file
325
mRemoteV1/Themes/ThemeInfo.vb
Normal file
@@ -0,0 +1,325 @@
|
||||
Imports System.ComponentModel
|
||||
Imports mRemoteNG.Tools.LocalizedAttributes
|
||||
Imports mRemoteNG.My
|
||||
|
||||
Namespace Themes
|
||||
Public Class ThemeInfo
|
||||
Implements ICloneable, INotifyPropertyChanged
|
||||
#Region "Public Methods"
|
||||
Public Sub New(Optional ByVal themeName As String = Nothing)
|
||||
If themeName IsNot Nothing Then Name = themeName
|
||||
End Sub
|
||||
|
||||
Public Function Clone() As Object Implements ICloneable.Clone
|
||||
Return MemberwiseClone()
|
||||
End Function
|
||||
|
||||
Public Overrides Function ToString() As String
|
||||
Return Name
|
||||
End Function
|
||||
|
||||
Public Overrides Function Equals(obj As Object) As Boolean
|
||||
Dim otherTheme As ThemeInfo = TryCast(obj, ThemeInfo)
|
||||
If otherTheme Is Nothing Then Return False
|
||||
|
||||
Dim themeInfoType As Type = (New ThemeInfo).GetType()
|
||||
Dim myProperty As Object
|
||||
Dim otherProperty As Object
|
||||
For Each propertyInfo As Reflection.PropertyInfo In themeInfoType.GetProperties()
|
||||
myProperty = propertyInfo.GetValue(Me, Nothing)
|
||||
otherProperty = propertyInfo.GetValue(otherTheme, Nothing)
|
||||
If Not myProperty.Equals(otherProperty) Then Return False
|
||||
Next
|
||||
|
||||
Return True
|
||||
End Function
|
||||
#End Region
|
||||
|
||||
#Region "Events"
|
||||
Public Event PropertyChanged(sender As Object, e As System.ComponentModel.PropertyChangedEventArgs) Implements System.ComponentModel.INotifyPropertyChanged.PropertyChanged
|
||||
Protected Sub NotifyPropertyChanged(ByVal propertyName As String)
|
||||
RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(propertyName))
|
||||
End Sub
|
||||
#End Region
|
||||
|
||||
#Region "Properties"
|
||||
Private _name As String = Language.strUnnamedTheme
|
||||
<Browsable(False)> _
|
||||
Public Property Name As String
|
||||
Get
|
||||
Return _name
|
||||
End Get
|
||||
Set(value As String)
|
||||
If _name = value Then Return
|
||||
_name = value
|
||||
NotifyPropertyChanged("Name")
|
||||
End Set
|
||||
End Property
|
||||
|
||||
#Region "General"
|
||||
Private _windowBackgroundColor As Color = SystemColors.AppWorkspace
|
||||
<LocalizedCategory("strThemeCategoryGeneral", 1), _
|
||||
LocalizedDisplayName("strThemeNameWindowBackgroundColor"), _
|
||||
LocalizedDescription("strThemeDescriptionWindowBackgroundColor")> _
|
||||
Public Property WindowBackgroundColor() As Color
|
||||
Get
|
||||
Return (_windowBackgroundColor)
|
||||
End Get
|
||||
Set(value As Color)
|
||||
If _windowBackgroundColor = value Then Return
|
||||
_windowBackgroundColor = value
|
||||
NotifyPropertyChanged("WindowBackgroundColor")
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Private _menuBackgroundColor As Color = SystemColors.Control
|
||||
<LocalizedCategory("strThemeCategoryGeneral", 1), _
|
||||
Browsable(False),
|
||||
LocalizedDisplayName("strThemeNameMenuBackgroundColor"),
|
||||
LocalizedDescription("strThemeDescriptionMenuBackgroundColor")>
|
||||
Public Property MenuBackgroundColor() As Color
|
||||
Get
|
||||
Return _menuBackgroundColor
|
||||
End Get
|
||||
Set(value As Color)
|
||||
If _menuBackgroundColor = value Then Return
|
||||
_menuBackgroundColor = value
|
||||
NotifyPropertyChanged("MenuBackgroundColor")
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Private _menuTextColor As Color = SystemColors.ControlText
|
||||
<LocalizedCategory("strThemeCategoryGeneral", 1), _
|
||||
Browsable(False),
|
||||
LocalizedDisplayName("strThemeNameMenuTextColor"),
|
||||
LocalizedDescription("strThemeDescriptionMenuTextColor")>
|
||||
Public Property MenuTextColor() As Color
|
||||
Get
|
||||
Return _menuTextColor
|
||||
End Get
|
||||
Set(value As Color)
|
||||
If _menuTextColor = value Then Return
|
||||
_menuTextColor = value
|
||||
NotifyPropertyChanged("MenuTextColor")
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Private _toolbarBackgroundColor As Color = SystemColors.Control
|
||||
<LocalizedCategory("strThemeCategoryGeneral", 1), _
|
||||
Browsable(False), _
|
||||
LocalizedDisplayName("strThemeNameToolbarBackgroundColor"), _
|
||||
LocalizedDescription("strThemeDescriptionToolbarBackgroundColor")> _
|
||||
Public Property ToolbarBackgroundColor() As Color
|
||||
Get
|
||||
Return _toolbarBackgroundColor
|
||||
End Get
|
||||
Set(value As Color)
|
||||
If _toolbarBackgroundColor = value Or value.A < 255 Then Return
|
||||
_toolbarBackgroundColor = value
|
||||
NotifyPropertyChanged("ToolbarBackgroundColor")
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Private _toolbarTextColor As Color = SystemColors.ControlText
|
||||
<LocalizedCategory("strThemeCategoryGeneral", 1), _
|
||||
Browsable(False), _
|
||||
LocalizedDisplayName("strThemeNameToolbarTextColor"), _
|
||||
LocalizedDescription("strThemeDescriptionToolbarTextColor")> _
|
||||
Public Property ToolbarTextColor() As Color
|
||||
Get
|
||||
Return _toolbarTextColor
|
||||
End Get
|
||||
Set(value As Color)
|
||||
If _toolbarTextColor = value Then Return
|
||||
_toolbarTextColor = value
|
||||
NotifyPropertyChanged("ToolbarTextColor")
|
||||
End Set
|
||||
End Property
|
||||
#End Region
|
||||
|
||||
#Region "Connections Panel"
|
||||
Private _connectionsPanelBackgroundColor As Color = SystemColors.Window
|
||||
<LocalizedCategory("strThemeCategoryConnectionsPanel", 2), _
|
||||
LocalizedDisplayName("strThemeNameConnectionsPanelBackgroundColor"), _
|
||||
LocalizedDescription("strThemeDescriptionConnectionsPanelBackgroundColor")> _
|
||||
Public Property ConnectionsPanelBackgroundColor() As Color
|
||||
Get
|
||||
Return _connectionsPanelBackgroundColor
|
||||
End Get
|
||||
Set(value As Color)
|
||||
If _connectionsPanelBackgroundColor = value Or value.A < 255 Then Return
|
||||
_connectionsPanelBackgroundColor = value
|
||||
NotifyPropertyChanged("ConnectionsPanelBackgroundColor")
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Private _connectionsPanelTextColor As Color = SystemColors.WindowText
|
||||
<LocalizedCategory("strThemeCategoryConnectionsPanel", 2),
|
||||
LocalizedDisplayName("strThemeNameConnectionsPanelTextColor"),
|
||||
LocalizedDescription("strThemeDescriptionConnectionsPanelTextColor")>
|
||||
Public Property ConnectionsPanelTextColor() As Color
|
||||
Get
|
||||
Return _connectionsPanelTextColor
|
||||
End Get
|
||||
Set(value As Color)
|
||||
If _connectionsPanelTextColor = value Then Return
|
||||
_connectionsPanelTextColor = value
|
||||
NotifyPropertyChanged("ConnectionsPanelTextColor")
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Private _connectionsPanelTreeLineColor As Color = Color.Black
|
||||
<LocalizedCategory("strThemeCategoryConnectionsPanel", 2),
|
||||
LocalizedDisplayName("strThemeNameConnectionsPanelTreeLineColor"),
|
||||
LocalizedDescription("strThemeDescriptionConnectionsPanelTreeLineColor")>
|
||||
Public Property ConnectionsPanelTreeLineColor() As Color
|
||||
Get
|
||||
Return _connectionsPanelTreeLineColor
|
||||
End Get
|
||||
Set(value As Color)
|
||||
If _connectionsPanelTreeLineColor = value Then Return
|
||||
_connectionsPanelTreeLineColor = value
|
||||
NotifyPropertyChanged("ConnectionsPanelTreeLineColor")
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Private _searchBoxBackgroundColor As Color = SystemColors.Window
|
||||
<LocalizedCategory("strThemeCategoryConnectionsPanel", 2), _
|
||||
LocalizedDisplayName("strThemeNameSearchBoxBackgroundColor"), _
|
||||
LocalizedDescription("strThemeDescriptionSearchBoxBackgroundColor")> _
|
||||
Public Property SearchBoxBackgroundColor() As Color
|
||||
Get
|
||||
Return _searchBoxBackgroundColor
|
||||
End Get
|
||||
Set(value As Color)
|
||||
If _searchBoxBackgroundColor = value Or value.A < 255 Then Return
|
||||
_searchBoxBackgroundColor = value
|
||||
NotifyPropertyChanged("SearchBoxBackgroundColor")
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Private _searchBoxTextPromptColor As Color = SystemColors.GrayText
|
||||
<LocalizedCategory("strThemeCategoryConnectionsPanel", 2), _
|
||||
LocalizedDisplayName("strThemeNameSearchBoxTextPromptColor"), _
|
||||
LocalizedDescription("strThemeDescriptionSearchBoxTextPromptColor")> _
|
||||
Public Property SearchBoxTextPromptColor() As Color
|
||||
Get
|
||||
Return _searchBoxTextPromptColor
|
||||
End Get
|
||||
Set(value As Color)
|
||||
If _searchBoxTextPromptColor = value Then Return
|
||||
_searchBoxTextPromptColor = value
|
||||
NotifyPropertyChanged("SearchBoxTextPromptColor")
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Private _searchBoxTextColor As Color = SystemColors.WindowText
|
||||
<LocalizedCategory("strThemeCategoryConnectionsPanel", 2), _
|
||||
LocalizedDisplayName("strThemeNameSearchBoxTextColor"), _
|
||||
LocalizedDescription("strThemeDescriptionSearchBoxTextColor")> _
|
||||
Public Property SearchBoxTextColor() As Color
|
||||
Get
|
||||
Return _searchBoxTextColor
|
||||
End Get
|
||||
Set(value As Color)
|
||||
If _searchBoxTextColor = value Then Return
|
||||
_searchBoxTextColor = value
|
||||
NotifyPropertyChanged("SearchBoxTextColor")
|
||||
End Set
|
||||
End Property
|
||||
#End Region
|
||||
|
||||
#Region "Config Panel"
|
||||
Private _configPanelBackgroundColor As Color = SystemColors.Window
|
||||
<LocalizedCategory("strThemeCategoryConfigPanel", 3), _
|
||||
LocalizedDisplayName("strThemeNameConfigPanelBackgroundColor"), _
|
||||
LocalizedDescription("strThemeDescriptionConfigPanelBackgroundColor")> _
|
||||
Public Property ConfigPanelBackgroundColor() As Color
|
||||
Get
|
||||
Return _configPanelBackgroundColor
|
||||
End Get
|
||||
Set(value As Color)
|
||||
If _configPanelBackgroundColor = value Or value.A < 255 Then Return
|
||||
_configPanelBackgroundColor = value
|
||||
NotifyPropertyChanged("ConfigPanelBackgroundColor")
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Private _configPanelTextColor As Color = SystemColors.WindowText
|
||||
<LocalizedCategory("strThemeCategoryConfigPanel", 3), _
|
||||
LocalizedDisplayName("strThemeNameConfigPanelTextColor"), _
|
||||
LocalizedDescription("strThemeDescriptionConfigPanelTextColor")> _
|
||||
Public Property ConfigPanelTextColor() As Color
|
||||
Get
|
||||
Return _configPanelTextColor
|
||||
End Get
|
||||
Set(value As Color)
|
||||
If _configPanelTextColor = value Then Return
|
||||
_configPanelTextColor = value
|
||||
NotifyPropertyChanged("ConfigPanelTextColor")
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Private _configPanelCategoryTextColor As Color = SystemColors.ControlText
|
||||
<LocalizedCategory("strThemeCategoryConfigPanel", 3), _
|
||||
LocalizedDisplayName("strThemeNameConfigPanelCategoryTextColor"), _
|
||||
LocalizedDescription("strThemeDescriptionConfigPanelCategoryTextColor")> _
|
||||
Public Property ConfigPanelCategoryTextColor() As Color
|
||||
Get
|
||||
Return _configPanelCategoryTextColor
|
||||
End Get
|
||||
Set(value As Color)
|
||||
If _configPanelCategoryTextColor = value Then Return
|
||||
_configPanelCategoryTextColor = value
|
||||
NotifyPropertyChanged("ConfigPanelCategoryTextColor")
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Private _configPanelHelpBackgroundColor As Color = SystemColors.Control
|
||||
<LocalizedCategory("strThemeCategoryConfigPanel", 3), _
|
||||
LocalizedDisplayName("strThemeNameConfigPanelHelpBackgroundColor"), _
|
||||
LocalizedDescription("strThemeDescriptionConfigPanelHelpBackgroundColor")> _
|
||||
Public Property ConfigPanelHelpBackgroundColor() As Color
|
||||
Get
|
||||
Return _configPanelHelpBackgroundColor
|
||||
End Get
|
||||
Set(value As Color)
|
||||
If _configPanelHelpBackgroundColor = value Or value.A < 255 Then Return
|
||||
_configPanelHelpBackgroundColor = value
|
||||
NotifyPropertyChanged("ConfigPanelHelpBackgroundColor")
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Private _configPanelHelpTextColor As Color = SystemColors.ControlText
|
||||
<LocalizedCategory("strThemeCategoryConfigPanel", 3), _
|
||||
LocalizedDisplayName("strThemeNameConfigPanelHelpTextColor"), _
|
||||
LocalizedDescription("strThemeDescriptionConfigPanelHelpTextColor")> _
|
||||
Public Property ConfigPanelHelpTextColor() As Color
|
||||
Get
|
||||
Return _configPanelHelpTextColor
|
||||
End Get
|
||||
Set(value As Color)
|
||||
If _configPanelHelpTextColor = value Then Return
|
||||
_configPanelHelpTextColor = value
|
||||
NotifyPropertyChanged("ConfigPanelHelpTextColor")
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Private _configPanelGridLineColor As Color = SystemColors.InactiveBorder
|
||||
<LocalizedCategory("strThemeCategoryConfigPanel", 3), _
|
||||
LocalizedDisplayName("strThemeNameConfigPanelGridLineColor"), _
|
||||
LocalizedDescription("strThemeDescriptionConfigPanelGridLineColor")> _
|
||||
Public Property ConfigPanelGridLineColor() As Color
|
||||
Get
|
||||
Return _configPanelGridLineColor
|
||||
End Get
|
||||
Set(value As Color)
|
||||
If _configPanelGridLineColor = value Then Return
|
||||
_configPanelGridLineColor = value
|
||||
NotifyPropertyChanged("ConfigPanelGridLineColor")
|
||||
End Set
|
||||
End Property
|
||||
#End Region
|
||||
#End Region
|
||||
End Class
|
||||
End Namespace
|
||||
95
mRemoteV1/Themes/ThemeManager.vb
Normal file
95
mRemoteV1/Themes/ThemeManager.vb
Normal file
@@ -0,0 +1,95 @@
|
||||
Imports System.IO
|
||||
Imports System.ComponentModel
|
||||
Imports mRemoteNG.My
|
||||
|
||||
Namespace Themes
|
||||
Public Class ThemeManager
|
||||
#Region "Public Methods"
|
||||
Public Shared Function LoadTheme(ByVal themeName As String, Optional ByVal setActive As Boolean = True) As ThemeInfo
|
||||
Dim loadedTheme As ThemeInfo = DefaultTheme
|
||||
|
||||
If Not String.IsNullOrEmpty(themeName) Then
|
||||
For Each theme As ThemeInfo In LoadThemes()
|
||||
If theme.Name = themeName Then
|
||||
loadedTheme = theme
|
||||
Exit For
|
||||
End If
|
||||
Next
|
||||
End If
|
||||
|
||||
If setActive Then ActiveTheme = loadedTheme
|
||||
Return loadedTheme
|
||||
End Function
|
||||
|
||||
Public Shared Function LoadThemes() As List(Of ThemeInfo)
|
||||
Dim themes As New List(Of ThemeInfo)
|
||||
themes.Add(DefaultTheme)
|
||||
Try
|
||||
themes.AddRange(ThemeSerializer.LoadFromXmlFile(Path.Combine(App.Info.Settings.SettingsPath, App.Info.Settings.ThemesFileName)))
|
||||
Catch ex As FileNotFoundException
|
||||
End Try
|
||||
|
||||
Return themes
|
||||
End Function
|
||||
|
||||
Public Shared Sub SaveThemes(ByVal themes As List(Of ThemeInfo))
|
||||
themes.Remove(DefaultTheme)
|
||||
ThemeSerializer.SaveToXmlFile(themes, Path.Combine(App.Info.Settings.SettingsPath, App.Info.Settings.ThemesFileName))
|
||||
End Sub
|
||||
|
||||
Public Shared Sub SaveThemes(ByVal themes As ThemeInfo())
|
||||
SaveThemes(New List(Of ThemeInfo)(themes))
|
||||
End Sub
|
||||
|
||||
Public Shared Sub SaveThemes(ByVal themes As BindingList(Of ThemeInfo))
|
||||
Dim themesArray(themes.Count - 1) As ThemeInfo
|
||||
themes.CopyTo(themesArray, 0)
|
||||
SaveThemes(themesArray)
|
||||
End Sub
|
||||
#End Region
|
||||
|
||||
#Region "Events"
|
||||
Public Shared Event ThemeChanged()
|
||||
Protected Shared Sub NotifyThemeChanged(sender As Object, e As System.ComponentModel.PropertyChangedEventArgs)
|
||||
If e.PropertyName = "Name" Then Return
|
||||
RaiseEvent ThemeChanged()
|
||||
End Sub
|
||||
#End Region
|
||||
|
||||
#Region "Properties"
|
||||
' ReSharper disable InconsistentNaming
|
||||
Private Shared ReadOnly _defaultTheme As New ThemeInfo(Language.strDefaultTheme)
|
||||
' ReSharper restore InconsistentNaming
|
||||
Public Shared ReadOnly Property DefaultTheme As ThemeInfo
|
||||
Get
|
||||
Return _defaultTheme
|
||||
End Get
|
||||
End Property
|
||||
|
||||
Private Shared _activeTheme As ThemeInfo
|
||||
Private Shared _activeThemeHandlerSet As Boolean = False
|
||||
Public Shared Property ActiveTheme As ThemeInfo
|
||||
Get
|
||||
Return _activeTheme
|
||||
End Get
|
||||
Set(value As ThemeInfo)
|
||||
' We need to set ActiveTheme to the new theme to make sure it references the right object.
|
||||
' However, if both themes have the same properties, we don't need to raise a notification event.
|
||||
Dim needNotify As Boolean = True
|
||||
If _activeTheme IsNot Nothing Then
|
||||
If _activeTheme.Equals(value) Then needNotify = False
|
||||
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 Property
|
||||
#End Region
|
||||
End Class
|
||||
End Namespace
|
||||
119
mRemoteV1/Themes/ThemeSerializer.vb
Normal file
119
mRemoteV1/Themes/ThemeSerializer.vb
Normal file
@@ -0,0 +1,119 @@
|
||||
Imports System.IO
|
||||
Imports System.Xml
|
||||
Imports System.Reflection
|
||||
|
||||
Namespace Themes
|
||||
Public Class ThemeSerializer
|
||||
Public Shared Sub SaveToXmlFile(themeInfo As ThemeInfo, filename As String)
|
||||
Dim themeList As New List(Of ThemeInfo)
|
||||
themeList.Add(ThemeInfo)
|
||||
SaveToXmlFile(themeList, filename)
|
||||
End Sub
|
||||
|
||||
Public Shared Sub SaveToXmlFile(themes As List(Of ThemeInfo), filename As String)
|
||||
Dim tempFileName As String = Path.GetTempFileName()
|
||||
Dim xmlTextWriter As New XmlTextWriter(tempFileName, System.Text.Encoding.UTF8)
|
||||
|
||||
xmlTextWriter.Formatting = Formatting.Indented
|
||||
xmlTextWriter.Indentation = 4
|
||||
|
||||
xmlTextWriter.WriteStartDocument()
|
||||
|
||||
xmlTextWriter.WriteStartElement("mRemoteNG")
|
||||
|
||||
xmlTextWriter.WriteStartElement("FileInfo")
|
||||
xmlTextWriter.WriteAttributeString("Version", "1.0")
|
||||
xmlTextWriter.WriteElementString("FileType", "Theme")
|
||||
xmlTextWriter.WriteElementString("FileTypeVersion", "1.0")
|
||||
xmlTextWriter.WriteEndElement() ' FileInfo
|
||||
|
||||
Dim themeType As Type = (New ThemeInfo).GetType()
|
||||
Dim colorType As Type = (New Color).GetType()
|
||||
Dim color As Color
|
||||
For Each themeInfo As ThemeInfo In themes
|
||||
xmlTextWriter.WriteStartElement("Theme")
|
||||
xmlTextWriter.WriteAttributeString("Name", themeInfo.Name)
|
||||
|
||||
For Each propertyInfo As PropertyInfo In themeType.GetProperties()
|
||||
If Not propertyInfo.PropertyType Is colorType Then Continue For
|
||||
color = propertyInfo.GetValue(themeInfo, Nothing)
|
||||
xmlTextWriter.WriteStartElement("Color")
|
||||
xmlTextWriter.WriteAttributeString("Name", propertyInfo.Name)
|
||||
xmlTextWriter.WriteAttributeString("Value", EncodeColorName(color))
|
||||
xmlTextWriter.WriteEndElement() ' Color
|
||||
Next
|
||||
|
||||
xmlTextWriter.WriteEndElement() ' Theme
|
||||
Next
|
||||
|
||||
xmlTextWriter.WriteEndElement() ' mRemoteNG
|
||||
|
||||
xmlTextWriter.Close()
|
||||
|
||||
File.Delete(filename)
|
||||
File.Move(tempFileName, filename)
|
||||
End Sub
|
||||
|
||||
Public Shared Function LoadFromXmlFile(filename As String) As List(Of ThemeInfo)
|
||||
Dim xmlDocument As New XmlDocument()
|
||||
xmlDocument.Load(filename)
|
||||
|
||||
Dim fileInfoNode As XmlNode = xmlDocument.SelectSingleNode("/mRemoteNG/FileInfo")
|
||||
Dim fileInfoVersion As New Version(fileInfoNode.Attributes("Version").Value)
|
||||
If fileInfoVersion > New Version(1, 0) Then
|
||||
Throw New FileFormatException(String.Format("Unsupported FileInfo version ({0}).", fileInfoVersion))
|
||||
End If
|
||||
|
||||
Dim fileTypeNode As XmlNode = fileInfoNode.SelectSingleNode("./FileType")
|
||||
Dim fileType As String = fileTypeNode.InnerText
|
||||
If Not fileType = "Theme" Then
|
||||
Throw New FileFormatException(String.Format("Incorrect FileType ({0}). Expected ""Theme"".", fileType))
|
||||
End If
|
||||
|
||||
Dim fileTypeVersion As New Version(fileInfoNode.SelectSingleNode("./FileTypeVersion").InnerText)
|
||||
If fileTypeVersion > New Version(1, 0) Then
|
||||
Throw New FileFormatException(String.Format("Unsupported FileTypeVersion ({0}).", fileTypeVersion))
|
||||
End If
|
||||
|
||||
Dim themeNodes As XmlNodeList = xmlDocument.SelectNodes("/mRemoteNG/Theme")
|
||||
Dim themes As New List(Of ThemeInfo)
|
||||
Dim themeInfo As ThemeInfo
|
||||
Dim themeType As Type = (New ThemeInfo).GetType()
|
||||
Dim colorType As Type = (New Color).GetType()
|
||||
Dim colorName As String
|
||||
Dim colorValue As String
|
||||
Dim propertyInfo As PropertyInfo
|
||||
For Each themeNode As XmlNode In themeNodes
|
||||
themeInfo = New ThemeInfo
|
||||
themeInfo.Name = themeNode.Attributes("Name").Value
|
||||
For Each colorNode As XmlNode In themeNode.SelectNodes("./Color")
|
||||
colorName = colorNode.Attributes("Name").Value
|
||||
colorValue = colorNode.Attributes("Value").Value
|
||||
propertyInfo = themeType.GetProperty(colorName)
|
||||
If propertyInfo Is Nothing OrElse Not propertyInfo.PropertyType Is colorType Then Continue For
|
||||
propertyInfo.SetValue(themeInfo, DecodeColorName(colorValue), Nothing)
|
||||
Next
|
||||
themes.Add(themeInfo)
|
||||
Next
|
||||
|
||||
Return themes
|
||||
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 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
|
||||
102
mRemoteV1/Tools/CommandLineArguments.vb
Normal file
102
mRemoteV1/Tools/CommandLineArguments.vb
Normal file
@@ -0,0 +1,102 @@
|
||||
Imports System.Text.RegularExpressions
|
||||
|
||||
Namespace Tools
|
||||
' Adapted from http://qntm.org/cmd
|
||||
Public Class CommandLineArguments
|
||||
#Region "Protected Fields"
|
||||
Protected Arguments As New List(Of Argument)
|
||||
#End Region
|
||||
|
||||
#Region "Public Properties"
|
||||
Public Property EscapeForShell As Boolean
|
||||
#End Region
|
||||
|
||||
#Region "Public Methods"
|
||||
Public Sub Add(ByVal argument As String, Optional ByVal forceQuotes As Boolean = False)
|
||||
Arguments.Add(New Argument(argument, False, forceQuotes))
|
||||
End Sub
|
||||
|
||||
Public Sub Add(ByVal ParamArray argumentArray As String())
|
||||
For Each argument As String In argumentArray
|
||||
Add(argument)
|
||||
Next
|
||||
End Sub
|
||||
|
||||
Public Sub AddFileName(ByVal fileName As String, Optional ByVal forceQuotes As Boolean = False)
|
||||
Arguments.Add(New Argument(fileName, True, forceQuotes))
|
||||
End Sub
|
||||
|
||||
Public Overrides Function ToString() As String
|
||||
Dim processedArguments As New List(Of String)
|
||||
|
||||
For Each argument As Argument In Arguments
|
||||
processedArguments.Add(ProcessArgument(argument, EscapeForShell))
|
||||
Next
|
||||
|
||||
Return String.Join(" ", processedArguments.ToArray())
|
||||
End Function
|
||||
|
||||
Public Shared Function PrefixFileName(ByVal argument As String) As String
|
||||
If String.IsNullOrEmpty(argument) Then Return argument
|
||||
|
||||
If argument.StartsWith("-") Then argument = ".\" & argument
|
||||
|
||||
Return argument
|
||||
End Function
|
||||
|
||||
Public Shared Function EscapeBackslashes(ByVal argument As String) As String
|
||||
If String.IsNullOrEmpty(argument) Then Return argument
|
||||
|
||||
' Sequence of backslashes followed by a double quote:
|
||||
' double up all the backslashes and escape the double quote
|
||||
Return Regex.Replace(argument, "(\\*)""", "$1$1\""")
|
||||
End Function
|
||||
|
||||
Public Shared Function QuoteArgument(ByVal argument As String, Optional ByVal forceQuotes As Boolean = False) As String
|
||||
If Not forceQuotes And Not String.IsNullOrEmpty(argument) And Not argument.Contains(" ") Then Return argument
|
||||
|
||||
' Sequence of backslashes followed by the end of the string
|
||||
' (which will become a double quote):
|
||||
' double up all the backslashes
|
||||
If Not String.IsNullOrEmpty(argument) Then
|
||||
argument = Regex.Replace(argument, "(\\*)$", "$1$1")
|
||||
End If
|
||||
|
||||
Return """" & argument & """"
|
||||
End Function
|
||||
|
||||
Public Shared Function EscapeShellMetacharacters(ByVal argument As String) As String
|
||||
If String.IsNullOrEmpty(argument) Then Return argument
|
||||
|
||||
Return Regex.Replace(argument, "([()%!^""<>&|])", "^$1")
|
||||
End Function
|
||||
#End Region
|
||||
|
||||
#Region "Protected Methods"
|
||||
Protected Shared Function ProcessArgument(ByVal argument As Argument, Optional ByVal escapeForShell As Boolean = False) As String
|
||||
Dim text As String = argument.Text
|
||||
|
||||
If argument.IsFileName Then text = PrefixFileName(text)
|
||||
text = EscapeBackslashes(text)
|
||||
text = QuoteArgument(text, argument.ForceQuotes)
|
||||
If escapeForShell Then text = EscapeShellMetacharacters(text)
|
||||
|
||||
Return text
|
||||
End Function
|
||||
#End Region
|
||||
|
||||
#Region "Protected Classes"
|
||||
Protected Class Argument
|
||||
Public Sub New(ByVal text As String, Optional ByVal isFileName As Boolean = False, Optional ByVal forceQuotes As Boolean = False)
|
||||
Me.Text = text
|
||||
Me.IsFileName = isFileName
|
||||
Me.ForceQuotes = forceQuotes
|
||||
End Sub
|
||||
|
||||
Public Property Text As String
|
||||
Public Property IsFileName As Boolean
|
||||
Public Property ForceQuotes As Boolean
|
||||
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)
|
||||
AddNodeToMenu(tNode.Nodes, tMenItem)
|
||||
Else
|
||||
tMenItem.Image = My.Resources.Play
|
||||
ElseIf Tree.Node.GetNodeType(tNode) = Tree.Node.Type.Connection Or _
|
||||
Tree.Node.GetNodeType(tNode) = Tree.Node.Type.PuttySession Then
|
||||
tMenItem.Image = Windows.treeForm.imgListTree.Images(tNode.ImageIndex)
|
||||
tMenItem.Tag = tNode.Tag
|
||||
|
||||
menToolStrip.DropDownItems.Add(tMenItem)
|
||||
End If
|
||||
|
||||
AddHandler tMenItem.MouseDown, AddressOf ConMenItem_MouseDown
|
||||
AddHandler tMenItem.MouseUp, AddressOf ConMenItem_MouseUp
|
||||
Next
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "AddNodeToMenu failed" & vbNewLine & ex.Message, True)
|
||||
@@ -162,12 +163,10 @@ Namespace Tools
|
||||
frmMain.PreviousWindowState = frmMain.WindowState
|
||||
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 TypeOf sender.Tag Is mRemoteNG.Connection.Info Then
|
||||
If frmMain.Visible = False Then
|
||||
ShowForm()
|
||||
End If
|
||||
If TypeOf sender.Tag Is Connection.Info Then
|
||||
If frmMain.Visible = False Then ShowForm()
|
||||
App.Runtime.OpenConnection(sender.Tag)
|
||||
End If
|
||||
End If
|
||||
@@ -211,51 +210,38 @@ Namespace Tools
|
||||
Return lDlg
|
||||
End Function
|
||||
|
||||
Public Shared Function ConnectionsRDPImportDialog() As OpenFileDialog
|
||||
Dim lDlg As New OpenFileDialog()
|
||||
lDlg.CheckFileExists = True
|
||||
'lDlg.InitialDirectory = App.Info.Connections.DefaultConnectionsPath
|
||||
lDlg.Filter = My.Language.strFilterRDP & "|*.rdp|" & My.Language.strFilterAll & "|*.*"
|
||||
|
||||
Return lDlg
|
||||
Public Shared Function ImportConnectionsRdpFileDialog() As OpenFileDialog
|
||||
Dim openFileDialog As New OpenFileDialog()
|
||||
openFileDialog.CheckFileExists = True
|
||||
openFileDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Personal)
|
||||
openFileDialog.Filter = String.Join("|", {My.Language.strFilterRDP, "*.rdp", My.Language.strFilterAll, "*.*"})
|
||||
openFileDialog.Multiselect = True
|
||||
Return openFileDialog
|
||||
End Function
|
||||
|
||||
Public Class TreeNodeSorter
|
||||
Implements IComparer
|
||||
|
||||
Private _nodeToSort As TreeNode
|
||||
Private _sortType As SortType
|
||||
Public Property Sorting As System.Windows.Forms.SortOrder
|
||||
|
||||
Public Sub New(ByVal node As TreeNode, ByVal sortType As SortType)
|
||||
Public Sub New(Optional ByVal sortOrder As SortOrder = SortOrder.None)
|
||||
MyBase.New()
|
||||
|
||||
Me._nodeToSort = node
|
||||
Me._sortType = sortType
|
||||
Sorting = sortOrder
|
||||
End Sub
|
||||
|
||||
Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer Implements IComparer.Compare
|
||||
Dim tx As TreeNode = CType(x, TreeNode)
|
||||
Dim ty As TreeNode = CType(y, TreeNode)
|
||||
|
||||
If ((tx.Parent Is Me._nodeToSort) AndAlso (ty.Parent Is Me._nodeToSort)) Then
|
||||
' Ascending
|
||||
If (Me._sortType = SortType.Ascending) Then
|
||||
Select Case Sorting
|
||||
Case SortOrder.Ascending
|
||||
Return String.Compare(tx.Text, ty.Text)
|
||||
End If
|
||||
|
||||
' Descending
|
||||
If (Me._sortType = SortType.Descending) Then
|
||||
Case SortOrder.Descending
|
||||
Return String.Compare(ty.Text, tx.Text)
|
||||
End If
|
||||
End If
|
||||
|
||||
Return 0
|
||||
Case Else
|
||||
Return 0
|
||||
End Select
|
||||
End Function
|
||||
|
||||
Public Enum SortType
|
||||
Ascending = 0
|
||||
Descending = 1
|
||||
End Enum
|
||||
End Class
|
||||
End Class
|
||||
End Namespace
|
||||
|
||||
@@ -117,21 +117,21 @@ Namespace Tools
|
||||
|
||||
_ConnectionInfo = ConnectionInfo
|
||||
|
||||
Dim p As New Process()
|
||||
Dim pI As New ProcessStartInfo()
|
||||
Dim process As New Process()
|
||||
With process.StartInfo
|
||||
.UseShellExecute = False
|
||||
.FileName = ParseText(_FileName)
|
||||
|
||||
pI.FileName = ParseText(_FileName)
|
||||
pI.Arguments = ParseText(_Arguments)
|
||||
.Arguments = CommandLineArguments.EscapeBackslashes(ParseText(_Arguments))
|
||||
End With
|
||||
|
||||
p.StartInfo = pI
|
||||
|
||||
p.Start()
|
||||
process.Start()
|
||||
|
||||
If _WaitForExit Then
|
||||
p.WaitForExit()
|
||||
process.WaitForExit()
|
||||
End If
|
||||
|
||||
Return p
|
||||
Return process
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "Couldn't start external application." & vbNewLine & ex.Message)
|
||||
Return Nothing
|
||||
|
||||
@@ -116,25 +116,8 @@ Namespace Tools
|
||||
End If
|
||||
End Function
|
||||
|
||||
Private Shared rndNums As New ArrayList
|
||||
Public Shared Function CreateConstantID() As String
|
||||
Dim cID As String
|
||||
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
|
||||
Return Guid.NewGuid().ToString()
|
||||
End Function
|
||||
|
||||
Public Shared Function LeadingZero(ByVal Number As String) As String
|
||||
@@ -167,15 +150,16 @@ Namespace Tools
|
||||
End Function
|
||||
|
||||
Public Shared Function StringToEnum(ByVal t As Type, ByVal value As String) As Object
|
||||
For Each fI As FieldInfo In t.GetFields
|
||||
If fI.Name = value Then
|
||||
Return fI.GetValue(vbNull)
|
||||
End If
|
||||
Next
|
||||
Return [Enum].Parse(t, value)
|
||||
End Function
|
||||
|
||||
Dim ex As New Exception(String.Format("Can't convert {0} to {1}", value, t.ToString))
|
||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "StringToEnum failed" & vbNewLine & ex.Message, True)
|
||||
Throw ex
|
||||
Public Shared Function GetExceptionMessageRecursive(ByVal ex As Exception, Optional ByVal separator As String = vbNewLine) As String
|
||||
Dim message As String = ex.Message
|
||||
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
|
||||
|
||||
Public Shared Function TakeScreenshot(ByVal sender As UI.Window.Connection) As Image
|
||||
@@ -297,62 +281,47 @@ Namespace Tools
|
||||
End Class
|
||||
|
||||
Public Class Fullscreen
|
||||
Private Shared winState As FormWindowState
|
||||
Private Shared brdStyle As FormBorderStyle
|
||||
Private Shared topMost As Boolean
|
||||
Private Shared bounds As Rectangle
|
||||
Public Sub New(ByVal handledForm As Form)
|
||||
_handledForm = handledForm
|
||||
End Sub
|
||||
|
||||
Public Shared targetForm As Form = frmMain
|
||||
Public Shared FullscreenActive As Boolean = False
|
||||
Private ReadOnly _handledForm As Form
|
||||
Private _savedWindowState As FormWindowState
|
||||
Private _savedBorderStyle As FormBorderStyle
|
||||
Private _savedBounds As Rectangle
|
||||
|
||||
Public Shared Sub EnterFullscreen()
|
||||
Try
|
||||
If Not FullscreenActive Then
|
||||
FullscreenActive = True
|
||||
Save()
|
||||
targetForm.WindowState = FormWindowState.Maximized
|
||||
targetForm.FormBorderStyle = FormBorderStyle.None
|
||||
SetWinFullScreen(targetForm.Handle)
|
||||
Private _value As Boolean = False
|
||||
Public Property Value() As Boolean
|
||||
Get
|
||||
Return _value
|
||||
End Get
|
||||
Set(newValue As Boolean)
|
||||
If _value = newValue Then Return
|
||||
If Not _value Then
|
||||
EnterFullscreen()
|
||||
Else
|
||||
ExitFullscreen()
|
||||
End If
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "Entering Fullscreen failed" & vbNewLine & ex.Message, True)
|
||||
End Try
|
||||
_value = newValue
|
||||
End Set
|
||||
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
|
||||
|
||||
Public Shared Sub Save()
|
||||
winState = targetForm.WindowState
|
||||
brdStyle = targetForm.FormBorderStyle
|
||||
bounds = targetForm.Bounds
|
||||
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
|
||||
Private Sub ExitFullscreen()
|
||||
_handledForm.FormBorderStyle = _savedBorderStyle
|
||||
_handledForm.WindowState = _savedWindowState
|
||||
_handledForm.Bounds = _savedBounds
|
||||
End Sub
|
||||
End Class
|
||||
|
||||
|
||||
@@ -81,43 +81,30 @@ Namespace Tools
|
||||
End Set
|
||||
End Property
|
||||
|
||||
|
||||
|
||||
Private _HostName As String
|
||||
Private _hostName As String = ""
|
||||
Public Property HostName() As String
|
||||
Get
|
||||
Return _HostName
|
||||
Return _hostName
|
||||
End Get
|
||||
Set(ByVal value As String)
|
||||
_HostName = value
|
||||
_hostName = value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Public ReadOnly Property HostNameWithoutDomain() As String
|
||||
Get
|
||||
If _HostName <> _HostIP Then
|
||||
If _HostName IsNot Nothing Then
|
||||
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
|
||||
If String.IsNullOrEmpty(HostName) OrElse HostName = HostIp Then Return HostIp
|
||||
Return HostName.Split(".")(0)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
Private _HostIP As String
|
||||
Public Property HostIP() As String
|
||||
Private _hostIp As String
|
||||
Public Property HostIp() As String
|
||||
Get
|
||||
Return _HostIP
|
||||
Return _hostIp
|
||||
End Get
|
||||
Set(ByVal value As String)
|
||||
_HostIP = value
|
||||
_hostIp = value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
@@ -214,7 +201,7 @@ Namespace Tools
|
||||
|
||||
#Region "Methods"
|
||||
Public Sub New(ByVal host As String)
|
||||
_HostIP = host
|
||||
_hostIp = host
|
||||
_OpenPorts = New ArrayList
|
||||
_ClosedPorts = New ArrayList
|
||||
End Sub
|
||||
@@ -232,10 +219,10 @@ Namespace Tools
|
||||
Try
|
||||
Dim lvI As New ListViewItem
|
||||
lvI.Tag = Me
|
||||
If _HostName <> "" Then
|
||||
lvI.Text = _HostName
|
||||
If _hostName <> "" Then
|
||||
lvI.Text = _hostName
|
||||
Else
|
||||
lvI.Text = _HostIP
|
||||
lvI.Text = _hostIp
|
||||
End If
|
||||
|
||||
If Mode = PortScanMode.Import Then
|
||||
@@ -463,12 +450,11 @@ Namespace Tools
|
||||
Next
|
||||
End If
|
||||
|
||||
If HostAlive = True Then
|
||||
Try
|
||||
sHost.HostName = Net.Dns.GetHostEntry(sHost.HostIP).HostName
|
||||
Catch ex As Exception
|
||||
End Try
|
||||
End If
|
||||
Try
|
||||
sHost.HostName = Net.Dns.GetHostEntry(sHost.HostIp).HostName
|
||||
Catch ex As Exception
|
||||
End Try
|
||||
If String.IsNullOrEmpty(sHost.HostName) Then sHost.HostName = sHost.HostIp
|
||||
|
||||
_ScannedHosts.Add(sHost)
|
||||
RaiseEvent HostScanned(sHost, hCount, Hosts.Count)
|
||||
|
||||
@@ -5,10 +5,12 @@ Imports System.DirectoryServices
|
||||
Namespace Tree
|
||||
Public Class Node
|
||||
Public Enum Type
|
||||
Root = 0
|
||||
Container = 1
|
||||
Connection = 2
|
||||
NONE = 66
|
||||
None = 0
|
||||
Root = 1
|
||||
Container = 2
|
||||
Connection = 3
|
||||
PuttyRoot = 4
|
||||
PuttySession = 5
|
||||
End Enum
|
||||
|
||||
Private Shared _TreeView As TreeView
|
||||
@@ -92,10 +94,14 @@ Namespace Tree
|
||||
Return Type.NONE
|
||||
End If
|
||||
|
||||
If TypeOf treeNode.Tag Is Root.Info Then
|
||||
If TypeOf treeNode.Tag Is Root.PuttySessions.Info Then
|
||||
Return Type.PuttyRoot
|
||||
ElseIf TypeOf treeNode.Tag Is Root.Info Then
|
||||
Return Type.Root
|
||||
ElseIf TypeOf treeNode.Tag Is Container.Info Then
|
||||
Return Type.Container
|
||||
ElseIf TypeOf treeNode.Tag Is Connection.PuttySession.Info Then
|
||||
Return Type.PuttySession
|
||||
ElseIf TypeOf treeNode.Tag Is Connection.Info Then
|
||||
Return Type.Connection
|
||||
End If
|
||||
@@ -184,7 +190,7 @@ Namespace Tree
|
||||
Dim nNode As New TreeNode
|
||||
|
||||
Select Case NodeType
|
||||
Case Type.Connection
|
||||
Case Type.Connection, Type.PuttySession
|
||||
nNode.Text = My.Language.strNewConnection
|
||||
nNode.ImageIndex = Images.Enums.TreeImage.ConnectionClosed
|
||||
nNode.SelectedImageIndex = Images.Enums.TreeImage.ConnectionClosed
|
||||
@@ -319,6 +325,10 @@ Namespace Tree
|
||||
oldTreeNode.Parent.Nodes.Insert(oldTreeNode.Index + 1, newTreeNode)
|
||||
TreeView.SelectedNode = newTreeNode
|
||||
Else
|
||||
Dim parentContainerInfo As Container.Info = TryCast(parentNode.Tag, Container.Info)
|
||||
If parentContainerInfo IsNot Nothing Then
|
||||
newConnectionInfo.Parent = parentContainerInfo
|
||||
End If
|
||||
parentNode.Nodes.Add(newTreeNode)
|
||||
End If
|
||||
ElseIf GetNodeType(oldTreeNode) = Type.Container Then
|
||||
@@ -497,27 +507,52 @@ Namespace Tree
|
||||
TreeView.EndUpdate()
|
||||
End Sub
|
||||
|
||||
Public Shared Sub Sort(ByVal treeNode As TreeNode, ByVal sortType As Tools.Controls.TreeNodeSorter.SortType)
|
||||
Try
|
||||
TreeView.BeginUpdate()
|
||||
If treeNode Is Nothing Then
|
||||
Public Shared Sub Sort(ByVal treeNode As TreeNode, ByVal sorting As System.Windows.Forms.SortOrder)
|
||||
If TreeView Is Nothing Then Return
|
||||
|
||||
TreeView.BeginUpdate()
|
||||
|
||||
If treeNode Is Nothing Then
|
||||
If TreeView.Nodes.Count > 0 Then
|
||||
treeNode = TreeView.Nodes.Item(0)
|
||||
ElseIf Tree.Node.GetNodeType(treeNode) = Type.Connection Then
|
||||
treeNode = treeNode.Parent
|
||||
Else
|
||||
Return
|
||||
End If
|
||||
ElseIf GetNodeType(treeNode) = Type.Connection Then
|
||||
treeNode = treeNode.Parent
|
||||
If treeNode Is Nothing Then Return
|
||||
End If
|
||||
|
||||
Dim ns As New Tools.Controls.TreeNodeSorter(treeNode, sortType)
|
||||
Sort(treeNode, New Tools.Controls.TreeNodeSorter(sorting))
|
||||
|
||||
TreeView.TreeViewNodeSorter = ns
|
||||
TreeView.Sort()
|
||||
TreeView.EndUpdate()
|
||||
End Sub
|
||||
|
||||
For Each childNode As TreeNode In treeNode.Nodes
|
||||
If GetNodeType(childNode) = Type.Container Then Sort(childNode, sortType)
|
||||
' Adapted from http://www.codeproject.com/Tips/252234/ASP-NET-TreeView-Sort
|
||||
Private Shared Sub Sort(ByVal treeNode As TreeNode, ByVal nodeSorter As Tools.Controls.TreeNodeSorter)
|
||||
For Each childNode As TreeNode In treeNode.Nodes
|
||||
Sort(childNode, nodeSorter)
|
||||
Next
|
||||
|
||||
Try
|
||||
Dim sortedNodes As New List(Of TreeNode)
|
||||
Dim currentNode As TreeNode = Nothing
|
||||
While (treeNode.Nodes.Count > 0)
|
||||
For Each childNode As TreeNode In treeNode.Nodes
|
||||
If (currentNode Is Nothing OrElse nodeSorter.Compare(childNode, currentNode) < 0) Then
|
||||
currentNode = childNode
|
||||
End If
|
||||
Next
|
||||
treeNode.Nodes.Remove(currentNode)
|
||||
sortedNodes.Add(currentNode)
|
||||
currentNode = Nothing
|
||||
End While
|
||||
|
||||
For Each childNode As TreeNode In sortedNodes
|
||||
treeNode.Nodes.Add(childNode)
|
||||
Next
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "Sort nodes failed" & vbNewLine & ex.Message, True)
|
||||
Finally
|
||||
TreeView.EndUpdate()
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
|
||||
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,108 +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.AllowWebBrowserDrop = False
|
||||
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
|
||||
#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
|
||||
|
||||
|
||||
Dim RDP As AxMSTSCLib.AxMsRdpClient6NotSafeForScripting = Nothing
|
||||
Dim rdpClient As AxMSTSCLib.AxMsRdpClient5NotSafeForScripting = Nothing
|
||||
|
||||
Try
|
||||
RDP = New AxMSTSCLib.AxMsRdpClient6NotSafeForScripting
|
||||
RDP.CreateControl()
|
||||
rdpClient = New AxMSTSCLib.AxMsRdpClient5NotSafeForScripting
|
||||
rdpClient.CreateControl()
|
||||
|
||||
Do Until RDP.Created
|
||||
Thread.Sleep(10)
|
||||
Do Until rdpClient.Created
|
||||
Thread.Sleep(0)
|
||||
System.Windows.Forms.Application.DoEvents()
|
||||
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
|
||||
lblCheck1.ForeColor = Color.DarkOliveGreen
|
||||
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
|
||||
pbCheck1.Image = My.Resources.Bad_Symbol
|
||||
lblCheck1.ForeColor = Color.Firebrick
|
||||
@@ -514,7 +518,7 @@ Namespace UI
|
||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, ex.Message, True)
|
||||
End Try
|
||||
|
||||
If RDP IsNot Nothing Then RDP.Dispose()
|
||||
If rdpClient IsNot Nothing Then rdpClient.Dispose()
|
||||
|
||||
|
||||
Dim VNC As VncSharp.RemoteDesktop = Nothing
|
||||
@@ -539,7 +543,6 @@ Namespace UI
|
||||
txtCheck2.Text = My.Language.strCcVNCFailed
|
||||
|
||||
MessageCollector.AddMessage(Messages.MessageClass.WarningMsg, "VNC " & errorMsg, True)
|
||||
'mC.AddMessage(Messages.MessageClass.ErrorMsg, ex.Message, True)
|
||||
End Try
|
||||
|
||||
If VNC IsNot Nothing Then VNC.Dispose()
|
||||
|
||||
@@ -117,6 +117,9 @@
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="propertyGridContextMenu.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>131, 14</value>
|
||||
</metadata>
|
||||
<metadata name="cMenIcons.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>21, 14</value>
|
||||
</metadata>
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
Imports mRemoteNG.My
|
||||
Imports mRemoteNG.Connection.Protocol
|
||||
Imports WeifenLuo.WinFormsUI.Docking
|
||||
Imports System.Net.NetworkInformation
|
||||
Imports mRemoteNG.App.Runtime
|
||||
@@ -18,6 +19,8 @@ Namespace UI
|
||||
Friend WithEvents btnHostStatus As System.Windows.Forms.ToolStripButton
|
||||
Friend WithEvents cMenIcons As System.Windows.Forms.ContextMenuStrip
|
||||
Private components As System.ComponentModel.IContainer
|
||||
Friend WithEvents propertyGridContextMenu As System.Windows.Forms.ContextMenuStrip
|
||||
Friend WithEvents propertyGridContextMenuShowHelpText As System.Windows.Forms.ToolStripMenuItem
|
||||
Friend WithEvents pGrid As Azuria.Common.Controls.FilteredPropertyGrid
|
||||
Private Sub InitializeComponent()
|
||||
Me.components = New System.ComponentModel.Container()
|
||||
@@ -29,6 +32,9 @@ Namespace UI
|
||||
Me.btnIcon = New System.Windows.Forms.ToolStripButton()
|
||||
Me.btnHostStatus = New System.Windows.Forms.ToolStripButton()
|
||||
Me.cMenIcons = New System.Windows.Forms.ContextMenuStrip(Me.components)
|
||||
Me.propertyGridContextMenu = New System.Windows.Forms.ContextMenuStrip(Me.components)
|
||||
Me.propertyGridContextMenuShowHelpText = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.propertyGridContextMenu.SuspendLayout()
|
||||
Me.SuspendLayout()
|
||||
'
|
||||
'pGrid
|
||||
@@ -37,6 +43,7 @@ Namespace UI
|
||||
Or System.Windows.Forms.AnchorStyles.Left) _
|
||||
Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
|
||||
Me.pGrid.BrowsableProperties = Nothing
|
||||
Me.pGrid.ContextMenuStrip = Me.propertyGridContextMenu
|
||||
Me.pGrid.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
|
||||
Me.pGrid.HiddenAttributes = Nothing
|
||||
Me.pGrid.HiddenProperties = Nothing
|
||||
@@ -110,6 +117,18 @@ Namespace UI
|
||||
Me.cMenIcons.Name = "cMenIcons"
|
||||
Me.cMenIcons.Size = New System.Drawing.Size(61, 4)
|
||||
'
|
||||
'propertyGridContextMenu
|
||||
'
|
||||
Me.propertyGridContextMenu.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.propertyGridContextMenuShowHelpText})
|
||||
Me.propertyGridContextMenu.Name = "propertyGridContextMenu"
|
||||
Me.propertyGridContextMenu.Size = New System.Drawing.Size(157, 26)
|
||||
'
|
||||
'propertyGridContextMenuShowHelpText
|
||||
'
|
||||
Me.propertyGridContextMenuShowHelpText.Name = "ContextMenuShowHelpText"
|
||||
Me.propertyGridContextMenuShowHelpText.Size = New System.Drawing.Size(156, 22)
|
||||
Me.propertyGridContextMenuShowHelpText.Text = "&Show Help Text"
|
||||
'
|
||||
'Config
|
||||
'
|
||||
Me.ClientSize = New System.Drawing.Size(226, 530)
|
||||
@@ -120,6 +139,7 @@ Namespace UI
|
||||
Me.Name = "Config"
|
||||
Me.TabText = "Config"
|
||||
Me.Text = "Config"
|
||||
Me.propertyGridContextMenu.ResumeLayout(False)
|
||||
Me.ResumeLayout(False)
|
||||
|
||||
End Sub
|
||||
@@ -358,7 +378,7 @@ Namespace UI
|
||||
End If
|
||||
Me.btnShowDefaultProperties.Enabled = False
|
||||
Me.btnShowDefaultInheritance.Enabled = False
|
||||
Me.btnIcon.Enabled = True
|
||||
btnIcon.Enabled = True
|
||||
Me.btnHostStatus.Enabled = True
|
||||
ElseIf Me.DefaultPropertiesVisible Then 'Defaults selected
|
||||
Me.pGrid.SelectedObject = Obj
|
||||
@@ -390,6 +410,8 @@ Namespace UI
|
||||
Me.btnIcon.Enabled = True
|
||||
Me.btnHostStatus.Enabled = True
|
||||
ElseIf Me.DefaultInheritanceVisible Then 'Default Inhertiance selected
|
||||
pGrid.SelectedObject = Obj
|
||||
|
||||
Me.btnShowProperties.Enabled = True
|
||||
Me.btnShowInheritance.Enabled = True
|
||||
Me.btnShowDefaultProperties.Enabled = False
|
||||
@@ -420,17 +442,31 @@ Namespace UI
|
||||
If conIcon IsNot Nothing Then
|
||||
Me.btnIcon.Image = conIcon.ToBitmap
|
||||
End If
|
||||
ElseIf TypeOf Obj Is mRemoteNG.Root.Info Then 'ROOT
|
||||
Me.PropertiesVisible = True
|
||||
Me.DefaultPropertiesVisible = False
|
||||
Me.btnShowProperties.Enabled = True
|
||||
Me.btnShowInheritance.Enabled = False
|
||||
Me.btnShowDefaultProperties.Enabled = True
|
||||
Me.btnShowDefaultInheritance.Enabled = True
|
||||
Me.btnIcon.Enabled = False
|
||||
Me.btnHostStatus.Enabled = False
|
||||
|
||||
Me.pGrid.SelectedObject = Obj
|
||||
ElseIf TypeOf Obj Is Root.Info Then 'ROOT
|
||||
Dim rootInfo As Root.Info = CType(Obj, Root.Info)
|
||||
Select Case rootInfo.Type
|
||||
Case Root.Info.RootType.Connection
|
||||
PropertiesVisible = True
|
||||
DefaultPropertiesVisible = False
|
||||
btnShowProperties.Enabled = True
|
||||
btnShowInheritance.Enabled = False
|
||||
btnShowDefaultProperties.Enabled = True
|
||||
btnShowDefaultInheritance.Enabled = True
|
||||
btnIcon.Enabled = False
|
||||
btnHostStatus.Enabled = False
|
||||
Case Root.Info.RootType.Credential
|
||||
Throw New NotImplementedException
|
||||
Case Root.Info.RootType.PuttySessions
|
||||
PropertiesVisible = True
|
||||
DefaultPropertiesVisible = False
|
||||
btnShowProperties.Enabled = True
|
||||
btnShowInheritance.Enabled = False
|
||||
btnShowDefaultProperties.Enabled = False
|
||||
btnShowDefaultInheritance.Enabled = False
|
||||
btnIcon.Enabled = False
|
||||
btnHostStatus.Enabled = False
|
||||
End Select
|
||||
pGrid.SelectedObject = Obj
|
||||
ElseIf TypeOf Obj Is mRemoteNG.Connection.Info.Inheritance Then 'INHERITANCE
|
||||
Me.pGrid.SelectedObject = Obj
|
||||
|
||||
@@ -484,6 +520,20 @@ Namespace UI
|
||||
btnHostStatus.Text = My.Language.strStatus
|
||||
Text = My.Language.strMenuConfig
|
||||
TabText = My.Language.strMenuConfig
|
||||
propertyGridContextMenuShowHelpText.Text = Language.strMenuShowHelpText
|
||||
End Sub
|
||||
|
||||
Private Sub ApplyTheme()
|
||||
With Themes.ThemeManager.ActiveTheme
|
||||
pGrid.BackColor = .ToolbarBackgroundColor
|
||||
pGrid.ForeColor = .ToolbarTextColor
|
||||
pGrid.ViewBackColor = .ConfigPanelBackgroundColor
|
||||
pGrid.ViewForeColor = .ConfigPanelTextColor
|
||||
pGrid.LineColor = .ConfigPanelGridLineColor
|
||||
pGrid.HelpBackColor = .ConfigPanelHelpBackgroundColor
|
||||
pGrid.HelpForeColor = .ConfigPanelHelpTextColor
|
||||
pGrid.CategoryForeColor = .ConfigPanelCategoryTextColor
|
||||
End With
|
||||
End Sub
|
||||
|
||||
Private _originalPropertyGridToolStripItemCountValid As Boolean
|
||||
@@ -538,7 +588,13 @@ Namespace UI
|
||||
|
||||
Private Sub Config_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
|
||||
ApplyLanguage()
|
||||
|
||||
AddHandler Themes.ThemeManager.ThemeChanged, AddressOf ApplyTheme
|
||||
ApplyTheme()
|
||||
|
||||
AddToolStripItems()
|
||||
|
||||
pGrid.HelpVisible = Settings.ShowConfigHelpText
|
||||
End Sub
|
||||
|
||||
Private Sub Config_SystemColorsChanged(sender As System.Object, e As System.EventArgs) Handles MyBase.SystemColorsChanged
|
||||
@@ -564,8 +620,6 @@ Namespace UI
|
||||
If conIcon IsNot Nothing Then
|
||||
Me.btnIcon.Image = conIcon.ToBitmap
|
||||
End If
|
||||
Case My.Language.strPropertyNamePuttySession
|
||||
mRemoteNG.Connection.PuttySession.PuttySessions = mRemoteNG.Connection.Protocol.PuttyBase.GetSessions()
|
||||
Case My.Language.strPropertyNameAddress
|
||||
Me.SetHostStatus(Me.pGrid.SelectedObject)
|
||||
End Select
|
||||
@@ -575,7 +629,16 @@ Namespace UI
|
||||
End If
|
||||
End If
|
||||
|
||||
If TypeOf Me.pGrid.SelectedObject Is mRemoteNG.Root.Info Then
|
||||
If TypeOf pGrid.SelectedObject Is Root.PuttySessions.Info Then
|
||||
Dim puttyRootInfo As Root.PuttySessions.Info = pGrid.SelectedObject
|
||||
Select Case e.ChangedItem.PropertyDescriptor.Name
|
||||
Case "Name"
|
||||
puttyRootInfo.TreeNode.Text = puttyRootInfo.Name
|
||||
Settings.PuttySavedSessionsName = puttyRootInfo.Name
|
||||
Case "Panel"
|
||||
Settings.PuttySavedSessionsPanel = puttyRootInfo.Panel
|
||||
End Select
|
||||
ElseIf TypeOf Me.pGrid.SelectedObject Is mRemoteNG.Root.Info Then
|
||||
Dim rInfo As mRemoteNG.Root.Info = Me.pGrid.SelectedObject
|
||||
|
||||
Select Case e.ChangedItem.Label
|
||||
@@ -607,6 +670,12 @@ Namespace UI
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
Private Sub pGrid_PropertySortChanged(ByVal sender As Object, ByVal e As EventArgs) Handles pGrid.PropertySortChanged
|
||||
If pGrid.PropertySort = PropertySort.CategorizedAlphabetical Then
|
||||
pGrid.PropertySort = PropertySort.Categorized
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub ShowHideGridItems()
|
||||
Try
|
||||
Dim strHide As New List(Of String)
|
||||
@@ -642,6 +711,10 @@ Namespace UI
|
||||
strHide.Add("RDGatewayPassword")
|
||||
strHide.Add("RDGatewayUsername")
|
||||
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
|
||||
strHide.Add("CacheBitmaps")
|
||||
strHide.Add("Colors")
|
||||
@@ -659,6 +732,7 @@ Namespace UI
|
||||
strHide.Add("RDGatewayUseConnectionCredentials")
|
||||
strHide.Add("RDGatewayUsername")
|
||||
strHide.Add("RDPAuthenticationLevel")
|
||||
strHide.Add("LoadBalanceInfo")
|
||||
strHide.Add("RedirectDiskDrives")
|
||||
strHide.Add("RedirectKeys")
|
||||
strHide.Add("RedirectPorts")
|
||||
@@ -667,10 +741,12 @@ Namespace UI
|
||||
strHide.Add("RedirectSound")
|
||||
strHide.Add("RenderingEngine")
|
||||
strHide.Add("Resolution")
|
||||
strHide.Add("AutomaticResize")
|
||||
strHide.Add("UseConsoleSession")
|
||||
strHide.Add("UseCredSsp")
|
||||
If conI.VNCAuthMode = mRemoteNG.Connection.Protocol.VNC.AuthMode.AuthVNC Then
|
||||
strHide.Add("Username;Domain")
|
||||
strHide.Add("Username")
|
||||
strHide.Add("Domain")
|
||||
End If
|
||||
If conI.VNCProxyType = mRemoteNG.Connection.Protocol.VNC.ProxyType.ProxyNone Then
|
||||
strHide.Add("VNCProxyIP")
|
||||
@@ -695,6 +771,7 @@ Namespace UI
|
||||
strHide.Add("RDGatewayUseConnectionCredentials")
|
||||
strHide.Add("RDGatewayUsername")
|
||||
strHide.Add("RDPAuthenticationLevel")
|
||||
strHide.Add("LoadBalanceInfo")
|
||||
strHide.Add("RedirectDiskDrives")
|
||||
strHide.Add("RedirectKeys")
|
||||
strHide.Add("RedirectPorts")
|
||||
@@ -703,6 +780,7 @@ Namespace UI
|
||||
strHide.Add("RedirectSound")
|
||||
strHide.Add("RenderingEngine")
|
||||
strHide.Add("Resolution")
|
||||
strHide.Add("AutomaticResize")
|
||||
strHide.Add("UseConsoleSession")
|
||||
strHide.Add("UseCredSsp")
|
||||
strHide.Add("VNCAuthMode")
|
||||
@@ -733,6 +811,7 @@ Namespace UI
|
||||
strHide.Add("RDGatewayUseConnectionCredentials")
|
||||
strHide.Add("RDGatewayUsername")
|
||||
strHide.Add("RDPAuthenticationLevel")
|
||||
strHide.Add("LoadBalanceInfo")
|
||||
strHide.Add("RedirectDiskDrives")
|
||||
strHide.Add("RedirectKeys")
|
||||
strHide.Add("RedirectPorts")
|
||||
@@ -741,6 +820,7 @@ Namespace UI
|
||||
strHide.Add("RedirectSound")
|
||||
strHide.Add("RenderingEngine")
|
||||
strHide.Add("Resolution")
|
||||
strHide.Add("AutomaticResize")
|
||||
strHide.Add("UseConsoleSession")
|
||||
strHide.Add("UseCredSsp")
|
||||
strHide.Add("VNCAuthMode")
|
||||
@@ -772,6 +852,7 @@ Namespace UI
|
||||
strHide.Add("RDGatewayUseConnectionCredentials")
|
||||
strHide.Add("RDGatewayUsername")
|
||||
strHide.Add("RDPAuthenticationLevel")
|
||||
strHide.Add("LoadBalanceInfo")
|
||||
strHide.Add("RedirectDiskDrives")
|
||||
strHide.Add("RedirectKeys")
|
||||
strHide.Add("RedirectPorts")
|
||||
@@ -780,6 +861,7 @@ Namespace UI
|
||||
strHide.Add("RedirectSound")
|
||||
strHide.Add("RenderingEngine")
|
||||
strHide.Add("Resolution")
|
||||
strHide.Add("AutomaticResize")
|
||||
strHide.Add("UseConsoleSession")
|
||||
strHide.Add("UseCredSsp")
|
||||
strHide.Add("Username")
|
||||
@@ -812,6 +894,7 @@ Namespace UI
|
||||
strHide.Add("RDGatewayUseConnectionCredentials")
|
||||
strHide.Add("RDGatewayUsername")
|
||||
strHide.Add("RDPAuthenticationLevel")
|
||||
strHide.Add("LoadBalanceInfo")
|
||||
strHide.Add("RedirectDiskDrives")
|
||||
strHide.Add("RedirectKeys")
|
||||
strHide.Add("RedirectPorts")
|
||||
@@ -820,6 +903,7 @@ Namespace UI
|
||||
strHide.Add("RedirectSound")
|
||||
strHide.Add("RenderingEngine")
|
||||
strHide.Add("Resolution")
|
||||
strHide.Add("AutomaticResize")
|
||||
strHide.Add("UseConsoleSession")
|
||||
strHide.Add("UseCredSsp")
|
||||
strHide.Add("Username")
|
||||
@@ -852,6 +936,7 @@ Namespace UI
|
||||
strHide.Add("RDGatewayUseConnectionCredentials")
|
||||
strHide.Add("RDGatewayUsername")
|
||||
strHide.Add("RDPAuthenticationLevel")
|
||||
strHide.Add("LoadBalanceInfo")
|
||||
strHide.Add("RedirectDiskDrives")
|
||||
strHide.Add("RedirectKeys")
|
||||
strHide.Add("RedirectPorts")
|
||||
@@ -860,6 +945,7 @@ Namespace UI
|
||||
strHide.Add("RedirectSound")
|
||||
strHide.Add("RenderingEngine")
|
||||
strHide.Add("Resolution")
|
||||
strHide.Add("AutomaticResize")
|
||||
strHide.Add("UseConsoleSession")
|
||||
strHide.Add("UseCredSsp")
|
||||
strHide.Add("Username")
|
||||
@@ -892,6 +978,7 @@ Namespace UI
|
||||
strHide.Add("RDGatewayUseConnectionCredentials")
|
||||
strHide.Add("RDGatewayUsername")
|
||||
strHide.Add("RDPAuthenticationLevel")
|
||||
strHide.Add("LoadBalanceInfo")
|
||||
strHide.Add("RedirectDiskDrives")
|
||||
strHide.Add("RedirectKeys")
|
||||
strHide.Add("RedirectPorts")
|
||||
@@ -899,6 +986,7 @@ Namespace UI
|
||||
strHide.Add("RedirectSmartCards")
|
||||
strHide.Add("RedirectSound")
|
||||
strHide.Add("Resolution")
|
||||
strHide.Add("AutomaticResize")
|
||||
strHide.Add("UseConsoleSession")
|
||||
strHide.Add("UseCredSsp")
|
||||
strHide.Add("VNCAuthMode")
|
||||
@@ -930,12 +1018,14 @@ Namespace UI
|
||||
strHide.Add("RDGatewayUseConnectionCredentials")
|
||||
strHide.Add("RDGatewayUsername")
|
||||
strHide.Add("RDPAuthenticationLevel")
|
||||
strHide.Add("LoadBalanceInfo")
|
||||
strHide.Add("RedirectDiskDrives")
|
||||
strHide.Add("RedirectKeys")
|
||||
strHide.Add("RedirectPorts")
|
||||
strHide.Add("RedirectPrinters")
|
||||
strHide.Add("RedirectSmartCards")
|
||||
strHide.Add("RedirectSound;Resolution")
|
||||
strHide.Add("AutomaticResize")
|
||||
strHide.Add("UseConsoleSession")
|
||||
strHide.Add("UseCredSsp")
|
||||
strHide.Add("VNCAuthMode")
|
||||
@@ -964,6 +1054,7 @@ Namespace UI
|
||||
strHide.Add("RDGatewayUseConnectionCredentials")
|
||||
strHide.Add("RDGatewayUsername")
|
||||
strHide.Add("RDPAuthenticationLevel")
|
||||
strHide.Add("LoadBalanceInfo")
|
||||
strHide.Add("RedirectDiskDrives")
|
||||
strHide.Add("RedirectKeys")
|
||||
strHide.Add("RedirectPorts")
|
||||
@@ -971,6 +1062,7 @@ Namespace UI
|
||||
strHide.Add("RedirectSmartCards")
|
||||
strHide.Add("RedirectSound")
|
||||
strHide.Add("RenderingEngine")
|
||||
strHide.Add("AutomaticResize")
|
||||
strHide.Add("UseConsoleSession")
|
||||
strHide.Add("UseCredSsp")
|
||||
strHide.Add("VNCAuthMode")
|
||||
@@ -1001,6 +1093,7 @@ Namespace UI
|
||||
strHide.Add("RDGatewayUseConnectionCredentials")
|
||||
strHide.Add("RDGatewayUsername")
|
||||
strHide.Add("RDPAuthenticationLevel")
|
||||
strHide.Add("LoadBalanceInfo")
|
||||
strHide.Add("RedirectDiskDrives")
|
||||
strHide.Add("RedirectKeys")
|
||||
strHide.Add("RedirectPorts")
|
||||
@@ -1009,6 +1102,7 @@ Namespace UI
|
||||
strHide.Add("RedirectSound")
|
||||
strHide.Add("RenderingEngine")
|
||||
strHide.Add("Resolution")
|
||||
strHide.Add("AutomaticResize")
|
||||
strHide.Add("UseConsoleSession")
|
||||
strHide.Add("UseCredSsp")
|
||||
strHide.Add("VNCAuthMode")
|
||||
@@ -1234,8 +1328,11 @@ Namespace UI
|
||||
strHide.Add("Hostname")
|
||||
strHide.Add("Name")
|
||||
End If
|
||||
ElseIf TypeOf Me.pGrid.SelectedObject Is mRemoteNG.Root.Info Then
|
||||
strHide.Add("TreeNode")
|
||||
ElseIf TypeOf pGrid.SelectedObject Is Root.Info Then
|
||||
Dim rootInfo As Root.Info = CType(pGrid.SelectedObject, Root.Info)
|
||||
If rootInfo.Type = Root.Info.RootType.PuttySessions Then
|
||||
strHide.Add("Password")
|
||||
End If
|
||||
End If
|
||||
|
||||
Me.pGrid.HiddenProperties = strHide.ToArray
|
||||
@@ -1308,7 +1405,8 @@ Namespace UI
|
||||
|
||||
Private Sub btnIcon_Click(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles btnIcon.MouseUp
|
||||
Try
|
||||
If TypeOf Me.pGrid.SelectedObject Is mRemoteNG.Connection.Info Then
|
||||
If TypeOf pGrid.SelectedObject Is mRemoteNG.Connection.Info And _
|
||||
Not TypeOf pGrid.SelectedObject Is mRemoteNG.Connection.PuttySession.Info Then
|
||||
Me.cMenIcons.Items.Clear()
|
||||
|
||||
For Each iStr As String In mRemoteNG.Connection.Icon.Icons
|
||||
@@ -1328,19 +1426,28 @@ Namespace UI
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
Private Sub IconMenu_Click(ByVal sender As Object, ByVal e As System.EventArgs)
|
||||
Private Sub IconMenu_Click(ByVal sender As Object, ByVal e As EventArgs)
|
||||
Try
|
||||
If TypeOf Me.pGrid.SelectedObject Is mRemoteNG.Connection.Info Then
|
||||
TryCast(Me.pGrid.SelectedObject, mRemoteNG.Connection.Info).Icon = TryCast(sender, ToolStripMenuItem).Text
|
||||
Dim conIcon As Icon = mRemoteNG.Connection.Icon.FromString(TryCast(Me.pGrid.SelectedObject, mRemoteNG.Connection.Info).Icon)
|
||||
If conIcon IsNot Nothing Then
|
||||
Me.btnIcon.Image = conIcon.ToBitmap
|
||||
End If
|
||||
Dim connectionInfo As mRemoteNG.Connection.Info = TryCast(pGrid.SelectedObject, mRemoteNG.Connection.Info)
|
||||
If connectionInfo Is Nothing Then Return
|
||||
|
||||
App.Runtime.SaveConnectionsBG()
|
||||
End If
|
||||
Dim selectedMenuItem As ToolStripMenuItem = TryCast(sender, ToolStripMenuItem)
|
||||
If selectedMenuItem Is Nothing Then Return
|
||||
|
||||
Dim iconName As String = selectedMenuItem.Text
|
||||
If String.IsNullOrEmpty(iconName) Then Return
|
||||
|
||||
Dim connectionIcon As Icon = mRemoteNG.Connection.Icon.FromString(iconName)
|
||||
If connectionIcon Is Nothing Then Return
|
||||
|
||||
btnIcon.Image = connectionIcon.ToBitmap()
|
||||
|
||||
connectionInfo.Icon = iconName
|
||||
pGrid.Refresh()
|
||||
|
||||
SaveConnectionsBG()
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strConfigPropertyGridMenuClickFailed & vbNewLine & ex.Message, True)
|
||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, Language.strConfigPropertyGridMenuClickFailed & vbNewLine & ex.Message, True)
|
||||
End Try
|
||||
End Sub
|
||||
#End Region
|
||||
@@ -1405,6 +1512,19 @@ Namespace UI
|
||||
End Try
|
||||
End Sub
|
||||
#End Region
|
||||
|
||||
Private Sub propertyGridContextMenu_Opening(sender As Object, e As System.ComponentModel.CancelEventArgs) Handles propertyGridContextMenu.Opening
|
||||
propertyGridContextMenuShowHelpText.Checked = Settings.ShowConfigHelpText
|
||||
End Sub
|
||||
|
||||
Private Sub propertyGridContextMenu_Click(sender As Object, e As EventArgs) Handles propertyGridContextMenuShowHelpText.Click
|
||||
propertyGridContextMenuShowHelpText.Checked = Not propertyGridContextMenuShowHelpText.Checked
|
||||
End Sub
|
||||
|
||||
Private Sub propertyGridContextMenu_CheckedChanged(sender As Object, e As EventArgs) Handles propertyGridContextMenuShowHelpText.CheckedChanged
|
||||
Settings.ShowConfigHelpText = propertyGridContextMenuShowHelpText.Checked
|
||||
pGrid.HelpVisible = propertyGridContextMenuShowHelpText.Checked
|
||||
End Sub
|
||||
End Class
|
||||
End Namespace
|
||||
End Namespace
|
||||
@@ -6,6 +6,7 @@ Imports Crownwood
|
||||
Imports WeifenLuo.WinFormsUI.Docking
|
||||
Imports PSTaskDialog
|
||||
Imports mRemoteNG.App.Runtime
|
||||
Imports mRemoteNG.Config
|
||||
|
||||
Namespace UI
|
||||
Namespace Window
|
||||
@@ -292,6 +293,30 @@ Namespace UI
|
||||
ApplyLanguage()
|
||||
End Sub
|
||||
|
||||
Private _documentHandlersAdded As Boolean = False
|
||||
Private _floatHandlersAdded As Boolean = False
|
||||
Private Sub Connection_DockStateChanged(ByVal sender As System.Object, ByVal e As EventArgs) Handles Me.DockStateChanged
|
||||
If DockState = DockState.Float Then
|
||||
If _documentHandlersAdded Then
|
||||
RemoveHandler frmMain.ResizeBegin, AddressOf Connection_ResizeBegin
|
||||
RemoveHandler frmMain.ResizeEnd, AddressOf Connection_ResizeEnd
|
||||
_documentHandlersAdded = False
|
||||
End If
|
||||
AddHandler DockHandler.FloatPane.FloatWindow.ResizeBegin, AddressOf Connection_ResizeBegin
|
||||
AddHandler DockHandler.FloatPane.FloatWindow.ResizeEnd, AddressOf Connection_ResizeEnd
|
||||
_floatHandlersAdded = True
|
||||
ElseIf DockState = DockState.Document Then
|
||||
If _floatHandlersAdded Then
|
||||
RemoveHandler DockHandler.FloatPane.FloatWindow.ResizeBegin, AddressOf Connection_ResizeBegin
|
||||
RemoveHandler DockHandler.FloatPane.FloatWindow.ResizeEnd, AddressOf Connection_ResizeEnd
|
||||
_floatHandlersAdded = False
|
||||
End If
|
||||
AddHandler frmMain.ResizeBegin, AddressOf Connection_ResizeBegin
|
||||
AddHandler frmMain.ResizeEnd, AddressOf Connection_ResizeEnd
|
||||
_documentHandlersAdded = True
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub ApplyLanguage()
|
||||
cmenTabFullscreen.Text = My.Language.strMenuFullScreenRDP
|
||||
cmenTabSmartSize.Text = My.Language.strMenuSmartSize
|
||||
@@ -311,13 +336,15 @@ Namespace UI
|
||||
cmenTabPuttySettings.Text = My.Language.strPuttySettings
|
||||
End Sub
|
||||
|
||||
Private Sub Connection_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
|
||||
If Not frmMain.IsClosing And My.Settings.ConfirmCloseConnection And TabController.TabPages.Count > 0 Then
|
||||
Dim Result As DialogResult = cTaskDialog.MessageBox(Me, My.Application.Info.ProductName, String.Format(My.Language.strConfirmCloseConnectionPanelMainInstruction, Me.Text), "", "", "", My.Language.strCheckboxDoNotShowThisMessageAgain, eTaskDialogButtons.YesNo, eSysIcons.Question, Nothing)
|
||||
Private Sub Connection_FormClosing(ByVal sender As Object, ByVal e As FormClosingEventArgs) Handles Me.FormClosing
|
||||
If Not frmMain.IsClosing And ( _
|
||||
(My.Settings.ConfirmCloseConnection = ConfirmClose.All And TabController.TabPages.Count > 0) Or _
|
||||
(My.Settings.ConfirmCloseConnection = ConfirmClose.Multiple And TabController.TabPages.Count > 1)) Then
|
||||
Dim result As DialogResult = cTaskDialog.MessageBox(Me, My.Application.Info.ProductName, String.Format(My.Language.strConfirmCloseConnectionPanelMainInstruction, Me.Text), "", "", "", My.Language.strCheckboxDoNotShowThisMessageAgain, eTaskDialogButtons.YesNo, eSysIcons.Question, Nothing)
|
||||
If cTaskDialog.VerificationChecked Then
|
||||
My.Settings.ConfirmCloseConnection = False
|
||||
My.Settings.ConfirmCloseConnection = My.Settings.ConfirmCloseConnection - 1
|
||||
End If
|
||||
If Result = DialogResult.No Then
|
||||
If result = DialogResult.No Then
|
||||
e.Cancel = True
|
||||
Exit Sub
|
||||
End If
|
||||
@@ -326,28 +353,23 @@ Namespace UI
|
||||
Try
|
||||
For Each tabP As Magic.Controls.TabPage In Me.TabController.TabPages
|
||||
If tabP.Tag IsNot Nothing Then
|
||||
Dim IC As mRemoteNG.Connection.InterfaceControl = tabP.Tag
|
||||
IC.Protocol.Close()
|
||||
Dim interfaceControl As mRemoteNG.Connection.InterfaceControl = tabP.Tag
|
||||
interfaceControl.Protocol.Close()
|
||||
End If
|
||||
Next
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "Connection_FormClosing (UI.Window.Connections) failed" & vbNewLine & ex.Message, True)
|
||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "UI.Window.Connection.Connection_FormClosing() failed" & vbNewLine & ex.Message, True)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
Private Sub Connection_Resize(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Resize
|
||||
Try
|
||||
For Each tabP As Magic.Controls.TabPage In Me.TabController.TabPages
|
||||
If tabP.Tag IsNot Nothing Then
|
||||
If TypeOf tabP.Tag Is mRemoteNG.Connection.InterfaceControl Then
|
||||
Dim IC As mRemoteNG.Connection.InterfaceControl = tabP.Tag
|
||||
IC.Protocol.Resize()
|
||||
End If
|
||||
End If
|
||||
Next
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "Connection_Resize (UI.Window.Connections) failed" & vbNewLine & ex.Message, True)
|
||||
End Try
|
||||
Public Shadows Event ResizeBegin As EventHandler
|
||||
Private Sub Connection_ResizeBegin(ByVal sender As System.Object, ByVal e As EventArgs)
|
||||
RaiseEvent ResizeBegin(Me, e)
|
||||
End Sub
|
||||
|
||||
Public Shadows Event ResizeEnd As EventHandler
|
||||
Public Sub Connection_ResizeEnd(ByVal sender As System.Object, ByVal e As EventArgs)
|
||||
RaiseEvent ResizeEnd(sender, e)
|
||||
End Sub
|
||||
#End Region
|
||||
|
||||
@@ -361,31 +383,31 @@ Namespace UI
|
||||
End Sub
|
||||
|
||||
Private Sub CloseConnectionTab()
|
||||
Dim SelectedTab As Crownwood.Magic.Controls.TabPage = Me.TabController.SelectedTab
|
||||
If My.Settings.ConfirmCloseConnection Then
|
||||
Dim Result As DialogResult = cTaskDialog.MessageBox(Me, My.Application.Info.ProductName, String.Format(My.Language.strConfirmCloseConnectionMainInstruction, SelectedTab.Title), "", "", "", My.Language.strCheckboxDoNotShowThisMessageAgain, eTaskDialogButtons.YesNo, eSysIcons.Question, Nothing)
|
||||
Dim selectedTab As Magic.Controls.TabPage = TabController.SelectedTab
|
||||
If My.Settings.ConfirmCloseConnection = ConfirmClose.All Then
|
||||
Dim result As DialogResult = cTaskDialog.MessageBox(Me, My.Application.Info.ProductName, String.Format(My.Language.strConfirmCloseConnectionMainInstruction, selectedTab.Title), "", "", "", My.Language.strCheckboxDoNotShowThisMessageAgain, eTaskDialogButtons.YesNo, eSysIcons.Question, Nothing)
|
||||
If cTaskDialog.VerificationChecked Then
|
||||
My.Settings.ConfirmCloseConnection = False
|
||||
My.Settings.ConfirmCloseConnection = My.Settings.ConfirmCloseConnection - 1
|
||||
End If
|
||||
If Result = DialogResult.No Then
|
||||
If result = DialogResult.No Then
|
||||
Exit Sub
|
||||
End If
|
||||
End If
|
||||
|
||||
Try
|
||||
If SelectedTab.Tag IsNot Nothing Then
|
||||
Dim IC As mRemoteNG.Connection.InterfaceControl = SelectedTab.Tag
|
||||
IC.Protocol.Close()
|
||||
If selectedTab.Tag IsNot Nothing Then
|
||||
Dim interfaceControl As mRemoteNG.Connection.InterfaceControl = selectedTab.Tag
|
||||
interfaceControl.Protocol.Close()
|
||||
Else
|
||||
Me.CloseTab(SelectedTab)
|
||||
CloseTab(selectedTab)
|
||||
End If
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "CloseConnectionTab (UI.Window.Connections) failed" & vbNewLine & ex.Message, True)
|
||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "UI.Window.Connection.CloseConnectionTab() failed" & vbNewLine & ex.Message, True)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
Private Sub TabController_DoubleClickTab(ByVal sender As Crownwood.Magic.Controls.TabControl, ByVal page As Crownwood.Magic.Controls.TabPage) Handles TabController.DoubleClickTab
|
||||
_lastMouseUp = 0
|
||||
_firstClickTicks = 0
|
||||
If My.Settings.DoubleClickOnTabClosesIt Then
|
||||
Me.CloseConnectionTab()
|
||||
End If
|
||||
@@ -424,15 +446,16 @@ Namespace UI
|
||||
End If
|
||||
|
||||
If IC.Info.Protocol = mRemoteNG.Connection.Protocol.Protocols.RDP Then
|
||||
Me.cmenTabFullscreen.Enabled = True
|
||||
Me.cmenTabSmartSize.Enabled = True
|
||||
|
||||
Dim rdp As mRemoteNG.Connection.Protocol.RDP = IC.Protocol
|
||||
Me.cmenTabSmartSize.Checked = rdp.SmartSize
|
||||
Me.cmenTabFullscreen.Checked = rdp.Fullscreen
|
||||
|
||||
cmenTabFullscreen.Enabled = True
|
||||
cmenTabFullscreen.Checked = rdp.Fullscreen
|
||||
|
||||
cmenTabSmartSize.Enabled = True
|
||||
cmenTabSmartSize.Checked = rdp.SmartSize
|
||||
Else
|
||||
Me.cmenTabFullscreen.Enabled = False
|
||||
Me.cmenTabSmartSize.Enabled = False
|
||||
cmenTabFullscreen.Enabled = False
|
||||
cmenTabSmartSize.Enabled = False
|
||||
End If
|
||||
|
||||
If IC.Info.Protocol = mRemoteNG.Connection.Protocol.Protocols.VNC Then
|
||||
@@ -845,10 +868,9 @@ Namespace UI
|
||||
RefreshIC()
|
||||
End Sub
|
||||
|
||||
Private _lastMouseUp As Integer = 0
|
||||
Private _firstClickTicks As Integer = 0
|
||||
Private _doubleClickRectangle As Rectangle
|
||||
Private Sub TabController_MouseUp(ByVal sender As Object, ByVal e As MouseEventArgs) Handles TabController.MouseUp
|
||||
Debug.Print("TabController_MouseUp()")
|
||||
Debug.Print("_ignoreChangeSelectedTabClick = {0}", _ignoreChangeSelectedTabClick)
|
||||
Try
|
||||
If Not Native.GetForegroundWindow() = frmMain.Handle And Not _ignoreChangeSelectedTabClick Then
|
||||
Dim clickedTab As Magic.Controls.TabPage = TabController.TabPageFromPoint(e.Location)
|
||||
@@ -862,9 +884,10 @@ Namespace UI
|
||||
Select Case e.Button
|
||||
Case MouseButtons.Left
|
||||
Dim currentTicks As Integer = Environment.TickCount
|
||||
Dim elapsedTicks As Integer = currentTicks - _lastMouseUp
|
||||
If elapsedTicks > SystemInformation.DoubleClickTime Then
|
||||
_lastMouseUp = currentTicks
|
||||
Dim elapsedTicks As Integer = currentTicks - _firstClickTicks
|
||||
If elapsedTicks > SystemInformation.DoubleClickTime Or Not _doubleClickRectangle.Contains(MousePosition) Then
|
||||
_firstClickTicks = currentTicks
|
||||
_doubleClickRectangle = New Rectangle(MousePosition.X - (SystemInformation.DoubleClickSize.Width / 2), MousePosition.Y - (SystemInformation.DoubleClickSize.Height / 2), SystemInformation.DoubleClickSize.Width, SystemInformation.DoubleClickSize.Height)
|
||||
FocusIC()
|
||||
Else
|
||||
TabController.OnDoubleClickTab(TabController.SelectedTab)
|
||||
@@ -915,7 +938,6 @@ Namespace UI
|
||||
Protected Overloads Overrides Sub WndProc(ByRef WndMsg As Message)
|
||||
Try
|
||||
If WndMsg.Msg = Native.WM_MOUSEACTIVATE Then
|
||||
|
||||
Dim curTab As Magic.Controls.TabPage = Me.TabController.SelectedTab
|
||||
Dim curRect As Rectangle = curTab.RectangleToScreen(curTab.ClientRectangle)
|
||||
|
||||
@@ -938,15 +960,14 @@ Namespace UI
|
||||
#End Region
|
||||
|
||||
#Region "Tab drag and drop"
|
||||
Public Property InTabDrag As Boolean = False
|
||||
Private Sub TabController_PageDragStart(ByVal sender As Object, ByVal e As MouseEventArgs) Handles TabController.PageDragEnd, TabController.PageDragStart
|
||||
Cursor = Cursors.SizeWE
|
||||
End Sub
|
||||
|
||||
Private Sub TabController_PageDragEnd(ByVal sender As Object, ByVal e As MouseEventArgs) Handles TabController.PageDragEnd, TabController.PageDragQuit
|
||||
Cursor = Cursors.Default
|
||||
End Sub
|
||||
|
||||
Private Sub TabController_PageDragMove(ByVal sender As Object, ByVal e As MouseEventArgs) Handles TabController.PageDragMove
|
||||
InTabDrag = True ' For some reason PageDragStart gets raised again after PageDragEnd so set this here instead
|
||||
|
||||
Dim sourceTab As Magic.Controls.TabPage = TabController.SelectedTab
|
||||
Dim destinationTab As Magic.Controls.TabPage = TabController.TabPageFromPoint(e.Location)
|
||||
|
||||
@@ -960,6 +981,13 @@ Namespace UI
|
||||
TabController.SelectedTab = sourceTab
|
||||
TabController.TabPages.ResumeEvents()
|
||||
End Sub
|
||||
|
||||
Private Sub TabController_PageDragEnd(ByVal sender As Object, ByVal e As MouseEventArgs) Handles TabController.PageDragEnd, TabController.PageDragQuit
|
||||
Cursor = Cursors.Default
|
||||
InTabDrag = False
|
||||
Dim interfaceControl As mRemoteNG.Connection.InterfaceControl = TryCast(TabController.SelectedTab.Tag, mRemoteNG.Connection.InterfaceControl)
|
||||
If interfaceControl IsNot Nothing Then interfaceControl.Protocol.Focus()
|
||||
End Sub
|
||||
#End Region
|
||||
End Class
|
||||
End Namespace
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
Imports System.Text
|
||||
Imports WeifenLuo.WinFormsUI.Docking
|
||||
Imports mRemoteNG.App.Runtime
|
||||
|
||||
@@ -19,16 +20,16 @@ Namespace UI
|
||||
Friend WithEvents cMenMCDelete As System.Windows.Forms.ToolStripMenuItem
|
||||
Friend WithEvents pnlErrorMsg As System.Windows.Forms.Panel
|
||||
Private Sub InitializeComponent()
|
||||
Me.components = New System.ComponentModel.Container
|
||||
Me.pnlErrorMsg = New System.Windows.Forms.Panel
|
||||
Me.txtMsgText = New System.Windows.Forms.TextBox
|
||||
Me.lblMsgDate = New System.Windows.Forms.Label
|
||||
Me.pbError = New System.Windows.Forms.PictureBox
|
||||
Me.lvErrorCollector = New System.Windows.Forms.ListView
|
||||
Me.clmMessage = New System.Windows.Forms.ColumnHeader
|
||||
Me.components = New System.ComponentModel.Container()
|
||||
Me.pnlErrorMsg = New System.Windows.Forms.Panel()
|
||||
Me.txtMsgText = New System.Windows.Forms.TextBox()
|
||||
Me.lblMsgDate = New System.Windows.Forms.Label()
|
||||
Me.pbError = New System.Windows.Forms.PictureBox()
|
||||
Me.lvErrorCollector = New System.Windows.Forms.ListView()
|
||||
Me.clmMessage = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader)
|
||||
Me.cMenMC = New System.Windows.Forms.ContextMenuStrip(Me.components)
|
||||
Me.cMenMCCopy = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.cMenMCDelete = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.cMenMCCopy = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.cMenMCDelete = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.imgListMC = New System.Windows.Forms.ImageList(Me.components)
|
||||
Me.pnlErrorMsg.SuspendLayout()
|
||||
CType(Me.pbError, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||
@@ -38,7 +39,7 @@ Namespace UI
|
||||
'pnlErrorMsg
|
||||
'
|
||||
Me.pnlErrorMsg.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _
|
||||
Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
|
||||
Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
|
||||
Me.pnlErrorMsg.BackColor = System.Drawing.SystemColors.Control
|
||||
Me.pnlErrorMsg.Controls.Add(Me.txtMsgText)
|
||||
Me.pnlErrorMsg.Controls.Add(Me.lblMsgDate)
|
||||
@@ -51,8 +52,8 @@ Namespace UI
|
||||
'txtMsgText
|
||||
'
|
||||
Me.txtMsgText.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)
|
||||
Or System.Windows.Forms.AnchorStyles.Left) _
|
||||
Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
|
||||
Me.txtMsgText.BorderStyle = System.Windows.Forms.BorderStyle.None
|
||||
Me.txtMsgText.Location = New System.Drawing.Point(40, 20)
|
||||
Me.txtMsgText.Multiline = True
|
||||
@@ -65,7 +66,7 @@ Namespace UI
|
||||
'lblMsgDate
|
||||
'
|
||||
Me.lblMsgDate.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _
|
||||
Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
|
||||
Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
|
||||
Me.lblMsgDate.Font = New System.Drawing.Font("Tahoma", 8.25!, System.Drawing.FontStyle.Italic, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
|
||||
Me.lblMsgDate.Location = New System.Drawing.Point(40, 5)
|
||||
Me.lblMsgDate.Name = "lblMsgDate"
|
||||
@@ -84,8 +85,8 @@ Namespace UI
|
||||
'lvErrorCollector
|
||||
'
|
||||
Me.lvErrorCollector.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)
|
||||
Or System.Windows.Forms.AnchorStyles.Left) _
|
||||
Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
|
||||
Me.lvErrorCollector.BorderStyle = System.Windows.Forms.BorderStyle.None
|
||||
Me.lvErrorCollector.Columns.AddRange(New System.Windows.Forms.ColumnHeader() {Me.clmMessage})
|
||||
Me.lvErrorCollector.ContextMenuStrip = Me.cMenMC
|
||||
@@ -103,7 +104,7 @@ Namespace UI
|
||||
'
|
||||
'clmMessage
|
||||
'
|
||||
Me.clmMessage.Text = My.Language.strColumnMessage
|
||||
Me.clmMessage.Text = Global.mRemoteNG.My.Language.strColumnMessage
|
||||
Me.clmMessage.Width = 184
|
||||
'
|
||||
'cMenMC
|
||||
@@ -112,23 +113,23 @@ Namespace UI
|
||||
Me.cMenMC.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.cMenMCCopy, Me.cMenMCDelete})
|
||||
Me.cMenMC.Name = "cMenMC"
|
||||
Me.cMenMC.RenderMode = System.Windows.Forms.ToolStripRenderMode.Professional
|
||||
Me.cMenMC.Size = New System.Drawing.Size(137, 48)
|
||||
Me.cMenMC.Size = New System.Drawing.Size(153, 70)
|
||||
'
|
||||
'cMenMCCopy
|
||||
'
|
||||
Me.cMenMCCopy.Image = Global.mRemoteNG.My.Resources.Resources.Copy
|
||||
Me.cMenMCCopy.Name = "cMenMCCopy"
|
||||
Me.cMenMCCopy.ShortcutKeys = CType((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.C), System.Windows.Forms.Keys)
|
||||
Me.cMenMCCopy.Size = New System.Drawing.Size(136, 22)
|
||||
Me.cMenMCCopy.Text = My.Language.strMenuCopy
|
||||
Me.cMenMCCopy.Size = New System.Drawing.Size(152, 22)
|
||||
Me.cMenMCCopy.Text = Global.mRemoteNG.My.Language.strMenuCopy
|
||||
'
|
||||
'cMenMCDelete
|
||||
'
|
||||
Me.cMenMCDelete.Image = Global.mRemoteNG.My.Resources.Resources.Delete
|
||||
Me.cMenMCDelete.Name = "cMenMCDelete"
|
||||
Me.cMenMCDelete.ShortcutKeys = System.Windows.Forms.Keys.Delete
|
||||
Me.cMenMCDelete.Size = New System.Drawing.Size(136, 22)
|
||||
Me.cMenMCDelete.Text = My.Language.strMenuDelete
|
||||
Me.cMenMCDelete.Size = New System.Drawing.Size(152, 22)
|
||||
Me.cMenMCDelete.Text = Global.mRemoteNG.My.Language.strMenuDelete
|
||||
'
|
||||
'imgListMC
|
||||
'
|
||||
@@ -141,11 +142,12 @@ Namespace UI
|
||||
Me.ClientSize = New System.Drawing.Size(617, 233)
|
||||
Me.Controls.Add(Me.lvErrorCollector)
|
||||
Me.Controls.Add(Me.pnlErrorMsg)
|
||||
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 = Global.mRemoteNG.My.Resources.Resources.Info_Icon
|
||||
Me.Name = "ErrorsAndInfos"
|
||||
Me.TabText = My.Language.strMenuNotifications
|
||||
Me.Text = My.Language.strMenuNotifications
|
||||
Me.TabText = Global.mRemoteNG.My.Language.strMenuNotifications
|
||||
Me.Text = "Notifications"
|
||||
Me.pnlErrorMsg.ResumeLayout(False)
|
||||
Me.pnlErrorMsg.PerformLayout()
|
||||
CType(Me.pbError, System.ComponentModel.ISupportInitialize).EndInit()
|
||||
@@ -174,8 +176,8 @@ Namespace UI
|
||||
|
||||
Private Sub ApplyLanguage()
|
||||
clmMessage.Text = My.Language.strColumnMessage
|
||||
cMenMCCopy.Text = My.Language.strMenuCopy
|
||||
cMenMCDelete.Text = My.Language.strMenuDelete
|
||||
cMenMCCopy.Text = My.Language.strMenuNotificationsCopyAll
|
||||
cMenMCDelete.Text = My.Language.strMenuNotificationsDeleteAll
|
||||
TabText = My.Language.strMenuNotifications
|
||||
Text = My.Language.strMenuNotifications
|
||||
End Sub
|
||||
@@ -311,43 +313,80 @@ Namespace UI
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
Private Sub cMenMCCopy_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cMenMCCopy.Click
|
||||
Me.CopyMessageToClipboard()
|
||||
Private Sub cMenMC_Opening(sender As System.Object, e As System.ComponentModel.CancelEventArgs) Handles cMenMC.Opening
|
||||
If lvErrorCollector.Items.Count Then
|
||||
cMenMCCopy.Enabled = True
|
||||
cMenMCDelete.Enabled = True
|
||||
Else
|
||||
cMenMCCopy.Enabled = False
|
||||
cMenMCDelete.Enabled = False
|
||||
End If
|
||||
|
||||
If lvErrorCollector.SelectedItems.Count Then
|
||||
cMenMCCopy.Text = My.Language.strMenuCopy
|
||||
cMenMCDelete.Text = My.Language.strMenuNotificationsDelete
|
||||
Else
|
||||
cMenMCCopy.Text = My.Language.strMenuNotificationsCopyAll
|
||||
cMenMCDelete.Text = My.Language.strMenuNotificationsDeleteAll
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub CopyMessageToClipboard()
|
||||
Private Sub cMenMCCopy_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cMenMCCopy.Click
|
||||
CopyMessagesToClipboard()
|
||||
End Sub
|
||||
|
||||
Private Sub CopyMessagesToClipboard()
|
||||
Try
|
||||
If Me.lvErrorCollector.SelectedItems.Count > 0 Then
|
||||
Dim strCopyText As String
|
||||
strCopyText = "----------" & vbNewLine
|
||||
|
||||
For Each lvItem As ListViewItem In Me.lvErrorCollector.SelectedItems
|
||||
strCopyText &= TryCast(lvItem.Tag, Messages.Message).MsgClass.ToString & vbNewLine
|
||||
strCopyText &= TryCast(lvItem.Tag, Messages.Message).MsgDate & vbNewLine
|
||||
strCopyText &= TryCast(lvItem.Tag, Messages.Message).MsgText & vbNewLine
|
||||
strCopyText &= "----------" & vbNewLine
|
||||
Next
|
||||
|
||||
Clipboard.SetText(strCopyText)
|
||||
Dim items As IEnumerable
|
||||
If lvErrorCollector.SelectedItems.Count Then
|
||||
items = lvErrorCollector.SelectedItems
|
||||
Else
|
||||
items = lvErrorCollector.Items
|
||||
End If
|
||||
|
||||
Dim stringBuilder As New StringBuilder
|
||||
stringBuilder.AppendLine("----------")
|
||||
|
||||
lvErrorCollector.BeginUpdate()
|
||||
|
||||
Dim message As Messages.Message
|
||||
For Each item As ListViewItem In items
|
||||
message = TryCast(item.Tag, Messages.Message)
|
||||
If message Is Nothing Then Continue For
|
||||
|
||||
stringBuilder.AppendLine(message.MsgClass.ToString)
|
||||
stringBuilder.AppendLine(message.MsgDate)
|
||||
stringBuilder.AppendLine(message.MsgText)
|
||||
stringBuilder.AppendLine("----------")
|
||||
Next
|
||||
|
||||
Clipboard.SetText(stringBuilder.ToString)
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "CopyMessageToClipboard (UI.Window.ErrorsAndInfos) failed" & vbNewLine & ex.Message, True)
|
||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "UI.Window.ErrorsAndInfos.CopyMessagesToClipboard() failed." & vbNewLine & ex.Message, True)
|
||||
Finally
|
||||
lvErrorCollector.EndUpdate()
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
Private Sub cMenMCDelete_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cMenMCDelete.Click
|
||||
Me.DeleteMessages()
|
||||
DeleteMessages()
|
||||
End Sub
|
||||
|
||||
Private Sub DeleteMessages()
|
||||
Try
|
||||
If Me.lvErrorCollector.SelectedItems.Count > 0 Then
|
||||
For Each lvItem As ListViewItem In Me.lvErrorCollector.SelectedItems
|
||||
lvItem.Remove()
|
||||
lvErrorCollector.BeginUpdate()
|
||||
|
||||
If lvErrorCollector.SelectedItems.Count Then
|
||||
For Each item As ListViewItem In lvErrorCollector.SelectedItems
|
||||
item.Remove()
|
||||
Next
|
||||
Else
|
||||
lvErrorCollector.Items.Clear()
|
||||
End If
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "DeleteMessages (UI.Window.ErrorsAndInfos) failed" & vbNewLine & ex.Message, True)
|
||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "UI.Window.ErrorsAndInfos.DeleteMessages() failed" & vbNewLine & ex.Message, True)
|
||||
Finally
|
||||
lvErrorCollector.EndUpdate()
|
||||
End Try
|
||||
End Sub
|
||||
#End Region
|
||||
|
||||
@@ -52,7 +52,6 @@ Namespace UI
|
||||
'
|
||||
'wbHelp
|
||||
'
|
||||
Me.wbHelp.AllowWebBrowserDrop = False
|
||||
Me.wbHelp.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)
|
||||
@@ -224,6 +223,11 @@ Namespace UI
|
||||
Me.tvIndex.SelectedNode = Me.tvIndex.Nodes(0).Nodes(0)
|
||||
End Sub
|
||||
|
||||
Private Sub Help_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.
|
||||
wbHelp.AllowWebBrowserDrop = False
|
||||
End Sub
|
||||
|
||||
Private Sub tvIndex_NodeMouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.TreeNodeMouseClickEventArgs) Handles tvIndex.NodeMouseClick
|
||||
Me.tvIndex.SelectedNode = e.Node
|
||||
End Sub
|
||||
|
||||
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">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</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>
|
||||
</metadata>
|
||||
<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
|
||||
|
||||
Namespace UI
|
||||
Namespace Window
|
||||
Public Class Sessions
|
||||
Inherits UI.Window.Base
|
||||
|
||||
#Region "Form Init"
|
||||
Friend WithEvents clmSesType As System.Windows.Forms.ColumnHeader
|
||||
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
|
||||
Inherits Base
|
||||
#Region "Private Fields"
|
||||
Private _getSessionsThread As Thread
|
||||
Private _retrieved As Boolean = False
|
||||
#End Region
|
||||
|
||||
#Region "Public Methods"
|
||||
Public Sub New(ByVal Panel As DockContent)
|
||||
Me.WindowType = Type.Sessions
|
||||
Me.DockPnl = Panel
|
||||
Me.InitializeComponent()
|
||||
Public Sub New(ByVal panel As DockContent)
|
||||
WindowType = Type.Sessions
|
||||
DockPnl = panel
|
||||
InitializeComponent()
|
||||
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
|
||||
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
|
||||
nowHost = TryCast(mRemoteNG.Tree.Node.SelectedNode.Tag, mRemoteNG.Connection.Info).Hostname
|
||||
Else
|
||||
Me.ClearList()
|
||||
Exit Sub
|
||||
End If
|
||||
If Not (connectionInfo.Protocol = mRemoteNG.Connection.Protocol.Protocols.RDP Or _
|
||||
connectionInfo.Protocol = mRemoteNG.Connection.Protocol.Protocols.ICA) Then Return
|
||||
|
||||
If My.Settings.AutomaticallyGetSessionInfo And Me._CurrentHost = nowHost Then
|
||||
Dim conI As mRemoteNG.Connection.Info = mRemoteNG.Tree.Node.SelectedNode.Tag
|
||||
Dim data As New BackgroundData
|
||||
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
|
||||
'continue
|
||||
Else
|
||||
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
|
||||
If Settings.EmptyCredentials = "custom" Then
|
||||
If .Username = "" Then
|
||||
.Username = Settings.DefaultUsername
|
||||
End If
|
||||
|
||||
If sPass = "" Then
|
||||
sPass = Security.Crypt.Decrypt(My.Settings.DefaultPassword, App.Info.General.EncryptionKey)
|
||||
If .Password = "" Then
|
||||
.Password = Security.Crypt.Decrypt(Settings.DefaultPassword, App.Info.General.EncryptionKey)
|
||||
End If
|
||||
|
||||
If sDom = "" Then
|
||||
sDom = My.Settings.DefaultDomain
|
||||
If .Domain = "" Then
|
||||
.Domain = Settings.DefaultDomain
|
||||
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
|
||||
_getSessionsThread = New Thread(AddressOf GetSessionsBackground)
|
||||
_getSessionsThread.SetApartmentState(ApartmentState.STA)
|
||||
_getSessionsThread.IsBackground = True
|
||||
_getSessionsThread.Start(data)
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "GetSessionsAuto (UI.Window.Sessions) 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)
|
||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "UI.Window.Sessions.GetSessions() failed." & vbNewLine & ex.Message, True)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
Public Sub KillSession()
|
||||
If TypeOf mRemoteNG.Tree.Node.SelectedNode.Tag Is mRemoteNG.Connection.Info Then
|
||||
'continue
|
||||
Else
|
||||
Exit Sub
|
||||
End If
|
||||
If sessionList.SelectedItems.Count = 0 Then Return
|
||||
|
||||
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
|
||||
'continue
|
||||
Else
|
||||
Exit Sub
|
||||
End If
|
||||
If Not connectionInfo.Protocol = mRemoteNG.Connection.Protocol.Protocols.RDP Then Return
|
||||
|
||||
If Me.lvSessions.SelectedItems.Count > 0 Then
|
||||
'continue
|
||||
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)
|
||||
For Each lvItem As ListViewItem In sessionList.SelectedItems
|
||||
KillSession(connectionInfo.Hostname, connectionInfo.Username, connectionInfo.Password, connectionInfo.Domain, lvItem.Tag)
|
||||
Next
|
||||
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
|
||||
tServerName = ServerName
|
||||
tUserName = Username
|
||||
tPassword = Password
|
||||
tDomain = Domain
|
||||
tSessionID = SessionID
|
||||
Dim data As New BackgroundData
|
||||
With data
|
||||
.Hostname = hostname
|
||||
.Username = username
|
||||
.Password = password
|
||||
.Domain = domain
|
||||
.SessionId = sessionId
|
||||
End With
|
||||
|
||||
threadSessions = New Threading.Thread(AddressOf KillSessionBG)
|
||||
threadSessions.SetApartmentState(Threading.ApartmentState.STA)
|
||||
threadSessions.IsBackground = True
|
||||
threadSessions.Start()
|
||||
Dim thread As New Thread(AddressOf KillSessionBackground)
|
||||
thread.SetApartmentState(ApartmentState.STA)
|
||||
thread.IsBackground = True
|
||||
thread.Start(data)
|
||||
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 Sub
|
||||
#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 Namespace
|
||||
End Namespace
|
||||
@@ -1,4 +1,5 @@
|
||||
Imports mRemoteNG.Connection
|
||||
Imports mRemoteNG
|
||||
Imports mRemoteNG.My
|
||||
Imports WeifenLuo.WinFormsUI.Docking
|
||||
Imports mRemoteNG.App.Runtime
|
||||
|
||||
@@ -53,51 +54,51 @@ Namespace UI
|
||||
Friend WithEvents mMenAddFolder As System.Windows.Forms.ToolStripMenuItem
|
||||
Public WithEvents tvConnections As System.Windows.Forms.TreeView
|
||||
Private Sub InitializeComponent()
|
||||
Me.components = New System.ComponentModel.Container
|
||||
Me.components = New System.ComponentModel.Container()
|
||||
Dim TreeNode1 As System.Windows.Forms.TreeNode = New System.Windows.Forms.TreeNode("Connections")
|
||||
Me.tvConnections = New System.Windows.Forms.TreeView
|
||||
Me.tvConnections = New System.Windows.Forms.TreeView()
|
||||
Me.cMenTree = New System.Windows.Forms.ContextMenuStrip(Me.components)
|
||||
Me.cMenTreeAddConnection = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.cMenTreeAddFolder = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.cMenTreeSep1 = New System.Windows.Forms.ToolStripSeparator
|
||||
Me.cMenTreeConnect = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.cMenTreeConnectWithOptions = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.cMenTreeConnectWithOptionsConnectToConsoleSession = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.cMenTreeConnectWithOptionsDontConnectToConsoleSession = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.cMenTreeConnectWithOptionsConnectInFullscreen = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.cMenTreeConnectWithOptionsChoosePanelBeforeConnecting = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.cMenTreeDisconnect = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.cMenTreeSep2 = New System.Windows.Forms.ToolStripSeparator
|
||||
Me.cMenTreeToolsTransferFile = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.cMenTreeToolsImportExport = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.cMenTreeToolsImportExportExportmRemoteXML = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.cMenTreeToolsImportExportImportmRemoteXML = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.cMenTreeToolsImportExportSep1 = New System.Windows.Forms.ToolStripSeparator
|
||||
Me.cMenTreeToolsImportExportImportFromAD = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.cMenTreeToolsImportExportImportFromRDPFiles = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.cMenTreeToolsImportExportImportFromPortScan = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.cMenTreeToolsSort = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.cMenTreeToolsSortAscending = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.cMenTreeToolsSortDescending = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.cMenTreeToolsExternalApps = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.cMenTreeSep3 = New System.Windows.Forms.ToolStripSeparator
|
||||
Me.cMenTreeDuplicate = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.cMenTreeRename = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.cMenTreeDelete = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.cMenTreeSep4 = New System.Windows.Forms.ToolStripSeparator
|
||||
Me.cMenTreeMoveUp = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.cMenTreeMoveDown = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.cMenTreeAddConnection = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.cMenTreeAddFolder = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.cMenTreeSep1 = New System.Windows.Forms.ToolStripSeparator()
|
||||
Me.cMenTreeConnect = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.cMenTreeConnectWithOptions = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.cMenTreeConnectWithOptionsConnectToConsoleSession = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.cMenTreeConnectWithOptionsDontConnectToConsoleSession = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.cMenTreeConnectWithOptionsConnectInFullscreen = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.cMenTreeConnectWithOptionsChoosePanelBeforeConnecting = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.cMenTreeDisconnect = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.cMenTreeSep2 = New System.Windows.Forms.ToolStripSeparator()
|
||||
Me.cMenTreeToolsTransferFile = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.cMenTreeToolsImportExport = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.cMenTreeToolsImportExportExportmRemoteXML = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.cMenTreeToolsImportExportImportmRemoteXML = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.cMenTreeToolsImportExportSep1 = New System.Windows.Forms.ToolStripSeparator()
|
||||
Me.cMenTreeToolsImportExportImportFromAD = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.cMenTreeToolsImportExportImportFromRDPFiles = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.cMenTreeToolsImportExportImportFromPortScan = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.cMenTreeToolsSort = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.cMenTreeToolsSortAscending = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.cMenTreeToolsSortDescending = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.cMenTreeToolsExternalApps = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.cMenTreeSep3 = New System.Windows.Forms.ToolStripSeparator()
|
||||
Me.cMenTreeDuplicate = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.cMenTreeRename = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.cMenTreeDelete = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.cMenTreeSep4 = New System.Windows.Forms.ToolStripSeparator()
|
||||
Me.cMenTreeMoveUp = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.cMenTreeMoveDown = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.imgListTree = New System.Windows.Forms.ImageList(Me.components)
|
||||
Me.pnlConnections = New System.Windows.Forms.Panel
|
||||
Me.PictureBox1 = New System.Windows.Forms.PictureBox
|
||||
Me.txtSearch = New System.Windows.Forms.TextBox
|
||||
Me.msMain = New System.Windows.Forms.MenuStrip
|
||||
Me.mMenAddConnection = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.mMenAddFolder = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.mMenView = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.mMenViewExpandAllFolders = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.mMenViewCollapseAllFolders = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.mMenSortAscending = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.pnlConnections = New System.Windows.Forms.Panel()
|
||||
Me.PictureBox1 = New System.Windows.Forms.PictureBox()
|
||||
Me.txtSearch = New System.Windows.Forms.TextBox()
|
||||
Me.msMain = New System.Windows.Forms.MenuStrip()
|
||||
Me.mMenAddConnection = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.mMenAddFolder = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.mMenView = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.mMenViewExpandAllFolders = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.mMenViewCollapseAllFolders = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.mMenSortAscending = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.cMenTree.SuspendLayout()
|
||||
Me.pnlConnections.SuspendLayout()
|
||||
CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||
@@ -108,8 +109,8 @@ Namespace UI
|
||||
'
|
||||
Me.tvConnections.AllowDrop = True
|
||||
Me.tvConnections.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)
|
||||
Or System.Windows.Forms.AnchorStyles.Left) _
|
||||
Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
|
||||
Me.tvConnections.BorderStyle = System.Windows.Forms.BorderStyle.None
|
||||
Me.tvConnections.ContextMenuStrip = Me.cMenTree
|
||||
Me.tvConnections.HideSelection = False
|
||||
@@ -122,7 +123,7 @@ Namespace UI
|
||||
TreeNode1.Text = "Connections"
|
||||
Me.tvConnections.Nodes.AddRange(New System.Windows.Forms.TreeNode() {TreeNode1})
|
||||
Me.tvConnections.SelectedImageIndex = 0
|
||||
Me.tvConnections.Size = New System.Drawing.Size(192, 407)
|
||||
Me.tvConnections.Size = New System.Drawing.Size(192, 410)
|
||||
Me.tvConnections.TabIndex = 20
|
||||
'
|
||||
'cMenTree
|
||||
@@ -157,7 +158,7 @@ Namespace UI
|
||||
Me.cMenTreeConnect.Image = Global.mRemoteNG.My.Resources.Resources.Play
|
||||
Me.cMenTreeConnect.Name = "cMenTreeConnect"
|
||||
Me.cMenTreeConnect.ShortcutKeys = CType(((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.Shift) _
|
||||
Or System.Windows.Forms.Keys.C), System.Windows.Forms.Keys)
|
||||
Or System.Windows.Forms.Keys.C), System.Windows.Forms.Keys)
|
||||
Me.cMenTreeConnect.Size = New System.Drawing.Size(186, 22)
|
||||
Me.cMenTreeConnect.Text = "Connect"
|
||||
'
|
||||
@@ -348,8 +349,8 @@ Namespace UI
|
||||
'pnlConnections
|
||||
'
|
||||
Me.pnlConnections.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)
|
||||
Or System.Windows.Forms.AnchorStyles.Left) _
|
||||
Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
|
||||
Me.pnlConnections.Controls.Add(Me.PictureBox1)
|
||||
Me.pnlConnections.Controls.Add(Me.txtSearch)
|
||||
Me.pnlConnections.Controls.Add(Me.tvConnections)
|
||||
@@ -362,7 +363,7 @@ Namespace UI
|
||||
'
|
||||
Me.PictureBox1.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles)
|
||||
Me.PictureBox1.Image = Global.mRemoteNG.My.Resources.Resources.Search
|
||||
Me.PictureBox1.Location = New System.Drawing.Point(0, 411)
|
||||
Me.PictureBox1.Location = New System.Drawing.Point(2, 412)
|
||||
Me.PictureBox1.Name = "PictureBox1"
|
||||
Me.PictureBox1.Size = New System.Drawing.Size(16, 16)
|
||||
Me.PictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize
|
||||
@@ -372,13 +373,15 @@ Namespace UI
|
||||
'txtSearch
|
||||
'
|
||||
Me.txtSearch.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _
|
||||
Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
|
||||
Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
|
||||
Me.txtSearch.BorderStyle = System.Windows.Forms.BorderStyle.None
|
||||
Me.txtSearch.Location = New System.Drawing.Point(21, 412)
|
||||
Me.txtSearch.ForeColor = System.Drawing.SystemColors.GrayText
|
||||
Me.txtSearch.Location = New System.Drawing.Point(19, 413)
|
||||
Me.txtSearch.Name = "txtSearch"
|
||||
Me.txtSearch.Size = New System.Drawing.Size(169, 13)
|
||||
Me.txtSearch.Size = New System.Drawing.Size(171, 13)
|
||||
Me.txtSearch.TabIndex = 30
|
||||
Me.txtSearch.TabStop = False
|
||||
Me.txtSearch.Text = "Search"
|
||||
'
|
||||
'msMain
|
||||
'
|
||||
@@ -462,6 +465,14 @@ Namespace UI
|
||||
#Region "Form Stuff"
|
||||
Private Sub Tree_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
|
||||
ApplyLanguage()
|
||||
|
||||
AddHandler Themes.ThemeManager.ThemeChanged, AddressOf ApplyTheme
|
||||
ApplyTheme()
|
||||
|
||||
txtSearch.Multiline = True
|
||||
txtSearch.MinimumSize = New Size(0, 14)
|
||||
txtSearch.Size = New Size(txtSearch.Size.Width, 14)
|
||||
txtSearch.Multiline = False
|
||||
End Sub
|
||||
|
||||
Private Sub ApplyLanguage()
|
||||
@@ -495,9 +506,23 @@ Namespace UI
|
||||
mMenViewExpandAllFolders.Text = My.Language.strExpandAllFolders
|
||||
mMenViewCollapseAllFolders.Text = My.Language.strCollapseAllFolders
|
||||
mMenSortAscending.ToolTipText = My.Language.strSortAsc
|
||||
txtSearch.Text = Language.strSearchPrompt
|
||||
TabText = My.Language.strConnections
|
||||
Text = My.Language.strConnections
|
||||
End Sub
|
||||
|
||||
Public Sub ApplyTheme()
|
||||
With Themes.ThemeManager.ActiveTheme
|
||||
msMain.BackColor = .ToolbarBackgroundColor
|
||||
msMain.ForeColor = .ToolbarTextColor
|
||||
tvConnections.BackColor = .ConnectionsPanelBackgroundColor
|
||||
tvConnections.ForeColor = .ConnectionsPanelTextColor
|
||||
tvConnections.LineColor = .ConnectionsPanelTreeLineColor
|
||||
BackColor = .ToolbarBackgroundColor
|
||||
txtSearch.BackColor = .SearchBoxBackgroundColor
|
||||
txtSearch.ForeColor = .SearchBoxTextPromptColor
|
||||
End With
|
||||
End Sub
|
||||
#End Region
|
||||
|
||||
#Region "Public Methods"
|
||||
@@ -532,10 +557,11 @@ Namespace UI
|
||||
#Region "Private Methods"
|
||||
Private Sub FillImageList()
|
||||
Try
|
||||
Me.imgListTree.Images.Add(My.Resources.Root)
|
||||
Me.imgListTree.Images.Add(My.Resources.Folder)
|
||||
Me.imgListTree.Images.Add(My.Resources.Play)
|
||||
Me.imgListTree.Images.Add(My.Resources.Pause)
|
||||
imgListTree.Images.Add(Resources.Root)
|
||||
imgListTree.Images.Add(Resources.Folder)
|
||||
imgListTree.Images.Add(Resources.Play)
|
||||
imgListTree.Images.Add(Resources.Pause)
|
||||
imgListTree.Images.Add(Resources.PuttySessions)
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "FillImageList (UI.Window.Tree) failed" & vbNewLine & ex.Message, True)
|
||||
End Try
|
||||
@@ -561,22 +587,21 @@ Namespace UI
|
||||
Private Sub tvConnections_AfterSelect(ByVal sender As Object, ByVal e As System.Windows.Forms.TreeViewEventArgs) Handles tvConnections.AfterSelect
|
||||
Try
|
||||
Select Case mRemoteNG.Tree.Node.GetNodeType(e.Node)
|
||||
Case mRemoteNG.Tree.Node.Type.Connection
|
||||
Case mRemoteNG.Tree.Node.Type.Connection, mRemoteNG.Tree.Node.Type.PuttySession
|
||||
Windows.configForm.SetPropertyGridObject(e.Node.Tag)
|
||||
Windows.sessionsForm.CurrentHost = TryCast(e.Node.Tag, mRemoteNG.Connection.Info).Hostname
|
||||
Case mRemoteNG.Tree.Node.Type.Container
|
||||
Windows.configForm.SetPropertyGridObject(TryCast(e.Node.Tag, mRemoteNG.Container.Info).ConnectionInfo)
|
||||
Case mRemoteNG.Tree.Node.Type.Root
|
||||
Windows.configForm.SetPropertyGridObject(TryCast(e.Node.Tag, Container.Info).ConnectionInfo)
|
||||
Case mRemoteNG.Tree.Node.Type.Root, mRemoteNG.Tree.Node.Type.PuttyRoot
|
||||
Windows.configForm.SetPropertyGridObject(e.Node.Tag)
|
||||
Case Else
|
||||
Exit Sub
|
||||
End Select
|
||||
|
||||
Windows.configForm.pGrid_SelectedObjectChanged()
|
||||
Me.ShowHideTreeContextMenuItems(e.Node)
|
||||
Windows.sessionsForm.GetSessionsAuto()
|
||||
ShowHideTreeContextMenuItems(e.Node)
|
||||
Windows.sessionsForm.GetSessions(True)
|
||||
|
||||
App.Runtime.LastSelected = mRemoteNG.Tree.Node.GetConstantID(e.Node)
|
||||
LastSelected = mRemoteNG.Tree.Node.GetConstantID(e.Node)
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "tvConnections_AfterSelect (UI.Window.Tree) failed" & vbNewLine & ex.Message, True)
|
||||
End Try
|
||||
@@ -588,8 +613,10 @@ Namespace UI
|
||||
Me.tvConnections.SelectedNode = e.Node
|
||||
|
||||
If e.Button = System.Windows.Forms.MouseButtons.Left Then
|
||||
If My.Settings.SingleClickOnConnectionOpensIt And mRemoteNG.Tree.Node.GetNodeType(e.Node) = mRemoteNG.Tree.Node.Type.Connection Then
|
||||
App.Runtime.OpenConnection()
|
||||
If Settings.SingleClickOnConnectionOpensIt And _
|
||||
(mRemoteNG.Tree.Node.GetNodeType(e.Node) = mRemoteNG.Tree.Node.Type.Connection Or _
|
||||
mRemoteNG.Tree.Node.GetNodeType(e.Node) = mRemoteNG.Tree.Node.Type.PuttySession) Then
|
||||
OpenConnection()
|
||||
End If
|
||||
|
||||
If My.Settings.SingleClickSwitchesToOpenConnection And mRemoteNG.Tree.Node.GetNodeType(e.Node) = mRemoteNG.Tree.Node.Type.Connection Then
|
||||
@@ -602,8 +629,9 @@ Namespace UI
|
||||
End Sub
|
||||
|
||||
Private Sub tvConnections_NodeMouseDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.TreeNodeMouseClickEventArgs) Handles tvConnections.NodeMouseDoubleClick
|
||||
If mRemoteNG.Tree.Node.GetNodeType(mRemoteNG.Tree.Node.SelectedNode) = mRemoteNG.Tree.Node.Type.Connection Then
|
||||
App.Runtime.OpenConnection()
|
||||
If mRemoteNG.Tree.Node.GetNodeType(mRemoteNG.Tree.Node.SelectedNode) = mRemoteNG.Tree.Node.Type.Connection Or _
|
||||
mRemoteNG.Tree.Node.GetNodeType(mRemoteNG.Tree.Node.SelectedNode) = mRemoteNG.Tree.Node.Type.PuttySession Then
|
||||
OpenConnection()
|
||||
End If
|
||||
End Sub
|
||||
|
||||
@@ -631,111 +659,119 @@ Namespace UI
|
||||
Return False
|
||||
End Function
|
||||
|
||||
Private Sub ShowHideTreeContextMenuItems(ByVal tNode As TreeNode)
|
||||
Try
|
||||
Me.cMenTree.Enabled = True
|
||||
|
||||
If tNode Is Nothing Then
|
||||
Exit Sub
|
||||
Private Sub EnableMenuItemsRecursive(ByVal items As ToolStripItemCollection, Optional ByVal enable As Boolean = True)
|
||||
Dim menuItem As ToolStripMenuItem
|
||||
For Each item As ToolStripItem In items
|
||||
menuItem = TryCast(item, ToolStripMenuItem)
|
||||
If menuItem Is Nothing Then Continue For
|
||||
menuItem.Enabled = enable
|
||||
If menuItem.HasDropDownItems Then
|
||||
EnableMenuItemsRecursive(menuItem.DropDownItems, enable)
|
||||
End If
|
||||
Next
|
||||
End Sub
|
||||
|
||||
Select Case mRemoteNG.Tree.Node.GetNodeType(tNode)
|
||||
Private Sub ShowHideTreeContextMenuItems(ByVal selectedNode As TreeNode)
|
||||
If selectedNode Is Nothing Then Return
|
||||
|
||||
Try
|
||||
cMenTree.Enabled = True
|
||||
EnableMenuItemsRecursive(cMenTree.Items)
|
||||
|
||||
Select Case mRemoteNG.Tree.Node.GetNodeType(selectedNode)
|
||||
Case mRemoteNG.Tree.Node.Type.Connection
|
||||
Dim conI As mRemoteNG.Connection.Info = tNode.Tag
|
||||
Dim connectionInfo As mRemoteNG.Connection.Info = selectedNode.Tag
|
||||
|
||||
Me.cMenTreeConnect.Enabled = True
|
||||
Me.cMenTreeConnectWithOptions.Enabled = True
|
||||
|
||||
If TryCast(tNode.Tag, mRemoteNG.Connection.Info).OpenConnections.Count > 0 Then
|
||||
Me.cMenTreeDisconnect.Enabled = True
|
||||
Else
|
||||
Me.cMenTreeDisconnect.Enabled = False
|
||||
If connectionInfo.OpenConnections.Count = 0 Then
|
||||
cMenTreeDisconnect.Enabled = False
|
||||
End If
|
||||
|
||||
If conI.Protocol = mRemoteNG.Connection.Protocol.Protocols.SSH1 Or conI.Protocol = mRemoteNG.Connection.Protocol.Protocols.SSH2 Then
|
||||
Me.cMenTreeToolsTransferFile.Enabled = True
|
||||
Else
|
||||
Me.cMenTreeToolsTransferFile.Enabled = False
|
||||
If Not (connectionInfo.Protocol = mRemoteNG.Connection.Protocol.Protocols.SSH1 Or _
|
||||
connectionInfo.Protocol = mRemoteNG.Connection.Protocol.Protocols.SSH2) Then
|
||||
cMenTreeToolsTransferFile.Enabled = False
|
||||
End If
|
||||
|
||||
If conI.Protocol = mRemoteNG.Connection.Protocol.Protocols.RDP Then
|
||||
Me.cMenTreeConnectWithOptionsConnectInFullscreen.Enabled = True
|
||||
Me.cMenTreeConnectWithOptionsConnectToConsoleSession.Enabled = True
|
||||
ElseIf conI.Protocol = mRemoteNG.Connection.Protocol.Protocols.ICA Then
|
||||
Me.cMenTreeConnectWithOptionsConnectInFullscreen.Enabled = True
|
||||
Me.cMenTreeConnectWithOptionsConnectToConsoleSession.Enabled = False
|
||||
Else
|
||||
Me.cMenTreeConnectWithOptionsConnectInFullscreen.Enabled = False
|
||||
Me.cMenTreeConnectWithOptionsConnectToConsoleSession.Enabled = False
|
||||
If Not (connectionInfo.Protocol = mRemoteNG.Connection.Protocol.Protocols.RDP Or _
|
||||
connectionInfo.Protocol = mRemoteNG.Connection.Protocol.Protocols.ICA) Then
|
||||
cMenTreeConnectWithOptionsConnectInFullscreen.Enabled = False
|
||||
cMenTreeConnectWithOptionsConnectToConsoleSession.Enabled = False
|
||||
End If
|
||||
|
||||
Me.cMenTreeConnectWithOptionsChoosePanelBeforeConnecting.Enabled = True
|
||||
cMenTreeToolsImportExport.Enabled = False
|
||||
Case mRemoteNG.Tree.Node.Type.PuttySession
|
||||
Dim puttySessionInfo As mRemoteNG.Connection.PuttySession.Info = selectedNode.Tag
|
||||
|
||||
Me.cMenTreeToolsImportExport.Enabled = False
|
||||
cMenTreeAddConnection.Enabled = False
|
||||
cMenTreeAddFolder.Enabled = False
|
||||
|
||||
Me.cMenTreeToolsExternalApps.Enabled = True
|
||||
If puttySessionInfo.OpenConnections.Count = 0 Then
|
||||
cMenTreeDisconnect.Enabled = False
|
||||
End If
|
||||
|
||||
Me.cMenTreeDuplicate.Enabled = True
|
||||
Me.cMenTreeDelete.Enabled = True
|
||||
If Not (puttySessionInfo.Protocol = mRemoteNG.Connection.Protocol.Protocols.SSH1 Or _
|
||||
puttySessionInfo.Protocol = mRemoteNG.Connection.Protocol.Protocols.SSH2) Then
|
||||
cMenTreeToolsTransferFile.Enabled = False
|
||||
End If
|
||||
|
||||
Me.cMenTreeMoveUp.Enabled = True
|
||||
Me.cMenTreeMoveDown.Enabled = True
|
||||
cMenTreeConnectWithOptionsConnectInFullscreen.Enabled = False
|
||||
cMenTreeConnectWithOptionsConnectToConsoleSession.Enabled = False
|
||||
cMenTreeToolsImportExport.Enabled = False
|
||||
cMenTreeToolsSort.Enabled = False
|
||||
cMenTreeDuplicate.Enabled = False
|
||||
cMenTreeRename.Enabled = False
|
||||
cMenTreeDelete.Enabled = False
|
||||
cMenTreeMoveUp.Enabled = False
|
||||
cMenTreeMoveDown.Enabled = False
|
||||
Case mRemoteNG.Tree.Node.Type.Container
|
||||
Me.cMenTreeConnect.Enabled = True
|
||||
Me.cMenTreeConnectWithOptions.Enabled = True
|
||||
Me.cMenTreeConnectWithOptionsConnectInFullscreen.Enabled = False
|
||||
Me.cMenTreeConnectWithOptionsConnectToConsoleSession.Enabled = False
|
||||
Me.cMenTreeConnectWithOptionsChoosePanelBeforeConnecting.Enabled = True
|
||||
Me.cMenTreeDisconnect.Enabled = False
|
||||
cMenTreeConnectWithOptionsConnectInFullscreen.Enabled = False
|
||||
cMenTreeConnectWithOptionsConnectToConsoleSession.Enabled = False
|
||||
cMenTreeDisconnect.Enabled = False
|
||||
|
||||
For Each n As TreeNode In tNode.Nodes
|
||||
If TypeOf n.Tag Is mRemoteNG.Connection.Info Then
|
||||
Dim cI As mRemoteNG.Connection.Info = n.Tag
|
||||
If cI.OpenConnections.Count > 0 Then
|
||||
Me.cMenTreeDisconnect.Enabled = True
|
||||
Exit For
|
||||
End If
|
||||
Dim openConnections As Integer = 0
|
||||
Dim connectionInfo As mRemoteNG.Connection.Info
|
||||
For Each node As TreeNode In selectedNode.Nodes
|
||||
If TypeOf node.Tag Is mRemoteNG.Connection.Info Then
|
||||
connectionInfo = node.Tag
|
||||
openConnections = openConnections + connectionInfo.OpenConnections.Count
|
||||
End If
|
||||
Next
|
||||
If openConnections = 0 Then
|
||||
cMenTreeDisconnect.Enabled = False
|
||||
End If
|
||||
|
||||
Me.cMenTreeToolsTransferFile.Enabled = False
|
||||
|
||||
Me.cMenTreeToolsImportExport.Enabled = True
|
||||
Me.cMenTreeToolsImportExportExportmRemoteXML.Enabled = True
|
||||
Me.cMenTreeToolsImportExportImportFromAD.Enabled = True
|
||||
Me.cMenTreeToolsImportExportImportmRemoteXML.Enabled = True
|
||||
|
||||
Me.cMenTreeToolsExternalApps.Enabled = False
|
||||
|
||||
Me.cMenTreeDuplicate.Enabled = True
|
||||
Me.cMenTreeDelete.Enabled = True
|
||||
|
||||
Me.cMenTreeMoveUp.Enabled = True
|
||||
Me.cMenTreeMoveDown.Enabled = True
|
||||
cMenTreeToolsTransferFile.Enabled = False
|
||||
cMenTreeToolsExternalApps.Enabled = False
|
||||
Case mRemoteNG.Tree.Node.Type.Root
|
||||
Me.cMenTreeConnect.Enabled = False
|
||||
Me.cMenTreeConnectWithOptions.Enabled = False
|
||||
Me.cMenTreeConnectWithOptionsConnectInFullscreen.Enabled = False
|
||||
Me.cMenTreeConnectWithOptionsConnectToConsoleSession.Enabled = False
|
||||
Me.cMenTreeConnectWithOptionsChoosePanelBeforeConnecting.Enabled = False
|
||||
Me.cMenTreeDisconnect.Enabled = False
|
||||
|
||||
Me.cMenTreeToolsTransferFile.Enabled = False
|
||||
|
||||
Me.cMenTreeToolsImportExport.Enabled = True
|
||||
Me.cMenTreeToolsImportExportExportmRemoteXML.Enabled = True
|
||||
Me.cMenTreeToolsImportExportImportFromAD.Enabled = True
|
||||
Me.cMenTreeToolsImportExportImportmRemoteXML.Enabled = True
|
||||
|
||||
Me.cMenTreeToolsExternalApps.Enabled = False
|
||||
|
||||
Me.cMenTreeDuplicate.Enabled = False
|
||||
Me.cMenTreeDelete.Enabled = False
|
||||
|
||||
Me.cMenTreeMoveUp.Enabled = False
|
||||
Me.cMenTreeMoveDown.Enabled = False
|
||||
cMenTreeConnect.Enabled = False
|
||||
cMenTreeConnectWithOptions.Enabled = False
|
||||
cMenTreeConnectWithOptionsConnectInFullscreen.Enabled = False
|
||||
cMenTreeConnectWithOptionsConnectToConsoleSession.Enabled = False
|
||||
cMenTreeConnectWithOptionsChoosePanelBeforeConnecting.Enabled = False
|
||||
cMenTreeDisconnect.Enabled = False
|
||||
cMenTreeToolsTransferFile.Enabled = False
|
||||
cMenTreeToolsExternalApps.Enabled = False
|
||||
cMenTreeDuplicate.Enabled = False
|
||||
cMenTreeDelete.Enabled = False
|
||||
cMenTreeMoveUp.Enabled = False
|
||||
cMenTreeMoveDown.Enabled = False
|
||||
Case mRemoteNG.Tree.Node.Type.PuttyRoot
|
||||
cMenTreeAddConnection.Enabled = False
|
||||
cMenTreeAddFolder.Enabled = False
|
||||
cMenTreeConnect.Enabled = False
|
||||
cMenTreeConnectWithOptions.Enabled = False
|
||||
cMenTreeDisconnect.Enabled = False
|
||||
cMenTreeToolsTransferFile.Enabled = False
|
||||
cMenTreeConnectWithOptions.Enabled = False
|
||||
cMenTreeToolsImportExport.Enabled = False
|
||||
cMenTreeToolsSort.Enabled = False
|
||||
cMenTreeToolsExternalApps.Enabled = False
|
||||
cMenTreeDuplicate.Enabled = False
|
||||
cMenTreeRename.Enabled = False
|
||||
cMenTreeDelete.Enabled = False
|
||||
cMenTreeMoveUp.Enabled = False
|
||||
cMenTreeMoveDown.Enabled = False
|
||||
Case Else
|
||||
Me.cMenTree.Enabled = False
|
||||
cMenTree.Enabled = False
|
||||
End Select
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "ShowHideTreeContextMenuItems (UI.Window.Tree) failed" & vbNewLine & ex.Message, True)
|
||||
@@ -836,26 +872,23 @@ Namespace UI
|
||||
Dim pt As Point = CType(sender, TreeView).PointToClient(New Point(e.X, e.Y))
|
||||
Dim targetNode As TreeNode = selectedTreeview.GetNodeAt(pt)
|
||||
|
||||
'See if the targetNode is currently selected,
|
||||
'if so no need to validate again
|
||||
If Not (selectedTreeview.SelectedNode Is targetNode) Then
|
||||
'Select the node currently under the cursor
|
||||
selectedTreeview.SelectedNode = targetNode
|
||||
'Select the node currently under the cursor
|
||||
selectedTreeview.SelectedNode = targetNode
|
||||
|
||||
'Check that the selected node is not the dropNode and
|
||||
'also that it is not a child of the dropNode and
|
||||
'therefore an invalid target
|
||||
Dim dropNode As TreeNode = CType(e.Data.GetData("System.Windows.Forms.TreeNode"), TreeNode)
|
||||
'Check that the selected node is not the dropNode and
|
||||
'also that it is not a child of the dropNode and
|
||||
'therefore an invalid target
|
||||
Dim dropNode As TreeNode = CType(e.Data.GetData("System.Windows.Forms.TreeNode"), TreeNode)
|
||||
|
||||
Do Until targetNode Is Nothing
|
||||
If targetNode Is dropNode Then
|
||||
e.Effect = DragDropEffects.None
|
||||
Exit Sub
|
||||
End If
|
||||
|
||||
targetNode = targetNode.Parent
|
||||
Loop
|
||||
End If
|
||||
Dim puttyRootInfo As Root.PuttySessions.Info
|
||||
Do Until targetNode Is Nothing
|
||||
puttyRootInfo = TryCast(targetNode.Tag, Root.PuttySessions.Info)
|
||||
If puttyRootInfo IsNot Nothing Or targetNode Is dropNode Then
|
||||
e.Effect = DragDropEffects.None
|
||||
Return
|
||||
End If
|
||||
targetNode = targetNode.Parent
|
||||
Loop
|
||||
|
||||
'Currently selected node is a suitable target
|
||||
e.Effect = DragDropEffects.Move
|
||||
@@ -866,6 +899,17 @@ Namespace UI
|
||||
|
||||
Private Sub tvConnections_ItemDrag(ByVal sender As Object, ByVal e As System.Windows.Forms.ItemDragEventArgs) Handles tvConnections.ItemDrag
|
||||
Try
|
||||
Dim dragTreeNode As TreeNode = TryCast(e.Item, TreeNode)
|
||||
If dragTreeNode Is Nothing Then Return
|
||||
|
||||
If dragTreeNode.Tag Is Nothing Then Return
|
||||
If TypeOf dragTreeNode.Tag Is mRemoteNG.Connection.PuttySession.Info Or _
|
||||
Not (TypeOf dragTreeNode.Tag Is mRemoteNG.Connection.Info Or _
|
||||
TypeOf dragTreeNode.Tag Is Container.Info) Then
|
||||
tvConnections.SelectedNode = dragTreeNode
|
||||
Return
|
||||
End If
|
||||
|
||||
'Set the drag node and initiate the DragDrop
|
||||
DoDragDrop(e.Item, DragDropEffects.Move)
|
||||
Catch ex As Exception
|
||||
@@ -933,24 +977,24 @@ Namespace UI
|
||||
Me.ImportFromPortScan()
|
||||
End Sub
|
||||
|
||||
Private Sub mMenSortAscending_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mMenSortAscending.Click
|
||||
Me.tvConnections.BeginUpdate()
|
||||
mRemoteNG.Tree.Node.Sort(Me.tvConnections.Nodes.Item(0), Tools.Controls.TreeNodeSorter.SortType.Ascending)
|
||||
Me.tvConnections.EndUpdate()
|
||||
Private Sub mMenSortAscending_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles mMenSortAscending.Click
|
||||
tvConnections.BeginUpdate()
|
||||
mRemoteNG.Tree.Node.Sort(tvConnections.Nodes.Item(0), System.Windows.Forms.SortOrder.Ascending)
|
||||
tvConnections.EndUpdate()
|
||||
SaveConnectionsBG()
|
||||
End Sub
|
||||
|
||||
Private Sub cMenTreeToolsSortAscending_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cMenTreeToolsSortAscending.Click
|
||||
Me.tvConnections.BeginUpdate()
|
||||
mRemoteNG.Tree.Node.Sort(Me.tvConnections.SelectedNode, Tools.Controls.TreeNodeSorter.SortType.Ascending)
|
||||
Me.tvConnections.EndUpdate()
|
||||
Private Sub cMenTreeToolsSortAscending_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles cMenTreeToolsSortAscending.Click
|
||||
tvConnections.BeginUpdate()
|
||||
mRemoteNG.Tree.Node.Sort(tvConnections.SelectedNode, System.Windows.Forms.SortOrder.Ascending)
|
||||
tvConnections.EndUpdate()
|
||||
SaveConnectionsBG()
|
||||
End Sub
|
||||
|
||||
Private Sub cMenTreeToolsSortDescending_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cMenTreeToolsSortDescending.Click
|
||||
Me.tvConnections.BeginUpdate()
|
||||
mRemoteNG.Tree.Node.Sort(Me.tvConnections.SelectedNode, Tools.Controls.TreeNodeSorter.SortType.Descending)
|
||||
Me.tvConnections.EndUpdate()
|
||||
Private Sub cMenTreeToolsSortDescending_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles cMenTreeToolsSortDescending.Click
|
||||
tvConnections.BeginUpdate()
|
||||
mRemoteNG.Tree.Node.Sort(tvConnections.SelectedNode, System.Windows.Forms.SortOrder.Descending)
|
||||
tvConnections.EndUpdate()
|
||||
SaveConnectionsBG()
|
||||
End Sub
|
||||
|
||||
@@ -1004,7 +1048,7 @@ Namespace UI
|
||||
containerNode = containerNode.Parent
|
||||
End If
|
||||
|
||||
Dim newConnectionInfo As New Info()
|
||||
Dim newConnectionInfo As New mRemoteNG.Connection.Info()
|
||||
If mRemoteNG.Tree.Node.GetNodeType(containerNode) = mRemoteNG.Tree.Node.Type.Root Then
|
||||
newConnectionInfo.Inherit.TurnOffInheritanceCompletely()
|
||||
Else
|
||||
@@ -1043,7 +1087,7 @@ Namespace UI
|
||||
End If
|
||||
End If
|
||||
|
||||
newContainerInfo.ConnectionInfo = New Info(newContainerInfo)
|
||||
newContainerInfo.ConnectionInfo = New mRemoteNG.Connection.Info(newContainerInfo)
|
||||
|
||||
' We can only inherit from a container node, not the root node or connection nodes
|
||||
If mRemoteNG.Tree.Node.GetNodeType(parentNode) = mRemoteNG.Tree.Node.Type.Container Then
|
||||
@@ -1138,7 +1182,7 @@ Namespace UI
|
||||
|
||||
Private Sub ImportFromRDPFiles()
|
||||
Try
|
||||
App.Runtime.ImportConnectionsFromRDPFiles()
|
||||
App.Runtime.ImportConnectionsRdpFile()
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "ImportFromRDPFiles (UI.Window.Tree) failed" & vbNewLine & ex.Message, True)
|
||||
End Try
|
||||
@@ -1178,7 +1222,8 @@ Namespace UI
|
||||
|
||||
Private Sub StartExternalApp(ByVal ExtA As Tools.ExternalTool)
|
||||
Try
|
||||
If mRemoteNG.Tree.Node.GetNodeType(mRemoteNG.Tree.Node.SelectedNode) = mRemoteNG.Tree.Node.Type.Connection Then
|
||||
If mRemoteNG.Tree.Node.GetNodeType(mRemoteNG.Tree.Node.SelectedNode) = mRemoteNG.Tree.Node.Type.Connection Or _
|
||||
mRemoteNG.Tree.Node.GetNodeType(mRemoteNG.Tree.Node.SelectedNode) = mRemoteNG.Tree.Node.Type.PuttySession Then
|
||||
ExtA.Start(mRemoteNG.Tree.Node.SelectedNode.Tag)
|
||||
End If
|
||||
Catch ex As Exception
|
||||
@@ -1201,6 +1246,20 @@ Namespace UI
|
||||
#End Region
|
||||
|
||||
#Region "Search"
|
||||
Private Sub txtSearch_GotFocus(ByVal sender As Object, ByVal e As EventArgs) Handles txtSearch.GotFocus
|
||||
txtSearch.ForeColor = Themes.ThemeManager.ActiveTheme.SearchBoxTextColor
|
||||
If txtSearch.Text = Language.strSearchPrompt Then
|
||||
txtSearch.Text = ""
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub txtSearch_LostFocus(ByVal sender As Object, ByVal e As EventArgs) Handles txtSearch.LostFocus
|
||||
If txtSearch.Text = "" Then
|
||||
txtSearch.ForeColor = Themes.ThemeManager.ActiveTheme.SearchBoxTextPromptColor
|
||||
txtSearch.Text = Language.strSearchPrompt
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub txtSearch_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles txtSearch.KeyDown
|
||||
Try
|
||||
If e.KeyCode = Keys.Escape Then
|
||||
|
||||
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 System.Threading
|
||||
Imports System.IO
|
||||
Imports mRemoteNG.App.Runtime
|
||||
|
||||
Namespace UI
|
||||
Namespace Window
|
||||
Public Class Update
|
||||
Inherits UI.Window.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
|
||||
|
||||
Inherits Base
|
||||
#Region "Public Methods"
|
||||
Public Sub New(ByVal Panel As DockContent)
|
||||
Me.WindowType = Type.Update
|
||||
Me.DockPnl = Panel
|
||||
Me.InitializeComponent()
|
||||
App.Runtime.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
|
||||
Public Sub New(ByVal panel As DockContent)
|
||||
WindowType = Type.Update
|
||||
DockPnl = panel
|
||||
InitializeComponent()
|
||||
FontOverride(Me)
|
||||
End Sub
|
||||
#End Region
|
||||
|
||||
#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()
|
||||
|
||||
|
||||
Me.CheckForUpdate()
|
||||
CheckForUpdate()
|
||||
End Sub
|
||||
|
||||
Private Sub ApplyLanguage()
|
||||
btnCheckForUpdate.Text = My.Language.strCheckForUpdate
|
||||
lblChangeLogLabel.Text = My.Language.strLabelChangeLog
|
||||
btnDownload.Text = My.Language.strDownloadAndInstall
|
||||
lblCurrentVersionLabel.Text = My.Language.strAvailableVersion & ":"
|
||||
lblInstalledVersionLabel.Text = My.Language.strCurrentVersion & ":"
|
||||
lblAvailableVersion.Text = My.Language.strVersion
|
||||
lblCurrentVersion.Text = My.Language.strVersion
|
||||
TabText = My.Language.strMenuCheckForUpdates
|
||||
Text = My.Language.strMenuCheckForUpdates
|
||||
Text = Language.strMenuCheckForUpdates
|
||||
TabText = Language.strMenuCheckForUpdates
|
||||
btnCheckForUpdate.Text = Language.strCheckForUpdate
|
||||
btnDownload.Text = Language.strDownloadAndInstall
|
||||
lblChangeLogLabel.Text = Language.strLabelChangeLog
|
||||
lblInstalledVersion.Text = Language.strVersion
|
||||
lblInstalledVersionLabel.Text = String.Format("{0}:", Language.strCurrentVersion)
|
||||
lblLatestVersion.Text = Language.strVersion
|
||||
lblLatestVersionLabel.Text = String.Format("{0}:", Language.strAvailableVersion)
|
||||
End Sub
|
||||
|
||||
Private Sub btnCheckForUpdate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCheckForUpdate.Click
|
||||
Me.CheckForUpdate()
|
||||
Private Sub btnCheckForUpdate_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles btnCheckForUpdate.Click
|
||||
CheckForUpdate()
|
||||
End Sub
|
||||
|
||||
Private Sub btnDownload_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDownload.Click
|
||||
Me.DownloadUpdate()
|
||||
Private Sub btnDownload_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles btnDownload.Click
|
||||
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
|
||||
|
||||
Private Sub DownloadUpdate()
|
||||
Try
|
||||
If uD.DownloadUpdate(uD.curUI.DownloadUrl) = True Then
|
||||
Me.btnDownload.Enabled = False
|
||||
btnDownload.Enabled = False
|
||||
prgbDownload.Visible = True
|
||||
prgbDownload.Value = 0
|
||||
|
||||
If Me.IsUpdateDownloadHandlerDeclared = False Then
|
||||
AddHandler uD.DownloadProgressChanged, AddressOf DLProgressChanged
|
||||
AddHandler uD.DownloadCompleted, AddressOf DLCompleted
|
||||
Me.IsUpdateDownloadHandlerDeclared = True
|
||||
End If
|
||||
If _isUpdateDownloadHandlerDeclared = False Then
|
||||
AddHandler _appUpdate.DownloadUpdateProgressChangedEvent, AddressOf DownloadUpdateProgressChanged
|
||||
AddHandler _appUpdate.DownloadUpdateCompletedEvent, AddressOf DownloadUpdateCompleted
|
||||
_isUpdateDownloadHandlerDeclared = True
|
||||
End If
|
||||
|
||||
_appUpdate.DownloadUpdateAsync()
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strUpdateDownloadFailed & vbNewLine & ex.Message, True)
|
||||
MessageCollector.AddExceptionMessage(Language.strUpdateDownloadFailed, ex)
|
||||
End Try
|
||||
End Sub
|
||||
#End Region
|
||||
|
||||
#Region "Events"
|
||||
Private Sub DLProgressChanged(ByVal sender As Object, ByVal e As System.Net.DownloadProgressChangedEventArgs)
|
||||
Me.prgbDownload.Value = e.ProgressPercentage
|
||||
Private Sub DownloadUpdateProgressChanged(ByVal sender As Object, ByVal e As Net.DownloadProgressChangedEventArgs)
|
||||
prgbDownload.Value = e.ProgressPercentage
|
||||
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
|
||||
Me.btnDownload.Enabled = True
|
||||
btnDownload.Enabled = True
|
||||
prgbDownload.Visible = False
|
||||
|
||||
If Success = True Then
|
||||
If MessageBox.Show(My.Language.strUpdateDownloadComplete, My.Language.strMenuCheckForUpdates, MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) = System.Windows.Forms.DialogResult.OK Then
|
||||
Try
|
||||
App.Runtime.Shutdown.BeforeQuit()
|
||||
If e.Cancelled Then Return
|
||||
If e.Error IsNot Nothing Then Throw e.Error
|
||||
|
||||
Process.Start(uD.curUI.UpdateLocation)
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strUpdateStartFailed & vbNewLine & ex.Message)
|
||||
End Try
|
||||
If MessageBox.Show(Language.strUpdateDownloadComplete, Language.strMenuCheckForUpdates, MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) = System.Windows.Forms.DialogResult.OK Then
|
||||
Shutdown.BeforeQuit()
|
||||
|
||||
End
|
||||
Else
|
||||
Try
|
||||
File.Delete(uD.curUI.UpdateLocation)
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strUpdateDeleteFailed & vbNewLine & ex.Message)
|
||||
End Try
|
||||
End If
|
||||
Process.Start(_appUpdate.CurrentUpdateInfo.UpdateFilePath)
|
||||
System.Windows.Forms.Application.Exit()
|
||||
Return
|
||||
Else
|
||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strUpdateDownloadFailed)
|
||||
File.Delete(_appUpdate.CurrentUpdateInfo.UpdateFilePath)
|
||||
End If
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strUpdateDownloadCompleteFailed & vbNewLine & ex.Message, True)
|
||||
MessageCollector.AddExceptionMessage(Language.strUpdateDownloadCompleteFailed, ex)
|
||||
End Try
|
||||
End Sub
|
||||
#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 Namespace
|
||||
End Namespace
|
||||
@@ -1,7 +1,7 @@
|
||||
<?xml version="1.0"?>
|
||||
<configuration>
|
||||
<configSections>
|
||||
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net-net-1.0"/>
|
||||
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
|
||||
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<section name="mRemoteNG.My.MySettings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false"/>
|
||||
</sectionGroup>
|
||||
@@ -10,7 +10,7 @@
|
||||
</sectionGroup>
|
||||
</configSections>
|
||||
<log4net>
|
||||
<logger name="mRemoteNG.Log">
|
||||
<logger name="Logger">
|
||||
<level value="INFO"/>
|
||||
</logger>
|
||||
|
||||
@@ -80,7 +80,7 @@
|
||||
<value>True</value>
|
||||
</setting>
|
||||
<setting name="AutomaticallyGetSessionInfo" serializeAs="String">
|
||||
<value>True</value>
|
||||
<value>False</value>
|
||||
</setting>
|
||||
<setting name="LoadConsFromCustomLocation" serializeAs="String">
|
||||
<value>False</value>
|
||||
@@ -91,9 +91,6 @@
|
||||
<setting name="SaveConsOnExit" serializeAs="String">
|
||||
<value>True</value>
|
||||
</setting>
|
||||
<setting name="ConfirmExit" serializeAs="String">
|
||||
<value>True</value>
|
||||
</setting>
|
||||
<setting name="CheckForUpdatesOnStartup" serializeAs="String">
|
||||
<value>True</value>
|
||||
</setting>
|
||||
@@ -545,7 +542,7 @@
|
||||
<value>False</value>
|
||||
</setting>
|
||||
<setting name="ConfirmCloseConnection" serializeAs="String">
|
||||
<value>True</value>
|
||||
<value>4</value>
|
||||
</setting>
|
||||
<setting name="SQLDatabaseName" serializeAs="String">
|
||||
<value>mRemoteNG</value>
|
||||
@@ -565,12 +562,51 @@
|
||||
<setting name="AlwaysShowPanelTabs" serializeAs="String">
|
||||
<value>False</value>
|
||||
</setting>
|
||||
<setting name="IdentifyQuickConnectTabs" serializeAs="String">
|
||||
<value>False</value>
|
||||
</setting>
|
||||
<setting name="ThemeName" serializeAs="String">
|
||||
<value />
|
||||
</setting>
|
||||
<setting name="ShowConfigHelpText" serializeAs="String">
|
||||
<value>True</value>
|
||||
</setting>
|
||||
<setting name="PuttySavedSessionsName" serializeAs="String">
|
||||
<value />
|
||||
</setting>
|
||||
<setting name="PuttySavedSessionsPanel" serializeAs="String">
|
||||
<value />
|
||||
</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>
|
||||
</userSettings>
|
||||
<applicationSettings>
|
||||
<mRemoteNG.My.MySettings>
|
||||
<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 name="UpdateChannel" serializeAs="String">
|
||||
<value>release</value>
|
||||
</setting>
|
||||
<setting name="AnnouncementAddress" serializeAs="String">
|
||||
<value>https://update.mremoteng.org/announcement-beta.txt</value>
|
||||
</setting>
|
||||
</mRemoteNG.My.MySettings>
|
||||
</applicationSettings>
|
||||
|
||||
@@ -161,6 +161,7 @@
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>References\WeifenLuo.WinFormsUI.Docking.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="WindowsBase" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Import Include="Microsoft.VisualBasic" />
|
||||
@@ -174,7 +175,6 @@
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="ApplicationEvents.vb" />
|
||||
<Compile Include="App\App.Announcement.vb" />
|
||||
<Compile Include="App\App.Info.vb" />
|
||||
<Compile Include="App\App.Native.vb" />
|
||||
<Compile Include="App\App.Runtime.vb" />
|
||||
@@ -185,6 +185,16 @@
|
||||
<Compile Include="Config\Config.Settings.Load.vb" />
|
||||
<Compile Include="Config\Config.Settings.Providers.vb" />
|
||||
<Compile Include="Config\Config.Settings.Save.vb" />
|
||||
<Compile Include="Config\ConfirmClose.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="Root\PuttySessions.Info.vb" />
|
||||
<Compile Include="Themes\ThemeManager.vb" />
|
||||
<Compile Include="Themes\ThemeSerializer.vb" />
|
||||
<Compile Include="Connection\Connection.Icon.vb" />
|
||||
<Compile Include="Connection\Connection.Info.vb" />
|
||||
<Compile Include="Connection\Connection.InterfaceControl.Designer.vb">
|
||||
@@ -211,8 +221,9 @@
|
||||
<Compile Include="Connection\Connection.Protocol.SSH2.vb" />
|
||||
<Compile Include="Connection\Connection.Protocol.Telnet.vb" />
|
||||
<Compile Include="Connection\Connection.Protocol.VNC.vb" />
|
||||
<Compile Include="Connection\Connection.PuttySession.vb" />
|
||||
<Compile Include="Connection\Connection.QuickConnect.vb" />
|
||||
<Compile Include="Themes\ThemeInfo.vb" />
|
||||
<Compile Include="Tools\CommandLineArguments.vb" />
|
||||
<Compile Include="Container\Container.Info.vb" />
|
||||
<Compile Include="Container\Container.List.vb" />
|
||||
<Compile Include="Credential\Credential.Info.vb" />
|
||||
@@ -262,6 +273,9 @@
|
||||
<Compile Include="Security\Security.Crypt.vb" />
|
||||
<Compile Include="Security\Security.Impersonator.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">
|
||||
<DependentUpon>ReconnectGroup.vb</DependentUpon>
|
||||
</Compile>
|
||||
@@ -283,7 +297,10 @@
|
||||
<Compile Include="UI\UI.Window.ADImport.vb">
|
||||
<SubType>Form</SubType>
|
||||
</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>
|
||||
</Compile>
|
||||
<Compile Include="UI\UI.Window.Base.vb">
|
||||
@@ -323,6 +340,9 @@
|
||||
<Compile Include="UI\UI.Window.ScreenshotManager.vb">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="UI\UI.Window.Sessions.Designer.vb">
|
||||
<DependentUpon>UI.Window.Sessions.vb</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="UI\UI.Window.Sessions.vb">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
@@ -336,6 +356,9 @@
|
||||
<Compile Include="UI\UI.Window.UltraVNCSC.vb">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="UI\UI.Window.Update.Designer.vb">
|
||||
<DependentUpon>UI.Window.Update.vb</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="UI\UI.Window.Update.vb">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
@@ -364,9 +387,11 @@
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Language\Language.it.resx" />
|
||||
<EmbeddedResource Include="Language\Language.nb-NO.resx" />
|
||||
<EmbeddedResource Include="Language\Language.nl.resx">
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Language\Language.pt-BR.resx" />
|
||||
<EmbeddedResource Include="Language\Language.pt.resx" />
|
||||
<EmbeddedResource Include="Language\Language.resx">
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
@@ -405,8 +430,8 @@
|
||||
<DependentUpon>UI.Window.ADImport.vb</DependentUpon>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="UI\UI.Window.Announcment.resx">
|
||||
<DependentUpon>UI.Window.Announcment.vb</DependentUpon>
|
||||
<EmbeddedResource Include="UI\UI.Window.Announcement.resx">
|
||||
<DependentUpon>UI.Window.Announcement.vb</DependentUpon>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="UI\UI.Window.ComponentsCheck.resx">
|
||||
@@ -646,6 +671,7 @@
|
||||
<Content Include="Help\Update.htm">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<None Include="Resources\Images\PuttySessions.png" />
|
||||
<None Include="Notes\Help.txt" />
|
||||
<None Include="Notes\ICA.txt" />
|
||||
<None Include="Notes\Misc.txt" />
|
||||
@@ -804,6 +830,9 @@
|
||||
<Content Include="Icons\mRemoteNG.ico">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Icons\PuTTY.ico">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Icons\Remote Desktop.ico">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
|
||||
Reference in New Issue
Block a user