TC官方合作论坛

 找回密码
 立即注册
查看: 2381|回复: 5

[功能] VBS枚举当前所有进程 并保存到配置文件中

[复制链接]
发表于 2014-12-10 14:27:44 | 显示全部楼层 |阅读模式

马上加入TC

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

x
本帖最后由 a837198 于 2014-12-10 14:28 编辑

vbs的 不是tc的哦

可以运行vbs   然后就循环读vbs生成的 配置文件  如果读到最后一个是 ok 了  那么说明vbs列举完成   tc去吧这些信息读取出来 即可


  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. 'VBS获取自身所在文件夹
  31. Function getfolder()
  32.     getfolder=left(wscript.scriptfullname,instrrev(wscript.scriptfullname,"")-1)
  33. end Function


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

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

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

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

  41.         do until INIfile.atendofstream

  42.                     sReadLine=INIfile.readline

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

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

  45.                         Do until INIfile.atendofstream

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

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

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

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

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

  54.                                         End If
  55.    
  56.                                 'Else

  57.                                         'INIfile.skipline

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

  63.         INIfile.close

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

  68. End Function

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



回复

使用道具 举报

发表于 2014-12-10 16:12:08 | 显示全部楼层
TC怎么枚举,遍历 内核对象?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-12-10 19:52:27 | 显示全部楼层
唯一小哥 发表于 2014-12-10 16:12
TC怎么枚举,遍历 内核对象?

你可以试试 把这个做成dll实现  
回复 支持 反对

使用道具 举报

发表于 2014-12-10 20:13:52 | 显示全部楼层
a837198 发表于 2014-12-10 19:52
你可以试试 把这个做成dll实现

可是VB 不支持标准插件,,,只能生成COM插件...调用的时候会被人骂死的
回复 支持 反对

使用道具 举报

发表于 2014-12-11 08:44:36 | 显示全部楼层
嗯 不错 直接在TC里使用ScriptControl对象调用VBScript代码
回复 支持 反对

使用道具 举报

发表于 2014-12-11 09:05:16 | 显示全部楼层
唯一小哥 发表于 2014-12-10 20:13
可是VB 不支持标准插件,,,只能生成COM插件...调用的时候会被人骂死的

我也是醉了  请百度后再说 支不支持 ..  
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条

关闭

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

GMT+8, 2024-5-22 04:01 , Processed in 0.048118 second(s), 22 queries .

Powered by 海安简单软件服务部

© 2008-2019 版权所有 保留所有权利

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