Xây dựng ActiveX control cho trình duyệt IE Không rõ

ducnm , January 3, 2009 20:49 , Kiến thức tin học , Nhận xét(3) , Đọc(1656) , Via Tự viết
Lý thuyết về ActiveX nằm ở đây
http://sinhhoc.org/2008/06/tm-hiu-cc-control-activex.html
Và đây là câu hỏi mà tôi đã gặp trên trang http://www.experts-exchange.com/Programming/Languages/.NET/Visual_CPP/Q_23628108.html
How to create ActiveX Control for Internet Explorer to read and write files in hard drive?
My Requirement:
I'm developing Intranet Application for company internal use. in this one the module (ActiveX) says read and write files from all the terminals in the company.
Development language for this module: VC++
Help: how to develop this activex controls? please guide me.
Thanks in advance.


cool Nếu như các plug-in được xem là phần mở rộng của trình duyệt web thì các ActiveX là phần mở rộng cho ứng dụng web của bạn. ActiveX sẽ đưa trang web của bạn đi sâu vào hệ thống cũng như xử lý các thành phần khác nằm trên client. Trong bài viết này, tôi sẽ hướng dẫn các bạn cách xây dựng một activeX cho internet explorer.
Tôi sẽ dựa vào câu hỏi này để hướng dẫn các bạn cách xây dựng một activeX control và tôi sẽ sử dụng VC 2005 làm công cụ phát triển (tôi chỉ làm phần đọc nhé, các bạn tập làm phần ghi để hiểu rõ hơn).
Bạn hãy mở VC 2005, tạo một project mới, bạn chọn templates là MFC ActiveX Control, tôi đặt tên cho project của tôi là myActiveX.

Highslide JS


Và bạn nên loại bỏ “Has an About box dialog”, đánh dấu tick vào Fliker-free activation

Highslide JS


Bạn hãy chú ý đến 2 file: myActiveXCtrl.h và myActiveXCtrl.cpp, đây là 2 file cơ bản mà chúng ta sẽ viết các function vào đấy. Ở đây tôi chỉ hướng dẫn làm một activeX đơn giản nên những gì tôi viết đều nằm ở 2 file này.

Highslide JS


Sau khi tạo được project này, bạn hãy thử build xem sao, chắc chắn ta sẽ có được các file myActiveX.ocx, myActiveX.lib. Ở đây các activeX này chỉ là rỗng và sẽ không có bất kỳ các hoạt động nào. Bây giờ bạn hãy mở file myActiveXCtrl ra để chuẩn bị các viết các hàm cho nó nhé.
Tại tab “Class View”, bạn hãy chọn CmyActiveXCtrl, right-click vào nó và chọn add function, đây là function tôi đã viêt để đọc một file text.
void CmyActiveXCtrl::ReadingFile()
{
  char *myfile = "C:\\myData\\read_file.txt";
  char buf[MAX_PATH];
  char  CurrentPath[MAX_PATH_FOLDER];  
  DWORD size=MAX_PATH_FOLDER;    
  GetModuleFileNameW(NULL,(LPWCH)CurrentPath,size);

  char valueData[512][512];
  FILE *f;
  int count =0;  
  f=fopen(myfile ,"r");

  if (f!=NULL)
  {
    while (!feof(f) && count<3)
    {
      count ++;
      fscanf(f,"%s",buf);
      strupr(buf);
      LPTSTR Value = (LPTSTR)buf;
      strcpy(valueData[count],buf);
      MessageBox((CString)buf, L"cuchuoi",0);  
    }    
  fclose(f);  
  }
  else return;
}
Vậy là việc viết một thủ tục để đọc file đã xong.
Tại tab “Class View”, bạn vẫn chọn CmyActiveXCtrl, click vào tab “Properties”, trong list Messages bạn hãy chọn WM_CREATE để xây dựng hàm OnCreate(LPCREATESTRUCT lpCreateStruct), tại hàm nãy bạn hãy làm như sau:
int CmyActiveXCtrl::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
  if (COleControl::OnCreate(lpCreateStruct) == -1)
    return -1;
  ReadingFile(); //gọi hàm đọc file text
  // TODO:  Add your specialized creation code here

  return 0;
}
Vậy là xong cho một activeX đơn giản, sau khi build dự án này bạn sẽ có được file myActiveX.ocx. Xây dựng ActiveX quá đơn giản phải không bạn.
Các thuộc tính, phương thức và sự kiện trong activeX

