那是因为OUTLOOK EXPRESS提供了接口

解决方案 »

  1.   

    通过CDO
    在MSDN查看索引MAPI
      

  2.   

    com接口的原因啊。
    你要是你的CDocument支持ole的话,你的数据也可以让别人随便改。
      

  3.   

    如果outlook不提供接口的话,用常规的方法是无法实现的。当然,可以嵌入dll来试试。
      

  4.   

    有谁知道Express,IE,Explorer等的接口?或知道到哪去查相关的资料?
      

  5.   

    OLE接口,我就用PB作过一个程序,这边在EXCEL中修改数据,那边的数据窗口跟着变或反之。当然关键是比盖这个家伙留接口。
    至于在别人的窗口中加按钮,当然需要PLUG_IN。
      

  6.   

    写一个dll,用注入到目标进程中,用SetWindowLong接管它的窗口循环过程。
      

  7.   

    得到其它进程的数据可调用ToolHelp函数
      

  8.   

       没这么难吧?敢称歌德巴赫的猜想。操作别的进程的内存:
       1.用Process32First和Process32Next可以玫举所有的进程(Window95/98实现了,WINNT4.0以及一下没有实现,Win2000实现了,如果是用NT4的话,就比较麻烦了,要用Performanance Data,太麻烦了,不说了。)
       2.用VirtualQueryEx可以得到一个进程的内存的信息,如开始地址等(95/98/NT4/2000都实现了,就NT3.5没实现,要自己写,很麻烦的,不说了。)
       3.然后用ReadProcessMemory和WriteProcessMemory就可以实现对某一进程内存的修改,这两个函数95/98/NT4/2000都实现了,读和写的方式是通过ReadPorcessMemory将内存块读到本进程中,就是在本进程上的一个拷贝,然后对这个拷贝执行各种操作,反正是在本进程中地一个拷贝(本进程中的一片内存),随你怎么操作啦,再将内存块用WriteProcessMemory写回去,就实现了对该内存数据的修改,象金山游侠、FPE那样的操作实际都是先对在本进程中的拷贝进行操作,然后将拷贝写回去。
      

  9.   

    WIN32一共有4GB的虚存空间,其中用户进程占有2GB。从每个进程自己的角度来看,它都是独占2GB的,正是因为这个原因,每个进程都要单独加载自己的DLL,而在Win3.1下各个进程师共享DLL的。    WinNT 下用户拥有2GB的专用地址,操作系统占用2GB空间分配如下。在用户的2GB空间中,在开始有64KB和结束有2个64KB用于昨为内存的分界区域,是不能访问的,如你访问0的地址是非法的,就是这个原因。这样呢只能访问2GB减去192KB的空间,从0x10000到0x7FFEFFFF的范围。这也就是你的每个进程的能访问的开始和结束地址。    Windows 95/98下,给每个进程分配2GB的专用地址,把剩余的2GB分为系统空间(1GB)和用于所有的共享内存区域的单个共享空间(1GB);这1GB的共享区域对于用户态是可写的,任何进程都可以写道共享内存区域或者映射文件。所以不安全;而WINNT在这点上是不一样的,他将共享内存放在装用的进程地址空间,避免了这个问题。因为没有95/98没有提供分解区域,所以访问的区域就是从000000000到7FFFFFFF的范围,也就是你要求的开始和结束地址。象FPE等游戏修改工具就是利用了这个原理
      

  10.   

    其实Office组件都支持自定义按钮,也就是编写宏了,用VBA好了
      

  11.   

    用Detours,它就是专门做这个用的。ms有一些重要技术用到了它,如DCOM。
    research.microsoft.com/sn/detours
      

  12.   

    又是Detours,有谁能详细给咱初学者讲讲吗?
      

  13.   

    我想你举的OutLook Express的例子一定是用VBA编的!!!!
      

  14.   

    因为用VBA太简单,而用VC几乎不可能。VC只能做出象FPE那种程序,通过搜索定位变量在内存中的地址,进行改动,或者截获应用程序的函数调用。不然即使你完全知道OutLook Express的内部结构,还是很难完成这样的工作。
      

  15.   

    FireAngel说的方法是可行的,但是如果一个程序有多个窗口的话,枚举进程时也许就找不到要修改的对象。往往需要一个特定的值来确定要修改的进程,如对话框的Caption等。还是找SDK去看有没有接口吧。
      

  16.   

    当API函数和系统消息都被拦截,那么一切都将掌握!