|

楼主 |
发表于 2005-11-2 16:13:20
|
显示全部楼层
建三个菜单项,分别命名为mmFileApplication(打开应用程序)、mmFileNotePad(打开记事本)和mmFileQuit(退出)。<br />为控件工具箱添加一个部件“Microsoft Common Dialog”,并把这个控件添加一个到窗体里,命名为DlgOpen<br /><br />然后,下面是代码,(但为什么打开的程序不能作为子窗口呢,如果实现得了的话,我想把DOS程序转化成Windows窗口程序也是可能的吧):<br /><br />Option Explicit<br /> rivate Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long<br /> rivate Declare Function GetParent Lib "user32" (ByVal hwnd As Long) As Long<br /> rivate Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long<br />Private Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long<br />Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long<br />Private Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long<br /><br />Private Const GW_HWNDNEXT = 2<br /><br />Private hwndApplicationParent As Long<br />Private hwndApplication As Long<br /><br />Private Function GetWindowHwnd(ByVal lSourceID As Long) As Long<br /> Dim hwndTemp As Long<br /> Dim lProcessID As Long<br /> Dim lIDTemp As Long<br /> hwndTemp = FindWindow(ByVal 0&, ByVal 0&)<br /> Do While hwndTemp <> 0<br /> If GetParent(hwndTemp) = 0 Then<br /> lIDTemp = GetWindowThreadProcessId(hwndTemp, lProcessID)<br /> If lProcessID = lSourceID Then<br /> GetWindowHwnd = hwndTemp<br /> Exit Do<br /> End If<br /> End If<br /> hwndTemp = GetWindow(hwndTemp, GW_HWNDNEXT)<br /> Loop<br />End Function<br /><br />Private Sub Form_Load()<br /> DlgOpen.Filter = "应用程序|*.exe"<br /> DlgOpen.Flags = cdlOFNFileMustExist Or cdlOFNLongNames '注意参数搭配<br />End Sub<br />Private Sub mmFileApplication_click()<br /> Dim lID As Long<br /> DlgOpen.ShowOpen<br /> If Trim(DlgOpen.FileName) = "" Then Exit Sub<br /> lID = Shell(DlgOpen.FileName, vbMinimizedFocus)<br /> If lID = 0 Then<br /> MsgBox "应用程序不能正确执行", vbOKOnly + vbInformation<br /> Exit Sub<br /> End If<br /> hwndApplication = GetWindowHwnd(lID)<br /> hwndApplicationParent = SetParent(hwndApplication, Me.hwnd)<br />End Sub<br /><br />Private Sub mmfileNotePad_click()<br /> Dim lID As Long<br /> lID = Shell("notepad.exe", vbNormalFocus)<br /> If lID = 0 Then<br /> MsgBox "记事本不能正确执行", vbOKOnly + vbInformation<br /> Exit Sub<br /> End If<br /> hwndApplication = GetWindowHwnd(lID)<br /> hwndApplicationParent = SetParent(hwndApplication, Me.hwnd)<br />End Sub<br /><br />Private Sub mmFileQuit_click()<br /> Unload Me<br />End Sub<br /> |
|