Chủ đề: Hỏi về lập trình COM
-
22-09-2015, 06:59 PM #1Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Hỏi về lập trình COM
Xin chào,
Mình đang viết 1 COM server CLSCTX_LOCAL_SERVER, nhưng gặp 1 lỗi, nhờ các cao thủ giúp với.
1. COM server.
- Mình IDL để khai báo interfaceID, classID.
- Cấu trúc COM Server mình design như thế này:
class CMyFactory : public IClassFactory
{
};
class CMyObj : public IUnknown
{
-----class XSubClass : public IMyInterface
-----{
-----}m_subClass;
-----friend class CMyObj;
}
- Khi start COM Server, thì mình gọi CoRegisterClassObject để đăng ký FactoryObject với hệ thống.
2. COM Client.
Mình gọi 2 hàm sau:
- get object: CoGetClassObject(CLSID_CoMyObj, CLSCTX_LOCAL_SERVER, NULL, IID_IClassFactory, (void **) &pFac);
- tạo instance: pFac->CreateInstance(NULL,interfaceID,(void**)&pObj);
Tuy nhiên, gọi CreateInstance thì lại trả kết quả là "Interface not registered".
Mình đã thử đăng ký vào Registry như thế này, nhưng vẫn bị lỗi trên.
HKEY_CLASSES_ROOT\interface
-----{My Interface Value}
---------ProxyStubClsid32 = My ClassID value.
HKEY_CLASSES_ROOT\CLSID
-----{My ClassID value}
---------LocalServer32 = Path of exe
Mong các cao thủ trợ giúp. Xin cảm ơn!View more random threads:
- D3D9 Menu (HOOK) HELP?
- Ẩn Trên Registry bằng Hàm RegOpenKeyEx
- Lỗi khi thay đổ kích thước cửa sổ!
- SetClipboardData Trả Lại ClipBoard sau khi thực hiện GetClipboardData
- Hủy Thread khi đang copy file trong thread?
- InjectDLL Sử Dụng SetWindowHook Hook KeyBoard
- HOOK sự kiện mở một file thì cần làm những gì?
- Cách thực hiện hook để viết tiếng Việt?
- Làm thế nào chương trình vẫn hoạt động khi MessageBox được show lên?
- Change Display Setting của 1 Application ?
-
23-09-2015, 01:24 PM #2Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Không giống như đối tượng .NET tự thân nó đã có mô tả trong Manifest, đối tượng COM bất kể là loại trong hay ngoài tiến trình thì cũng cần phải đăng ký với hệ thống. Bạn khó có thể chỉnh sửa trực tiếp trong Registry mà để cho nó hoạt động được, vì chúng ta khó biết ( vì nó được ghi vào rất nhiều khóa) nó dàn trải tới đâu. Cách thức tốt nhất là dùng regsvr32 theo cú pháp dòng lệnh như sau :
regsvr32 <đường dẫn của tập tin bạn đã tạo (*.dll or *.exe)>
Trong khi thử nghiệm, nếu muốn gỡ đăng ký thì :
regsvr32 /u <đường dẫn của tập tin bạn đã tạo (*.dll or *.exe)>
Sự đa dạng trong các mẫu mã và kiểu dáng của sản phẩm Đồ Thờ Gỗ cũng là điểm thu hút đặc biệt. Từ những tượng phật nhỏ xinh, đến các bức thư pháp hoặc các bát hương gỗ được điêu khắc tỉ mỉ, đều mang...
Tinh Thần Truyền Bá: Skyhome.vn và...