比如ntsd -c q -p pid结束进程命令
pid是进程标识符变量,我想用VB编一个程序,只需输入pid号然后点击确定就能执行那个命令
如:某个进程pid为110,
程序运行时我输入110,确定,它会执行ntsd -c q -p 110,这功能要怎么实现呢?
PS:刚学VB,对api了解很少。

解决方案 »

  1.   

    VB中间的cmd调用和直接在cmd中间有很大的区别,要写类模块进行处理
    如果不是太复杂的问题,建议你最好放弃你现在的想法
      

  2.   

    如果不采用调用的方法我也有个想法,就是用VB产生一个.BAT或.CMD文件,然后向上面我说的,输入PID值后传输到那个文件中去,让那个批处理文件去命令执行,只要能传过去就行了,这怎么搞呢?楼上各位,我刚学VB,很多东西都不懂,能不能说的具体一点啊?谢
      

  3.   

    winexec可以产生如同手工点击bat文件的效果
      

  4.   

    shell "cmd.exe/c ping www.csdn.net"
      

  5.   

    shell "ntsd -c q -p "&cstr(pid)
    这样应该可以
      

  6.   

    VB创建和写入BAT文件我已经会了,就差调用执行了
    那个winexec怎么用啊,能不能说具体点,谢!
      

  7.   

    使用&&来隔开你的命令:
    例如,你要在一个dos窗口中先后完成dir、netstat两个命令,这样:
    Private Sub Command1_Click()
    s = "cmd.exe /c dir && cmd.exe /k netstat -a"
    Shell s, vbNormalFocus
    End Subvb6+xp下通过。
      

  8.   

    哈哈,楼上这种方法这么简单啊,谢谢!
    我加了个自动关闭CMD窗口的我想把使用winexec的也搞会
    winexec这样声明有什么问题吗:
    Declare Function WinExec Lib "Kernel"(ByVal lpCmdLine As String,ByVal nCmdShow As Integer) As Integer
    编译出错,郁闷
      

  9.   

    Public Declare Function WinExec Lib "kernel32" Alias "WinExec" (ByVal lpCmdLine As String, ByVal nCmdShow As Long) As Long
      

  10.   

    shell "cmd.exe/c ntsd -c q -p " & str(pid)蹭点
      

  11.   

    Public Declare Function WinExec Lib "kernel32" Alias "WinExec" (ByVal lpCmdLine As String, ByVal nCmdShow As Long) As Long
    这样声明一样错误,说不允许作为对象模块的public成员
    可是我是通过api浏览器插入的呀,照理应该对的,怎么回事?
      

  12.   

    shell "cmd.exe/c ntsd -c q -p " & str(pid) 不行
      

  13.   

    如果是在窗体的通用模块中,不能用Public,改为Private即可。如果是标准模块中(.bas),则用Public插入是没有问题的。试一下。
      

  14.   

    写好了,还是用shell的,不过也用到了我自己想的批处理文件,下面是代码Dim ts As New FileSystemObject
    Dim tf As TextStreamPrivate Sub Command1_Click()Set ts = CreateObject("Scripting.FileSystemObject")
    Set tf = ts.CreateTextFile("d:\1.bat")tf.Write ("ntsd -c q -p ")  '预先写好前段命令
    tf.Write (Text1.Text)     '等待写入进程PID
    tf.CloseShell "cmd /c d:\1.bat", vbNormalFocus '执行结束进程命令
    Text1.Text = ""End Sub能结束有些任务管理器不能结束的进程,呵呵
      

  15.   

    Gutta(冯大狂),可以用private的,谢。好了,总算学了点东西。
      

  16.   

    原来
    Shell "cmd /c d:\1.bat", vbNormalFocus 
    可以直接写成
    Shell "d:\1.bat", vbNormalFocus 
    这样就快多了
      

  17.   

    SHELL还能这样用……谢谢谢谢~