程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#實現的ActiveX截圖打印控件

C#實現的ActiveX截圖打印控件

編輯:C#入門知識

C#開發ActiveX控件參考資料:

  http://www.cnblogs.com/zhf/archive/2009/03/02/1401299.html

  http://www.cnblogs.com/homer/archive/2005/01/08/88780.html

 

C#開發ActiveX的詳細介紹見以上兩篇文章,我只補充這兩篇文章未說明的。

1.實現腳本調用ActiveX方法,必需將方法定義到一個接口中(該接口使用一個唯一的GUID,不能與ActiveX控件的GUID相同),然後在ActiveX方法即控件類中實現該接口中的方法。

2.在ActiveX中使用WebBrowser控件,不可直接從工具箱中拖出該控件使用,只需聲明一個WebBrowser對象,在需要使用的時候實例化即可。不然在ActiveX中無法正常使用,即使在本地測試的時候沒有問題,在頁面中使用你會發現WebBrowser對象已經被釋放。

3.在Windows 7下,必需以管理員權限運行VS,設置的COM自動注冊才能順利完成。

 

以我的代碼為例:

\\代碼
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;

namespace EstatePrintMapActiveX
{
//控件類,GUID可以在工具中生成,此處的GUID即為頁面中引用控件時使用的CLASSID
//ComVisible(true)設置是否自動注冊控件,設置項目屬性中的“生成”項下的“為COM互操作注冊”為勾選實現在本地自動注冊(windows7需要以管理員運行該項目)
[Guid("1161E5A8-B698-4e57-8B56-B5B06B69FF4D"), ProgId("EstatePrintMapActiveX.UserControl1"),
ClassInterface(ClassInterfaceType.None), ComVisible(true)]
public partial class UserControl1 : UserControl, IMonitor, IObjectSafety
{
#region 實現IObjectSafety 成員

public void GetInterfacceSafyOptions(int riid, out int pdwSupportedOptions, out int pdwEnabledOptions)
{
pdwSupportedOptions = 1;
pdwEnabledOptions = 2;
}

public void SetInterfaceSafetyOptions(int riid, int dwOptionsSetMask, int dwEnabledOptions)
{
throw new NotImplementedException();
}

#endregion

System.Windows.Forms.WebBrowser webBrowser;

bool isDetailPrint = false;//默認打印多張
string stringUrl;//需要打印的頁面的URL

public UserControl1()
{
InitializeComponent();
}

//供JS調用的方法(必需在IMonitor接口中定義,接口名可自定)
public void SetUrlText(string strUrl, string pra)
{
if (pra == "1")//
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved