mirror of
https://github.com/mRemoteNG/mRemoteNG.git
synced 2026-02-19 07:09:36 +08:00
Compare commits
188 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 | ||
|
|
1af6fde986 | ||
|
|
83ec9e50b8 | ||
|
|
6d21c85d98 | ||
|
|
0ff00e59ba | ||
|
|
850a342e38 | ||
|
|
1caba06aca | ||
|
|
a115196cee | ||
|
|
5f451de94e | ||
|
|
a4921fc564 | ||
|
|
7d1d03e8cd | ||
|
|
92c18a45ba | ||
|
|
a61fb5c6d6 | ||
|
|
e1deaf73ea | ||
|
|
7d6d602477 | ||
|
|
b0439adee4 | ||
|
|
0a7c88a853 | ||
|
|
b735e6d3e4 | ||
|
|
960ecba12a | ||
|
|
3988820db9 | ||
|
|
22ea7055c9 | ||
|
|
edba3fbea0 | ||
|
|
51e4bc7eae | ||
|
|
3e680235ee | ||
|
|
d2459de700 | ||
|
|
f9f265b409 | ||
|
|
c218f0362e | ||
|
|
fb68ed099e | ||
|
|
01133b3d9f | ||
|
|
52461b758b | ||
|
|
3bc5ceede4 | ||
|
|
a3c9c667b4 | ||
|
|
73f71050a0 | ||
|
|
94d901ec4c | ||
|
|
9e67f36615 | ||
|
|
bf6f166d8f | ||
|
|
1de5ab43d6 | ||
|
|
39dd75dbde | ||
|
|
b509f75c17 | ||
|
|
877649b80a | ||
|
|
b5846f2286 | ||
|
|
80dd98e7fb | ||
|
|
7c3a349bd6 | ||
|
|
84d3f7d30b | ||
|
|
c29c5015d5 | ||
|
|
1f776fb9bf | ||
|
|
f90eb94484 | ||
|
|
80f35cea71 | ||
|
|
a12978967a | ||
|
|
8cce811ce5 | ||
|
|
adb45cec98 | ||
|
|
c09ea26a3c | ||
|
|
d71bf494df | ||
|
|
e82a9c5228 | ||
|
|
a7d976a0a7 | ||
|
|
d09727a9cd | ||
|
|
30c3b0111d | ||
|
|
4ea588d897 | ||
|
|
f7dfe0ecd0 | ||
|
|
323b3fb6de | ||
|
|
e6f1c947be | ||
|
|
a01663d2ca | ||
|
|
936f2e6655 | ||
|
|
67a6d60c62 | ||
|
|
85e6797c4f | ||
|
|
22322bc3ba | ||
|
|
b4a3b14334 | ||
|
|
a3ac44af55 | ||
|
|
d773f78ff5 | ||
|
|
76ee48269b | ||
|
|
35f442bad6 | ||
|
|
43c001b4ba | ||
|
|
182b097902 | ||
|
|
f841f4b41c | ||
|
|
67d07e5f0f | ||
|
|
6d15e3649e | ||
|
|
4fab4d91d5 | ||
|
|
61b70047c6 | ||
|
|
8c3cdc39fb | ||
|
|
a871074845 | ||
|
|
155bc07466 | ||
|
|
d32699008c | ||
|
|
28a8a3debd | ||
|
|
da50517113 | ||
|
|
3079b45ab1 | ||
|
|
62edfd2c50 | ||
|
|
becf48f347 | ||
|
|
568170d525 | ||
|
|
d853303bc6 | ||
|
|
5462242c39 | ||
|
|
cfa935df11 | ||
|
|
818708dfb4 | ||
|
|
3d26a1a028 | ||
|
|
5dcfb272d9 | ||
|
|
c634b0ccbc | ||
|
|
c957be8774 | ||
|
|
513356506b | ||
|
|
f7754d2371 | ||
|
|
aa9a642ade | ||
|
|
7868b7e76b |
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
|
||||
|
||||
|
||||
166
CHANGELOG.TXT
166
CHANGELOG.TXT
@@ -1,12 +1,160 @@
|
||||
1.70 (XXXX-XX-XX):
|
||||
Fix issue MR-77 - VerifyDatabaseVersion (Config.Connections.Save) failed. Version string portion was too short or too long.
|
||||
Fix issue MR-78 - Renaming Connections
|
||||
Fix issue MR-79 - MoveUp/Down item doesn't work + Sort button broken
|
||||
Fix issue MR-93 - Regional settings problem when using SQL connection in mRemoteNG
|
||||
Fix issue MR-97 - Integrate Dutch translation
|
||||
Fix issue MR-98 - Integrate Russian and Ukranian translations
|
||||
Fix issue MR-99 - Integrate Spanish translation
|
||||
Fix issue MR-131 - RD Gateway does not respect setting for use different credentials
|
||||
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.
|
||||
Fixed issue MR-344 - Move "Always show panel tabs" option
|
||||
Fixed issue MR-350 - VerifyDatabaseVersion (Config.Connections.Save) failed. Version string portion was too short or too long.
|
||||
Fixed issue MR-355 - Moving sub folders to top level causes property loss
|
||||
Fixed tabs not closing on double-click when the active tab is a PuTTY connection.
|
||||
|
||||
1.70 Release Candidate 2 (2013-02-25):
|
||||
Fixed issue MR-332 - Can't select different tab with one click after disconnecting existing tab
|
||||
Fixed issue MR-338 - PuTTYNG crashing on fresh install of mRemoteNG
|
||||
Re-enabled PuTTYNG integration enhancements on Windows 8
|
||||
|
||||
1.70 Release Candidate 1 (2013-02-22):
|
||||
Fixed issue MR-183 - Error trying to save connections when using SQL - Invalid column name _parentConstantId
|
||||
Fixed issue MR-225 - Tabs do not open in a panel until multiple panels are displayed.
|
||||
Fixed issue MR-229 - Integrated PuTTY doesn't work in Windows 8 RP
|
||||
Fixed issue MR-264 - Windows 8 support
|
||||
Fixed issue MR-317 - Difficulty right-clicking on Tab
|
||||
Fixed issue MR-318 - Wrong tab gets selected when tab names overflow on the tab bar
|
||||
Fixed issue MR-321 - New connection panel doesn't get panel header if its the only one or is moved
|
||||
Fixed issue MR-322 - Connection Button not listing servers
|
||||
Added option to always show panel tabs.
|
||||
Fixed "Decryption failed. Padding is invalid and cannot be removed." notification.
|
||||
Fixed KiTTY opening in a separate window when using a saved session.
|
||||
|
||||
1.70 Beta 2 (2013-02-18):
|
||||
Fixed issue MR-47 - Silent Installation Prompts for Language
|
||||
Fixed issue MR-54 - Error When disconnecting from SSL channel RDP
|
||||
Fixed issue MR-58 - Bug when duplicating connection in connection view
|
||||
Fixed issue MR-68 - Config Window Loses Options
|
||||
Fixed issue MR-71 - Minimizing mRemoteNG causes temporary re-size of Putty sessions (windows)
|
||||
Fixed issue MR-80 - Reconnect previous sessions
|
||||
Fixed issue MR-81 - Problem Duplicating Folder w/ Sub-Folders
|
||||
Fixed issue MR-85 - Microsoft .NET Framework warning
|
||||
Fixed issue MR-86 - Citrix GDI+ Error when screen is locked
|
||||
Fixed issue MR-96 - When pressing SHIFT+F4 to create a new connection inside a folder, the new connections doesn't inherit any properties from its parent
|
||||
Fixed issue MR-101 - Collapse all folders causes a NullReferenceException
|
||||
Fixed issue MR-165 - Can't close About window if it is the last tab
|
||||
Fixed issue MR-166 - Inheritance button is disabled on some connections
|
||||
Fixed issue MR-167 - Name and description of properties not show in inheritance list
|
||||
Fixed issue MR-171 - Inherit configuration not showing friendly names for each inherit component
|
||||
Fixed issue MR-172 - RDGatewayPassword is unencrypted in confCons.xml file
|
||||
Fixed issue MR-174 - Trailing Space on a Hostname/IP will cause the connection not to happen.
|
||||
Fixed issue MR-175 - Problem with focus when 2 or more PuTTY sessions opened
|
||||
Fixed issue MR-176 - Del key while editing connection name triggers 'Delete Connection'
|
||||
Fixed issue MR-178 - 3 different panels crashes all connections
|
||||
Fixed issue MR-181 - Sessions on startup
|
||||
Fixed issue MR-190 - Can't click on tab/session
|
||||
Fixed issue MR-196 - Cannot export list without usernames and passwords
|
||||
Fixed issue MR-199 - when using screen inside putty, screen becomes dead when reduce mremoteNG
|
||||
Fixed issue MR-202 - The Connection "Tab" show Ampersands as underscores.
|
||||
Fixed issue MR-214 - Hostname/IP reset
|
||||
Fixed issue MR-224 - Session tabs become un-clickable after duplicating a tab or opening a new one in the same panel
|
||||
Fixed issue MR-233 - Backslash at end of password prevents success of putty invocation and corresponding auto-logon
|
||||
Fixed issue MR-235 - Config file gets corrupted when leaving the password entry box with ESC
|
||||
Fixed issue MR-264 - Windows 8 support
|
||||
Fixed issue MR-277 - Inheritance configuration button not appear in configuration tab
|
||||
Fixed issue MR-284 - SSH: Text not showing properly
|
||||
Fixed issue MR-299 - mRemoteNG crashes while using remotely (Windows XP remote desktop)
|
||||
Fixed issue MR-306 - Fatal .NET exception on program start
|
||||
Fixed issue MR-313 - PuTTY window not maximized when loading from saved session
|
||||
mRemoteNG now requires .NET Framework 3.0 instead of 2.0.
|
||||
Updated translations.
|
||||
Added translations for Spanish (Argentina), Italian, Polish, Portuguese, Chinese (Simplified).
|
||||
Improved the use of Tab and Shift-Tab to cycle through entries in the Config grid.
|
||||
Improved loading of XML files from older versions of mRemote/mRemoteNG.
|
||||
|
||||
1.70 Beta 1 (2012-02-27):
|
||||
Fixed issue MR-77 - VerifyDatabaseVersion (Config.Connections.Save) failed. Version string portion was too short or too long.
|
||||
Fixed issue MR-78 - Renaming Connections
|
||||
Fixed issue MR-79 - MoveUp/Down item doesn't work + Sort button broken
|
||||
Fixed issue MR-93 - Regional settings problem when using SQL connection in mRemoteNG
|
||||
Fixed issue MR-97 - Integrate Dutch translation
|
||||
Fixed issue MR-98 - Integrate Russian and Ukranian translations
|
||||
Fixed issue MR-99 - Integrate Spanish translation
|
||||
Fixed issue MR-131 - RD Gateway does not respect setting for use different credentials
|
||||
Added compatibility check for "Use FIPS compliant algorithms" security setting.
|
||||
Improved reporting of errors when encrypting and decrypting connection files.
|
||||
Added partial Polish translation.
|
||||
|
||||
14
CREDITS.TXT
14
CREDITS.TXT
@@ -13,6 +13,15 @@ Andreas Rehm
|
||||
David Vidmar
|
||||
|
||||
|
||||
Translators
|
||||
===========
|
||||
|
||||
Eugenio "Ryo567" Mart<72>nez
|
||||
Mathieu Pape
|
||||
Emanuel Silva
|
||||
Robert Siwiec
|
||||
|
||||
|
||||
Included Source Code
|
||||
====================
|
||||
|
||||
@@ -21,6 +30,11 @@ Copyright
|
||||
MIT License
|
||||
http://www.codeproject.com/KB/recipes/command_line.aspx
|
||||
|
||||
DotNetVer
|
||||
Copyright <20> 2010 David Grinberg
|
||||
Copyright <20> 2010-2011 Brandon Hansen
|
||||
http://nsis.sourceforge.net/DotNetVer
|
||||
|
||||
|
||||
Included Components
|
||||
===================
|
||||
|
||||
Binary file not shown.
BIN
Installer/Dependencies/PuTTYNG.pdb
Normal file
BIN
Installer/Dependencies/PuTTYNG.pdb
Normal file
Binary file not shown.
296
Installer/DotNetVer.nsh
Normal file
296
Installer/DotNetVer.nsh
Normal file
@@ -0,0 +1,296 @@
|
||||
; ---------------------
|
||||
; DotNetVer.nsh
|
||||
; Written by: David Grinberg
|
||||
; Homepage: http://ontheperiphery.veraida.com/
|
||||
; Updated By: Brandon Hansen (http://www.remotehams.com/)
|
||||
; ---------------------
|
||||
;
|
||||
; LogicLib extensions for checking Microsoft .NET Framework versions and service packs.
|
||||
;
|
||||
; Latests Updates by Brandon Hansen, KG6YPI (RemoteHams.com)
|
||||
; Dec 26, 2011 - .NET Framework 4.0 detection fixes - client profile not being found
|
||||
; Dec 07, 2010 - .NET Framework 4.0 detection added by Brandon Hansen (KG6YPI)
|
||||
;
|
||||
; Usage examples:
|
||||
;
|
||||
; ${If} ${HasDotNet4.0}
|
||||
; DetailPrint "Microsoft .NET Framework 4.0 installed."
|
||||
; ${If} ${DOTNETVER_4_0} AtLeastDotNetServicePack 1
|
||||
; DetailPrint "Microsoft .NET Framework 4.0 is at least SP1."
|
||||
; ${Else}
|
||||
; DetailPrint "Microsoft .NET Framework 4.0 SP1 not installed."
|
||||
; ${EndIf}
|
||||
; ${If} ${DOTNETVER_4_0} HasDotNetClientProfile 1
|
||||
; DetailPrint "Microsoft .NET Framework 4.0 (Client Profile) available."
|
||||
; ${EndIf}
|
||||
; ${If} ${DOTNETVER_4_0} HasDotNetFullProfile 1
|
||||
; DetailPrint "Microsoft .NET Framework 4.0 (Full Profile) available."
|
||||
; ${EndIf}
|
||||
; ${If} ${DOTNETVER_4_0} HasDotNetFullProfile 0
|
||||
; DetailPrint "Microsoft .NET Framework 4.0 (Full Profile) not available."
|
||||
; ${EndIf}
|
||||
; ${EndIf}
|
||||
|
||||
|
||||
!verbose push
|
||||
!verbose 3
|
||||
|
||||
!ifndef ___DOTNETVER__NSH___
|
||||
!define ___DOTNETVER__NSH___
|
||||
|
||||
!include LogicLib.nsh
|
||||
!include Util.nsh
|
||||
|
||||
# constants
|
||||
|
||||
!define DOTNETVER_1_0 "1.0"
|
||||
!define DOTNETVER_1_1 "1.1"
|
||||
!define DOTNETVER_2_0 "2.0"
|
||||
!define DOTNETVER_3_0 "3.0"
|
||||
!define DOTNETVER_3_5 "3.5"
|
||||
!define DOTNETVER_4_0 "4.0"
|
||||
|
||||
# variable declaration
|
||||
|
||||
Var /GLOBAL __DONTNET_FOUNDVER
|
||||
|
||||
!macro __DotNetVer_DeclareVars
|
||||
!ifndef __DOTNETVER_VARS_DECLARED
|
||||
!define __DOTNETVER_VARS_DECLARED
|
||||
Var /GLOBAL __DOTNET_1.0
|
||||
Var /GLOBAL __DOTNET_1.1
|
||||
Var /GLOBAL __DOTNET_2.0
|
||||
Var /GLOBAL __DOTNET_3.0
|
||||
Var /GLOBAL __DOTNET_3.5
|
||||
Var /GLOBAL __DOTNET_4.0
|
||||
|
||||
Var /GLOBAL __DOTNETVER_1.0_SP
|
||||
Var /GLOBAL __DOTNETVER_1.1_SP
|
||||
Var /GLOBAL __DOTNETVER_2.0_SP
|
||||
Var /GLOBAL __DOTNETVER_3.0_SP
|
||||
Var /GLOBAL __DOTNETVER_3.5_SP
|
||||
Var /GLOBAL __DOTNETVER_4.0_SP
|
||||
|
||||
Var /GLOBAL __DOTNET_1.0_CLIENT
|
||||
Var /GLOBAL __DOTNET_1.1_CLIENT
|
||||
Var /GLOBAL __DOTNET_2.0_CLIENT
|
||||
Var /GLOBAL __DOTNET_3.0_CLIENT
|
||||
Var /GLOBAL __DOTNET_3.5_CLIENT
|
||||
Var /GLOBAL __DOTNET_4.0_CLIENT
|
||||
|
||||
Var /GLOBAL __DOTNET_1.0_FULL
|
||||
Var /GLOBAL __DOTNET_1.1_FULL
|
||||
Var /GLOBAL __DOTNET_2.0_FULL
|
||||
Var /GLOBAL __DOTNET_3.0_FULL
|
||||
Var /GLOBAL __DOTNET_3.5_FULL
|
||||
Var /GLOBAL __DOTNET_4.0_FULL
|
||||
|
||||
StrCpy $__DOTNET_1.0 0
|
||||
StrCpy $__DOTNET_1.1 0
|
||||
StrCpy $__DOTNET_2.0 0
|
||||
StrCpy $__DOTNET_3.0 0
|
||||
StrCpy $__DOTNET_3.5 0
|
||||
StrCpy $__DOTNET_4.0 0
|
||||
|
||||
StrCpy $__DOTNETVER_1.0_SP 0
|
||||
StrCpy $__DOTNETVER_1.1_SP 0
|
||||
StrCpy $__DOTNETVER_2.0_SP 0
|
||||
StrCpy $__DOTNETVER_3.0_SP 0
|
||||
StrCpy $__DOTNETVER_3.5_SP 0
|
||||
StrCpy $__DOTNETVER_4.0_SP 0
|
||||
|
||||
StrCpy $__DOTNET_1.0_CLIENT 0
|
||||
StrCpy $__DOTNET_1.1_CLIENT 0
|
||||
StrCpy $__DOTNET_2.0_CLIENT 0
|
||||
StrCpy $__DOTNET_3.0_CLIENT 0
|
||||
StrCpy $__DOTNET_3.5_CLIENT 0
|
||||
StrCpy $__DOTNET_4.0_CLIENT 0
|
||||
|
||||
StrCpy $__DOTNET_1.0_FULL 0
|
||||
StrCpy $__DOTNET_1.1_FULL 0
|
||||
StrCpy $__DOTNET_2.0_FULL 0
|
||||
StrCpy $__DOTNET_3.0_FULL 0
|
||||
StrCpy $__DOTNET_3.5_FULL 0
|
||||
StrCpy $__DOTNET_4.0_FULL 0
|
||||
|
||||
!endif
|
||||
!macroend
|
||||
|
||||
|
||||
# lazy initialization macro
|
||||
|
||||
!macro __DotNetVer_InitVars
|
||||
# only calculate version once
|
||||
StrCmp $__DONTNET_FOUNDVER "" dotnetver.noveryet
|
||||
Return
|
||||
|
||||
dotnetver.noveryet:
|
||||
!insertmacro __DotNetVer_DeclareVars
|
||||
|
||||
Push $0 ;registry count
|
||||
Push $1 ;registry key
|
||||
Push $2 ;version number
|
||||
Push $3 ;installed
|
||||
Push $4 ;service pack number
|
||||
Push $8 ;strLen helper var
|
||||
|
||||
StrCpy $0 0
|
||||
|
||||
dotnetver.startenum:
|
||||
|
||||
EnumRegKey $1 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP" $0
|
||||
StrCmp $1 "" dotnetver.done
|
||||
|
||||
IntOp $0 $0 + 1
|
||||
|
||||
StrCpy $2 $1 1 0
|
||||
StrCmp $2 "v" +1 dotnetver.startenum
|
||||
StrCpy $2 $1 3 1
|
||||
|
||||
; Check for .NET 1.0 to 3.5
|
||||
ReadRegDWORD $3 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\$1" "Install"
|
||||
ReadRegDWORD $4 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\$1" "SP"
|
||||
IntCmp $3 1 dotnetcheck.skipalt
|
||||
; Alternate check for versions that don't set the Install key
|
||||
ReadRegDWORD $3 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\$1\Setup" "InstallSuccess"
|
||||
dotnetcheck.skipalt:
|
||||
; This is a sanity check that works on .NET 1.0 to 3.5
|
||||
; if it fails check for dotnet 4
|
||||
IntCmp $3 0 dotnetcheck.40
|
||||
StrCmp $2 ${DOTNETVER_1_0} dotnetver.10
|
||||
StrCmp $2 ${DOTNETVER_1_1} dotnetver.11
|
||||
StrCmp $2 ${DOTNETVER_2_0} dotnetver.20
|
||||
StrCmp $2 ${DOTNETVER_3_0} dotnetver.30
|
||||
StrCmp $2 ${DOTNETVER_3_5} dotnetver.35
|
||||
dotnetcheck.40:
|
||||
StrCmp $2 ${DOTNETVER_4_0} dotnetver.40
|
||||
StrCmp $2 "4" dotnetver.40
|
||||
|
||||
Goto dotnetver.startenum
|
||||
|
||||
dotnetver.10:
|
||||
StrCpy $__DOTNET_1.0 1
|
||||
StrCpy $__DOTNETVER_1.0_SP $4
|
||||
StrCpy $__DOTNET_1.0_FULL 1
|
||||
Goto dotnetver.startenum
|
||||
dotnetver.11:
|
||||
StrCpy $__DOTNET_1.1 1
|
||||
StrCpy $__DOTNETVER_1.1_SP $4
|
||||
StrCpy $__DOTNET_1.1_FULL 1
|
||||
Goto dotnetver.startenum
|
||||
dotnetver.20:
|
||||
StrCpy $__DOTNET_2.0 1
|
||||
StrCpy $__DOTNETVER_2.0_SP $4
|
||||
StrCpy $__DOTNET_2.0_FULL 1
|
||||
Goto dotnetver.startenum
|
||||
dotnetver.30:
|
||||
StrCpy $__DOTNET_3.0 1
|
||||
StrCpy $__DOTNETVER_3.0_SP $4
|
||||
StrCpy $__DOTNET_3.0_FULL 1
|
||||
Goto dotnetver.startenum
|
||||
dotnetver.35:
|
||||
StrCpy $__DOTNET_3.5 1
|
||||
StrCpy $__DOTNETVER_3.5_SP $4
|
||||
StrCpy $__DOTNET_3.5_FULL 1
|
||||
Goto dotnetver.startenum
|
||||
dotnetver.40:
|
||||
; Check for .NET 4.0 (Full Profile)
|
||||
ReadRegDWORD $3 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full" "Install"
|
||||
ReadRegDWORD $4 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full" "SP"
|
||||
StrLen $8 $3
|
||||
IntCmp $8 0 dotnetcheck.40c
|
||||
IntCmp $3 0 dotnetcheck.40c
|
||||
StrCmp $2 ${DOTNETVER_4_0} dotnetver.40_Full
|
||||
StrCmp $2 "4" dotnetver.40_Full
|
||||
dotnetcheck.40c:
|
||||
; Check for .NET 4.0 (Client Profile)
|
||||
ReadRegDWORD $3 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Client" "Install"
|
||||
ReadRegDWORD $4 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Client" "SP"
|
||||
StrLen $8 $3
|
||||
IntCmp $8 0 dotnetver.startenum
|
||||
IntCmp $3 0 dotnetver.startenum
|
||||
StrCmp $2 ${DOTNETVER_4_0} dotnetver.40_Client
|
||||
StrCmp $2 "4" dotnetver.40_Client
|
||||
Goto dotnetver.startenum
|
||||
dotnetver.40_Full:
|
||||
StrCpy $__DOTNET_4.0 1
|
||||
StrCpy $__DOTNETVER_4.0_SP $4
|
||||
StrCpy $__DOTNET_4.0_FULL 1
|
||||
Goto dotnetcheck.40c ; continue looking for other profiles
|
||||
dotnetver.40_Client:
|
||||
StrCpy $__DOTNET_4.0 1
|
||||
StrCpy $__DOTNETVER_4.0_SP $4
|
||||
StrCpy $__DOTNET_4.0_CLIENT 1
|
||||
Goto dotnetver.startenum
|
||||
|
||||
dotnetver.done:
|
||||
|
||||
StrCpy $__DONTNET_FOUNDVER "1"
|
||||
|
||||
Pop $8
|
||||
Pop $4
|
||||
Pop $3
|
||||
Pop $2
|
||||
Pop $1
|
||||
Pop $0
|
||||
!macroend
|
||||
|
||||
!macro _HasDotNet _a _b _t _f
|
||||
${CallArtificialFunction} __DotNetVer_InitVars
|
||||
|
||||
!insertmacro _= `$__DOTNET_${_b}` `1` `${_t}` `${_f}`
|
||||
!macroend
|
||||
|
||||
!macro __DotNetVer_DefineTest Ver
|
||||
!define HasDotNet${Ver} `"" HasDotNet ${Ver}`
|
||||
!macroend
|
||||
|
||||
!insertmacro __DotNetVer_DefineTest ${DOTNETVER_1_0}
|
||||
!insertmacro __DotNetVer_DefineTest ${DOTNETVER_1_1}
|
||||
!insertmacro __DotNetVer_DefineTest ${DOTNETVER_2_0}
|
||||
!insertmacro __DotNetVer_DefineTest ${DOTNETVER_3_0}
|
||||
!insertmacro __DotNetVer_DefineTest ${DOTNETVER_3_5}
|
||||
!insertmacro __DotNetVer_DefineTest ${DOTNETVER_4_0}
|
||||
|
||||
!macro _AtLeastDotNetServicePack _a _b _t _f
|
||||
${CallArtificialFunction} __DotNetVer_InitVars
|
||||
|
||||
!insertmacro _>= `$__DOTNETVER_${_a}_SP` `${_b}` `${_t}` `${_f}`
|
||||
!macroend
|
||||
!define AtLeastDotNetServicePack `AtLeastDotNetServicePack`
|
||||
|
||||
|
||||
!macro _AtMostDotNetServicePack _a _b _t _f
|
||||
${CallArtificialFunction} __DotNetVer_InitVars
|
||||
|
||||
!insertmacro _<= `$__DOTNETVER_${_a}_SP` `${_b}` `${_t}` `${_f}`
|
||||
!macroend
|
||||
!define AtMostDotNetServicePack `AtMostDotNetServicePack`
|
||||
|
||||
|
||||
!macro _IsDotNetServicePack _a _b _t _f
|
||||
${CallArtificialFunction} __DotNetVer_InitVars
|
||||
|
||||
!insertmacro _= `$__DOTNETVER_${_a}_SP` `${_b}` `${_t}` `${_f}`
|
||||
!macroend
|
||||
!define IsDotNetServicePack `IsDotNetServicePack`
|
||||
|
||||
!macro _HasDotNetClientProfile _a _b _t _f
|
||||
${CallArtificialFunction} __DotNetVer_InitVars
|
||||
|
||||
!insertmacro _= `$__DOTNET_${_a}_CLIENT` `${_b}` `${_t}` `${_f}`
|
||||
!macroend
|
||||
!define HasDotNetClientProfile `HasDotNetClientProfile`
|
||||
|
||||
!macro _HasDotNetFullProfile _a _b _t _f
|
||||
${CallArtificialFunction} __DotNetVer_InitVars
|
||||
|
||||
!insertmacro _= `$__DOTNET_${_a}_FULL` `${_b}` `${_t}` `${_f}`
|
||||
!macroend
|
||||
!define HasDotNetFullProfile `HasDotNetFullProfile`
|
||||
|
||||
# done
|
||||
|
||||
!endif # !___DOTNETVER__NSH___
|
||||
|
||||
!verbose pop
|
||||
@@ -10,7 +10,7 @@ LangString InstallerLanguage ${LANG_CZECH} "Installer Language"
|
||||
LangString SelectInstallerLanguage ${LANG_CZECH} "Please select the language of the installer"
|
||||
|
||||
; Requires .NET Framework
|
||||
LangString RequiresNetFramework ${LANG_CZECH} "mRemoteNG requires Microsoft .NET Framework 2.0."
|
||||
LangString RequiresNetFramework ${LANG_CZECH} "mRemoteNG requires Microsoft .NET Framework 3.0."
|
||||
|
||||
; User needs to be Admin
|
||||
LangString RequiresAdminUser ${LANG_CZECH} "You must be a member of the 'Power Users' or 'Administrators' group to install mRemoteNG."
|
||||
|
||||
@@ -10,7 +10,7 @@ LangString InstallerLanguage ${LANG_DUTCH} "Installer Language"
|
||||
LangString SelectInstallerLanguage ${LANG_DUTCH} "Please select the language of the installer"
|
||||
|
||||
; Requires .NET Framework
|
||||
LangString RequiresNetFramework ${LANG_DUTCH} "mRemoteNG requires Microsoft .NET Framework 2.0."
|
||||
LangString RequiresNetFramework ${LANG_DUTCH} "mRemoteNG requires Microsoft .NET Framework 3.0."
|
||||
|
||||
; User needs to be Admin
|
||||
LangString RequiresAdminUser ${LANG_DUTCH} "You must be a member of the 'Power Users' or 'Administrators' group to install mRemoteNG."
|
||||
|
||||
@@ -10,7 +10,7 @@ LangString InstallerLanguage ${LANG_ENGLISH} "Installer Language"
|
||||
LangString SelectInstallerLanguage ${LANG_ENGLISH} "Please select the language of the installer"
|
||||
|
||||
; Requires .NET Framework
|
||||
LangString RequiresNetFramework ${LANG_ENGLISH} "mRemoteNG requires Microsoft .NET Framework 2.0."
|
||||
LangString RequiresNetFramework ${LANG_ENGLISH} "mRemoteNG requires Microsoft .NET Framework 3.0."
|
||||
|
||||
; User needs to be Admin
|
||||
LangString RequiresAdminUser ${LANG_ENGLISH} "You must be a member of the 'Power Users' or 'Administrators' group to install mRemoteNG."
|
||||
|
||||
@@ -10,7 +10,7 @@ LangString InstallerLanguage ${LANG_FRENCH} "Installer Language"
|
||||
LangString SelectInstallerLanguage ${LANG_FRENCH} "Please select the language of the installer"
|
||||
|
||||
; Requires .NET Framework
|
||||
LangString RequiresNetFramework ${LANG_FRENCH} "mRemoteNG requires Microsoft .NET Framework 2.0."
|
||||
LangString RequiresNetFramework ${LANG_FRENCH} "mRemoteNG requires Microsoft .NET Framework 3.0."
|
||||
|
||||
; User needs to be Admin
|
||||
LangString RequiresAdminUser ${LANG_FRENCH} "You must be a member of the 'Power Users' or 'Administrators' group to install mRemoteNG."
|
||||
|
||||
@@ -10,7 +10,7 @@ LangString InstallerLanguage ${LANG_GERMAN} "Installationsprogamm Sprache"
|
||||
LangString SelectInstallerLanguage ${LANG_GERMAN} "Bitte w<>hlen Sie die Sprache f<>r das Installationsprogramm"
|
||||
|
||||
; Requires .NET Framework
|
||||
LangString RequiresNetFramework ${LANG_GERMAN} "mRemoteNG ben<65>tigt das Microsoft .NET Framework 2.0."
|
||||
LangString RequiresNetFramework ${LANG_GERMAN} "mRemoteNG ben<65>tigt das Microsoft .NET Framework 3.0."
|
||||
|
||||
; User needs to be Admin
|
||||
LangString RequiresAdminUser ${LANG_GERMAN} "Sie m<>ssen Mitglied der Grupper 'Power Users' or 'Administratoren' sein, damit Sie mRemoteNG installieren k<>nnen."
|
||||
|
||||
@@ -10,7 +10,7 @@ LangString InstallerLanguage ${LANG_POLISH} "Installer Language"
|
||||
LangString SelectInstallerLanguage ${LANG_POLISH} "Please select the language of the installer"
|
||||
|
||||
; Requires .NET Framework
|
||||
LangString RequiresNetFramework ${LANG_POLISH} "mRemoteNG requires Microsoft .NET Framework 2.0."
|
||||
LangString RequiresNetFramework ${LANG_POLISH} "mRemoteNG requires Microsoft .NET Framework 3.0."
|
||||
|
||||
; User needs to be Admin
|
||||
LangString RequiresAdminUser ${LANG_POLISH} "You must be a member of the 'Power Users' or 'Administrators' group to install mRemoteNG."
|
||||
|
||||
@@ -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 2.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"
|
||||
|
||||
@@ -11,7 +11,7 @@ LangString InstallerLanguage ${LANG_THAI} "ภาษาสำหรับกา
|
||||
LangString SelectInstallerLanguage ${LANG_THAI} "กรุณาเลือกภาษาสำหรับการติดตั้ง"
|
||||
|
||||
; Requires .NET Framework
|
||||
LangString RequiresNetFramework ${LANG_THAI} "mRemoteNG มีความต้องการ Microsoft .NET Framework 2.0. เป็นพื้นฐาน"
|
||||
LangString RequiresNetFramework ${LANG_THAI} "mRemoteNG มีความต้องการ Microsoft .NET Framework 3.0. เป็นพื้นฐาน"
|
||||
|
||||
; User needs to be Admin
|
||||
LangString RequiresAdminUser ${LANG_THAI} "คุณต้องเป็นสมาชิกในกลุ่มของ 'Power Users' หรือ 'Administrators' เพื่อการติดตั้ง mRemoteNG"
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
!include "WordFunc.nsh"
|
||||
!insertmacro VersionCompare
|
||||
|
||||
!include "DotNetVer.nsh"
|
||||
!include "..\Release\Version.nsh"
|
||||
|
||||
; This will be passed in using the /D switch by BUILD.CMD
|
||||
@@ -13,9 +14,6 @@
|
||||
!define PRODUCT_VERSION_TAGGED "${PRODUCT_VERSION_SHORT}"
|
||||
!endif
|
||||
|
||||
; Global Variables
|
||||
Var InstallDotNET
|
||||
|
||||
; Basic Config
|
||||
Name "mRemoteNG ${PRODUCT_VERSION_FRIENDLY}"
|
||||
OutFile "..\Release\mRemoteNG-Installer-${PRODUCT_VERSION_TAGGED}.exe"
|
||||
@@ -29,7 +27,7 @@ VIProductVersion ${PRODUCT_VERSION}
|
||||
VIAddVersionKey "CompanyName" "Next Generation Software"
|
||||
VIAddVersionKey "ProductName" "mRemoteNG"
|
||||
VIAddVersionKey "ProductVersion" ${PRODUCT_VERSION}
|
||||
VIAddVersionKey "LegalCopyright" "Copyright © 2007-2009 Felix Deimel, 2010-2011 Riley McArdle"
|
||||
VIAddVersionKey "LegalCopyright" "Copyright © 2007-2009 Felix Deimel, 2010-2013 Riley McArdle"
|
||||
VIAddVersionKey "FileDescription" "mRemoteNG ${PRODUCT_VERSION_FRIENDLY} Installer"
|
||||
VIAddVersionKey "FileVersion" ${PRODUCT_VERSION}
|
||||
|
||||
@@ -96,7 +94,8 @@ Function .onInit
|
||||
Win9x:
|
||||
doit:
|
||||
# We can install
|
||||
Call SelectLanguage
|
||||
IfSilent +2
|
||||
Call SelectLanguage
|
||||
Goto end
|
||||
noop:
|
||||
MessageBox MB_OK "$(RequiresAdminUser)"
|
||||
@@ -132,22 +131,7 @@ Function SelectLanguage
|
||||
Abort
|
||||
|
||||
; Check .NET version
|
||||
StrCpy $InstallDotNET "No"
|
||||
Call GetDotNETVersion
|
||||
Pop $0
|
||||
|
||||
${If} $0 == "not found"
|
||||
StrCpy $InstallDotNET "Yes"
|
||||
${EndIf}
|
||||
|
||||
StrCpy $0 $0 "" 1 # skip "v"
|
||||
|
||||
${VersionCompare} $0 "2.0" $1
|
||||
${If} $1 == 2
|
||||
StrCpy $InstallDotNET "Yes"
|
||||
${EndIf}
|
||||
|
||||
${If} $InstallDotNET == "Yes"
|
||||
${IfNot} ${HasDotNet3.0}
|
||||
MessageBox MB_OK|MB_ICONEXCLAMATION "$(RequiresNetFramework)"
|
||||
Quit
|
||||
${EndIf}
|
||||
@@ -211,15 +195,3 @@ Section "un.Uninstall"
|
||||
DeleteRegKey /ifempty HKCU "Software\mRemoteNG"
|
||||
DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\mRemoteNG"
|
||||
SectionEnd
|
||||
|
||||
Function GetDotNETVersion
|
||||
Push $0
|
||||
Push $1
|
||||
|
||||
System::Call "mscoree::GetCORVersion(w .r0, i ${NSIS_MAX_STRLEN}, *i) i .r1"
|
||||
StrCmp $1 "error" 0 +2
|
||||
StrCpy $0 "not found"
|
||||
|
||||
Pop $1
|
||||
Exch $0
|
||||
FunctionEnd
|
||||
|
||||
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
|
||||
@@ -27,14 +27,24 @@ echo.
|
||||
mkdir %TEMP_FOLDER%
|
||||
%RAR% x -o+ %ZIP_FILE% *.* %TEMP_FOLDER%
|
||||
|
||||
%SORTRESX% %TEMP_FOLDER%\de\Language.de-DE.resx "%~dp0\mRemoteV1\Language\Language.de.resx"
|
||||
%SORTRESX% %TEMP_FOLDER%\en-US\Language..resx "%~dp0\mRemoteV1\Language\Language.en-US.resx"
|
||||
%SORTRESX% %TEMP_FOLDER%\es-ES\Language.es-ES.resx "%~dp0\mRemoteV1\Language\Language.es.resx"
|
||||
%SORTRESX% %TEMP_FOLDER%\fr\Language.fr-FR.resx "%~dp0\mRemoteV1\Language\Language.fr.resx"
|
||||
%SORTRESX% %TEMP_FOLDER%\it\Language.it-IT.resx "%~dp0\mRemoteV1\Language\Language.it.resx"
|
||||
%SORTRESX% %TEMP_FOLDER%\nl\Language.nl-NL.resx "%~dp0\mRemoteV1\Language\Language.nl.resx"
|
||||
%SORTRESX% %TEMP_FOLDER%\ru\Language.ru-RU.resx "%~dp0\mRemoteV1\Language\Language.ru.resx"
|
||||
%SORTRESX% %TEMP_FOLDER%\uk\Language.uk-UA.resx "%~dp0\mRemoteV1\Language\Language.uk.resx"
|
||||
%SORTRESX% %TEMP_FOLDER%\ar\Language.ar.resx "%~dp0\mRemoteV1\Language\Language.ar.resx"
|
||||
%SORTRESX% %TEMP_FOLDER%\de\Language.de.resx "%~dp0\mRemoteV1\Language\Language.de.resx"
|
||||
%SORTRESX% %TEMP_FOLDER%\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"
|
||||
%SORTRESX% %TEMP_FOLDER%\pt-PT\Language.pt.resx "%~dp0\mRemoteV1\Language\Language.pt.resx"
|
||||
%SORTRESX% %TEMP_FOLDER%\ru\Language.ru.resx "%~dp0\mRemoteV1\Language\Language.ru.resx"
|
||||
%SORTRESX% %TEMP_FOLDER%\uk\Language.uk.resx "%~dp0\mRemoteV1\Language\Language.uk.resx"
|
||||
%SORTRESX% %TEMP_FOLDER%\zh-CN\Language.zh.resx "%~dp0\mRemoteV1\Language\Language.zh-CN.resx"
|
||||
|
||||
rmdir /s /q %TEMP_FOLDER%
|
||||
|
||||
|
||||
@@ -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
|
||||
@@ -239,8 +222,8 @@ Namespace App
|
||||
Public Shared quickyPanel As New DockContent
|
||||
Public Shared optionsForm As frmOptions
|
||||
Public Shared optionsPanel As New DockContent
|
||||
Public Shared saveasForm As UI.Window.SaveAs
|
||||
Public Shared saveasPanel As New DockContent
|
||||
Public Shared exportForm As UI.Window.Export
|
||||
Public Shared exportPanel As New DockContent
|
||||
Public Shared aboutForm As UI.Window.About
|
||||
Public Shared aboutPanel As New DockContent
|
||||
Public Shared updateForm As UI.Window.Update
|
||||
@@ -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)
|
||||
Case UI.Window.Type.SaveAs
|
||||
Windows.saveasForm = New UI.Window.SaveAs(Windows.saveasPanel)
|
||||
Windows.saveasPanel = Windows.saveasForm
|
||||
optionsForm = New frmOptions(optionsPanel)
|
||||
optionsForm.Show(frmMain.pnlDock)
|
||||
Case UI.Window.Type.Export
|
||||
If exportForm Is Nothing OrElse exportForm.IsDisposed Then
|
||||
exportForm = New UI.Window.Export(exportPanel)
|
||||
exportPanel = exportForm
|
||||
End If
|
||||
|
||||
Windows.saveasForm.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,17 +361,26 @@ 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
|
||||
|
||||
' Windows XP/Windows Server 2003
|
||||
regKey = Registry.LocalMachine.OpenSubKey("System\CurrentControlSet\Control\Lsa")
|
||||
If Not regKey.GetValue("FIPSAlgorithmPolicy") = 0 Then isFipsPolicyEnabled = True
|
||||
If regKey IsNot Nothing Then
|
||||
If Not regKey.GetValue("FIPSAlgorithmPolicy") = 0 Then isFipsPolicyEnabled = True
|
||||
End If
|
||||
|
||||
' Windows Vista/Windows Server 2008 and newer
|
||||
regKey = Registry.LocalMachine.OpenSubKey("System\CurrentControlSet\Control\Lsa\FIPSAlgorithmPolicy")
|
||||
If Not regKey.GetValue("Enabled") = 0 Then isFipsPolicyEnabled = True
|
||||
If regKey IsNot Nothing Then
|
||||
If Not regKey.GetValue("Enabled") = 0 Then isFipsPolicyEnabled = True
|
||||
End If
|
||||
|
||||
If isFipsPolicyEnabled Then
|
||||
MessageBox.Show(frmMain, String.Format(My.Language.strErrorFipsPolicyIncompatible, My.Application.Info.ProductName), My.Application.Info.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error)
|
||||
@@ -378,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
|
||||
@@ -443,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()
|
||||
@@ -636,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
|
||||
@@ -662,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
|
||||
@@ -728,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
|
||||
@@ -804,12 +888,6 @@ Namespace App
|
||||
|
||||
TryCast(cForm, UI.Window.Connection).SetFormText(title.Replace("&", "&&"))
|
||||
|
||||
If frmMain.pnlDock.DocumentsCount > 1 Then
|
||||
frmMain.pnlDock.DocumentStyle = DocumentStyle.DockingMdi
|
||||
Else
|
||||
frmMain.pnlDock.DocumentStyle = DocumentStyle.DockingSdi
|
||||
End If
|
||||
|
||||
pnlcForm.Show(frmMain.pnlDock, DockState.Document)
|
||||
|
||||
If noTabber Then
|
||||
@@ -896,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()
|
||||
@@ -905,7 +983,6 @@ Namespace App
|
||||
|
||||
conL.ConnectionList = ConnectionList
|
||||
conL.ContainerList = ContainerList
|
||||
conL.Import = False
|
||||
|
||||
Tree.Node.ResetTree()
|
||||
|
||||
@@ -913,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
|
||||
@@ -996,8 +1073,6 @@ Namespace App
|
||||
conL.PreviousSelected = LastSelected
|
||||
End If
|
||||
|
||||
conL.Import = False
|
||||
|
||||
Tree.Node.ResetTree()
|
||||
|
||||
conL.RootTreeNode = Windows.treeForm.tvConnections.Nodes(0)
|
||||
@@ -1009,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
|
||||
@@ -1026,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
|
||||
@@ -1121,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
|
||||
@@ -1135,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
|
||||
|
||||
@@ -1358,18 +1452,18 @@ Namespace App
|
||||
End Sub
|
||||
|
||||
Public Shared Sub SaveConnections(Optional ByVal Update As Boolean = False)
|
||||
If Not IsConnectionsFileLoaded Then Exit Sub
|
||||
|
||||
Dim previousTimerState As Boolean = False
|
||||
|
||||
Try
|
||||
If Update = True And My.Settings.UseSQLServer = False Then
|
||||
Exit Sub
|
||||
End If
|
||||
|
||||
Dim tmrWasEnabled As Boolean
|
||||
|
||||
If TimerSqlWatcher IsNot Nothing Then
|
||||
tmrWasEnabled = TimerSqlWatcher.Enabled
|
||||
If TimerSqlWatcher.Enabled = True Then
|
||||
TimerSqlWatcher.Stop()
|
||||
End If
|
||||
previousTimerState = TimerSqlWatcher.Enabled
|
||||
TimerSqlWatcher.Enabled = False
|
||||
End If
|
||||
|
||||
Dim conS As New Config.Connections.Save
|
||||
@@ -1401,70 +1495,78 @@ Namespace App
|
||||
If My.Settings.UseSQLServer = True Then
|
||||
LastSqlUpdate = Now
|
||||
End If
|
||||
|
||||
If tmrWasEnabled Then
|
||||
TimerSqlWatcher.Start()
|
||||
End If
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strConnectionsFileCouldNotBeSaved & vbNewLine & ex.Message)
|
||||
Finally
|
||||
If TimerSqlWatcher IsNot Nothing Then
|
||||
TimerSqlWatcher.Enabled = previousTimerState
|
||||
End If
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
Public Shared Sub SaveConnectionsAs(ByVal SaveSecurity As Security.Save, ByVal RootNode As TreeNode)
|
||||
Dim conS As New Config.Connections.Save
|
||||
Try
|
||||
Dim tmrWasEnabled As Boolean
|
||||
Public Shared Sub SaveConnectionsAs(Optional ByVal rootNode As TreeNode = Nothing, Optional ByVal saveSecurity As Security.Save = Nothing)
|
||||
Dim connectionsSave As New Config.Connections.Save
|
||||
Dim previousTimerState As Boolean = False
|
||||
|
||||
Try
|
||||
If TimerSqlWatcher IsNot Nothing Then
|
||||
tmrWasEnabled = TimerSqlWatcher.Enabled
|
||||
If TimerSqlWatcher.Enabled = True Then
|
||||
TimerSqlWatcher.Stop()
|
||||
End If
|
||||
previousTimerState = TimerSqlWatcher.Enabled
|
||||
TimerSqlWatcher.Enabled = False
|
||||
End If
|
||||
|
||||
Dim export As Boolean = False
|
||||
Dim saveAsDialog As SaveFileDialog
|
||||
If rootNode Is Nothing Then
|
||||
rootNode = Windows.treeForm.tvConnections.Nodes(0)
|
||||
saveAsDialog = Controls.ConnectionsSaveAsDialog
|
||||
Else
|
||||
export = True
|
||||
saveAsDialog = Controls.ConnectionsExportDialog
|
||||
End If
|
||||
|
||||
Dim sD As SaveFileDialog = Tools.Controls.ConnectionsSaveAsDialog
|
||||
|
||||
If sD.ShowDialog = System.Windows.Forms.DialogResult.OK Then
|
||||
conS.ConnectionFileName = sD.FileName
|
||||
If saveAsDialog.ShowDialog = System.Windows.Forms.DialogResult.OK Then
|
||||
connectionsSave.ConnectionFileName = saveAsDialog.FileName
|
||||
Else
|
||||
Exit Sub
|
||||
End If
|
||||
|
||||
Select Case sD.FilterIndex
|
||||
Case 1
|
||||
conS.SaveFormat = Config.Connections.Save.Format.mRXML
|
||||
Case 2
|
||||
conS.SaveFormat = Config.Connections.Save.Format.mRCSV
|
||||
Case 3
|
||||
conS.SaveFormat = Config.Connections.Save.Format.vRDCSV
|
||||
End Select
|
||||
If export Then
|
||||
Select Case saveAsDialog.FilterIndex
|
||||
Case 1
|
||||
connectionsSave.SaveFormat = Config.Connections.Save.Format.mRXML
|
||||
Case 2
|
||||
connectionsSave.SaveFormat = Config.Connections.Save.Format.mRCSV
|
||||
Case 3
|
||||
connectionsSave.SaveFormat = Config.Connections.Save.Format.vRDCSV
|
||||
End Select
|
||||
Else
|
||||
connectionsSave.SaveFormat = Config.Connections.Save.Format.mRXML
|
||||
|
||||
If RootNode Is Windows.treeForm.tvConnections.Nodes(0) Then
|
||||
If conS.SaveFormat <> Config.Connections.Save.Format.mRXML And conS.SaveFormat <> Config.Connections.Save.Format.None Then
|
||||
If connectionsSave.ConnectionFileName = Info.Connections.DefaultConnectionsPath & "\" & Info.Connections.DefaultConnectionsFile Then
|
||||
My.Settings.LoadConsFromCustomLocation = False
|
||||
Else
|
||||
If conS.ConnectionFileName = App.Info.Connections.DefaultConnectionsPath & "\" & App.Info.Connections.DefaultConnectionsFile Then
|
||||
My.Settings.LoadConsFromCustomLocation = False
|
||||
Else
|
||||
My.Settings.LoadConsFromCustomLocation = True
|
||||
My.Settings.CustomConsPath = conS.ConnectionFileName
|
||||
End If
|
||||
My.Settings.LoadConsFromCustomLocation = True
|
||||
My.Settings.CustomConsPath = connectionsSave.ConnectionFileName
|
||||
End If
|
||||
End If
|
||||
|
||||
conS.ConnectionList = ConnectionList
|
||||
conS.ContainerList = ContainerList
|
||||
If RootNode IsNot Windows.treeForm.tvConnections.Nodes(0) Then
|
||||
conS.Export = True
|
||||
End If
|
||||
conS.SaveSecurity = SaveSecurity
|
||||
conS.RootTreeNode = RootNode
|
||||
connectionsSave.ConnectionList = ConnectionList
|
||||
connectionsSave.ContainerList = ContainerList
|
||||
connectionsSave.RootTreeNode = rootNode
|
||||
|
||||
conS.Save()
|
||||
connectionsSave.Export = export
|
||||
|
||||
If saveSecurity Is Nothing Then saveSecurity = New Security.Save
|
||||
connectionsSave.SaveSecurity = saveSecurity
|
||||
|
||||
connectionsSave.Save()
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, String.Format(My.Language.strConnectionsFileCouldNotSaveAs, conS.ConnectionFileName) & vbNewLine & ex.Message)
|
||||
MessageCollector.AddMessage(MessageClass.ErrorMsg, String.Format(My.Language.strConnectionsFileCouldNotSaveAs, connectionsSave.ConnectionFileName) & vbNewLine & ex.Message)
|
||||
Finally
|
||||
If TimerSqlWatcher IsNot Nothing Then
|
||||
TimerSqlWatcher.Enabled = previousTimerState
|
||||
End If
|
||||
End Try
|
||||
|
||||
End Sub
|
||||
#End Region
|
||||
|
||||
@@ -1476,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
|
||||
@@ -1515,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
|
||||
|
||||
@@ -639,11 +649,17 @@ Namespace Config
|
||||
End If
|
||||
|
||||
If xDom.DocumentElement.HasAttribute("ConfVersion") Then
|
||||
Me.confVersion = Convert.ToDouble(xDom.DocumentElement.Attributes("ConfVersion").Value, CultureInfo.InvariantCulture)
|
||||
Me.confVersion = Convert.ToDouble(xDom.DocumentElement.Attributes("ConfVersion").Value.Replace(",", "."), CultureInfo.InvariantCulture)
|
||||
Else
|
||||
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
|
||||
@@ -721,7 +739,7 @@ Namespace Config
|
||||
App.Runtime.Windows.treeForm.InitialRefresh()
|
||||
Catch ex As Exception
|
||||
App.Runtime.IsConnectionsFileLoaded = False
|
||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strLoadFromXmlFailed & vbNewLine & ex.Message & ex.StackTrace, True)
|
||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strLoadFromXmlFailed & vbNewLine & ex.Message & vbNewLine & ex.StackTrace, True)
|
||||
Throw
|
||||
End Try
|
||||
End Sub
|
||||
@@ -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
|
||||
@@ -80,7 +79,7 @@ Namespace Config
|
||||
If (Not sqlDataReader.HasRows) Then Return True ' assume new empty database
|
||||
sqlDataReader.Read()
|
||||
|
||||
databaseVersion = New System.Version(Convert.ToDouble(sqlDataReader.Item("confVersion"), CultureInfo.InvariantCulture))
|
||||
databaseVersion = New Version(Convert.ToString(sqlDataReader.Item("confVersion"), CultureInfo.InvariantCulture))
|
||||
|
||||
sqlDataReader.Close()
|
||||
|
||||
@@ -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,15 +192,15 @@ 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, " & _
|
||||
"InheritVNCSmartSizeMode, InheritVNCViewOnly, " & _
|
||||
"InheritRDGatewayUsageMethod, InheritRDGatewayHostname, InheritRDGatewayUseConnectionCredentials, InheritRDGatewayUsername, InheritRDGatewayPassword, InheritRDGatewayDomain, " & _
|
||||
"InheritUseCredSsp, " & _
|
||||
"PositionID, _parentConstantId, ConstantID, LastChange)" & _
|
||||
"PositionID, ParentID, ConstantID, LastChange)" & _
|
||||
"VALUES (", _sqlConnection)
|
||||
|
||||
If Tree.Node.GetNodeType(node) = Tree.Node.Type.Connection Or Tree.Node.GetNodeType(node) = Tree.Node.Type.Container Then
|
||||
@@ -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 & "',"
|
||||
@@ -309,7 +317,7 @@ Namespace Config
|
||||
End If
|
||||
|
||||
If Me._SaveSecurity.Password = True Then
|
||||
_sqlQuery.CommandText &= "'" & .RDGatewayPassword & "',"
|
||||
_sqlQuery.CommandText &= "'" & Security.Crypt.Encrypt(.RDGatewayPassword, _password) & "',"
|
||||
Else
|
||||
_sqlQuery.CommandText &= "'" & "" & "',"
|
||||
End If
|
||||
@@ -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 & "',"
|
||||
@@ -468,17 +482,15 @@ Namespace Config
|
||||
|
||||
Private Sub SaveToXml()
|
||||
Try
|
||||
If IsConnectionsFileLoaded = False Then Exit Sub
|
||||
If Not IsConnectionsFileLoaded Then Exit Sub
|
||||
|
||||
Dim treeNode As TreeNode
|
||||
Dim isExport As Boolean = False
|
||||
|
||||
If Tree.Node.GetNodeType(RootTreeNode) = Tree.Node.Type.Root Then
|
||||
treeNode = RootTreeNode.Clone
|
||||
Else
|
||||
treeNode = New TreeNode("mR|Export (" + Tools.Misc.DBDate(Now) + ")")
|
||||
treeNode.Nodes.Add(RootTreeNode.Clone)
|
||||
isExport = True
|
||||
End If
|
||||
|
||||
Dim tempFileName As String = Path.GetTempFileName()
|
||||
@@ -491,9 +503,9 @@ Namespace Config
|
||||
|
||||
_xmlTextWriter.WriteStartElement("Connections") ' Do not localize
|
||||
_xmlTextWriter.WriteAttributeString("Name", "", treeNode.Text)
|
||||
_xmlTextWriter.WriteAttributeString("Export", "", isExport)
|
||||
_xmlTextWriter.WriteAttributeString("Export", "", Export)
|
||||
|
||||
If isExport Then
|
||||
If Export Then
|
||||
_xmlTextWriter.WriteAttributeString("Protected", "", Security.Crypt.Encrypt("ThisIsNotProtected", _password))
|
||||
Else
|
||||
If TryCast(treeNode.Tag, Root.Info).Password = True Then
|
||||
@@ -514,12 +526,14 @@ Namespace Config
|
||||
_xmlTextWriter.WriteEndElement()
|
||||
_xmlTextWriter.Close()
|
||||
|
||||
Dim backupFileName As String = ConnectionFileName & ".backup"
|
||||
File.Delete(backupFileName)
|
||||
File.Move(ConnectionFileName, backupFileName)
|
||||
If Not Export And File.Exists(ConnectionFileName) Then
|
||||
Dim backupFileName As String = ConnectionFileName & ".backup"
|
||||
File.Delete(backupFileName)
|
||||
File.Move(ConnectionFileName, backupFileName)
|
||||
End If
|
||||
File.Move(tempFileName, ConnectionFileName)
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "SaveToXml failed" & vbNewLine & ex.Message, True)
|
||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "SaveToXml failed" & vbNewLine & ex.Message, False)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
@@ -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)
|
||||
@@ -659,7 +677,7 @@ Namespace Config
|
||||
End If
|
||||
|
||||
If Me._SaveSecurity.Password = True Then
|
||||
_xmlTextWriter.WriteAttributeString("RDGatewayPassword", "", curConI.RDGatewayPassword)
|
||||
_xmlTextWriter.WriteAttributeString("RDGatewayPassword", "", Security.Crypt.Encrypt(curConI.RDGatewayPassword, _password))
|
||||
Else
|
||||
_xmlTextWriter.WriteAttributeString("RDGatewayPassword", "", "")
|
||||
End If
|
||||
@@ -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
|
||||
@@ -101,6 +104,10 @@ Namespace Config
|
||||
Me.LoadPanelsFromXML()
|
||||
Me.LoadExternalAppsFromXML()
|
||||
|
||||
If My.Settings.AlwaysShowPanelTabs Then
|
||||
frmMain.pnlDock.DocumentStyle = DocumentStyle.DockingWindow
|
||||
End If
|
||||
|
||||
If My.Settings.ResetToolbars = False Then
|
||||
LoadToolbarsFromSettings()
|
||||
Else
|
||||
@@ -108,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
|
||||
|
||||
@@ -190,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
|
||||
|
||||
@@ -262,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
|
||||
Return _hostname.Trim()
|
||||
End Get
|
||||
Set(ByVal value As String)
|
||||
Me._Hostname = value
|
||||
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
|
||||
@@ -132,13 +133,13 @@ Namespace Connection
|
||||
parCon = parCont.ConnectionInfo
|
||||
End If
|
||||
|
||||
Return parCon.Username
|
||||
Return parCon.Username.Trim()
|
||||
Else
|
||||
Return Me._Username
|
||||
Return Me._Username.Trim()
|
||||
End If
|
||||
End Get
|
||||
Set(ByVal value As String)
|
||||
Me._Username = value
|
||||
Me._Username = value.Trim()
|
||||
End Set
|
||||
End Property
|
||||
|
||||
@@ -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
|
||||
@@ -185,13 +186,13 @@ Namespace Connection
|
||||
parCon = parCont.ConnectionInfo
|
||||
End If
|
||||
|
||||
Return parCon.Domain
|
||||
Return parCon.Domain.Trim()
|
||||
Else
|
||||
Return Me._Domain
|
||||
Return Me._Domain.Trim()
|
||||
End If
|
||||
End Get
|
||||
Set(ByVal value As String)
|
||||
Me._Domain = value
|
||||
Me._Domain = value.Trim()
|
||||
End Set
|
||||
End Property
|
||||
#End Region
|
||||
@@ -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), _
|
||||
@@ -482,13 +509,13 @@ Namespace Connection
|
||||
parCon = parCont.ConnectionInfo
|
||||
End If
|
||||
|
||||
Return parCon.RDGatewayHostname
|
||||
Return parCon.RDGatewayHostname.Trim()
|
||||
Else
|
||||
Return Me._RDGatewayHostname
|
||||
Return Me._RDGatewayHostname.Trim()
|
||||
End If
|
||||
End Get
|
||||
Set(ByVal value As String)
|
||||
Me._RDGatewayHostname = value
|
||||
Me._RDGatewayHostname = value.Trim()
|
||||
End Set
|
||||
End Property
|
||||
|
||||
@@ -535,13 +562,13 @@ Namespace Connection
|
||||
parCon = parCont.ConnectionInfo
|
||||
End If
|
||||
|
||||
Return parCon.RDGatewayUsername
|
||||
Return parCon.RDGatewayUsername.Trim()
|
||||
Else
|
||||
Return Me._RDGatewayUsername
|
||||
Return Me._RDGatewayUsername.Trim()
|
||||
End If
|
||||
End Get
|
||||
Set(ByVal value As String)
|
||||
Me._RDGatewayUsername = value
|
||||
Me._RDGatewayUsername = value.Trim()
|
||||
End Set
|
||||
End Property
|
||||
|
||||
@@ -588,13 +615,13 @@ Namespace Connection
|
||||
parCon = parCont.ConnectionInfo
|
||||
End If
|
||||
|
||||
Return parCon.RDGatewayDomain
|
||||
Return parCon.RDGatewayDomain.Trim()
|
||||
Else
|
||||
Return Me._RDGatewayDomain
|
||||
Return Me._RDGatewayDomain.Trim()
|
||||
End If
|
||||
End Get
|
||||
Set(ByVal value As String)
|
||||
Me._RDGatewayDomain = value
|
||||
Me._RDGatewayDomain = value.Trim()
|
||||
End Set
|
||||
End Property
|
||||
#End Region
|
||||
@@ -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
|
||||
@@ -1478,7 +1532,9 @@ Namespace Connection
|
||||
|
||||
#Region "Methods"
|
||||
Public Function Copy() As Connection.Info
|
||||
Return Me.MemberwiseClone
|
||||
Dim newConnectionInfo As Connection.Info = MemberwiseClone()
|
||||
newConnectionInfo._OpenConnections = New Connection.Protocol.List
|
||||
Return newConnectionInfo
|
||||
End Function
|
||||
|
||||
Public Sub New()
|
||||
@@ -1846,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), _
|
||||
@@ -1998,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,86 +101,108 @@ Namespace Connection
|
||||
|
||||
PuttyProcess = New Process
|
||||
With PuttyProcess.StartInfo
|
||||
.UseShellExecute = False
|
||||
.FileName = _PuttyPath
|
||||
|
||||
Select Case Me._PuttyProtocol
|
||||
Case Putty_Protocol.raw
|
||||
.Arguments = "-load " & """" & Me.InterfaceControl.Info.PuttySession & """" & " -" & Me._PuttyProtocol.ToString & " -P " & Me.InterfaceControl.Info.Port & " """ & Me.InterfaceControl.Info.Hostname & """"
|
||||
Case Putty_Protocol.rlogin
|
||||
.Arguments = "-load " & """" & Me.InterfaceControl.Info.PuttySession & """" & " -" & Me._PuttyProtocol.ToString & " -P " & Me.InterfaceControl.Info.Port & " """ & Me.InterfaceControl.Info.Hostname & """"
|
||||
Case Putty_Protocol.ssh
|
||||
Dim UserArg As String = ""
|
||||
Dim PassArg As String = ""
|
||||
Dim arguments As New CommandLineArguments
|
||||
arguments.EscapeForShell = False
|
||||
|
||||
If My.Settings.EmptyCredentials = "windows" Then
|
||||
UserArg = " -l """ & Environment.UserName & """"
|
||||
ElseIf My.Settings.EmptyCredentials = "custom" Then
|
||||
UserArg = " -l """ & My.Settings.DefaultUsername & """"
|
||||
PassArg = " -pw """ & 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 Me.InterfaceControl.Info.Username <> "" Then
|
||||
UserArg = " -l """ & Me.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 Me.InterfaceControl.Info.Password <> "" Then
|
||||
PassArg = " -pw """ & Me.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 " & """" & Me.InterfaceControl.Info.PuttySession & """" & " -" & Me._PuttyProtocol.ToString & " -" & Me._PuttySSHVersion & UserArg & PassArg & " -P " & Me.InterfaceControl.Info.Port & " """ & Me.InterfaceControl.Info.Hostname & """"
|
||||
Case Putty_Protocol.telnet
|
||||
.Arguments = "-load " & """" & Me.InterfaceControl.Info.PuttySession & """" & " -" & Me._PuttyProtocol.ToString & " -P " & Me.InterfaceControl.Info.Port & " """ & Me.InterfaceControl.Info.Hostname & """"
|
||||
Case Putty_Protocol.serial
|
||||
.Arguments = "-load " & """" & Me.InterfaceControl.Info.PuttySession & """" & " -" & Me._PuttyProtocol.ToString & " -P " & Me.InterfaceControl.Info.Port & " """ & Me.InterfaceControl.Info.Hostname & """"
|
||||
End Select
|
||||
|
||||
If _isPuttyNg Then
|
||||
.Arguments = .Arguments & " -hwndparent " & Me.InterfaceControl.Handle.ToString()
|
||||
arguments.Add("-P", InterfaceControl.Info.Port.ToString)
|
||||
arguments.Add(InterfaceControl.Info.Hostname)
|
||||
End If
|
||||
|
||||
'REMOVE IN RELEASE!
|
||||
'mC.AddMessage(Messages.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
|
||||
AddHandler PuttyProcess.Exited, AddressOf ProcessExited
|
||||
|
||||
PuttyProcess.Start()
|
||||
PuttyProcess.WaitForInputIdle()
|
||||
PuttyProcess.WaitForInputIdle(My.Settings.MaxPuttyWaitTime * 1000)
|
||||
|
||||
If _isPuttyNg Then
|
||||
PuttyHandle = FindWindowEx(Me.InterfaceControl.Handle, 0, vbNullString, vbNullString)
|
||||
Else
|
||||
PuttyHandle = PuttyProcess.MainWindowHandle
|
||||
Dim startTicks As Integer = Environment.TickCount
|
||||
While PuttyHandle.ToInt32 = 0 And Environment.TickCount < startTicks + (My.Settings.MaxPuttyWaitTime * 1000)
|
||||
If _isPuttyNg Then
|
||||
PuttyHandle = FindWindowEx(InterfaceControl.Handle, 0, vbNullString, vbNullString)
|
||||
Else
|
||||
PuttyProcess.Refresh()
|
||||
PuttyHandle = PuttyProcess.MainWindowHandle
|
||||
End If
|
||||
If PuttyHandle.ToInt32 = 0 Then Thread.Sleep(0)
|
||||
End While
|
||||
|
||||
If Not _isPuttyNg Then
|
||||
SetParent(PuttyHandle, InterfaceControl.Handle)
|
||||
End If
|
||||
|
||||
MessageCollector.AddMessage(Messages.MessageClass.InformationMsg, My.Language.strPuttyStuff, True)
|
||||
MessageCollector.AddMessage(MessageClass.InformationMsg, My.Language.strPuttyStuff, True)
|
||||
|
||||
MessageCollector.AddMessage(Messages.MessageClass.InformationMsg, String.Format(My.Language.strPuttyHandle, PuttyHandle.ToString), True)
|
||||
MessageCollector.AddMessage(Messages.MessageClass.InformationMsg, String.Format(My.Language.strPuttyTitle, PuttyProcess.MainWindowTitle), True)
|
||||
MessageCollector.AddMessage(Messages.MessageClass.InformationMsg, String.Format(My.Language.strPuttyParentHandle, Me.InterfaceControl.Parent.Handle.ToString), True)
|
||||
MessageCollector.AddMessage(MessageClass.InformationMsg, String.Format(My.Language.strPuttyHandle, PuttyHandle.ToString), True)
|
||||
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
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strPuttyConnectionFailed & vbNewLine & ex.Message)
|
||||
MessageCollector.AddMessage(MessageClass.ErrorMsg, My.Language.strPuttyConnectionFailed & vbNewLine & ex.Message)
|
||||
Return False
|
||||
End Try
|
||||
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 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)
|
||||
@@ -226,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
|
||||
@@ -254,24 +245,8 @@ Namespace Connection
|
||||
Catch
|
||||
isPuttyNg = False
|
||||
End Try
|
||||
MessageCollector.AddMessage(MessageClass.InformationMsg, String.Format("IsFilePuttyNg(""{0}"") = {1}", file, isPuttyNg), False)
|
||||
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,13 +438,16 @@ 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 AxMSTSCLib.IMsTscAxEvents_OnDisconnectedEvent)
|
||||
Dim Reason As String = RDP.GetErrorDescription(e.discReason, RDP.ExtendedDisconnectReason)
|
||||
MyBase.Event_Disconnected(Me, e.discReason & vbCrLf & Reason)
|
||||
Private Sub RDPEvent_OnDisconnected(ByVal discReason As Integer)
|
||||
Const UI_ERR_NORMAL_DISCONNECT As Integer = &HB08
|
||||
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
|
||||
ReconnectGroup = New ReconnectGroup
|
||||
@@ -398,20 +457,21 @@ Namespace Connection
|
||||
ReconnectGroup.Show()
|
||||
tmrReconnect.Enabled = True
|
||||
Else
|
||||
MyBase.Close()
|
||||
Close()
|
||||
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
|
||||
|
||||
@@ -542,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"
|
||||
@@ -803,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
|
||||
|
||||
@@ -811,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
|
||||
|
||||
12
mRemoteV1/Forms/frmMain.Designer.vb
generated
12
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()
|
||||
@@ -138,7 +137,7 @@ Partial Class frmMain
|
||||
Me.pnlDock.DockBackColor = System.Drawing.SystemColors.Control
|
||||
Me.pnlDock.DockLeftPortion = 230
|
||||
Me.pnlDock.DockRightPortion = 230
|
||||
Me.pnlDock.DocumentStyle = WeifenLuo.WinFormsUI.Docking.DocumentStyle.DockingWindow
|
||||
Me.pnlDock.DocumentStyle = WeifenLuo.WinFormsUI.Docking.DocumentStyle.DockingSdi
|
||||
Me.pnlDock.Location = New System.Drawing.Point(0, 0)
|
||||
Me.pnlDock.Name = "pnlDock"
|
||||
Me.pnlDock.Size = New System.Drawing.Size(842, 424)
|
||||
@@ -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>
|
||||
|
||||
@@ -1,9 +1,12 @@
|
||||
Imports WeifenLuo.WinFormsUI.Docking
|
||||
Imports mRemoteNG.App.Runtime
|
||||
Imports System.Reflection
|
||||
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
|
||||
@@ -29,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()
|
||||
@@ -45,44 +50,37 @@ 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
|
||||
|
||||
'LoadCredentials()
|
||||
LoadConnections()
|
||||
If Not IsConnectionsFileLoaded Then
|
||||
Application.Exit()
|
||||
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
|
||||
@@ -119,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
|
||||
@@ -161,50 +159,111 @@ Public Class frmMain
|
||||
ToolStripMenuItem2.Text = My.Language.strKeysCtrlEsc
|
||||
End Sub
|
||||
|
||||
Private Sub frmMain_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
|
||||
If My.Settings.ConfirmExit And WindowList.Count > 0 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
|
||||
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 Result = DialogResult.No Then
|
||||
e.Cancel = True
|
||||
Exit Sub
|
||||
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 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.ConfirmCloseConnection = My.Settings.ConfirmCloseConnection - 1
|
||||
End If
|
||||
If result = DialogResult.No Then
|
||||
e.Cancel = True
|
||||
Exit Sub
|
||||
End If
|
||||
End If
|
||||
End If
|
||||
|
||||
PuttySessions.StopWatcher()
|
||||
|
||||
Shutdown.BeforeQuit()
|
||||
|
||||
_IsClosing = True
|
||||
|
||||
For Each Window As UI.Window.Base In WindowList
|
||||
Window.Close()
|
||||
Next
|
||||
|
||||
App.Runtime.Shutdown.BeforeQuit()
|
||||
If WindowList IsNot Nothing Then
|
||||
For Each window As UI.Window.Base In WindowList
|
||||
window.Close()
|
||||
Next
|
||||
End If
|
||||
|
||||
Debug.Print("[END] - " & Now)
|
||||
End Sub
|
||||
#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()
|
||||
@@ -218,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()
|
||||
|
||||
@@ -247,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()
|
||||
@@ -274,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
|
||||
@@ -284,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
|
||||
@@ -292,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
|
||||
@@ -299,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
|
||||
@@ -347,7 +425,7 @@ Public Class frmMain
|
||||
End Sub
|
||||
|
||||
Private Sub mMenFileSaveAs_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mMenFileSaveAs.Click
|
||||
App.Runtime.Windows.Show(UI.Window.Type.SaveAs)
|
||||
SaveConnectionsAs()
|
||||
End Sub
|
||||
|
||||
Private Sub mMenFileExit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mMenFileExit.Click
|
||||
@@ -502,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
|
||||
|
||||
@@ -655,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()
|
||||
@@ -668,25 +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
|
||||
|
||||
tMenItem.Dispose()
|
||||
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
|
||||
@@ -694,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
|
||||
@@ -727,10 +806,10 @@ Public Class frmMain
|
||||
|
||||
Dim control As Control = FromChildHandle(WindowFromPoint(MousePosition))
|
||||
If Not IsNothing(control) Then
|
||||
' Let ComboBoxes get focus but don't simulate a mouse event
|
||||
If TypeOf control Is ComboBox Then Exit Select
|
||||
' 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))
|
||||
@@ -742,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))
|
||||
@@ -792,6 +864,32 @@ Public Class frmMain
|
||||
Private Sub pnlDock_ActiveDocumentChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles pnlDock.ActiveDocumentChanged
|
||||
ActivateConnection()
|
||||
End Sub
|
||||
|
||||
Public Sub ShowHidePanelTabs(Optional closingDocument As DockContent = Nothing)
|
||||
Dim newDocumentStyle As DocumentStyle = pnlDock.DocumentStyle
|
||||
|
||||
If My.Settings.AlwaysShowPanelTabs Then
|
||||
newDocumentStyle = DocumentStyle.DockingWindow ' Show the panel tabs
|
||||
Else
|
||||
Dim nonConnectionPanelCount As Integer = 0
|
||||
For Each document As DockContent In pnlDock.Documents
|
||||
If (closingDocument Is Nothing OrElse document IsNot closingDocument) And Not TypeOf document Is UI.Window.Connection Then
|
||||
nonConnectionPanelCount = nonConnectionPanelCount + 1
|
||||
End If
|
||||
Next
|
||||
|
||||
If nonConnectionPanelCount = 0 Then
|
||||
newDocumentStyle = DocumentStyle.DockingSdi ' Hide the panel tabs
|
||||
Else
|
||||
newDocumentStyle = DocumentStyle.DockingWindow ' Show the panel tabs
|
||||
End If
|
||||
End If
|
||||
|
||||
If Not pnlDock.DocumentStyle = newDocumentStyle Then
|
||||
pnlDock.DocumentStyle = newDocumentStyle
|
||||
pnlDock.Size = New Size(1, 1)
|
||||
End If
|
||||
End Sub
|
||||
#End Region
|
||||
|
||||
#Region "Screen Stuff"
|
||||
|
||||
@@ -124,154 +124,177 @@
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w
|
||||
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
|
||||
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAABk
|
||||
IgAAAk1TRnQBSQFMAgEBBwEAAQgBAQEIAQEBEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA
|
||||
AwABIAMAAQEBAAEgBgABIB4AAeIB7wH0Af8BqAHJAdcB/wFwAaQBtgH/AVMBhgGcAf8BPgFlAYoB/wE5
|
||||
AWABhwH/ATkBagGVAf8BTAGOAasB/wGPAbcBzQH/Ad0B6gHxAf8MAANXAbcDnwH/A5oB/wOWAf8DkQH/
|
||||
A40B/wOJAf8DhAH/A4AB/wNbAf8DVwH/A1MB/wNQAf8DTAH/A0kB/wNXAbcYAAMNARIDVgG2A1YBtgMN
|
||||
ARFgAAGtAc8B3wH/AUsBkQGtAf8BUAGjAb8B/wFsAcAB1AH/AZUB2QHmAf8BgQHbAfAB/wFEAcYB7AH/
|
||||
ARgBqgHdAf8BCgGSAccB/wEWAYABrAH/AS0BZQGSAf8BnQG/AdEB/wgAA6gB/wPpAf8D0wH/A9IB/wPR
|
||||
Af8D0AH/A84B/wPNAf8DzQH/A8sB/wPLAf8DygH/A8kB/wPIAf8D4gH/A0kB/xgAA14B2QPkAf8D4wH/
|
||||
A1gBwWAAAU4BhAGbAf8BOAG9AecB/wFbAdMB8QH/AYwB4wH0Af8BogHrAfYB/wGDAd8B9AH/AUQBygHw
|
||||
Af8BEgG2Ae0B/wEAAacB6AH/AQABoQHhAf8BAAGWAdIB/wExAVIBbgH/CAADrQH/A9YB/wO6Af8DuAH/
|
||||
A7UB/wOzAf8DsQH/A7AB/wOtAf8DqwH/A6oB/wOoAf8DpwH/A6YB/wPIAf8DTQH/CAADCwEPA1QBrQM6
|
||||
AWEDPwFuA3QB+AHiAeEB3wH/AeEB4AHfAf8DXwHzAzwBZwM8AWYDUwGtAwsBD1AAAVEBhwGeAf8BNwHE
|
||||
AfAB/wFdAdQB8QH/AYwB4wH0Af8BogHrAfYB/wGDAd8B9AH/AUQBygHwAf8BEgG2Ae0B/wEAAagB6AH/
|
||||
AQABoQHhAf8BAAGcAdoB/wEyAVMBcAH/CAADsQH/A9kB/wO9Af8DugH/A7gB/wO2Af8DtQH/A7MB/wOw
|
||||
Af8DrwH/A60B/wOrAf8DqQH/A6gB/wPKAf8DUQH/CAADWgHFBP8CnwGeAf4CngGdAf4C5wHmAf8B1gHV
|
||||
AdMB/wHXAdYB1AH/AeMB4gHgAf8BkwGSAZAB/gKqAakB/QHpAegB5gH/A1gBwVAAAVMBiQGgAf8BNwHE
|
||||
Ae8B/wFcAdQB8QH/AY0B4wH0Af8BogHrAfYB/wGCAd8B8wH/AUUBygHwAf8BEgG2Ae0B/wEAAagB6AH/
|
||||
AQABoQHhAf8BAAGcAdoB/wE0AVYBcgH/CAADtgH/A90B/wPBAf8DvQH/A7wB/wO6Af8DuAH/A7UB/wO0
|
||||
Af8DsgH/A7AB/wOtAf8DrAH/A6wB/wPPAf8DVQH/CAADZAHnAvkB9wH/Au8B7gH/AtsB2gH/AcoCyQH/
|
||||
AckByAHGAf8ByQHIAccB/wHJAcgBxwH/AssByQH/AeYB5QHkAf8B5QHkAeIB/wNlAeVQAAFVAYwBogH/
|
||||
ATkBxgHwAf8BXgHUAfEB/wGMAeMB9AH/AaIB6wH2Af8BggHfAfQB/wFFAcoB8AH/ARIBtgHtAf8BAAGo
|
||||
AegB/wEAAaIB4gH/AQABmwHbAf8BNgFZAYAB/wgAA1oBvQPaAf8DyAH/A8AB/wO/Af8DvQH/A7oB/wO4
|
||||
Af8DtwH/A7UB/wOzAf8DsAH/A68B/wOzAf8DwgH/A1oBvQgAA04BlQH2AfUB9AH/AeYB5QHkAf8BvwG+
|
||||
Ab0B/wLrAeoB/wHUAdMB0gH/AdYB1QHUAf8B4gLhAf8CtAGzAf8B1wHWAdQB/wHiAeEB3wH/A0oBjVAA
|
||||
AVgBjwGlAf8BOgHGAfAB/wFeAdQB8gH/AY0B4wH0Af8BogHrAfYB/wGDAd8B9AH/AUQBygHwAf8BEgG2
|
||||
Ae0B/wEAAacB6AH/AQABoQHiAf8BAAGcAdsB/wE4AVwBgwH/CAADWgG9A+MB/wPnAf8D4QH/A+AB/wPg
|
||||
Af8D3wH/A98B/wPeAf8D3QH/A90B/wPcAf8D2wH/A+AB/wPQAf8DWgG9AwsBDwNVAbUDZAHnAeQB4wHi
|
||||
Af8B0QHQAc8B/wLwAe8B/wOuAf8DZAHxA2cB8gKsAasB/wLoAecB/wLLAcoB/wHgAd8B3QH/A2EB5ANV
|
||||
AbUDCwEPSAABWQGSAagB/wE6AcUB8AH/AV8B1AHyAf8BjQHjAfQB/wGiAesB9gH/AYIB3wH0Af8BRAHK
|
||||
AfAB/wESAbYB7QH/AQABpwHoAf8BAAGhAeEB/wEAAZwB2wH/AToBXwGGAf8IAAMpAT8DzgH/A+wB/wPe
|
||||
Af8D2AH/A9IB/wPMAf8DyAH/A8cB/wPIAf8DywH/A9AB/wPdAf8D6AH/A6QB/wMrAUIDPwFtAuQB4wH/
|
||||
AdgB1gHVAf8B0gHRAdAB/wHFAcQBwwH/Ae0B7AHrAf8DVwG6CAADXAHNAegB5wHmAf8BtgG1AbQB/wHW
|
||||
AdUB0wH/AeIB4QHgAf8C4AHfAf8DPAFmSAABXAGVAasB/wE6AcUB8AH/AV8B1AHyAf8BjQHjAfQB/wGi
|
||||
AesB9gH/AYMB3wH0Af8BRQHLAfAB/wESAbUB7QH/AQABpwHoAf8BAAGhAeIB/wEAAZwB2gH/AT0BYgGI
|
||||
Af8MAANaAb0D4wH/A9sB/wPiAf8BtwHQAbgB/wFDAa0BRwH/AVUBqgFDAf8BTwGvAUcB/wE1AaUBQQH/
|
||||
AawBxQGsAf8DwgH/A9EB/wPTAf8DWgG9BAADQgF2AewB6wHoAf8B2gHZAdcB/wHUAdMB0QH/AcYBxQHE
|
||||
Af8B3gLcAf8DRgF+CAADUAGaAd0B3AHbAf8ByAHGAcUB/wLiAeEB/wLhAd8B/wHuAe0B7AH/Az8Bb0gA
|
||||
AV4BmAGuAf8BOgHFAfAB/wFfAdQB8QH/AY0B4wH0Af8BogHrAfYB/wGDAd8B9AH/AUUBygHwAf8BEgG2
|
||||
Ae0B/wEAAagB6QH/AQABoQHhAf8BAAGcAdoB/wE/AWQBigH/DAADKQE/A9EB/wPzAf8BxwHeAcoB/wFD
|
||||
AckBhQH/AbMB3AGkAf8B5wHHAVsB/wHcAb8BUgH/AVUBzAGPAf8BLgGtAUcB/wG4AdABuAH/A/EB/wOv
|
||||
Af8DKwFCBAADLwFKA2AB6wN7AfwB3gHdAdwB/wHLAsoB/wHmAuUB/wNhAeEDMgFQAzgBXANgAesC7gHs
|
||||
Af8BzALLAf8B5wHmAeUB/wN7AfwDYAHrAywBQ0gAAWEBmwGwAf8BOQHGAfAB/wFfAdQB8gH/AY0B4wH0
|
||||
Af8BogHrAfYB/wGDAd8B9AH/AUUBygHwAf8BEgG2Ae0B/wEAAagB6AH/AQABoQHhAf8BAAGcAdoB/wFC
|
||||
AWgBjgH/EAADWgG9A8QB/wFVAc4BiwH/AZkB5AGrAf8BsAHFATwB/wHqAbUBJwH/AeEBogEYAf8BpQGd
|
||||
AR8B/wGCAcUBjwH/ASgBmgE1Af8DoAH/A1oBvRAAA14BzgHhAeAB3gH/AdkB1wHWAf8BuAK3Af8B4QHg
|
||||
Ad8B/wOoAf0DqgH9AvYB9QH/AsABvwH/AeoB6QHoAf8C8wHyAf8DXAHJUAABZAGfAbMB/wE5AcYB8AH/
|
||||
AV0B1AHxAf8BjAHjAfQB/wGiAesB9gH/AYMB3wH0Af8BRQHKAfAB/wESAbYB7QH/AQABpwHoAf8BAAGh
|
||||
AeEB/wEAAZsB2gH/AUQBawGQAf8YAAFhAX0BbAH8AaIB6QGVAf8B1gHPAUgB/wHiAbMBJgH/AdEBuwEu
|
||||
Af8BwgGuASEB/wGCAb0BSwH/ASsBcgFXAfwYAANMAZEB4wHiAeAB/wLeAdwB/wHhAeAB3wH/AcwCywH/
|
||||
AcQBwwHCAf8CzwHOAf8C3gHdAf8C8AHvAf8C8AHvAf8C9gH1Af8DSAGHUAABZQGhAbUB/wFfAdUB9AH/
|
||||
AZoB6AH3Af8BtQHzAfoB/wHCAfgB/AH/AcMB+AH9Af8BwQH3Af0B/wGvAfAB+wH/AY8B4gH3Af8BXgHQ
|
||||
AfAB/wEyAbgB5QH/AUcBbgGTAf8YAAFjAX0BbQH8AaIB8AGfAf8B2AHtAa8B/wHeAcUBRwH/AbQB4gFE
|
||||
Af8BPwHnARgB/wFKAdcBSgH/ATIBdAFeAfwUAAMBAQIDXwHjAeUB5AHhAf8C7gHtAf8C7gHtAf8C6wHq
|
||||
Af8B4wHiAeEB/wLoAecB/wLqAekB/wLzAfIB/wL1AfQB/wH6AfkB+AH/A1wB31AAAWgBowG4Af8BxQH5
|
||||
Af0B/wHFAfkB/QH/AcUB+QH9Af8BxQH5Af0B/wHFAfkB/QH/AcUB+QH9Af8BxQH5Af0B/wHFAfkB/QH/
|
||||
AcUB+QH9Af8BxQH5Af0B/wFJAXEBlQH/GAADYQHcAcgB9wHUAf8B2AH2AcoB/wHnAeMBqQH/AdsBzwFL
|
||||
Af8BrwHcAUcB/wGdAeoBqwH/A18B4BgAA0ABbwN/Af4DZAHnA18B8wHoAecB5gH/AecB5gHlAf8C7QHs
|
||||
Af8C+wH6Af8DZwHyA2QB5wN/Af4DPQFoUAABtwHXAeEB/wGMAb0BzAH/AZ0BzwHbAf8BrQHfAegB/wG5
|
||||
AewB8wH/AcIB9QH6Af8BwgH1AfoB/wG4AesB8QH/AakB2gHjAf8BlAHEAdEB/wFvAagBuAH/AakBxQHR
|
||||
Af8YAAMtAUUBYAF5AXAB+gHbAfgB6QH/AecB8gHYAf8B7QHlAbMB/wHfAdkBpgH/AV8BiAFfAfsDMgFQ
|
||||
IAADDwEUAwoBDgNTAaoB7wHuAe0B/wL0AfMB/wNSAaQDCAELAxEBF1gAAv4C/wHjAfEB9AH/AbkB1wHh
|
||||
Af8BlQG+AcwB/wFvAagBuwH/AWIBmwGwAf8BXgGYAa0B/wFnAaEBswH/AYwBsgHCAf8BsQHNAdcB/wHf
|
||||
AesB7wH/A/4B/xwAAy4BRwNeAdkBZwF9AWsB/AFnAXwBZwH8A14B3QMyAVAsAAMvAUoDXQHwA2IB7wMs
|
||||
AUNkAAMRARcDVgGzAVMBVAFTAay0AAMEAQUDEAEVAx8BLQMpAT8DLwFJAy4BSAMoAT0DHgErAw8BFAMD
|
||||
AQQQAAO3Af8BnAGoAZ4B/wEAAVYBMQH/ARsBkgFTAf8BAAFaATEB/wEDAUcBoAH/AQABRQGeAf8BAAFC
|
||||
AZsB/wEAAUABmQH/AQABPgGXAf8BAAE7AZQB/wEAAToBkwH/A0sB/wNLAf8cAANBAXIBTAJfAfMBWQJc
|
||||
Ac8BSwJMAZADIwEzXAADBQEHAx8BLAI+AT0BagJSAVABowFbAlkBxAFdAloB0wFdAloB0wFbAlkBwwFS
|
||||
AlEBoQM8AWYDHAEoAwQBBgwAAxUBHQNRAaIBIAGVAVcB/wGCAb4BqgH/AS8BpQGCAf8BEAGXAUkB/wET
|
||||
AZkBTgH/ARcBmQFSAf8BGwGdAVcB/wFVAaoB0gH/AVMBqAHRAf8BAAE8AZUB/yAAAyEBMAErATYBawH8
|
||||
AYYBrQHhAf8BXQGoAdwB/wE+AZIByQH/AQ8BUQGrAf8BVQJWAbEDHwEtUwABAQMSARgDPgFrAV0CWQHX
|
||||
AVkCKwH8AawBLAEDAf8B4QFMASAB/wHkAV4BNAH/AdMBSgEYAf8BowFAATcB/QFhAl4B2gI+AT0BagMP
|
||||
ARQIAAMYASIBUAFSAVABpANWAbMBTAGsAZ8B/wFTAbcBngH/AV0BuwGsAf8BXQG7Aa4B/wFeAbsBsAH/
|
||||
AYABvAGzAf8BFgGaAVoB/wEzAZUBxwH/AVYBqwHTAf8BAAE/AZgB/yAAAVQCVgGrAUwBnQHRAf8BmQG8
|
||||
AesB/wFQAaAB4wH/AZYBuQHqAf8BlAG4AeoB/wE/AZMBygH/AisBZwH8A0MBeFAAAxsBJgNZAdIBHAEG
|
||||
AQAB/wGKATsBIwH/AcoBhgFFAf8B9gG8AZwB/wH5AcwBtwH/AeMBoAFXAf8BsQFWATwB/wFYATIBEwH/
|
||||
AV4CWAHdAxwBKAgAAVUBVgFVAbEDVgGzA1YBswE7AaQBkQH/AU4BtgGbAf8BRwGyAZsB/wFJAbIBngH/
|
||||
AUsBswGhAf8BhQG/AbYB/wEdAZ4BggH/ATgBmQHJAf8BWgGtAdQB/wEAAUMBnAH/HAADHwEtASsBTAFv
|
||||
AfwBnQG/AewB/wFIAZwB4gH/AToBkwHfAf8BNwGRAd8B/wE+AZQB4AH/AZUBuAHqAf8BhgGtAeEB/wEo
|
||||
AYMBuwH/AUsCTAGQBAADnQH/A50B/wOdAf8DnQH/A50B/wOdAf8DnQH/A50B/wOdAf8DnQH/A50B/wOd
|
||||
Af8DnQH/A50B/wOdAf8DnQH/CAABUwJPAaUBMwEYAQAB/wFYAUMBLgH/AY8BVQFAAf8BrAGIAUoB/wHC
|
||||
AaMBiAH/AcEBpQGOAf8BswGYAYEB/wGRAVUBPwH/AVMBOgElAf8BQgEbAQAB/wFWAlUBsQgAAwgBCwNV
|
||||
AbIDVgGzAVUBsgGoAf8BXAG9AacB/wGHAcEBtQH/AYYBwQG2Af8BhwHBAbcB/wGIAcEBuQH/ASMBogGI
|
||||
Af8BPQGcAcsB/wFeAbAB1QH/AQIBRgGfAf8QAAMrAUIDSAGEAVUCVwG3AUwCXwHzAVUBpAHXAf8BoQHC
|
||||
Ae0B/wGfAcAB7QH/AZ0BvwHtAf8BUwGjAeQB/wE5AZIB3wH/ATcBkAHeAf8BWgGnAeYB/wGSAbYB6AH/
|
||||
ASIBXgG3Af8DNwFaA50B/wG6Ar0B/wHmAuwB/wHmAu0B/wHnAu0B/wHoAu4B/wHpAu8B/wHpAu8B/wHq
|
||||
Au8B/wHqAvAB/wHrAvAB/wHrAvEB/wHsAvEB/wHsAvEB/wG9Ar8B/wOdAf8EAAM5AV8BVAE0ARkB/wHD
|
||||
AbEBogH/AbYBnAGDAf8BpgFYASsB/wGoAVYBKAH/AcMBpAGHAf8B2AHGAbAB/wG9AakBiwH/AV4BPgEe
|
||||
Af8BOwEbAQAB/wExAQ0BAAH/ATgBEQEAAf8DMwFTCAADBgEIA1UBsgEuAaABigH/AZMByQG6Af8BPgGv
|
||||
AZcB/wEjAaIBgwH/ASQBowGHAf8BJgGkAYsB/wElAaoBkgH/ATMBwgHtAf8BgQG0AdcB/wEHAUoBowH/
|
||||
DAADTAGTAUMBlwHPAf8BWgGoAdkB/wGNAbQB4gH/AaMBxAHtAf8BpwHHAe4B/wFDAZcBzQH/ARMBVAGy
|
||||
Af8BPgGTAckB/wGfAcAB7QH/AVcBlgGjAf8BngGWAScB/wFbAZQBkQH/AY0BswHpAf8BWAGlAdgB/wFa
|
||||
Al4B2AQAA1wB6gHbAuIB/wHNAs8B/wPLAf8DzAH/A84B/wPPAf8D0AH/A9IB/wPTAf8D1QH/AdcC2AH/
|
||||
AecC7AH/A20B9wQAAyIBMQFWAlUBsQFGARoBAAH/AaoBhQE+Af8BsgFRAQ8B/wGtAS4BAAH/AboBSwED
|
||||
Af8B6gHVAb8B/wH9AfwB+gH/AdYBvgGmAf8BkAE+AQsB/wFBAQ8BAAH/AUIBHwEAAf8BOwEbAQAB/wNX
|
||||
AcUDHAEnCAADBAEGARQBlAFWAf8BTQG5AZ4B/wEoAaYBiQH/AVgBsQHVAf8BVAGtAdQB/wFQAasB0gH/
|
||||
AT4BugHkAf8BAAGZAUgB/wEGAY4BNwH/AQkBTwGaAf8MAAFIAmIB9gGuAc0B8AH/AbABzwHwAf8BmAG/
|
||||
AewB/wFdAa4B5wH/AaoBygHvAf8BHAFaAbgB/wQAARQBVQGzAf8BogHDAe0B/wGoAZcBEAH/AcQBtQE5
|
||||
Af8BrAGXAQUB/wE6AZMB3wH/AZgBuwHrAf8BAAFDAZ8B/wQAA1wB6gHZAuEB/wHLAswB/wPHAf8DyAH/
|
||||
A8oB/wPLAf8DzQH/A84B/wPQAf8D0QH/AdMC1AH/AeUC6wH/A20B9wQAAy4BRwNZAewBQQEPAQAB/wGZ
|
||||
AS4BAAH/AbgBRgEAAf8BwgFCAQAB/wHJAVQBAgH/AeYBvwGUAf8B7AHUAbYB/wHNAZwBQQH/AagBSwEL
|
||||
Af8BmQFMASAB/wGjAYwBUQH/AV4BRQEuAf8CUQE/AfcBNQI0AVUMAAE3AY4BxAH/ATEBrAGLAf8BLgGq
|
||||
AY8B/wFdAbUB2AH/AVkBsgHWAf8BVgGvAdUB/wFSAawB0wH/AQMBkAFBAf8BOAGoAYQB/wEAAVcBMgH/
|
||||
AxQBGwgAAVoCYAHeAagByQHtAf8BhAGnAe0B/wE3AUkB7QH/AUkBjgHpAf8BrQHNAfAB/wFMAZ0B0gH/
|
||||
AR0BWwG5Af8BRgGZAc4B/wGlAcUB7gH/AZUBmgFIAf8BrQGXAQUB/wGdAZcBLAH/AUUBmwHiAf8BmAG7
|
||||
AeoB/wFIAmIB9gQAA1wB6gHXAt8B/wHHAskB/wPCAf8DxAH/A8UB/wPIAf8DyQH/A8oB/wPMAf8DzQH/
|
||||
AdAC0QH/AeMC6gH/A20B9wQAAzkBXwJAASQB/QFTARoBAAH/Aa4BOAEAAf8BwAFAAQAB/wHnAZYBJQH/
|
||||
AegBsgFZAf8B5AGxAVkB/wHSAYkBGAH/Ab0BRQEAAf8BqAEzAQAB/wG4AY0BPAH/AdQBwwGyAf8BmAGE
|
||||
AU0B/wE6ARwBAAH/AT4CPQFqDAABPQGRAckB/wGkAcwB5AH/AYcBuwHbAf8BHgGhAVkB/wEYAZwBUwH/
|
||||
ARMBmgFPAf8BDgGWAUkB/wEqAaMBgQH/AYQBwAGrAf8BIQGWAVgB/wNRAaIDFQEdBAADUQGcAZIBuQHl
|
||||
Af8BTQFTAfYB/wGBAYQB9QH/Ah8B8AH/AZABuwHrAf8BrgHNAfAB/wGsAcwB8AH/AaoBygHwAf8BhQGy
|
||||
AekB/wE9AakBwQH/ASMBswGNAf8BNQGoAbYB/wFPAaEB5AH/AZcBugHoAf8DXQHtBAADXAHqAdYC3wH/
|
||||
AcMCxQH/A8AB/wPAAf8DwgH/A8MB/wPEAf8DxQH/A8gB/wPJAf8DzQH/AeAC6AH/A20B9wQAAzcBWgJN
|
||||
ASgB+gGDASUBAAH/AcsBTwEAAf8B5QGLARwB/wH+AbYBUQL/AeMBwgH/AfQBvAGFAf8B1gFWAQgB/wHF
|
||||
AU0BAAH/AboBQgEAAf8BrwFWARgB/wGuAYgBPAH/AZQBVQE8Af8BOwEdAQEB/wM8AWYMAAFCAZUBzQH/
|
||||
AagBzwHlAf8BjAG/Ad0B/wEkAaUBgQH/AY0BxQG4Af8BiQHDAbQB/wGGAcEBsQH/AYQBvwGvAf8BVgG5
|
||||
AZ8B/wFNAa0BoAH/A1YBswFQAVIBUAGkAxgBIgMjATMBKwFkAXoB/AGSAaQB9QH/ATgBOQH2Af8BMAGG
|
||||
AfQB/wEaAaYB+wH/ATsBqwHyAf8BXQGvAecB/wFaAa0B5wH/AVcBqgHmAf8BHgG2AYAB/wE/AcgBlwH/
|
||||
ARoBtwFZAf8BXAGsAecB/wGPAbUB4wH/AVoCXgHVBAADYAHWAccCzQH/AdsC5AH/AdsC5AH/AdsC5QH/
|
||||
AdwC5QH/AdwC5QH/Ad0C5gH/Ad0C5gH/Ad4C5wH/Ad8C6AH/AeAC6AH/Ac0C0wH/A18B4wQAAyYBOQFg
|
||||
AloB3gGOAS0BAAH/AewBngEyAf8B/gG/AYUC/wHMAaEC/wHfAbsB/wH+AcIBXgH/AeIBjgEoAf8B0wGE
|
||||
ARkB/wHKAVgBCwH/AbUBTwEJAf8BlwFAAQYB/wGBAT0BGAH/A1kB7AMuAUgMAAFGAZgB0AH/AasB0QHn
|
||||
Af8BkAHCAd8B/wErAakBiAH/AZEByQG7Af8BVQG6AaUB/wFRAbgBoQH/AU0BtgGeAf8BUQG4AZ0B/wE8
|
||||
AaUBkgH/A1YBswNWAbMBVQFWAVUBsQQAA0kBhwGGAa8B4QH/AbkB1wHzAf8BEQGmAf4B/wFLAb8C/wEK
|
||||
AaMC/wFFAb4B8AH/ARkBzgH7Af8BOQG+AfEB/wExAbMBoAH/ARoBtwFYAf8BJgGzAZAB/wGnAcgB7gH/
|
||||
AVYBpQHWAf8BTwJRAZwEAAMsAUMDWwHIA50B/wOdAf8DnQH/A50B/wOdAf8DnQH/A50B/wOdAf8DnQH/
|
||||
A50B/wNeAd0DMQFOBAADCQEMA0sBjgHAAU0BDAL/AbwBXgH/AfoBzgGnAf8B+AHbAb4C/wHiAcYC/wG+
|
||||
AYYB/wH0AawBVAH/AewBwgGaAf8B4gG1AYsB/wG4AVQBEgH/AZ0BQwELAf8BiAFDAR8B/wNPAaUDEAEV
|
||||
DAABSgGbAdMB/wGuAdQB6AH/AasB0wHoAf8BOAGxAZAB/wGbAc4BwAH/AZkBzQG9Af8BlgHLAbsB/wGV
|
||||
AcoBuQH/AYABvwGoAf8BVgGzAakB/wNWAbMDVQGyAwgBCwQAAwQBBgNRAZ8BhQGuAeEB/wE5AbIB+QH/
|
||||
AQoBowL/AR8BqQH7Af8BDwHTAf4B/wFLAeIC/wEKAdUC/wFeAbAB6AH/AVsBrQHnAf8BqQHKAe8B/wGl
|
||||
AcUB7QH/ASsBVgFxAfwDIQEwRAADEwEaAmQBUwHxAdgBngFRAf8B5wHTAcAB/wH8AfUB7gL/AfgB6wL/
|
||||
AeUBwgH/AfYBuQGCAf8B8gHSAbgB/wHuAdIBtgH/AcIBhgEtAf8BpwFVASYB/wJNASkB+gMdASkQAAFN
|
||||
AZ0B1QH/AUsBmwHTAf8BSAGaAdIB/wEoAaEBjAH/ASMBnwGKAf8BIAGdAYUB/wEcAZkBgAH/ATUBpQGS
|
||||
Af8BXgG4AbEB/wEvAaEBiwH/A1UBsgMGAQgQAANCAXUBXwJiAfYBjgG2AeMB/wG5AdcB8wH/ATwB1QH7
|
||||
Af8BCQHVAv8BIAHRAfsB/wGzAdIB8gH/AbEB0AHxAf8BkgG4AeIB/wFBAZUBzAH/A0oBikwAAzUBVwGp
|
||||
AUEBEwH/AcoBuAGoBv8B/gH8Av8B9gHiAf8B+wHFAaAB/wHkAbkBlQH/AdsBrAFcAf8BwwGOATsB/wGT
|
||||
AUMBFwH/AT4CPQFqMAABUwJUAawDVgGzA1YBswMEAQYYAAMWAR4DVAGuAVUBowHcAf8BkQG4AeQB/wGo
|
||||
AcoB7AH/AaUBxwHsAf8BjQG1AeIB/wFHAZoB0gH/AVoCXwHbAzEBTlQAAzIBUQJkAVkB7AHQAbIBlQH/
|
||||
AewB4AHZAf8B5gHVAcQB/wHTAbABlAH/AdMBpgFWAf8BywGPATQB/wFnAWUBWQHyAToCOQFgNAABUwJU
|
||||
AawDVgGzAwQBBiQAAysBQgNMAZABWwJdAdIBWQJcAc8DTgGZAy0BRWAAAxEBFwNEAXoCWgFXAcUCZQFe
|
||||
AeUCYQFYAeYCXAFZAckCSAFHAYMDFQEdEAABQgFNAT4HAAE+AwABKAMAAUADAAEgAwABAQEAAQEGAAEB
|
||||
FgAD/wEAAeABBwIAAfwBPwIAAcABAwIAAfwBPwIAAcABAwIAAcABAwIAAcABAwIAAcABAwIAAcABAwIA
|
||||
AcABAwIAAcABAwIAAcABAwIAAcABAwYAAcABAwIAAQEBgAIAAcABAwGAAgEBgAIAAcABAwGAAQEEAAHA
|
||||
AQMBwAEDAcABAwIAAcABAwHwAQ8BwAEDAgABwAEDAfABDwGAAQMCAAHAAQMB8AEPAcABAwIAAcABAwHw
|
||||
AQ8B8AEPAgABwAEDAfgBHwH8AT8CAAHjBf8B4AEHAYABAQH8AR8C/wHAAQMBgAEHAfgBBwL/AYABAwEA
|
||||
AQcB+AEDAv8BwAEDAQABBwHwAQECAAHAAQMBAAEHAYADAAGAAQEBgAEHAgABgAEBAgABwAEHAQEBAAGA
|
||||
AQECAAHgAQMCAAGAAQECAAHgAQECAAGAAQECAAHgAwABgAEBAgAB4AEAAYABAAGAAQECAAHgAQABgAEA
|
||||
Av8BgAEBAeABAQHgAQEC/wHAAQMB/wHDAfABAwL/AeABBwH/AccB/AEPAv8B8AEPCw==
|
||||
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
|
||||
@@ -109,17 +113,32 @@ Public Class frmOptions
|
||||
Friend WithEvents lblExperimental As System.Windows.Forms.Label
|
||||
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()
|
||||
@@ -190,14 +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()
|
||||
@@ -210,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()
|
||||
@@ -224,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()
|
||||
@@ -241,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
|
||||
@@ -273,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)
|
||||
@@ -291,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
|
||||
'
|
||||
@@ -425,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
|
||||
@@ -663,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
|
||||
@@ -719,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
|
||||
@@ -744,7 +778,7 @@ Public Class frmOptions
|
||||
'chkAlwaysShowPanelSelectionDlg
|
||||
'
|
||||
Me.chkAlwaysShowPanelSelectionDlg.AutoSize = True
|
||||
Me.chkAlwaysShowPanelSelectionDlg.Location = New System.Drawing.Point(3, 95)
|
||||
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
|
||||
@@ -754,7 +788,7 @@ Public Class frmOptions
|
||||
'chkShowLogonInfoOnTabs
|
||||
'
|
||||
Me.chkShowLogonInfoOnTabs.AutoSize = True
|
||||
Me.chkShowLogonInfoOnTabs.Location = New System.Drawing.Point(3, 26)
|
||||
Me.chkShowLogonInfoOnTabs.Location = New System.Drawing.Point(3, 49)
|
||||
Me.chkShowLogonInfoOnTabs.Name = "chkShowLogonInfoOnTabs"
|
||||
Me.chkShowLogonInfoOnTabs.Size = New System.Drawing.Size(203, 17)
|
||||
Me.chkShowLogonInfoOnTabs.TabIndex = 1
|
||||
@@ -764,7 +798,7 @@ Public Class frmOptions
|
||||
'chkDoubleClickClosesTab
|
||||
'
|
||||
Me.chkDoubleClickClosesTab.AutoSize = True
|
||||
Me.chkDoubleClickClosesTab.Location = New System.Drawing.Point(3, 72)
|
||||
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
|
||||
@@ -774,7 +808,7 @@ Public Class frmOptions
|
||||
'chkShowProtocolOnTabs
|
||||
'
|
||||
Me.chkShowProtocolOnTabs.AutoSize = True
|
||||
Me.chkShowProtocolOnTabs.Location = New System.Drawing.Point(3, 49)
|
||||
Me.chkShowProtocolOnTabs.Location = New System.Drawing.Point(3, 72)
|
||||
Me.chkShowProtocolOnTabs.Name = "chkShowProtocolOnTabs"
|
||||
Me.chkShowProtocolOnTabs.Size = New System.Drawing.Size(166, 17)
|
||||
Me.chkShowProtocolOnTabs.TabIndex = 2
|
||||
@@ -784,7 +818,7 @@ Public Class frmOptions
|
||||
'chkOpenNewTabRightOfSelected
|
||||
'
|
||||
Me.chkOpenNewTabRightOfSelected.AutoSize = True
|
||||
Me.chkOpenNewTabRightOfSelected.Location = New System.Drawing.Point(3, 3)
|
||||
Me.chkOpenNewTabRightOfSelected.Location = New System.Drawing.Point(3, 26)
|
||||
Me.chkOpenNewTabRightOfSelected.Name = "chkOpenNewTabRightOfSelected"
|
||||
Me.chkOpenNewTabRightOfSelected.Size = New System.Drawing.Size(280, 17)
|
||||
Me.chkOpenNewTabRightOfSelected.TabIndex = 0
|
||||
@@ -795,7 +829,7 @@ Public Class frmOptions
|
||||
'
|
||||
Me.chkMCWarnings.AutoSize = True
|
||||
Me.chkMCWarnings.Enabled = False
|
||||
Me.chkMCWarnings.Location = New System.Drawing.Point(19, 214)
|
||||
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
|
||||
@@ -806,7 +840,7 @@ Public Class frmOptions
|
||||
'
|
||||
Me.chkMCErrors.AutoSize = True
|
||||
Me.chkMCErrors.Enabled = False
|
||||
Me.chkMCErrors.Location = New System.Drawing.Point(19, 237)
|
||||
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
|
||||
@@ -817,7 +851,7 @@ Public Class frmOptions
|
||||
'
|
||||
Me.chkMCInformation.AutoSize = True
|
||||
Me.chkMCInformation.Enabled = False
|
||||
Me.chkMCInformation.Location = New System.Drawing.Point(19, 191)
|
||||
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
|
||||
@@ -827,7 +861,7 @@ Public Class frmOptions
|
||||
'lblSwitchToErrorsAndInfos
|
||||
'
|
||||
Me.lblSwitchToErrorsAndInfos.AutoSize = True
|
||||
Me.lblSwitchToErrorsAndInfos.Location = New System.Drawing.Point(3, 171)
|
||||
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
|
||||
@@ -836,7 +870,7 @@ Public Class frmOptions
|
||||
'chkUseOnlyErrorsAndInfosPanel
|
||||
'
|
||||
Me.chkUseOnlyErrorsAndInfosPanel.AutoSize = True
|
||||
Me.chkUseOnlyErrorsAndInfosPanel.Location = New System.Drawing.Point(3, 146)
|
||||
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
|
||||
@@ -846,7 +880,7 @@ Public Class frmOptions
|
||||
'chkShowFullConnectionsFilePathInTitle
|
||||
'
|
||||
Me.chkShowFullConnectionsFilePathInTitle.AutoSize = True
|
||||
Me.chkShowFullConnectionsFilePathInTitle.Location = New System.Drawing.Point(3, 128)
|
||||
Me.chkShowFullConnectionsFilePathInTitle.Location = New System.Drawing.Point(3, 141)
|
||||
Me.chkShowFullConnectionsFilePathInTitle.Name = "chkShowFullConnectionsFilePathInTitle"
|
||||
Me.chkShowFullConnectionsFilePathInTitle.Size = New System.Drawing.Size(239, 17)
|
||||
Me.chkShowFullConnectionsFilePathInTitle.TabIndex = 4
|
||||
@@ -856,7 +890,7 @@ Public Class frmOptions
|
||||
'chkShowSystemTrayIcon
|
||||
'
|
||||
Me.chkShowSystemTrayIcon.AutoSize = True
|
||||
Me.chkShowSystemTrayIcon.Location = New System.Drawing.Point(3, 176)
|
||||
Me.chkShowSystemTrayIcon.Location = New System.Drawing.Point(3, 187)
|
||||
Me.chkShowSystemTrayIcon.Name = "chkShowSystemTrayIcon"
|
||||
Me.chkShowSystemTrayIcon.Size = New System.Drawing.Size(172, 17)
|
||||
Me.chkShowSystemTrayIcon.TabIndex = 5
|
||||
@@ -866,7 +900,7 @@ Public Class frmOptions
|
||||
'chkMinimizeToSystemTray
|
||||
'
|
||||
Me.chkMinimizeToSystemTray.AutoSize = True
|
||||
Me.chkMinimizeToSystemTray.Location = New System.Drawing.Point(3, 200)
|
||||
Me.chkMinimizeToSystemTray.Location = New System.Drawing.Point(3, 210)
|
||||
Me.chkMinimizeToSystemTray.Name = "chkMinimizeToSystemTray"
|
||||
Me.chkMinimizeToSystemTray.Size = New System.Drawing.Size(139, 17)
|
||||
Me.chkMinimizeToSystemTray.TabIndex = 6
|
||||
@@ -876,7 +910,7 @@ Public Class frmOptions
|
||||
'chkShowDescriptionTooltipsInTree
|
||||
'
|
||||
Me.chkShowDescriptionTooltipsInTree.AutoSize = True
|
||||
Me.chkShowDescriptionTooltipsInTree.Location = New System.Drawing.Point(3, 104)
|
||||
Me.chkShowDescriptionTooltipsInTree.Location = New System.Drawing.Point(3, 118)
|
||||
Me.chkShowDescriptionTooltipsInTree.Name = "chkShowDescriptionTooltipsInTree"
|
||||
Me.chkShowDescriptionTooltipsInTree.Size = New System.Drawing.Size(231, 17)
|
||||
Me.chkShowDescriptionTooltipsInTree.TabIndex = 3
|
||||
@@ -914,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
|
||||
@@ -924,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
|
||||
@@ -954,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)
|
||||
@@ -980,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
|
||||
@@ -990,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)
|
||||
@@ -1021,6 +1034,8 @@ 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)
|
||||
@@ -1038,6 +1053,26 @@ Public Class frmOptions
|
||||
Me.tabTabsAndPanels.Text = "Tabs & Panels"
|
||||
Me.tabTabsAndPanels.UseVisualStyleBackColor = True
|
||||
'
|
||||
'chkAlwaysShowPanelTabs
|
||||
'
|
||||
Me.chkAlwaysShowPanelTabs.AutoSize = True
|
||||
Me.chkAlwaysShowPanelTabs.Location = New System.Drawing.Point(3, 3)
|
||||
Me.chkAlwaysShowPanelTabs.Name = "chkAlwaysShowPanelTabs"
|
||||
Me.chkAlwaysShowPanelTabs.Size = New System.Drawing.Size(139, 17)
|
||||
Me.chkAlwaysShowPanelTabs.TabIndex = 7
|
||||
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)
|
||||
@@ -1046,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)
|
||||
@@ -1169,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)
|
||||
@@ -1342,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
|
||||
@@ -1386,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
|
||||
@@ -1400,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
|
||||
|
||||
@@ -1418,6 +1581,7 @@ Public Class frmOptions
|
||||
Me.cboLanguage.SelectedIndex = 0
|
||||
End If
|
||||
|
||||
chkAlwaysShowPanelTabs.Checked = Settings.AlwaysShowPanelTabs
|
||||
Me.chkShowDescriptionTooltipsInTree.Checked = My.Settings.ShowDescriptionTooltipsInTree
|
||||
Me.chkShowSystemTrayIcon.Checked = My.Settings.ShowSystemTrayIcon
|
||||
Me.chkMinimizeToSystemTray.Checked = My.Settings.MinimizeToTray
|
||||
@@ -1425,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
|
||||
@@ -1485,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
|
||||
@@ -1505,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
|
||||
@@ -1513,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
|
||||
|
||||
@@ -1524,6 +1702,9 @@ Public Class frmOptions
|
||||
My.Settings.OverrideUICulture = ""
|
||||
End If
|
||||
|
||||
Settings.AlwaysShowPanelTabs = chkAlwaysShowPanelTabs.Checked
|
||||
frmMain.ShowHidePanelTabs()
|
||||
|
||||
My.Settings.ShowDescriptionTooltipsInTree = Me.chkShowDescriptionTooltipsInTree.Checked
|
||||
My.Settings.ShowSystemTrayIcon = Me.chkShowSystemTrayIcon.Checked
|
||||
My.Settings.MinimizeToTray = Me.chkMinimizeToSystemTray.Checked
|
||||
@@ -1544,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
|
||||
|
||||
@@ -1603,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
|
||||
@@ -1625,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)
|
||||
@@ -1644,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"
|
||||
@@ -1685,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
|
||||
@@ -1709,14 +1897,14 @@ 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
|
||||
chkShowSystemTrayIcon.Text = My.Language.strAlwaysShowSysTrayIcon
|
||||
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
|
||||
@@ -1739,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
|
||||
@@ -1757,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)
|
||||
@@ -1766,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
|
||||
@@ -1816,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
|
||||
@@ -1874,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
|
||||
@@ -1893,10 +2160,50 @@ Public Class frmOptions
|
||||
End If
|
||||
End If
|
||||
End Sub
|
||||
#End Region
|
||||
|
||||
|
||||
Private Sub lblProxyPort_Click(sender As System.Object, e As System.EventArgs) Handles lblProxyPort.Click
|
||||
|
||||
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
|
||||
|
||||
718
mRemoteV1/Language/Language.Designer.vb
generated
718
mRemoteV1/Language/Language.Designer.vb
generated
@@ -1,7 +1,7 @@
|
||||
'------------------------------------------------------------------------------
|
||||
' <auto-generated>
|
||||
' This code was generated by a tool.
|
||||
' Runtime Version:4.0.30319.261
|
||||
' Runtime Version:4.0.30319.296
|
||||
'
|
||||
' Changes to this file may cause incorrect behavior and will be lost if
|
||||
' the code is regenerated.
|
||||
@@ -163,6 +163,15 @@ Namespace My
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Always show panel tabs.
|
||||
'''</summary>
|
||||
Friend Shared ReadOnly Property strAlwaysShowPanelTabs() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("strAlwaysShowPanelTabs", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Always show notification area icon.
|
||||
'''</summary>
|
||||
@@ -254,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
|
||||
@@ -552,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
|
||||
@@ -643,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
|
||||
@@ -909,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>
|
||||
@@ -918,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>
|
||||
@@ -990,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>
|
||||
@@ -1062,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>
|
||||
@@ -1317,6 +1352,15 @@ Namespace My
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Could not find ToolStrip control in FilteredPropertyGrid..
|
||||
'''</summary>
|
||||
Friend Shared ReadOnly Property strCouldNotFindToolStripInFilteredPropertyGrid() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("strCouldNotFindToolStripInFilteredPropertyGrid", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Installed version.
|
||||
'''</summary>
|
||||
@@ -1326,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>
|
||||
@@ -1515,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>
|
||||
@@ -1826,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
|
||||
@@ -1933,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>
|
||||
@@ -2131,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>
|
||||
@@ -2339,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
|
||||
@@ -2347,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>
|
||||
@@ -2734,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>
|
||||
@@ -2896,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>
|
||||
@@ -2914,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>
|
||||
@@ -3194,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>
|
||||
@@ -3275,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>
|
||||
@@ -3410,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>
|
||||
@@ -3725,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>
|
||||
@@ -3860,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>
|
||||
@@ -4268,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>
|
||||
@@ -4358,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>
|
||||
@@ -4701,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
|
||||
@@ -5006,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>
|
||||
@@ -5259,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
|
||||
@@ -5366,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>
|
||||
@@ -5474,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>
|
||||
@@ -5493,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
|
||||
@@ -5502,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
|
||||
|
||||
@@ -5519,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..
|
||||
@@ -5539,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
|
||||
@@ -5548,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
|
||||
@@ -5593,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
|
||||
|
||||
|
||||
@@ -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>
|
||||
@@ -219,12 +219,18 @@
|
||||
<data name="strButtonNew" xml:space="preserve">
|
||||
<value>&Neu</value>
|
||||
</data>
|
||||
<data name="strButtonOK" xml:space="preserve">
|
||||
<value>&Okay</value>
|
||||
</data>
|
||||
<data name="strButtonProperties" xml:space="preserve">
|
||||
<value>Eigenschaften</value>
|
||||
</data>
|
||||
<data name="strButtonScan" xml:space="preserve">
|
||||
<value>&Scannen</value>
|
||||
</data>
|
||||
<data name="strButtonStop" xml:space="preserve">
|
||||
<value>&Halt</value>
|
||||
</data>
|
||||
<data name="strButtonTestProxy" xml:space="preserve">
|
||||
<value>Proxy prüfen</value>
|
||||
</data>
|
||||
@@ -247,6 +253,9 @@ Bitte verwenden Sie Datei - Verbindungen laden für normale Verbindungs Dateien!
|
||||
<data name="strCategoryDisplay" xml:space="preserve">
|
||||
<value>Anzeige</value>
|
||||
</data>
|
||||
<data name="strCategoryGateway" xml:space="preserve">
|
||||
<value>Gateway</value>
|
||||
</data>
|
||||
<data name="strCategoryGeneral" xml:space="preserve">
|
||||
<value>Allgemein</value>
|
||||
</data>
|
||||
@@ -390,6 +399,9 @@ VncSharpNG Control Version {0}</value>
|
||||
<data name="strColumnFilename" xml:space="preserve">
|
||||
<value>Dateiname</value>
|
||||
</data>
|
||||
<data name="strColumnHostnameIP" xml:space="preserve">
|
||||
<value>Hostname/IP</value>
|
||||
</data>
|
||||
<data name="strColumnMessage" xml:space="preserve">
|
||||
<value>Nachricht</value>
|
||||
</data>
|
||||
@@ -426,6 +438,12 @@ VncSharpNG Control Version {0}</value>
|
||||
<data name="strConfigUiLoadFailed" xml:space="preserve">
|
||||
<value>Konfigurationsfenster laden fehlgeschlagen!</value>
|
||||
</data>
|
||||
<data name="strConfirmCloseConnectionMainInstruction" xml:space="preserve">
|
||||
<value>Möchten Sie die Verbindung "{0}" schließen?</value>
|
||||
</data>
|
||||
<data name="strConfirmCloseConnectionPanelMainInstruction" xml:space="preserve">
|
||||
<value>Sind sie sicher, dass Sie das Panel "{0}" schließen möchten? Alle Verbindung , die es enthält, werden ebenfalls geschlossen.</value>
|
||||
</data>
|
||||
<data name="strConfirmDeleteExternalTool" xml:space="preserve">
|
||||
<value>Sind Sie sicher dass Sie das extene Programm "{0}" entfernen möchten?</value>
|
||||
</data>
|
||||
@@ -441,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>
|
||||
@@ -570,18 +585,57 @@ Starte mit neuer Datei.</value>
|
||||
<data name="strEncryptCompleteConnectionFile" xml:space="preserve">
|
||||
<value>Verbindungsdaten Datei vollständig verschlüsseln</value>
|
||||
</data>
|
||||
<data name="strEndIP" xml:space="preserve">
|
||||
<value>Letzte IP</value>
|
||||
</data>
|
||||
<data name="strEndPort" xml:space="preserve">
|
||||
<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) 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) ist fehlgeschlagen. {0}</value>
|
||||
</data>
|
||||
<data name="strErrorCode" xml:space="preserve">
|
||||
<value>Fehler Nummer {0}.</value>
|
||||
</data>
|
||||
<data name="strErrorConnectionListSaveFailed" xml:space="preserve">
|
||||
<value>Die Verbindungsliste konnte nicht gespeichert werden.</value>
|
||||
</data>
|
||||
<data name="strErrorDecryptionFailed" xml:space="preserve">
|
||||
<value>Entschlüsselung ist gescheitert. {0}</value>
|
||||
</data>
|
||||
<data name="strErrorEncryptionFailed" xml:space="preserve">
|
||||
<value>Verschlüsselung fehlgeschlagen. {0}</value>
|
||||
</data>
|
||||
<data name="strErrorFipsPolicyIncompatible" xml:space="preserve">
|
||||
<value>Die Sicherheitseinstellung von Windows "Systemkryptografie: Verwenden sie FIPS-konformen Algorithmus für Verschlüsselung, hashing und Signatur", ist aktiviert. Diese Einstellung ist nicht kompatibel mit {0}. Weitere Informationen finden sie im Microsoft Support-Artikel unter http://support.microsoft.com/kb/811833 . {0} wird jetzt beendet.</value>
|
||||
</data>
|
||||
<data name="strErrors" xml:space="preserve">
|
||||
<value>Fehler</value>
|
||||
</data>
|
||||
<data name="strErrorStartupConnectionFileLoad" xml:space="preserve">
|
||||
<value>Die Verbindungseinstellungen konnten nicht geladen werden.{0}{0}{2}{0}{3}{0}{0}Um Datenverlust zu vermeiden, wird {1} jetzt beendet.</value>
|
||||
</data>
|
||||
<data name="strErrorVerifyDatabaseVersionFailed" xml:space="preserve">
|
||||
<value>VerifyDatabaseVersion (Config.Connections.Save) ist fehlgeschlagen. {0}</value>
|
||||
</data>
|
||||
<data name="strExpandAllFolders" xml:space="preserve">
|
||||
<value>Alle Ordner erweitern</value>
|
||||
</data>
|
||||
<data name="strExperimental" xml:space="preserve">
|
||||
<value>Experimentell</value>
|
||||
</data>
|
||||
<data name="strExport" xml:space="preserve">
|
||||
<value>Exportieren</value>
|
||||
</data>
|
||||
<data name="strExportmRemoteXML" xml:space="preserve">
|
||||
<value>mRemote/mRemoteNG XML exportieren</value>
|
||||
</data>
|
||||
@@ -627,6 +681,9 @@ Starte mit neuer Datei.</value>
|
||||
<data name="strGetConnectionInfoFromSqlFailed" xml:space="preserve">
|
||||
<value>Verbindungs Daten von SQL laden ist fehlgeschlagen!</value>
|
||||
</data>
|
||||
<data name="strGetConnectionInfoFromXmlFailed" xml:space="preserve">
|
||||
<value>Fehler beim Laden des Verbindungseintrag für "{0}" von "{1}". {2}</value>
|
||||
</data>
|
||||
<data name="strGroupboxAutomaticReconnect" xml:space="preserve">
|
||||
<value>Automatisches wiederverbinden</value>
|
||||
</data>
|
||||
@@ -639,15 +696,15 @@ Starte mit neuer Datei.</value>
|
||||
<data name="strGroupboxFiles" xml:space="preserve">
|
||||
<value>Dateien</value>
|
||||
</data>
|
||||
<data name="strHost" xml:space="preserve">
|
||||
<value>Host</value>
|
||||
</data>
|
||||
<data name="strHttpConnectFailed" xml:space="preserve">
|
||||
<value>Verbindung mit HTTP fehlgeschlagen!</value>
|
||||
</data>
|
||||
<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>
|
||||
@@ -708,6 +765,9 @@ Starte mit neuer Datei.</value>
|
||||
<data name="strIntAppKillFailed" xml:space="preserve">
|
||||
<value>Beenden des Internen Programmes fehlgeschlagen!</value>
|
||||
</data>
|
||||
<data name="strIntAppParentHandle" xml:space="preserve">
|
||||
<value>Panel Handle: {0}</value>
|
||||
</data>
|
||||
<data name="strIntAppResizeFailed" xml:space="preserve">
|
||||
<value>Internes Programm Größenanpassung fehlgeschlagen!</value>
|
||||
</data>
|
||||
@@ -744,12 +804,21 @@ Starte mit neuer Datei.</value>
|
||||
<data name="strLabelFilename" xml:space="preserve">
|
||||
<value>Dateiname:</value>
|
||||
</data>
|
||||
<data name="strLabelHostname" xml:space="preserve">
|
||||
<value>Hostname:</value>
|
||||
</data>
|
||||
<data name="strLabelOptions" xml:space="preserve">
|
||||
<value>Optionen:</value>
|
||||
</data>
|
||||
<data name="strLabelPassword" xml:space="preserve">
|
||||
<value>Passwort:</value>
|
||||
</data>
|
||||
<data name="strLabelPort" xml:space="preserve">
|
||||
<value>Port:</value>
|
||||
</data>
|
||||
<data name="strLabelPortableEdition" xml:space="preserve">
|
||||
<value>Portable Edition</value>
|
||||
</data>
|
||||
<data name="strLabelProtocol" xml:space="preserve">
|
||||
<value>Protokoll:</value>
|
||||
</data>
|
||||
@@ -768,6 +837,15 @@ Starte mit neuer Datei.</value>
|
||||
<data name="strLabelSelectPanel" xml:space="preserve">
|
||||
<value>Wählen Sie ein Panel aus der Liste oder klicken Sie auf Neu um ein neues zu erstellen. Klickeen Sie OK um fortzufahren.</value>
|
||||
</data>
|
||||
<data name="strLabelServerStatus" xml:space="preserve">
|
||||
<value>Server Status:</value>
|
||||
</data>
|
||||
<data name="strLabelSQLDatabaseName" xml:space="preserve">
|
||||
<value>Datenbank:</value>
|
||||
</data>
|
||||
<data name="strLabelSQLServerDatabaseName" xml:space="preserve">
|
||||
<value>Datenbank:</value>
|
||||
</data>
|
||||
<data name="strLabelUsername" xml:space="preserve">
|
||||
<value>Benutzername:</value>
|
||||
</data>
|
||||
@@ -921,6 +999,9 @@ Starte mit neuer Datei.</value>
|
||||
<data name="strMenuPaste" xml:space="preserve">
|
||||
<value>Einfügen</value>
|
||||
</data>
|
||||
<data name="strMenuPortScan" xml:space="preserve">
|
||||
<value>Port Scan</value>
|
||||
</data>
|
||||
<data name="strMenuQuickConnectToolbar" xml:space="preserve">
|
||||
<value>Direkt Verbinden Symbolleiste</value>
|
||||
</data>
|
||||
@@ -972,6 +1053,9 @@ Starte mit neuer Datei.</value>
|
||||
<data name="strMenuShowText" xml:space="preserve">
|
||||
<value>Text anzeigen</value>
|
||||
</data>
|
||||
<data name="strMenuSmartSize" xml:space="preserve">
|
||||
<value>SmartSize (RDP/VNC)</value>
|
||||
</data>
|
||||
<data name="strMenuSSHFileTransfer" xml:space="preserve">
|
||||
<value>SSH Datei Übertragung</value>
|
||||
</data>
|
||||
@@ -1041,6 +1125,9 @@ Starte mit neuer Datei.</value>
|
||||
<data name="strNone" xml:space="preserve">
|
||||
<value>Keine Angabe</value>
|
||||
</data>
|
||||
<data name="strNormal" xml:space="preserve">
|
||||
<value>Normal</value>
|
||||
</data>
|
||||
<data name="strNoSmartSize" xml:space="preserve">
|
||||
<value>Keine automatische Größenanpassung (SmartSize)</value>
|
||||
</data>
|
||||
@@ -1057,6 +1144,9 @@ Wenn Sie Fehler feststellen, dann sollten Sie eine neue Verbindungs Datei erstel
|
||||
<data name="strOpenPorts" xml:space="preserve">
|
||||
<value>Offene Ports</value>
|
||||
</data>
|
||||
<data name="strPanelName" xml:space="preserve">
|
||||
<value>Panel Name</value>
|
||||
</data>
|
||||
<data name="strPasswordProtect" xml:space="preserve">
|
||||
<value>Passwort Schutz</value>
|
||||
</data>
|
||||
@@ -1102,6 +1192,12 @@ Wenn Sie Fehler feststellen, dann sollten Sie eine neue Verbindungs Datei erstel
|
||||
<data name="strPropertyDescriptionDomain" xml:space="preserve">
|
||||
<value>Geben Sie hier ihre Domäne ein.</value>
|
||||
</data>
|
||||
<data name="strPropertyDescriptionEnableDesktopComposition" xml:space="preserve">
|
||||
<value>Wählen, ob die Desktopgestaltung genutzt werden soll.</value>
|
||||
</data>
|
||||
<data name="strPropertyDescriptionEnableFontSmoothing" xml:space="preserve">
|
||||
<value>Wählen Sie, ob eine Schriftglättung genutzt werden soll oder nicht.</value>
|
||||
</data>
|
||||
<data name="strPropertyDescriptionEncoding" xml:space="preserve">
|
||||
<value>Wählen Sie die zu verwendende Codierung.</value>
|
||||
</data>
|
||||
@@ -1169,7 +1265,7 @@ Wenn Sie Fehler feststellen, dann sollten Sie eine neue Verbindungs Datei erstel
|
||||
<value>Wählen Sie, ob ihre lokalen Drucker auf dem entfernten System zur Verfügung stehen sollen.</value>
|
||||
</data>
|
||||
<data name="strPropertyDescriptionRedirectSmartCards" xml:space="preserve">
|
||||
<value>Wählen Sie, ob Ihre lokalen smart Cards auf dem entfernten System zur Verfügung stehen sollen.</value>
|
||||
<value>Wählen Sie, ob lokale Smartcards auf dem Remotehost verfügbar sein sollen.</value>
|
||||
</data>
|
||||
<data name="strPropertyDescriptionRedirectSounds" xml:space="preserve">
|
||||
<value>Wählen Sie, wie Töne auf dem entfernten System wiedergegeben werden sollen.</value>
|
||||
@@ -1210,6 +1306,9 @@ Wenn Sie Fehler feststellen, dann sollten Sie eine neue Verbindungs Datei erstel
|
||||
<data name="strPropertyDescriptionVNCProxyUsername" xml:space="preserve">
|
||||
<value>Geben Sie Ihren Benutzernamen ein.</value>
|
||||
</data>
|
||||
<data name="strPropertyNameAddress" xml:space="preserve">
|
||||
<value>Hostname/IP</value>
|
||||
</data>
|
||||
<data name="strPropertyNameAll" xml:space="preserve">
|
||||
<value>Alles</value>
|
||||
</data>
|
||||
@@ -1240,6 +1339,12 @@ Wenn Sie Fehler feststellen, dann sollten Sie eine neue Verbindungs Datei erstel
|
||||
<data name="strPropertyNameDomain" xml:space="preserve">
|
||||
<value>Domäne</value>
|
||||
</data>
|
||||
<data name="strPropertyNameEnableDesktopComposition" xml:space="preserve">
|
||||
<value>Desktopgestaltung</value>
|
||||
</data>
|
||||
<data name="strPropertyNameEnableFontSmoothing" xml:space="preserve">
|
||||
<value>Schriftglättung</value>
|
||||
</data>
|
||||
<data name="strPropertyNameEncoding" xml:space="preserve">
|
||||
<value>Codierung</value>
|
||||
</data>
|
||||
@@ -1261,9 +1366,18 @@ Wenn Sie Fehler feststellen, dann sollten Sie eine neue Verbindungs Datei erstel
|
||||
<data name="strPropertyNameMACAddress" xml:space="preserve">
|
||||
<value>MAC Adresse</value>
|
||||
</data>
|
||||
<data name="strPropertyNameName" xml:space="preserve">
|
||||
<value>Name</value>
|
||||
</data>
|
||||
<data name="strPropertyNamePanel" xml:space="preserve">
|
||||
<value>Panel</value>
|
||||
</data>
|
||||
<data name="strPropertyNamePassword" xml:space="preserve">
|
||||
<value>Passwort</value>
|
||||
</data>
|
||||
<data name="strPropertyNamePort" xml:space="preserve">
|
||||
<value>Port</value>
|
||||
</data>
|
||||
<data name="strPropertyNameProtocol" xml:space="preserve">
|
||||
<value>Protokoll</value>
|
||||
</data>
|
||||
@@ -1273,6 +1387,9 @@ Wenn Sie Fehler feststellen, dann sollten Sie eine neue Verbindungs Datei erstel
|
||||
<data name="strPropertyNameRDGatewayDomain" xml:space="preserve">
|
||||
<value>Gateway Domäne</value>
|
||||
</data>
|
||||
<data name="strPropertyNameRDGatewayHostname" xml:space="preserve">
|
||||
<value>Gateway-Hostname</value>
|
||||
</data>
|
||||
<data name="strPropertyNameRDGatewayPassword" xml:space="preserve">
|
||||
<value>Gateway Passwort</value>
|
||||
</data>
|
||||
@@ -1291,12 +1408,21 @@ Wenn Sie Fehler feststellen, dann sollten Sie eine neue Verbindungs Datei erstel
|
||||
<data name="strPropertyNameRedirectKeys" xml:space="preserve">
|
||||
<value>Tastenkombinationen</value>
|
||||
</data>
|
||||
<data name="strPropertyNameRedirectPorts" xml:space="preserve">
|
||||
<value>Ports</value>
|
||||
</data>
|
||||
<data name="strPropertyNameRedirectPrinters" xml:space="preserve">
|
||||
<value>Drucker</value>
|
||||
</data>
|
||||
<data name="strPropertyNameRedirectSmartCards" xml:space="preserve">
|
||||
<value>Smartcards</value>
|
||||
</data>
|
||||
<data name="strPropertyNameRedirectSounds" xml:space="preserve">
|
||||
<value>Töne</value>
|
||||
</data>
|
||||
<data name="strPropertyNameRenderingEngine" xml:space="preserve">
|
||||
<value>Rendering-Engine</value>
|
||||
</data>
|
||||
<data name="strPropertyNameResolution" xml:space="preserve">
|
||||
<value>Auflösung</value>
|
||||
</data>
|
||||
@@ -1315,9 +1441,15 @@ Wenn Sie Fehler feststellen, dann sollten Sie eine neue Verbindungs Datei erstel
|
||||
<data name="strPropertyNameViewOnly" xml:space="preserve">
|
||||
<value>View-Only</value>
|
||||
</data>
|
||||
<data name="strPropertyNameVNCProxyAddress" xml:space="preserve">
|
||||
<value>Proxy-Adresse</value>
|
||||
</data>
|
||||
<data name="strPropertyNameVNCProxyPassword" xml:space="preserve">
|
||||
<value>Proxy Passwort</value>
|
||||
</data>
|
||||
<data name="strPropertyNameVNCProxyPort" xml:space="preserve">
|
||||
<value>Proxy Port</value>
|
||||
</data>
|
||||
<data name="strPropertyNameVNCProxyType" xml:space="preserve">
|
||||
<value>Proxy Typ</value>
|
||||
</data>
|
||||
@@ -1353,9 +1485,15 @@ Wenn Sie Fehler feststellen, dann sollten Sie eine neue Verbindungs Datei erstel
|
||||
<data name="strPuttyGetSessionsFailed" xml:space="preserve">
|
||||
<value>Auslesen der PuTTY Verbindungsliste fehlgeschlagen!</value>
|
||||
</data>
|
||||
<data name="strPuttyHandle" xml:space="preserve">
|
||||
<value>Putty Handle: {0}</value>
|
||||
</data>
|
||||
<data name="strPuttyKillFailed" xml:space="preserve">
|
||||
<value>Beenden von PuTTY fehlgeschlagen!</value>
|
||||
</data>
|
||||
<data name="strPuttyParentHandle" xml:space="preserve">
|
||||
<value>Panel Handle: {0}</value>
|
||||
</data>
|
||||
<data name="strPuttyResizeFailed" xml:space="preserve">
|
||||
<value>Ändern der Größe fehlgschlagen!</value>
|
||||
</data>
|
||||
@@ -1371,6 +1509,9 @@ Wenn Sie Fehler feststellen, dann sollten Sie eine neue Verbindungs Datei erstel
|
||||
<data name="strPuttyStuff" xml:space="preserve">
|
||||
<value>--- PuTTY ---</value>
|
||||
</data>
|
||||
<data name="strPuttyTitle" xml:space="preserve">
|
||||
<value>Putty Title: {0}</value>
|
||||
</data>
|
||||
<data name="strQuick" xml:space="preserve">
|
||||
<value>Direkt: {0}</value>
|
||||
</data>
|
||||
@@ -1389,6 +1530,9 @@ Wenn Sie Fehler feststellen, dann sollten Sie eine neue Verbindungs Datei erstel
|
||||
<data name="strRAW" xml:space="preserve">
|
||||
<value>Rohdaten (RAW)</value>
|
||||
</data>
|
||||
<data name="strRDP" xml:space="preserve">
|
||||
<value>RDP</value>
|
||||
</data>
|
||||
<data name="strRDP16777216Colors" xml:space="preserve">
|
||||
<value>16777216 Farben (24Bit)</value>
|
||||
</data>
|
||||
@@ -1572,6 +1716,9 @@ Wenn Sie Fehler feststellen, dann sollten Sie eine neue Verbindungs Datei erstel
|
||||
<data name="strRename" xml:space="preserve">
|
||||
<value>Umbenennen</value>
|
||||
</data>
|
||||
<data name="strRlogin" xml:space="preserve">
|
||||
<value>Rlogin</value>
|
||||
</data>
|
||||
<data name="strSave" xml:space="preserve">
|
||||
<value>Speichern</value>
|
||||
</data>
|
||||
@@ -1635,9 +1782,15 @@ Wenn Sie Fehler feststellen, dann sollten Sie eine neue Verbindungs Datei erstel
|
||||
<data name="strSmartSizeModeAspect" xml:space="preserve">
|
||||
<value>Aspekt</value>
|
||||
</data>
|
||||
<data name="strSmartSizeModeFree" xml:space="preserve">
|
||||
<value>verfügbar</value>
|
||||
</data>
|
||||
<data name="strSmartSizeModeNone" xml:space="preserve">
|
||||
<value>Kein SmartSize</value>
|
||||
</data>
|
||||
<data name="strSocks5" xml:space="preserve">
|
||||
<value>Socks 5</value>
|
||||
</data>
|
||||
<data name="strSort" xml:space="preserve">
|
||||
<value>Sortieren</value>
|
||||
</data>
|
||||
@@ -1648,7 +1801,7 @@ Wenn Sie Fehler feststellen, dann sollten Sie eine neue Verbindungs Datei erstel
|
||||
<value>Absteigend (Z-A)</value>
|
||||
</data>
|
||||
<data name="strSpecialKeys" xml:space="preserve">
|
||||
<value>Spezielle Tastenkombinationen</value>
|
||||
<value>spezielle Tasten</value>
|
||||
</data>
|
||||
<data name="strSQLInfo" xml:space="preserve">
|
||||
<value>Für mehr Informationen bitte Hilfeeintrag lesen (Info - Help - Getting started - SQL Configuration)</value>
|
||||
@@ -1674,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>
|
||||
@@ -1686,6 +1836,9 @@ Wenn Sie Fehler feststellen, dann sollten Sie eine neue Verbindungs Datei erstel
|
||||
<data name="strStartupExit" xml:space="preserve">
|
||||
<value>Anfang/Ende</value>
|
||||
</data>
|
||||
<data name="strStatus" xml:space="preserve">
|
||||
<value>Status</value>
|
||||
</data>
|
||||
<data name="strSwitchToErrorsAndInfos" xml:space="preserve">
|
||||
<value>Öffne das Fehler && Infos Panel bei:</value>
|
||||
</data>
|
||||
@@ -1698,12 +1851,21 @@ Wenn Sie Fehler feststellen, dann sollten Sie eine neue Verbindungs Datei erstel
|
||||
<data name="strTabsAndPanels" xml:space="preserve">
|
||||
<value>Tabs && Panele</value>
|
||||
</data>
|
||||
<data name="strTabUpdates" xml:space="preserve">
|
||||
<value>Aktualisierungen</value>
|
||||
</data>
|
||||
<data name="strTelnet" xml:space="preserve">
|
||||
<value>Telnet</value>
|
||||
</data>
|
||||
<data name="strTheFollowing" xml:space="preserve">
|
||||
<value>die folgenden:</value>
|
||||
</data>
|
||||
<data name="strTitleError" xml:space="preserve">
|
||||
<value>Fehler ({0})</value>
|
||||
</data>
|
||||
<data name="strTitleInformation" xml:space="preserve">
|
||||
<value>Informationen ({0})</value>
|
||||
</data>
|
||||
<data name="strTitlePassword" xml:space="preserve">
|
||||
<value>Passwort</value>
|
||||
</data>
|
||||
@@ -1746,6 +1908,9 @@ Wenn Sie Fehler feststellen, dann sollten Sie eine neue Verbindungs Datei erstel
|
||||
<data name="strUpdateCheckFailed" xml:space="preserve">
|
||||
<value>Prüfung auf Aktualisierung ist fehlgeschlagen!</value>
|
||||
</data>
|
||||
<data name="strUpdateCheckPortableEdition" xml:space="preserve">
|
||||
<value>mRemoteNG Portable Edition unterstützt derzeit keine automatische Updates.</value>
|
||||
</data>
|
||||
<data name="strUpdateDeleteFailed" xml:space="preserve">
|
||||
<value>Löschen der Aktualisierungsdatei ist gehlgeschlagen!</value>
|
||||
</data>
|
||||
@@ -1787,11 +1952,17 @@ mRemoteNG wird nun geschlossen und die Installation gestartet.</value>
|
||||
<value>Selben Benutzer und Passwort verwenden</value>
|
||||
</data>
|
||||
<data name="strUseSmartCard" xml:space="preserve">
|
||||
<value>Verwenden einer smart Card</value>
|
||||
<value>Verwenden sie eine Smartcard</value>
|
||||
</data>
|
||||
<data name="strUseSQLServer" xml:space="preserve">
|
||||
<value>SQL Server für das Laden && Speichern der Verbindungen verwenden</value>
|
||||
</data>
|
||||
<data name="strVersion" xml:space="preserve">
|
||||
<value>Version</value>
|
||||
</data>
|
||||
<data name="strVnc" xml:space="preserve">
|
||||
<value>VNC</value>
|
||||
</data>
|
||||
<data name="strVncConnectionDisconnectFailed" xml:space="preserve">
|
||||
<value>Trennen der VNC Verbindung fehlgeschlagen!</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>
|
||||
387
mRemoteV1/Language/Language.es-AR.resx
Normal file
387
mRemoteV1/Language/Language.es-AR.resx
Normal file
@@ -0,0 +1,387 @@
|
||||
<?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="strActive" xml:space="preserve">
|
||||
<value>Activo</value>
|
||||
</data>
|
||||
<data name="strActivity" xml:space="preserve">
|
||||
<value>Actividad</value>
|
||||
</data>
|
||||
<data name="strButtonDefaultProperties" xml:space="preserve">
|
||||
<value>Propiedades por defecto</value>
|
||||
</data>
|
||||
<data name="strButtonDisconnect" xml:space="preserve">
|
||||
<value>Desconectar</value>
|
||||
</data>
|
||||
<data name="strButtonIcon" xml:space="preserve">
|
||||
<value>Icono</value>
|
||||
</data>
|
||||
<data name="strButtonLaunchPutty" xml:space="preserve">
|
||||
<value>Ejecutar PuTTY</value>
|
||||
</data>
|
||||
<data name="strButtonOK" xml:space="preserve">
|
||||
<value>& OK</value>
|
||||
</data>
|
||||
<data name="strButtonProperties" xml:space="preserve">
|
||||
<value>Propiedades</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>Probar Proxy</value>
|
||||
</data>
|
||||
<data name="strCategoryCredentials" xml:space="preserve">
|
||||
<value>Credenciales</value>
|
||||
</data>
|
||||
<data name="strCategoryMiscellaneous" xml:space="preserve">
|
||||
<value>Varios</value>
|
||||
</data>
|
||||
<data name="strCcAlwaysShowScreen" xml:space="preserve">
|
||||
<value>Siempre mostrar esta pantalla al inicio</value>
|
||||
</data>
|
||||
<data name="strCcNotInstalledProperly" xml:space="preserve">
|
||||
<value>no está correctamente instalado</value>
|
||||
</data>
|
||||
<data name="strCcPuttyOK" xml:space="preserve">
|
||||
<value>El ejecutable de PuTTY se encontró y debería estar listo para usarse.</value>
|
||||
</data>
|
||||
<data name="strCcRDPOK" xml:space="preserve">
|
||||
<value>Todos los componentes RDP se encontraron y parecen estar registrados correctamente. Versión de escritorio remoto {0}</value>
|
||||
</data>
|
||||
<data name="strCcVNCOK" xml:space="preserve">
|
||||
<value>Todos los componentes de VNC se encontraron y parecen estar registrados correctamente.
|
||||
VncSharpNG Control {0}</value>
|
||||
</data>
|
||||
<data name="strCheckboxAutomaticReconnect" xml:space="preserve">
|
||||
<value>Intentar reconectar automáticamente cuando se desconecte (solo para RDP && ICA)</value>
|
||||
</data>
|
||||
<data name="strCheckboxDomain" xml:space="preserve">
|
||||
<value>Dominio</value>
|
||||
</data>
|
||||
<data name="strCheckboxDoNotShowThisMessageAgain" xml:space="preserve">
|
||||
<value>No mostrar este mensaje de nuevo.</value>
|
||||
</data>
|
||||
<data name="strCheckboxInheritance" xml:space="preserve">
|
||||
<value>Herencia</value>
|
||||
</data>
|
||||
<data name="strCheckboxPassword" xml:space="preserve">
|
||||
<value>Contraseña</value>
|
||||
</data>
|
||||
<data name="strCheckboxProxyAuthentication" xml:space="preserve">
|
||||
<value>Este servidor proxy requiere autenticación</value>
|
||||
</data>
|
||||
<data name="strCheckboxPuttyPath" xml:space="preserve">
|
||||
<value>Usar ruta de Putty personalizada:</value>
|
||||
</data>
|
||||
<data name="strCheckboxReconnectWhenReady" xml:space="preserve">
|
||||
<value>Vuelva a conectarse cuando esté listo</value>
|
||||
</data>
|
||||
<data name="strCheckboxUpdateUseProxy" xml:space="preserve">
|
||||
<value>Usar un servidor proxy para conectarse</value>
|
||||
</data>
|
||||
<data name="strCheckboxUsername" xml:space="preserve">
|
||||
<value>Usuario</value>
|
||||
</data>
|
||||
<data name="strCheckboxWaitForExit" xml:space="preserve">
|
||||
<value>Esperar a Salir</value>
|
||||
</data>
|
||||
<data name="strCheckForUpdate" xml:space="preserve">
|
||||
<value>Pruebe nuevamente</value>
|
||||
</data>
|
||||
<data name="strCheckForUpdatesOnStartup" xml:space="preserve">
|
||||
<value>Comprobar las actualizaciones y anuncios en el inicio</value>
|
||||
</data>
|
||||
<data name="strCheckNow" xml:space="preserve">
|
||||
<value>Compruebe ahora</value>
|
||||
</data>
|
||||
<data name="strCheckProperInstallationOfComponentsAtStartup" xml:space="preserve">
|
||||
<value>Verifique la correcta instalación de los componentes en el inicio</value>
|
||||
</data>
|
||||
<data name="strChoosePanelBeforeConnecting" xml:space="preserve">
|
||||
<value>Elija el panel antes de conectarse</value>
|
||||
</data>
|
||||
<data name="strClosedPorts" xml:space="preserve">
|
||||
<value>Puertos Cerrados</value>
|
||||
</data>
|
||||
<data name="strCollapseAllFolders" xml:space="preserve">
|
||||
<value>Contraer todas las carpetas</value>
|
||||
</data>
|
||||
<data name="strComponentsCheck" xml:space="preserve">
|
||||
<value>Comprobación de componentes</value>
|
||||
</data>
|
||||
<data name="strConfigPropertyGridButtonIconClickFailed" xml:space="preserve">
|
||||
<value>btnIcon_Click falló!</value>
|
||||
</data>
|
||||
<data name="strConfirmCloseConnectionMainInstruction" xml:space="preserve">
|
||||
<value>¿Desea cerrar la conexión, "{0}"?</value>
|
||||
</data>
|
||||
<data name="strConfirmCloseConnectionPanelMainInstruction" xml:space="preserve">
|
||||
<value>¿Está seguro que desea cerrar el panel, "{0}"? Cualquier conexión que contenga el panel también estará cerrada.</value>
|
||||
</data>
|
||||
<data name="strConfirmDeleteNodeFolder" xml:space="preserve">
|
||||
<value>¿Está seguro que desea eliminar la carpeta vacía, "{0}"?</value>
|
||||
</data>
|
||||
<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="strConfirmExitMainInstruction" xml:space="preserve">
|
||||
<value>¿Desea cerrar todas las conexiones abiertas?</value>
|
||||
</data>
|
||||
<data name="strConfirmResetLayout" xml:space="preserve">
|
||||
<value>¿Estás seguro que deseas restablecer los paneles a su diseño predeterminado?</value>
|
||||
</data>
|
||||
<data name="strConnect" xml:space="preserve">
|
||||
<value>Conectar</value>
|
||||
</data>
|
||||
<data name="strConnecting" xml:space="preserve">
|
||||
<value>Conectando...</value>
|
||||
</data>
|
||||
<data name="strConnectionEventConnected" xml:space="preserve">
|
||||
<value>Evento de protocolo conectado</value>
|
||||
</data>
|
||||
<data name="strConnectionEventConnectionFailed" xml:space="preserve">
|
||||
<value>¡Error de conexión!</value>
|
||||
</data>
|
||||
<data name="strConnectionOpenFailed" xml:space="preserve">
|
||||
<value>No se pudo abrir la conexión!</value>
|
||||
</data>
|
||||
<data name="strConnectionOpenFailedNoHostname" xml:space="preserve">
|
||||
<value>No se puede abrir la conexión: ningún nombre de host especificado!</value>
|
||||
</data>
|
||||
<data name="strConnectionRdpErrorDetail" xml:space="preserve">
|
||||
<value>Error de RDP.
|
||||
Código de Error: {0}
|
||||
Descripción del Error: {1}</value>
|
||||
</data>
|
||||
<data name="strConnections" xml:space="preserve">
|
||||
<value>Conexiones</value>
|
||||
</data>
|
||||
<data name="strConnectionSetDefaultPortFailed" xml:space="preserve">
|
||||
<value>No se ha podido establecer el puerto predeterminado!</value>
|
||||
</data>
|
||||
<data name="strConnectionsFileBackupFailed" xml:space="preserve">
|
||||
<value>No se pudo crear copia de seguridad del archivo de conexiones!</value>
|
||||
</data>
|
||||
<data name="strConnectionsFileCouldNotBeImported" xml:space="preserve">
|
||||
<value>No se pudo importar archivo de conexiones!</value>
|
||||
</data>
|
||||
<data name="strConnectionsFileCouldNotBeLoaded" xml:space="preserve">
|
||||
<value>No se pudo cargar el archivo de conexiones "{0}"!</value>
|
||||
</data>
|
||||
<data name="strConnectionsFileCouldNotBeSaved" xml:space="preserve">
|
||||
<value>No se pudo guardar el archivo de conexiones!</value>
|
||||
</data>
|
||||
<data name="strConnectionsFileCouldNotSaveAs" xml:space="preserve">
|
||||
<value>No se pudo guardar archivo de conexiones como "{0}"!</value>
|
||||
</data>
|
||||
<data name="strConnectToConsoleSession" xml:space="preserve">
|
||||
<value>Conectar con la sesión de consola</value>
|
||||
</data>
|
||||
<data name="strConnectWithOptions" xml:space="preserve">
|
||||
<value>Conectar (con opciones)</value>
|
||||
</data>
|
||||
<data name="strConnenctionClosedByUser" xml:space="preserve">
|
||||
<value>Conexión a {0} {1} vía cerrada por usuario {2}.</value>
|
||||
</data>
|
||||
<data name="strConnenctionClosedByUserDetail" xml:space="preserve">
|
||||
<value>Conexión a {0} {1} vía cerrada por usuario {2}. (Descripción: "{3}"; Campo de usuario: "{4}")</value>
|
||||
</data>
|
||||
<data name="strConnenctionCloseEvent" xml:space="preserve">
|
||||
<value>Evento de conexión cerrada</value>
|
||||
</data>
|
||||
<data name="strConnenctionCloseEventFailed" xml:space="preserve">
|
||||
<value>Evento de cerrar conexión falló!</value>
|
||||
</data>
|
||||
<data name="strCouldNotCreateNewConnectionsFile" xml:space="preserve">
|
||||
<value>No se pudo crear el nuevo archivo de conexiones!</value>
|
||||
</data>
|
||||
<data name="strCurrentVersion" xml:space="preserve">
|
||||
<value>Versión instalada</value>
|
||||
</data>
|
||||
<data name="strDetect" xml:space="preserve">
|
||||
<value>Detectar</value>
|
||||
</data>
|
||||
<data name="strDontConnectWhenAuthFails" xml:space="preserve">
|
||||
<value>No conectar si falla la autenticación</value>
|
||||
</data>
|
||||
<data name="strDownloadAndInstall" xml:space="preserve">
|
||||
<value>Descargar e instalar</value>
|
||||
</data>
|
||||
<data name="strDuplicate" xml:space="preserve">
|
||||
<value>Duplicar</value>
|
||||
</data>
|
||||
<data name="strEmptyPasswordContinue" xml:space="preserve">
|
||||
<value>¿Desea continuar sin contraseña?</value>
|
||||
</data>
|
||||
<data name="strEmptyUsernamePasswordDomainFields" xml:space="preserve">
|
||||
<value>Si desea Nombre de usuario, password o dominio vacio use:</value>
|
||||
</data>
|
||||
<data name="strEnc128Bit" xml:space="preserve">
|
||||
<value>128-bit</value>
|
||||
</data>
|
||||
<data name="strEnc128BitLogonOnly" xml:space="preserve">
|
||||
<value>128-bit (iniciar sesión)</value>
|
||||
</data>
|
||||
<data name="strEncBasic" xml:space="preserve">
|
||||
<value>Básica</value>
|
||||
</data>
|
||||
<data name="strEncryptCompleteConnectionFile" xml:space="preserve">
|
||||
<value>Encriptar completamente el archivo de conexiones</value>
|
||||
</data>
|
||||
<data name="strEndIP" xml:space="preserve">
|
||||
<value>Último IP</value>
|
||||
</data>
|
||||
<data name="strEndPort" xml:space="preserve">
|
||||
<value>Último puerto</value>
|
||||
</data>
|
||||
<data name="strErrorAddExternalToolsToToolBarFailed" xml:space="preserve">
|
||||
<value>BarraAgregarHerramientasExternas (frmMain) falló. {0}</value>
|
||||
</data>
|
||||
<data name="strErrorBadDatabaseVersion" xml:space="preserve">
|
||||
<value>La versión de la base de datos {0} no es compatible con esta versión de {1}.</value>
|
||||
</data>
|
||||
<data name="strErrorCloneNodeFailed" xml:space="preserve">
|
||||
<value>ClonarModulo (Tree.Node) falló. {0}</value>
|
||||
</data>
|
||||
<data name="strErrorCode" xml:space="preserve">
|
||||
<value>Código de Error {0}.</value>
|
||||
</data>
|
||||
<data name="strErrorConnectionListSaveFailed" xml:space="preserve">
|
||||
<value>La lista de conexiones no pudo ser guardada.</value>
|
||||
</data>
|
||||
<data name="strErrorDecryptionFailed" xml:space="preserve">
|
||||
<value>La decriptación falló. {0}</value>
|
||||
</data>
|
||||
<data name="strErrorEncryptionFailed" xml:space="preserve">
|
||||
<value>La encriptación falló. {0}</value>
|
||||
</data>
|
||||
<data name="strErrorFipsPolicyIncompatible" xml:space="preserve">
|
||||
<value>La configuración de seguridad de Windows, "criptografía de sistema: usar FIPS algoritmos compatibles para codificación, algoritmos hash y firma", está habilitada. Esta configuración no es compatible con {0}. Consulte el artículo de soporte técnico de Microsoft en http://support.microsoft.com/kb/811833 para obtener más información. {0} se cerrará.</value>
|
||||
</data>
|
||||
<data name="strErrors" xml:space="preserve">
|
||||
<value>Errores</value>
|
||||
</data>
|
||||
<data name="strErrorVerifyDatabaseVersionFailed" xml:space="preserve">
|
||||
<value>VerificarVersionBasedeDatos (Config.Connections.Save) falló. {0}</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -219,6 +222,9 @@
|
||||
<data name="strButtonNew" xml:space="preserve">
|
||||
<value>&Nuevo</value>
|
||||
</data>
|
||||
<data name="strButtonOK" xml:space="preserve">
|
||||
<value>&OK</value>
|
||||
</data>
|
||||
<data name="strButtonProperties" xml:space="preserve">
|
||||
<value>Propiedades</value>
|
||||
</data>
|
||||
@@ -253,6 +259,9 @@
|
||||
<data name="strCategoryGateway" xml:space="preserve">
|
||||
<value>Puerta de Enlace</value>
|
||||
</data>
|
||||
<data name="strCategoryGeneral" xml:space="preserve">
|
||||
<value>General</value>
|
||||
</data>
|
||||
<data name="strCategoryMiscellaneous" xml:space="preserve">
|
||||
<value>Varios</value>
|
||||
</data>
|
||||
@@ -407,14 +416,32 @@ 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="strConfirmCloseConnection" xml:space="preserve">
|
||||
<value>Confirme el cierre de las pestañas de conexiones</value>
|
||||
<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="strConfirmCloseConnectionMainInstruction" xml:space="preserve">
|
||||
<value>Desea cerrar la conexión, "{0}"?</value>
|
||||
@@ -437,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>
|
||||
@@ -455,6 +479,9 @@ Versión de Control {0} de VNCSharpNG</value>
|
||||
<data name="strConnecting" xml:space="preserve">
|
||||
<value>Conectando...</value>
|
||||
</data>
|
||||
<data name="strConnectionEventConnected" xml:space="preserve">
|
||||
<value>Se lanzó el evento Connected en Protocol</value>
|
||||
</data>
|
||||
<data name="strConnectionEventConnectedDetail" xml:space="preserve">
|
||||
<value>Connexión a "{0}" via "{1}" establecida por el usuario "{2}" (Descripción: "{3}"; Campo de Usuario: "{4}")</value>
|
||||
</data>
|
||||
@@ -512,12 +539,21 @@ 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>
|
||||
<data name="strCouldNotCreateNewConnectionsFile" xml:space="preserve">
|
||||
<value>¡No se pudo crear un nuevo archivo de conexiones!</value>
|
||||
</data>
|
||||
<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>
|
||||
@@ -539,9 +575,15 @@ Arrancando con un nuevo archivo de conexiones.</value>
|
||||
<data name="strEmptyUsernamePasswordDomainFields" xml:space="preserve">
|
||||
<value>Para campos de Nombre de Usuario, Contraseña y Dominio vacíos usar:</value>
|
||||
</data>
|
||||
<data name="strEnc128Bit" xml:space="preserve">
|
||||
<value>128-bit</value>
|
||||
</data>
|
||||
<data name="strEnc128BitLogonOnly" xml:space="preserve">
|
||||
<value>128-bit (sólo inicio de sesión)</value>
|
||||
</data>
|
||||
<data name="strEncBasic" xml:space="preserve">
|
||||
<value>Básico</value>
|
||||
</data>
|
||||
<data name="strEncryptCompleteConnectionFile" xml:space="preserve">
|
||||
<value>Cifrar por completo el archivo de conexión</value>
|
||||
</data>
|
||||
@@ -551,21 +593,52 @@ 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>
|
||||
<data name="strErrorBadDatabaseVersion" xml:space="preserve">
|
||||
<value>La versión de Base de Datos {0} No es compatible con esta versión de {1}.</value>
|
||||
</data>
|
||||
<data name="strErrorCloneNodeFailed" xml:space="preserve">
|
||||
<value>Clonado de Nodo (Tree.Node) fallido. {0}</value>
|
||||
</data>
|
||||
<data name="strErrorCode" xml:space="preserve">
|
||||
<value>Código de error {0}.</value>
|
||||
</data>
|
||||
<data name="strErrorConnectionListSaveFailed" xml:space="preserve">
|
||||
<value>La lista de conexiones no ha podido ser grabada.</value>
|
||||
</data>
|
||||
<data name="strErrorDecryptionFailed" xml:space="preserve">
|
||||
<value>Descifrado fallido. {0}</value>
|
||||
</data>
|
||||
<data name="strErrorEncryptionFailed" xml:space="preserve">
|
||||
<value>Cifrado fallido. {0}</value>
|
||||
</data>
|
||||
<data name="strErrorFipsPolicyIncompatible" xml:space="preserve">
|
||||
<value>La configuración de Seguridad de Windows, "Criptografia del sistema: Usar Algoritmos compatibles FIPS para Encripción, Hashing y Firma", esta habilitada. Esta configuración es incompatible con {0}.
|
||||
|
||||
Ver el articulo de soporte de Microsoft en http://support.microsoft.com/kb/811833 Para más información.
|
||||
|
||||
{0} Se Cerrará.</value>
|
||||
</data>
|
||||
<data name="strErrors" xml:space="preserve">
|
||||
<value>Errores</value>
|
||||
</data>
|
||||
<data name="strErrorStartupConnectionFileLoad" xml:space="preserve">
|
||||
<value>No ha podido cargarse el archivo de conexión inicial.{0}{0}{2}{0}{3}{0}{0}Para evitar la pérdida de datos, {1} se cerrará ahora.</value>
|
||||
</data>
|
||||
<data name="strErrorVerifyDatabaseVersionFailed" xml:space="preserve">
|
||||
<value>Error.{0} en Proceso VerifyDatabaseVersion (Config.Connections.Save)</value>
|
||||
</data>
|
||||
<data name="strExpandAllFolders" xml:space="preserve">
|
||||
<value>Expandir todas las carpetas</value>
|
||||
</data>
|
||||
<data name="strExperimental" xml:space="preserve">
|
||||
<value>Experimental</value>
|
||||
</data>
|
||||
<data name="strExport" xml:space="preserve">
|
||||
<value>Exportar</value>
|
||||
</data>
|
||||
@@ -602,9 +675,15 @@ Arrancando con un nuevo archivo de conexiones.</value>
|
||||
<data name="strFormatInheritDescription" xml:space="preserve">
|
||||
<value>Descripción de la propiedad heredada: {0}</value>
|
||||
</data>
|
||||
<data name="strFree" xml:space="preserve">
|
||||
<value>Gratis</value>
|
||||
</data>
|
||||
<data name="strFullscreen" xml:space="preserve">
|
||||
<value>Pantalla Completa</value>
|
||||
</data>
|
||||
<data name="strGeneral" xml:space="preserve">
|
||||
<value>General</value>
|
||||
</data>
|
||||
<data name="strGetConnectionInfoFromSqlFailed" xml:space="preserve">
|
||||
<value>Adquisición de Información de la Conexión desde SQL fallida</value>
|
||||
</data>
|
||||
@@ -623,6 +702,9 @@ Arrancando con un nuevo archivo de conexiones.</value>
|
||||
<data name="strGroupboxFiles" xml:space="preserve">
|
||||
<value>Archivos</value>
|
||||
</data>
|
||||
<data name="strHost" xml:space="preserve">
|
||||
<value>Servidor</value>
|
||||
</data>
|
||||
<data name="strHttpConnectFailed" xml:space="preserve">
|
||||
<value>¡Conexión HTTP Fallida!</value>
|
||||
</data>
|
||||
@@ -630,7 +712,7 @@ Arrancando con un nuevo archivo de conexiones.</value>
|
||||
<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>
|
||||
@@ -680,6 +762,36 @@ Arrancando con un nuevo archivo de conexiones.</value>
|
||||
<data name="strIntAppConnectionFailed" xml:space="preserve">
|
||||
<value>¡Conexión fallida!</value>
|
||||
</data>
|
||||
<data name="strIntAppDisposeFailed" xml:space="preserve">
|
||||
<value>¡La liberación del proceso Int App ha fallado!</value>
|
||||
</data>
|
||||
<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>
|
||||
<data name="strKeysCtrlAltDel" xml:space="preserve">
|
||||
<value>CTRL-ALT-DEL</value>
|
||||
</data>
|
||||
<data name="strKeysCtrlEsc" xml:space="preserve">
|
||||
<value>CTRL-ESC</value>
|
||||
</data>
|
||||
<data name="strLabelAddress" xml:space="preserve">
|
||||
<value>Dirección:</value>
|
||||
</data>
|
||||
@@ -689,6 +801,9 @@ Arrancando con un nuevo archivo de conexiones.</value>
|
||||
<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>
|
||||
@@ -812,6 +927,12 @@ Arrancando con un nuevo archivo de conexiones.</value>
|
||||
<data name="strMenuCopy" xml:space="preserve">
|
||||
<value>Copiar</value>
|
||||
</data>
|
||||
<data name="strMenuCtrlAltDel" xml:space="preserve">
|
||||
<value>Ctrl-Alt-Del</value>
|
||||
</data>
|
||||
<data name="strMenuCtrlEsc" xml:space="preserve">
|
||||
<value>Ctrl-Esc</value>
|
||||
</data>
|
||||
<data name="strMenuDelete" xml:space="preserve">
|
||||
<value>Borrar...</value>
|
||||
</data>
|
||||
@@ -881,6 +1002,15 @@ Arrancando con un nuevo archivo de conexiones.</value>
|
||||
<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>
|
||||
@@ -941,9 +1071,15 @@ Arrancando con un nuevo archivo de conexiones.</value>
|
||||
<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>
|
||||
@@ -998,6 +1134,9 @@ Arrancando con un nuevo archivo de conexiones.</value>
|
||||
<data name="strNewTitle" xml:space="preserve">
|
||||
<value>Nuevo Título</value>
|
||||
</data>
|
||||
<data name="strNo" xml:space="preserve">
|
||||
<value>No</value>
|
||||
</data>
|
||||
<data name="strNoCompression" xml:space="preserve">
|
||||
<value>Sin Compresión</value>
|
||||
</data>
|
||||
@@ -1010,6 +1149,9 @@ Arrancando con un nuevo archivo de conexiones.</value>
|
||||
<data name="strNone" xml:space="preserve">
|
||||
<value>Ninguno</value>
|
||||
</data>
|
||||
<data name="strNormal" xml:space="preserve">
|
||||
<value>Normal</value>
|
||||
</data>
|
||||
<data name="strNoSmartSize" xml:space="preserve">
|
||||
<value>Sin SmartSize</value>
|
||||
</data>
|
||||
@@ -1026,6 +1168,15 @@ Arrancando con un nuevo archivo de conexiones.</value>
|
||||
<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>
|
||||
@@ -1147,7 +1298,7 @@ Arrancando con un nuevo archivo de conexiones.</value>
|
||||
<value>Seleccione si las impresoras locales deben ser mostradas en el host remoto.</value>
|
||||
</data>
|
||||
<data name="strPropertyDescriptionRedirectSmartCards" xml:space="preserve">
|
||||
<value>Seleccione si las smart cards locales deben estar disponibles en el host remoto.</value>
|
||||
<value>Seleccione si las tarjetas inteligentes deben presentarse a la máquina remota.</value>
|
||||
</data>
|
||||
<data name="strPropertyDescriptionRedirectSounds" xml:space="preserve">
|
||||
<value>Seleccione cómo deberá ser redireccionado el sonido remoto.</value>
|
||||
@@ -1251,6 +1402,9 @@ Arrancando con un nuevo archivo de conexiones.</value>
|
||||
<data name="strPropertyNameName" xml:space="preserve">
|
||||
<value>Nombre</value>
|
||||
</data>
|
||||
<data name="strPropertyNamePanel" xml:space="preserve">
|
||||
<value>Panel</value>
|
||||
</data>
|
||||
<data name="strPropertyNamePassword" xml:space="preserve">
|
||||
<value>Contraseña</value>
|
||||
</data>
|
||||
@@ -1293,6 +1447,9 @@ Arrancando con un nuevo archivo de conexiones.</value>
|
||||
<data name="strPropertyNameRedirectPrinters" xml:space="preserve">
|
||||
<value>Impresoras</value>
|
||||
</data>
|
||||
<data name="strPropertyNameRedirectSmartCards" xml:space="preserve">
|
||||
<value>Tarjetas Inteligentes</value>
|
||||
</data>
|
||||
<data name="strPropertyNameRedirectSounds" xml:space="preserve">
|
||||
<value>Sonidos</value>
|
||||
</data>
|
||||
@@ -1308,6 +1465,9 @@ Arrancando con un nuevo archivo de conexiones.</value>
|
||||
<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>
|
||||
@@ -1355,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>
|
||||
@@ -1370,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>
|
||||
@@ -1382,6 +1557,15 @@ 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>
|
||||
<data name="strRDP" xml:space="preserve">
|
||||
<value>RDP</value>
|
||||
</data>
|
||||
<data name="strRDP16777216Colors" xml:space="preserve">
|
||||
<value>16777216 Colores (24-bit)</value>
|
||||
</data>
|
||||
@@ -1529,6 +1713,9 @@ Mensaje:
|
||||
<data name="strRdpSetResolutionFailed" xml:space="preserve">
|
||||
<value>¡RDP Asignación de Resolución fallida!</value>
|
||||
</data>
|
||||
<data name="strRDPSmartSize" xml:space="preserve">
|
||||
<value>Tamaño inteligente</value>
|
||||
</data>
|
||||
<data name="strRDPSoundBringToThisComputer" xml:space="preserve">
|
||||
<value>Traer a este equipo</value>
|
||||
</data>
|
||||
@@ -1559,6 +1746,9 @@ Mensaje:
|
||||
<data name="strRename" xml:space="preserve">
|
||||
<value>Renombrar</value>
|
||||
</data>
|
||||
<data name="strRlogin" xml:space="preserve">
|
||||
<value>Rlogin</value>
|
||||
</data>
|
||||
<data name="strSave" xml:space="preserve">
|
||||
<value>Guardar</value>
|
||||
</data>
|
||||
@@ -1580,9 +1770,18 @@ 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>
|
||||
<data name="strSessionGetFailed" xml:space="preserve">
|
||||
<value>Falla al iniciar sesiones en Fondo</value>
|
||||
</data>
|
||||
<data name="strSessionKillFailed" xml:space="preserve">
|
||||
<value>Fallo al detener sesión en Fondo</value>
|
||||
</data>
|
||||
<data name="strSetHostnameLikeDisplayName" xml:space="preserve">
|
||||
<value>Usar el nombre del host como nombre a mostrar cuando se creen nuevas conexiones</value>
|
||||
</data>
|
||||
@@ -1619,6 +1818,9 @@ Mensaje:
|
||||
<data name="strSmartSizeModeNone" xml:space="preserve">
|
||||
<value>Sin SmartSize</value>
|
||||
</data>
|
||||
<data name="strSocks5" xml:space="preserve">
|
||||
<value>Socks 5</value>
|
||||
</data>
|
||||
<data name="strSort" xml:space="preserve">
|
||||
<value>Ordenar</value>
|
||||
</data>
|
||||
@@ -1629,7 +1831,7 @@ Mensaje:
|
||||
<value>Descendente (Z-A)</value>
|
||||
</data>
|
||||
<data name="strSpecialKeys" xml:space="preserve">
|
||||
<value>Teclas Especiales</value>
|
||||
<value>Teclas especiales</value>
|
||||
</data>
|
||||
<data name="strSQLInfo" xml:space="preserve">
|
||||
<value>¡Por favor, mire en Ayuda - Comenzando - Configuración SQL para más información!</value>
|
||||
@@ -1655,15 +1857,15 @@ 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>
|
||||
<data name="strStartPort" xml:space="preserve">
|
||||
<value>Puerto Inicial</value>
|
||||
</data>
|
||||
<data name="strStartupExit" xml:space="preserve">
|
||||
<value>Inicio/Salir</value>
|
||||
</data>
|
||||
<data name="strStatus" xml:space="preserve">
|
||||
<value>Estado</value>
|
||||
</data>
|
||||
@@ -1682,9 +1884,54 @@ Mensaje:
|
||||
<data name="strTabUpdates" xml:space="preserve">
|
||||
<value>Actualizaciones</value>
|
||||
</data>
|
||||
<data name="strTelnet" xml:space="preserve">
|
||||
<value>Telnet</value>
|
||||
</data>
|
||||
<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>
|
||||
<data name="strTitleInformation" xml:space="preserve">
|
||||
<value>Información ({0})</value>
|
||||
</data>
|
||||
@@ -1709,12 +1956,18 @@ Mensaje:
|
||||
<data name="strType" xml:space="preserve">
|
||||
<value>Tipo</value>
|
||||
</data>
|
||||
<data name="strUltraVncRepeater" xml:space="preserve">
|
||||
<value>Repetidor de Ultra VNC</value>
|
||||
</data>
|
||||
<data name="strUltraVNCSCListeningPort" xml:space="preserve">
|
||||
<value>Puerto SingleClick de UltraVNC:</value>
|
||||
</data>
|
||||
<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>
|
||||
@@ -1727,6 +1980,9 @@ Mensaje:
|
||||
<data name="strUpdateCheckFailed" xml:space="preserve">
|
||||
<value>¡Comprobación de actualizaciones fallida!</value>
|
||||
</data>
|
||||
<data name="strUpdateCheckPortableEdition" xml:space="preserve">
|
||||
<value>mRemoteNG Portable Edition no soporta por el momento actualizaciones automáticas.</value>
|
||||
</data>
|
||||
<data name="strUpdateDeleteFailed" xml:space="preserve">
|
||||
<value>¡Error borrando el archivo de actualización!</value>
|
||||
</data>
|
||||
@@ -1767,12 +2023,18 @@ mRemoteNG ahora se cerrará y comenzará la instalación.</value>
|
||||
<data name="strUseSameUsernameAndPassword" xml:space="preserve">
|
||||
<value>Usar el mismo nombre de usuario y contraseña</value>
|
||||
</data>
|
||||
<data name="strUseSmartCard" xml:space="preserve">
|
||||
<value>Usar una tarjeta inteligente</value>
|
||||
</data>
|
||||
<data name="strUseSQLServer" xml:space="preserve">
|
||||
<value>Emplear SQL Server para cargar && guardar las conexiones</value>
|
||||
</data>
|
||||
<data name="strVersion" xml:space="preserve">
|
||||
<value>Versión</value>
|
||||
</data>
|
||||
<data name="strVnc" xml:space="preserve">
|
||||
<value>VNC</value>
|
||||
</data>
|
||||
<data name="strVncConnectionDisconnectFailed" xml:space="preserve">
|
||||
<value>¡Desconexión VNC fallida!</value>
|
||||
</data>
|
||||
@@ -1809,6 +2071,9 @@ mRemoteNG ahora se cerrará y comenzará la instalación.</value>
|
||||
<data name="strWeifenLuoAttribution" xml:space="preserve">
|
||||
<value>Emplea el DockPanel Suite de [Weifen Luo]</value>
|
||||
</data>
|
||||
<data name="strWeifenLuoAttributionURL" xml:space="preserve">
|
||||
<value>http://sourceforge.net/projects/dockpanelsuite/</value>
|
||||
</data>
|
||||
<data name="strWriteLogFile" xml:space="preserve">
|
||||
<value>Escribir archivo de log (mRemoteNG.log)</value>
|
||||
</data>
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
2177
mRemoteV1/Language/Language.it.resx
Normal file
2177
mRemoteV1/Language/Language.it.resx
Normal file
File diff suppressed because it is too large
Load Diff
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
@@ -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>
|
||||
@@ -132,6 +132,9 @@
|
||||
<data name="strAddFolder" xml:space="preserve">
|
||||
<value>Nieuwe map</value>
|
||||
</data>
|
||||
<data name="strAddNodeFromXmlFailed" xml:space="preserve">
|
||||
<value>AddNodeFromXML mislukt!</value>
|
||||
</data>
|
||||
<data name="strAddNodesFromSqlFailed" xml:space="preserve">
|
||||
<value>Knooppunten toevoegen van XML mislukt!</value>
|
||||
</data>
|
||||
@@ -147,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>
|
||||
@@ -165,6 +171,9 @@
|
||||
<data name="strAskUpdatesMainInstruction" xml:space="preserve">
|
||||
<value>Automatisch bijwerken instellingen</value>
|
||||
</data>
|
||||
<data name="strAspect" xml:space="preserve">
|
||||
<value>Verhouding</value>
|
||||
</data>
|
||||
<data name="strAutomaticallyGetSessionInfo" xml:space="preserve">
|
||||
<value>Automatisch ophalen sessie informatie</value>
|
||||
</data>
|
||||
@@ -183,6 +192,9 @@
|
||||
<data name="strButtonCancel" xml:space="preserve">
|
||||
<value>&Annuleren</value>
|
||||
</data>
|
||||
<data name="strButtonChange" xml:space="preserve">
|
||||
<value>Wijzig</value>
|
||||
</data>
|
||||
<data name="strButtonClose" xml:space="preserve">
|
||||
<value>&Sluiten</value>
|
||||
</data>
|
||||
@@ -210,9 +222,21 @@
|
||||
<data name="strButtonNew" xml:space="preserve">
|
||||
<value>&Nieuw</value>
|
||||
</data>
|
||||
<data name="strButtonOK" xml:space="preserve">
|
||||
<value>&OK</value>
|
||||
</data>
|
||||
<data name="strButtonProperties" xml:space="preserve">
|
||||
<value>Eigenschapen</value>
|
||||
</data>
|
||||
<data name="strButtonScan" xml:space="preserve">
|
||||
<value>&Scan</value>
|
||||
</data>
|
||||
<data name="strButtonStop" xml:space="preserve">
|
||||
<value>&Stop</value>
|
||||
</data>
|
||||
<data name="strButtonTestProxy" xml:space="preserve">
|
||||
<value>Test Proxy</value>
|
||||
</data>
|
||||
<data name="strCannotImportNormalSessionFile" xml:space="preserve">
|
||||
<value>U kunt geen normale connectie bestand importeren.
|
||||
Gebruik dan Bestand - Laad Connecties voor normale connectie bestanden!</value>
|
||||
@@ -232,12 +256,18 @@ Gebruik dan Bestand - Laad Connecties voor normale connectie bestanden!</value>
|
||||
<data name="strCategoryDisplay" xml:space="preserve">
|
||||
<value>Scherm</value>
|
||||
</data>
|
||||
<data name="strCategoryGateway" xml:space="preserve">
|
||||
<value>Gateway</value>
|
||||
</data>
|
||||
<data name="strCategoryGeneral" xml:space="preserve">
|
||||
<value>Algemeen</value>
|
||||
</data>
|
||||
<data name="strCategoryMiscellaneous" xml:space="preserve">
|
||||
<value>Diversen</value>
|
||||
</data>
|
||||
<data name="strCategoryProtocol" xml:space="preserve">
|
||||
<value>Protocol</value>
|
||||
</data>
|
||||
<data name="strCategoryRedirect" xml:space="preserve">
|
||||
<value>Verwijzing</value>
|
||||
</data>
|
||||
@@ -387,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>
|
||||
@@ -411,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>
|
||||
@@ -435,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>
|
||||
@@ -522,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>
|
||||
@@ -546,6 +582,9 @@ Beginnen met nieuwe Connectie bestand.</value>
|
||||
<data name="strEmptyUsernamePasswordDomainFields" xml:space="preserve">
|
||||
<value>Voor lege gebruikersnaam, wachtwoord of domein velden gebruiken:</value>
|
||||
</data>
|
||||
<data name="strEnc128Bit" xml:space="preserve">
|
||||
<value>128-bit</value>
|
||||
</data>
|
||||
<data name="strEnc128BitLogonOnly" xml:space="preserve">
|
||||
<value>128-bit (aanmelding alleen)</value>
|
||||
</data>
|
||||
@@ -561,6 +600,9 @@ Beginnen met nieuwe Connectie bestand.</value>
|
||||
<data name="strEndPort" xml:space="preserve">
|
||||
<value>Eind Poort</value>
|
||||
</data>
|
||||
<data name="strErrorAddExternalToolsToToolBarFailed" xml:space="preserve">
|
||||
<value>AddExternalToolsToToolBar (frmMain) is mislukt. {0}</value>
|
||||
</data>
|
||||
<data name="strErrorAddFolderFailed" xml:space="preserve">
|
||||
<value>Map toevoegen (UI.Window.Tree) is mislukt. {0}</value>
|
||||
</data>
|
||||
@@ -576,9 +618,25 @@ Beginnen met nieuwe Connectie bestand.</value>
|
||||
<data name="strErrorConnectionListSaveFailed" xml:space="preserve">
|
||||
<value>De connectie lijst kan niet worden opgeslagen..</value>
|
||||
</data>
|
||||
<data name="strErrorDecryptionFailed" xml:space="preserve">
|
||||
<value>Decryptie is mislukt. {0}</value>
|
||||
</data>
|
||||
<data name="strErrorEncryptionFailed" xml:space="preserve">
|
||||
<value>Encryptie is mislukt. {0}</value>
|
||||
</data>
|
||||
<data name="strErrorFipsPolicyIncompatible" xml:space="preserve">
|
||||
<value>De beveiligingsinstelling voor Windows, "Systeemcryptografie: gebruik FIPS-compatibele algoritmes voor codering, hashing en ondertekening", is ingeschakeld. Deze instelling is niet compatibel met {0}.
|
||||
|
||||
Zie het Microsoft Support artikel op http://support.microsoft.com/kb/811833 voor meer informatie.
|
||||
|
||||
{0} wordt nu gesloten.</value>
|
||||
</data>
|
||||
<data name="strErrors" xml:space="preserve">
|
||||
<value>Foutmeldingen</value>
|
||||
</data>
|
||||
<data name="strErrorStartupConnectionFileLoad" xml:space="preserve">
|
||||
<value>Het verbindingsopstartbestand kon niet worden geladen. {0}{0}{2}{0}{3}{0}{0} Om dataverlies te voorkomen zal {1} nu worden afgesloten.</value>
|
||||
</data>
|
||||
<data name="strErrorVerifyDatabaseVersionFailed" xml:space="preserve">
|
||||
<value>Controleer Database Versie (Config.Connections.Save) is mislukt. {0}</value>
|
||||
</data>
|
||||
@@ -651,6 +709,9 @@ Beginnen met nieuwe Connectie bestand.</value>
|
||||
<data name="strGroupboxFiles" xml:space="preserve">
|
||||
<value>Bestanden</value>
|
||||
</data>
|
||||
<data name="strHost" xml:space="preserve">
|
||||
<value>Host</value>
|
||||
</data>
|
||||
<data name="strHttpConnectFailed" xml:space="preserve">
|
||||
<value>HTTP verbinding mislukt!</value>
|
||||
</data>
|
||||
@@ -658,7 +719,7 @@ Beginnen met nieuwe Connectie bestand.</value>
|
||||
<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>
|
||||
@@ -681,6 +742,9 @@ Beginnen met nieuwe Connectie bestand.</value>
|
||||
<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>
|
||||
@@ -732,6 +796,12 @@ Beginnen met nieuwe Connectie bestand.</value>
|
||||
<data name="strIntAppTitle" xml:space="preserve">
|
||||
<value>Interne Applicatie naam: {0}</value>
|
||||
</data>
|
||||
<data name="strKeysCtrlAltDel" xml:space="preserve">
|
||||
<value>CTRL-ALT-DEL</value>
|
||||
</data>
|
||||
<data name="strKeysCtrlEsc" xml:space="preserve">
|
||||
<value>CTRL-ESC</value>
|
||||
</data>
|
||||
<data name="strLabelAddress" xml:space="preserve">
|
||||
<value>Adres:</value>
|
||||
</data>
|
||||
@@ -741,6 +811,9 @@ Beginnen met nieuwe Connectie bestand.</value>
|
||||
<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>
|
||||
@@ -768,6 +841,9 @@ Beginnen met nieuwe Connectie bestand.</value>
|
||||
<data name="strLabelPortableEdition" xml:space="preserve">
|
||||
<value>Mobiele Editie</value>
|
||||
</data>
|
||||
<data name="strLabelProtocol" xml:space="preserve">
|
||||
<value>Protocol:</value>
|
||||
</data>
|
||||
<data name="strLabelPuttySessionsConfig" xml:space="preserve">
|
||||
<value>Om PuTTY Sessies te configureren klik op deze knop:</value>
|
||||
</data>
|
||||
@@ -783,6 +859,15 @@ Beginnen met nieuwe Connectie bestand.</value>
|
||||
<data name="strLabelSelectPanel" xml:space="preserve">
|
||||
<value>Selecteer een paneel uit de onderstaande lijst of klik op Nieuw om een nieuwe toe te voegen. Klik op OK om verder te gaan.</value>
|
||||
</data>
|
||||
<data name="strLabelServerStatus" xml:space="preserve">
|
||||
<value>Server Status:</value>
|
||||
</data>
|
||||
<data name="strLabelSQLDatabaseName" xml:space="preserve">
|
||||
<value>Database:</value>
|
||||
</data>
|
||||
<data name="strLabelSQLServerDatabaseName" xml:space="preserve">
|
||||
<value>Database:</value>
|
||||
</data>
|
||||
<data name="strLabelUsername" xml:space="preserve">
|
||||
<value>Gebruikersnaam:</value>
|
||||
</data>
|
||||
@@ -852,6 +937,12 @@ Beginnen met nieuwe Connectie bestand.</value>
|
||||
<data name="strMenuCopy" xml:space="preserve">
|
||||
<value>Kopiëren</value>
|
||||
</data>
|
||||
<data name="strMenuCtrlAltDel" xml:space="preserve">
|
||||
<value>Ctrl-Alt-Del</value>
|
||||
</data>
|
||||
<data name="strMenuCtrlEsc" xml:space="preserve">
|
||||
<value>CTRL-Esc</value>
|
||||
</data>
|
||||
<data name="strMenuDelete" xml:space="preserve">
|
||||
<value>Verwijder...</value>
|
||||
</data>
|
||||
@@ -900,6 +991,12 @@ Beginnen met nieuwe Connectie bestand.</value>
|
||||
<data name="strMenuFullScreenRDP" xml:space="preserve">
|
||||
<value>Volledig Scherm (RDP)</value>
|
||||
</data>
|
||||
<data name="strMenuHelp" xml:space="preserve">
|
||||
<value>&Help</value>
|
||||
</data>
|
||||
<data name="strMenuHelpContents" xml:space="preserve">
|
||||
<value>mRemoteNG Help</value>
|
||||
</data>
|
||||
<data name="strMenuJumpTo" xml:space="preserve">
|
||||
<value>Ga naar</value>
|
||||
</data>
|
||||
@@ -915,6 +1012,15 @@ Beginnen met nieuwe Connectie bestand.</value>
|
||||
<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>
|
||||
@@ -951,12 +1057,18 @@ Beginnen met nieuwe Connectie bestand.</value>
|
||||
<data name="strMenuReportBug" xml:space="preserve">
|
||||
<value>Meld een bug</value>
|
||||
</data>
|
||||
<data name="strMenuResetLayout" xml:space="preserve">
|
||||
<value>Herstel lay-out</value>
|
||||
</data>
|
||||
<data name="strMenuSaveConnectionFile" xml:space="preserve">
|
||||
<value>Opslaan Connectie bestand</value>
|
||||
</data>
|
||||
<data name="strMenuSaveConnectionFileAs" xml:space="preserve">
|
||||
<value>Opslaan Connectie bestand Als...</value>
|
||||
</data>
|
||||
<data name="strMenuScreenshot" xml:space="preserve">
|
||||
<value>Schermafbeelding</value>
|
||||
</data>
|
||||
<data name="strMenuScreenshotManager" xml:space="preserve">
|
||||
<value>Screenshot beheerder</value>
|
||||
</data>
|
||||
@@ -969,12 +1081,21 @@ Beginnen met nieuwe Connectie bestand.</value>
|
||||
<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>
|
||||
<data name="strMenuSmartSize" xml:space="preserve">
|
||||
<value>SmartSize (RDP/VNC)</value>
|
||||
</data>
|
||||
<data name="strMenuSSHFileTransfer" xml:space="preserve">
|
||||
<value>SSH Bestandsoverdracht</value>
|
||||
</data>
|
||||
<data name="strMenuStartChat" xml:space="preserve">
|
||||
<value>Start Chat (VNC)</value>
|
||||
</data>
|
||||
<data name="strMenuSupportForum" xml:space="preserve">
|
||||
<value>Ondersteunings Forum</value>
|
||||
</data>
|
||||
@@ -990,6 +1111,9 @@ Beginnen met nieuwe Connectie bestand.</value>
|
||||
<data name="strMenuViewOnly" xml:space="preserve">
|
||||
<value>Alleen bekijken (VNC)</value>
|
||||
</data>
|
||||
<data name="strMenuWebsite" xml:space="preserve">
|
||||
<value>Website</value>
|
||||
</data>
|
||||
<data name="strMinimizeToSysTray" xml:space="preserve">
|
||||
<value>Minimaliseer naar het systeemvak</value>
|
||||
</data>
|
||||
@@ -1054,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>
|
||||
@@ -1162,6 +1295,9 @@ Als dergelijke problemen voorkomen maak dan een nieuwe verbindings bestand aan!<
|
||||
<data name="strPropertyDescriptionRDGatewayUsername" xml:space="preserve">
|
||||
<value>Hiermee geeft u de gebruikersnaam op waarmee een gebruiker verbinding kan maken met de RD-gateway-server.</value>
|
||||
</data>
|
||||
<data name="strPropertyDescriptionRedirectDrives" xml:space="preserve">
|
||||
<value>Selecteer of lokale schijfstations op de externe host moeten worden weergegeven.</value>
|
||||
</data>
|
||||
<data name="strPropertyDescriptionRedirectKeys" xml:space="preserve">
|
||||
<value>Selecteer of toetscombinaties (b.v. Alt-Tab) moeten worden doorgestuurd naar de externe host.</value>
|
||||
</data>
|
||||
@@ -1172,7 +1308,7 @@ Als dergelijke problemen voorkomen maak dan een nieuwe verbindings bestand aan!<
|
||||
<value>Selecteer of lokale printers getoond moeten worden op de externe host.</value>
|
||||
</data>
|
||||
<data name="strPropertyDescriptionRedirectSmartCards" xml:space="preserve">
|
||||
<value>Selecteer of de lokale smart cards moet beschikbaar zijn op de externe host.</value>
|
||||
<value>Selecteer of lokale smartcards beschikbaar moeten zijn op de externe host.</value>
|
||||
</data>
|
||||
<data name="strPropertyDescriptionRedirectSounds" xml:space="preserve">
|
||||
<value>Selecteer hoe externe geluiden moeten worden doorgestuurd.</value>
|
||||
@@ -1189,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>
|
||||
@@ -1225,6 +1364,9 @@ Als dergelijke problemen voorkomen maak dan een nieuwe verbindings bestand aan!<
|
||||
<data name="strPropertyNameAuthenticationMode" xml:space="preserve">
|
||||
<value>Authenticatie Modus</value>
|
||||
</data>
|
||||
<data name="strPropertyNameCacheBitmaps" xml:space="preserve">
|
||||
<value>Cache Bitmapafbeeldingen</value>
|
||||
</data>
|
||||
<data name="strPropertyNameColors" xml:space="preserve">
|
||||
<value>Kleuren</value>
|
||||
</data>
|
||||
@@ -1282,6 +1424,9 @@ Als dergelijke problemen voorkomen maak dan een nieuwe verbindings bestand aan!<
|
||||
<data name="strPropertyNamePort" xml:space="preserve">
|
||||
<value>Poort</value>
|
||||
</data>
|
||||
<data name="strPropertyNameProtocol" xml:space="preserve">
|
||||
<value>Protocol</value>
|
||||
</data>
|
||||
<data name="strPropertyNamePuttySession" xml:space="preserve">
|
||||
<value>PuTTY Sessie</value>
|
||||
</data>
|
||||
@@ -1312,15 +1457,30 @@ Als dergelijke problemen voorkomen maak dan een nieuwe verbindings bestand aan!<
|
||||
<data name="strPropertyNameRedirectPorts" xml:space="preserve">
|
||||
<value>Poorten</value>
|
||||
</data>
|
||||
<data name="strPropertyNameRedirectPrinters" xml:space="preserve">
|
||||
<value>Printers</value>
|
||||
</data>
|
||||
<data name="strPropertyNameRedirectSmartCards" xml:space="preserve">
|
||||
<value>Smartcards</value>
|
||||
</data>
|
||||
<data name="strPropertyNameRedirectSounds" xml:space="preserve">
|
||||
<value>Geluiden</value>
|
||||
</data>
|
||||
<data name="strPropertyNameRenderingEngine" xml:space="preserve">
|
||||
<value>Rendering Engine</value>
|
||||
</data>
|
||||
<data name="strPropertyNameResolution" xml:space="preserve">
|
||||
<value>Resolutie</value>
|
||||
</data>
|
||||
<data name="strPropertyNameSmartSizeMode" xml:space="preserve">
|
||||
<value>SmartSize Modus</value>
|
||||
</data>
|
||||
<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>
|
||||
@@ -1339,6 +1499,9 @@ Als dergelijke problemen voorkomen maak dan een nieuwe verbindings bestand aan!<
|
||||
<data name="strPropertyNameVNCProxyPort" xml:space="preserve">
|
||||
<value>Proxy Poort</value>
|
||||
</data>
|
||||
<data name="strPropertyNameVNCProxyType" xml:space="preserve">
|
||||
<value>Proxy-type</value>
|
||||
</data>
|
||||
<data name="strPropertyNameVNCProxyUsername" xml:space="preserve">
|
||||
<value>Proxy Gebruikersnaam</value>
|
||||
</data>
|
||||
@@ -1384,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>
|
||||
@@ -1414,6 +1580,24 @@ 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>
|
||||
<data name="strRDP" xml:space="preserve">
|
||||
<value>RDP</value>
|
||||
</data>
|
||||
<data name="strRDP16777216Colors" xml:space="preserve">
|
||||
<value>16777216 Kleuren (24-bit)</value>
|
||||
</data>
|
||||
@@ -1564,6 +1748,9 @@ Bericht:
|
||||
<data name="strRdpSetResolutionFailed" xml:space="preserve">
|
||||
<value>RDP instellen resolutie mislukt!</value>
|
||||
</data>
|
||||
<data name="strRDPSmartSize" xml:space="preserve">
|
||||
<value>Smart Size</value>
|
||||
</data>
|
||||
<data name="strRDPSoundBringToThisComputer" xml:space="preserve">
|
||||
<value>Afspelen op deze computer</value>
|
||||
</data>
|
||||
@@ -1594,6 +1781,9 @@ Bericht:
|
||||
<data name="strRename" xml:space="preserve">
|
||||
<value>Hernoemen</value>
|
||||
</data>
|
||||
<data name="strRlogin" xml:space="preserve">
|
||||
<value>Rlogin</value>
|
||||
</data>
|
||||
<data name="strSave" xml:space="preserve">
|
||||
<value>Opslaan</value>
|
||||
</data>
|
||||
@@ -1612,6 +1802,15 @@ Bericht:
|
||||
<data name="strScreen" xml:space="preserve">
|
||||
<value>Scherm</value>
|
||||
</data>
|
||||
<data name="strScreenshot" xml:space="preserve">
|
||||
<value>Schermafbeelding</value>
|
||||
</data>
|
||||
<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>
|
||||
@@ -1648,12 +1847,18 @@ Bericht:
|
||||
<data name="strSingleClickOnOpenConnectionSwitchesToIt" xml:space="preserve">
|
||||
<value>Enkele klik om naar geopende verbinding om te schakelen</value>
|
||||
</data>
|
||||
<data name="strSmartSizeModeAspect" xml:space="preserve">
|
||||
<value>Verhouding</value>
|
||||
</data>
|
||||
<data name="strSmartSizeModeFree" xml:space="preserve">
|
||||
<value>Vrij</value>
|
||||
</data>
|
||||
<data name="strSmartSizeModeNone" xml:space="preserve">
|
||||
<value>Geen SmartSize</value>
|
||||
</data>
|
||||
<data name="strSocks5" xml:space="preserve">
|
||||
<value>Socks 5</value>
|
||||
</data>
|
||||
<data name="strSort" xml:space="preserve">
|
||||
<value>Sorteer</value>
|
||||
</data>
|
||||
@@ -1691,7 +1896,10 @@ 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>
|
||||
</data>
|
||||
<data name="strStartPort" xml:space="preserve">
|
||||
<value>Start Poort</value>
|
||||
@@ -1699,6 +1907,9 @@ Bericht:
|
||||
<data name="strStartupExit" xml:space="preserve">
|
||||
<value>Opstarten/Afsluiten</value>
|
||||
</data>
|
||||
<data name="strStatus" xml:space="preserve">
|
||||
<value>Status</value>
|
||||
</data>
|
||||
<data name="strSwitchToErrorsAndInfos" xml:space="preserve">
|
||||
<value>Schakel Notificatiepaneel in:</value>
|
||||
</data>
|
||||
@@ -1711,9 +1922,126 @@ Bericht:
|
||||
<data name="strTabsAndPanels" xml:space="preserve">
|
||||
<value>Tabbladen && Panelen</value>
|
||||
</data>
|
||||
<data name="strTabUpdates" xml:space="preserve">
|
||||
<value>Updates</value>
|
||||
</data>
|
||||
<data name="strTelnet" xml:space="preserve">
|
||||
<value>Telnet</value>
|
||||
</data>
|
||||
<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>
|
||||
@@ -1738,12 +2066,21 @@ Bericht:
|
||||
<data name="strTryIntegrate" xml:space="preserve">
|
||||
<value>Probeer te integreren</value>
|
||||
</data>
|
||||
<data name="strType" xml:space="preserve">
|
||||
<value>Type</value>
|
||||
</data>
|
||||
<data name="strUltraVncRepeater" xml:space="preserve">
|
||||
<value>UltraVNC Repeater</value>
|
||||
</data>
|
||||
<data name="strUltraVNCSCListeningPort" xml:space="preserve">
|
||||
<value>Ultra VNC Enkele Klik Poort:</value>
|
||||
</data>
|
||||
<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>
|
||||
@@ -1756,6 +2093,9 @@ Bericht:
|
||||
<data name="strUpdateCheckFailed" xml:space="preserve">
|
||||
<value>Controleren op update mislukt!</value>
|
||||
</data>
|
||||
<data name="strUpdateCheckPortableEdition" xml:space="preserve">
|
||||
<value>mRemoteNG Portable Edition ondersteunt momenteel geen automatische updates.</value>
|
||||
</data>
|
||||
<data name="strUpdateDeleteFailed" xml:space="preserve">
|
||||
<value>Fout bij verwijderen van update-bestand!</value>
|
||||
</data>
|
||||
@@ -1796,12 +2136,18 @@ mRemoteNG zal nu worden gesloten en beginnen met de installatie.</value>
|
||||
<data name="strUseSameUsernameAndPassword" xml:space="preserve">
|
||||
<value>Gebruik dezelfde gebruikersnaam en wachtwoord</value>
|
||||
</data>
|
||||
<data name="strUseSmartCard" xml:space="preserve">
|
||||
<value>Gebruik een SmartCard</value>
|
||||
</data>
|
||||
<data name="strUseSQLServer" xml:space="preserve">
|
||||
<value>Gebruik SQL Server om te connecties te laden en op te slaan</value>
|
||||
</data>
|
||||
<data name="strVersion" xml:space="preserve">
|
||||
<value>Versie</value>
|
||||
</data>
|
||||
<data name="strVnc" xml:space="preserve">
|
||||
<value>VNC</value>
|
||||
</data>
|
||||
<data name="strVncConnectionDisconnectFailed" xml:space="preserve">
|
||||
<value>VNC Sluiten connectie mislukt!</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>
|
||||
2129
mRemoteV1/Language/Language.pt.resx
Normal file
2129
mRemoteV1/Language/Language.pt.resx
Normal file
File diff suppressed because it is too large
Load Diff
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -168,6 +171,9 @@
|
||||
<data name="strAskUpdatesMainInstruction" xml:space="preserve">
|
||||
<value>Параметры автоматического обновления</value>
|
||||
</data>
|
||||
<data name="strAspect" xml:space="preserve">
|
||||
<value>Вид</value>
|
||||
</data>
|
||||
<data name="strAutomaticallyGetSessionInfo" xml:space="preserve">
|
||||
<value>Автоматически получать информацию о сессии</value>
|
||||
</data>
|
||||
@@ -244,12 +250,18 @@
|
||||
<data name="strCategoryConnection" xml:space="preserve">
|
||||
<value>Подключение</value>
|
||||
</data>
|
||||
<data name="strCategoryCredentials" xml:space="preserve">
|
||||
<value>Учетные данные</value>
|
||||
</data>
|
||||
<data name="strCategoryDisplay" xml:space="preserve">
|
||||
<value>Вид</value>
|
||||
</data>
|
||||
<data name="strCategoryGateway" xml:space="preserve">
|
||||
<value>Шлюз</value>
|
||||
</data>
|
||||
<data name="strCategoryGeneral" xml:space="preserve">
|
||||
<value>Общие</value>
|
||||
</data>
|
||||
<data name="strCategoryMiscellaneous" xml:space="preserve">
|
||||
<value>Разное</value>
|
||||
</data>
|
||||
@@ -405,11 +417,35 @@
|
||||
<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>
|
||||
<data name="strConfirmCloseConnection" xml:space="preserve">
|
||||
<value>Запрашивать подтверждение при закрытии вкладки подключения</value>
|
||||
<data name="strConfigPropertyGridButtonIconClickFailed" xml:space="preserve">
|
||||
<value>Ошибка btnIcon_Click!</value>
|
||||
</data>
|
||||
<data name="strConfigPropertyGridHideItemsFailed" xml:space="preserve">
|
||||
<value>Ошибка ShowHideGridItems!</value>
|
||||
</data>
|
||||
<data name="strConfigPropertyGridMenuClickFailed" xml:space="preserve">
|
||||
<value>Ошибка IconMenu_Click!</value>
|
||||
</data>
|
||||
<data name="strConfigPropertyGridObjectFailed" xml:space="preserve">
|
||||
<value>Ошибка свойства Grid opject!</value>
|
||||
</data>
|
||||
<data name="strConfigPropertyGridSetHostStatusFailed" xml:space="preserve">
|
||||
<value>Ошибка SetHostStatus!</value>
|
||||
</data>
|
||||
<data name="strConfigPropertyGridValueFailed" xml:space="preserve">
|
||||
<value>Ошибка pGrid_PopertyValueChanged!</value>
|
||||
</data>
|
||||
<data name="strConfigUiLoadFailed" xml:space="preserve">
|
||||
<value>Ошибка загрузки Config UI!</value>
|
||||
</data>
|
||||
<data name="strConfirmCloseConnectionMainInstruction" xml:space="preserve">
|
||||
<value>Хотите закрыть подключение, "{0}"?</value>
|
||||
@@ -432,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>
|
||||
@@ -519,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>
|
||||
@@ -567,9 +606,18 @@
|
||||
<data name="strEndPort" xml:space="preserve">
|
||||
<value>Конечн. порт</value>
|
||||
</data>
|
||||
<data name="strErrorAddExternalToolsToToolBarFailed" xml:space="preserve">
|
||||
<value>Ошибка добавления внешнего приложения на Панель (frmMain). {0}</value>
|
||||
</data>
|
||||
<data name="strErrorAddFolderFailed" xml:space="preserve">
|
||||
<value>Ошибка AddFolder (UI.Window.Tree). {0}</value>
|
||||
</data>
|
||||
<data name="strErrorBadDatabaseVersion" xml:space="preserve">
|
||||
<value>Версия базы данных {0} не совместима с этой версией {1}.</value>
|
||||
</data>
|
||||
<data name="strErrorCloneNodeFailed" xml:space="preserve">
|
||||
<value>Ошибка CloneNode (Tree.Node). {0}</value>
|
||||
</data>
|
||||
<data name="strErrorCode" xml:space="preserve">
|
||||
<value>Код ошибки {0}.</value>
|
||||
</data>
|
||||
@@ -592,6 +640,12 @@
|
||||
<data name="strErrors" xml:space="preserve">
|
||||
<value>Ошибки</value>
|
||||
</data>
|
||||
<data name="strErrorStartupConnectionFileLoad" xml:space="preserve">
|
||||
<value>Ошибка загрузки файла соединения.{0}{0}{2}{0}{3}{0}{0}Для предотвращения потери данных, {1} будет выполнен выход.</value>
|
||||
</data>
|
||||
<data name="strErrorVerifyDatabaseVersionFailed" xml:space="preserve">
|
||||
<value>Ошибка VerifyDatabaseVersion (Config.Connections.Save). {0}</value>
|
||||
</data>
|
||||
<data name="strExpandAllFolders" xml:space="preserve">
|
||||
<value>Раскрыть все папки</value>
|
||||
</data>
|
||||
@@ -604,6 +658,9 @@
|
||||
<data name="strExportmRemoteXML" xml:space="preserve">
|
||||
<value>Экспорт mRemote / mRemoteNG XML</value>
|
||||
</data>
|
||||
<data name="strExtApp" xml:space="preserve">
|
||||
<value>Внешнее Приложение</value>
|
||||
</data>
|
||||
<data name="strFAMFAMFAMAttribution" xml:space="preserve">
|
||||
<value>Использованы значки [FAMFAMFAM]</value>
|
||||
</data>
|
||||
@@ -631,6 +688,9 @@
|
||||
<data name="strFormatInheritDescription" xml:space="preserve">
|
||||
<value>Описание наследованного свойства: {0}</value>
|
||||
</data>
|
||||
<data name="strFree" xml:space="preserve">
|
||||
<value>Free</value>
|
||||
</data>
|
||||
<data name="strFullscreen" xml:space="preserve">
|
||||
<value>Во весь экран</value>
|
||||
</data>
|
||||
@@ -667,12 +727,30 @@
|
||||
<data name="strHttpDocumentTileChangeFailed" xml:space="preserve">
|
||||
<value>Изменение HTTP документа не удалось!</value>
|
||||
</data>
|
||||
<data name="strHttpSetPropsFailed" xml:space="preserve">
|
||||
<value>Не удалось задать параметры HTTP!</value>
|
||||
</data>
|
||||
<data name="strIcaConnectionFailed" xml:space="preserve">
|
||||
<value>Не удается создать новое подключение ICA!</value>
|
||||
</data>
|
||||
<data name="strIcaControlFailed" xml:space="preserve">
|
||||
<value>Не удалось загрузить ICA-плагин!</value>
|
||||
</data>
|
||||
<data name="strIcaSetCredentialsFailed" xml:space="preserve">
|
||||
<value>Ошибка установки учетных данных ICA!</value>
|
||||
</data>
|
||||
<data name="strIcaSetEventHandlersFailed" xml:space="preserve">
|
||||
<value>Не удалось установить обработчик событий ICA!</value>
|
||||
</data>
|
||||
<data name="strIcaSetPropsFailed" xml:space="preserve">
|
||||
<value>Не удалось задать параметры ICA!</value>
|
||||
</data>
|
||||
<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>
|
||||
@@ -700,9 +778,36 @@
|
||||
<data name="strIntAppConnectionFailed" xml:space="preserve">
|
||||
<value>Подключение не удалось!</value>
|
||||
</data>
|
||||
<data name="strIntAppDisposeFailed" xml:space="preserve">
|
||||
<value>Не удалось завершить процесс внутреннего приложения!</value>
|
||||
</data>
|
||||
<data name="strIntAppFocusFailed" xml:space="preserve">
|
||||
<value>Внутренний инструмент: Ошибка получения фокуса!</value>
|
||||
</data>
|
||||
<data name="strIntAppHandle" xml:space="preserve">
|
||||
<value>Обработчик Внутр. инструментов: {0}</value>
|
||||
</data>
|
||||
<data name="strIntAppKillFailed" xml:space="preserve">
|
||||
<value>Не удалось завершить процесс внутреннего приложения!</value>
|
||||
</data>
|
||||
<data name="strIntAppParentHandle" xml:space="preserve">
|
||||
<value>Панель обработчика событий: {0}</value>
|
||||
</data>
|
||||
<data name="strIntAppResizeFailed" xml:space="preserve">
|
||||
<value>Внутренний инструмент: Ошибка изменения размера!</value>
|
||||
</data>
|
||||
<data name="strIntAppStuff" xml:space="preserve">
|
||||
<value>--- Внутреннее приложение ---</value>
|
||||
</data>
|
||||
<data name="strIntAppTitle" xml:space="preserve">
|
||||
<value>Заголовок внешнего инструмента: {0}</value>
|
||||
</data>
|
||||
<data name="strKeysCtrlAltDel" xml:space="preserve">
|
||||
<value>CTRL+ALT+DEL</value>
|
||||
</data>
|
||||
<data name="strKeysCtrlEsc" xml:space="preserve">
|
||||
<value>CTRL-ESC</value>
|
||||
</data>
|
||||
<data name="strLabelAddress" xml:space="preserve">
|
||||
<value>Адрес:</value>
|
||||
</data>
|
||||
@@ -712,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>
|
||||
@@ -736,6 +844,9 @@
|
||||
<data name="strLabelPort" xml:space="preserve">
|
||||
<value>Порт:</value>
|
||||
</data>
|
||||
<data name="strLabelPortableEdition" xml:space="preserve">
|
||||
<value>Portable Edition</value>
|
||||
</data>
|
||||
<data name="strLabelProtocol" xml:space="preserve">
|
||||
<value>Протокол:</value>
|
||||
</data>
|
||||
@@ -799,6 +910,9 @@
|
||||
<data name="strLogWriteToFileFinalLocationFailed" xml:space="preserve">
|
||||
<value>Невозможно сохранить отчет в папке назначения.</value>
|
||||
</data>
|
||||
<data name="strMagicLibraryAttribution" xml:space="preserve">
|
||||
<value>Использовано Magic library от [Crownwood Software]</value>
|
||||
</data>
|
||||
<data name="strMenuAbout" xml:space="preserve">
|
||||
<value>О программе</value>
|
||||
</data>
|
||||
@@ -829,6 +943,12 @@
|
||||
<data name="strMenuCopy" xml:space="preserve">
|
||||
<value>Копировать</value>
|
||||
</data>
|
||||
<data name="strMenuCtrlAltDel" xml:space="preserve">
|
||||
<value>Ctrl-Alt-Del</value>
|
||||
</data>
|
||||
<data name="strMenuCtrlEsc" xml:space="preserve">
|
||||
<value>Ctrl-Esc</value>
|
||||
</data>
|
||||
<data name="strMenuDelete" xml:space="preserve">
|
||||
<value>Удалить...</value>
|
||||
</data>
|
||||
@@ -898,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>
|
||||
@@ -958,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>
|
||||
@@ -1012,6 +1144,9 @@
|
||||
<data name="strNewPanel" xml:space="preserve">
|
||||
<value>Новая панель</value>
|
||||
</data>
|
||||
<data name="strNewRoot" xml:space="preserve">
|
||||
<value>Новый корень</value>
|
||||
</data>
|
||||
<data name="strNewTitle" xml:space="preserve">
|
||||
<value>Новое название</value>
|
||||
</data>
|
||||
@@ -1021,6 +1156,9 @@
|
||||
<data name="strNoCompression" xml:space="preserve">
|
||||
<value>Без сжатия</value>
|
||||
</data>
|
||||
<data name="strNoExtAppDefined" xml:space="preserve">
|
||||
<value>Не указано внешнее приложение.</value>
|
||||
</data>
|
||||
<data name="strNoInformation" xml:space="preserve">
|
||||
<value>Нет</value>
|
||||
</data>
|
||||
@@ -1030,6 +1168,9 @@
|
||||
<data name="strNormal" xml:space="preserve">
|
||||
<value>Нормальный</value>
|
||||
</data>
|
||||
<data name="strNoSmartSize" xml:space="preserve">
|
||||
<value>SmartSize недоступен</value>
|
||||
</data>
|
||||
<data name="strNoUpdateAvailable" xml:space="preserve">
|
||||
<value>Нет доступных обновлений</value>
|
||||
</data>
|
||||
@@ -1043,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>
|
||||
@@ -1181,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>
|
||||
@@ -1253,6 +1406,12 @@
|
||||
<data name="strPropertyNameExternalTool" xml:space="preserve">
|
||||
<value>Внешний инструмент</value>
|
||||
</data>
|
||||
<data name="strPropertyNameExternalToolAfter" xml:space="preserve">
|
||||
<value>Внеш. Инстр. После </value>
|
||||
</data>
|
||||
<data name="strPropertyNameExternalToolBefore" xml:space="preserve">
|
||||
<value>Внеш. Инстр. До</value>
|
||||
</data>
|
||||
<data name="strPropertyNameIcon" xml:space="preserve">
|
||||
<value>Значок</value>
|
||||
</data>
|
||||
@@ -1325,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>
|
||||
@@ -1379,9 +1541,21 @@
|
||||
<data name="strPuttyGetSessionsFailed" xml:space="preserve">
|
||||
<value>Получить сессию Putty не удалось!</value>
|
||||
</data>
|
||||
<data name="strPuttyHandle" xml:space="preserve">
|
||||
<value>Обработчик Putty: {0}</value>
|
||||
</data>
|
||||
<data name="strPuttyKillFailed" xml:space="preserve">
|
||||
<value>Убить процесс Putty не удалось!</value>
|
||||
</data>
|
||||
<data name="strPuttyParentHandle" xml:space="preserve">
|
||||
<value>Панель обработчиков: {0}</value>
|
||||
</data>
|
||||
<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>
|
||||
@@ -1391,6 +1565,12 @@
|
||||
<data name="strPuttyStartFailed" xml:space="preserve">
|
||||
<value>Не удалось запустить Putty!</value>
|
||||
</data>
|
||||
<data name="strPuttyStuff" xml:space="preserve">
|
||||
<value>--- PuTTY ---</value>
|
||||
</data>
|
||||
<data name="strPuttyTitle" xml:space="preserve">
|
||||
<value>Заголовок PuTTY: {0}</value>
|
||||
</data>
|
||||
<data name="strQuick" xml:space="preserve">
|
||||
<value>Быстрое: {0}</value>
|
||||
</data>
|
||||
@@ -1406,6 +1586,24 @@
|
||||
<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>
|
||||
<data name="strRDP" xml:space="preserve">
|
||||
<value>RDP</value>
|
||||
</data>
|
||||
<data name="strRDP16777216Colors" xml:space="preserve">
|
||||
<value>16777216 цв. (24-бит)</value>
|
||||
</data>
|
||||
@@ -1478,6 +1676,9 @@
|
||||
<data name="strRdpErrorConnection" xml:space="preserve">
|
||||
<value>Произошла неисправимая ошибка во время подключения клиента.</value>
|
||||
</data>
|
||||
<data name="strRdpErrorGetFailure" xml:space="preserve">
|
||||
<value>Невозможно получить GetError (Критическая ошибка)</value>
|
||||
</data>
|
||||
<data name="strRdpErrorGetUnknown" xml:space="preserve">
|
||||
<value>Произошла неизвестная критическая ошибка RDP. Код ошибки {0}.</value>
|
||||
</data>
|
||||
@@ -1499,21 +1700,63 @@
|
||||
<data name="strRDPFitToPanel" xml:space="preserve">
|
||||
<value>В окне</value>
|
||||
</data>
|
||||
<data name="strRdpFocusFailed" xml:space="preserve">
|
||||
<value>RDP: Ошибка получения фокуса!</value>
|
||||
</data>
|
||||
<data name="strRdpGatewayIsSupported" xml:space="preserve">
|
||||
<value>Шлюз Служб терминалов поддерживается.</value>
|
||||
</data>
|
||||
<data name="strRdpGatewayNotSupported" xml:space="preserve">
|
||||
<value>Шлюз Служб терминалов не поддерживается!</value>
|
||||
</data>
|
||||
<data name="strRdpGetSessionsFailed" xml:space="preserve">
|
||||
<value>Ошибка сессии!</value>
|
||||
</data>
|
||||
<data name="strRdpOpenConnectionFailed" xml:space="preserve">
|
||||
<value>Открыть подключение RDP не удалось!</value>
|
||||
</data>
|
||||
<data name="strRdpReconnectCount" xml:space="preserve">
|
||||
<value>К-ство переподключений RDP:</value>
|
||||
</data>
|
||||
<data name="strRdpSetAuthenticationLevelFailed" xml:space="preserve">
|
||||
<value>RDP: Установить уровень проверки подлинности не удалась!</value>
|
||||
</data>
|
||||
<data name="strRdpSetConsoleSessionFailed" xml:space="preserve">
|
||||
<value>RDP: Не удалось использовать консольную сессию!</value>
|
||||
</data>
|
||||
<data name="strRdpSetConsoleSwitch" xml:space="preserve">
|
||||
<value>Настройка переключения консолей для RDC {0}.</value>
|
||||
</data>
|
||||
<data name="strRdpSetCredentialsFailed" xml:space="preserve">
|
||||
<value>Ошибка установки учетных данных RDP!</value>
|
||||
</data>
|
||||
<data name="strRdpSetEventHandlersFailed" xml:space="preserve">
|
||||
<value>Ошибка RDP SetEventHandlers!</value>
|
||||
</data>
|
||||
<data name="strRdpSetGatewayFailed" xml:space="preserve">
|
||||
<value>Ошибка установки шлюза RDP!</value>
|
||||
</data>
|
||||
<data name="strRdpSetPerformanceFlagsFailed" xml:space="preserve">
|
||||
<value>Ошибка RDP SetPerformanceFlags!</value>
|
||||
</data>
|
||||
<data name="strRdpSetPortFailed" xml:space="preserve">
|
||||
<value>Не удалось задать порт RDP!</value>
|
||||
</data>
|
||||
<data name="strRdpSetPropsFailed" xml:space="preserve">
|
||||
<value>Не удалось задать параметры RDP!</value>
|
||||
</data>
|
||||
<data name="strRdpSetRedirectionFailed" xml:space="preserve">
|
||||
<value>Установить перенаправление в RDP не удалось!</value>
|
||||
</data>
|
||||
<data name="strRdpSetRedirectKeysFailed" xml:space="preserve">
|
||||
<value>Установить перенаправление клавиш в RDP не удалось!</value>
|
||||
</data>
|
||||
<data name="strRdpSetResolutionFailed" xml:space="preserve">
|
||||
<value>Ошибка установки разрешения RDP!</value>
|
||||
</data>
|
||||
<data name="strRDPSmartSize" xml:space="preserve">
|
||||
<value>Smart Size</value>
|
||||
</data>
|
||||
<data name="strRDPSoundBringToThisComputer" xml:space="preserve">
|
||||
<value>Передать на этот компьютер</value>
|
||||
</data>
|
||||
@@ -1523,6 +1766,12 @@
|
||||
<data name="strRDPSoundLeaveAtRemoteComputer" xml:space="preserve">
|
||||
<value>Оставить на удаленном компьютере</value>
|
||||
</data>
|
||||
<data name="strRdpToggleFullscreenFailed" xml:space="preserve">
|
||||
<value>Не удалось переключить RDP в режим Fullscreen!</value>
|
||||
</data>
|
||||
<data name="strRdpToggleSmartSizeFailed" xml:space="preserve">
|
||||
<value>Не удалось переключить RDP в режим SmartSize!</value>
|
||||
</data>
|
||||
<data name="strReconnectAtStartup" xml:space="preserve">
|
||||
<value>При запуске подключаться к предыдущим сессиям</value>
|
||||
</data>
|
||||
@@ -1538,6 +1787,9 @@
|
||||
<data name="strRename" xml:space="preserve">
|
||||
<value>Переименовать</value>
|
||||
</data>
|
||||
<data name="strRlogin" xml:space="preserve">
|
||||
<value>Rlogin</value>
|
||||
</data>
|
||||
<data name="strSave" xml:space="preserve">
|
||||
<value>Сохранить</value>
|
||||
</data>
|
||||
@@ -1562,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>
|
||||
@@ -1598,6 +1853,18 @@
|
||||
<data name="strSingleClickOnOpenConnectionSwitchesToIt" xml:space="preserve">
|
||||
<value>Один клик по открытому подключению переключается на него</value>
|
||||
</data>
|
||||
<data name="strSmartSizeModeAspect" xml:space="preserve">
|
||||
<value>Вид</value>
|
||||
</data>
|
||||
<data name="strSmartSizeModeFree" xml:space="preserve">
|
||||
<value>Free</value>
|
||||
</data>
|
||||
<data name="strSmartSizeModeNone" xml:space="preserve">
|
||||
<value>SmartSize недоступен</value>
|
||||
</data>
|
||||
<data name="strSocks5" xml:space="preserve">
|
||||
<value>Socks 5</value>
|
||||
</data>
|
||||
<data name="strSort" xml:space="preserve">
|
||||
<value>Сортировать</value>
|
||||
</data>
|
||||
@@ -1607,6 +1874,9 @@
|
||||
<data name="strSortDesc" xml:space="preserve">
|
||||
<value>По убыванию (Z-A)</value>
|
||||
</data>
|
||||
<data name="strSpecialKeys" xml:space="preserve">
|
||||
<value>Специальные клавиши</value>
|
||||
</data>
|
||||
<data name="strSQLInfo" xml:space="preserve">
|
||||
<value>Для дополнительной информации см. справку - Начало работы - конфигурация SQL!</value>
|
||||
</data>
|
||||
@@ -1616,6 +1886,12 @@
|
||||
<data name="strSqlUpdateCheckUpdateAvailable" xml:space="preserve">
|
||||
<value>Доступно обновление для SQL! Обновите подключения.</value>
|
||||
</data>
|
||||
<data name="strSsh1" xml:space="preserve">
|
||||
<value>SSH version 1</value>
|
||||
</data>
|
||||
<data name="strSsh2" xml:space="preserve">
|
||||
<value>SSH version 2</value>
|
||||
</data>
|
||||
<data name="strSSHStartTransferBG" xml:space="preserve">
|
||||
<value>Фоновая передача по SSH - не удалась!</value>
|
||||
</data>
|
||||
@@ -1626,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>
|
||||
@@ -1655,9 +1931,123 @@
|
||||
<data name="strTabUpdates" xml:space="preserve">
|
||||
<value>Обновления</value>
|
||||
</data>
|
||||
<data name="strTelnet" xml:space="preserve">
|
||||
<value>Telnet</value>
|
||||
</data>
|
||||
<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>
|
||||
@@ -1685,12 +2075,18 @@
|
||||
<data name="strType" xml:space="preserve">
|
||||
<value>Тип</value>
|
||||
</data>
|
||||
<data name="strUltraVncRepeater" xml:space="preserve">
|
||||
<value>Ultra VNC Repeater</value>
|
||||
</data>
|
||||
<data name="strUltraVNCSCListeningPort" xml:space="preserve">
|
||||
<value>Порт UltraVNC SingleClick:</value>
|
||||
</data>
|
||||
<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>
|
||||
@@ -1703,6 +2099,9 @@
|
||||
<data name="strUpdateCheckFailed" xml:space="preserve">
|
||||
<value>Не удалось проверить наличие обновлений!</value>
|
||||
</data>
|
||||
<data name="strUpdateCheckPortableEdition" xml:space="preserve">
|
||||
<value>mRemoteNG Portable Edition не поддерживает автообновление.</value>
|
||||
</data>
|
||||
<data name="strUpdateDeleteFailed" xml:space="preserve">
|
||||
<value>Ошибка при удалении файла обновления!</value>
|
||||
</data>
|
||||
@@ -1743,12 +2142,18 @@ mRemoteNG сейчас прекратит работу и начнет проц
|
||||
<data name="strUseSameUsernameAndPassword" xml:space="preserve">
|
||||
<value>Использовать те же имя пользователя и пароль</value>
|
||||
</data>
|
||||
<data name="strUseSmartCard" xml:space="preserve">
|
||||
<value>Использовать смарт-карты</value>
|
||||
</data>
|
||||
<data name="strUseSQLServer" xml:space="preserve">
|
||||
<value>Использовать SQL Server для загрузки и сохранения подключений</value>
|
||||
</data>
|
||||
<data name="strVersion" xml:space="preserve">
|
||||
<value>Версия</value>
|
||||
</data>
|
||||
<data name="strVnc" xml:space="preserve">
|
||||
<value>VNC</value>
|
||||
</data>
|
||||
<data name="strVncConnectionDisconnectFailed" xml:space="preserve">
|
||||
<value>Не удалось отключить VNC!</value>
|
||||
</data>
|
||||
@@ -1764,6 +2169,9 @@ mRemoteNG сейчас прекратит работу и начнет проц
|
||||
<data name="strVncSetEventHandlersFailed" xml:space="preserve">
|
||||
<value>Не удалось установить обработчик событий VNC!</value>
|
||||
</data>
|
||||
<data name="strVncSetPropsFailed" xml:space="preserve">
|
||||
<value>Не удалось задать параметры VNC!</value>
|
||||
</data>
|
||||
<data name="strVncStartChatFailed" xml:space="preserve">
|
||||
<value>Не удалось начать VNC-чат!</value>
|
||||
</data>
|
||||
@@ -1779,6 +2187,12 @@ mRemoteNG сейчас прекратит работу и начнет проц
|
||||
<data name="strWarnings" xml:space="preserve">
|
||||
<value>Предупреждения</value>
|
||||
</data>
|
||||
<data name="strWeifenLuoAttribution" xml:space="preserve">
|
||||
<value>Использовано DockPanel Suite от [Weifen Luo]</value>
|
||||
</data>
|
||||
<data name="strWeifenLuoAttributionURL" xml:space="preserve">
|
||||
<value>http://sourceforge.net/projects/dockpanelsuite/</value>
|
||||
</data>
|
||||
<data name="strWriteLogFile" xml:space="preserve">
|
||||
<value>Запись в лог-файл (mRemoteNG.log)</value>
|
||||
</data>
|
||||
|
||||
@@ -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>
|
||||
@@ -168,6 +168,9 @@
|
||||
<data name="strAskUpdatesMainInstruction" xml:space="preserve">
|
||||
<value>Параметри автоматичного оновлення</value>
|
||||
</data>
|
||||
<data name="strAspect" xml:space="preserve">
|
||||
<value>Вигляд</value>
|
||||
</data>
|
||||
<data name="strAutomaticallyGetSessionInfo" xml:space="preserve">
|
||||
<value>Автоматично отримувати інформацію про сесію</value>
|
||||
</data>
|
||||
@@ -414,8 +417,26 @@ VncSharpNG Control Version {0}</value>
|
||||
<data name="strComponentsCheck" xml:space="preserve">
|
||||
<value>Перевірка компонентів</value>
|
||||
</data>
|
||||
<data name="strConfirmCloseConnection" xml:space="preserve">
|
||||
<value>Запитувати підтвердження при закритті вкладки з'єднання</value>
|
||||
<data name="strConfigPropertyGridButtonIconClickFailed" xml:space="preserve">
|
||||
<value>Помилка btnIcon_Click!</value>
|
||||
</data>
|
||||
<data name="strConfigPropertyGridHideItemsFailed" xml:space="preserve">
|
||||
<value>Помилка ShowHideGridItems!</value>
|
||||
</data>
|
||||
<data name="strConfigPropertyGridMenuClickFailed" xml:space="preserve">
|
||||
<value>Помилка IconMenu_Click!</value>
|
||||
</data>
|
||||
<data name="strConfigPropertyGridObjectFailed" xml:space="preserve">
|
||||
<value>Помилка властивостей Grid object!</value>
|
||||
</data>
|
||||
<data name="strConfigPropertyGridSetHostStatusFailed" xml:space="preserve">
|
||||
<value>Помилка отримання статусу Хоста!</value>
|
||||
</data>
|
||||
<data name="strConfigPropertyGridValueFailed" xml:space="preserve">
|
||||
<value>Помилка pGrid_PopertyValueChanged!</value>
|
||||
</data>
|
||||
<data name="strConfigUiLoadFailed" xml:space="preserve">
|
||||
<value>Помилка завантаження Config UI!</value>
|
||||
</data>
|
||||
<data name="strConfirmCloseConnectionMainInstruction" xml:space="preserve">
|
||||
<value>Хочете закрити з'єднання, "{0}"?</value>
|
||||
@@ -438,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>
|
||||
@@ -573,6 +591,12 @@ VncSharpNG Control Version {0}</value>
|
||||
<data name="strEndPort" xml:space="preserve">
|
||||
<value>Кінц. порт</value>
|
||||
</data>
|
||||
<data name="strErrorAddExternalToolsToToolBarFailed" xml:space="preserve">
|
||||
<value>Помилка додавання на Панель зовнішнього інструменту (frmMain). {0}</value>
|
||||
</data>
|
||||
<data name="strErrorAddFolderFailed" xml:space="preserve">
|
||||
<value>Помилка AddFolder (UI.Window.Tree). {0}</value>
|
||||
</data>
|
||||
<data name="strErrorBadDatabaseVersion" xml:space="preserve">
|
||||
<value>Версія бази даних {0} не сумісна з цією версією {1}.</value>
|
||||
</data>
|
||||
@@ -601,6 +625,12 @@ VncSharpNG Control Version {0}</value>
|
||||
<data name="strErrors" xml:space="preserve">
|
||||
<value>Помилки</value>
|
||||
</data>
|
||||
<data name="strErrorStartupConnectionFileLoad" xml:space="preserve">
|
||||
<value>Файл з'єднання не може бути завантажений. {0}{0}{2}{0}{3}{0}{0} Для того, щоб запобігти втраті даних, {1} буде здійснено вихід.</value>
|
||||
</data>
|
||||
<data name="strErrorVerifyDatabaseVersionFailed" xml:space="preserve">
|
||||
<value>Помилка VerifyDatabaseVersion (Config.Connections.Save). {0}</value>
|
||||
</data>
|
||||
<data name="strExpandAllFolders" xml:space="preserve">
|
||||
<value>Розкрити всі папки</value>
|
||||
</data>
|
||||
@@ -613,6 +643,9 @@ VncSharpNG Control Version {0}</value>
|
||||
<data name="strExportmRemoteXML" xml:space="preserve">
|
||||
<value>Експорт mRemote / mRemoteNG XML</value>
|
||||
</data>
|
||||
<data name="strExtApp" xml:space="preserve">
|
||||
<value>Зовн. Інструмент</value>
|
||||
</data>
|
||||
<data name="strFAMFAMFAMAttribution" xml:space="preserve">
|
||||
<value>Використано значки [FAMFAMFAM]</value>
|
||||
</data>
|
||||
@@ -640,6 +673,9 @@ VncSharpNG Control Version {0}</value>
|
||||
<data name="strFormatInheritDescription" xml:space="preserve">
|
||||
<value>Опис успадкованої властивості: {0}</value>
|
||||
</data>
|
||||
<data name="strFree" xml:space="preserve">
|
||||
<value>Free</value>
|
||||
</data>
|
||||
<data name="strFullscreen" xml:space="preserve">
|
||||
<value>На весь екран</value>
|
||||
</data>
|
||||
@@ -673,8 +709,8 @@ 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 name="strHttpSetPropsFailed" xml:space="preserve">
|
||||
<value>Не вдалося задати параметри HTTP!</value>
|
||||
</data>
|
||||
<data name="strIcaConnectionFailed" xml:space="preserve">
|
||||
<value>Не вдається створити нове з'єднання ICA!</value>
|
||||
@@ -682,6 +718,18 @@ VncSharpNG Control Version {0}</value>
|
||||
<data name="strIcaControlFailed" xml:space="preserve">
|
||||
<value>Не вдалося завантажити ICA-плагін!</value>
|
||||
</data>
|
||||
<data name="strIcaSetCredentialsFailed" xml:space="preserve">
|
||||
<value>Помилка встановлення облікових даних ICA!</value>
|
||||
</data>
|
||||
<data name="strIcaSetEventHandlersFailed" xml:space="preserve">
|
||||
<value>Не вдалося встановити оброблювач подій ICA!</value>
|
||||
</data>
|
||||
<data name="strIcaSetPropsFailed" xml:space="preserve">
|
||||
<value>Не вдалося задати параметри ICA!</value>
|
||||
</data>
|
||||
<data name="strIcaSetResolutionFailed" xml:space="preserve">
|
||||
<value>Помилка встановлення дозволів ICA!</value>
|
||||
</data>
|
||||
<data name="strImportAD" xml:space="preserve">
|
||||
<value>Імпорт з Active Directory</value>
|
||||
</data>
|
||||
@@ -709,9 +757,30 @@ VncSharpNG Control Version {0}</value>
|
||||
<data name="strIntAppConnectionFailed" xml:space="preserve">
|
||||
<value>З'єднання не вдалося!</value>
|
||||
</data>
|
||||
<data name="strIntAppFocusFailed" xml:space="preserve">
|
||||
<value>Зовнішній інструмент: Помилка отримання фокусу!</value>
|
||||
</data>
|
||||
<data name="strIntAppHandle" xml:space="preserve">
|
||||
<value>Оброблювач подій Зовн. інструментів: {0}</value>
|
||||
</data>
|
||||
<data name="strIntAppKillFailed" xml:space="preserve">
|
||||
<value>Не вдалося завершити процес зовнішнього інструменту!</value>
|
||||
</data>
|
||||
<data name="strIntAppParentHandle" xml:space="preserve">
|
||||
<value>Панель Оброблювача: {0}</value>
|
||||
</data>
|
||||
<data name="strIntAppResizeFailed" xml:space="preserve">
|
||||
<value>Зовнішній інструмент: Помилка зміни розміру!</value>
|
||||
</data>
|
||||
<data name="strIntAppTitle" xml:space="preserve">
|
||||
<value>Заголовок зовнішнього інструменту: {0}</value>
|
||||
</data>
|
||||
<data name="strKeysCtrlAltDel" xml:space="preserve">
|
||||
<value>CTRL + ALT + DEL</value>
|
||||
</data>
|
||||
<data name="strKeysCtrlEsc" xml:space="preserve">
|
||||
<value>CTRL-ESC</value>
|
||||
</data>
|
||||
<data name="strLabelAddress" xml:space="preserve">
|
||||
<value>Адреса:</value>
|
||||
</data>
|
||||
@@ -745,6 +814,9 @@ VncSharpNG Control Version {0}</value>
|
||||
<data name="strLabelPort" xml:space="preserve">
|
||||
<value>Порт:</value>
|
||||
</data>
|
||||
<data name="strLabelPortableEdition" xml:space="preserve">
|
||||
<value>Портативна версія</value>
|
||||
</data>
|
||||
<data name="strLabelProtocol" xml:space="preserve">
|
||||
<value>Протокол:</value>
|
||||
</data>
|
||||
@@ -808,6 +880,9 @@ VncSharpNG Control Version {0}</value>
|
||||
<data name="strLogWriteToFileFinalLocationFailed" xml:space="preserve">
|
||||
<value>Неможливо зберегти звіт в папці призначення.</value>
|
||||
</data>
|
||||
<data name="strMagicLibraryAttribution" xml:space="preserve">
|
||||
<value>Використано Magic library від [Crownwood Software]</value>
|
||||
</data>
|
||||
<data name="strMenuAbout" xml:space="preserve">
|
||||
<value>Про програму</value>
|
||||
</data>
|
||||
@@ -838,6 +913,12 @@ VncSharpNG Control Version {0}</value>
|
||||
<data name="strMenuCopy" xml:space="preserve">
|
||||
<value>Копіювати</value>
|
||||
</data>
|
||||
<data name="strMenuCtrlAltDel" xml:space="preserve">
|
||||
<value>Ctrl-Alt-Del</value>
|
||||
</data>
|
||||
<data name="strMenuCtrlEsc" xml:space="preserve">
|
||||
<value>Ctrl-Esc</value>
|
||||
</data>
|
||||
<data name="strMenuDelete" xml:space="preserve">
|
||||
<value>Видалити...</value>
|
||||
</data>
|
||||
@@ -1021,6 +1102,9 @@ VncSharpNG Control Version {0}</value>
|
||||
<data name="strNewPanel" xml:space="preserve">
|
||||
<value>Нова панель</value>
|
||||
</data>
|
||||
<data name="strNewRoot" xml:space="preserve">
|
||||
<value>новий кореневої</value>
|
||||
</data>
|
||||
<data name="strNewTitle" xml:space="preserve">
|
||||
<value>Нова назва</value>
|
||||
</data>
|
||||
@@ -1030,6 +1114,9 @@ VncSharpNG Control Version {0}</value>
|
||||
<data name="strNoCompression" xml:space="preserve">
|
||||
<value>Без стискання</value>
|
||||
</data>
|
||||
<data name="strNoExtAppDefined" xml:space="preserve">
|
||||
<value>Не вказано зовнішній інструмент</value>
|
||||
</data>
|
||||
<data name="strNoInformation" xml:space="preserve">
|
||||
<value>Ні</value>
|
||||
</data>
|
||||
@@ -1262,6 +1349,12 @@ VncSharpNG Control Version {0}</value>
|
||||
<data name="strPropertyNameExternalTool" xml:space="preserve">
|
||||
<value>Зовнішній інструмент</value>
|
||||
</data>
|
||||
<data name="strPropertyNameExternalToolAfter" xml:space="preserve">
|
||||
<value>Зовн. Інстр. Після</value>
|
||||
</data>
|
||||
<data name="strPropertyNameExternalToolBefore" xml:space="preserve">
|
||||
<value>Зовн. Інстр. До</value>
|
||||
</data>
|
||||
<data name="strPropertyNameIcon" xml:space="preserve">
|
||||
<value>Значок</value>
|
||||
</data>
|
||||
@@ -1388,9 +1481,18 @@ VncSharpNG Control Version {0}</value>
|
||||
<data name="strPuttyGetSessionsFailed" xml:space="preserve">
|
||||
<value>Отримати сесію Putty не вдалося!</value>
|
||||
</data>
|
||||
<data name="strPuttyHandle" xml:space="preserve">
|
||||
<value>Оброблювач подій Putty: {0}</value>
|
||||
</data>
|
||||
<data name="strPuttyKillFailed" xml:space="preserve">
|
||||
<value>Вбити процес Putty не вдалося!</value>
|
||||
</data>
|
||||
<data name="strPuttyParentHandle" xml:space="preserve">
|
||||
<value>Панель оброблювача подій: {0}</value>
|
||||
</data>
|
||||
<data name="strPuttyResizeFailed" xml:space="preserve">
|
||||
<value>Помилка зміни розміру вікна Putty!</value>
|
||||
</data>
|
||||
<data name="strPuttySettings" xml:space="preserve">
|
||||
<value>Налаштування PuTTY</value>
|
||||
</data>
|
||||
@@ -1400,6 +1502,9 @@ VncSharpNG Control Version {0}</value>
|
||||
<data name="strPuttyStartFailed" xml:space="preserve">
|
||||
<value>Не вдалося запустити Putty!</value>
|
||||
</data>
|
||||
<data name="strPuttyTitle" xml:space="preserve">
|
||||
<value>Заголовок PuTTY: {0}</value>
|
||||
</data>
|
||||
<data name="strQuick" xml:space="preserve">
|
||||
<value>Швидке: {0}</value>
|
||||
</data>
|
||||
@@ -1415,6 +1520,12 @@ VncSharpNG Control Version {0}</value>
|
||||
<data name="strQuickConnectHistoryExistsFailed" xml:space="preserve">
|
||||
<value>Помилка історії Швидких з'єднань!</value>
|
||||
</data>
|
||||
<data name="strRAW" xml:space="preserve">
|
||||
<value>RAW</value>
|
||||
</data>
|
||||
<data name="strRDP" xml:space="preserve">
|
||||
<value>RDP</value>
|
||||
</data>
|
||||
<data name="strRDP16777216Colors" xml:space="preserve">
|
||||
<value>16777216 кол. (24-біт)</value>
|
||||
</data>
|
||||
@@ -1508,21 +1619,63 @@ VncSharpNG Control Version {0}</value>
|
||||
<data name="strRDPFitToPanel" xml:space="preserve">
|
||||
<value>У вікні</value>
|
||||
</data>
|
||||
<data name="strRdpFocusFailed" xml:space="preserve">
|
||||
<value>RDP: помилка отримання фокусу!</value>
|
||||
</data>
|
||||
<data name="strRdpGatewayIsSupported" xml:space="preserve">
|
||||
<value>Шлюз Служб терміналів підтримується.</value>
|
||||
</data>
|
||||
<data name="strRdpGatewayNotSupported" xml:space="preserve">
|
||||
<value>Шлюз Служб терміналів не підтримується!</value>
|
||||
</data>
|
||||
<data name="strRdpGetSessionsFailed" xml:space="preserve">
|
||||
<value>Помилка сесії!</value>
|
||||
</data>
|
||||
<data name="strRdpOpenConnectionFailed" xml:space="preserve">
|
||||
<value>Відкрити з'єднання RDP не вдалося!</value>
|
||||
</data>
|
||||
<data name="strRdpReconnectCount" xml:space="preserve">
|
||||
<value>К-сть перепідключень RDP:</value>
|
||||
</data>
|
||||
<data name="strRdpSetAuthenticationLevelFailed" xml:space="preserve">
|
||||
<value>RDP: не вдалося встановити рівень перевірки автентичності!</value>
|
||||
</data>
|
||||
<data name="strRdpSetConsoleSessionFailed" xml:space="preserve">
|
||||
<value>RDP: Не вдалося використати консольну сесію!</value>
|
||||
</data>
|
||||
<data name="strRdpSetConsoleSwitch" xml:space="preserve">
|
||||
<value>Налаштування перемикання консолей для RDC {0}.</value>
|
||||
</data>
|
||||
<data name="strRdpSetCredentialsFailed" xml:space="preserve">
|
||||
<value>Помилка встановлення облікових даних RDP!</value>
|
||||
</data>
|
||||
<data name="strRdpSetEventHandlersFailed" xml:space="preserve">
|
||||
<value>Не вдалося встановити оброблювач подій RDP!</value>
|
||||
</data>
|
||||
<data name="strRdpSetGatewayFailed" xml:space="preserve">
|
||||
<value>Помилка встановлення шлюзу RDP!</value>
|
||||
</data>
|
||||
<data name="strRdpSetPerformanceFlagsFailed" xml:space="preserve">
|
||||
<value>Помилка RDP SetPerformanceFlags!</value>
|
||||
</data>
|
||||
<data name="strRdpSetPortFailed" xml:space="preserve">
|
||||
<value>Не вдалося встановити порт RDP!</value>
|
||||
</data>
|
||||
<data name="strRdpSetPropsFailed" xml:space="preserve">
|
||||
<value>Не вдалося встановити параметри RDP!</value>
|
||||
</data>
|
||||
<data name="strRdpSetRedirectionFailed" xml:space="preserve">
|
||||
<value>Не вдалося встановити перенаправлення в RDP!</value>
|
||||
</data>
|
||||
<data name="strRdpSetRedirectKeysFailed" xml:space="preserve">
|
||||
<value>Не вдалося встановити перенаправлення клавіш в RDP!</value>
|
||||
</data>
|
||||
<data name="strRdpSetResolutionFailed" xml:space="preserve">
|
||||
<value>Помилка встановлення дозволів RDP!</value>
|
||||
</data>
|
||||
<data name="strRDPSmartSize" xml:space="preserve">
|
||||
<value>розумний розмір</value>
|
||||
</data>
|
||||
<data name="strRDPSoundBringToThisComputer" xml:space="preserve">
|
||||
<value>Передати на цей комп'ютер</value>
|
||||
</data>
|
||||
@@ -1532,6 +1685,12 @@ VncSharpNG Control Version {0}</value>
|
||||
<data name="strRDPSoundLeaveAtRemoteComputer" xml:space="preserve">
|
||||
<value>Залишити на віддаленому комп'ютері</value>
|
||||
</data>
|
||||
<data name="strRdpToggleFullscreenFailed" xml:space="preserve">
|
||||
<value>Не вдалося переключити RDP в режим Fullscreen!</value>
|
||||
</data>
|
||||
<data name="strRdpToggleSmartSizeFailed" xml:space="preserve">
|
||||
<value>Не вдалося переключити RDP в режим SmartSize!</value>
|
||||
</data>
|
||||
<data name="strReconnectAtStartup" xml:space="preserve">
|
||||
<value>При запуску підключатися до попередніх сесій</value>
|
||||
</data>
|
||||
@@ -1547,6 +1706,9 @@ VncSharpNG Control Version {0}</value>
|
||||
<data name="strRename" xml:space="preserve">
|
||||
<value>Перейменувати</value>
|
||||
</data>
|
||||
<data name="strRlogin" xml:space="preserve">
|
||||
<value>Rlogin</value>
|
||||
</data>
|
||||
<data name="strSave" xml:space="preserve">
|
||||
<value>Зберегти</value>
|
||||
</data>
|
||||
@@ -1607,6 +1769,15 @@ VncSharpNG Control Version {0}</value>
|
||||
<data name="strSingleClickOnOpenConnectionSwitchesToIt" xml:space="preserve">
|
||||
<value>Один клік по відкритому з'єднанню переключається на нього</value>
|
||||
</data>
|
||||
<data name="strSmartSizeModeAspect" xml:space="preserve">
|
||||
<value>Вигляд</value>
|
||||
</data>
|
||||
<data name="strSmartSizeModeFree" xml:space="preserve">
|
||||
<value>Free</value>
|
||||
</data>
|
||||
<data name="strSocks5" xml:space="preserve">
|
||||
<value>Socks 5</value>
|
||||
</data>
|
||||
<data name="strSort" xml:space="preserve">
|
||||
<value>Сортувати</value>
|
||||
</data>
|
||||
@@ -1616,6 +1787,9 @@ VncSharpNG Control Version {0}</value>
|
||||
<data name="strSortDesc" xml:space="preserve">
|
||||
<value>За спаданням (Z-A)</value>
|
||||
</data>
|
||||
<data name="strSpecialKeys" xml:space="preserve">
|
||||
<value>Спеціальні клавіші</value>
|
||||
</data>
|
||||
<data name="strSQLInfo" xml:space="preserve">
|
||||
<value>Для додаткової інформації див. довідку - Початок роботи - конфігурація SQL!</value>
|
||||
</data>
|
||||
@@ -1625,6 +1799,12 @@ VncSharpNG Control Version {0}</value>
|
||||
<data name="strSqlUpdateCheckUpdateAvailable" xml:space="preserve">
|
||||
<value>Доступно оновлення для SQL! Оновлення з'єднання.</value>
|
||||
</data>
|
||||
<data name="strSsh1" xml:space="preserve">
|
||||
<value>SSH version 1</value>
|
||||
</data>
|
||||
<data name="strSsh2" xml:space="preserve">
|
||||
<value>SSH version 2</value>
|
||||
</data>
|
||||
<data name="strSSHStartTransferBG" xml:space="preserve">
|
||||
<value>Фонова передача по SSH - не вдалося!</value>
|
||||
</data>
|
||||
@@ -1634,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>
|
||||
@@ -1664,6 +1841,9 @@ VncSharpNG Control Version {0}</value>
|
||||
<data name="strTabUpdates" xml:space="preserve">
|
||||
<value>Оновлення</value>
|
||||
</data>
|
||||
<data name="strTelnet" xml:space="preserve">
|
||||
<value>Telnet</value>
|
||||
</data>
|
||||
<data name="strTheFollowing" xml:space="preserve">
|
||||
<value>Встановити вручну:</value>
|
||||
</data>
|
||||
@@ -1694,6 +1874,9 @@ VncSharpNG Control Version {0}</value>
|
||||
<data name="strType" xml:space="preserve">
|
||||
<value>Тип</value>
|
||||
</data>
|
||||
<data name="strUltraVncRepeater" xml:space="preserve">
|
||||
<value>Ultra VNC Repeater</value>
|
||||
</data>
|
||||
<data name="strUltraVNCSCListeningPort" xml:space="preserve">
|
||||
<value>Порт UltraVNC SingleClick:</value>
|
||||
</data>
|
||||
@@ -1712,6 +1895,9 @@ VncSharpNG Control Version {0}</value>
|
||||
<data name="strUpdateCheckFailed" xml:space="preserve">
|
||||
<value>Не вдалося перевірити наявність оновлень!</value>
|
||||
</data>
|
||||
<data name="strUpdateCheckPortableEdition" xml:space="preserve">
|
||||
<value>Портативна версія mRemoteNG не підтримує автоматичне оновлення.</value>
|
||||
</data>
|
||||
<data name="strUpdateDeleteFailed" xml:space="preserve">
|
||||
<value>Помилка при видаленні файлу оновлення!</value>
|
||||
</data>
|
||||
@@ -1752,12 +1938,18 @@ mRemoteNG зараз припинить роботу і почне процес
|
||||
<data name="strUseSameUsernameAndPassword" xml:space="preserve">
|
||||
<value>Використовувати ті ж ім'я користувача і пароль</value>
|
||||
</data>
|
||||
<data name="strUseSmartCard" xml:space="preserve">
|
||||
<value>Використовувати смарт-карти</value>
|
||||
</data>
|
||||
<data name="strUseSQLServer" xml:space="preserve">
|
||||
<value>Використовувати SQL Server для завантаження і збереження з'єднань</value>
|
||||
</data>
|
||||
<data name="strVersion" xml:space="preserve">
|
||||
<value>Версія</value>
|
||||
</data>
|
||||
<data name="strVnc" xml:space="preserve">
|
||||
<value>VNC</value>
|
||||
</data>
|
||||
<data name="strVncConnectionDisconnectFailed" xml:space="preserve">
|
||||
<value>Не вдалося вимкнути VNC!</value>
|
||||
</data>
|
||||
@@ -1773,6 +1965,9 @@ mRemoteNG зараз припинить роботу і почне процес
|
||||
<data name="strVncSetEventHandlersFailed" xml:space="preserve">
|
||||
<value>Не вдалося встановити оброблювач подій VNC!</value>
|
||||
</data>
|
||||
<data name="strVncSetPropsFailed" xml:space="preserve">
|
||||
<value>Не вдалося задати параметри VNC!</value>
|
||||
</data>
|
||||
<data name="strVncStartChatFailed" xml:space="preserve">
|
||||
<value>Не вдалося почати VNC-чат!</value>
|
||||
</data>
|
||||
@@ -1788,6 +1983,12 @@ mRemoteNG зараз припинить роботу і почне процес
|
||||
<data name="strWarnings" xml:space="preserve">
|
||||
<value>Попередження</value>
|
||||
</data>
|
||||
<data name="strWeifenLuoAttribution" xml:space="preserve">
|
||||
<value>Використано DockPanel Suite від [Weifen Luo]</value>
|
||||
</data>
|
||||
<data name="strWeifenLuoAttributionURL" xml:space="preserve">
|
||||
<value>http://sourceforge.net/projects/dockpanelsuite/</value>
|
||||
</data>
|
||||
<data name="strWriteLogFile" xml:space="preserve">
|
||||
<value>Запис в лог-файл (mRemoteNG.log)</value>
|
||||
</data>
|
||||
|
||||
2110
mRemoteV1/Language/Language.zh-CN.resx
Normal file
2110
mRemoteV1/Language/Language.zh-CN.resx
Normal file
File diff suppressed because it is too large
Load Diff
@@ -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
|
||||
|
||||
@@ -13,7 +13,7 @@ Imports System.Runtime.InteropServices
|
||||
<Assembly: AssemblyDescription("")>
|
||||
<Assembly: AssemblyCompany("")>
|
||||
<Assembly: AssemblyProduct("mRemoteNG")>
|
||||
<Assembly: AssemblyCopyright("Copyright © 2007-2009 Felix Deimel, 2010-2012 Riley McArdle")>
|
||||
<Assembly: AssemblyCopyright("Copyright © 2007-2009 Felix Deimel, 2010-2013 Riley McArdle")>
|
||||
<Assembly: AssemblyTrademark("")>
|
||||
|
||||
<Assembly: ComVisible(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>
|
||||
231
mRemoteV1/My Project/Settings.Designer.vb
generated
231
mRemoteV1/My Project/Settings.Designer.vb
generated
@@ -1,7 +1,7 @@
|
||||
'------------------------------------------------------------------------------
|
||||
' <auto-generated>
|
||||
' This code was generated by a tool.
|
||||
' Runtime Version:4.0.30319.261
|
||||
' Runtime Version:4.0.30319.296
|
||||
'
|
||||
' Changes to this file may cause incorrect behavior and will be lost if
|
||||
' the code is regenerated.
|
||||
@@ -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(), _
|
||||
@@ -1743,7 +1730,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 StartupComponentsCheck() As Boolean
|
||||
Get
|
||||
Return CType(Me("StartupComponentsCheck"),Boolean)
|
||||
@@ -2093,7 +2080,7 @@ Namespace My
|
||||
|
||||
<Global.System.Configuration.ApplicationScopedSettingAttribute(), _
|
||||
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
|
||||
Global.System.Configuration.DefaultSettingValueAttribute("de,en,en-US,es,fr,nl,pl,ru,uk")> _
|
||||
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
|
||||
@@ -2282,19 +2269,6 @@ Namespace My
|
||||
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("True")> _
|
||||
Public Property ConDefaultUseCredSsp() As Boolean
|
||||
Get
|
||||
Return CType(Me("ConDefaultUseCredSsp"), Boolean)
|
||||
End Get
|
||||
Set(value As Boolean)
|
||||
Me("ConDefaultUseCredSsp") = value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
<Global.System.Configuration.UserScopedSettingAttribute(), _
|
||||
Global.System.Configuration.SettingsProviderAttribute(GetType(mRemoteNG.Config.Settings.Providers.ChooseProvider)), _
|
||||
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
|
||||
@@ -2307,6 +2281,197 @@ Namespace My
|
||||
Me("InhDefaultUseCredSsp") = 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 ConDefaultUseCredSsp() As Boolean
|
||||
Get
|
||||
Return CType(Me("ConDefaultUseCredSsp"),Boolean)
|
||||
End Get
|
||||
Set
|
||||
Me("ConDefaultUseCredSsp") = 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 AlwaysShowPanelTabs() As Boolean
|
||||
Get
|
||||
Return CType(Me("AlwaysShowPanelTabs"),Boolean)
|
||||
End Get
|
||||
Set
|
||||
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>
|
||||
@@ -393,7 +390,7 @@
|
||||
<Value Profile="(Default)">5500</Value>
|
||||
</Setting>
|
||||
<Setting Name="StartupComponentsCheck" Provider="mRemoteNG.Config.Settings.Providers.ChooseProvider" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">True</Value>
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="XULRunnerPath" Provider="mRemoteNG.Config.Settings.Providers.ChooseProvider" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
@@ -474,7 +471,7 @@
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
<Setting Name="SupportedUICultures" Type="System.String" Scope="Application">
|
||||
<Value Profile="(Default)">de,en,en-US,es,fr,nl,pl,ru,uk</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)" />
|
||||
@@ -518,10 +515,52 @@
|
||||
<Setting Name="BackupFileNameFormat" Provider="mRemoteNG.Config.Settings.Providers.ChooseProvider" Roaming="true" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)">{0}.{1:yyyyMMdd-HHmmssffff}.backup</Value>
|
||||
</Setting>
|
||||
<Setting Name="ConDefaultUseCredSsp" Provider="mRemoteNG.Config.Settings.Providers.ChooseProvider" Type="System.Boolean" Scope="Application">
|
||||
<Setting Name="InhDefaultUseCredSsp" Provider="mRemoteNG.Config.Settings.Providers.ChooseProvider" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="ConDefaultUseCredSsp" Provider="mRemoteNG.Config.Settings.Providers.ChooseProvider" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">True</Value>
|
||||
</Setting>
|
||||
<Setting Name="InhDefaultUseCredSsp" Provider="mRemoteNG.Config.Settings.Providers.ChooseProvider" Type="System.Boolean" Scope="User">
|
||||
<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>
|
||||
|
||||
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,41 +43,46 @@ 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
|
||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, String.Format(My.Language.strErrorDecryptionFailed, ex.Message))
|
||||
' Ignore CryptographicException "Padding is invalid and cannot be removed." when password is incorrect.
|
||||
If Not TypeOf ex Is CryptographicException Then
|
||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, String.Format(My.Language.strErrorDecryptionFailed, ex.Message))
|
||||
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
|
||||
@@ -179,15 +178,27 @@ Namespace Tools
|
||||
End Class
|
||||
|
||||
Public Shared Function ConnectionsSaveAsDialog() As SaveFileDialog
|
||||
Dim sDlg As New SaveFileDialog()
|
||||
sDlg.CheckPathExists = True
|
||||
sDlg.InitialDirectory = App.Info.Connections.DefaultConnectionsPath
|
||||
sDlg.FileName = App.Info.Connections.DefaultConnectionsFile
|
||||
sDlg.OverwritePrompt = True
|
||||
Dim saveFileDialog As New SaveFileDialog()
|
||||
saveFileDialog.CheckPathExists = True
|
||||
saveFileDialog.InitialDirectory = App.Info.Connections.DefaultConnectionsPath
|
||||
saveFileDialog.FileName = App.Info.Connections.DefaultConnectionsFile
|
||||
saveFileDialog.OverwritePrompt = True
|
||||
|
||||
sDlg.Filter = My.Language.strFiltermRemoteXML & "|*.xml|" & My.Language.strFiltermRemoteCSV & "|*.csv|" & My.Language.strFiltervRD2008CSV & "|*.csv|" & My.Language.strFilterAll & "|*.*"
|
||||
saveFileDialog.Filter = My.Language.strFiltermRemoteXML & "|*.xml|" & My.Language.strFilterAll & "|*.*"
|
||||
|
||||
Return sDlg
|
||||
Return saveFileDialog
|
||||
End Function
|
||||
|
||||
Public Shared Function ConnectionsExportDialog() As SaveFileDialog
|
||||
Dim saveFileDialog As New SaveFileDialog()
|
||||
saveFileDialog.CheckPathExists = True
|
||||
saveFileDialog.InitialDirectory = App.Info.Connections.DefaultConnectionsPath
|
||||
saveFileDialog.FileName = App.Info.Connections.DefaultConnectionsFile
|
||||
saveFileDialog.OverwritePrompt = True
|
||||
|
||||
saveFileDialog.Filter = My.Language.strFiltermRemoteXML & "|*.xml|" & My.Language.strFiltermRemoteCSV & "|*.csv|" & My.Language.strFiltervRD2008CSV & "|*.csv|" & My.Language.strFilterAll & "|*.*"
|
||||
|
||||
Return saveFileDialog
|
||||
End Function
|
||||
|
||||
Public Shared Function ConnectionsLoadDialog() As OpenFileDialog
|
||||
@@ -199,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
|
||||
|
||||
@@ -92,7 +92,7 @@ Namespace Tools
|
||||
Get
|
||||
If Not Me.Localized Then
|
||||
Me.Localized = True
|
||||
Me.DisplayNameValue = String.Format(My.Language.strFormatInherit, My.Resources.ResourceManager.GetString(Me.DisplayNameValue))
|
||||
Me.DisplayNameValue = String.Format(My.Language.strFormatInherit, My.Language.ResourceManager.GetString(Me.DisplayNameValue))
|
||||
End If
|
||||
|
||||
Return MyBase.DisplayName
|
||||
@@ -116,7 +116,7 @@ Namespace Tools
|
||||
Get
|
||||
If Not Me.Localized Then
|
||||
Me.Localized = True
|
||||
Me.DescriptionValue = String.Format(My.Language.strFormatInheritDescription, My.Resources.ResourceManager.GetString(Me.DescriptionValue))
|
||||
Me.DescriptionValue = String.Format(My.Language.strFormatInheritDescription, My.Language.ResourceManager.GetString(Me.DescriptionValue))
|
||||
End If
|
||||
|
||||
Return MyBase.Description
|
||||
|
||||
@@ -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
|
||||
@@ -306,7 +312,7 @@ Namespace Tree
|
||||
newInheritance.Parent = newConnectionInfo
|
||||
newConnectionInfo.Inherit = newInheritance
|
||||
|
||||
connectionList.Add(newConnectionInfo)
|
||||
ConnectionList.Add(newConnectionInfo)
|
||||
|
||||
Dim newTreeNode As New TreeNode(newConnectionInfo.Name)
|
||||
newTreeNode.Tag = newConnectionInfo
|
||||
@@ -316,9 +322,13 @@ Namespace Tree
|
||||
newConnectionInfo.TreeNode = newTreeNode
|
||||
|
||||
If parentNode Is Nothing Then
|
||||
oldTreeNode.Parent.Nodes.Add(newTreeNode)
|
||||
Tree.Node.TreeView.SelectedNode = newTreeNode
|
||||
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
|
||||
@@ -332,15 +342,20 @@ Namespace Tree
|
||||
newTreeNode.SelectedImageIndex = Images.Enums.TreeImage.Container
|
||||
newContainerInfo.ConnectionInfo.Parent = newContainerInfo
|
||||
|
||||
containerList.Add(newContainerInfo)
|
||||
ContainerList.Add(newContainerInfo)
|
||||
|
||||
oldTreeNode.Parent.Nodes.Add(newTreeNode)
|
||||
|
||||
Tree.Node.TreeView.SelectedNode = newTreeNode
|
||||
If parentNode Is Nothing Then
|
||||
oldTreeNode.Parent.Nodes.Insert(oldTreeNode.Index + 1, newTreeNode)
|
||||
TreeView.SelectedNode = newTreeNode
|
||||
Else
|
||||
parentNode.Nodes.Add(newTreeNode)
|
||||
End If
|
||||
|
||||
For Each childTreeNode As TreeNode In oldTreeNode.Nodes
|
||||
CloneNode(childTreeNode, newTreeNode)
|
||||
Next
|
||||
|
||||
newTreeNode.Expand()
|
||||
End If
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddMessage(Messages.MessageClass.WarningMsg, String.Format(My.Language.strErrorCloneNodeFailed, ex.Message))
|
||||
@@ -420,18 +435,20 @@ Namespace Tree
|
||||
End Sub
|
||||
|
||||
Public Shared Sub StartRenameSelectedNode()
|
||||
If SelectedNode IsNot Nothing Then
|
||||
Windows.treeForm.cMenTreeDelete.ShortcutKeys = Keys.None
|
||||
SelectedNode.BeginEdit()
|
||||
End If
|
||||
If SelectedNode IsNot Nothing Then SelectedNode.BeginEdit()
|
||||
End Sub
|
||||
|
||||
Public Shared Sub FinishRenameSelectedNode(ByVal NewName As String)
|
||||
Windows.treeForm.cMenTreeDelete.ShortcutKeys = Keys.Delete
|
||||
Public Shared Sub FinishRenameSelectedNode(ByVal newName As String)
|
||||
If newName Is Nothing Then Return
|
||||
|
||||
If NewName IsNot Nothing Then
|
||||
If NewName.Length > 0 Then
|
||||
SelectedNode.Tag.Name = NewName
|
||||
If newName.Length > 0 Then
|
||||
SelectedNode.Tag.Name = newName
|
||||
|
||||
If My.Settings.SetHostnameLikeDisplayName Then
|
||||
Dim connectionInfo As Connection.Info = TryCast(SelectedNode.Tag, Connection.Info)
|
||||
If (connectionInfo IsNot Nothing) Then
|
||||
connectionInfo.Hostname = newName
|
||||
End If
|
||||
End If
|
||||
End If
|
||||
End Sub
|
||||
@@ -490,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
|
||||
|
||||
|
||||
@@ -81,7 +81,7 @@ Namespace UI
|
||||
Me.AD.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.AD.Domain = "akane"
|
||||
Me.AD.Domain = ""
|
||||
Me.AD.Location = New System.Drawing.Point(0, 0)
|
||||
Me.AD.Name = "AD"
|
||||
Me.AD.SelectedNode = Nothing
|
||||
|
||||
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
|
||||
@@ -34,6 +34,15 @@ Namespace UI
|
||||
End Sub
|
||||
#End Region
|
||||
|
||||
#Region "Private Methods"
|
||||
Private Sub Base_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
|
||||
frmMain.ShowHidePanelTabs()
|
||||
End Sub
|
||||
|
||||
Private Sub Base_FormClosed(sender As System.Object, e As System.Windows.Forms.FormClosedEventArgs) Handles MyBase.FormClosed
|
||||
frmMain.ShowHidePanelTabs(Me)
|
||||
End Sub
|
||||
#End Region
|
||||
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,3 +1,5 @@
|
||||
Imports mRemoteNG.My
|
||||
Imports mRemoteNG.Connection.Protocol
|
||||
Imports WeifenLuo.WinFormsUI.Docking
|
||||
Imports System.Net.NetworkInformation
|
||||
Imports mRemoteNG.App.Runtime
|
||||
@@ -17,25 +19,31 @@ 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
|
||||
Me.pGrid = New Azuria.Common.Controls.FilteredPropertyGrid
|
||||
Me.btnShowInheritance = New System.Windows.Forms.ToolStripButton
|
||||
Me.btnShowDefaultInheritance = New System.Windows.Forms.ToolStripButton
|
||||
Me.btnShowProperties = New System.Windows.Forms.ToolStripButton
|
||||
Me.btnShowDefaultProperties = New System.Windows.Forms.ToolStripButton
|
||||
Me.btnIcon = New System.Windows.Forms.ToolStripButton
|
||||
Me.btnHostStatus = New System.Windows.Forms.ToolStripButton
|
||||
Me.components = New System.ComponentModel.Container()
|
||||
Me.pGrid = New Azuria.Common.Controls.FilteredPropertyGrid()
|
||||
Me.btnShowInheritance = New System.Windows.Forms.ToolStripButton()
|
||||
Me.btnShowDefaultInheritance = New System.Windows.Forms.ToolStripButton()
|
||||
Me.btnShowProperties = New System.Windows.Forms.ToolStripButton()
|
||||
Me.btnShowDefaultProperties = New System.Windows.Forms.ToolStripButton()
|
||||
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
|
||||
'
|
||||
Me.pGrid.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.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
|
||||
@@ -109,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)
|
||||
@@ -119,6 +139,7 @@ Namespace UI
|
||||
Me.Name = "Config"
|
||||
Me.TabText = "Config"
|
||||
Me.Text = "Config"
|
||||
Me.propertyGridContextMenu.ResumeLayout(False)
|
||||
Me.ResumeLayout(False)
|
||||
|
||||
End Sub
|
||||
@@ -214,49 +235,123 @@ Namespace UI
|
||||
End Sub
|
||||
|
||||
' Main form handle command key events
|
||||
' Adapted from http://kiwigis.blogspot.com/2009/05/adding-tab-key-support-to-propertygrid.html
|
||||
Protected Overrides Function ProcessCmdKey(ByRef msg As System.Windows.Forms.Message, ByVal keyData As System.Windows.Forms.Keys) As Boolean
|
||||
#If Config = "Debug" Then
|
||||
Debug.Print("key: " & keyData.ToString)
|
||||
Debug.Print("msg: " & msg.Msg)
|
||||
Debug.Print("hwnd: " & msg.HWnd.ToString)
|
||||
Debug.Print("lparam: " & msg.LParam.ToString)
|
||||
Debug.Print("wparam: " & msg.WParam.ToString)
|
||||
Debug.Print("result: " & msg.Result.ToString)
|
||||
#End If
|
||||
If keyData = Keys.Tab Then
|
||||
Dim curGridItemLabel As String = pGrid.SelectedGridItem.Label
|
||||
Dim gridItemIndex As Integer
|
||||
If (keyData And Keys.KeyCode) = Keys.Tab Then
|
||||
Dim selectedItem As GridItem = pGrid.SelectedGridItem
|
||||
Dim gridRoot As GridItem = selectedItem
|
||||
While gridRoot.GridItemType <> GridItemType.Root
|
||||
gridRoot = gridRoot.Parent
|
||||
End While
|
||||
|
||||
For gridItemIndex = 0 To pGrid.SelectedGridItem.Parent.GridItems.Count
|
||||
If pGrid.SelectedGridItem.Parent.GridItems(gridItemIndex).Label = curGridItemLabel Then
|
||||
Exit For
|
||||
End If
|
||||
Next
|
||||
Dim gridItems As New List(Of GridItem)
|
||||
FindChildGridItems(gridRoot, gridItems)
|
||||
|
||||
If pGrid.SelectedGridItem.Parent.GridItems.Count > gridItemIndex + 1 Then
|
||||
pGrid.SelectedGridItem.Parent.GridItems(gridItemIndex + 1).Select()
|
||||
Else
|
||||
pGrid.SelectedGridItem.Parent.GridItems(0).Select()
|
||||
If Not ContainsGridItemProperty(gridItems) Then Return True
|
||||
|
||||
Dim newItem As GridItem = selectedItem
|
||||
|
||||
If keyData = (Keys.Tab Or Keys.Shift) Then
|
||||
newItem = FindPreviousGridItemProperty(gridItems, selectedItem)
|
||||
ElseIf keyData = Keys.Tab Then
|
||||
newItem = FindNextGridItemProperty(gridItems, selectedItem)
|
||||
End If
|
||||
|
||||
pGrid.SelectedGridItem = newItem
|
||||
|
||||
Return True ' Handled
|
||||
Else
|
||||
Return MyBase.ProcessCmdKey(msg, keyData)
|
||||
End If
|
||||
If keyData = (Keys.Tab Or Keys.Shift) Then
|
||||
Dim curGridItemLabel As String = pGrid.SelectedGridItem.Label
|
||||
Dim gridItemIndex As Integer
|
||||
End Function
|
||||
|
||||
For gridItemIndex = 0 To pGrid.SelectedGridItem.Parent.GridItems.Count
|
||||
If pGrid.SelectedGridItem.Parent.GridItems(gridItemIndex).Label = curGridItemLabel Then
|
||||
Exit For
|
||||
End If
|
||||
Private Sub FindChildGridItems(item As GridItem, ByRef gridItems As List(Of GridItem))
|
||||
gridItems.Add(item)
|
||||
|
||||
If Not item.Expandable Or item.Expanded Then
|
||||
For Each child As GridItem In item.GridItems
|
||||
FindChildGridItems(child, gridItems)
|
||||
Next
|
||||
End If
|
||||
End Sub
|
||||
|
||||
If gridItemIndex - 1 >= 0 Then
|
||||
pGrid.SelectedGridItem.Parent.GridItems(gridItemIndex - 1).Select()
|
||||
Else
|
||||
pGrid.SelectedGridItem.Parent.GridItems(pGrid.SelectedGridItem.Parent.GridItems.Count - 1).Select()
|
||||
End If
|
||||
Private Function ContainsGridItemProperty(gridItems As List(Of GridItem)) As Boolean
|
||||
For Each item As GridItem In gridItems
|
||||
If item.GridItemType = GridItemType.Property Then Return True
|
||||
Next
|
||||
Return False
|
||||
End Function
|
||||
|
||||
Private Function FindPreviousGridItemProperty(gridItems As List(Of GridItem), startItem As GridItem) As GridItem
|
||||
If gridItems.Count = 0 Then Return Nothing
|
||||
If startItem Is Nothing Then Return Nothing
|
||||
|
||||
Dim startIndex As Integer = gridItems.IndexOf(startItem)
|
||||
|
||||
If startItem.GridItemType = GridItemType.Property Then
|
||||
startIndex = startIndex - 1
|
||||
If startIndex < 0 Then startIndex = gridItems.Count - 1
|
||||
End If
|
||||
|
||||
Return MyBase.ProcessCmdKey(msg, keyData)
|
||||
Dim previousIndex As Integer = 0
|
||||
Dim previousIndexValid As Boolean = False
|
||||
For index As Integer = startIndex To 0 Step -1
|
||||
If gridItems(index).GridItemType = GridItemType.Property Then
|
||||
previousIndex = index
|
||||
previousIndexValid = True
|
||||
Exit For
|
||||
End If
|
||||
Next
|
||||
|
||||
If previousIndexValid Then Return gridItems(previousIndex)
|
||||
|
||||
For index As Integer = gridItems.Count - 1 To startIndex + 1 Step -1
|
||||
If gridItems(index).GridItemType = GridItemType.Property Then
|
||||
previousIndex = index
|
||||
previousIndexValid = True
|
||||
Exit For
|
||||
End If
|
||||
Next
|
||||
|
||||
If Not previousIndexValid Then Return Nothing
|
||||
|
||||
Return gridItems(previousIndex)
|
||||
End Function
|
||||
|
||||
Private Function FindNextGridItemProperty(gridItems As List(Of GridItem), startItem As GridItem) As GridItem
|
||||
If gridItems.Count = 0 Then Return Nothing
|
||||
If startItem Is Nothing Then Return Nothing
|
||||
|
||||
Dim startIndex As Integer = gridItems.IndexOf(startItem)
|
||||
|
||||
If startItem.GridItemType = GridItemType.Property Then
|
||||
startIndex = startIndex + 1
|
||||
If startIndex >= gridItems.Count Then startIndex = 0
|
||||
End If
|
||||
|
||||
Dim nextIndex As Integer = 0
|
||||
Dim nextIndexValid As Boolean = False
|
||||
For index As Integer = startIndex To gridItems.Count - 1
|
||||
If gridItems(index).GridItemType = GridItemType.Property Then
|
||||
nextIndex = index
|
||||
nextIndexValid = True
|
||||
Exit For
|
||||
End If
|
||||
Next
|
||||
|
||||
If nextIndexValid Then Return gridItems(nextIndex)
|
||||
|
||||
For index As Integer = 0 To startIndex - 1
|
||||
If gridItems(index).GridItemType = GridItemType.Property Then
|
||||
nextIndex = index
|
||||
nextIndexValid = True
|
||||
Exit For
|
||||
End If
|
||||
Next
|
||||
|
||||
If Not nextIndexValid Then Return Nothing
|
||||
|
||||
Return gridItems(nextIndex)
|
||||
End Function
|
||||
|
||||
Public Sub SetPropertyGridObject(ByVal Obj As Object)
|
||||
@@ -283,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
|
||||
@@ -315,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
|
||||
@@ -345,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
|
||||
|
||||
@@ -400,41 +511,6 @@ Namespace UI
|
||||
#End Region
|
||||
|
||||
#Region "Private Methods"
|
||||
Private tsCustom As ToolStrip = Nothing
|
||||
|
||||
Private Sub Config_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
|
||||
ApplyLanguage()
|
||||
|
||||
Try
|
||||
'Show PropertyGrid Toolbar buttons
|
||||
tsCustom = New ToolStrip
|
||||
tsCustom.Items.Add(btnShowProperties)
|
||||
tsCustom.Items.Add(btnShowInheritance)
|
||||
tsCustom.Items.Add(btnShowDefaultProperties)
|
||||
tsCustom.Items.Add(btnShowDefaultInheritance)
|
||||
tsCustom.Items.Add(btnHostStatus)
|
||||
tsCustom.Items.Add(btnIcon)
|
||||
tsCustom.Show()
|
||||
|
||||
Dim tsDefault As New ToolStrip
|
||||
|
||||
For Each ctrl As System.Windows.Forms.Control In pGrid.Controls
|
||||
Dim tStrip As ToolStrip = TryCast(ctrl, ToolStrip)
|
||||
|
||||
If tStrip IsNot Nothing Then
|
||||
tsDefault = tStrip
|
||||
Exit For
|
||||
End If
|
||||
Next
|
||||
|
||||
tsDefault.AllowMerge = True
|
||||
tsDefault.Items(tsDefault.Items.Count - 1).Visible = False
|
||||
ToolStripManager.Merge(tsCustom, tsDefault)
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strConfigUiLoadFailed & vbNewLine & ex.Message, True)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
Private Sub ApplyLanguage()
|
||||
btnShowInheritance.Text = My.Language.strButtonInheritance
|
||||
btnShowDefaultInheritance.Text = My.Language.strButtonDefaultInheritance
|
||||
@@ -444,6 +520,85 @@ 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
|
||||
Private _originalPropertyGridToolStripItemCount As Integer
|
||||
|
||||
Private Sub AddToolStripItems()
|
||||
Try
|
||||
Dim customToolStrip As ToolStrip = New ToolStrip
|
||||
customToolStrip.Items.Add(btnShowProperties)
|
||||
customToolStrip.Items.Add(btnShowInheritance)
|
||||
customToolStrip.Items.Add(btnShowDefaultProperties)
|
||||
customToolStrip.Items.Add(btnShowDefaultInheritance)
|
||||
customToolStrip.Items.Add(btnHostStatus)
|
||||
customToolStrip.Items.Add(btnIcon)
|
||||
customToolStrip.Show()
|
||||
|
||||
Dim propertyGridToolStrip As New ToolStrip
|
||||
|
||||
Dim toolStrip As ToolStrip = Nothing
|
||||
For Each control As System.Windows.Forms.Control In pGrid.Controls
|
||||
toolStrip = TryCast(control, ToolStrip)
|
||||
|
||||
If toolStrip IsNot Nothing Then
|
||||
propertyGridToolStrip = toolStrip
|
||||
Exit For
|
||||
End If
|
||||
Next
|
||||
|
||||
If toolStrip Is Nothing Then
|
||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, Language.strCouldNotFindToolStripInFilteredPropertyGrid, True)
|
||||
Return
|
||||
End If
|
||||
|
||||
If Not _originalPropertyGridToolStripItemCountValid Then
|
||||
_originalPropertyGridToolStripItemCount = propertyGridToolStrip.Items.Count
|
||||
_originalPropertyGridToolStripItemCountValid = True
|
||||
End If
|
||||
Debug.Assert(_originalPropertyGridToolStripItemCount = 5)
|
||||
|
||||
' Hide the "Property Pages" button
|
||||
propertyGridToolStrip.Items(_originalPropertyGridToolStripItemCount - 1).Visible = False
|
||||
|
||||
Dim expectedToolStripItemCount As Integer = _originalPropertyGridToolStripItemCount + customToolStrip.Items.Count
|
||||
If propertyGridToolStrip.Items.Count <> expectedToolStripItemCount Then
|
||||
propertyGridToolStrip.AllowMerge = True
|
||||
ToolStripManager.Merge(customToolStrip, propertyGridToolStrip)
|
||||
End If
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, Language.strConfigUiLoadFailed & vbNewLine & ex.Message, True)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
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
|
||||
AddToolStripItems()
|
||||
End Sub
|
||||
|
||||
Private Sub pGrid_PropertyValueChanged(ByVal s As Object, ByVal e As System.Windows.Forms.PropertyValueChangedEventArgs) Handles pGrid.PropertyValueChanged
|
||||
@@ -465,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
|
||||
@@ -476,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
|
||||
@@ -508,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)
|
||||
@@ -543,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")
|
||||
@@ -560,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")
|
||||
@@ -568,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")
|
||||
@@ -596,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")
|
||||
@@ -604,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")
|
||||
@@ -634,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")
|
||||
@@ -642,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")
|
||||
@@ -673,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")
|
||||
@@ -681,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")
|
||||
@@ -713,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")
|
||||
@@ -721,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")
|
||||
@@ -753,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")
|
||||
@@ -761,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")
|
||||
@@ -793,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")
|
||||
@@ -800,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")
|
||||
@@ -831,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")
|
||||
@@ -865,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")
|
||||
@@ -872,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")
|
||||
@@ -902,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")
|
||||
@@ -910,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")
|
||||
@@ -1135,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
|
||||
@@ -1209,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
|
||||
@@ -1229,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
|
||||
@@ -1307,6 +1513,18 @@ Namespace UI
|
||||
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
|
||||
@@ -262,6 +263,8 @@ Namespace UI
|
||||
nTab.Title &= ")"
|
||||
End If
|
||||
|
||||
nTab.Title = nTab.Title.Replace("&", "&&")
|
||||
|
||||
Dim conIcon As Icon = mRemoteNG.Connection.Icon.FromString(conI.Icon)
|
||||
If conIcon IsNot Nothing Then
|
||||
nTab.Icon = conIcon
|
||||
@@ -274,6 +277,7 @@ Namespace UI
|
||||
End If
|
||||
|
||||
nTab.Selected = True
|
||||
_ignoreChangeSelectedTabClick = False
|
||||
|
||||
Return nTab
|
||||
Catch ex As Exception
|
||||
@@ -289,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
|
||||
@@ -308,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
|
||||
@@ -323,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
|
||||
|
||||
@@ -358,30 +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
|
||||
_firstClickTicks = 0
|
||||
If My.Settings.DoubleClickOnTabClosesIt Then
|
||||
Me.CloseConnectionTab()
|
||||
End If
|
||||
@@ -420,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
|
||||
@@ -760,6 +787,7 @@ Namespace UI
|
||||
Dim IC As mRemoteNG.Connection.InterfaceControl = Me.TabController.SelectedTab.Tag
|
||||
|
||||
App.Runtime.OpenConnection(IC.Info, mRemoteNG.Connection.Info.Force.DoNotJump)
|
||||
_ignoreChangeSelectedTabClick = False
|
||||
End If
|
||||
End If
|
||||
Catch ex As Exception
|
||||
@@ -820,6 +848,7 @@ Namespace UI
|
||||
Else
|
||||
Try
|
||||
Me.TabController.TabPages.Remove(TabToBeClosed)
|
||||
_ignoreChangeSelectedTabClick = False
|
||||
Catch comEx As System.Runtime.InteropServices.COMException
|
||||
CloseTab(TabToBeClosed)
|
||||
Catch ex As Exception
|
||||
@@ -832,9 +861,47 @@ Namespace UI
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private _ignoreChangeSelectedTabClick As Boolean = False
|
||||
Private Sub TabController_SelectionChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles TabController.SelectionChanged
|
||||
Me.FocusIC()
|
||||
Me.RefreshIC()
|
||||
_ignoreChangeSelectedTabClick = True
|
||||
FocusIC()
|
||||
RefreshIC()
|
||||
End Sub
|
||||
|
||||
Private _firstClickTicks As Integer = 0
|
||||
Private _doubleClickRectangle As Rectangle
|
||||
Private Sub TabController_MouseUp(ByVal sender As Object, ByVal e As MouseEventArgs) Handles TabController.MouseUp
|
||||
Try
|
||||
If Not Native.GetForegroundWindow() = frmMain.Handle And Not _ignoreChangeSelectedTabClick Then
|
||||
Dim clickedTab As Magic.Controls.TabPage = TabController.TabPageFromPoint(e.Location)
|
||||
If clickedTab IsNot Nothing And TabController.SelectedTab IsNot clickedTab Then
|
||||
Native.SetForegroundWindow(Handle)
|
||||
TabController.SelectedTab = clickedTab
|
||||
End If
|
||||
End If
|
||||
_ignoreChangeSelectedTabClick = False
|
||||
|
||||
Select Case e.Button
|
||||
Case MouseButtons.Left
|
||||
Dim currentTicks As Integer = Environment.TickCount
|
||||
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)
|
||||
End If
|
||||
Case MouseButtons.Middle
|
||||
CloseConnectionTab()
|
||||
Case MouseButtons.Right
|
||||
ShowHideMenuButtons()
|
||||
Native.SetForegroundWindow(Handle)
|
||||
cmenTab.Show(TabController, e.Location)
|
||||
End Select
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "TabController_MouseUp (UI.Window.Connections) failed" & vbNewLine & ex.Message, True)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
Private Sub FocusIC()
|
||||
@@ -871,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)
|
||||
|
||||
@@ -894,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)
|
||||
|
||||
@@ -917,22 +982,11 @@ Namespace UI
|
||||
TabController.TabPages.ResumeEvents()
|
||||
End Sub
|
||||
|
||||
Private Sub TabController_MouseUp(ByVal sender As Object, ByVal e As MouseEventArgs) Handles TabController.MouseUp
|
||||
Debug.Print("UI.Window.Connection.TabController_MouseUp()")
|
||||
Try
|
||||
Select Case e.Button
|
||||
Case MouseButtons.Left
|
||||
FocusIC()
|
||||
Case MouseButtons.Middle
|
||||
TabController.SelectedTab = TabController.TabPageFromPoint(e.Location)
|
||||
CloseConnectionTab()
|
||||
Case MouseButtons.Right
|
||||
ShowHideMenuButtons()
|
||||
cmenTab.Show(TabController, e.Location)
|
||||
End Select
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "TabController_MouseUp (UI.Window.Connections) failed" & vbNewLine & ex.Message, True)
|
||||
End Try
|
||||
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
|
||||
|
||||
@@ -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
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user