我用ThreadMgrPool管理 idTCPServr的线程,我记录了其中的一个AThread的ThreadID,保存到了变量a中。
请问,不用循环,我如何通过变量a,立刻找出此线程。主要是考虑到服务器繁忙时的效率问题
请问,不用循环,我如何通过变量a,立刻找出此线程。主要是考虑到服务器繁忙时的效率问题
解决方案 »
- 如何解决DBGrid中文输入法的异常
- 辞职了,大家来庆祝一下!
- vc做的dll,在delphi中怎么定义(sb.dll)^_^在线绐分
- 一个难题,100分大放血!!如何把DEV控件中的cxGrid中多个level的数据输出到同一个execl文件问题?
- 如何将快速报表中的预揽结果传递到EXCEL文件中?
- 请问COM和ACTIVEX的区别,拜托给点意见吧。。。
- DxDbGrid到底是什么啊,找了一下午没搞明白,郁闷,谁能最详细的告诉我,我马上给他100分.还有在哪下载?
- 动态绑定数据库的问题,我还是没搞懂,请高手指教。
- 请教:如何才能在QUICKREPORT中用CANVAS直接画图?
- 请大家帮忙看看FastMM报的内存漏洞
- 如何用ADO动态连接access数据库(给代码)
- textout 两行输出问题
//还有别忘了在 uses 部分加上TLHelp32单元
function GetAppName(const AWindowHandle: THandle): string;
var
PI: DWORD;
ContinueLoop:BOOL;
SnapshotHandle:THandle;
ProcessEntry32:TProcessEntry32;
begin
Result := '';
GetWindowThreadProcessId(AWindowHandle, @PI); SnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
ProcessEntry32.dwSize := Sizeof(ProcessEntry32);
ContinueLoop := Process32First(SnapshotHandle,ProcessEntry32);
while ContinueLoop do
begin
if ProcessEntry32.th32ProcessID = PI then
begin
Result := ProcessEntry32.szExeFile;
break;
end;
ContinueLoop:=Process32Next(SnapshotHandle, ProcessEntry32);
end;
CloseHandle(SnapshotHandle);
end; 用以上的方法找到窗口HANDLE和PROCESSID后,用GETWINDOWTHREADPROCESS这个API函数可以得到创建窗口的PROCESSID,再和PROCESSID比较一下,可以找到!