惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - 三生石上(FineUI控件)
D
Docker
GbyAI
GbyAI
宝玉的分享
宝玉的分享
Jina AI
Jina AI
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Vercel News
Vercel News
博客园_首页
Recent Announcements
Recent Announcements
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Hugging Face - Blog
Hugging Face - Blog
腾讯CDC
S
SegmentFault 最新的问题
Microsoft Security Blog
Microsoft Security Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
美团技术团队
V
V2EX
WordPress大学
WordPress大学
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
V
Visual Studio Blog
IT之家
IT之家
Apple Machine Learning Research
Apple Machine Learning Research
T
Tailwind CSS Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com

博客园 - Max Woods

Delphi XE8,C++ Builder XE8,RAD Studio XE8 官方 ISO 文件下载,附激活工具 PC 安装MAC InnoSetup能够实现“安装细节描述”界面吗? 在Unicode版Inno Setup中使用ISSkin Inno Setup使用技巧 用非管理员权限启动主程序,并用管理员权限启动子程序,导致WM_COPYDATA消息发送失败的问题 Inno setup 安装*.inf文件_示例 自动安装驱动程序代码 自动安装驱动程序 windows xp/7命令提示符强制结束指定进程 Delphi 如何让程序获取权限结束指定进程? Windows下如何枚举所有进程 使用MFC提供的Http类下载和上传文件 如何在安装程序中判断操作系统是否是64位 inno INNO setup安装卸载钱判断进程中是否在运行总结 innosetup安装之前关闭进程 INNO安装卸载自动结束进程插件使用 Windows下提升进程权限 《Windows核心编程》学习笔记(9)– 在win7或者vista系统下提升一个进程的运行权限
Inno Setup 卸载前关闭进程或服务 x86 x64
Max Woods · 2014-12-01 · via 博客园 - Max Woods

1、32位程序的PSVince.dll插件方法。

[Setup]

AppName=PSVince

AppVerName=PSVince 1.0

DisableProgramGroupPage=true

DisableStartupPrompt=true

OutputDir=.

OutputBaseFilename=testpsvince

Uninstallable=false

DisableDirPage=true

DefaultDirName={pf}\PSVince

[Files]

Source: psvince.dll; Flags: dontcopy

[Code]

function IsModuleLoaded(modulename: AnsiString ):  Boolean;

external 'IsModuleLoaded@files:psvince.dll stdcall';

function InitializeSetup(): Boolean;

begin

  if(IsModuleLoaded( 'notepad.exe' )) then

    begin

      MsgBox('Running', mbInformation, MB_OK);

      Result := false;

    end

  else

    begin

      MsgBox('Not running', mbInformation, MB_OK);

      Result := true;

    end

end;

2、 PSVince控件在64位系统(Windows 7/Server 2008/Server 2012)下无法检测到进程,使用下面的函数可以解决。

function IsAppRunning(const FileName : string): Boolean;

var

    FSWbemLocator: Variant;

    FWMIService   : Variant;

    FWbemObjectSet: Variant;

begin

    Result := false;

    FSWbemLocator := CreateOleObject('WBEMScripting.SWBEMLocator');

    FWMIService := FSWbemLocator.ConnectServer('', 'root\CIMV2', '', '');

    FWbemObjectSet := FWMIService.ExecQuery(Format('SELECT Name FROM Win32_Process Where Name="%s"',[FileName]));

    Result := (FWbemObjectSet.Count > 0);

    FWbemObjectSet := Unassigned;

    FWMIService := Unassigned;

    FSWbemLocator := Unassigned;

end;