XP上COM元件的Side-by-Side 對應

前言:

這些資料的產生是由於我在做DEBUG的時候,往往無法在VC下無法在某些函示中設定BreakPoint,令我相當困擾。所以去詢問老闆的結果,才讓我知道關於Side-By-Side的概念,於是想說將現在所瞭解到的概念加以整理一下,希望以後用到會清楚一點,也希望能幫助到一些有需要的人。

大綱:

這份文件主要稍微介紹到在WIN XP下呼叫COM物件的基本流程與Side-By-Side的概念。

COM元件的版本問題

維護一個大型程式的開發往往是相當困難的,加上軟體的開發流程上經常將許多的程式寫成COM元件,透過程式碼來呼叫這些COM元件來達成相對應的功能,由於程式在呼叫COM元件的時候,主要是透過uuid(guid)來呼叫,而每一個DLL在電腦中也只會存在著唯一的識別子,所以不會有名稱衝突的問題,但是在程式的研發之中,我們會發現隨著對於DLL檔案裡面程式碼的修改,檔案若是存在在相同的位置還好,若儲存與原先不同的位置,由於呼叫COM都是透過Registry中所登記的介面(Interface)來呼叫,就會發生想要使用新建立的COM卻是呼叫到原有系統中的元件。於是乎COM物件的版本控制變的重要,這樣一來往往就會有COM元件的版本問題,舉例來說:針對資料庫的存取,系統已經有一個名為FoolDB COM object,若是我們要針對這個功能加以修改,當程式要求程式讀取COM時,透過Registry則會主動去讀取就得元件而不會使用我們所建立出來新的元件。要完成這樣的事件,則需要使用Side-By-Side的對應方式

在XP下的Side-By-Side對應方式

所謂的Side-By-Side就是希望程式能執行與自己相關的元件(EXE,DLL),而不要去執行系統上所登記的元件。在XP系統上有兩種方式可以達成這樣的結果

  • XP上:建立一個LOCAL檔,假設有一個程式名為fool.exe,若希望他執行該目錄下的元件,則建立一個檔案,fool.exe.local 即可,Windows在執行該檔案時,當他發現這個LOCAL檔時,則會主動去執行該目錄下的其他元件,而不用系統上登陸的元件。
  • 在XP的SP1上:透過ServerPack的XP,可以說是更加的麻煩了。必須建立一個對應的檔案名稱,名為manifest 裡面必須儲存著COM元件的XML資料。其資料格式可能如下:
> > > >

裡面存放著元件的名稱與UIID,也就是宣告系統,當呼叫到這些元件的時候,請執行目前這個目錄裡面的元件,而不要使用系統上的元件。

簡單介紹,關於COM的其他概念,我本身也還在摸索,以後有心得在波出來。

[VC心得]利用VC新增一個[資料夾選項]中的[檔案類型](一)

前言:

這篇文章主要是利用VC教導修改Registry中[HKEY_CLASSES_ROOT]中的新增一個檔案類型,也就是當你在檔案管理員中按下[工具]–>[資料夾選項]->[檔案類型]。在這裡會有相當多的檔案類型會出現,並且會有個別的ICON(圖示)也就是我們在檔案管理員下會看到的特別圖示(比如說:ZIP是一個壓縮檔的圖案)。而現在就是告訴各位,如何利用VC撰寫一個可以新增一個檔案類型,並且指定好開檔類型與檔名顯示的方法。

修改原理:

在這裡,先教導大家關於這個程式的一些原理所在。首先,我們都知道在[開始功能表]->[執行]打上regedit,是可以開啟[登錄編輯程式]的,在這裡要為大家稍微介紹一下,登錄編輯程式裡面參數的介紹,在Registry裡面有五個主要參數,在這裡HKEY_CLASSES_ROOT裡面主要就是存放我們所提到的[檔案類型]的相關資料,將這個參數展開,一開始會是一堆的附檔名為首的變數(*~.1~.aXX~.ZXX)

想要在[工具]–>[資料夾選項]->[檔案類型]裡面去新增一個檔案類型,可以按下[新增],設定好一個附檔名(Extension Name),並且選取好相關應用程式與對應的參數(比如說 OPEN~~),還有對應的ICON圖形。

