function WinExecAndWait32(FileName: stringVisibility: Boolean): integer
var
zAppName: array[0..512] of char//存如镇扮放应用程序名
StartupInfo: TStartupInfo
ProcessInfo: TProcessInformation
exitCode: Dword
aVisibility: integer
begin
StrPCopy(zAppName, FileName)
FillChar(StartupInfo, Sizeof(StartupInfo), #0)
//给StartupInfo结构体赋值
StartupInfo.cb := Sizeof(StartupInfo)
StartupInfo.dwFlags := STARTF_USESHOWWINDOW
if Visibility then
aVisibility := 1
else
aVisibility := 0
StartupInfo.wShowWindow := aVisibility
//调用CreateProcess 创建进程,执行指定的可执行文件
if not CreateProcess(nil, zAppName, nil, nil, false
, CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS
, nil, nil, StartupInfo, ProcessInfo) then
Result := -1
else
begin
//等待可执行文件退出
WaitforSingleObject(ProcessInfo.hProcess, INFINITE)
//得旅棚到进程终止状态码
GetExitCodeProcess(ProcessInfo.hProcess, exitCode)
result := Exitcode
end
end
这怎能捕获呢,电都没了,程序就在内存全消失了。唯一的就是程序中,定时保存当前程序状态或部分参数,
一旦停了,能知道从哪里再开始。
-------------------------
客户端碰数EXE程序要定时向服务端的数据表中写当前服务器的时间(SQL中御返可以写
服务端时间而不是客户端时间),服务端一旦检笑拆首测客户端写入的时间已与实际时间
严重超时(超周期),表示已登出,要重新登录。
这是最简单的办法, 没有更好的办法。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)