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

📄 prjmisc.pas

📁 === === === MiniHex 1.61 源程序说明 ============================== “$(MiniHex)Source”目录中的所有
💻 PAS
字号:
unit PrjMisc;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Global;

procedure CheckPrevInstance;
procedure ShowHelp;
function GetBookmarkFileName: string;

implementation

uses Misc, MainFrm, OptionFrm, SysOptMgr;

procedure CheckPrevInstance;
var
  Handle, Ret: HWND;
  IniFileName: string;
  Value: array[0..255] of Char;
  I: Integer;
  Atom: TAtom;
begin
  //在程序初始化之前,不能使用VCL,故此处只能调用API读入INI设置。
  IniFileName := ExtractFilePath(Application.ExeName) + OptionsFileName;
  GetPrivateProfileString('Options', SOptAllowMultiInst, 'False',
    Value, SizeOf(Value), PChar(IniFileName));
  if StrIComp(PChar(@Value[0]), 'True') = 0 then Exit;

  CreateMutex(nil, False, SSoftName);
  //如果之前已经运行了一个实例
  if GetLastError = ERROR_ALREADY_EXISTS then
  begin
    Handle := GetDesktopWindow;
    Handle := GetWindow(Handle, GW_CHILD);
    while IsWindow(Handle) do
    begin
      //判断此窗口属性标志
      Ret := GetProp(Handle, PChar(SSoftName));
      if Ret = Handle then
      begin
        SetForeGroundWindow(Handle);
        for I := 1 to ParamCount do
        begin
          Atom := GlobalAddAtom(PChar(ParamStr(I)));
          SendMessage(Handle, WM_OPENFILE, 0, Atom);
          GlobalDeleteAtom(Atom);
        end;
        Break;
      end;
      //转到窗口列表中下一个窗口.
      Handle := GetWindow(Handle, GW_HWNDNEXT);
    end;
    Halt;
  end;
end;

procedure ShowHelp;
var
  FileName: string;
begin
  FileName := ExtractFilePath(Application.ExeName) + 'Readme.txt';
  ExecuteFile(FileName, '', '', SW_SHOWDEFAULT);
end;

function GetBookmarkFileName: string;
begin
  Result := ExtractFilePath(Application.ExeName) + 'Bookmark.ini';
end;

end.

⌨️ 快捷键说明

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