需用c#开发程序实现如下功能:
    程序一是由c#开发的,用户可在其中输入信息,然后按确定按钮.这时候程序一自动将用户输入的信息,提交到程序二的输入信息窗口中,并模拟用户点击程序二的确定按钮.然后程序二处理用户提交的信息.如程序二未给出警告对话框,则程序一提示用户输入正确.如程序二给出警告对话框,则程序一自动点击消除此警告对话框,并且给出用户提示输入出错,要求用户重新输入.
    程序二没有提供任何接口给程序一.

解决方案 »

  1.   

    利用MessageBox.show的返回值来做
      

  2.   

    可以使用Windows API GetWindowText 和 SetWindowText来获取和设置文本框的值(当然首先你要使用EnumWindows等API获取文本框的句柄)。至于判断是否弹出了警告对话框,可以使用FindWindows 这个 API 函数。不过Windows 2000以上版本的操作系统对于GetWindowText 和SetWindowText这两个API函数的使用进行了限制,好像不允许对另外的进程使用这两个函数,解决的方法是使用钩子注入技术,就是把操作代码写入一个独立的DLL中,然后将此DLL用钩子API注入到目标进程中。
      

  3.   

    以上这些操作是比较复杂的,《C++ Builder深度探索》这本书里有比较详尽的讲解,你可以看看。
      

  4.   

    我以前用C++ Builder写过类似的钩子注入的程序,不知道用C#写出的DLL能不能成功注入。如果不行,你需要使用VC++或C++ Builder写一个DLL,并注入目标进程,然后你的C#程序调用DLL所提供的接口就行了。
      

  5.   

    如果是Vista操作系统的安全体系下,你的要求压根做不了..........
    不能直接让用户操作程序二么? 程序二有快捷键没?或者说可以键盘操作不???
    可以的话就直接全发键盘消息过去,模拟键盘的输入.
      

  6.   

    如果是Vista操作系统的安全体系下,你的要求压根做不了..........这就是我在这提问的目的,想知道一下用C#是否可行.zahuifan(杂烩饭)谢谢您的答复.如果没有更好的答案,就结分给您了!
      

  7.   

    如果你的程序1 程序2  都是自己写的,可以通过变量存储的方式解决程序间参数交互的问题或者做成 webservice 也可以;如果程序1 不是自己写的,那么在程序2中作键盘监测 就可以了。不过这个只能知道程序1做啥,不能控制程序1 ;如果想控制程序1 ,建议去内存里做手脚。
      

  8.   

    AFatPig(大肥猪)请注意申题,我说明了程序一是用C#写的,当然是自己写的了!
      

  9.   

    程序二是别人的,那就只能用Hook了,然后模拟按键。这样的技术在外挂制作上用的太多了,而且是入门的。具体的可以参考“按键精灵”。C#生成的dll已经不是真正意义上的dll了。只有借助其他编译型开发语言,如VC,Delphi,BCB等。
      

  10.   

    感觉你想做木马耶,呵呵用系统钩子可以实现你的想法,baidu一下键盘钩子,应该可以找到源代码的.