vc如何判断一个程式是否在执行?

vc如何判断一个程式是否在执行?,第1张

vc如何判断一个程式是否在执行?

InstanceName 自定义用于表示应用程式的唯一标识名

hWndClassName 窗体的注册类名 CreateWindow 函式中指定

hWndWinName 窗体名 CreateWindow 函式中指定

mOperate *** 作判断变数

BOOL OperateMutex( LPCWSTR InstanceName,LPCWSTR hWndClassName, LPCWSTR hWndWinName, BOOL mOperate)

{

HANDLE hMutex

hMutex = OpenMutex(MUTEX_ALL_ACCESS,FALSE,InstanceName)

switch(mOperate)

{

case APP_OPEN: OPEN = 启动程式

if(hMutex==NULL)

{

hMutex = CreateMutex(NULL,FALSE,InstanceName)

if( (hMutex == NULL) || (GetLastError()==ERROR_ALREADY_EXISTS))

{

ActiveOldApp(hWndClassName,hWndWinName)

return FALSE程式已经启动或有错误发生

}

else

{

return TRUE

} 第一次启动程式

}

else

{

ActiveOldApp(hWndClassName,hWndWinName)

return FALSE程式已经启动

}

break

case APP_CLOSE: CLOSE = 退出程式

ReleaseMutex(hMutex)

CloseHandle(hMutex)

break

}

return TRUE

}

启用已启动的同一个程式

引数:hWndClassName 窗体的注册类名 CreateWindow 函式中指定

hWndWinName 窗体名 CreateWindow 函式中指定

BOOL ActiveOldApp( LPCWSTR hWndClassName, LPCWSTR hWndWinName)

{

HWND hWndApp,hWndPopup

if (hWndApp = FindWindow(hWndClassName,hWndWinName))

{

PutLog( "已经启动的例项的视窗控制代码是%ld", hWndApp )

SendMessage( hWndApp, WM_ACTIVE, 0, 0 )

hWndPopup = GetLastActivePopup(hWndApp)

PutLog( "GetLastActivePopup得到的视窗控制代码是%ld", hWndPopup )

return TRUE

}

else

{

return FALSE

}

}

DELPHI如何判断一个程式是否正在执行

查询程序,假设档名为:a.exe,你可以查询它,如找到,说明在运行了

网上很多查询程序的资料

如何判断是否一个程式在执行

这个问题比较普遍,有多种不同的解决方法。 比较常用的,就是在B程式中新增Log档案机制,随时记录B程式的执行状态,或者只记录B程式捕捉到的异常,A程式需要检视B程式执行状态的时候就读取B的log档案,进行分析。

如何判断某个程式是否在执行

这个问题比较普遍,有多种不同的解决方法。 比较常用的,

就是在B程式中新增Log档案机制,随时记录B程式的执行状态,

或者只记录B程式捕捉到的异常

VB中 如何判断程式是否在执行??

Private Declare Function OpenProcess Lib "kernel32.dll" (ByVal dwDesiredAess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long

Private Declare Function GetExitCodeProcess Lib "kernel32.dll" (ByVal hProcess As Long, ByRef lpExitCode As Long) As Long

Private Declare Sub Sleep Lib "kernel32.dll" (ByVal dwMilliseconds As Long)

Private Const PROCESS_QUERY_INFORMATION As Long = (&H400)

Private Const STILL_ACTIVE As Long = &H103

Public hShell As Long, hProc As Long, lExit As Long

Private Sub Command1_Click()

hProc = OpenProcess(PROCESS_QUERY_INFORMATION, False, hShell)

GetExitCodeProcess hProc, lExit

If lExit = STILL_ACTIVE Then

MsgBox "程式正在执行"

Else

hShell = Shell("cmd.exe")

End If

End Sub

VC如何判断一个程式是否首次执行或一个程式的按钮是否首次点选?

一般通过登录档实现吧,不过也可以通过配置档案实现。现在教你通过登录档实现:

如果一个程式从未被执行过,那么它是不可能对登录档有所 *** 作的,所以我们可以在程式执行是就检测一次登录档中某个值是否存在,如果不存在就给出提示 *** 作。当然一旦程式被执行,首先是要检测那个值是否存在,而接着就必须要向某个你指定的位置写值,不然每次都检测到程式是第一次执行,显然是不合理的。至于按钮是否第一次被按下,也是同理的。

你可以用:

RegOpenKeyEx()开启登录档(对登录档 *** 作之前必须先开启它)

RegQueryValueEx()检测登录档中指定的值是否存在

RegSetValueEx()对指定位置写值

RegDeleteKey()删除登录档的值或项

这些函式上百度百科看它们的用法,很详细!

如何判断一个程式是否已执行,不要用FINDWINDOW

我用win系统变数解决program Project1uses Forms, Windows, Dialogs, Unit1 in 'Unit1.pas' {Form1}{$R *.res}var vATOM: ATOMconst ATOMID = 'Zswang方法'begin if GlobalFindAtom(ATOMID) >0 then begin ShowMessage(ATOMID)ExitendvATOM := GlobalAddAtom(ATOMID)try Application.InitializeApplication.CreateForm(TForm1, Form1)Application.Runfinally GlobalDeleteAtom(vATOM)endend. 检视原帖>>

cmd如何判断程式是否执行?

cmd是 mand的缩写.即 命令提示符(CMD),是在OS / 2 , Windows CE与Windows NT平台为基础的作业系统(包括Windows 2000和XP中, Vista中,和Server 2003 )下的“MS-DOS 方式”。中文版Windows XP 中的命令提示符进一步提高了与DOS 下 *** 作命令的相容性,使用者可以在命令提示符直接输入中文呼叫档案。

asklist >a.txt<回车>type a.txt | find /i "%程序名%" &&goto b<回车>第一句是将当前程序储存到档案,第二句是检测程序是否执行,是否跳转到B处执行。

tasklist /nh>d:\1.txt   find /i "QQ.exe" d:\1.txt if ERRORLEVEL 1 ("C:\sofare\Tencent\qq\QQQ.exe" ) else (exit)      意思是检测"QQ.EXE"有没有在程序里,大家都知道QQ开启后进程名是"QQ.EXE"如果有在程序里则执行"EXIT"退出,如果没有在程序里,说明QQ没有开启,则执行QQ程式"C:\sofare\Tencent\qq\QQQ.exe"       第二种写法     tasklist /nh|find /i "QQ.exe" if ERRORLEVEL 1 ("C:\sofare\Tencent\qq\QQQ.exe") else (exit)

可以借助系统命令来检测。

windows 用 tasklist 命令,linux 用 ps 命令。

c 使用 popen 函数来解析返回的字符串,一旦发现 xx 进程运行则用 system 函数启动另一个程序。

如果需要持续检测,用 while 加 sleep 轮询。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/8164951.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存