Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,037

HOME > .NET Framework > Forum > สอบถามเรื่องการเขียนโปรแกรม remote desktop ครับ...



 

สอบถามเรื่องการเขียนโปรแกรม remote desktop ครับ...

 



Topic : 123075



โพสกระทู้ ( 117 )
บทความ ( 0 )



สถานะออฟไลน์




รบกวนสอบถามเรื่องการเขียนโปรแกรม remote ครับ ตอนนี้เขียนได้แต่ในส่วนรีโมตหน้าจอเครื่องลูกครับ อยากจะให้สามารถ control เมาส์กับคีย์บอร์ดด้วย ต้องทำอย่างไรครับ พอจะมีตัวอย่างให้ศึกษาบ้างมั้ยครับ ขอบคุณครับ



Tag : .NET, Ms SQL Server 2012, VBScript, Win (Windows App), VS 2010 (.NET 4.x)







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2016-05-25 09:10:42 By : punmontha View : 2722 Reply : 8
 

 

No. 1

Guest


ต้องทำเป็น os แต่ละอันนะ

ถ้าจะ remote ไป windows ก็ต้องซื้อ license จาก ms ด้วย

ถึงจะทำได้ เพราะเคยอ่าน description ของ app แล้วไปเจอเหตุผลว่าทำไมไม่ทำ windows

ส่วนโค้ด ไม่รู้อ่ะ






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-05-25 09:17:34 By : ห้ามตอบเกินวันละ 2 กระทู้
 


 

No. 2



โพสกระทู้ ( 4,440 )
บทความ ( 23 )



สถานะออฟไลน์
Facebook

เหมือน team หรือ vnc ประมาณนั้นรึครับ

รึแค่ทำผ่าน แลน ครับ

อันนี้ไม่เคยทำนะครับแต่หากเรามองให้เหมือนกับ team หรือ vnc
จะสังเกตว่า มีเครื่อง แม่กับเครื่องลูก ซึ่งทั้ง 2 ต้องมี โปรแกรม ตอบสนองซึ่งกันและกัน
โดยเครื่องลูกควบคุม control ต่างๆในเครื่องลูก แล้ว รับ-ส่งค่า จากเครื่องแม่
ไม่ใช่ว่าเครื่องแม่ควบคุม control ต่างๆในเครื่องลูก
อันนี้คิดเองครับ เพราะการรับ-ส่งจากเครื่องลูกน่าจะง่ายและเร็วกว่า ควบคุมจากเครื่องแม่ แถมใช้งาน โปแกรมทุกตัวในเครื่องลูกได้เต็ม 100 ด้วย ส่วนที่เรียกว่าควบคุมจากเครื่องแม่ที่ผมเห็นก็คงมีแค่ Scan กับ เครื่องปริ๊น เท่านั้นเอง(ถ้าความคิดผมถูกต้องนะครับ) เวลาเรา Add มันถึงให้มี driver พ่วงมาเครื่องแม่ด้วยไงละครับ

จากที่มอง
1. หน้าจอ สามารถ รับ-ส่ง ข้อมูลได้
2. เมาส์ คีบอร์ด สามารถ รับ-ส่ง ข้อมูลได้

สรุป ถ้าเราหาวิธี ใช้งาน control ต่างๆในเครื่องเราได้ ก็น่าจะ ควบคุมเครื่องอื่นได้โดยปริยายครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-05-25 11:41:29 By : lamaka.tor
 

 

No. 3

Guest


remote desktop ไม่เหมือน team viewer หรือ vnc นะ

เป็นการเข้ามาใช้ด้วย account ของเครื่องผ่าน network ได้เลย

ถ้าเป็น windows ที่ไม่ใช่ server นี่ ถ้ามีคน remote เข้ามา

มันจะเตะคนใช้อยู่ออกเลย ถึงแม้ว่าจะนั่งอยู่กับเครื่องก็ตาม

ยกเว้นพวก server สามารถ ใช้งานได้พร้อมกันหลาย session ได้
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-05-25 14:05:43 By : ห้ามตอบเกินวันละ 2 กระทู้
 


 

No. 4



โพสกระทู้ ( 4,440 )
บทความ ( 23 )



สถานะออฟไลน์
Facebook

โทษทีครับ

แสดงว่าผมคิดผิดจริงๆ( ปล่อยไก่ตัวบะเอ๊บ 5555)
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-05-25 14:11:11 By : lamaka.tor
 


 

No. 5



