Delphi与进程、窗口句柄、文件属性、程序运行状态
2011-10-26 20:54
411 查看
uses TLHelp32,PsAPI;
Delphi显示进程列表
Delphi杀死某进程
Delphi取得某进程EXE路径:
Delphi取得窗口列表
Delphi杀死窗口进程
Delphi取得窗口进程路径
Delphi获取文件属性
Delphi判断程序是否在运行
Delphi显示进程列表
procedure TForm1.Button2Click(Sender: TObject); var lppe: TProcessEntry32; found : boolean; Hand : THandle; P:DWORD; s:string; begin ListBox1.Items.Clear ; Hand := CreateToolhelp32Snapshot(TH32CS_SNAPALL,0); found := Process32First(Hand,lppe); while found do begin s := StrPas(lppe.szExeFile); if lppe.th32ProcessID>0 then p := lppe.th32ProcessID else p := 0; ListBox1.Items.AddObject(s,pointer(p));//列出所有进程。 found := Process32Next(Hand,lppe); end; end;
Delphi杀死某进程
procedure TForm1.Button3Click(Sender: TObject); var lppe: TProcessEntry32; found : boolean; Hand : THandle; P:DWORD; sExeFile,sSelect:string; killed:boolean; begin p :=DWORD(ListBox1.Items.Objects[ListBox1.itemindex]); if P<>0 then begin killed := TerminateProcess(OpenProcess(PROCESS_TERMINATE,False,P),$FFFFFFFF); if not killed then messagebox(self.handle,pchar(sExeFile+'无法杀死!'),'提示',MB_OK or MB_ICONWARNING) else ListBox1.Items.Delete(ListBox1.ItemIndex); end; end;
Delphi取得某进程EXE路径:
procedure TForm1.Button8Click(Sender: TObject); //uses PSAPI; var h:THandle; fileName:string; iLen:integer; hMod:HMODULE;cbNeeded,p:DWORD; begin p :=DWORD(ListBox1.Items.Objects[ListBox1.itemindex]); h := OpenProcess(PROCESS_ALL_ACCESS, false, p); //p 为 进程ID if h > 0 then begin if EnumProcessModules( h, @hMod, sizeof(hMod), cbNeeded) then begin SetLength(fileName, MAX_PATH); iLen := GetModuleFileNameEx(h, hMod, PCHAR(fileName), MAX_PATH); if iLen <> 0 then begin SetLength(fileName, StrLen(PCHAR(fileName))); ShowMessage(fileName); end; end; CloseHandle(h); end; end;
Delphi取得窗口列表
begin ListBox1.Items.Clear ; EnumWindows(@EnumWindowsProc, 0); end;
Delphi杀死窗口进程
procedure TForm1.Button6Click(Sender: TObject); var H:THandle; P:DWORD; s:string; killed:boolean; begin s := ListBox1.Items[ListBox1.ItemIndex]; H:=FindWindow(nil,pchar(s)); if H<>0 then begin GetWindowThreadProcessId(H,@P); if P<>0 then killed:=TerminateProcess(OpenProcess(PROCESS_TERMINATE,False,P),$FFFFFFFF); if not killed then messagebox(self.handle,pchar(s+'无法杀死!'),'提示',MB_OK or MB_ICONWARNING) else ListBox1.Items.Delete(ListBox1.ItemIndex); end; end;
Delphi取得窗口进程路径
procedure TForm1.Button9Click(Sender: TObject); var H:THandle; P,cbNeeded: DWORD; s,fileName:string; iLen:integer; hMod:HMODULE; begin s := ListBox1.Items[ListBox1.ItemIndex]; H:=FindWindow(nil,pchar(s)); if H<>0 then begin GetWindowThreadProcessId(H,@P); if P<>0 then begin h := OpenProcess(PROCESS_ALL_ACCESS, false, p); //p 为 进程ID if h > 0 then begin if EnumProcessModules( h, @hMod, sizeof(hMod), cbNeeded) then begin SetLength(fileName, MAX_PATH); iLen := GetModuleFileNameEx(h, hMod, PCHAR(fileName), MAX_PATH); if iLen <> 0 then begin SetLength(fileName, StrLen(PCHAR(fileName))); ShowMessage(fileName); end; end; CloseHandle(h); end; end; end; end;
Delphi获取文件属性
procedure TForm1.Button1Click(Sender: TObject); var SR: TSearchRec; V1, V2, V3, V4: integer ; const dtFmt:string = 'YYYY-MM-DD HH:NN:SS'; begin // ============== 方法一 ==================== // if FindFirst(sFileName, faAnyFile, SR) = 0 then begin Edit1.Text := intToStr(SR.Attr); //文件属性 Edit2.Text := intToStr(SR.Size); //文件大小 Edit3.Text := FormatDateTime(dtFmt,CovFileDate(SR.FindData.ftCreationTime)); //创建时间 Edit4.Text := FormatDateTime(dtFmt,CovFileDate(SR.FindData.ftLastWriteTime)); //最后修改时间 Edit5.Text := FormatDateTime(dtFmt,CovFileDate(SR.FindData.ftLastAccessTime)); //最后访问时间 if SR.Attr and faHidden <> 0 then FileSetAttr(sFileName, SR.Attr-faHidden); FindClose(SR); end; if GetFileVersion(sFileName,V1, V2, V3, V4) then Edit7.Text := intToStr(v1)+'.'+intToStr(v2)+'.'+intToStr(v3)+'.'+intToStr(v4); // ============== 方法二 ==================== // { var Attrs: Word; f: file of Byte; // 文件大小 必须要 定义为" file of byte" ,这样才能取出 bytes size: Longint; //文件属性 Attrs := FileGetAttr(sFileName); Edit1.Text := intToStr(Attrs); //文件大小 AssignFile(f, OpenDialog1.FileName); Reset(f); try AssignFile(f, sFileName); Reset(f); size := FileSize(f); Edit2.Text := intToStr(size); finally CloseFile(f); end; } end;
Delphi判断程序是否在运行
procedure TForm1.Button5Click(Sender: TObject); var PrevInstHandle:Thandle; AppTitle:pchar; begin AppTitle := pchar('test'); PrevInstHandle := FindWindow(nil, AppTitle); if PrevInstHandle <> 0 then begin if IsIconic(PrevInstHandle) then ShowWindow(PrevInstHandle, SW_RESTORE) else BringWindowToTop(PrevInstHandle); SetForegroundWindow(PrevInstHandle); end; end;
相关文章推荐
- DELPHI中进程、窗口句柄、文件属性、程序运行状态
- Delphi编程获取系统当前进程、窗口句柄、文件属性以及程序运行状态(8种应用)
- 进程、窗口句柄、文件属性、程序运行状态
- 进程、窗口句柄、文件属性、程序运行状态
- Delphi编程获取系统当前进程、窗口句柄、文件属性以(转)
- 根据窗口句柄判断程序运行状态
- 让批处理文件(.bat)程序无窗口(隐藏/静默)运行
- 无进程无启动项无硬盘文件运行程序的研究
- Java 实现程序运行状态监控 之我的思路(守护进程)
- Delphi获取其它进程窗口句柄的3种方法
- Delphi CreateProcess WIN32API函数CreateProcess用来创建一个新的进程和它的主线程,这个新进程运行指定的可执行文件
- Dos(cmd)窗口下运行 JAVA程序(文件复制)
- 用linux命令和程序实际测试一下单进程能打开的最大的句柄数(也可以说是文件数)------并不一定是1024/2048哈
- 查看文件内容- 删除某个运行程序的所有进程-nohup后台执行程序
- 自己动手实现一个守护进程,当控制台窗口关闭时还可以在后台运行。每隔一秒钟向my.log文件中插入一条记录
- Delphi获取其它进程窗口句柄的3种方法
- 监控进程(二进制程序)运行状态的C语言实现与脚本实现
- HDFS设计思路,HDFS使用,查看集群状态,HDFS,HDFS上传文件,HDFS下载文件,yarn web管理界面信息查看,运行一个mapreduce程序,mapreduce的demo
- 解决方案:cmd窗口pip显示不是内部或外部命令,也不是可运行的程序或批处理文件
- Delphi 通得进程ID获取主窗口句柄