亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? in_mail_dll.pas

?? 用Delphi實現Dll插件的方式
?? PAS
字號:
unit In_Mail_Dll;
{版權所有 楓葉在線 HTTP://WWW.SKYGZ.COM SKYGZ@QQ.COM 風鈴夜思雨}
interface

uses
  Windows, Forms, SysUtils, Controls, Classes,
  StdCtrls, Plugins, ExtCtrls, Graphics, ScktComp;

type
  THT = class
  private
    procedure Timer(Sender: TObject);
  end;

type
  TForm1 = class(TForm)
    FrmBG: TImage;
    ImgClose: TImage;
    LbMailID: TLabel;
    LbMailMsg: TLabel;
    TimerHide: TTimer;
    LbMove: TLabel;
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure ImgCloseClick(Sender: TObject);
    procedure LbMoveMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
  private
    { Private declarations }
  public
    { Public declarations }
  protected
    procedure CreateParams(var Params: TCreateParams); override;
  end;

var
  Form1: TForm1;
  ExeHandle: Hwnd;
  StrExePath: string;
  V: Integer;
  IsRun: Boolean;
  HT: THT;
  Timer: TTimer;

function PluginInfo: PPluginInfo; cdecl; export;
function Getmodule: PPluginModule; cdecl;

function GetDllHandle(): Hwnd; cdecl;
function GetDllInstance(): THandle; cdecl;
function GetDllPath(): PChar; cdecl;
procedure SetExeInfo(This_Handle: Hwnd; This_ExePath: PChar); cdecl;
procedure SetAbout(This_Module: PPluginModule); cdecl;
procedure SetConfig(This_Module: PPluginModule); cdecl;
function Initialize(This_Module: PPluginModule): Integer; cdecl;
function Terminate(This_Module: PPluginModule): Integer; cdecl;
function Start(This_Module: PPluginModule): Integer; cdecl;
function Stop(This_Module: PPluginModule): Integer; cdecl;

function Base64Encode(const s: string): string;
function Base64Decode(const s: string): string;
implementation

uses Config;

{$R *.dfm}

const
  Ver = '1.00';

  Info: TPluginInfo = (
    Version: Ver;
    Description: '郵件檢測插件';
    Module: Getmodule);

  DllModule: TPluginModule = (
    Description: '郵件檢測插件';
    DllHandle: GetDllHandle;
    DllInstance: GetDllInstance;
    DllPath: GetDllPath;
    ExeInfo: SetExeInfo;
    About: SetAbout;
    Config: SetConfig;
    Initialize: Initialize;
    Terminate: Terminate;
    Start: Start;
    Stop: Stop);

function PluginInfo: PPluginInfo;
begin
  result := @Info;
end;

function Getmodule: PPluginModule;
begin
  result := @DllModule;
end;

procedure SetExeInfo(This_Handle: Hwnd; This_ExePath: PChar);
begin
  ExeHandle := This_Handle;
  StrExePath := StrPas(This_ExePath);
end;

function GetDllHandle(): Hwnd;
begin
  result := application.Handle;
end;

function GetDllInstance(): THandle;
begin
  result := HInstance;
end;

function GetDllPath(): PChar;
var //獲取DLL路徑
  ModuleName: string;
begin
  SetLength(ModuleName, 260);
  GetModuleFileName(HInstance, PChar(ModuleName), Length(ModuleName));
  result := PChar(ModuleName);
end;

procedure SetAbout(This_Module: PPluginModule);
begin
  MessageBox(ExeHandle, '風鈴夜思雨制作', 'About', MB_ICONINFORMATION);
end;

procedure SetConfig(This_Module: PPluginModule);
begin
  frmconfig.RWINI(true);
  Timer.Enabled := false;
  frmconfig.ShowModal;
  if IsRun then Timer.Enabled := true;
end;

function Initialize(This_Module: PPluginModule): Integer;
begin
  application.CreateForm(TForm1, Form1);
  application.CreateForm(TFrmConfig, frmconfig);
  IsRun := false;
  result := 1;
end;

function Terminate(This_Module: PPluginModule): Integer;
begin
  if Assigned(frmconfig) then frmconfig.Free;
  if Assigned(Form1) then Form1.Free;
  result := 1;
end;

function Start(This_Module: PPluginModule): Integer;
begin
  frmconfig.RWINI(true);
  if IsRun = false then
  begin
    Timer.OnTimer := HT.Timer;
    Timer.Interval := 60000;
    V := 0;
    Timer.Enabled := true;
  end;
  IsRun := true;
  result := 1;
end;

function Stop(This_Module: PPluginModule): Integer;
begin
  if IsRun then
  begin
    Timer.Enabled := false;
    IsRun := false;
  end;
  result := 1;
end;

function Base64Encode(const s: string): string;
var //加密
  i, c1, c2, c3: Integer;
  m, n: Integer;
const
  Base64: string = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz+/~!@#$%^&*(){}[]<>?-\|`_';
begin
  result := '';
  m := 1;
  n := 0;
  for i := 1 to (Length(s) div 3) do
  begin
    c1 := Ord(s[m]);
    c2 := Ord(s[m + 1]);
    c3 := Ord(s[m + 2]);
    m := m + 3;
    result := result + Base64[(c1 shr 2) and $3F + 1];
    result := result + Base64[((c1 shl 4) and $30) or ((c2 shr 4) and $0F) + 1];
    result := result + Base64[((c2 shl 2) and $3C) or ((c3 shr 6) and $03) + 1];
    result := result + Base64[c3 and $3F + 1];
    n := n + 4;
    if (n = 76) then
    begin
      n := 0;
      // Result := Result+#13#10;
    end;
  end;
  if (Length(s) mod 3) = 1 then
  begin
    c1 := Ord(s[m]);
    result := result + Base64[(c1 shr 2) and $3F + 1];
    result := result + Base64[(c1 shl 4) and $30 + 1];
//    Result := Result+'=';
//    Result := Result+'=';
  end;
  if (Length(s) mod 3) = 2 then
  begin
    c1 := Ord(s[m]);
    c2 := Ord(s[m + 1]);
    result := result + Base64[(c1 shr 2) and $3F + 1];
    result := result + Base64[((c1 shl 4) and $30) or ((c2 shr 4) and $0F) + 1];
    result := result + Base64[(c2 shl 2) and $3C + 1];
//    Result := Result+ '=';
  end;
end;

function Base64Decode(const s: string): string;
var //解密
  i, m, n: Integer;
  c1, c2, c3, c4: Integer;
const
  Base64: string = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz+/~!@#$%^&*(){}[]<>?-\|`_';
begin
  result := '';
  n := 1;
  m := Length(s);
//  if s[m]='='then m:=m-1;
//  if s[m]='='then m:=m-1;
  for i := 1 to m div 4 do
  begin
    c1 := Pos(s[n], Base64) - 1;
    c2 := Pos(s[n + 1], Base64) - 1;
    c3 := Pos(s[n + 2], Base64) - 1;
    c4 := Pos(s[n + 3], Base64) - 1;
    n := n + 4;
    result := result + Chr(((c1 shl 2) and $FC) or ((c2 shr 4) and $3));
    result := result + Chr(((c2 shl 4) and $F0) or ((c3 shr 2) and $0F));
    result := result + Chr(((c3 shl 6) and $C0) or c4);
  end;
  if m mod 4 = 2 then
  begin
    c1 := Pos(s[n], Base64) - 1;
    c2 := Pos(s[n + 1], Base64) - 1;
    result := result + Chr(((c1 shl 2) and $FC) or ((c2 shr 4) and $3));
  end;

  if m mod 4 = 3 then
  begin
    c1 := Pos(s[n], Base64) - 1;
    c2 := Pos(s[n + 1], Base64) - 1;
    c3 := Pos(s[n + 2], Base64) - 1;
    result := result + Chr(((c1 shl 2) and $FC) or ((c2 shr 4) and $3));
    result := result + Chr(((c2 shl 4) and $F0) or ((c3 shr 2) and $0F));
  end;
end;

procedure TForm1.CreateParams(var Params: TCreateParams);
begin
  inherited CreateParams(Params);
//  Params.ExStyle := Params.ExStyle or WS_EX_TOPMOST or WS_EX_TOOLWINDOW;
  Params.WndParent := ExeHandle; //用于不用在任務欄上顯示
end;

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  Hide;
  CanClose := false; //不能關閉,否則會整個程序退出
  Exit;
end;

function Pop3ChkMail(Host, User, Password: string; var MailList: TStringList): Boolean;
  function SocketRec(Socket: TCustomWinSocket; TimeOut: Integer; Crlf: string = #13#10): string;
  var
    Buf: array[0..4095] of Char;
    RR: Integer;
    TS: TStringStream; //保存所有的數據
    FSocketStream: TWinSocketStream;
  begin
    TS := TStringStream.Create('');
    FSocketStream := TWinSocketStream.Create(Socket, TimeOut);
    while (Socket.Connected = true) do
    begin
      if not FSocketStream.WaitForData(TimeOut) then Break;
      ZeroMemory(@Buf, SizeOf(Buf));
      RR := FSocketStream.Read(Buf, 1);
      if RR = 0 then Break;
      TS.Write(Buf, RR);
      if Pos(Crlf, TS.DataString) <> 0 then Break;
    end;
    result := TS.DataString;
    if Pos(Crlf, result) = 0 then result := '';
    TS.Free;
    FSocketStream.Free;
  end;

  function Pop3Response(Str: string): Boolean;
  begin
    if Pos('+OK', Str) > 0 then result := true else result := false;
  end;

  function ChkCommand(CS: TClientSocket): Boolean;
  var Cmd: string;
  begin
    while CS.Active do
    begin
      Cmd := SocketRec(CS.Socket, 60 * 1000);
      result := Pop3Response(Cmd);
      if result = false then
      begin
        CS.Socket.SendText('QUIT' + #13#10);
        CS.Active := false;
        CS.Free;
      end;
      Exit;
    end;
  end;
var CS: TClientSocket;
  Cmd: string;
begin
  try
    result := false;
    CS := TClientSocket.Create(nil);
    CS.ClientType := ctBlocking;
    CS.Host := Host;
    CS.Port := 110;
    CS.Active := true;
    if ChkCommand(CS) = false then Exit;

    CS.Socket.SendText('USER ' + User + #13#10);
    if ChkCommand(CS) = false then Exit;
    CS.Socket.SendText('PASS ' + Password + #13#10);
    if ChkCommand(CS) = false then Exit;
    CS.Socket.SendText('LIST' + #13#10);
    if ChkCommand(CS) = false then Exit;
    while true do
    begin
      Cmd := SocketRec(CS.Socket, 60 * 1000);
      MailList.Add(Cmd);
      if Pos('.', Cmd) > 0 then Break;
    end;
    CS.Socket.SendText('QUIT' + #13#10);
    CS.Active := false;
    CS.Free;
    result := true;
  except;
    CS.Free;
  end;
end;

procedure THT.Timer(Sender: TObject);
var i: Integer;
  MailList: TStringList;
  Frm: TForm1;
begin
  V := V + 1;
  with frmconfig do
  begin
    for i := 0 to ListView1.Items.Count - 1 do
    begin
      if V = StrToInt(ListView1.Items[i].SubItems.Strings[3]) then
      begin
        MailList := TStringList.Create;
        Pop3ChkMail(ListView1.Items[i].SubItems.Strings[0], ListView1.Items[i].SubItems.Strings[1], Base64Decode(ListView1.Items[i].SubItems.Strings[2]), MailList);
        if MailList.Count > 0 then
        begin
          Frm := TForm1.Create(nil);
          Frm.Top := screen.Height - Frm.Height;
          Frm.Left := screen.Width - Frm.Width;
          Frm.LbMailID.Caption := ListView1.Items[i].Caption;
          Frm.LbMailMsg.Caption := '你有 ' + IntToStr(MailList.Count - 1) + ' 封新郵件!';
          Frm.FormStyle := fsStayOnTop;
          Frm.Show;
          SetWindowRgn(Frm.Handle, CreateRoundRectRgn(0, 0, Frm.Width + 1, Frm.Height + 1, 5, 5), true);
          Frm.TimerHide.Enabled := true;
        end;
        MailList.Free;
      end;
    end;
    if V >= MaxTime then V := 0;
  end;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action := caFree;
end;

procedure TForm1.ImgCloseClick(Sender: TObject);
begin
  TimerHide.Enabled := false;
  close;
end;

procedure TForm1.LbMoveMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  ReleaseCapture;
  SendMessage(Handle, $0112, $F012, 0);
end;

initialization
  HT := THT.Create;
  Timer := TTimer.Create(nil);

finalization
  if Assigned(Timer) then Timer.Free;
  if Assigned(HT) then HT.Free;

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99热在这里有精品免费| 亚洲素人一区二区| 精品婷婷伊人一区三区三| 波多野结衣91| 成人av资源在线观看| 美女视频一区在线观看| 日韩和的一区二区| 五月激情综合网| 亚洲va欧美va国产va天堂影院| 亚洲同性同志一二三专区| 国产精品国产三级国产a| 日本一区二区三区dvd视频在线| 欧美国产日本视频| 中文字幕av一区二区三区 | 国产精品久久久久久妇女6080| 日韩欧美亚洲一区二区| 色综合久久综合中文综合网| 色爱区综合激月婷婷| 在线观看中文字幕不卡| 欧美日韩在线播| 日韩欧美在线不卡| 国产蜜臀97一区二区三区| 最新不卡av在线| 日日夜夜精品免费视频| 美女高潮久久久| 99久久国产免费看| 日本乱人伦一区| 欧美一区二区三区日韩| 精品99999| 亚洲欧洲精品一区二区三区| 亚洲欧美日韩国产手机在线 | 欧美最新大片在线看| 欧美精选一区二区| 国产亚洲欧美日韩俺去了| 欧美激情一区二区在线| 亚洲午夜免费福利视频| 国产精品99久久不卡二区| 色婷婷国产精品久久包臀| 日韩精品中文字幕在线不卡尤物| 日本一区二区三区电影| 亚洲成av人片一区二区三区| 丁香激情综合国产| 91精品久久久久久久91蜜桃| 国产嫩草影院久久久久| 亚瑟在线精品视频| av成人动漫在线观看| 欧美zozo另类异族| 亚洲gay无套男同| www.色精品| 国产亚洲欧美日韩俺去了| 视频精品一区二区| 91免费观看国产| 久久久久九九视频| 三级欧美韩日大片在线看| 99精品在线免费| 国产三级精品三级| 久久99国产精品久久99| 欧美男女性生活在线直播观看| ...av二区三区久久精品| 国产精品综合网| 欧美大片拔萝卜| 日韩1区2区3区| 欧美日韩中文字幕一区| 亚洲一区二区在线免费观看视频| 成人美女在线视频| 国产蜜臀av在线一区二区三区| 日本一不卡视频| 欧美日韩在线观看一区二区| 亚洲三级在线免费观看| eeuss鲁片一区二区三区 | 欧美伊人久久久久久久久影院 | 日韩一区二区三区免费观看| 亚洲日本在线天堂| 91论坛在线播放| 亚洲精品日日夜夜| 欧美主播一区二区三区美女| 亚洲同性同志一二三专区| 91在线观看免费视频| 亚洲欧洲av一区二区三区久久| 国产成人亚洲综合a∨婷婷| 久久青草欧美一区二区三区| 狠狠色丁香久久婷婷综合丁香| 精品噜噜噜噜久久久久久久久试看 | 日韩国产欧美一区二区三区| 欧美精品在线观看一区二区| 亚欧色一区w666天堂| 欧美一区二区播放| 激情综合网最新| 国产无遮挡一区二区三区毛片日本| 国产在线观看免费一区| 国产精品欧美一区喷水| 色先锋久久av资源部| 亚洲国产日韩a在线播放| 777奇米成人网| 激情综合色播五月| 综合久久久久久| 欧美系列在线观看| 经典三级视频一区| 亚洲精品一卡二卡| 日韩一区二区免费在线电影| 国产成人小视频| 亚洲午夜私人影院| 国产亚洲视频系列| 欧美日韩黄色影视| 国产美女视频91| 亚洲女女做受ⅹxx高潮| 日韩欧美视频在线| 成a人片国产精品| 视频一区二区国产| 国产精品电影一区二区三区| 欧美剧在线免费观看网站| 国产自产2019最新不卡| 亚洲欧美日韩国产手机在线| 日韩亚洲欧美一区二区三区| 99免费精品视频| 精品在线一区二区| 一区二区三区在线视频观看| 精品欧美一区二区久久| 在线免费观看一区| 国产一区二区毛片| 婷婷综合久久一区二区三区| 国产欧美日韩麻豆91| 91精品国产综合久久福利软件 | 一区二区三区久久久| 日韩欧美一区二区免费| 91国产成人在线| 国产成人精品在线看| 日韩1区2区3区| 亚洲国产日日夜夜| 亚洲丝袜精品丝袜在线| 26uuu成人网一区二区三区| 欧美精品国产精品| 91极品美女在线| av动漫一区二区| 国产成人综合自拍| 老鸭窝一区二区久久精品| 亚洲国产精品久久艾草纯爱| 国产精品久久久久7777按摩| 欧美精品一区二区久久婷婷| 欧美日韩小视频| 欧美丝袜丝交足nylons图片| 成人h版在线观看| 国产成a人亚洲| 国产激情一区二区三区桃花岛亚洲| 麻豆久久久久久久| 久色婷婷小香蕉久久| 日本美女一区二区| 免费成人在线影院| 午夜精品福利一区二区蜜股av| 亚洲免费观看视频| 亚洲男同1069视频| 自拍偷自拍亚洲精品播放| 亚洲欧洲av在线| 亚洲精品乱码久久久久久黑人 | 久久久久久久久一| 久久精品一区二区三区不卡牛牛| 欧美tk丨vk视频| 久久久亚洲精华液精华液精华液| 精品女同一区二区| 久久精品视频一区二区| 国产精品久久久久久久久免费桃花| 中文字幕欧美区| 亚洲精品美国一| 午夜精品久久久久久久久久 | 国产成人综合亚洲91猫咪| 国产综合色视频| 成人黄色小视频| 欧美日韩专区在线| 精品人在线二区三区| 欧美国产一区二区| 夜夜嗨av一区二区三区中文字幕| 一区二区三区四区不卡视频| 亚洲一二三级电影| 久久99精品久久久| 粉嫩av亚洲一区二区图片| 白白色 亚洲乱淫| 欧美精品高清视频| 国产日韩欧美高清| 亚洲午夜精品在线| 韩国一区二区视频| 93久久精品日日躁夜夜躁欧美| 欧美乱妇20p| 中文在线免费一区三区高中清不卡| 亚洲女性喷水在线观看一区| 麻豆成人91精品二区三区| 成人午夜又粗又硬又大| 欧美视频在线观看一区二区| 欧美成人性战久久| 亚洲人成精品久久久久| 日本特黄久久久高潮| 成人高清免费观看| 欧美日韩高清一区二区三区| 国产亚洲成av人在线观看导航| 亚洲综合区在线| 国产福利一区二区| 555www色欧美视频| 中文字幕色av一区二区三区| 日本色综合中文字幕| 91麻豆精品在线观看| 亚洲精品一线二线三线|