• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            穩(wěn)定盈利的期貨交易方法-量化趨勢(shì)交易

            alantop -專業(yè)量化投資者

            愛好:量化投資,逆向工程,滲透
            隨筆 - 595, 文章 - 0, 評(píng)論 - 921, 引用 - 0
            數(shù)據(jù)加載中……

            vc++如何調(diào)用.Ner Framewrok類庫(kù) ( 讀寫注冊(cè)表示例)(CLI的一些應(yīng)用)

            .net Framework類庫(kù)越來越豐富了。伴隨vs2008已經(jīng)3.5版本了。

            以前寫程序很少會(huì)去調(diào)用.net framework,不過隨著微軟的主推,和不斷對(duì)其進(jìn)行擴(kuò)展。

            其功能正在逐漸強(qiáng)大,使用更加簡(jiǎn)潔和方便。

            這里通過對(duì)注冊(cè)表的操作。我們來看看vc++.net程序。

            說明:以下代碼在vs2005下編譯。

            簡(jiǎn)單的說傳統(tǒng)的c++如何調(diào)用net frame.

            一些預(yù)備知識(shí):

            ^:vc2005下,聲明托管堆(the managed heap)上對(duì)象的句柄。

            在vc++2002和vc++2003下,聲明托管堆上對(duì)象的句柄是用“__gc *”表示。

            為什么會(huì)出現(xiàn)"^"符號(hào)呢?

            在netframe下,為了保持托管堆上的對(duì)象的引用能夠被垃圾收集器跟蹤,且當(dāng)這個(gè)對(duì)象被移動(dòng)的時(shí)候,這個(gè)句柄可以被及時(shí)的更新。而傳統(tǒng)的指針和引用無(wú)法被正確跟蹤,所以產(chǎn)生了^來表示一個(gè)托管堆上對(duì)象的句柄。

            其可以用->來訪問其成員。

             

            什么時(shí)候用 ^ 呢?

            來看看RegisterKey的聲明

            [ComVisibleAttribute(true)] 
            public ref class RegistryKey sealed : public MarshalByRefObject, IDisposable
             
            看到ref了吧,
            ref:聲明一個(gè)托管類或者結(jié)構(gòu)。
            看到它,就聲明^
             
            以下三個(gè)例子應(yīng)該很容易看懂了。
             

            1. 將數(shù)據(jù)寫入注冊(cè)表

            using namespace System;
            using namespace Microsoft::Win32;

            int main()
            {
                // The second OpenSubKey argument indicates that
                // the subkey should be writable.
                RegistryKey^ rk;

            //托管堆上的一個(gè)句柄
                rk  = Registry::CurrentUser->OpenSubKey("Software", true);

            //靜態(tài)成員可以通過其類名直接訪問
                if (!rk)
                {
                    Console::WriteLine("Failed to open CurrentUser/Software key");
                    return -1;
                }

                RegistryKey^ nk = rk->CreateSubKey("NewRegKey");
                if (!nk)
                {
                    Console::WriteLine("Failed to create 'NewRegKey'");
                    return -1;
                }

                String^ newValue = "NewValue";
                try
                {
                    nk->SetValue("NewKey", newValue);
                    nk->SetValue("NewKey2", 44);
                }
                catch (Exception^)
                {
                    Console::WriteLine("Failed to set new values in 'NewRegKey'");
                    return -1;
                }

                Console::WriteLine("New key created.");
                Console::Write("Use REGEDIT.EXE to verify ");
                Console::WriteLine("'CURRENTUSER/Software/NewRegKey'\n");*/
                return 0;
            }

            2. 從注冊(cè)表中讀取數(shù)據(jù)

            using namespace System;
            using namespace Microsoft::Win32;
            
            int main( )
            {
               array<String^>^ key = Registry::CurrentUser->GetSubKeyNames( );
            
               Console::WriteLine("Subkeys within CurrentUser root key:");
               for (int i=0; i<key->Length; i++)
               {
                  Console::WriteLine("   {0}", key[i]);
               }
            
               Console::WriteLine("Opening subkey 'Identities'...");
               RegistryKey^ rk = nullptr;
               rk = Registry::CurrentUser->OpenSubKey("Identities");
               if (rk==nullptr)
               {
                  Console::WriteLine("Registry key not found - aborting");
                  return -1;
               }
            
               Console::WriteLine("Key/value pairs within 'Identities' key:");
               array<String^>^ name = rk->GetValueNames( );
               for (int i=0; i<name->Length; i++)
               {
                  String^ value = rk->GetValue(name[i])->ToString();
                  Console::WriteLine("   {0} = {1}", name[i], value);
               }
            
               return 0;
            }
             
            3. 從注冊(cè)表中刪除subkey.
             
                RegistryKey^ rk;
                rk  = Registry::CurrentUser->OpenSubKey("Software", true);
                if (!rk)
                {
                    Console::WriteLine("Failed to open CurrentUser/Software key");
                    return -1;
                }
                rk->DeleteSubKey("NewRegKey");

             

             

            寫在后面的話:

            之所有寫這個(gè)標(biāo)題,而不寫有關(guān)CLI的,國(guó)內(nèi)關(guān)于cli探討還是比較少的。

            既然,有人有好的建議,加一個(gè)副標(biāo)題好了。

            posted on 2007-08-02 16:33 AlanTop 閱讀(2149) 評(píng)論(6)  編輯 收藏 引用 所屬分類: VC++

            評(píng)論

            # re: vc++如何調(diào)用.Ner Framewrok類庫(kù) ( 讀寫注冊(cè)表示例)  回復(fù)  更多評(píng)論   

            在vs2002和2003中,只有Manged C++

            在VS2005上新增CLI/C++



            其實(shí)Manged C++或是CLI/C++ , 都是對(duì)MS對(duì)C++的擴(kuò)充,用來在C++中訪問。netframework,并且CLI/C++已經(jīng)在什么歐洲,,,標(biāo)準(zhǔn)。


            我的博客上有一些相關(guān)的介紹。

            2007-08-02 17:33 | 夢(mèng)在天涯

            # re: vc++如何調(diào)用.Ner Framewrok類庫(kù) ( 讀寫注冊(cè)表示例)  回復(fù)  更多評(píng)論   

            別把Native C++和CLI混為一談哇。。。
            2007-08-02 18:51 | 空明流轉(zhuǎn)

            # re: vc++如何調(diào)用.Ner Framewrok類庫(kù) ( 讀寫注冊(cè)表示例)  回復(fù)  更多評(píng)論   

            interop技術(shù),作為C++ native代碼(非dll、com)向.net技術(shù)過渡的一道橋梁。
            2007-08-03 10:08 | 萬(wàn)連文

            # re: vc++如何調(diào)用.Ner Framewrok類庫(kù) ( 讀寫注冊(cè)表示例)(CLI的一些應(yīng)用)[未登錄]  回復(fù)  更多評(píng)論   

            See See
            2007-08-03 15:55 | 111

            # re: vc++如何調(diào)用.Ner Framewrok類庫(kù) ( 讀寫注冊(cè)表示例)(CLI的一些應(yīng)用)  回復(fù)  更多評(píng)論   

            我寫了個(gè)c++調(diào)用.net庫(kù)的測(cè)試程序,結(jié)果編譯失敗,提示是不存在該命名空間,樓主你是怎么編譯過去的,是不是需要加什么option啊。測(cè)試程序如下:
            using namespace System;
            int main()
            {
            Console::WriteLine("Hello World!");
            }
            2008-08-14 12:16 | 郢都孤鬼

            # re: vc++如何調(diào)用.Ner Framewrok類庫(kù) ( 讀寫注冊(cè)表示例)(CLI的一些應(yīng)用)  回復(fù)  更多評(píng)論   

            原來是要建立CLR應(yīng)用程序才行,和同樣的c++程序比,大小是小了許多,不過運(yùn)行慢了許多
            2008-08-14 12:22 | 郢都孤鬼
            日本高清无卡码一区二区久久 | 亚洲国产天堂久久久久久| 94久久国产乱子伦精品免费| 国产激情久久久久影院老熟女 | 欧美久久一区二区三区| 久久久久亚洲av综合波多野结衣| 久久亚洲国产成人精品性色| 国产精品久久久久久影院 | 国色天香久久久久久久小说 | 亚洲中文字幕无码久久2020| 97久久久精品综合88久久| 久久这里有精品视频| 人妻久久久一区二区三区| 欧美午夜A∨大片久久 | 国内精品人妻无码久久久影院导航 | 久久久久久久女国产乱让韩| 色综合久久中文综合网| 久久综合久久美利坚合众国| 99久久精品这里只有精品| 亚洲精品无码久久一线| 日本精品久久久久影院日本| 伊人色综合久久| 国产三级久久久精品麻豆三级| 久久人人爽人人爽人人av东京热| 久久久久亚洲爆乳少妇无 | 国产精品免费久久久久久久久| 久久亚洲春色中文字幕久久久| 久久亚洲AV成人无码| 欧美成a人片免费看久久| 国产2021久久精品| 麻豆精品久久久一区二区| 久久99精品国产麻豆宅宅| 亚洲а∨天堂久久精品| 国产A级毛片久久久精品毛片| 97久久综合精品久久久综合| 久久夜色精品国产噜噜亚洲AV| 亚洲午夜久久久久久久久电影网| 久久伊人精品一区二区三区| 国产成人无码精品久久久性色| 热99RE久久精品这里都是精品免费| 狠狠色丁香婷婷久久综合五月|