判断程序是否在运行:

判断程序是否在运行:
procedure TForm1.Button9Click(Sender: TObject);
var
PrevInstHandle:Thandle;
AppTitle:pchar;
begin
AppTitle := pchar(edit2.Text);
PrevInstHandle := FindWindow(nil, AppTitle);
   if PrevInstHandle <> 0 then begin
     if IsIconic(PrevInstHandle) then
      ShowWindow(PrevInstHandle, SW_RESTORE)
     else
      BringWindowToTop(PrevInstHandle);
     SetForegroundWindow(PrevInstHandle);
   end;

end;

{
CreateToolhelp32Snapshot函数为指定的进程、进程使用的堆[HEAP]、模块[MODULE]、线程[THREAD])建立一个快照[snapshot]。

HANDLE WINAPI CreateToolhelp32Snapshot(
DWORD dwFlags,
DWORD th32ProcessID
);

参数:
dwFlags
[输入]指定快照中包含的系统内容,这个参数能够使用下列数值(变量)中的一个。

     TH32CS_INHERIT - 声明快照句柄是可继承的。
     TH32CS_SNAPALL - 在快照中包含系统中所有的进程和线程。
     TH32CS_SNAPHEAPLIST - 在快照中包含在th32ProcessID中指定的进程的所有的堆。
     TH32CS_SNAPMODULE - 在快照中包含在th32ProcessID中指定的进程的所有的模块。
     TH32CS_SNAPPROCESS - 在快照中包含系统中所有的进程。
     TH32CS_SNAPTHREAD - 在快照中包含系统中所有的线程。

th32ProcessID
[输入]指定将要快照的进程ID。如果该参数为0表示快照当前进程。该参数只有在设置了TH32CS_SNAPHEAPLIST或TH32CS_SNAPMOUDLE后才有效,在其他情况下该参数被忽略,所有的进程都会被快照
}

{
//声明:

返回进程的句柄
OpenProcess(
dwDesiredAccess: DWORD; 访问选项
bInheritHandle: BOOL;    能否继承; True 表示能用 CreateProcess 继承句柄创建新进程
dwProcessId: DWORD       指定进程 ID
): THandle;                成功会返回进程句柄; 失败返回 0

//dwDesiredAccess 可选值:
PROCESS_TERMINATE         = $0001; 允许 TerminateProcess 使用进程句柄来关闭进程
PROCESS_CREATE_THREAD     = $0002; 允许 CreateRemoteThread 使用进程句柄来创建线程
PROCESS_VM_OPERATION      = $0008; 允许 VirtualProtectEx 使用进程句柄来改变进程的虚拟内存
PROCESS_VM_READ           = $0010; 允许 ReadProcessMemory 使用进程句柄从进程的虚拟内存中读取数据
PROCESS_VM_WRITE          = $0020; 允许 WriteProcessMemory 使用进程句柄向进程的虚拟内存中写入数据
PROCESS_DUP_HANDLE        = $0040; 允许 DuplicateHandle 把进程句柄当作源句柄或目标句柄进行复制
PROCESS_CREATE_PROCESS    = $0080; 默认值
PROCESS_SET_QUOTA         = $0100; 允许 SetProcessWorkingSetSize 使用进程句柄来来设置虚拟内存的上限值
PROCESS_SET_INFORMATION   = $0200; 允许 SetPriorityClass 使用进程句柄来设置进程优先级
PROCESS_QUERY_INFORMATION = $0400; 允许 GetExitCodeProcess 或 GetPriorityClass 通过进程句柄读取进程信息
SYNCHRONIZE               = $00100000; 允许任何等待的函数使用进程句柄
PROCESS_ALL_ACCESS = (STANDARD_RIGHTS_REQUIRED or SYNCHRONIZE or $FFF); 允许所有权限
--------------------------------------------------------------------------------

获取指定进程的退出码
GetExitCodeProcess(
hProcess: THandle;    进程句柄
var lpExitCode: DWORD 接收退出码
): BOOL;
--------------------------------------------------------------------------------

强制结束(其他)进程
TerminateProcess(
hProcess: THandle; 进程句柄
uExitCode: UINT    退出码
): BOOL;

//提示: 关闭其他程序一般应该是向其主窗口发送 WM_CLOSE 消息, 不行再用这个, 因为它不能关闭其关联的 DLL.


}

