问题变了,怎么获得线程的句柄,急急急 (300分)

  • 主题发起人 主题发起人 ,,,,,,
  • 开始时间 开始时间
加一个小问题:怎么删除文本文件的一行
 
该页无法显
 
该页无法显
 
我的服务通过运行/install安装完成,怎么让他自己启动,而不用人工去触发,谢谢大家[:D]
 
Wise Installation
 
新问题从这儿开始了,首先要谢谢上边各位,相信这个新问题很快会解决的,到时一块犒劳大家
 
BOOL CreateProcess(
LPCTSTR lpApplicationName, // pointer to name of executable module
LPTSTR lpCommandLine, // pointer to command line string
LPSECURITY_ATTRIBUTES lpProcessAttributes, // pointer to process security attributes
LPSECURITY_ATTRIBUTES lpThreadAttributes, // pointer to thread security attributes
BOOL bInheritHandles, // handle inheritance flag
DWORD dwCreationFlags, // creation flags
LPVOID lpEnvironment, // pointer to new environment block
LPCTSTR lpCurrentDirectory, // pointer to current directory name
LPSTARTUPINFO lpStartupInfo, // pointer to STARTUPINFO
LPPROCESS_INFORMATION lpProcessInformation // pointer to PROCESS_INFORMATION
);
里面最后一个参数里面不是有个hThread成员吗?
就是它了吧
再说你原来的问题
TerminateThread(
HANDLE hThread, // handle to the thread
DWORD dwExitCode // exit code for the thread
里面的HANDLE是怎么得来的呢?
 
我知道怎么终止了,就用teminiatethread,
但是终止后,再关闭主程序,在win2000的进程里边还可以看到该进程,怎么把它干掉呢[:(][:D][:)]
 
你的终止程序不对吧,怎么会还有呢?
我是这样的,终止后没有了:
var
piProcInfoGPS:PROCESS_INFORMATION;
///
procedure TForm1.KillThread;
var
dwExitCode:DWORD;
fprocessExit:boolean;
begin
dwExitCode:=0;
fprocessExit:=false;
fprocessExit:=GetExitCodeProcess
(piProcInfoGPS.hProcess,dwExitCode);
if (not fprocessExit or (dwExitCode = STILL_ACTIVE)) then
begin
TerminateThread(piProcInfoGPS.hThread,dwExitCode);
TerminateProcess(piProcInfoGPS.hProcess,dwExitCode);
CloseHandle(piProcInfoGPS.hThread);
CloseHandle(piProcInfoGPS.hProcess);
end;
end;
 
不是很明白
我是这样做的:
在主程序的某个子窗口上,我创建了一个线程,此线程会运行很长时间
var
mythread:tthread;
mythread:=exec_thread.Create();//exec_thread为已经定义好的线程类
在线程运行过程中,我想关闭这个子窗口,关闭之前肯定要强行终止这个线程吧,我就用TerminateThread(mythread.Handle, 0);
但是子窗口关闭后,我关闭了主程序,在WIN2000的任务管理器中该主程序对应的进程还存在,而且一会蹦出一堆错误来,我想那个线程还是没有彻底停止或者释放的原因吧,我该怎么停止这个线程呢[:(][:)][:D][8D]
 
var
mythread:texec_thread;//这里的类应该为自己定义的类名吧
//
mythread:=exec_thread.Create()
创建进程时为什么不加上 FreeOnTerminate := True;
然后退出时用 mythread.Terminate;就可以了
 
hongxing_dl,我想强行终止线程,你说的两句我以前都加上了,强行终止时用不上[:(]
 
var
mythread:tthread;
mythread:=exec_thread.Create();
TerminateThread(mythread.Handle, 0);
 
多人接受答案了。
 
后退
顶部