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:
- SfpVerifyFile Nhiệm vụ
- Hỏi về Lỗi MSIL .netmodule or module compiled with /GL found
- Làm sao để tạm ngừng chương trình sử dụng hook của mình?
- Cách chống chương trình bị tắt bởi taskkill?
- Lấy đệ quy các process con trên windows
- Cách xác nhận quyền admin khi process thao tác tới hệ điều hành?
- Hook Nhận biết cửa sổ Active hay không ?
- Dung lượng File sau khi MapViewOfFile
- Tính dung lượng ổ đĩa trong TC
- Giao tiếp giữa các process Sử dụng TCP
-
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)>
Bất chấp những lầm tưởng phổ quát, hồ hết những người có âm đạo đều khó lên đỉnh khi bị kích thích âm đạo. Tuy nhiên, điều đó không có tức thị nó không thể vui được! Việc xâm nhập vào âm đạo bằng...
Quý bà giải tỏa bằng việc kích...