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:
- Sử dụng hàm RtlAdjustPrivilege để cài đặt quyền DebugProcess trên Windows 7?
- Hàm lấy cây thư mục của hệ thống
- capCaptureStop VFW ghi hình camera trong MFC?
- Hỏi THư VIện OpenIL
- HOOK API như thế nào khi App chặn API?
- Help về doubleclick item trong listbox sử dụng sendMessage
- Cách tìm Handle của của sổ Confirm Save As?
- Session 0 Isolation?????
- vẻ hình chử nhật trong Win32Api ?
- mỗi hàm callback mỗi khác sao?
-
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)>
Dụng cụ cầm tay (hand tools) là một trong những dụng cụ được sử dụng phổ thông trong cuộc sống hàng ngày của mọi người. Đặc biệt đối với cánh mày râu thì những dụng cụ này đã trở thành quá thân...
Một số bổ ích của bộ bộ đồ cầm tay...