| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1863 人关注过本帖
标题:VB 在我的窗口内,运行外部程序
只看楼主 加入收藏
张六先生
Rank: 2
等 级:论坛游民
帖 子:37
专家分:20
注 册:2022-9-11
结帖率:71.43%
收藏
已结贴  问题点数:20 回复次数:13 
VB 在我的窗口内,运行外部程序
在我的窗口内,运行我工作,同时需要打开 explorer.exe 和 WeChat.exe 与我并行工作。同时打开,并不因我的工作而失去两个外部程序的工作界面。拜托各位大侠,详细程序指导。
搜索更多相关主题的帖子: VB 运行 工作 窗口 外部 
2022-09-11 19:48
kings12333
Rank: 2
等 级:论坛游民
帖 子:114
专家分:66
注 册:2012-11-29
收藏
得分:3 
交界面隐藏,同时内存时时取数来关联验证连接是否正常,取数是否正常,多么美好的事情。
2022-09-11 20:16
yuma
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:银河系
等 级:贵宾
威 望:37
帖 子:1925
专家分:2992
注 册:2009-12-22
收藏
得分:3 
你们两个在说什么?楼主又想表达什么?

心生万象,万象皆程序!
本人计算机知识网:http://bbs.为防伸手党,本站已停止会员注册。
2022-09-12 17:10
apull
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:三体星系
等 级:版主
威 望:216
帖 子:1479
专家分:9035
注 册:2010-3-16
收藏
得分:3 
Shell "explorer"
Shell ""C:\Program Files (x86)\Tencent\WeChat\WeChat.exe""
收到的鲜花
  • yuma2022-09-12 18:21 送鲜花  1朵   附言:我也是这样想的
2022-09-12 17:48
张六先生
Rank: 2
等 级:论坛游民
帖 子:37
专家分:20
注 册:2022-9-11
收藏
得分:0 
感谢各位朋友。
我想表达的意思是,我的界面,资源管理器的界面(explorer),微信界面。同时在我的窗口显示,不因我操作我的界面而影响另两个界面的观察和使用。

如果按 Shell 的方法,当我在操作我的界而,两个 Shell 就自动关闭了。

是否可以,在我的界面上再开两个窗口,把explorer和 微信 在两个新窗口中打开。
2022-09-13 14:32
apull
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:三体星系
等 级:版主
威 望:216
帖 子:1479
专家分:9035
注 册:2010-3-16
收藏
得分:0 
你的意思是你要把2个窗口捕捉为你程序窗口的子窗口么?这个可有难度了,尤其是微信,对于这方面做了多次加密和干扰。
2022-09-13 14:36
yuma
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:银河系
等 级:贵宾
威 望:37
帖 子:1925
专家分:2992
注 册:2009-12-22
收藏
得分:0 
我来个单窗口的,代码你自己改。

注意:运行后,把Form 窗口最大化看效果。

程序代码:
Option Explicit
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As Long, ByVal lpWindowName As Long) As Long
Private Declare Function GetParent Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long
Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long
Private Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long
Private Declare Function LockWindowUpdate Lib "user32" (ByVal hwndLock As Long) As Long
Private Declare Function GetDesktopWindow Lib "user32" () As Long
Private Declare Function DestroyWindow Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long
Private Declare Function GetCurrentProcess Lib "kernel32" () As Long
Private Declare Function Putfocus Lib "user32" Alias "SetFocus" (ByVal hwnd As Long) As Long

Private Const GW_HWNDNEXT = 2
Private m_Hwnd As Long

Private Sub Form_Load()
    Dim dblPid As Long
    Call LockWindowUpdate(GetDesktopWindow)
    dblPid = Shell("c:\windows\notepad.exe", vbNormalFocus)
    m_Hwnd = InstanceToWnd(dblPid) '根据进程PID找窗口句柄
    SetParent m_Hwnd, Me.hwnd
    Putfocus m_Hwnd                 '记事本设置焦点
    Call LockWindowUpdate(0)
End Sub

Function InstanceToWnd(ByVal target_pid As Long) As Long
    Dim i As Long, lHwnd As Long, lPid As Long, lThreadId As Long
    lHwnd = FindWindow(ByVal 0&, ByVal 0&)   '查找第一个窗口
    Do While lHwnd <> 0
        i = i + 1
        If i Mod 20 = 0 Then DoEvents
        '判断窗口是否没父窗口
        If GetParent(lHwnd) = 0 Then
            '获取该窗口的线程ID
            lThreadId = GetWindowThreadProcessId(lHwnd, lPid)
            If lPid = target_pid Then '找到PID所在窗口句柄
                InstanceToWnd = lHwnd
                Exit Do
            End If
        End If
        '继续查找下一个兄弟窗口
        lHwnd = GetWindow(lHwnd, GW_HWNDNEXT)
        Debug.Print Hex$(lHwnd)
    Loop
End Function

Private Sub Form_Unload(Cancel As Integer)
    Call DestroyWindow(m_Hwnd)
    'TerminateProcess GetCurrentProcess, 0    '野蛮了些
    Set Form1 = Nothing
End Sub


[此贴子已经被作者于2022-9-13 14:44编辑过]


心生万象,万象皆程序!
本人计算机知识网:http://bbs.为防伸手党,本站已停止会员注册。
2022-09-13 14:42
kings12333
Rank: 2
等 级:论坛游民
帖 子:114
专家分:66
注 册:2012-11-29
收藏
得分:0 
回复 5楼 张六先生
这不就是嵌入吗?
2022-09-13 17:55
yuma
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:银河系
等 级:贵宾
威 望:37
帖 子:1925
专家分:2992
注 册:2009-12-22
收藏
得分:0 
你说是嵌入就是嵌入吧,你的意思大致是这样的,我的理解。

心生万象,万象皆程序!
本人计算机知识网:http://bbs.为防伸手党,本站已停止会员注册。
2022-09-13 18:33
chenyucheng
Rank: 3Rank: 3
来 自:浙江省台州市临海市
等 级:论坛游侠
威 望:3
帖 子:141
专家分:181
注 册:2022-7-1
收藏
得分:3 
嵌入是正确的,像MDI那样子

爱玩编程的小学生,有Python,但只会一点点C++。

版主->斑竹->竹子,所以版主是竹子。(doge)
//不要让我当版主
2022-09-13 19:56
快速回复:VB 在我的窗口内,运行外部程序
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018108 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved