#include
#include
#include
... /
// dllregisterserver - adds entries to the system registry
/* 原來的**(被注釋)
stdapi dllregisterserver(void)
/
// dllunregisterserver - removes entries from the system registry
stdapi dllunregisterserver(void)
*/
//用途: 註冊元件分類
//說明: 元件安全性種類就是通過元件分類的註冊才得以設定元件的安全性
hresult create***ponentcategory(catid catid, wchar* catdescription)
categoryinfo catinfo;
catinfo.catid = catid;
catinfo.lcid = 0x0409 ; // english
//說明: 確保提供的描述不會超長, 僅僅複製前127個字元
int len = wcslen(catdescription);
if (len>127)
len = 127;
wcsncpy(catinfo.szdescription, catdescription, len);
// 確保描述使用"/0"結束
catinfo.szdescription[len] = '/0';
hr = pcr->registercategories(1, &catinfo);
pcr->release();
return hr; }
//用途: 在已經存在的元件分類中進行介面類的註冊
hresult registerclsidincategory(refclsid clsid, catid catid)
if (pcr != null)
pcr->release();
return hr; }
//用途: 反註冊已存在元件分類中的介面類
hresult unregisterclsidincategory(refclsid clsid, catid catid)
if (pcr != null)
pcr->release();
return hr; }
//註冊伺服器
stdapi dllregisterserver(void)
//建立初始化安全元件分類
hr = create***ponentcategory(catid_safeforinitializing,
l"controls safely initializable from persistent data!");
if (failed(hr))
return hr;
//在上面的分組之中註冊介面類
hr = registerclsidincategory(clsid_pssub, catid_safeforinitializing);
if (failed(hr))
return hr;
//建立指令碼程式設計安全元件分類
hr = create***ponentcategory(catid_safeforscripting,
l"controls safely scriptable!");
if (failed(hr))
return hr;
//在上面的分組之中註冊介面類
hr = registerclsidincategory(clsid_pssub, catid_safeforscripting);
if (failed(hr))
return hr;
return noerror; }
//用途: 反註冊伺服器
stdapi dllunregisterserver(void)
//刪除登錄檔入口
hr=unregisterclsidincategory(clsid_pssub, catid_safeforinitializing);
if (failed(hr))
return hr;
hr=unregisterclsidincategory(clsid_pssub, catid_safeforscripting);
if (failed(hr))
return hr;
return noerror; }
或者
class ....
public iobjectsafetyimpl,
...
...
begin_***_map(cagent)
...
***_inte***ce_entry(iobjectsafety)
...
end_***_map() 或者
//2001.12.07 - 安全註冊支援
const catid catid_safeforscripting = };
const catid catid_safeforinitializing =
};
....
//2001.12.07 - 安全註冊支援
begin_category_map(csubagent)
implemented_category(catid_safeforinitializing)
implemented_category(catid_safeforscripting)
end_category_map()
自己挑吧.
乙個ActiveX控制項安全註冊的例子
include include include dllregisterserver adds entries to the system registry 原來的 被注釋 stdapi dllregisterserver void dllunregisterserver removes entrie...
C 跨執行緒操作控制項的執行緒安全方法
c 跨執行緒操作控制項的執行緒安全方法 在c 中,經常用到這樣乙個場景,windows form程式啟動乙個工作者執行緒執行一部分工作,這樣做是為了避免速度慢的工作如果直接呼叫會使得主form停止響應一段時間。既然啟動了執行緒,就避免不了執行緒之間資料傳遞的事情,相信你有很多種辦法能解決,總之注意同...
C 跨執行緒操作控制項的執行緒安全方法
c 跨執行緒操作控制項的執行緒安全方法 在c 中,經常用到這樣乙個場景,windows form程式啟動乙個工作者執行緒執行一部分工作,這樣做是為了避免速度慢的工作如果直接呼叫會使得主form停止響應一段時間。既然啟動了執行緒,就避免不了執行緒之間資料傳遞的事情,相信你有很多種辦法能解決,總之注意同...