निम्नलिखित VBScript कोड prefectly ठीक काम करता है:Marshal.GetActiveObject() सी # में MK_E_UNAVAILABLE अपवाद फेंकता
Dim App
Set App = GetObject("","QuickTest.Application")
App.Quit
लेकिन जब मैंने उसे नीचे के रूप में सी # कोड में अनुवाद:
class Program
{
[STAThread]
static void Main(string[] args)
{
object qtApp = Marshal.GetActiveObject("QuickTest.Application");
(qtApp as QuickTest.Application).Quit();
}
}
मैं अपवाद :
प्रकार 'System.Runtime.InteropServices.COMException' की एक बिना क्रिया का अपवाद mscorlib.dll में हुआ
+०१२३५१६४१०६१अतिरिक्त जानकारी: (HRESULT से अपवाद: 0x800401E3 (MK_E_UNAVAILABLE))
मुझे नहीं लगता कि समस्या आरओटी से संबंधित है, क्योंकि vbscript कोड काम करता है। तो सी # कोड के साथ क्या गलत है?
धन्यवाद! मैंने आरओटी में ऑब्जेक्ट्स को सूचीबद्ध करने के लिए अपना कोड इस्तेमाल किया, यह पता लगाने के लिए कि सूची में कोई भी क्विकटेस्ट संबंधित ऑब्जेक्ट नहीं है। लेकिन अजीब रूप से पर्याप्त, vbscript कोड अभी भी काम करता है! क्या vbscript का GetObject() फ़ंक्शन आरओटी को नहीं देखता है क्योंकि यह सी # समकक्ष करता है? – TomCaps
http://msdn.microsoft.com/en-us/library/kdccchxa%28v=vs.85%29.aspx एमएसडीएन GetObject 1 टिप्पणी: "अगर पथनाम शून्य-लंबाई स्ट्रिंग (" ") है, GetObject रिटर्न निर्दिष्ट प्रकार का एक नया ऑब्जेक्ट उदाहरण। ", इसलिए आपका वीबीस्क्रिप्ट QuickTest.Aplication का नया उदाहरण बनाते हैं, और सी # में आपका कोड var qtApp = new QuickTest.Aplication() जैसा होना चाहिए; ... – MishaU
मैंने सी # कोड बदल दिया var qtApp = new QuickTest.Aplication(); और यह काम करता है! आपका बहुत बहुत धन्यवाद! – TomCaps