事情是这样的。前台界面程序(toolio_s.exe),启动后,在任务管理器中服务程序(我认为是)BlackTipServer.exe 自动在后台运行,toolio_s.exe 关闭后,BlackTipServer.exe 也自动退出了。我现在想自己编写一个前台程序,调用 BlackTipServer.exe 。
关键是现是什么也不知道。 只知道 toolio_s.exe 一启动 ,BlackTipServer.exe 就自动在后台运行了,在任务管理器中能看到。问题的关键是 toolio_s.exe 如何调用 BlackTipServer.exe ,并与其通信的。我简单试了一下。1. 用 DumpBin /exports BlackTipServer.exe  后,结果如下:
File Type : EXECUTABLE IMAGE   summary
       4000 .data
       D000 .rdata
       1000 .reloc
       A000 .text看来不是COM组件,没有输出任何函数。2. 在控制面板里的服务里看了一下,BlackTipServer.exe 也没有注册为服务。3.直接运行 BlackTipServer.exe ,在DOS窗口中输出五句话:
   argc = 1
   bClientID = 0
   bTestMode = 0
   nBoardIndex = 0
   bUseHscPci = 0   然后就弹出错误提示框, 内容为“SharcServer StartUp() error = 3; CreateFile   单击确定,程序就退出了。   看来是要给 BlackTipServer.exe 传递正确的参数才行。4. 用 UltraEdit32 直接打开 Toolio_s.exe ,查找ASCII串 "BlackTip" 找到几处,   有一处内容为:CimIOCard.ToolCommCardConstants.BlackTipClient.BittwareDSPCardChannel.ClientApp   到现在也不知道怎么自己编写前台的客户端程序来调用后台的 BlackTipServer.exe5. 用 OllyICE 调试了一下Toolio_s.exe,被汇编代码给弄蒙了。   大家给点提示,应该从那里入手。

解决方案 »

  1.   

    也可以挂接下CreateProcess这个API,看下Toolio_s.exe调用BlackTipServer.exe是传什么值了
      

  2.   

    自己写一个小程序,显示命令行参数,用其代替BlackTipServer.exe让toolio_s.exe加载,即可得知参数的写法。
      

  3.   

    1 反汇编toolio_s.exe,看看其是如何创建子进程的;
    2 使用api monitor等工具监控toolio_s.exe进程,看看其是如何创建子进程的;
      

  4.   

    BlackTipServer.exe是ATL exe server?可能有另外一个dll负责两个exe通过LPC通信。
      

  5.   

    结束简单
    启动主要应该是命令行控制
    ReadProcessMemory可以获取进程的启动命令行
    你可以先看看BlackTipServer.exe的启动命令行是怎么写的
      

  6.   

    使用 cnzdgs 的方法,写了一个现实参数的小程序,发现BlackTipServer.exe 就接受三个参数 1,0,0
    我在DOS下运行 BlackTipServer.exe 1 0 0 ,发现BalckTipServer.exe 运行不报错了。
    但是我还没弄明白BlackTipServer.exe 到底是什么? 是ATL Server?(我找注册表,DUMPBIN了都没看出来,就像是一个但纯的一个EXE)。我关键是先知道它是如何与 toolio_s.exe 进行通信的。我要自己编写一个  toolio_s.exe程序。 难道是 toolio_s.exe 创建完 BlackTipServer.exe 后,通过进程通信的方式访问BlackTipServer.exe ? 
    那么怎么能知道他们是如何通信的?对了。我看现象是 toolio_s.exe 启动后, BlackTipServer.exe 就启动。那位能告诉我,如何获得是那个程序调用的BlackTipServer.exe ? 也许在他俩之间还有别的程序在起作用。