若要在REGISTRY中設定,與[工具]–>[資料夾選項]->[檔案類型]->[新增]有相同的作用,而這裡的變數具有一定的對照關係。要增加一個新的檔案類型,依照以下步驟去建立:

  • 首先你必須要設定好一個新的附檔名(EX:.ZZD),也就是建立一個機碼
  • 在該機碼上給定一個字串值(default ==> FoolProductID),也就是你自己隨便取的類別ID。
  • 建立另外一個相對應的機碼,名稱為FoolProductID,並且在其中寫下字串值,(default ==> Fool_Name),
  • 若想要設定相關的ICON圖形,則必須在其中再設定一個子機碼,名稱為DefaultIcon,並在內寫下一個字串值(default ==> Fool_Icon_Address),在此Fool_Icon_Address是由某些程式產生出來的,比如說%System/notepad.exe,1

下一次在介紹,相關指令與程式的全貌~~~

#Debug 去~~~~~

詭異的硬碟

硬碟

最近,去光華商場買了顆2.5吋的硬碟,加上一個USB外接盒於是乎馬上變成了一個隨身攜帶的大容量隨身碟。但是,使用上怪怪的也就算了,只要一斷電,裡面的資料全部都不能用???

是怎樣~~~ 我的_硬碟_~~ 原來跟_RAM_一樣阿????

離校手續~~

旗幟飄揚著離別氣氛

今天,到了學校去辦離校手續,其實也不是那麼久才離校的說,論文早早在五月底的時候就口試完成,只是因為卡在去成功嶺服補充兵役的關係,之後又到了公司去上班,所以直到今天才真正有時間去學校把離校手續辦完。

頂個大光頭去學校,其實倒也不會不好意思啦~~看到了學弟們依然相當有朝氣的樣子,自己也好像回到學生時代(~~ㄟ 我好像還算是學生唷~~ 因為還沒離校ㄇㄟ~~~)。恰巧今天還是研究所新生的說明會,裡面主要的流程不就是老師們上台講解一些自己的研究方向與領域,吸引著同學來加入他們的旗下,看著研究所新生一副好騙的樣子~~ —____–”” ㄟ~~ 是一副天真無邪的樣子。真是不想讓他們知道,研究生不是這樣當滴,是很辛苦滴。抱著大學生的心態,我想很難把研究所的研究做的好。

記得之前曾經看過有位交大的老師寫給學生的一些文章,裡面主要是幫助剛進入研究所的同學安排著每學期應該要有的準備,與做學問的方法,其實算是蠻不賴的,大家可以在此按下右鍵,另存新檔,去看看裡面的資料。

後來,中午與學弟去買著便當,度過了最後碩士生涯,收拾所有的書本,我想~~~ 是該迎向下一步的時候。

一國兩制大不同

返回 Google 首頁。

最近經常在閱讀許多大陸的網站,裡面就會提到關於GOOGLE的一些訊息,比如說受人爭議的GMAIL,或是ORKUT等等其他創世紀的功能。但是最近直到看到一篇關於GOOGLE大陸軟體功能的文章,才發現原來GOOGL在大陸有許多好玩的功能,如詳細敘述裡面有講到的,看來以後得多看幾個國家的GOOGLE,(聽說YAHOO也是這樣的~~ 各國功能都差很多~~~國外100MB,我們就還沒有 @﹍﹍@)

有興趣~~去看看阿~~

