คืองานก็ไม่ได้ยาก แต่ทำไม่ได้เลย !! โจทย์มีอยู่ว่าเราจะ capture screen หน้าจอผ่าน windows remote desktop ด้วยจาวาได้ยังไง??
อย่าเพิ่งงงเพราะมันไม่ได้ง่ายอย่างที่คิด ถ้าหากเรา capture หน้าจอ ผ่าน RDP เมื่อไหร่ก็ตามที่เราปิด หน้าจอนั้นไป program capture หน้าจอที่เรารันทิ้งไว้ก็จะ capture สิ่งว่างปล่าวๆ มืดๆให้เรา (blank screen) แต่หากเรายังคิดว่างั้นก็แค่ minimize มันสิงง่ายๆ RDP ก็จะไม่ส่งข้อมูลมูลมาให้ เรา capture อยู่ดี ว่าง่ายๆมันฉลาดพอสมควร ทำให้เราได้ blank screen ตลอดเวลาที่เราไม่ได้ เปิดหน้าจอนั้นไว้นั่นเอง
ปัญหานี้ผมก็ research อยู่ครึ่งวันเต็มๆ ทั้ง research และก็ทำการเขียนโปรแกรมทดลองไปด้วย เปลี่ยน configuration เพื่อให้สามารถ capture ได้แม้เพียงแค่การ minimize ก็ตามที แต่ไหนๆก็ทำแล้ว minimize ไปก็คงไม่มีประโยชน์อะไรมากเพราะว่าหาก connection หลุดก็เหมือนเดิม ….
:solution:
ง่ายกว่าที่คิดเพราะว่ามี Tool Free อยู่ตัวหนึ่งชื่อว่า TightVNC ทำให้สามารถรัน Daemon เสมือนว่าเรา connect อยู่ตลอดเวลา ( 2 hup ) คือเราต้องต่อเข้าไปที่ VNCServer ที่ติ้ดตั้งไว้ที่ server ที่เราต้องการ capture screen แล้วจากนั้นเราค่อย login ด้วย user ในระบบ ในที่นี้ใช้ windows 7 ultimate เป็น server ปัญหาที่ตามมาคือ tightVNC เมื่อเราใช้เป็น remote desktop มันจะช้ามาก ถึงขั้นอืดเลยแหละ ก็เลยต้องใช้วิธีการสร้าง user ปล่าวๆ ขึ้นมา 1 user แล้วให้ connect ขำๆ ทิ้งไว้เพื่อรันโปรแกรม capture screen ไปเลย แล้วปิดหน้าจอนั้นไป ส่วน user หลักก็เข้าใช้งาน RDP ตามปกติ แค่นี้ก็เรียบร้อย สำหรับปัญหาที่ว่า windows7 รัน multi session remote desktop ไม่ได้ก็ต้องแก้ปัญหาอีกรอบนึง ดูตามลิงค์ http://www.ehow.com/how_6820442_allow-multiple-remote-desktop-sessions.html
How about having a local program to capture a screen as image to share location and your program just copy the image? :p
Link | June 15th, 2011 at 16:46
ทำไม่ได้อยู่ดีครับ มันจะเป็นหน้าจอสีดำๆ ซึ่งตอนที่ลองอยู่ก็เป้น local program นั่นแหละครับ
Link | June 20th, 2011 at 22:57