{
GetWindow
函数功能:该函数返回与指定窗口有特定关系(如Z序或所有者)的窗口句柄。
函数原型:HWND GetWindow(HWND hWnd,UNIT nCmd);
参数:
hWnd:窗口句柄。要获得的窗口句柄是依据nCmd参数值相对于这个窗口的句柄。
nCmd:说明指定窗口与要获得句柄的窗口之间的关系。该参数值可以是下列之一:
GW_CHILD:如果指定窗口是父窗口,则获得的是在Z序顶端的子窗口的句柄,否则为NULL。函数仅检查指定父窗口的子窗口,不检查继承窗口。
GW_ENABLEDPOUP:(WindowsNT 5.0)返回的句柄标识了属于指定窗口的处于使能状态弹出式窗口(检索使用第一个由GW_HWNDNEXT 查找到的满足前述条件的窗口);如果无使能窗口,则获得的句柄与指定窗口相同。
GW_HWNDFIRST:返回的句柄标识了在Z序最高端的相同类型的窗口。如果指定窗口是最高端窗口,则该句柄标识了在Z序最高端的最高端窗口;如果指定窗口是顶层窗口,则该句柄标识了在z序最高端的顶层窗口:如果指定窗口是子窗口,则句柄标识了在Z序最高端的同属窗口。
GW_HWNDLAST:返回的句柄标识了在z序最低端的相同类型的窗口。如果指定窗口是最高端窗口,则该柄标识了在z序最低端的最高端窗口:如果指定窗口是顶层窗口,则该句柄标识了在z序最低端的顶层窗口;如果指定窗口是子窗口,则句柄标识了在Z序最低端的同属窗口。
GW_HWNDNEXT:返回的句柄标识了在Z序中指定窗口下的相同类型的窗口。如果指定窗口是最高端窗口,则该句柄标识了在指定窗口下的最高端窗口:如果指定窗口是顶层窗口,则该句柄标识了在指定窗口下的顶层窗口;如果指定窗口是子窗口,则句柄标识了在指定窗口下的同属窗口。
GW HWNDPREV:返回的句柄标识了在Z序中指定窗口上的相同类型的窗口。如果指定窗口是最高端窗口,则该句柄标识了在指定窗口上的最高端窗口;如果指定窗口是顶层窗口,则该句柄标识了在指定窗口上的顶层窗口;如果指定窗口是子窗口,则句柄标识了在指定窗口上的同属窗口。
GW_OWNER:返回的句柄标识了指定窗口的所有者窗口(如果存在)。
返回值:如果函数成功,返回值为窗口句柄;如果与指定窗口有特定关系的窗口不存在,则返回值为NULL。
若想获得更多错误信息,请调用GetLastError函数。
备注:在循环体中调用函数EnumChildWindow比调用GetWindow函数可靠。调用GetWindow函数实现该任务的应用程序可能会陷入死循环或退回一个已被销毁的窗口句柄。
速查:Windows NT:3.1以上版本;Windows:95以上版本;Windows CE:1.0以上版本;头文件:winuser.h;库文件:user32.lib。
}

{
函数功能:该函数将指定的窗口设置到Z序的顶部。如果窗口为顶层窗口,则该窗口被激活;如果窗口为子窗口,则相应的顶级父窗口被激活。

    函数原型:B00L BringWindowToTop(HWND,hWnd);

    参数:

    hWnd: 设置到Z序的顶部的窗口句柄。

    返回值:如果函数成功,返回值为非零;如果函数失败,返回值为零。若想获得更多错误信息,请调用GetLastError函数。

    备注:使用BringWindowToTop函数显示出被其他窗口部分或全部遮盖的窗口。

    调用这个函数类似于调用SetWindowPos函数来改变窗口在Z序中的位置,但是BringWindowToTop函数并不能使一个窗口成为顶层窗口。

    如果应用程序不在前台中而想设置在前台中,可以调用SetForegroundWindow函数。

}

相关文章
相关标签/搜索