📄 project1.dpr
字号:
program Project1;
uses
sharemem,
Forms,
windows,
Messages,
Types,
Graphics,
Unit1 in 'Unit1.pas' {FrmMain};
{$R *.res}
var
hMutex: THandle;
FoundWnd: THandle;
ModuleName: string;
multi: Boolean = False;
const
WM_NOTIFYICON = WM_User + 10;
//枚举窗口
function EnumWndProc (hwnd: THandle; Param: Cardinal): Bool; stdcall;
var
ClassName, WinModuleName: string;
WinInstance: THandle;
begin
Result := True;
SetLength (ClassName, 100);
GetClassName (hwnd, PChar (ClassName), Length (ClassName));
ClassName := PChar (ClassName);
if ClassName = TFrmMain.ClassName then
begin
// get the module name of the target window
SetLength (WinModuleName, 200);
WinInstance := GetWindowLong (hwnd, GWL_HINSTANCE);
GetModuleFileName (WinInstance, PChar (WinModuleName), Length (WinModuleName));
WinModuleName := PChar(WinModuleName); // adjust length
if WinModuleName = ModuleName then // compare module names
begin
FoundWnd := Hwnd;
Result := False; // stop enumeration
end;
end;
end;
begin
HMutex := CreateMutex (nil, False, 'OneCopyMutex');
if WaitForSingleObject (hMutex, 0) <> wait_TimeOut then
begin
Application.Initialize;
//Application.CreateForm(TForm1, Form1);
Application.CreateForm(TFrmMain, FrmMain);
Application.Run;
end ;
FoundWnd := FindWindow('TFrmMain', nil);
if FoundWnd >32 then
begin
if not IsWindowVisible (FoundWnd) then
PostMessage(FoundWnd, WM_NOTIFYICON, 0, WM_LBUTTONDBLCLK);
SetForegroundWindow(FoundWnd);
end;
end.
{ // 下面的程序是将,本来最小化的程序调动起来,成为最想
begin
HMutex := CreateMutex (nil, False, 'VDFill');
if multi or (WaitForSingleObject (hMutex, 0) <> wait_TimeOut) then
begin
Application.Initialize;
Application.Title := '系统软件监视程序';
//Application.ShowMainForm := False;
Application.CreateForm(TFrmMain, FrmMain);
Application.Run;
end
else
begin
SetLength (ModuleName, 200); // get the current module name
GetModuleFileName (HInstance, PChar (ModuleName), Length (ModuleName));
ModuleName := PChar (ModuleName); // adjust length
EnumWindows (@EnumWndProc, 0); // find window of previous instance
if FoundWnd <> 0 then
begin
if not IsWindowVisible (FoundWnd) then PostMessage(FoundWnd, WM_NOTIFYICON, 0, WM_LBUTTONDBLCLK);
SetForegroundWindow(FoundWnd);
end;
end;
end. }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -