// D:\SaveLog\_SaveLog.dpr立即备份晓亮的电脑操作记录热键(快捷键) F11由于原来的 AutoIt 杀毒软件总是误报没办法只好麻烦一点用 Delphi XE4 做了...
// D:\SaveLog\_SaveLog.dpr立即備份曉亮的電腦操作記錄
熱鍵(快捷鍵) F11由于原來的 AutoIt 殺毒軟件總是誤報沒辦法只好麻煩一點用 Delphi 各種版本 做了
(我主要用的版本是Delphi2007(Delphi11))
(從Delphi6到Embarcadero.Delphi.XE5.Lite)
?
?
// D:\SaveLog\_SaveLog.dpr立即備份曉亮的電腦操作記錄
?
熱鍵(快捷鍵) F11由于原來的 AutoIt 殺毒軟件總是誤報沒辦法只好麻煩一點用 Delphi XE4 做了
?
?
?
/// /
// D:\SaveLog\_SaveLog.dpr???????????????????????????????????????????????? //
// 立即備份曉亮的電腦操作記錄????????????????????????????????????????????? //
// 熱鍵(快捷鍵) F11??????????????????????????????????????????????????????? //
// 由于原來的 AutoIt 殺毒軟件總是誤報????????????????????????????????????? //
// 沒辦法只好麻煩一點用 Delphi XE4 做了??????????????????????????????????? //
// 反正不會可以查詢搜索引擎 百度谷歌搜狗?????????????????????????????????? //
// http://www.baidu.com/?????????????????????????????????????????????????? //
// http://www.cnblogs.com/delphichm/?????????????????????????????????????? //
// 執行順序 啟動EditPlus 激活EditPlus窗口? 插入當前日期和時間? 備份文件??? //
// CnPack 工程備份熱鍵(快捷鍵) ALT + NQB?????????????????????????????????? //
// 2013年11月2日? 曉亮
// _SaveLog.exe? 測試版(當前調試的版本)
// SaveLog.exe?? 不帶下劃線的是正式版(當前正在使用的版本)???????????????????????????????????????????????? //
/// /
program _SaveLog;
uses
? Forms,
? Unit1 in 'Unit1.pas' {Form1};
{$R *.res}
begin
? Application.Initialize;
? //Application.MainFormOnTaskbar := False;
? Application.ShowMainForm := False;
? Application.CreateForm(TForm1, Form1);
? Form1.Visible := False;
? Application.Run;
end.
?
?
?
?
?
?
?
?
?
?
?
{*******************************************************}
{?????????????????????????????????????????????????????? }
{?????? _SaveLog.exe??????????????????????????????????? }
{?????????????????????????????????????????????????????? }
{?????? 版權所有 (C) 2013 DelphiCHM???????????????????? }
{?????????????????????????????????????????????????????? }
{*******************************************************}
/// /
// D:\SaveLog\_SaveLog.dpr???????????????????????????????????????????????? //
// 立即備份曉亮的電腦操作記錄????????????????????????????????????????????? //
// 熱鍵(快捷鍵) F11??????????????????????????????????????????????????????? //
// 由于原來的 AutoIt 殺毒軟件總是誤報????????????????????????????????????? //
// 沒辦法只好麻煩一點用 Delphi XE4 做了??????????????????????????????????? //
// 反正不會可以查詢搜索引擎 百度谷歌搜狗?????????????????????????????????? //
// http://www.baidu.com/?????????????????????????????????????????????????? //
// http://www.cnblogs.com/delphichm/?????????????????????????????????????? //
// 執行順序 啟動EditPlus 激活EditPlus窗口? 插入當前日期和時間? 備份文件??? //
// CnPack 工程備份熱鍵(快捷鍵) ALT + NQB?????????????????????????????????? //
// 2013年11月2日? 曉亮???????????????????????????????????????????????????? //
// _SaveLog.exe? 測試版(當前調試的版本)??????????????????????????????????? //
// SaveLog.exe?? 不帶下劃線的是正式版(當前正在使用的版本)????????????????? //
// 需要改進的地方:? 1 相對路徑(在任意文件夾下都可以運行)?????????????????? //
// 2? 過濾重復輸入???????????????????????????????????????????????????????? //
// 3? 當打開EditPlus但是不是SaveLog.txt時????????????????????????????????? //
/// /
unit Unit1;
interface
uses
? Windows,
? Messages,
? SysUtils,
? Variants,
? Classes,
? Graphics,
? Controls,
? Forms,
? Dialogs,
? StdCtrls,
? Tlhelp32, ExtCtrls, ShellApi;
const
? WM_ICONTRAY = WM_USER + 2;
? NIF_INFO = $10;
? NIIF_INFO = $00000001;
type
? TDUMMYUNIONNAME = record
??? case Integer of
????? 0: (uTimeout: UINT);
????? 1: (uVersion: UINT);
? end;
? TNotifyIconData = record
??? cbSize: DWORD;
??? Wnd: HWND;
??? uID: UINT;
??? uFlags: UINT;
??? uCallbackMessage: UINT;
??? hIcon: HICON;
??? szTip: array[0..127] of Char;
??? dwState: DWORD;
??? dwStateMask: DWORD;
??? szInfo: array[0..255] of Char;
??? DUMMYUNIONNAME: TDUMMYUNIONNAME;
??? szInfoTitle: array[0..63] of Char;
??? dwInfoFlags: DWORD;
? end;
type
? TForm1 = class(TForm)
??? Label1: TLabel;
??? procedure FormCreate(Sender: TObject);
??? procedure FormClose(Sender: TObject; var Action: TCloseAction);
? private
??? { Private declarations }
??? TrayIconData: TNotifyIconData;
??? myatom: atom;
??? procedure hotkey(var msg: tmessage); message wm_hotkey; // 定義全局熱鍵消息事件
??? { Private declarations }
? public
??? { Public declarations }
? end;
var
? Form1: TForm1;
? a, b: integer;
? isRuningLocked: Boolean;
implementation
{$R *.dfm}
{ -------------------------------------------------------------------------------
? 過程名:??? TForm1.FormCreate
? 作者:????? Administrator
? 日期:????? 2013.11.04
? 參數:????? Sender: TObject
? 返回值:??? 無
? 作用:????? 在窗口創建時注冊全局熱鍵(Windows快捷鍵)
? ------------------------------------------------------------------------------- }
procedure TForm1.FormCreate(Sender: TObject);
begin
? myatom := globaladdatom('hotkey1'); // 設置全局熱鍵ID
? RegisterHotKey(handle, myatom, 0, vk_f11); // 注冊熱鍵
end;
{ -------------------------------------------------------------------------------
? 過程名:??? ProcedureIsExists
? 作者:????? Administrator
? 日期:????? 2013.11.04
? 參數:????? AppName: string
? 返回值:??? Boolean
? 作用:????? 判斷一個程序是否已經在運行
? 用法:????? if ProcedureIsExists('EditPlus.exe') then
? ------------------------------------------------------------------------------- }
function ProcedureIsExists(AppName: string): Boolean;
var
? lppe: TProcessEntry32;
? ssHandle: THandle;
? AppFound, findqq: Boolean;
? Wnd: HWND;
begin
? Result := False;
? ssHandle := CreateToolHelp32SnapShot(TH32CS_SNAPALL, 0);
? lppe.dwSize := SizeOf(lppe);
? AppFound := Process32First(ssHandle, lppe);
? while AppFound do
? begin
??? // 其中lppe.szExefile就是程序名**********************************************
??? if UpperCase(ExtractFileName(lppe.szExeFile)) = UpperCase(AppName) then
??? begin
????? Result := True;
????? Exit;
??? end;
??? AppFound := Process32Next(ssHandle, lppe);
? end;
end;
{ -------------------------------------------------------------------------------
? 過程名:??? WinActivate
? 作者:????? Administrator
? 日期:????? 2013.11.04
? 參數:
? 返回值:??? 無
? 作用:????? (測試版)激活指定的窗口(設置焦點到該窗口,使其成為活動窗口).
? ------------------------------------------------------------------------------- }
procedure WinActivate();
var
? buf: array[Byte] of Char;
? Found: HWND;
? Found1: HWND;
begin
? Found := FindWindow(nil, 'D:\SaveLog\_SaveLog.txt * - EditPlus');
? if Found <> 0 then
? begin
??? PostMessage(Found, WM_SYSCOMMAND, SC_MAXIMIZE, 0); // 最大化
??? SetForegroundWindow(Found);
??? SetWindowPos(Found, HWND_TOP, 0, 0, Screen.Width, Screen.Height,
????? SWP_SHOWWINDOW);
? end;
? Found1 := FindWindow(nil, 'D:\SaveLog\_SaveLog.txt - EditPlus');
? if Found1 <> 0 then
? begin
??? PostMessage(Found1, WM_SYSCOMMAND, SC_MAXIMIZE, 0); // 最大化
??? SetForegroundWindow(Found1);
??? SetWindowPos(Found1, HWND_TOP, 0, 0, Screen.Width, Screen.Height,
????? SWP_SHOWWINDOW);
? end;
end;
{ -------------------------------------------------------------------------------
? 過程名:??? WinActive
? 作者:????? Administrator
? 日期:????? 2013.11.04
? 參數:????? PartOfTitle:string
? 返回值:??? Boolean
? 作用:????? 檢查指定的窗口是否存在且當前被激活.
? 用法:????? 具體用法與 AutoIt3 相同,可以參考 AutoIt3CHS.CHM中文幫助
? 或者? http://www.autoitx.com/? AUTOIT CN AutoIt中文論壇
? ------------------------------------------------------------------------------- }
// function WinActive(PartOfWinTitle: string): Boolean;
function WinActive(): Boolean;
var
? buf: array[Byte] of Char;
begin
? GetWindowText(GetForegroundWindow, buf, Length(buf) * SizeOf(buf[0]));
? if (buf = 'D:\SaveLog\_SaveLog.txt * - EditPlus') or
??? (buf = 'D:\SaveLog\_SaveLog.txt - EditPlus') then
? begin
??? Result := True;
??? Exit;
? end
? else
? begin
??? Result := False;
??? Exit;
? end;
end;
procedure KeyDownAndUp(VKValue: Byte);
begin
? keybd_event(VKValue, 0, 0, 0);
? keybd_event(VKValue, 0, KEYEVENTF_KEYUP, 0);
end;
{ -------------------------------------------------------------------------------
? 過程名:??? InputDateTime
? 作者:????? Administrator
? 日期:????? 2013.11.04
? 參數:
? 返回值:??? 無
? 作用:????? 插入長格式的當前日期和時間到指定窗口(EditPlus)
? ------------------------------------------------------------------------------- }
procedure InputDateTime();
var
? i: integer; // 插入字符用
begin
? keybd_event(VK_CONTROL, 0, 0, 0);
? KeyDownAndUp(VK_END); // 輸入光標移到最后
? keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0);
? KeyDownAndUp(VK_RETURN); // 輸入回車鍵
? KeyDownAndUp(VK_RETURN); // 輸入回車鍵
? // 按下 Alt鍵,直到 KEYUP 為止
? keybd_event(VK_MENU, 0, 0, 0); // 按下 Alt鍵,直到 KEYUP 為止
? // 按下 Alt鍵,直到 KEYUP 為止
? KeyDownAndUp(69); // ALT + EIL
? KeyDownAndUp(73);
? KeyDownAndUp(76);
? keybd_event(VK_MENU, 0, KEYEVENTF_KEYUP, 0);
? KeyDownAndUp(VK_SPACE);
? // 按下 Alt鍵,直到 KEYUP 為止
? keybd_event(VK_MENU, 0, 0, 0); // 按下 Alt鍵,直到 KEYUP 為止
? // 按下 Alt鍵,直到 KEYUP 為止
? KeyDownAndUp(69); // ALT + EIO
? KeyDownAndUp(73);
? KeyDownAndUp(79);
? keybd_event(VK_MENU, 0, KEYEVENTF_KEYUP, 0);
? KeyDownAndUp(VK_SPACE);
? for i := 0 to 31 do
? begin
??? KeyDownAndUp(189); // 插入減號,Delphi__VK
? end;
? KeyDownAndUp(VK_RETURN); // 輸入回車鍵
? Sleep(100);
? keybd_event(VK_CONTROL, 0, 0, 0); // 按下 Alt鍵,直到 KEYUP 為止
? KeyDownAndUp(83); // CTRL + S立即保存 --
? keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0);
end;
// function RARBackupFiles(FileName:string,Drv:string):Boolean;
{ -------------------------------------------------------------------------------
? 過程名:??? RARBackupFiles
? 作者:????? Administrator
? 日期:????? 2013.11.04
? 參數:
? 返回值:??? Boolean
? 作用:????? 壓縮備份文檔 SaveLog.txt
? ------------------------------------------------------------------------------- }
function RARBackupFiles(): Boolean;
begin
? try
??? // ------------------------------------------------------------------------------
??? // 壓縮備份文檔 SaveLog.txt
??? // ------------------------------------------------------------------------------
??? if FileExists('D:\SaveLog\rar.exe') then
??? begin
????? // ShowMessage('000');
????? CreateDir('C:\SaveLog\');
????? WinExec('D:\SaveLog\rar a -ag[yyyy-mm-dd] -hp637 -isnd -m5 C:\SaveLog\曉亮的電腦操作記錄備份SaveLog.rar D:\SaveLog\_SaveLog.txt',
??????? SW_HIDE);
????? CreateDir('D:\SaveLog\');
????? WinExec('D:\SaveLog\rar a -ag[yyyy-mm-dd] -hp637 -isnd -m5 D:\SaveLog\曉亮的電腦操作記錄備份SaveLog.rar D:\SaveLog\_SaveLog.txt',
??????? SW_HIDE);
?
????? CreateDir('D:\快盤\');
????? CreateDir('D:\快盤\SaveLog\');
????? WinExec('D:\SaveLog\rar a -ag[yyyy-mm-dd] -hp637 -isnd -m5 D:\快盤\SaveLog\曉亮的電腦操作記錄備份SaveLog.rar D:\SaveLog\_SaveLog.txt',
??????? SW_HIDE);
????? CreateDir('E:\SaveLog\');
????? WinExec('D:\SaveLog\rar a -ag[yyyy-mm-dd] -hp637 -isnd -m5 E:\SaveLog\曉亮的電腦操作記錄備份SaveLog.rar D:\SaveLog\_SaveLog.txt',
??????? SW_HIDE);
????? CreateDir('F:\SaveLog\');
????? WinExec('D:\SaveLog\rar a -ag[yyyy-mm-dd] -hp637 -isnd -m5 F:\SaveLog\曉亮的電腦操作記錄備份SaveLog.rar D:\SaveLog\_SaveLog.txt',
??????? SW_HIDE);
????? CreateDir('G:\SaveLog\');
????? WinExec('D:\SaveLog\rar a -ag[yyyy-mm-dd] -hp637 -isnd -m5 G:\SaveLog\曉亮的電腦操作記錄備份SaveLog.rar D:\SaveLog\_SaveLog.txt',
??????? SW_HIDE);
????? CreateDir('H:\SaveLog\');
????? WinExec('D:\SaveLog\rar a -ag[yyyy-mm-dd] -hp637 -isnd -m5 H:\SaveLog\曉亮的電腦操作記錄備份SaveLog.rar D:\SaveLog\_SaveLog.txt',
??????? SW_HIDE);
?
????? {
??????? CreateDir('C:\SaveLog\');
??????? WinExec(PansiChar(ExtractFileDir(Application.ExeName) +
??????? '\rar a -ag[yyyy-mm-dd] -hp637 -isnd -m5 C:\MyPCLog\曉亮的電腦操作記錄備份SaveLog.rar D:\SaveLog\_SaveLog.txt'),
??????? SW_HIDE);
?
??????? CreateDir('D:\SaveLog\');
??????? WinExec(PansiChar(ExtractFileDir(Application.ExeName) +
??????? '\rar a -ag[yyyy-mm-dd] -hp637 -isnd -m5 D:\SaveLog\曉亮的電腦操作記錄備份SaveLog.rar D:\SaveLog\_SaveLog.txt'),
??????? SW_HIDE);
????? }
??? end
??? else
????? ShowMessage('沒有找到文件 RAR.exe');
??? Result := True;
? except
??? Result := False;
? end;
end;
{ -------------------------------------------------------------------------------
? 過程名:??? BackupSaveLog
? 作者:????? Administrator
? 日期:????? 2013.11.04
? 參數:
? 返回值:??? 無
? 作用:????? 備份SaveLog.txt文檔到各分區
? ------------------------------------------------------------------------------- }
procedure BackupSaveLog();
begin
? sleep(2000);
? if CopyFile('D:\SaveLog\_SaveLog.txt', PChar('D:\SaveLog\' + FormatDateTime('yyyy年mm月dd日', now()) +
??? '曉亮的電腦操作記錄備份MyPCLog.txt'), False) then
??? // 而且,請確保你的文件路徑正確,否則函數返回失敗.
??? // ShowMessage('Copy File Completed!')
? else
??? ShowMessage('Copy File Failed!備份失敗!D:\SaveLog\');
?
? if (CreateDir('D:\快盤\SaveLog\')) or (CopyFile('D:\SaveLog\_SaveLog.txt', PChar('D:\快盤\SaveLog\' + FormatDateTime('yyyy年mm月dd日', now()) +
??? '曉亮的電腦操作記錄備份MyPCLog.txt'), False)) then
??? // 而且,請確保你的文件路徑正確,否則函數返回失敗.
??? // ShowMessage('Copy File Completed!')
? else
??? ShowMessage('Please Login KuaiPan!Copy File Failed!備份失敗!請登錄金山快盤!');
?
? if RARBackupFiles then
??? // result:=true;
? else
??? ShowMessage('RAR File Backup Failed! RAR壓縮備份失敗!');
end;
{ -------------------------------------------------------------------------------
? 過程名:??? TForm1.hotkey
? 作者:????? Administrator
? 日期:????? 2013.11.04
? 參數:????? var msg: tmessage
? 返回值:??? 無
? 作用:????? 定義全局熱鍵(快捷鍵)響應事件,定義當用戶按下熱鍵時的操作
? ------------------------------------------------------------------------------- }
procedure TForm1.hotkey(var msg: tmessage); // 熱鍵響應事件
var
? ExePath: string;
? FTitle, FText: string;
begin
? // if (msg.LParamHi = VK_F11) and (msg.LParamLo = MOD_ALT) then
? if msg.LParamHi = vk_f11 then // 如果按下熱鍵(快捷鍵) [F11]
? begin
? {
? begin
????? TrayIconData.cbSize := SizeOf(TrayIconData);
? TrayIconData.uFlags := NIF_INFO;
? Ftext := '正在備份 SaveLog.txt ... '; //這里顯示氣球提示的內容
? strPLCopy(TrayIconData.szInfo, Ftext, SizeOf(TrayIconData.szInfo) - 1);
? Ftitle := '正在備份 SaveLog.txt ... ';//氣球提示標題
? strPLCopy(TrayIconData.szInfoTitle, Ftitle, SizeOf(TrayIconData.szInfoTitle) - 1);
? TrayIconData.dwInfoFlags := NIIF_INFO; //圖標類型
? Shell_NotifyIcon(NIM_MODIFY, @TrayIconData);
? end;
???? }
??? while not WinActive do
??? begin
????? if ProcedureIsExists('EditPlus.exe') then
????? begin // EditPlus.exe已經運行,有可能打開的不是SaveLog.txt
??????? WinActivate; // 激活窗口
??????? KeyDownAndUp(VK_RETURN); // 輸入回車鍵
??????? Sleep(100);
??????? keybd_event(VK_CONTROL, 0, 0, 0); // 按下 Alt鍵,直到 KEYUP 為止
??????? KeyDownAndUp(83); // CTRL + S立即保存 --
??????? keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0);
????? end
????? else
????? begin // EditPlus.exe還沒有運行
??????? while not ProcedureIsExists('EditPlus.exe') do
??????? begin
????????? ExePath := ExtractFileDir(Application.ExeName) +
??????????? '\EditPlus\EditPlus.exe';
????????? if FileExists(ExePath) then
??????????? WinExec('.\EditPlus\EditPlus.exe? .\_SaveLog.txt',
????????????? SW_SHOWMAXIMIZED);
??????? end;
??????? WinActivate;
??????? InputDateTime;
????? end;
??? end;
??? BackupSaveLog; // 備份文檔
? end;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
? globalDeleteatom(myatom);
end;
end.
?
?
?
?
// D:\SaveLog\_SaveLog.dpr立即備份曉亮的電腦操作記錄
熱鍵(快捷鍵) F11由于原來的 AutoIt 殺毒軟件總是誤報沒辦法只好麻煩一點用 Delphi 各種版本 做了
(從Delphi6到Embarcadero.Delphi.XE5.Lite)
轉載于:https://www.cnblogs.com/delphichm/p/3406867.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的// D:\SaveLog\_SaveLog.dpr立即备份晓亮的电脑操作记录热键(快捷键) F11由于原来的 AutoIt 杀毒软件总是误报没办法只好麻烦一点用 Delphi XE4 做了...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: WinForm窗体自适应分辨率
- 下一篇: 通知:即日起本博客暂停更新,请移步至ya