> > >
![Google](http://www.google.com/intl/zh-CN_ALL/images/logo.gif) >
>
**所有网站** [图像](http://www.google.com/imghp?hl=zh-CN&tab=wi) [网上论坛](http://www.google.com/grphp?hl=zh-CN&tab=wg) [网页目录](http://www.google.com/dirhp?hl=zh-CN&tab=wd) >
> > > >
> > [高级搜索](http://www.google.com/advanced_search?hl=zh-CN) [使用偏好](http://www.google.com/preferences?hl=zh-CN) [语言工具](http://www.google.com/language_tools?hl=zh-CN) >
搜索所有网站搜索所有中文网页搜索简体中文网页 >
> > 最新推出! 快来试一试 Google 的中英文字典, 天气, 股票和其他[特殊搜索功能](http://www.google.com/intl/zh-CN/features.html#dictionary)! - [Google 大全](http://www.google.com/intl/zh-CN/about.html) - [Google.com in English](http://www.google.com/ncr) > > [将 Google 设为首页!](http://www.google.com/mgyhp.html) > > ?2004 Google - 搜索 4,285,199,774 张网页 > > **按链接搜索** > > 有一些词后面加上冒号对 Google 具有特殊的含义。其中的一个词是“link:”。查询 link: 显示所有指向该网址的网页。例如,“link:www.google.com”将找出所有指向 Google 主页的网页。不能将 link: 搜索与普通关键词搜索结合使用。 > > > >
_示例: _ > >
> > * * * > > **指定网域** > > 有一些词后面加上冒号对 Google 有特殊的含义。其中的一个词是“site:”。要在某个特定的域或站点中进行搜索,可以在 Google 搜索框中输入“site:xxxxx.com”。 > > 例如,要在 Google 站点上查找新闻,可以输入: > > > >
_示例: _ > >
> > * * * > > **手气不错** > > 按下“手气不错?”按钮将自动进入 Google 查询到的第一个网页。您将完全看不到其它的搜索结果。使用“手气不错”进行搜索表示用于搜索网页的时间较少而用于检查网页的时间较多。 > > 例如,要查找 Stanford 大学的主页,只需在搜索字段中输入“Stanford”,然后单击“手气不错”按钮。Google 将直接带您进入 Stanford 大学的官方主页 www.stanford.edu。 > > > >
_示例: _ > >
> > 您的手气如何? > > * * * > > **中英文字典** > > Google 给中英文单词互译带来了极大的方便。您只需输入一个关键词(“翻译”,“fy” 和“FY” 任选其一)和要查的中 (英) 文单词,Google返回的网上字典链接让您即刻便可知道您要查的词的英文(或中文)翻译。如果是中译英,Google还会直接显示您要查的单词的英文释义。 > > 例如,要查找 apple (或 苹果)的中(英)文翻译,只需在搜索字段中输入: > > > > > >
_示例1: _ > >
_示例2: _ > >
> > * * * > > **天气查询** > > 用Google 查询中国城市地区的天气和天气预报,只需输入一个关键词(“天气”,“tq” 或“TQ” 任选其一)和您要查询的城市地区名称即可。Google返回的网站链接会带给您最新的当地天气状况和天气预报。 > > 例如,要查找上海地区的天气状况,可以输入: > > > > > >
_示例1: _ > >
_示例2: _ > >
> > * * * > > **股票查询** > > 用Google 查询股票价格和股市行情,非常简洁方便。您只需输入一个关键词(“股票”,“gp” 和“GP” 任选其一)和想查询的股票证券名称或是其六位数代码,Google就会返回其他链接让您只要一次点击便能得到有关股票证券的详尽资料。 > > 例如,要查找中国石化的行情走势,可以输入: > > > > > > > >
_示例1: _ > >
_示例2: _ > >
_示例3: _ > >
> > * * * > > **邮编区号** > > 用Google 查询邮政编码或长途电话区号,您只需输入关键词(“邮编”,“yb” 和“YB” 任选其一;“区号”, “qh” 和“QH” 任选其一)和要查的城市地名或邮政编码或电话区号即可。Google 会为您提供相关的所有信息,包括所在地的省市名称,邮政编码及长途电话区号。 > > 例如,要在 Google 站点上查找拉萨地区的邮编区号或邮编100000,区号0891的归属地,可以输入: > > > > > > > >
_示例1: _ > >
_示例2: _ > >
_示例3: _ > >
> > * * * > > > > **手机号码** > > 用Google 查询手机电话号码归属地,您只需直接输入要查的号码即可(不需要任何关键词)。Google 能自动识别以13开头的11位数字为手机号码而返回相关的网站链接,让您即刻便知道答案。 > > 例如,要查找手机号13123456789的归属地,可输入: > > > >
_示例: _ > >
> > 目前 Google 简体中文界面的股票,天气,邮编区号和手机号码查询功能仅适用于中国大陆地区。Google与所选的特殊搜索链接网站没有从属关系,如果您认为有其他好的网站,欢迎您写电子邮件向我们推荐,地址:[[email protected]](mailto:[email protected]). > >

程式學習心得速記—大型專案維護流程與相關工具

在利用VC維護一個專案的時候,有許多有用的工具是很建議大家安裝的。

首先是Visual Asssit利用這個工具可以幫助你輕鬆的顯示程式碼,快速切換H與CPP之間,並且可以快速找到相關的程式碼。

再來是維護大型專案一定會用到的伺服器軟體,Perforce可讓一個大型專案很容易的被大家所維護,不僅僅是保護程式碼與做CVS而已,也像patrick所提到的一樣, source code branching沒有透過Perforce將是相當困難的。最後還有一個比對檔案的軟體Araxis Merge,利用這個東西可以比對兩個檔案所不同之處,加上Perforce本身所提供的檔案整合功能,再做專案的Branching時將是相當的方便的。

以上這幾個軟體,算是公司同事李每個人都會運用到的軟體,在這裡跟大家分享一下,也希望大家會利用到這些軟體使得開發軟體上更加的容易。