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

📄 project1.dpr

📁 作为服务
💻 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 + -