⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 put_data.~pas

📁 这是一个用来控制windows状态栏右下角的程序开发例子.
💻 ~PAS
字号:
unit put_data;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ExtCtrls, Psock, NMFtp, StdCtrls, ComCtrls,FileCtrl,ShellAPI, Menus,
  AppEvnts;
const
 WM_TRAYNOTIFY=WM_USER+1;//定义通知消息
 MY_MESSAGE = WM_USER + 100;
type
  TForm_main = class(TForm)
    Timer1: TTimer;
    NMFTP1: TNMFTP;
    Button1: TButton;
    DateTimePicker1: TDateTimePicker;
    Button2: TButton;
    Button4: TButton;
    Label1: TLabel;
    PopupMenu1: TPopupMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    ApplicationEvents1: TApplicationEvents;
    procedure Timer1Timer(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure NMFTP1Error(Sender: TComponent; Errno: Word; Errmsg: String);
    procedure Button2Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure NMFTP1Failure(var Handled: Boolean; Trans_Type: TCmdType);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure ApplicationEvents1Minimize(Sender: TObject);
    procedure ApplicationEvents1Restore(Sender: TObject);
    procedure N1Click(Sender: TObject);
    procedure N2Click(Sender: TObject);
  private
    { Private declarations }
    //procedure OnIconNotify(var Message: TMessage);
   // message MY_MESSAGE;
  public
    procedure WndProc(var Msg: TMessage); override;

    { Public declarations }
  end;

var
  Form_main: TForm_main;
  lsh,kzrq,qsrq,nsbm,dzsph,move_str,fkzh:string;
  getftptime,remoteip,ftpuser,ftppass:string;
  getftptime_gs,remoteip_gs,ftpuser_gs,ftppass_gs:string;
  sqlstring,user,server,database,pass,ftpdir:string;
  filename,localfile:string;
  count,d_i:integer;
  nd0, nd1:NotifyIconData;
  hs:array[0..9]of LongWord;
  ts1,ts:tstrings;
implementation

uses subprg;

{$R *.DFM}
{
procedure TForm_main.OnIconNotify(var Message: TMessage);
var pt:Tpoint;
begin
GetCursorPos(pt);
begin
if Message.LParam=WM_LBUTTONDOWN then
        begin
                Application.Restore;
                Application.BringToFront;
        end
else
        if Message.LParam=WM_RBUTTONDOWN  then
                PopupMenu1.Popup(pt.X,pt.y);
end;
end;
}
procedure TForm_main.Timer1Timer(Sender: TObject);
var
i:integer;
lsh:string;
begin
Timer1.Enabled :=false;
//公积金  
if getftptime=FormatDateTime('hh:mm:ss',now) then
  begin
        DateTimePicker1.Date:=date-1;
        Button1.Click ;
  end;
Timer1.Enabled :=true;
end;

//公积金
procedure TForm_main.Button1Click(Sender: TObject);
var
i,j,k:integer;
f:file of byte;
iFileHandle,iBytesRead,iFileLength,file_num: Integer;
filelist:TFileListBox;
je,bz,szmc,pmmc,ysjc,yskm,sssq,dzsph,dwmc,dwzh,RemoteFile:string;
sjje:double;

begin
//取ftp文件
        NMFTP1.Vendor := NMOS_AUTO;
        NMFTP1.Host :=remoteip;
        NMFTP1.UserID:=ftpuser;
        NMFTP1.Password :=ftppass;
        NMFTP1.ParseList:=true;
        try
           NMFTP1.Connect ;
           Form_sub.writelog(formatdatetime('yyyymmddhhmmss',now)+'公积金FTP连接远程成功!');
        except
           Form_sub.writelog(formatdatetime('yyyymmddhhmmss',now)+'公积金FTP连接远程失败!');
           button1.Enabled :=true;
           exit;
        end;
        NMFTP1.Mode(MODE_BYTE);
        //NMFTP1.ChangeDir('data/lrecv');
        i:=0;
        while i<ts1.Count do
         begin
          //文件名:'SEC202_40000.'+日期(yyyymmdd)+'.fgs'
          filename:=trim(ts1.Strings[i])+formatdatetime('yymmdd',DateTimePicker1.date)+'.txt';
          localfile:=ftpdir+'\'+filename;
          RemoteFile:=filename;
          if FileExists(localfile) then
             begin
                 try
                    //NMFTP1.Download(filename,localfile);
                    NMFTP1.Upload(LocalFile, RemoteFile);
                    Form_sub.writelog(formatdatetime('yyyymmddhhmmss',now())+'公积金FTP文件'+filename+'上传成功');
                 except
                    Form_sub.writelog(formatdatetime('yyyymmddhhmmss',now())+'公积金FTP文件'+filename+'上传失败!');
                 end;
             end;
           i:=i+1;
         end;
        NMFTP1.Disconnect ;
button1.Enabled :=true;
end;

procedure TForm_main.NMFTP1Error(Sender: TComponent; Errno: Word;
  Errmsg: String);
begin
//Form_sub.writelog(formatdatetime('yyyymmddhhmmss',now())+'FTP文件'+filename+'取得失败!');

end;

procedure TForm_main.Button2Click(Sender: TObject);
begin
filename:='.\log\log'+FormatDateTime('yyyymmdd',DateTimePicker1.Date)+'.txt';
if winexec(pchar('C:\Program Files\Accessories\WORDPAD.EXE '+filename),sw_show)<31 then
        application.MessageBox('查看文件日志失败!','提示',mb_ok);

end;

procedure TForm_main.FormShow(Sender: TObject);
begin
DateTimePicker1.Date:=date;
end;

procedure TForm_main.Button4Click(Sender: TObject);
begin
close;
end;

procedure TForm_main.NMFTP1Failure(var Handled: Boolean;
  Trans_Type: TCmdType);
begin
//Form_sub.writelog(formatdatetime('yyyymmddhhmmss',now())+'ftp失败!');
end;

procedure TForm_main.FormCreate(Sender: TObject);
begin
ts1:=tstringlist.Create;
ts1.LoadFromFile('filelist.txt');
ts:=tstringlist.Create;
ts.LoadFromFile('config.ini');
//公积金参数
getftptime:=copy(trim(ts.strings[0]),12,length(trim(ts.strings[0]))-11);
remoteip:=copy(trim(ts.strings[1]),10,length(trim(ts.strings[1]))-9);
ftpuser:=copy(trim(ts.strings[2]),9,length(trim(ts.strings[2]))-8);
ftppass:=copy(trim(ts.strings[3]),9,length(trim(ts.strings[3]))-8);
ftppass:=copy(trim(ts.strings[4]),8,length(trim(ts.strings[4]))-7);

//加载Icon0..Icon9这10个图标资源,并且保存它们的句柄。
//图标Icon0..Icon9分别对应与0..9这9个数字。
hs[0]:=LoadIcon(hInstance, 'icon1');

//填充NotifyIconData记录型变量nd0
nd0.cbSize := sizeof(NotifyIconData);
nd0.Wnd := handle;
nd0.uID := 0;
nd0.uFlags := NIF_MESSAGE or NIF_ICON or NIF_TIP;
nd0.uCallbackMessage := WM_TRAYNOTIFY;
nd0.hIcon := hs[0];
StrPLCopy(nd0.szTip, '公积金自动送数系统', 63);
//在任务栏状态区添加图标
Shell_NotifyIcon(NIM_ADD, @nd0);
end;

procedure TForm_main.FormDestroy(Sender: TObject);
begin
 //将图标从任务栏状态区删除
 Shell_NotifyIcon(NIM_DELETE, @nd0);
end;
//处理 通知消息
procedure TForm_main.WndProc(var Msg: TMessage);
var
IconID:integer;
pt:TPOINT;
begin
if msg.Msg = WM_TRAYNOTIFY then
 begin
 //  在通知消息中,wParam参数为图标的uID,  lParam参数为鼠标事件的类型。  
	  iconID := msg.WParam;    //获取鼠标的在屏幕上的位置
	  GetCursorPos(pt);  //通知消息的处理的基本框架结构如下:
	  case msg.lParam of
		  WM_LBUTTONDOWN:
		         begin        //鼠标左键被按下
		         end;
		  WM_RBUTTONDOWN:
		        begin        //鼠标右键被按下
                           PopupMenu1.Popup(pt.x,pt.y);
		        end;
		  WM_LBUTTONUP:
		        begin        //释放鼠标左键
		        end;
		  WM_RBUTTONUP:
		        begin        //释放鼠标右键
		        end;
                  WM_MOUSEMOVE:
		        begin        //鼠标在图标上移动
		        end;
                  WM_LBUTTONDBLCLK:
		        begin        //鼠标左键双击
		        end;
                  WM_RBUTTONDBLCLK:
		        begin        //鼠标右键双击
		        end;
	  end; //end case
 end
else//调用父类的WndProc方法处理其它消息
 inherited;
end;

procedure TForm_main.ApplicationEvents1Minimize(Sender: TObject);
begin
        ShowWindow(Application.Handle,SW_HIDE);
end;
procedure TForm_main.ApplicationEvents1Restore(Sender: TObject);
begin
        ShowWindow(Application.Handle,SW_SHOW);
end;

procedure TForm_main.N1Click(Sender: TObject);
begin
        ShowWindow(Application.Handle,SW_RESTORE);
end;

procedure TForm_main.N2Click(Sender: TObject);
begin
Application.Terminate;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -