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

📄 splc.dpr

📁 DELPHI编写OPC(一): 编写OPC客户端程序
💻 DPR
字号:
program splc;

{$IFDEF VER150}
{$WARN UNSAFE_CAST OFF}
{$WARN UNSAFE_TYPE OFF}
{$ENDIF}
{$IFDEF VER150}
{$WARN UNSAFE_CAST OFF}
{$WARN UNSAFE_TYPE OFF}
{$ENDIF}
{$IFDEF VER170}
{$WARN UNSAFE_CAST OFF}
{$WARN UNSAFE_CODE OFF}
{$ENDIF}
uses
  Forms,
  IniFiles,
  SysUtils,
  windows,
  messages,
  Dialogs,
  Controls,  
  Classes,
  main in 'main.pas' {FMain},
  OPC_AE in 'OPC_AE.pas',
  OPCCOMN in 'OPCCOMN.pas',
  OPCDA in 'OPCDA.pas',
  OpcError in 'OPCerror.pas',
  OPCHDA in 'OPCHDA.pas',
  OPCSEC in 'OPCSEC.pas',
  OPCtypes in 'OPCtypes.pas',
  OPCenum in 'OPCenum.pas',
  UserUnit in 'UserUnit.pas',
  OPCutils in 'OPCutils.pas',
  uCiaServiceTools in 'uCiaServiceTools.pas';
const
  CM_RESTORE=WM_USER+$1000;
  MYappname='splc';
{$R *.res}
  var
  hMutex: THandle;
  FoundWnd: THandle;
  ModuleName: string;

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 = TFMain.ClassName then
  begin
    SetLength(WinModuleName, 200);
    WinInstance := GetWindowLong(hwnd, GWL_HINSTANCE);
    GetModuleFileName (WinInstance, PChar (WinModuleName),
      Length(WinModuleName));
    WinModuleName := PChar(WinModuleName);
    if WinModuleName = ModuleName then
    begin
      FoundWnd := Hwnd;
      Result := False;
    end;
  end;
end;

begin
  HMutex := CreateMutex(nil, False, 'OneCopyMutex');
  if WaitForSingleObject(hMutex, 0) <> WAIT_TIMEOUT then
  begin
      if CiaStartService('splc') then
      begin
          CiaService.CreateForm(TFMain, FMain);
          CiaService.Run; Exit;
      end;
      Application.Initialize;
      Application.CreateForm(TFMain, FMain);
      Application.Run;
  end
  else
  begin
    SetLength(ModuleName, 200);
    GetModuleFileName (HInstance, PChar(ModuleName), Length (ModuleName));
    ModuleName := PChar(ModuleName);
    EnumWindows(@EnumWndProc, 0);
    if FoundWnd <> 0 then
    begin
      if not IsWindowVisible(FoundWnd) then
        PostMessage(FoundWnd, wm_App, 0, 0);
      SetForegroundWindow(FoundWnd);
    end;
  end;
end.

⌨️ 快捷键说明

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