vb编程题自动评分(创建新的学生进程)

zhchyun2008 2010-09-16 04:04:48
Private Sub Command1_Click()

On Error Resume Next
Dim si As STARTUPINFO '该结构用于指定新进程的主窗口特性
Dim pi As PROCESS_INFORMATION '在创建进程时相关的数据结构之一,该结构返回有关新进程及其主线程的信息

Dim sa As SECURITY_ATTRIBUTES
Dim strResult As String ''returned results of the command line
With sa
.nLength = Len(sa)
.bInheritHandle = 1& ''inherit, needed for this to work
.lpSecurityDescriptor = 0
End With
With si
.cb = Len(si)
.dwFlags = STARTF_USESTDHANDLES Or STARTF_USESHOWWINDOW ''tell it to use (not ignore) the values below
.wShowWindow = SW_HIDE
.hStdOutput = hWrite ''pass the write end of the pipe as the processes standard output
End With
Dim Hwind As Long
Dim FHandle As Long
Dim SM As Long
retval = CreateProcess("VB6.EXE", "vb6.EXE D:\vb实例\工程1.vbp", sa, sa, 1&, NORMAL_PRIORITY_CLASS, ByVal 0&, vbNullString, si, pi)
end sub


模块中的声明
Public Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Public Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long
Public Declare Function CreatePipe Lib "kernel32" (phReadPipe As Long, phWritePipe As Long, lpPipeAttributes As SECURITY_ATTRIBUTES, ByVal nSize As Long) As Long
Public Declare Function ReadFile Lib "kernel32" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToRead As Long, lpNumberOfBytesRead As Long, lpOverlapped As OVERLAPPED) As Long
Public Declare Function GetForegroundWindow Lib "user32" () As Long
'获取当前窗口的句柄
Public Declare Function EnumChildWindows Lib "user32" (ByVal hWndParent As Long, ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long
'枚举一个父窗口的所有子窗口
Public Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess As Long, lpExitCode As Long) As Long
'GetExitCodeProcess函数获得VB应用程序的退出环境
Public Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long

Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
'获得窗体句柄
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
'发送消息
Public Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
'获得按钮句柄




Public Type STARTUPINFO
cb As Long
lpReserved As String
lpDesktop As String
lpTitle As String
dwX As Long
dwY As Long
dwXSize As Long
dwYSize As Long
dwXCountChars As Long
dwYCountChars As Long
dwFillAttribute As Long
dwFlags As Long
wShowWindow As Integer
cbReserved2 As Integer
lpReserved2 As Long
hStdInput As Long
hStdOutput As Long
hStdError As Long
End Type
Public Type PROCESS_INFORMATION
hProcess As Long
hThread As Long
dwProcessId As Long
dwThreadId As Long
End Type
Public Type SECURITY_ATTRIBUTES
nLength As Long
lpSecurityDescriptor As Long
bInheritHandle As Long
End Type

Public Type OVERLAPPED
Internal As Long
InternalHigh As Long
offset As Long
OffsetHigh As Long
hEvent As Long
End Type


Public Const NORMAL_PRIORITY_CLASS = &H20
Public Const STARTF_USESTDHANDLES = &H100
Public Const STARTF_USESHOWWINDOW = &H1
Public Const SW_HIDE = 0&
Public Const SW_NORMAL = 1
Public Const INFINITE = &HFFFF ' Infinite timeout
Public Declare Function WinExec Lib "kernel32" (ByVal lpCmdLine As String, ByVal nCmdShow As Long) As Long



新的进程是创建了,但是怎么样抓住学生程序的句柄或者学生程序窗体的句柄,然后模拟按键消息发送,使学生的程序在后台运行起来 ,再然后捕获程序中的错误?
请高手不吝赐教,谢谢
...全文
56 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
jhone99 2010-09-16
  • 打赏
  • 举报
回复

1,486

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