请问怎样用 C# 实现象 XP 那样的远程桌面连接?

tuery 2003-10-15 10:00:05
就是可以操作远程机器,看到桌面活动情况,先谢谢了.
...全文
179 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
chegan 2003-10-17
  • 打赏
  • 举报
回复
http://www.123aspx.com/redir.aspx?res=29335
这个可以看看
tuery 2003-10-17
  • 打赏
  • 举报
回复
up
tuery 2003-10-17
  • 打赏
  • 举报
回复
up
tuery 2003-10-17
  • 打赏
  • 举报
回复
哪位大侠用过chegan(不必在意许多)所说的例子?
areyouhere 2003-10-17
  • 打赏
  • 举报
回复
chegan(不必在意许多),谢谢,不过你所说的,compile起来好象问题多多,你自己试过吗?

我的是vs.net2003,win2003
xboy 2003-10-16
  • 打赏
  • 举报
回复
我想这个是没有现成的空件的
tuery 2003-10-16
  • 打赏
  • 举报
回复
googman(迷途羔羊):

我现在是可以用API实现截图,但图怎么看都不象实际desktop清晰,达不到XP 的远程桌面连接效果吧?
tuery 2003-10-16
  • 打赏
  • 举报
回复
谢谢大侠们的指点,我正在找资料,有空请继续指点.
googman 2003-10-16
  • 打赏
  • 举报
回复
我做过这样的程序 不过以前是用vb的 现在用c#应该会更简单了
前提是你要掌握一定的API函数,
因为屏幕截图这样的功能用API就容易实现.
还有比如木马程序中的判断你当前是否运行了某个程序,这个程序中有没有密码框,然后截获密码等这样的功能都要用API,不过现在.NET的序列化功能为网络传输带来了极大的方便.
在做法上你有两个选择
1-用remoting 这样在局域网内做是相当简单的,当然在internet上的实现会很麻烦.
2-直接用socket,这样你可能需要为你的网络操作命令定义一些套接字,具体细节楼主你可以自己琢磨了.
cdbnzc 2003-10-16
  • 打赏
  • 举报
回复
好像用冰河可以得........
binbin2000 2003-10-16
  • 打赏
  • 举报
回复
先将对方屏幕截下来,然后传输到目标计算机上。
tuery 2003-10-16
  • 打赏
  • 举报
回复
googman(迷途羔羊),谢谢你,不过我想靠截图那样的方法来远程控制,视觉效果不是很好吗?
googman 2003-10-16
  • 打赏
  • 举报
回复
哦 是我看错了
googman 2003-10-16
  • 打赏
  • 举报
回复
googman(迷途羔羊):

我现在是可以用API实现截图,但图怎么看都不象实际desktop清晰,达不到XP 的远程桌面连接效果吧?

这个帖子不是本人发的,难道我的号码被盗用了?
googman 2003-10-16
  • 打赏
  • 举报
回复
我有现成的截图方法:
#region 与操作系统交互的函数的封装类
public class WIN32API
{

public const int HORZRES=8;
public const int VERTRES=10;
public const int SCRCOPY=0x00CC0020;

public const int LOGPIXELSX = 88;
public const int LOGPIXELSY = 90;
/// <summary>
/// 将一幅位图从一个设备场景复制到另一个
///</summary>
[DllImport("gdi32.dll")]
public static extern int StretchBlt(IntPtr hdc ,int x , int y , int nWidth , int nHeight , IntPtr hSrcDC , int xSrc , int ySrc , int nSrcWidth , int nSrcHeight , int dwRop );

/// <summary>
/// 将一幅位图从一个设备场景复制到另一个
/// </summary>
[DllImport("gdi32.dll")]
public static extern int BitBlt (IntPtr hDestDC ,int x, int y, int nWidth, int nHeight, IntPtr hSrcDC, int xSrc, int ySrc, int dwRopint);

/// <summary>
/// 创建一个与特定设备场景一致的内存设备场景
/// </summary>
[DllImport("gdi32.dll")]
public static extern IntPtr CreateCompatibleDC(IntPtr hdc ) ;


/// <summary>
/// 创建一幅与设备有关位图,它与指定的设备场景兼容
/// </summary>
[DllImport("gdi32.dll")]
public static extern IntPtr CreateCompatibleBitmap(IntPtr hdc , int nWidth , int nHeight ) ;

/// <summary>
/// 每个设备场景都可能有选入其中的图形对象
/// </summary>
[DllImport("gdi32.dll")]
public static extern int SelectObject (IntPtr hdc , IntPtr hObject );

/// <summary>
/// 根据指定设备场景代表的设备的功能返回信息
/// </summary>
[DllImport("gdi32.dll")]
public static extern int GetDeviceCaps (IntPtr hdc , int nIndex );

/// <summary>
/// 存放鼠标位置结构的结构体
/// </summary>
public struct POINTAPI
{
public int x;
public int y;
}


/// <summary>
/// 取得当前鼠标的位置
/// </summary>
/// <param name="As"></param>
/// <returns></returns>
[DllImport("user32.dll")]
public static extern int GetCursorPos (ref POINTAPI lpPoint ) ;


}
#endregion

public override Image OnSaveAsPicture()
{
Rectangle rect=Common.Zoom(this.Pool.PoolRectangle,this.Context.Host.Zoom);


Graphics grp=this.Context.Host.CreateGraphics();
IntPtr sourceHdc=new IntPtr();
sourceHdc=grp.GetHdc();




//创建一个和图形源匹配的普通DC
IntPtr hdcCompatible =new IntPtr();
hdcCompatible=WIN32API.CreateCompatibleDC(sourceHdc);


//创建一个内存位图
IntPtr hbm=new IntPtr();
hbm =WIN32API.CreateCompatibleBitmap(sourceHdc,
WIN32API.GetDeviceCaps(sourceHdc,WIN32API.HORZRES),
WIN32API.GetDeviceCaps(sourceHdc, WIN32API.VERTRES));


//把内存位图选入绘图设备
WIN32API.SelectObject(hdcCompatible, hbm);

//拷贝图像
// Common.BitBlt(hdcCompatible, 0,0, 1024, 768, sourceHdc, 0,0, WIN32API.SCRCOPY) ;


if (rect==Rectangle.Empty)
{
rect=new Rectangle(new Point(0,0),new Size(this.Context.Host.ClientSize.Width,this.Context.Host.ClientSize.Height));
}

WIN32API.StretchBlt(hdcCompatible,rect.X,rect.Y,rect.Width ,rect.Height,sourceHdc,rect.X ,rect.Y,
rect.Width,
rect.Height,WIN32API.SCRCOPY );

Image img=Image.FromHbitmap(hbm);

System.IO.FileStream fs=System.IO.File.Create(@"c:\uyi.jpg");

img.Save(fs,ImageFormat.Jpeg);

fs.Close();

grp.ReleaseHdc(sourceHdc);

grp.Dispose();


return img;


}
zhehui 2003-10-15
  • 打赏
  • 举报
回复
还不知道需要什么样的技术。
到codeproject.com上找一下看有没有这方面的实例。

110,552

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