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:
- Làm sao để mix audio data được truyền qua mô hình Client-Server ?
- convert một mảng sang LPCWSTR trong API
- Cryptography Next Generation Cách nào chạy trên windows XP ?
- Hỏi về Hook IAT ?
- Customize hộp thoại MessageBox với kỹ thuật Hooking
- Sử dụng Hook WH_CALLWNDPROC, hok chạy đc
- Sử dụng #pragma với data_seg,comment trong lập trình DLL như thế nào?
- Làm sao để click chuột được vào game đã trận các hàm API click mouse
- Copy thư mục/file vào thư mục/file mới như thế nào ?
- cần tìm lỗi của dialog box WIN32 API
-
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)>
Mỗi liệu pháp tại Queen Spa là một hành trình chiều chuộng bản thân, giúp bạn tìm lại sức sống và năng lượng mới. Không gian của Queen Spa được thiết kế sao cho tối ưu hóa sự thoải mái và thư giãn...
Sống Đẹp và Khỏe Mạnh với Queen...