मैं वर्तमान में WatiN के साथ काम कर रहा हूं, और इसे एक महान वेब ब्राउज़िंग स्वचालन उपकरण के रूप में ढूंढ रहा हूं। हालांकि, अंतिम रिलीज के रूप में, यह स्क्रीन कैप्चरिंग कार्यक्षमता की कमी है। मैं कुछ code by Charles Petzold के अलावा स्क्रीन से स्क्रीनशॉट को कैप्चर करने के लिए एक व्यावहारिक समाधान के साथ आया हूं (स्वतंत्र रूप से this StackOverflow question के समान कोड उत्पन्न करना)। दुर्भाग्य से, एक गायब घटक है: वास्तविक विंडो कहां है?मुझे मूल विंडो के बिना एचडब्ल्यूएनडी दी गई विंडो की स्थिति/स्थान कैसे मिल सकता है?
// browser is either an WatiN.Core.IE or a WatiN.Core.FireFox...
IntPtr hWnd = browser.hWnd;
string filename = "my_file.bmp";
using (Graphics browser = Graphics.FromHwnd(browser.hWnd))
using (Bitmap screenshot = new Bitmap((int)browser.VisibleClipBounds.Width,
(int)browser.VisibleClipBounds.Height,
browser))
using (Graphics screenGraphics = Graphics.FromImage(screenshot))
{
int hWndX = 0; // Upper left of graphics? Nope,
int hWndY = 0; // this is upper left of the entire desktop!
screenGraphics.CopyFromScreen(hWndX, hWndY, 0, 0,
new Size((int)browser.VisibileClipBounds.Width,
(int)browser.VisibileClipBounds.Height));
screenshot.Save(filename, ImageFormat.Bmp);
}
सफल:
Watin सुविधाजनक ब्राउज़र की आप के लिए hWnd
, तो हम (इस सरल उदाहरण के साथ), स्क्रीन से किसी चित्र की प्रतिलिपि बनाने इसलिए की तरह सेट प्राप्त कर सकते हैं प्रदान करता है! हमें स्क्रीनशॉट मिलते हैं, लेकिन समस्या है: hWndX
और hWndY
हमेशा स्क्रीन के ऊपरी बाएं कोने को इंगित करते हैं, न कि उस विंडो का स्थान जिसे हम कॉपी करना चाहते हैं।
तब मैंने Control.FromHandle
में देखा, हालांकि ऐसा लगता है कि आपने केवल आपके द्वारा बनाए गए फॉर्मों के साथ काम किया है; यदि आप hWnd
पास करते हैं तो यह विधि एक शून्य सूचक देता है।
फिर, आगे पढ़ने के लिए मुझे अपने खोज मानदंडों को स्विच करने के लिए नेतृत्व करें ... मैं 'खिड़की का स्थान' खोज रहा था जब अधिकांश लोग वास्तव में खिड़की की 'स्थिति' चाहते थे। यह another SO question पर जाता है जिसने इसके बारे में बात की, लेकिन उनका जवाब देशी तरीकों का उपयोग करना था।
तो, क्या खिड़की की स्थिति खोजने का मूल सी # तरीका है, केवल एचडब्ल्यूएनडी (अधिमानतः केवल .NET 2.0 युग पुस्तकालयों के साथ) दिया गया है?
धन्यवाद! ऐसा लगता है कि यह करेगा। –
हाय रॉबर्ट, क्या आप अपना पूरा समाधान पोस्ट कर सकते हैं? मैं फ़ायरफ़ॉक्स और अन्य ब्राउज़रों (क्रोम) के लिए स्क्रीनकैप्चर कार्यक्षमता जोड़ना पसंद करूंगा। अग्रिम धन्यवाद! जेरोइन (लीड देव वाटीएन) –
हे! निश्चित रूप से, कर सकते हैं। –