zoukankan      html  css  js  c++  java
  • 通过delphi(IDE为delphiXE10)封装ocx,实现火狐js调用本地文件(.ini)数据交互

    ocx代码,下面代码为整个ocx实现体,其中CallInt函数为本文真正实现

    unit MyActiveForm;

    {$WARN SYMBOL_PLATFORM OFF}

    interface

    uses

      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

      ActiveX, AxCtrls, MyYBActiveX_TLB,IniFiles, ShellAPI, StdVcl;

    type

      TMyActiveX = class(TActiveForm, IMyActiveX)

      private

        iniFile: TIniFile;

        { Private declarations }

        FEvents: IMyActiveXEvents;

        procedure ActivateEvent(Sender: TObject);

        procedure ClickEvent(Sender: TObject);

        procedure CreateEvent(Sender: TObject);

        procedure DblClickEvent(Sender: TObject);

        procedure DeactivateEvent(Sender: TObject);

        procedure DestroyEvent(Sender: TObject);

        procedure KeyPressEvent(Sender: TObject; var Key: Char);

        procedure MouseEnterEvent(Sender: TObject);

        procedure MouseLeaveEvent(Sender: TObject);

        procedure PaintEvent(Sender: TObject);

      protected

        { Protected declarations }

        procedure DefinePropertyPages(DefinePropertyPage: TDefinePropertyPage); override;

        procedure EventSinkChanged(const EventSink: IUnknown); override;

        function Get_Active: WordBool; safecall;

        function Get_AlignDisabled: WordBool; safecall;

        function Get_AlignWithMargins: WordBool; safecall;

        function Get_AutoScroll: WordBool; safecall;

        function Get_AutoSize: WordBool; safecall;

        function Get_AxBorderStyle: TxActiveFormBorderStyle; safecall;

        function Get_Caption: WideString; safecall;

        function Get_Color: OLE_COLOR; safecall;

        function Get_DockSite: WordBool; safecall;

        function Get_DoubleBuffered: WordBool; safecall;

        function Get_DropTarget: WordBool; safecall;

        function Get_Enabled: WordBool; safecall;

        function Get_ExplicitHeight: Integer; safecall;

        function Get_ExplicitLeft: Integer; safecall;

        function Get_ExplicitTop: Integer; safecall;

        function Get_ExplicitWidth: Integer; safecall;

        function Get_Font: IFontDisp; safecall;

        function Get_HelpFile: WideString; safecall;

        function Get_KeyPreview: WordBool; safecall;

        function Get_MouseInClient: WordBool; safecall;

        function Get_ParentCustomHint: WordBool; safecall;

        function Get_ParentDoubleBuffered: WordBool; safecall;

        function Get_PixelsPerInch: Integer; safecall;

        function Get_PopupMode: TxPopupMode; safecall;

        function Get_PrintScale: TxPrintScale; safecall;

        function Get_Scaled: WordBool; safecall;

        function Get_ScreenSnap: WordBool; safecall;

        function Get_SnapBuffer: Integer; safecall;

        function Get_UseDockManager: WordBool; safecall;

        function Get_Visible: WordBool; safecall;

        function Get_VisibleDockClientCount: Integer; safecall;

        procedure _Set_Font(var Value: IFontDisp); safecall;

        procedure Set_AlignWithMargins(Value: WordBool); safecall;

        procedure Set_AutoScroll(Value: WordBool); safecall;

        procedure Set_AutoSize(Value: WordBool); safecall;

        procedure Set_AxBorderStyle(Value: TxActiveFormBorderStyle); safecall;

        procedure Set_Caption(const Value: WideString); safecall;

        procedure Set_Color(Value: OLE_COLOR); safecall;

        procedure Set_DockSite(Value: WordBool); safecall;

        procedure Set_DoubleBuffered(Value: WordBool); safecall;

        procedure Set_DropTarget(Value: WordBool); safecall;

        procedure Set_Enabled(Value: WordBool); safecall;

        procedure Set_Font(const Value: IFontDisp); safecall;

        procedure Set_HelpFile(const Value: WideString); safecall;

        procedure Set_KeyPreview(Value: WordBool); safecall;

        procedure Set_ParentCustomHint(Value: WordBool); safecall;

        procedure Set_ParentDoubleBuffered(Value: WordBool); safecall;

        procedure Set_PixelsPerInch(Value: Integer); safecall;

        procedure Set_PopupMode(Value: TxPopupMode); safecall;

        procedure Set_PrintScale(Value: TxPrintScale); safecall;

        procedure Set_Scaled(Value: WordBool); safecall;

        procedure Set_ScreenSnap(Value: WordBool); safecall;

        procedure Set_SnapBuffer(Value: Integer); safecall;

        procedure Set_UseDockManager(Value: WordBool); safecall;

        procedure Set_Visible(Value: WordBool); safecall;

        function CallInt(const Param, Param2: WideString): WideString; safecall;

      public

        { Public declarations }

        procedure Initialize; override;

      end;

    implementation

    uses ComObj, ComServ;

    {$R *.DFM}

    { TMyActiveX }

    procedure TMyActiveX.DefinePropertyPages(DefinePropertyPage: TDefinePropertyPage);

    begin

      { Define property pages here.  Property pages are defined by calling

        DefinePropertyPage with the class id of the page.  For example,

          DefinePropertyPage(Class_MyActiveXPage); }

    end;

    procedure TMyActiveX.EventSinkChanged(const EventSink: IUnknown);

    begin

      FEvents := EventSink as IMyActiveXEvents;

      inherited EventSinkChanged(EventSink);

    end;

    procedure TMyActiveX.Initialize;

    begin

      inherited Initialize;

      OnActivate := ActivateEvent;

      OnClick := ClickEvent;

      OnCreate := CreateEvent;

      OnDblClick := DblClickEvent;

      OnDeactivate := DeactivateEvent;

      OnDestroy := DestroyEvent;

      OnKeyPress := KeyPressEvent;

      OnMouseEnter := MouseEnterEvent;

      OnMouseLeave := MouseLeaveEvent;

      OnPaint := PaintEvent;

    end;

    function TMyActiveX.Get_Active: WordBool;

    begin

      Result := Active;

    end;

    function TMyActiveX.Get_AlignDisabled: WordBool;

    begin

      Result := AlignDisabled;

    end;

    function TMyActiveX.Get_AlignWithMargins: WordBool;

    begin

      Result := AlignWithMargins;

    end;

    function TMyActiveX.Get_AutoScroll: WordBool;

    begin

      Result := AutoScroll;

    end;

    function TMyActiveX.Get_AutoSize: WordBool;

    begin

      Result := AutoSize;

    end;

    function TMyActiveX.Get_AxBorderStyle: TxActiveFormBorderStyle;

    begin

      Result := Ord(AxBorderStyle);

    end;

    function TMyActiveX.Get_Caption: WideString;

    begin

      Result := WideString(Caption);

    end;

    function TMyActiveX.Get_Color: OLE_COLOR;

    begin

      Result := OLE_COLOR(Color);

    end;

    function TMyActiveX.Get_DockSite: WordBool;

    begin

      Result := DockSite;

    end;

    function TMyActiveX.Get_DoubleBuffered: WordBool;

    begin

      Result := DoubleBuffered;

    end;

    function TMyActiveX.Get_DropTarget: WordBool;

    begin

      Result := DropTarget;

    end;

    function TMyActiveX.Get_Enabled: WordBool;

    begin

      Result := Enabled;

    end;

    function TMyActiveX.Get_ExplicitHeight: Integer;

    begin

      Result := ExplicitHeight;

    end;

    function TMyActiveX.Get_ExplicitLeft: Integer;

    begin

      Result := ExplicitLeft;

    end;

    function TMyActiveX.Get_ExplicitTop: Integer;

    begin

      Result := ExplicitTop;

    end;

    function TMyActiveX.Get_ExplicitWidth: Integer;

    begin

      Result := ExplicitWidth;

    end;

    function TMyActiveX.Get_Font: IFontDisp;

    begin

      GetOleFont(Font, Result);

    end;

    function TMyActiveX.Get_HelpFile: WideString;

    begin

      Result := WideString(HelpFile);

    end;

    function TMyActiveX.Get_KeyPreview: WordBool;

    begin

      Result := KeyPreview;

    end;

    function TMyActiveX.Get_MouseInClient: WordBool;

    begin

      Result := MouseInClient;

    end;

    function TMyActiveX.Get_ParentCustomHint: WordBool;

    begin

      Result := ParentCustomHint;

    end;

    function TMyActiveX.Get_ParentDoubleBuffered: WordBool;

    begin

      Result := ParentDoubleBuffered;

    end;

    function TMyActiveX.Get_PixelsPerInch: Integer;

    begin

      Result := PixelsPerInch;

    end;

    function TMyActiveX.Get_PopupMode: TxPopupMode;

    begin

      Result := Ord(PopupMode);

    end;

    function TMyActiveX.Get_PrintScale: TxPrintScale;

    begin

      Result := Ord(PrintScale);

    end;

    function TMyActiveX.Get_Scaled: WordBool;

    begin

      Result := Scaled;

    end;

    function TMyActiveX.Get_ScreenSnap: WordBool;

    begin

      Result := ScreenSnap;

    end;

    function TMyActiveX.Get_SnapBuffer: Integer;

    begin

      Result := SnapBuffer;

    end;

    function TMyActiveX.Get_UseDockManager: WordBool;

    begin

      Result := UseDockManager;

    end;

    function TMyActiveX.Get_Visible: WordBool;

    begin

      Result := Visible;

    end;

    function TMyActiveX.Get_VisibleDockClientCount: Integer;

    begin

      Result := VisibleDockClientCount;

    end;

    procedure TMyActiveX._Set_Font(var Value: IFontDisp);

    begin

      SetOleFont(Font, Value);

    end;

    procedure TMyActiveX.ActivateEvent(Sender: TObject);

    begin

      if FEvents <> nil then FEvents.OnActivate;

    end;

    procedure TMyActiveX.ClickEvent(Sender: TObject);

    begin

      if FEvents <> nil then FEvents.OnClick;

    end;

    procedure TMyActiveX.CreateEvent(Sender: TObject);

    begin

      if FEvents <> nil then FEvents.OnCreate;

    end;

    procedure TMyActiveX.DblClickEvent(Sender: TObject);

    begin

      if FEvents <> nil then FEvents.OnDblClick;

    end;

    procedure TMyActiveX.DeactivateEvent(Sender: TObject);

    begin

      if FEvents <> nil then FEvents.OnDeactivate;

    end;

    procedure TMyActiveX.DestroyEvent(Sender: TObject);

    begin

      if FEvents <> nil then FEvents.OnDestroy;

    end;

    procedure TMyActiveX.KeyPressEvent(Sender: TObject; var Key: Char);

    var

      TempKey: Smallint;

    begin

      TempKey := Smallint(Key);

      if FEvents <> nil then FEvents.OnKeyPress(TempKey);

      Key := Char(TempKey);

    end;

    procedure TMyActiveX.MouseEnterEvent(Sender: TObject);

    begin

      if FEvents <> nil then FEvents.OnMouseEnter;

    end;

    procedure TMyActiveX.MouseLeaveEvent(Sender: TObject);

    begin

      if FEvents <> nil then FEvents.OnMouseLeave;

    end;

    procedure TMyActiveX.PaintEvent(Sender: TObject);

    begin

      if FEvents <> nil then FEvents.OnPaint;

    end;

    procedure TMyActiveX.Set_AlignWithMargins(Value: WordBool);

    begin

      AlignWithMargins := Value;

    end;

    procedure TMyActiveX.Set_AutoScroll(Value: WordBool);

    begin

      AutoScroll := Value;

    end;

    procedure TMyActiveX.Set_AutoSize(Value: WordBool);

    begin

      AutoSize := Value;

    end;

    procedure TMyActiveX.Set_AxBorderStyle(Value: TxActiveFormBorderStyle);

    begin

      AxBorderStyle := TActiveFormBorderStyle(Value);

    end;

    procedure TMyActiveX.Set_Caption(const Value: WideString);

    begin

      Caption := TCaption(Value);

    end;

    procedure TMyActiveX.Set_Color(Value: OLE_COLOR);

    begin

      Color := TColor(Value);

    end;

    procedure TMyActiveX.Set_DockSite(Value: WordBool);

    begin

      DockSite := Value;

    end;

    procedure TMyActiveX.Set_DoubleBuffered(Value: WordBool);

    begin

      DoubleBuffered := Value;

    end;

    procedure TMyActiveX.Set_DropTarget(Value: WordBool);

    begin

      DropTarget := Value;

    end;

    procedure TMyActiveX.Set_Enabled(Value: WordBool);

    begin

      Enabled := Value;

    end;

    procedure TMyActiveX.Set_Font(const Value: IFontDisp);

    begin

      SetOleFont(Font, Value);

    end;

    procedure TMyActiveX.Set_HelpFile(const Value: WideString);

    begin

      HelpFile := string(Value);

    end;

    procedure TMyActiveX.Set_KeyPreview(Value: WordBool);

    begin

      KeyPreview := Value;

    end;

    procedure TMyActiveX.Set_ParentCustomHint(Value: WordBool);

    begin

      ParentCustomHint := Value;

    end;

    procedure TMyActiveX.Set_ParentDoubleBuffered(Value: WordBool);

    begin

      ParentDoubleBuffered := Value;

    end;

    procedure TMyActiveX.Set_PixelsPerInch(Value: Integer);

    begin

      PixelsPerInch := Value;

    end;

    procedure TMyActiveX.Set_PopupMode(Value: TxPopupMode);

    begin

      PopupMode := TPopupMode(Value);

    end;

    procedure TMyActiveX.Set_PrintScale(Value: TxPrintScale);

    begin

      PrintScale := TPrintScale(Value);

    end;

    procedure TMyActiveX.Set_Scaled(Value: WordBool);

    begin

      Scaled := Value;

    end;

    procedure TMyActiveX.Set_ScreenSnap(Value: WordBool);

    begin

      ScreenSnap := Value;

    end;

    procedure TMyActiveX.Set_SnapBuffer(Value: Integer);

    begin

      SnapBuffer := Value;

    end;

    procedure TMyActiveX.Set_UseDockManager(Value: WordBool);

    begin

      UseDockManager := Value;

    end;

    procedure TMyActiveX.Set_Visible(Value: WordBool);

    begin

      Visible := Value;

    end;

    function TMyActiveX.CallInt(const Param, Param2: WideString): WideString;

    var

      FileIni:TIniFile;//定义一个ini文件

      JHadd:string;//用来存放ini文件地址

      JHExeAdd:string;//用来存放ini文件地址

      par,temp,fileName,xtjm,wjjm: WideString;

      strs:TStrings;

      i,j :Integer;

    begin

      fileName:='D:/callIntinterface.ini';

      try

          if not FileExists(fileName) then

          begin

            Result := '-1|没有找到'+ fileName + '|';

            Exit;

          end;

          iniFile := TIniFile.Create(fileName);

          try

            wjjm:= iniFile.ReadString('wym','wymStr','-1');//文件加密

            JHadd:= iniFile.ReadString('JHadd','JHaddS','-1'); //取叫号地址

            JHExeAdd:= iniFile.ReadString('JHadd','JHExeAdd','-1'); //取叫号地址

            xtjm:=Param2;

          finally

            FileIni.free();

          end;

            //判断文件加密和系统加密  CompareStr(wjjm)

            if trim(wjjm) <> trim(xtjm) then

            begin

              Result :='-1|错误,请及时联系开发商!'+'|';

              Exit;

            end;

            if  JHadd = '-1' then

            begin

              Result :='-1|错误,请维护接口data.ini文件路径地址'+'|';

              Exit;

            end;

            //分解param参数

            strs := TStringList.Create;

            strs.Delimiter:='|';

            strs.DelimitedText:=Param;

            //获取data.ini的文件并进行操作

            try

              FileIni:=TIniFile.Create(JHadd);

              for i := 0 to strs.Count-1 do

              begin

                case i of

                  0: FileIni.WriteString('Send','Name',Strs[i]);//姓名。

                  1: FileIni.WriteString('Send','Money',Strs[i]); //金额;

                  2: FileIni.WriteString('Sound','Coding',Strs[i]); //呼叫类别;

                end;

              end;

            finally

              FileIni.free();

            end;

            ShellExecute(handle, nil, pchar(JHExeAdd), nil, nil, SW_SHOWNORMAL);

            FileIni:=TIniFile.Create(JHadd);

            try

              temp:= FileIni.ReadString('Return','Return','-1');//读取是否发送成功

            finally

            FileIni.free();

            end;

      except

          on E:Exception do

          begin

            Result := '-1|发生异常' + E.Message + '|';

            Exit;

          end;

      end;

      Result:=temp;

    end;

    initialization

      TActiveFormFactory.Create(

        ComServer,

        TActiveFormControl,

        TMyActiveX,

        Class_MyActiveX,

        1,

        '',

        OLEMISC_SIMPLEFRAME or OLEMISC_ACTSLIKELABEL,

        tmApartment);

    end.

  • 相关阅读:
    js 提示框的实现---组件开发之(一)
    js 原型链
    js 哈希路由原理实现
    js 弹窗的实现
    js 滑动门的实现
    Delphi IDFtp用法,包含断点续传
    memortstream Base64编码和filestream base64编码不同
    Delphi另一个多线程函数:BeginThread用法
    delphi 讲的比较详细的多线程(推荐)
    多线程简单实用
  • 原文地址:https://www.cnblogs.com/zhaisd/p/13516802.html
Copyright © 2011-2022 走看看