24小时热门版块排行榜    

查看: 219  |  回复: 8
当前主题已经存档。
【悬赏金币】回答本帖问题,作者无声黑白破东风将赠送您 10 个金币

无声黑白破东风

银虫 (正式写手)

[求助] 懂VB的请进:如何查看一个程序运行后,记录的命令格式。

比如调用RNAstructure.exe后,输入的是rna.seq,得到的结果是rna.ct
命令记录就是:
D:\Program   Files\RNAstructure   4.11\RNAstructure.exe""   /fold   -s   rna.seq   -c   rna.ct

网上找到了有人编好的,可是看不懂,有高手帮我看看,如何用吗?
编好的在http://community.csdn.net/Expert/TopicView3.asp?id=5601470
“hotus“的
*****************************************************************
模块中
Private Declare Function NtQueryInformationProcess Lib "ntdll" (ByVal ProcessHandle As Long, ByVal ProcessInformationClass As Long, ByRef ProcessInformation As Any, ByVal lProcessInformationLength As Long, ByRef lReturnLength As Long) As Long
Private Declare Function ReadProcessMemory Lib "kernel32" (ByVal hProcess As Long, ByVal lpBaseAddress As Any, ByRef lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long
Public Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Public Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Public Const PROCESS_ALL_ACCESS = &H1F0FFF
Public Const PROCESS_TERMINATE = &H1
Public Const PROCESS_VM_READ = 16
Public Const PROCESS_QUERY_INFORMATION = 1024
Public Const PROCESS_SET_INFORMATION = 612
Private Type PROCESS_BASIC_INFORMATION
ExitStatus As Long
PebBaseAddress As Long
AffinityMask As Long
BasePriority As Long
UniqueProcessId As Long
InheritedFromUniqueProcessId As Long
End Type

Public Function GetCmdLine(ByVal plngPID As Long) As String
Dim strBuffer As String
Dim hProcess As Long
Dim offset1 As Long
Dim offset2 As Long
Dim Dummy As Long
Dim Info As PROCESS_BASIC_INFORMATION
Const STATUS_SUCCESS As Long = 0

offset1 = 1
offset2 = 0

hProcess = OpenProcess(PROCESS_QUERY_INFORMATION Or PROCESS_VM_READ, 0, plngPID)
If (hProcess = 0) Then
Exit Function
End If
If (NtQueryInformationProcess(hProcess, 0, Info, Len(Info), ByVal 0& <> STATUS_SUCCESS) Then
CloseHandle hProcess
Exit Function
End If
If (ReadProcessMemory(hProcess, (Info.PebBaseAddress + &H10), offset1, 4, Dummy) = STATUS_SUCCESS) Then
CloseHandle hProcess
Exit Function
End If

If (ReadProcessMemory(hProcess, (offset1 + &H44), offset2, 4, Dummy) = STATUS_SUCCESS) Then
CloseHandle hProcess
Exit Function
End If
strBuffer = String(256, " "
If (ReadProcessMemory(hProcess, offset2, ByVal strBuffer, 256, Dummy) = STATUS_SUCCESS) Then
CloseHandle hProcess
Exit Function
End If
CloseHandle hProcess
strBuffer = Left$(strBuffer, InStr(strBuffer, Chr(0) & Chr(0)))
GetCmdLine = StrConv(strBuffer, vbFromUnicode)
End Function


使用
msgbox getcmdline(进程PID)
****************************************************************

[ Last edited by 无声黑白破东风 on 2007-8-30 at 10:33 ]

» 猜你喜欢

周杰伦粉丝团团长!
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

liaoyongpi

木虫 (正式写手)

没明白什么意思?
要看命令格式好像命令后面+“?”就可以吧。
2楼2007-08-29 17:45:10
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

无声黑白破东风

银虫 (正式写手)

up              
3楼2007-08-30 10:34:44
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

ihlw

★ ★ ★ ★ ★
无声黑白破东风(金币+5,VIP+0):你好,我试用了一下,输入了pid后,只看见方法一里有了exe文件的位置,但是点击后,总是报run-time error: '438'...这是为啥呢? xixi...
程序见:

http://ihlw.ys168.com/

里面“临时”目录。

包含源文件和编译好的程序。

直接运行“GetCommandLine.exe”后,点击方法1就行。方法2需要知道程序的pid值。打开任务管理器,菜单-》查看=》选择列-》选中pid,然后输入相对应的pid,按“方法2”也行。
4楼2007-08-31 12:26:31
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

ihlw

★ ★ ★ ★ ★
无声黑白破东风(金币+2,VIP+0):不知为啥,还是不行,我把Rnastructure程序放到http://wshbpdf.ys168.com/了,辛苦你了
无声黑白破东风(金币+3,VIP+0):嘿嘿,我在winxp下试了,可以运行了,可惜看不到RNAstructure.exe的参数 【/fold -s rna.seq -c rna.ct】,估计比较难做吧^_^
请试试新版
5楼2007-09-03 23:25:24
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

gyh

至尊木虫 (著名写手)

这个程序我理解是:先通过 OpenProcess获得D:\Program   Files\RNAstructure   4.11\RNAstructure.exe可执行文件的进程,然后利用NtQueryInformationProcess向该进程输入参数,即""   /fold   -s   rna.seq   -c   rna.ct,最后采用ReadProcessMemory来获得执行结果。这段程序的思想是进程之间操作。不知道你为何不采用excute等函数来完成任务(具体函数名称请查帮助)?
6楼2007-09-04 07:30:34
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

无声黑白破东风

银虫 (正式写手)

周杰伦粉丝团团长!
7楼2007-09-04 10:41:09
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

无声黑白破东风

银虫 (正式写手)

周杰伦粉丝团团长!
8楼2007-09-04 10:43:14
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 无声黑白破东风 的主题更新
不应助 确定回帖应助 (注意:应助才可能被奖励,但不允许灌水,必须填写15个字符以上)
信息提示
请填处理意见