ActiveX sẽ giao tiếp với web thông qua các thuộc tính, phương thức và sự kiện của activeX. Tại đây tôi sẽ hướng dẫn bạn cách truyền dữ liệu qua lại gữa trang web và activeX thông qua một ví dụ đơn giản.
Thêm các thuộc tính: Tại Class View, bạn hãy chọn MyActiveXLib, sau đó hãy chọn _DMyActiveX, right-click vào nó, chọn Add, và sau đó chọn Add Property. Hộp thoại Add Property Wizard sẽ hiện ra, tại đây bạn hãy chọn kiểu thuộc tính và đặt tên cho thuộc tính. Chúng ta sẽ thêm lần lượt 2 thuộc tính là InputPara và OutputPara với cũng kiểu BSTR.

Highslide JS


Thêm các phương thức: cũng tại vị trí  _DMyActiveX bạn chọn Add, và sau đó là Add Method. Tại đây tôi sẽ chọn kiểu trả về là void và đặt tên là LoadPara.

Highslide JS


Thêm sự kiện:tại tab  Class View, right click lên  CMyActiveXCtrl, chọn Add, Add Event, hộp thoại Add Event Wizard sẽ hiện ra, tôi sẽ đặt tên sự kiện là ParaLoaded và Internal name là MyParaLoaded.

Highslide JS


Bây giờ bạn hãy mở file MyActiveXCtrl.cpp ra, tìm đến hàm LoadPara và thêm vào các dòng lệnh sau:
void CmyActiveXCtrl::LoadPara(void)
{
  AFX_MANAGE_STATE(AfxGetStaticModuleState());

  // TODO: Add your dispatch handler code here
  m_OutputPara = m_InputPara;
  MessageBox((CString)m_OutputPara, L"cuchuoi",0);    
  MyParaLoaded();
}
Vậy là xong, bây giờ bạn hãy build project này để tạo ra file myActiveX.ocx
Tôi sẽ tạo một trang web đơn giản để nhúng activeX này vào
(bạn hãy xem file test activeX.html trong mã nguồn)

Trong demo trên, tôi cho activeX đọc file text tại C:\\myData\\read_file.txt do đó bạn hãy tạo 1 file text tại vị trí như vậy để xem activeX đọc như thế nào nhé.Ở đây tôi chỉ làm nhanh demo, bạn hãy thử chuyển đổi InputPara thành đường dẫn đến file và cho activeX đọc file đó xem thế nào nhé(hàm đọc file tôi đã cho tham số rồi, tôi nghĩ chỉ 1 phút là bạn là xong thôi)

Còn đây là example của tôi, các bạn có thể download về và nghiên cứu, tôi xin lưu ý với các bạn là ActiveX này chỉ hỗ trợ cho trình duyệt IE, nếu có thời gian tôi sẽ tiếp tục giới thiệu về cách xây dựng ActiveXcho FireFox.
Hy vọng bài viết này sẽ giúp ích được cho các bạn.

Download file đính kèm
Tệp tin tải về
Tệp tin này chỉ tải được sau khi bạn đăng nhập. Hãy Đăng ký hoặc Đăng nhập


Người viết: Nguyễn Mạnh Đức grin (http://www.wsoftwaresoluti...

Tags:
Hix. Lam như thế nào để Test thử?
Hey bạn!Có lỗi ở đối tượng "MAX_PATH_FOLDER",mình sử dụng VS2008, hổng biết biến phải khai báo giá trị bao nhiêu nữabadhealth
Phân trang 1/1 Trang đầu 1 Trang cuối
Viết nhận xét

Tên gọi

Địa chỉ web

Email

You can also login with your OpenID:
Mở HTML Mở UBB Mở hình vui Ẩn giấu Hãy nhớ [Đăng nhập] [Đăng ký]