PDA

View Full Version : سوال: برنامه Remote Desktop برای کنترل کلاینت



pouria_bayat
سه شنبه 08 مهر 1393, 19:39 عصر
سلام دوستان کسی سورس برنامه RemoteDesktop برای کنترل کلاینت رو داره اگر داره ممنون میشم بهم بدید.
یا لینک بدید.

silver189
چهارشنبه 09 مهر 1393, 10:05 صبح
http://www.codeproject.com/Articles/43705/Remote-Desktop-using-C-NET

pouria_bayat
چهارشنبه 09 مهر 1393, 12:26 عصر
از این سورس کد استفاده کردم ولی جواب نداد متاسفانه می خواستم خودم کد نویسی نکنم و از سورس کد آماده استفاده کنم ولی متاسفانه مجبورم اینکارو بکنم.

juza66
چهارشنبه 09 مهر 1393, 12:29 عصر
سلام


اسکرین شات برنامه
http://barnamenevisjavan.ir/wp-content/uploads/2013/07/Desktopmanager.jpg

سورس:
http://barnamenevisjavan.ir/1188/%D8%B3%D9%88%D8%B1%D8%B3-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%85%D8%AF%D9%8A%D8%B1%D9%8A%D8%AA-%D8%AF%D8%B3%DA%A9%D8%AA%D8%A7%D9%BE-%D9%88%D9%8A%D9%86%D8%AF%D9%88%D8%B2-%D8%A8%D8%A7-%D8%B3%D9%8A/

منبع:
http://barnamenevisjavan.ir/1188/%D8%B3%D9%88%D8%B1%D8%B3-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%85%D8%AF%D9%8A%D8%B1%D9%8A%D8%AA-%D8%AF%D8%B3%DA%A9%D8%AA%D8%A7%D9%BE-%D9%88%D9%8A%D9%86%D8%AF%D9%88%D8%B2-%D8%A8%D8%A7-%D8%B3%D9%8A/

juza66
چهارشنبه 09 مهر 1393, 12:30 عصر
برای مانیتورینگ (لینک تایپیک)
http://barnamenevis.org/showthread.php?318312-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%85%D8%AF%DB%8C%D8%B1%DB%8C%D8%AA-%DA%A9%D8%A7%D9%81%DB%8C-%D9%86%D8%AA-%28%D8%AA%D8%AD%D8%AA-%D8%B3%D9%88%DA%A9%D8%AA%29