โพสกระทู้ ( 538 )
บทความ ( 3 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์


จากที่อ่านโจทย์เค้าถามอยากเขียนโปรแกรม remote นะครับ ส่วนคำว่า remote desktop น่าจะไปเหมือนกับโปรแกรมฟรี remote ของ windows ที่มีมาให้อยู่แล้ว
คำถาม
- เขียนไปทำไมหรือ? โปรเจ็คจบ, งานส่วนตัว, งานบริษัท หรืออะไร งง มีของฟรีให้ใช้เยอะแยะ ไมไม่ใช้ ยิ่งตอนนี้ ฟรีเพียวๆ ของ google แจ่มใช้ได้เลย ไม่มีแค่ transfer file แค่นั้น (ก็ใช้วิธีอื่นส่งไฟล์กันเอา มีวิธีเยอะแยะ) คือสงสัยส่วนตัว เพราะไม่เข้าใจว่าจะเขียนทำไม

คำตอบ
- ลองเข้าไปหาโปรเจ็คต้นแบบของโปรแกรมประเภท remote desktop ทั้งหลายแหล่เอาได้ใน sourceforge.net ครับ ของ vnc ก็มี
download code มาทำความเข้าใจแล้วเอามาประยุกต์ได้ (เพียงแต่เวอร์ชั่นอาจจะเก่าไปหน่อย ก็ลองใช้ดูเป็นแนวทางครับ) เข้าใจว่าของ
team version แรกๆ ก็มีนะสมัยที่ยังให้ใช้ฟรีๆอยู่

ตัวนี้เป็นของ google ฟรีไร้เงื่อนไข (แค่ไม่มี function file transfer) ลองไปศึกษาดูได้

chromeremoted

ปล. ไว้ว่างๆ จะมาเขียนวิธีทำไว้ใช้ support ลูกค้าครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-05-25 19:59:31 By : salapao_codeman
 


 

No. 6



โพสกระทู้ ( 242 )
บทความ ( 0 )



สถานะออฟไลน์


ที่ผมเคยทำนะครับ หลังจากที่ Remote ไปได้แล้วนะครับ

C# : Console นะครับ ลองเอาไปประยุกต์ดู

Code (C#)
  public static class User32
        {
            public const Int32 CURSOR_SHOWING = 0x00000001;

            [StructLayout(LayoutKind.Sequential)]
            public struct ICONINFO
            {
                public bool fIcon;
                public Int32 xHotspot;
                public Int32 yHotspot;
                public IntPtr hbmMask;
                public IntPtr hbmColor;
            }

            [StructLayout(LayoutKind.Sequential)]
            public struct POINT
            {
                public Int32 x;
                public Int32 y;
            }

            [StructLayout(LayoutKind.Sequential)]
            public struct CURSORINFO
            {
                public Int32 cbSize;
                public Int32 flags;
                public IntPtr hCursor;
                public POINT ptScreenPos;
            }

            [DllImport("user32.dll")]
            public static extern bool GetCursorInfo(out CURSORINFO pci);

            [DllImport("user32.dll")]
            public static extern IntPtr CopyIcon(IntPtr hIcon);

            [DllImport("user32.dll")]
            public static extern bool DrawIcon(IntPtr hdc, int x, int y, IntPtr hIcon);

            [DllImport("user32.dll")]
            public static extern bool GetIconInfo(IntPtr hIcon, out ICONINFO piconinfo);
        }

static void Main(string[] args)
        {
            Socket socket;
            string _ip = File.ReadAllText("getIP.txt");


            Console.WriteLine(_ip);

            using (socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp))
            {
                //socket.Connect(new IPEndPoint(IPAddress.Loopback, 23456));
                socket.Connect(_ip,9050);
                
                while (true)
                {
                    var bounds = Screen.PrimaryScreen.Bounds;
                    var bitmap = new Bitmap(bounds.Width, bounds.Height);
                    try
                    {
                        while (true)
                        {
                            using (var graphics = Graphics.FromImage(bitmap))
                            {
                                graphics.CopyFromScreen(bounds.X, 0, bounds.Y, 0, bounds.Size);

                                ////////////////////////////////////////
                                User32.CURSORINFO cursorInfo;
                                cursorInfo.cbSize = Marshal.SizeOf(typeof(User32.CURSORINFO));

                                if (User32.GetCursorInfo(out cursorInfo))
                                {
                                    // if the cursor is showing draw it on the screen shot
                                    if (cursorInfo.flags == User32.CURSOR_SHOWING)
                                    {
                                        // we need to get hotspot so we can draw the cursor in the correct position
                                        var iconPointer = User32.CopyIcon(cursorInfo.hCursor);
                                        User32.ICONINFO iconInfo;
                                        int iconX, iconY;

                                        if (User32.GetIconInfo(iconPointer, out iconInfo))
                                        {
                                            // calculate the correct position of the cursor
                                            iconX = cursorInfo.ptScreenPos.x - ((int)iconInfo.xHotspot);
                                            iconY = cursorInfo.ptScreenPos.y - ((int)iconInfo.yHotspot);

                                            // draw the cursor icon on top of the captured screen image
                                            User32.DrawIcon(graphics.GetHdc(), iconX, iconY, cursorInfo.hCursor);

                                            // release the handle created by call to g.GetHdc()
                                            graphics.ReleaseHdc();
                                        }
                                    }
                                }
                                ////////////////////////////////////////

                            }
                            byte[] imageData;
                            using (var stream = new MemoryStream())
                            {
                                bitmap.Save(stream, ImageFormat.Png);
                                imageData = stream.ToArray();
                            }
                            var lengthData = BitConverter.GetBytes(imageData.Length);
                            if (socket.Send(lengthData) < lengthData.Length) break;
                            if (socket.Send(imageData) < imageData.Length) break;
                            Thread.Sleep(10);
                        }
                    }
                    catch(Exception)
                    {
                        //socket.Shutdown(SocketShutdown.Both);
                       // socket.Close();
                        break;
                    }

                }
            }
            Application.Exit();
        }

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-05-25 20:27:01 By : bigsuntat
 


 

No. 7



โพสกระทู้ ( 117 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบคำถามท่านที่ถามว่าเขียนไปทำไม คือ ที่เขียนเพราะอยากรู้ อยากทำ อยากเป็นครับ เพราะไม่รู้หาดูแล้วลองทำแล้วแต่ยังไม่ได้จึงมาขอแนวทางครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-05-26 11:44:50 By : punmontha
 


 

No. 8



โพสกระทู้ ( 281 )
บทความ ( 0 )



สถานะออฟไลน์


ขอเกาะไปด้วยคนครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-05-31 21:27:25 By : deksoke
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : สอบถามเรื่องการเขียนโปรแกรม remote desktop ครับ...
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 01
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่