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

推荐订阅源

爱范儿
爱范儿
量子位
大猫的无限游戏
大猫的无限游戏
小众软件
小众软件
J
Java Code Geeks
B
Blog
V
V2EX
博客园 - 三生石上(FineUI控件)
Blog — PlanetScale
Blog — PlanetScale
aimingoo的专栏
aimingoo的专栏
Y
Y Combinator Blog
F
Fortinet All Blogs
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
The Cloudflare Blog
A
About on SuperTechFans
D
DataBreaches.Net
阮一峰的网络日志
阮一峰的网络日志
博客园 - Franky
H
Help Net Security
宝玉的分享
宝玉的分享
Martin Fowler
Martin Fowler
酷 壳 – CoolShell
酷 壳 – CoolShell
MongoDB | Blog
MongoDB | Blog
L
LangChain Blog

博客园 - 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;