qq8955333 发表于 2009-10-26 08:53:20

请帮忙修改一个进程获取的代码

#NoTrayIcon
#include <File.au3>
Global $File = 'c:\' & @ComputerName & '.txt'
_Proc2File($File)
Func _Proc2File($File)
      _FileCreate($File)
      Local $aProcList = ProcessList()
      For $i = 1 To $aProcList
                If $aProcList[$i] <> @ScriptName Then
                        FileWriteLine($File, $aProcList[$i])
                EndIf
      Next
EndFunc   ;==>_Proc2File



这段代码是获取本机的进程并存放到指定的目录下并且以机器名命名存放文档的代码,有一个缺点,就是每次存放都会刷新一次记录文档而不是更新,有没有办法让他像批处理的“>>”命令一样,添加新的进程信息到文档呢?

如果可以的话我希望更深的改造,我希望可以判断文档中是否已经存在该进程,如果存在则不添加,也就是说不重复添加进程
比方说进程中已经有一个QQ.exe进程了,那么则忽略新获取到的qq.exe添加其他的进程

也可以在代码中添加某一条命令,或者是加一个配置文件,在配置文件中添加不被保存到文档的进程名

我是菜鸟一个,有人能帮帮我吗?不胜感激。

破帽遮颜 发表于 2009-10-26 11:28:36

FileWriteLine($File, $aProcList[$i])

这句改用

$file = FileOpen("test.txt", 1)
FileWrite($file, "Line2")
FileClose($file)

qq8955333 发表于 2009-10-26 11:32:35

濂界殑锛岄潪甯告劅璋?紝鎴戝疄楠屼竴涓嬪晩

qq8955333 发表于 2009-10-26 11:36:22

本帖最后由 qq8955333 于 2009-10-26 11:38 编辑

我问一下,改了以后运行并没有获取进程啊,只是在程序目录下生成了一个"test.txt",指定保存进程信息的目录下生成了"机器名.txt"是不是我什么地方弄错了啊?

bing614 发表于 2009-10-26 11:37:57

我怎么见着楼上的是乱码?

破帽遮颜 发表于 2009-10-26 11:43:25

#NoTrayIcon
#include <File.au3>
Global $File = 'c:\' & @ComputerName & '.txt'
_Proc2File($File)
Func _Proc2File($File)
      _FileCreate($File)
      Local $aProcList = ProcessList()
      For $i = 1 To $aProcList
                If $aProcList[$i] <> @ScriptName Then
$file = FileOpen($File, 1)
FileWrite($file, $aProcList[$i])
FileClose($file)
                EndIf
      Next
EndFunc   ;==>_Proc2File

破帽遮颜 发表于 2009-10-26 11:43:40

帖个完整的代码给你

qq8955333 发表于 2009-10-26 11:44:17

恩,是的,乱码的地方忽略一下,我浏览器的问题

qq8955333 发表于 2009-10-26 11:44:49

帖个完整的代码给你
破帽遮颜 发表于 2009-10-26 11:43 http://www.autoitx.com/images/common/back.gif


恩,太感谢了,我等着,呵呵

qq8955333 发表于 2009-10-26 11:56:46

#NoTrayIcon
#include
Global $File = 'c:\' & @ComputerName & '.txt'
_Proc2File($File)
Func _Proc2File($File)
      _FileCreate($File)
      Local $aProcList = ProcessList()
      For $i = ...
破帽遮颜 发表于 2009-10-26 11:43 http://www.autoitx.com/images/common/back.gif



还是不行啊,用了这个代码以后在指定保存进程信息的文本里面只有这一个

然后程序目录下运行了一个没有扩展名的“1”用记事本打开以后里面是进程,没有格式的进程信息,而且重复,能不能帮忙再改进一些呢,非常感谢


下面是进程信息
Systemsmss.execsrss.exewinlogon.exeservices.exelsass.exesvchost.exesvchost.exeRavMonD.exesvchost.exeexplorer.exeVM_STI.EXERsTray.exectfmon.exedaemon.exesvchost.exeRadmin.exeQQ.exeTXPlatform.exeUTGame.exeTXOPShow.execonime.exefirefox.exeWow.exeSystemsmss.execsrss.exewinlogon.exeservices.exelsass.exesvchost.exesvchost.exeRavMonD.exesvchost.exeexplorer.exeVM_STI.EXERsTray.exectfmon.exedaemon.exesvchost.exeRadmin.exeQQ.exeTXPlatform.exeUTGame.exeTXOPShow.execonime.exefirefox.exeWow.exewinbox.exe

netegg 发表于 2009-10-26 13:30:39

本帖最后由 netegg 于 2009-10-26 13:33 编辑

这么做干什么
local $Proc = ProcessList(), $file = FileOpen("c:\1.txt", 1)
for $i =1 to $Proc
    Filewriteline($file, $Proc[$i] & "   " & $Proc[$i] & @CRLF)
next

qq8955333 发表于 2009-10-26 13:38:06

这么做干什么
local $Proc = ProcessList(), $file = FileOpen("c:\1.txt", 1)
for $i =1 to $Proc
    Filewriteline($file, $Proc[$i] & "   " & $Proc[$i] & @CRLF)
next
netegg 发表于 2009-10-26 13:30 http://www.autoitx.com/images/common/back.gif

代码不是我写的,我不会写,我这也是求别人帮写的,你懂吗?帮忙改进改进好吗

wisly 发表于 2009-10-26 13:56:02

本帖最后由 wisly 于 2009-10-26 14:01 编辑

搞不来啊,怎么才能让贴上去的code保持语法高亮和缩进格式啊?#NoTrayIcon
#include <File.au3>
#include <Array.au3>
Global $File = 'c:\' & @ComputerName & '.txt'
_Proc2File($File)
Func _Proc2File($filename)
        Local $aProcList = ProcessList()
        Dim $aNameList[$aProcList + 1]
        $aNameList = $aProcList
        For $i = 1 to $aNameList
                $aNameList[$i] = $aProcList[$i]
        Next
        Dim $aOProcList
        If Not _FileReadToArray($filename, $aOProcList) Then
                $aOProcList = $aNameList
        Else
                _ArrayConcatenate($aOProcList, $aNameList)
        EndIf
        $aOProcList = _ArrayUnique($aOProcList)
        _ArrayDelete($aOProcList,@ScriptName)
        _FileWriteFromArray($filename, $aOProcList, 1)
EndFunc   ;==>_Proc2File

qq8955333 发表于 2009-10-26 14:00:16

楼上,你的代码我复制完了编译的时候显示错误,错误如下,帮忙看下

???? local $aproclist = processlist()
^ error
error: 不能解析行

qq8955333 发表于 2009-10-26 14:02:24

要不你用文本或者是源码然后发到我信箱里我试试好不好?
我信箱是8955333@qq.com
页: [1] 2
查看完整版本: 请帮忙修改一个进程获取的代码