TC官方合作论坛

 找回密码
 立即注册
查看: 373|回复: 5
打印 上一主题 下一主题

[已解决] 关于进程枚举问题

[复制链接]
跳转到指定楼层
楼主
发表于 2014-12-10 12:54:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上加入TC

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
在TC中如何列出目前系统中正在运行的所有进程,使用命令进程.信息()可以吗?看了帮助文档,还是搞不清?
求大神们给出思路
回复

使用道具 举报

沙发
发表于 2014-12-10 14:23:51 | 只看该作者
tc  好像没有 枚举当前的所有进程
你可以通过vbs枚举出来  写到一个配置文件里  然后去读取出来

  1. On Error Resume Next
  2. inipath=getfolder&"\Config.ini"
  3. Set objFSO = CreateObject("Scripting.FileSystemObject")
  4. If objFSO.FileExists(inipath) Then
  5.         objFSO.DeleteFile(inipath)          
  6. End If
  7. Set objFile = objFSO.CreateTextFile(inipath)
  8.         Set objFile =nothing
  9.            Set objTextFile = objFSO.OpenTextFile (inipath, 8, True)
  10.         objTextFile.WriteLine("[Process]")
  11.         objTextFile.Close
  12.         Set objTextFile =nothing
  13. Set objFSO =nothing
  14. Dim Cells(10000,4)
  15. call tt()

  16. Sub tt()
  17.     st = "."
  18.     Set objp = GetObject("winmgmts:\\" & st)
  19.     Set objs = objp.instancesof("Win32_Process")
  20.     i = 1
  21.     For Each ps In objs
  22.         Cells(i, 1) = ps.Name
  23.         Cells(i, 2) = ps.ProcessID
  24.         Cells(i, 3) = ps.commandline
  25.         Call WriteINI(inipath,"Process","Process"&i,Cells(i, 1)&"||"&Cells(i, 2))
  26.         i = i + 1
  27.     Next
  28. Call WriteINI(inipath,"Process","ProcessT","OK")
  29. End Sub
  30. Function getfolder()
  31.     getfolder=left(wscript.scriptfullname,instrrev(wscript.scriptfullname,"\")-1)
  32. end Function


  33. 'VBS读取.INI文件键值
  34. Function ReadINI(FilePath,Bar,PrimaryKey)

  35.         Dim iniFileSys,sReadLine,i,j,ss

  36.         ss=""
  37.         Set iniFileSys=CreateObject("Scripting.FileSystemObject")

  38. If iniFileSys.FileExists(FilePath) Then
  39.         Set INIfile=iniFileSys.opentextfile(FilePath,1)

  40.         do until INIfile.atendofstream

  41.                     sReadLine=INIfile.readline

  42.                 If Trim(sReadLine)="["& Bar &"]" then '找到小节名

  43.                             '查找该小节名下的键名

  44.                         Do until INIfile.atendofstream

  45.                                 sReadLine=INIfile.readline  '读取小节名后的行

  46.                                 j=instr(sReadLine,"=")

  47.                                 If j>0 then   '小节名后的文本行存在
  48.                                         If instr(Left(sReadLine,j),PrimaryKey)>0 then  '从"="左边字符串找到键名

  49.                                                 ss = Trim(Right(sReadLine,len(sReadLine)-instr(sReadLine,"=")))
  50.                                                 Exit do

  51.                                         'Else
  52.                                                 'INIfile.skipline  '没找到键名跳过此行

  53.                                         End If
  54.    
  55.                                 'Else

  56.                                         'INIfile.skipline

  57.                                 End If
  58.                         Loop
  59.                 End If
  60.        
  61. loop

  62.         INIfile.close

  63. end if
  64.         Set iniFileSys=nothing
  65.        
  66. ReadINI = ss

  67. End Function

  68. 'VBS修改.INI文件键值
  69. Function WriteINI(FilePath, Bar, PrimaryKey, Value)
  70.         C**t ForReading=1
  71.         C**t ForWriting=2
  72.         C**t ForAppending=8
  73.         Dim iniFileSys, sRead, i, j, sReadLine, BE, stxt
  74.         Set iniFileSys=CreateObject("Scripting.FileSystemObject")
  75.         Set ForRead=iniFileSys.opentextfile(FilePath,1)
  76.         Dim a()  '文本内容逐行放入数组
  77.         i=0
  78.         j=0
  79.         BE=0
  80.         sRead=ForRead.ReadAll       
  81.         ForRead.close
  82.         If Instr(sRead,"[")=0 then  '说明INI文件没有主键,那么写入主键和键值即可
  83.                 Set ForWrite=iniFileSys.opentextfile(FilePath,2)
  84.                 ForWrite.WriteLine "["& Bar &"]"
  85.                 ForWrite.WriteLine PrimaryKey &"="& Value
  86.         Else
  87.                 Dim sArray               
  88.                 sArray=split(sRead,"[")
  89.                 For i=1 to UBound(sArray)
  90.                         If Left(sArray(i),Len(Bar))=Bar then '小节名存在
  91.                                 If Instr(sArray(i),PrimaryKey)>0 then  '找到键名
  92.                                         Set ForRead=iniFileSys.opentextfile(FilePath,1)
  93.                                         Do Until ForRead.AtEndOfStream
  94.                                                 sReadLine = ForRead.ReadLine
  95.                                                 If Instr(sReadLine,"["& Bar &"]")>0 then
  96.                                                         While Instr(sReadLine,PrimaryKey)<1  '读到键名为止
  97.                                                                 sReadLine = ForRead.ReadLine
  98.                                                         Wend
  99.                                                         stxt =sReadLine
  100.                                                         'valueline=Len(sReadLine)-len(Left(sReadLine,instr(sReadLine,"=")))
  101.                                                         'stxt = Right(sReadLine,valueline)                                                       
  102.                                                         Exit do
  103.                                                 End If
  104.                                         Loop
  105.                                          sArray(i)=Replace(sArray(i), stxt, PrimaryKey &"="& Value) '将键值替换为Value
  106.                                 Else
  107.                                          sArray(i)=Replace(sArray(i),Bar&"]",Bar&"]"& vbcrlf & PrimaryKey &"="& Value)
  108.                                         'sArray(i)=sArray(i)& vbcrlf & PrimaryKey &"="& Value
  109.                                      End If
  110.                                 'msgbox Value
  111.                                      BE=1
  112.                                Else
  113.                                End If
  114.                     Next
  115.                     If BE=1 then 'BE=1说明小节名存在,用数组配置好了键名与键值
  116.                                ForRead.close
  117.                                Set ForWrite=iniFileSys.opentextfile(FilePath,2) '覆盖原有内容重新写入
  118.                                ForWrite.Write ""
  119.                                ForWrite.close
  120.                                Set ForWrite=iniFileSys.opentextfile(FilePath,8) '清空并追加写入内容
  121.                                i=0
  122.                                For i=1 to UBound(sArray)
  123.                                        ForWrite.Write "["& sArray(i)
  124.                                Next
  125.                                ForWrite.close
  126.                                Set iniFileSys=nothing
  127.                                Exit Function
  128.                     End If
  129.                     ForRead.close   '写入小节名和键值
  130.                     Set ForWrite=iniFileSys.opentextfile(FilePath,8)
  131.                     ForWrite.WriteLine "["& Bar &"]"
  132.                     ForWrite.WriteLine PrimaryKey &"="& Value
  133.             End If
  134.         ForWrite.close
  135.         Set iniFileSys=nothing
  136. End Function
复制代码



回复 支持 反对

使用道具 举报

板凳
发表于 2014-12-10 16:15:06 | 只看该作者
VB的代码量真TM的恐怖...如此简单的功能,,居然168行代码
回复 支持 反对

使用道具 举报

地板
发表于 2014-12-10 17:57:20 | 只看该作者
TC不支持结构体 不然就可以使用dllcall来实现
上面哪个写成com插件,也不错可以实现,到时候直接读取INI文件就可以了  
回复 支持 反对

使用道具 举报

5#
 楼主| 发表于 2014-12-10 18:11:17 | 只看该作者
a837198 发表于 2014-12-10 14:23
tc  好像没有 枚举当前的所有进程
你可以通过vbs枚举出来  写到一个配置文件里  然后去读取出来

多谢大神们的帮助,真是太热情了;祝TC家庭红红火火
回复 支持 反对

使用道具 举报

6#
发表于 2014-12-10 19:50:25 | 只看该作者
唯一小哥 发表于 2014-12-10 16:15
VB的代码量真TM的恐怖...如此简单的功能,,居然168行代码

VBS  主要是读写配置程序的书写比较多 而且基本是固定的     其他的根本不多  
回复 支持 反对

使用道具 举报

*滑动验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /2 下一条

关闭

小黑屋|TC官方合作论坛 (苏ICP备18043773号

GMT+8, 2025-9-23 23:35 , Processed in 0.148090 second(s), 23 queries .

Powered by 海安天坑软件科技有限公司

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表