我编了一个程序,要实现的功能为:在VB.net中单击一个按钮,则调用一个FORTRAN过程。
该fortran程序会完成一个计算,自动将数据导出到WORD中。
但是在实际操作过程中,FORTRAN程序并未导出数据,求大神帮忙看一下是什么原因,代码如下:
Private Declare Function WaitForSingleObject Lib "kernel32 " (ByRef hHandle As Integer, ByRef dwMilliseconds As Integer) As Integer
Private Declare Function CloseHandle Lib "kernel32 " (ByVal hObject As Integer) As Integer
Private Declare Function OpenProcess Lib "kernel32" (ByRef dwDesiredAcess As Integer, ByRef bInheritHandle As Integer, ByRef dwProcessId As Integer) As Integer
Private Const INFINITE = -1&
Private Const SYNCHRONIZE = &H100000
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim iTask As Integer, ret As Integer, pHandle As Integer
iTask = Shell("C:\Users\Taylor.F\Desktop\机力塔程序1\MCT21.exe", vbHide)
pHandle = OpenProcess(SYNCHRONIZE, False, iTask)
ret = WaitForSingleObject(pHandle, INFINITE)
ret = CloseHandle(pHandle)
End Sub
------解决思路----------------------
首先你得确认双击 MCT21.exe 是能够有结果出来的。
其次你得确认这个结果是 MCT21.exe 自己输出的,而不是它开了另外一个程序跑结果而自己马上结束了。
还有 MCT21.exe 是否要求有焦点?参数 Hide 改为 NormalFocus 试试。
最后就是权限问题了,关闭杀毒软件,VB.Net 程序的 exe 用管理员权限运行。