複数のターミナル(mstsc)セッションを管理するためのツールがいくつかあります。
WPFで同様のことを達成するにはどうすればよいですか?
複数のターミナル(mstsc)セッションを管理するためのツールがいくつかあります。
WPFで同様のことを達成するにはどうすればよいですか?
WindowsFormsHost
RDPのActiveXコントロールをホストするには、elementを使用する必要があります。
WindowsMediaPlayerをWPFアプリケーションに統合する方法の短いサンプルがあります。RDPコントロールのホスティングも同様です。
これらのツールは、Webページでホストされるように設計されたリモートデスクトップActiveXコントロールを使用している可能性がありますが、ActiveXコントロールであるため、単独でホストすることもできます。
他に何もない場合は、WPFアプリケーションにWebブラウザーコントロールを埋め込んでから、その中にActiveXコントロールを埋め込むことができます。
次のリンクを参照してください。
公式MSサイトのMSRDCManから入手できます。[参照]の[COM]タブから追加する方法-すばらしい質問です...2。XAMLWindowsFormsHostに追加します。
<UserControl x:Class="VMViewer"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="231" d:DesignWidth="274" Loaded="UserControl_Loaded">
<Border BorderThickness="1" BorderBrush="CornflowerBlue">
<Grid >
<Grid.RowDefinitions>
<RowDefinition Height="22"/>
<RowDefinition/>
</Grid.RowDefinitions>
<Button Grid.Row="0" x:Name="connectBtn" Content="Connect" Click="Button_Click" DockPanel.Dock="Top" HorizontalAlignment="Stretch" />
<WindowsFormsHost Grid.Row="1" Margin="0,0,0,0" x:Name="wfHost" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>
</Grid>
</Border>
新しいrdpクライアントクラスを作成します。
public class RdpControl:AxMSTSCLib.AxMsRdpClient9NotSafeForScripting {public RdpControl():base(){}
protected override void WndProc(ref System.Windows.Forms.Message m)
{
// Fix for the missing focus issue on the rdp client component
if (m.Msg == 0x0021) // WM_MOUSEACTIVATE
{
if (!this.ContainsFocus)
{
this.Focus();
}
}
base.WndProc(ref m);
}}
UserControlの背後にあるコード:
private void InitData(){_rdp = new RdpControl(); ((System.ComponentModel.ISupportInitialize)(_ rdp))。BeginInit(); _rdp.Name = "rdp"; _rdp.Enabled = true; wfHost.Child = _rdp; ((System.ComponentModel.ISupportInitialize)(_ rdp))。EndInit(); }
private void Connect()
{
_rdp.Server = CurrentVM.Name;
_rdp.UserName = CurrentVM.Login;
_rdp.AdvancedSettings9.ClearTextPassword = CurrentVM.Password;
_rdp.ColorDepth = 24;
_rdp.AdvancedSettings9.SmartSizing = true;
_rdp.AdvancedSettings9.AuthenticationLevel = 2;
_rdp.AdvancedSettings9.EnableCredSspSupport = true;
_rdp.Width = Convert.ToInt32(this.ActualWidth);
_rdp.Height = Convert.ToInt32(this.ActualHeight);
_rdp.DesktopWidth = Convert.ToInt32(this.ActualWidth);
_rdp.DesktopHeight = Convert.ToInt32(this.ActualHeight);
try
{
_rdp.Connect();
}
catch
{
}
}
このハンドラーを使用してUserControlボタンに追加します。
private void Button_Click(object sender, RoutedEventArgs e)
{
InitData();
Connect();
}
それが役に立てば幸い。