pid是进程标识符变量,我想用VB编一个程序,只需输入pid号然后点击确定就能执行那个命令
如:某个进程pid为110,
程序运行时我输入110,确定,它会执行ntsd -c q -p 110,这功能要怎么实现呢?
PS:刚学VB,对api了解很少。
20 个解决方案
#1
VB中间的cmd调用和直接在cmd中间有很大的区别,要写类模块进行处理
如果不是太复杂的问题,建议你最好放弃你现在的想法
如果不是太复杂的问题,建议你最好放弃你现在的想法
#2
shell 调用
#3
楼上的说得对!shell调用
#4
如果不采用调用的方法我也有个想法,就是用VB产生一个.BAT或.CMD文件,然后向上面我说的,输入PID值后传输到那个文件中去,让那个批处理文件去命令执行,只要能传过去就行了,这怎么搞呢?
楼上各位,我刚学VB,很多东西都不懂,能不能说的具体一点啊?谢
楼上各位,我刚学VB,很多东西都不懂,能不能说的具体一点啊?谢
#5
winexec可以产生如同手工点击bat文件的效果
#6
shell "cmd.exe/c ping www.csdn.net"
#7
shell "ntsd -c q -p "&cstr(pid)
这样应该可以
这样应该可以
#8
不好意思,搞错了。
#9
VB创建和写入BAT文件我已经会了,就差调用执行了
那个winexec怎么用啊,能不能说具体点,谢!
那个winexec怎么用啊,能不能说具体点,谢!
#10
使用&&来隔开你的命令:
例如,你要在一个dos窗口中先后完成dir、netstat两个命令,这样:
Private Sub Command1_Click()
s = "cmd.exe /c dir && cmd.exe /k netstat -a"
Shell s, vbNormalFocus
End Sub
vb6+xp下通过。。。。
例如,你要在一个dos窗口中先后完成dir、netstat两个命令,这样:
Private Sub Command1_Click()
s = "cmd.exe /c dir && cmd.exe /k netstat -a"
Shell s, vbNormalFocus
End Sub
vb6+xp下通过。。。。
#11
哈哈,楼上这种方法这么简单啊,谢谢!
我加了个自动关闭CMD窗口的
我想把使用winexec的也搞会
winexec这样声明有什么问题吗:
Declare Function WinExec Lib "Kernel"(ByVal lpCmdLine As String,ByVal nCmdShow As Integer) As Integer
编译出错,郁闷
我加了个自动关闭CMD窗口的
我想把使用winexec的也搞会
winexec这样声明有什么问题吗:
Declare Function WinExec Lib "Kernel"(ByVal lpCmdLine As String,ByVal nCmdShow As Integer) As Integer
编译出错,郁闷
#12
Public Declare Function WinExec Lib "kernel32" Alias "WinExec" (ByVal lpCmdLine As String, ByVal nCmdShow As Long) As Long
#13
shell "cmd.exe/c ntsd -c q -p " & str(pid)
蹭点
蹭点
#14
Public Declare Function WinExec Lib "kernel32" Alias "WinExec" (ByVal lpCmdLine As String, ByVal nCmdShow As Long) As Long
这样声明一样错误,说不允许作为对象模块的public成员
可是我是通过api浏览器插入的呀,照理应该对的,怎么回事?
这样声明一样错误,说不允许作为对象模块的public成员
可是我是通过api浏览器插入的呀,照理应该对的,怎么回事?
#15
shell "cmd.exe/c ntsd -c q -p " & str(pid) 不行
#16
如果是在窗体的通用模块中,不能用Public,改为Private即可。
如果是标准模块中(.bas),则用Public插入是没有问题的。
试一下。
如果是标准模块中(.bas),则用Public插入是没有问题的。
试一下。
#17
写好了,还是用shell的,不过也用到了我自己想的批处理文件,下面是代码
Dim ts As New FileSystemObject
Dim tf As TextStream
Private 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.Close
Shell "cmd /c d:\1.bat", vbNormalFocus '执行结束进程命令
Text1.Text = ""
End Sub
能结束有些任务管理器不能结束的进程,呵呵
Dim ts As New FileSystemObject
Dim tf As TextStream
Private 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.Close
Shell "cmd /c d:\1.bat", vbNormalFocus '执行结束进程命令
Text1.Text = ""
End Sub
能结束有些任务管理器不能结束的进程,呵呵
#18
Gutta(冯大狂),可以用private的,谢。好了,总算学了点东西。
#19
原来
Shell "cmd /c d:\1.bat", vbNormalFocus
可以直接写成
Shell "d:\1.bat", vbNormalFocus
这样就快多了
Shell "cmd /c d:\1.bat", vbNormalFocus
可以直接写成
Shell "d:\1.bat", vbNormalFocus
这样就快多了
#20
SHELL还能这样用……谢谢谢谢~
#21
#1
VB中间的cmd调用和直接在cmd中间有很大的区别,要写类模块进行处理
如果不是太复杂的问题,建议你最好放弃你现在的想法
如果不是太复杂的问题,建议你最好放弃你现在的想法
#2
shell 调用
#3
楼上的说得对!shell调用
#4
如果不采用调用的方法我也有个想法,就是用VB产生一个.BAT或.CMD文件,然后向上面我说的,输入PID值后传输到那个文件中去,让那个批处理文件去命令执行,只要能传过去就行了,这怎么搞呢?
楼上各位,我刚学VB,很多东西都不懂,能不能说的具体一点啊?谢
楼上各位,我刚学VB,很多东西都不懂,能不能说的具体一点啊?谢
#5
winexec可以产生如同手工点击bat文件的效果
#6
shell "cmd.exe/c ping www.csdn.net"
#7
shell "ntsd -c q -p "&cstr(pid)
这样应该可以
这样应该可以
#8
不好意思,搞错了。
#9
VB创建和写入BAT文件我已经会了,就差调用执行了
那个winexec怎么用啊,能不能说具体点,谢!
那个winexec怎么用啊,能不能说具体点,谢!
#10
使用&&来隔开你的命令:
例如,你要在一个dos窗口中先后完成dir、netstat两个命令,这样:
Private Sub Command1_Click()
s = "cmd.exe /c dir && cmd.exe /k netstat -a"
Shell s, vbNormalFocus
End Sub
vb6+xp下通过。。。。
例如,你要在一个dos窗口中先后完成dir、netstat两个命令,这样:
Private Sub Command1_Click()
s = "cmd.exe /c dir && cmd.exe /k netstat -a"
Shell s, vbNormalFocus
End Sub
vb6+xp下通过。。。。
#11
哈哈,楼上这种方法这么简单啊,谢谢!
我加了个自动关闭CMD窗口的
我想把使用winexec的也搞会
winexec这样声明有什么问题吗:
Declare Function WinExec Lib "Kernel"(ByVal lpCmdLine As String,ByVal nCmdShow As Integer) As Integer
编译出错,郁闷
我加了个自动关闭CMD窗口的
我想把使用winexec的也搞会
winexec这样声明有什么问题吗:
Declare Function WinExec Lib "Kernel"(ByVal lpCmdLine As String,ByVal nCmdShow As Integer) As Integer
编译出错,郁闷
#12
Public Declare Function WinExec Lib "kernel32" Alias "WinExec" (ByVal lpCmdLine As String, ByVal nCmdShow As Long) As Long
#13
shell "cmd.exe/c ntsd -c q -p " & str(pid)
蹭点
蹭点
#14
Public Declare Function WinExec Lib "kernel32" Alias "WinExec" (ByVal lpCmdLine As String, ByVal nCmdShow As Long) As Long
这样声明一样错误,说不允许作为对象模块的public成员
可是我是通过api浏览器插入的呀,照理应该对的,怎么回事?
这样声明一样错误,说不允许作为对象模块的public成员
可是我是通过api浏览器插入的呀,照理应该对的,怎么回事?
#15
shell "cmd.exe/c ntsd -c q -p " & str(pid) 不行
#16
如果是在窗体的通用模块中,不能用Public,改为Private即可。
如果是标准模块中(.bas),则用Public插入是没有问题的。
试一下。
如果是标准模块中(.bas),则用Public插入是没有问题的。
试一下。
#17
写好了,还是用shell的,不过也用到了我自己想的批处理文件,下面是代码
Dim ts As New FileSystemObject
Dim tf As TextStream
Private 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.Close
Shell "cmd /c d:\1.bat", vbNormalFocus '执行结束进程命令
Text1.Text = ""
End Sub
能结束有些任务管理器不能结束的进程,呵呵
Dim ts As New FileSystemObject
Dim tf As TextStream
Private 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.Close
Shell "cmd /c d:\1.bat", vbNormalFocus '执行结束进程命令
Text1.Text = ""
End Sub
能结束有些任务管理器不能结束的进程,呵呵
#18
Gutta(冯大狂),可以用private的,谢。好了,总算学了点东西。
#19
原来
Shell "cmd /c d:\1.bat", vbNormalFocus
可以直接写成
Shell "d:\1.bat", vbNormalFocus
这样就快多了
Shell "cmd /c d:\1.bat", vbNormalFocus
可以直接写成
Shell "d:\1.bat", vbNormalFocus
这样就快多了
#20
SHELL还能这样用……谢谢谢谢~