大富翁里抄的代码,帮了我大忙~
由于软件更新模块进行文件覆盖的时候要判断程序是否正在运行,想过用FindWindow来做,但是效果不怎么好,后来找了下资料看到这个代码不错,已经加到了程序里面,差不多就达到那个目的了哈(先看程序运行没有,如果运行再把已运行的程序进程给Kill掉),昨天因为时间关系没有写完,相信今天就可以拿给他们测试..
uses TLHelp32;
//ProcessName: 程序或进程名(注意不带路径);返回值: 程序是否运行。
function ProcessRun(const ProcessName: string): Boolean;
var
hProcess: LongWord;
pInfo: TProcessEntry32;
begin
hProcess := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
pInfo.dwSize := SizeOf(TProcessEntry32);
Result := Process32First(hProcess, pInfo);
while Result do
begin
if ExtractFileName(pInfo.szExeFile) <> ProcessName then
Result := Process32Next(hProcess, pInfo)
else Break;
end;
if not Result then
//启动程序(这个你自己写吧,我也不知道你的那个程序在什么地方)
else MessageBox(0, '程序已经运行!', '提示', MB_ICONINFORMATION or MB_OK);
end;
代码是Delphi的哈,C#还在学习中 ....
uses TLHelp32;
//ProcessName: 程序或进程名(注意不带路径);返回值: 程序是否运行。
function ProcessRun(const ProcessName: string): Boolean;
var
hProcess: LongWord;
pInfo: TProcessEntry32;
begin
hProcess := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
pInfo.dwSize := SizeOf(TProcessEntry32);
Result := Process32First(hProcess, pInfo);
while Result do
begin
if ExtractFileName(pInfo.szExeFile) <> ProcessName then
Result := Process32Next(hProcess, pInfo)
else Break;
end;
if not Result then
//启动程序(这个你自己写吧,我也不知道你的那个程序在什么地方)
else MessageBox(0, '程序已经运行!', '提示', MB_ICONINFORMATION or MB_OK);
end;
浙公网安备 33010602011771号