📄 put_data.~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 + -