2013-05-23 7 views
6

रास, मैं ग # आवेदन में विधि FindWindow उपयोग कर रहा हूँ user32.dll FindWindow का उपयोग कर वेब ब्राउज़र से खिड़की संभाल पाने के लिएutf पात्रों जब ग # आवेदन में

[DllImport("user32.dll")] 
public static extern int FindWindow(string lpClassName, string lpWindowName); 

यह अच्छी तरह से काम करता है जब विंडो शीर्षक utf शामिल नहीं है वर्ण यहाँ की तरह:

string caption1 = "pinvoke.net: findwindow (user32) - Google Chrome"; 
int hwnd = FindWindow(null, caption1); 

लेकिन यह विफल रहता है जब utf वर्ण विंडो शीर्षक में मौजूद हैं:

string caption2 = "Słownik języka polskiego - Google Chrome"; 
int hwnd2 = FindWindow(null, caption2); 

उदा। hwnd == 0

क्या आप मुझे सी # आवेदन में यूटीएफ -8 वर्णों वाली ब्राउज़र विंडो के हैंडल को कैसे प्राप्त करें, कृपया मुझे कोई सुझाव दें। अग्रिम धन्यवाद।

ps मैं पहले से ही, C++ utf साथ FindWindow उपयोग के बारे में टिप्पणी देखा है कह रही: "आप स्पष्ट रूप से एपीआई के यूनिकोड संस्करण का उपयोग कर सकते हैं HWND windowHnd = FindWindowW (शून्य, एल" माइनस्वीपर ");" लेकिन मैं अभी भी कैसे सी # में ठीक से यह करने के लिए

+0

यहां कहीं भी यूटीएफ -8 नहीं है। आपके पास क्या है यूटीएफ -16 है। –

+0

यह भी देखें http://msdn.microsoft.com/en-us/library/aa984739(v=vs.71).aspx – rogerdpack

उत्तर

9

मैं इस अपने आप को प्रयास नहीं किया है, लेकिन यदि आप ऐसा करने में सक्षम होना चाहिए पता नहीं है:

[DllImport("user32.dll", CharSet = CharSet.Unicode)] 
public static extern int FindWindow(string lpClassName, string lpWindowName); 

DllImportAttribute.CharSet Field पर MSDN के लेख के अनुसार , डिफ़ॉल्ट धारणा CharSet.Ansi होगी, और इसके परिणामस्वरूप आप जिस व्यवहार का वर्णन कर रहे हैं उसका परिणाम होगा।

+0

Thnx बहुत अधिक jszigeti! एक आकर्षण की तरह काम करता है! – user2413800

+0

@ user2413800 इसे उत्तर के रूप में चिह्नित करें, फिर: डी – jszigeti

+0

ps मैंने उर को उत्तर देने में उत्तर देने की कोशिश की है, लेकिन मेरी प्रतिष्ठा मुझे नहीं जाने देगी :) – user2413800