pouria_bayat
پنج شنبه 10 مهر 1393, 01:09 صبح
ممنون دوست عزیز juza66 (http://barnamenevis.org/member.php?177324-juza66) من از همین روش تقریبا استفاده کردم متاسفانه دیر لینکهاتونو دیدم به خاطر اینکه از ظهر خودم روی این مساله تایم گذاشتم، در حال حاظر یک مشگل کوچیک هست اینکه نشانگر موس در لینک برنامه های گذاشته شده نمایش داده نمیشه.
و من از سورس کد رشید محمد :

http://www.codeproject.com/Articles/12850/Capturing-the-Desktop-Screen-with-the-Mouse-Cursor
استفاده کردم برای گرفتن عکس همراه نشانگر موس که ارور IO Exeption دریافت میکنم، البته اوایل خیلی خوب کار میکنه ولی بعد از یکی دو دقیقه این ارور رو دریافت میکنم.
راستی فن CPu با اجرای این برنامه احساس میکنم کمی فعال تر شده به نظرت چیکار کنم به سیستم کمتر فشار بیاد؟ (میترسم اگر از چندین کلاینت ریموت بگیرم CPU منفجر بشه!)

pouria_bayat
پنج شنبه 10 مهر 1393, 20:45 عصر
سلام دوستان زمان استفاده از توابع زیر با این ارور مواجه میشم:
Bitmap bmpScreenshot = CaptureScreen.CaptureDesktop();


GC.Collect();

int x = 0;
int y = 0;
Bitmap cursor = CaptureScreen.CaptureCursor(ref x, ref y);
if (cursor != null)
{
Rectangle r = new Rectangle(x, y, cursor.Width, cursor.Height);
Graphics g = Graphics.FromImage(bmpScreenshot);
g.DrawImage(cursor, r);
g.Flush();
}
tImage = bmpScreenshot;
if (tImage != null)
{
//Thread thread = new Thread(() => SendImage(tImage));
// thread.Start();
SendImage(tImage);

}



public static Bitmap CaptureDesktop()
{
SIZE size;
IntPtr hBitmap;
IntPtr hDC = Win32Stuff.GetDC(Win32Stuff.GetDesktopWindow());
IntPtr hMemDC = GDIStuff.CreateCompatibleDC(hDC);

size.cx = Win32Stuff.GetSystemMetrics
(Win32Stuff.SM_CXSCREEN);

size.cy = Win32Stuff.GetSystemMetrics
(Win32Stuff.SM_CYSCREEN);

hBitmap = GDIStuff.CreateCompatibleBitmap(hDC, size.cx, size.cy);

if (hBitmap != IntPtr.Zero)
{
IntPtr hOld = (IntPtr)GDIStuff.SelectObject
(hMemDC, hBitmap);

GDIStuff.BitBlt(hMemDC, 0, 0, size.cx, size.cy, hDC,
0, 0, GDIStuff.SRCCOPY);

GDIStuff.SelectObject(hMemDC, hOld);
Win32Stuff.ReleaseDC(Win32Stuff.GetDesktopWindow() , hDC);
GDIStuff.DeleteDC(hMemDC);
Bitmap bmp = System.Drawing.Image.FromHbitmap(hBitmap);
GDIStuff.DeleteObject(hBitmap);
GC.Collect();
return bmp;
}
return null;

}


public static Bitmap CaptureCursor(ref int x, ref int y)
{
lock (Lock)
{
try
{
Bitmap bmp;
IntPtr hicon;
Win32Stuff.CURSORINFO ci = new Win32Stuff.CURSORINFO();
Win32Stuff.ICONINFO icInfo;
ci.cbSize = Marshal.SizeOf(ci);
if (Win32Stuff.GetCursorInfo(out ci))
{
if (ci.flags == Win32Stuff.CURSOR_SHOWING)
{
hicon = Win32Stuff.CopyIcon(ci.hCursor);
if (Win32Stuff.GetIconInfo(hicon, out icInfo))
{
x = ci.ptScreenPos.x - ((int)icInfo.xHotspot);
y = ci.ptScreenPos.y - ((int)icInfo.yHotspot);
Icon ic = Icon.FromHandle(hicon);
bmp = ic.ToBitmap();
return bmp;
}
}
}
}
catch (Exception e)
{
Console.Out.WriteLine(e.ToString());
return null;
}
return null;
}

}



ارور:

A first chance exception of type 'System.Runtime.InteropServices.ExternalException' occurred in System.Drawing.dll
System.Runtime.InteropServices.ExternalException (0x80004005): A generic error occurred in GDI+.
at System.Drawing.Image.FromHbitmap(IntPtr hbitmap, IntPtr hpalette)
at System.Drawing.Image.FromHbitmap(IntPtr hbitmap)
at System.Drawing.Icon.ToBitmap()
at ScreenshotCaptureWithMouse.ScreenCapture.CaptureSc reen.CaptureCursor(Int32& x, Int32& y) in d:\PROJECT\C# Prog\

pouria_bayat
پنج شنبه 10 مهر 1393, 20:48 عصر
و اما از روش دیگه وقتی استفاده میکنم مثل زیر که دوست خوبمون زحمت کشیدن لینکشو گذاشتن:

var bmpScreenshot = new Bitmap(Screen.PrimaryScreen.Bounds.Width,
Screen.PrimaryScreen.Bounds.Height,
PixelFormat.Format32bppArgb);

// Create a graphics object from the bitmap.
var gfxScreenshot = Graphics.FromImage(bmpScreenshot);

// Console.WriteLine(gfxScreenshot.ClipBounds.IsEmpty );
// Take the screenshot from the upper left corner to the right bottom corner.
gfxScreenshot.CopyFromScreen(Screen.PrimaryScreen. Bounds.X,Screen.PrimaryScreen.Bounds.Y,0,0,Screen. PrimaryScreen.Bounds.Size,CopyPixelOperation.Sourc eCopy);

tImage = bmpScreenshot;
GC.Collect();

با ارور Invalid Argument مواجه میشم روی خط:

gfxScreenshot.CopyFromScreen(Screen.PrimaryScreen. Bounds.X,Screen.PrimaryScreen.Bounds.Y,0,0,Screen. PrimaryScreen.Bounds.Size,CopyPixelOperation.Sourc eCopy);

الان دو روزه گیرشم خواهشن اگر میتونید کمک کنید شاید چند دقیقه کمک شما باعث بشه مشگل دو روزه من حل بشه.
البته قابل ذکره هم در پست قبل و هم در این پست ابتدا برنامه خوب کار میکنه اما بعد از 2 الی 3 دقیقه بعد ارور میده.