命令行的每行内容如何出现在下拉菜单中【已解决】
本帖最后由 haijie1223 于 2011-1-8 08:58 编辑假如说cmd运行如下命令
dir d:\
显示如下的话:
111
222
333
那么我如何才能实现以下图的功能,
就是说
假如说D盘还有其他文件和目录的话,他也会自动出现在下拉菜单中。
我现在只知道运行cmd命令是
Local $a
$a = Run(@ComSpec & " /c dir d:\", @ScriptDir, @SW_HIDE, $STDOUT_CHILD)
制作下拉菜单是:
$combo1 = GUICtrlCreateCombo("", 86, 95, 193, 25)
GUICtrlSetData(-1,???,???)
若实现上述功能请问高手应该怎么写啊?
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Include <File.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 180, 222, 192, 124)
$Button1 = GUICtrlCreateButton("读取C盘", 8, 8, 75, 25)
$Button2 = GUICtrlCreateButton("读取D盘", 96, 8, 75, 25)
$Combo1 = GUICtrlCreateCombo("", 8, 48, 161, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
GUICtrlSetData($Combo1,"");清空上一次
$aFileList = _FileListToArray("c:\");读取列表
For $i = 1 To $aFileList
GUICtrlSetData($Combo1,$aFileList[$i]);把列表写入到combobox
Next
Case $Button2
GUICtrlSetData($Combo1,"")
$aFileList = _FileListToArray("d:\")
For $i = 1 To $aFileList
GUICtrlSetData($Combo1,$aFileList[$i])
Next
EndSwitch
WEnd
看不懂 先收藏了 回复 2# sxd
楼上这位大侠,你的代码写的非常好,能很好的实现我要的功能。只是我需要的是这样,把回显值的每一行添加到列表中,举个例子,换个命令ping 127.0.0.1的话,其实
会显示
Pinging 127.0.0.1 with 32 bytes of data:
Reply from 127.0.0.1: bytes=32 time<1ms TTL=64
Reply from 127.0.0.1: bytes=32 time<1ms TTL=64
Reply from 127.0.0.1: bytes=32 time<1ms TTL=64
Reply from 127.0.0.1: bytes=32 time<1ms TTL=64
如果这样的话怎么添加到列表啊。
可能我举得例子的描述太有局限性,你那个函数是获取路径的,我是想把所有命令行的回显值的每一行显示在下拉列表中。 回复 2# sxd
是所有命令的回显值,并不一定是dir 命令,可能举得例子太典型了,有情大侠指点迷津啊。 请搜索论坛 dos 回显 回复 6# sxd
dos 回显获取用msgbox我能显示出来,但是不能显示在下拉菜单中啊。唉。。。 那看来你要梳理一下你的知识
数据 和 显示数据 的关系 回复 8# sxd
自己摸索进步很慢的 大侠直接把我欠缺的知识给我指点一下 好么 你既然已经得到的数据 那现在要做的就是用GUICtrlSetData函数把数据显示到combobox里 回复 10# sxd
这个问题真是麻烦我用guictrlsetdata显示到combobox的时候 他总是多行内容显示在一行里。而不是分行显示。所以我想用个数组显示,数组中每个数据显示一行,但是怎么把每一行的内容赋值到数组的每个数据中,没有研究成功。所以很是难办。总之是没有想到好的办法。 guictrlsetdata一次就是一行
为什么多行显示在一行里 是因为你的数据本身就是多行在一行里
所以你需要对你的数据在guictrlsetdata之前 进行处理 回复 12# sxd
兄弟基础扎实,果然厉害。。。!赞一个!小弟受益良多啊。 回复 12# sxd
可是同样的数据 用msgbox显示的时候是和命令行显示的一模一样 是在多行里面的 为什么到了combo就不行了 呢 昨天研究了一晚上 一直没弄明白 函数翻了个遍 例子看了个遍 没找到合适的办法 因为数据里包含了换行符吧你用StringSplit按照@CRLF来拆分下看看
页:
[1]
2