注意: 本进程是没有任何窗口的! 现在要把外部进程的一个窗口,变成本进程的. 

解决方案 »

  1.   

    没有不可能的事情! 
    ------------------------------------------
    你学过windows sdk编程再来问吧,这句话可让俺伤心了现在要把外部进程的一个窗口,变成本进程的. 
    ------------------------------------------
    这句话本身就是有问题的,从消息循环的角度来讲,你没有消息循环,就没有窗口,如果你有了消息循环,窗口要变成自己的,意味着它的消息处理都跑到你的消息循环来处理,其他的???那就不懂是什么意思了.附带说一句,我对vb一窍不通,对c有点了解,从我对windows的理解角度来看,你这个根本就不通,当然也有可能我没理解到你的意思,又或者我对windows的窗口原理理解不够透彻
      

  2.   

    记 的看见过一个例子
    能把别的程序放到自己的窗口
    用的是 loadlibily 
    忘了
      

  3.   

    如果能把属于其他进程的窗口变成自己的,那所有这些有关跨进程HOOK、创建远程线程的技术可以休矣,真不明白微软为什么还不辞辛苦地在WIN2000以后弄出个CREATEREMOTETHREAD是做什么,为了显示自己的软件工程师水平有多高?如果不是的话,那么就是提问的人被一些似是而非的现象给蒙蔽了。
    不要轻易说没有不可能的事情,那和人定胜天好象如出一辙。
      

  4.   

    myxmouse(小老鼠) 说的应该是 LoadLibrary这个函数吧. 
      

  5.   

    那就是属于跨进程注入,LOADLIBRARY是要用到的,CREATEREMOTETHREAD也是要的还有VIRTUALALLOC也是要的,GETPROCADDRESS等等,此类文章推荐WINDOWS核心编程一书,里面有提到三种跨进程边界的注入办法。
      

  6.   

    现在vb版的高手好象少了很多,province_(雍昊) 是这里比较优秀的一个了.
      

  7.   

    只是把窗口变成本程序可以用api:setparent函数.不过不知道这样有什么用?
    那个窗口还是属于原来的进程,跟本进程无关.
      

  8.   

    其实我只想要效果,内部是不是本进程不要紧,setparent 可以用,但执行后,外部窗口变成了本进程窗口的一个子窗口, 这样的话,子窗口只能显示在父窗口的内部, 有没有方法,让这个外部进程的窗口,可以随便显示出来,但又从属于本进程的窗口.
      

  9.   

    其实我只想要效果,内部是不是本进程不要紧,setparent 可以用,但执行后,外部窗口变成了本进程窗口的一个子窗口, 这样的话,子窗口只能显示在父窗口的内部, 有没有方法,让这个外部进程的窗口,可以随便显示出来,但又从属于本进程的窗口.================================================================
    那要怎么显示?随便显示又是什么意思?
    (搞不懂,现在的需求越来越怪,难倒是我老了?................)
      

  10.   

    用SetWindowLong给窗体加上WS_EX_APPWINDOW属性
      

  11.   

    还是用hook比较好吧。
    如果要把一个窗口据为己有,至少也要给这个窗口提供一个线程啊。
    win32 的每个线程有一个消息队列,供该线程所有的窗口使用。如果想把一个窗口完全变为自己的,就得想办法把该窗口与其原来的线程断开...
    想想就晕了...
      

  12.   

    谢谢大家! 看来要真正实现的话,还得请教WINDOWS 编程高手才行,现在的vb版这方面的高手应该比较少了。 暂时用setparent等api实现表面上的功能.
      

  13.   

    Const WM_IME_CHAR = &H286
    Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
    Private Declare Function GetForegroundWindow Lib "user32" () As Long
    Private Declare Function AttachThreadInput Lib "user32" (ByVal idAttach As Long, ByVal idAttachTo As Long, ByVal fAttach As Long) As Long
    Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hWnd As Long, lpdwProcessId As Long) As Long
    Private Declare Function GetFocus Lib "user32" () As LongPublic Sub SendText(s As String)
       Dim pid As Long, i As Integer, ch As Integer, focusID As Long
       pid = GetWindowThreadProcessId(GetForegroundWindow, pid)
       AttachThreadInput pid, App.ThreadID, 1
       focusID = GetFocus
       AttachThreadInput pid, App.ThreadID, 0
       For i = 1 To Len(s)
          ch = Asc(Mid$(s, i, 1))
          SendMessage focusID, WM_IME_CHAR, ch, ByVal 0&
       Next
    End Sub
      

  14.   

    to yyz985(yyz985): 你好,请到这里贴一下,我测试一下效果如何,马上结分,谢谢!
    http://community.csdn.net/Expert/topic/4958/4958882.xml?temp=.3448603