大名鼎鼎的WinVNC远程控制软件几年前就公开了VC源码,不过一直没有DELPHI的源码,最近终于从网上搜索到的,对比VC的源码,基本上是直接转过来的,不过有点问题,只能截获到当前EXE主窗口的消息,很奇怪,大家看看,哪里有问题,希望能解决这个问题
由于CSDN的回复长度有限制,所以贴在了大富翁论坛上,地址:
http://www.delphibbs.com/delphibbs/DispQ.asp?LID=3421488

解决方案 »

  1.   

    VC的更长:
    http://www.vckbase.com/code/listcode.asp?mclsid=9&sclsid=919
      

  2.   

    饭桶 老是搞这些HOOK MM 电脑的事??不过,搬板凳来听课~
      

  3.   

    晚上看了下代码,错误很多,感觉很难修改,因为你一堆东西很杂乱的堆在一起,
    简单的修改你的错误:>>只能截获到当前EXE主窗口的消息
    最简单,可以如下修改:
    //  PostMessage(
    //    hVeneto,
    //    UpdateRectMessage,
    //    vwParam,
    //    vlParam
    //    );  PostMessage(
        HWND_BROADCAST,
        UpdateRectMessage,
        vwParam,
        vlParam
        );hVeneto 改为 HWND_BROADCAST还有几种其它的改法, 代码不是直接修改你的,有点小区别,但原理是一样的,如:
    library hthooks;function StartHook(hForm: THandle): Integer; stdcall;
    begin
     ....
        hMemFile := CreateFileMapping(MAXDWORD, nil, PAGE_READWRITE, 0,
          SizeOf(THandle), memFileName);
        pFormHnd := MapViewOfFile(hMemFile, FILE_MAP_WRITE, 0, 0, 0);
        if pFormHnd = nil then
        begin
          Result := 4;
          UnhookWindowsHookEx(hMouseHook);
          Exit;
        end else
          pFormHnd^ := hForm;begin
      DLLProc := @EntryProc;
      hMemFile := OpenFileMapping(FILE_MAP_WRITE, False, memFileName);
      if hMemFile <> 0 then
        pFormHnd := MapViewOfFile(hMemFile, FILE_MAP_WRITE, 0, 0, 0);
    end.
    全局HOOK, 在不同的程序,对应的 hVeneto 的值是不同的,这点如果你明白了,你的问题所在就很清楚了。另外,一些声明错了,如stdcall, cdecl  
    另外,label1, label2 的取值有些问题,
    dll中的消息处理,也是一塌糊涂的感觉!
      

  4.   

    http://community.csdn.net/Expert/topic/4702/4702854.xml?temp=.6993524各位高手我这里有问题请大家指点一下
      

  5.   

    另外,你的代码可能HOOK到 paint 之类的,然后,你又给刷新 label1, label2, 这样可能有问题,这部分,我没细看 
    自己注意下