xkowen 发表于 2008-12-2 11:55:03

怎样获取CMD/telnet命令框中的文本?(信息工具无法实现)

通过Windows自带的CMD命令,Telnet远程登录到一个主机后执行tasklist命令,此时会显示远程主机上正在运行的进程,请问怎样通过AU3判断CMD框中的文本存在某个指定的进程?谢谢!
实现过程:Telnet-->输入User-->输入password-->tasklist-->然后获取CMD命令框中的文本!怎样获取啊????????
看了楼下的方法,但好像不能实现我要的功能,谢谢你!
例如,附件中smss.exe,要怎样利用AU3 判断出CMD中有smss.exe这个进程?(貌似用窗口信息工具无法获取到窗口中的任何文本!)

[ 本帖最后由 xkowen 于 2008-12-19 17:06 编辑 ]

pcbar 发表于 2008-12-2 14:38:00

http://www.autoitx.com/forum.php?mod=viewthread&tid=2109
参考此贴

xkowen 发表于 2008-12-2 15:44:14

回复 2# pcbar 的帖子

看到了这个实例,但还是不知道怎么用,主要是怎么向CMD发送命令和接收数据!
下面的代码都是对没有执行任何命令窗口捕获文本!我要的是这样的过程:Telnet-->User-->password-->tasklist-->然后获取CMD命令框中的文本!可不可以指点一下下,谢谢大虾了!
#include <Constants.au3>
$foo = Run(@ComSpec, @SystemDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
ProcessWaitClose($foo)
$text=StdoutRead($foo)
MsgBox(0, "STDOUT read:", $text)

xkowen 发表于 2008-12-19 17:07:13

:face (3): 哪位大虾出来指点一下下啊!

hites 发表于 2008-12-19 17:11:57

论坛上有很多帮助,你可以参考下

xkowen 发表于 2008-12-19 18:22:46

回复 5# hites 的帖子

看了啊!但是还是没有找到最佳办法来实现这种功能啊!大虾指点一下吧!:face (36):

xkowen 发表于 2008-12-27 10:52:09

唉,没人能告诉我,真郁闷ing...

298311657 发表于 2009-3-15 14:13:48

如此~??
#AutoIt3Wrapper_UseAnsi=y
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Constants.au3>
#include <StaticConstants.au3>
GUICreate("进程获取", 640, 480, 193, 125)
$edit = GUICtrlCreateEdit("", 5, 5, 630, 440, $ES_READONLY + $WS_VSCROLL)
$Button1 = GUICtrlCreateButton("ok", 290, 455, 60, 20, 0)
GUISetState(@SW_SHOW)

While 1
        $nmsg = GUIGetMsg()
        Switch $nmsg
                Case $GUI_EVENT_CLOSE
                        Exit
                Case $Button1
                        get()
                        GUICtrlSetData($edit, @CRLF & '获取结束', -1)
        EndSwitch
WEnd

Func get()
        $foo = Run(@ComSpec & " /c " & 'tasklist', "", @SW_HIDE, $STDOUT_CHILD);如果要远程操作,这里可以使用RunAs函数
        While 1
                $line = StdoutRead($foo)
                If @error Then ExitLoop
                GUICtrlSetData($edit, $line, -1)
        WEnd
EndFunc   ;==>get

[ 本帖最后由 298311657 于 2009-3-15 14:15 编辑 ]

298311657 发表于 2009-3-15 14:34:50

突然发现,tasklist支持远程读取,下面是tasklist的帮助

TASKLIST ]]]
          | /SVC | /V]

描述:
    这个命令行工具显示应用程序和本地
    或远程系统上运行的相关任务/进程的
    列表。

参数列表:
   /S   system         指定连接到的远程系统。

   /U   user    指定应该在哪个用户上下文
                           执行这个命令。

   /P          为提供的用户上下文指定
                           密码。如果忽略,提示输入。

   /M            列出所有其中符合指定模式名
                           的 DLL 模块的所有任务。
                           如果没有指定模块名,则
                           显示每个任务加载的所有模块。

   /SVC                  显示每个进程中的服务。

   /V                      指定要显示详述
                           信息。

   /FI    filter         显示一系列符合筛选器指定的标准
                           的任务。

   /FO    format         指定输出格式。
                           有效值: "TABLE"、"LIST"、"CSV"。

   /NH                     指定栏标头不应该在
                           输出中显示。
                           只对 "TABLE" 和 "CSV" 格式有效。

   /?                      显示帮助/用法。


筛选器:
    筛选器名      有效操作符                有效值
    -----------   ---------------         --------------
    STATUS          eq, ne                  正在运行 | 没有响应
    IMAGENAME       eq, ne                  图像名
    PID             eq, ne, gt, lt, ge, le    PID 值
    SESSION         eq, ne, gt, lt, ge, le    会话编号
    SESSIONNAME   eq, ne                  会话名
    CPUTIME         eq, ne, gt, lt, ge, le    CPU 时间,格式为
                                              hh:mm:ss。
                                              hh - 时,
                                              mm - 分,ss - 秒
    MEMUSAGE      eq, ne, gt, lt, ge, le    内存使用量(KB)
    USERNAME      eq, ne                  用户名,格式为 user
                                             
    SERVICES      eq, ne                  服务名
    WINDOWTITLE   eq, ne                  窗口标题
    MODULES         eq, ne                  DLL 名

例如:
    TASKLIST
    TASKLIST /M
    TASKLIST /V
    TASKLIST /SVC
    TASKLIST /M wbem*
    TASKLIST /S system /FO LIST
    TASKLIST /S system /U domain\username /FO CSV /NH
    TASKLIST /S system /U username /P password /FO TABLE /NH
    TASKLIST /FI "USERNAME ne NT AUTHORITY\SYSTEM" /FI "STATUS eq running"

neity 发表于 2009-12-9 00:48:08

测试了下这个,显示很好。
页: [1]
查看完整版本: 怎样获取CMD/telnet命令框中的文本?(信息工具无法实现)