有一个AA程序(别人写的程序)里面有两个列表框,第一个列表框的的内容是高一所有班级的名字,第二个列表框的内容是高一每个班里面的学生名字,在第一个列表框中选择了班级的名字,第二个列表框就会自动变成这个班里面所有同学的名字(这些班级和同学名字的数据保存在一个INI文件里).而我自己做了个BB程序,目地是为了实现AA程序的自动登陆功能而写的,可是要实现AA程序的自动登陆就要在我的这个BB程序中向AA程序发送AA程序列表框中所需的班级和同学名字.请问如果我在BB程序中用POSTMESSAGE这个API把班级和同学名字发给AA程序中的两个列表框应该用哪个WINDOWS消息常量,并且在AA程序收到BB程序发送过来的班级和同学名字之后要能够自动选中列表框中与之对应的班级和同学名字.如果没有这个WINDOWS消息的话,那应该怎么实现!          谢了

解决方案 »

  1.   

    用sendmessage
    发送一个你认识的符号过去
    程序收到后就 做 Y 按钮的动作
    http://spaces.msn.com/rzpc/blog/cns!2F4381E598C667CC!115.entry
      

  2.   

    参看
    http://dev.csdn.net/article/15/15598.shtm
      

  3.   

    在WINDOWS方面没有定义好了的这种消息吗?
      

  4.   

    有些消息是windows定义好的,比较最大化,关闭,最小化.......还有很多
    但有些如果你想具体只某些动作,或者接收专门的消息,就要自定义了你可以给个button发送按下命令,..这都是windows自带的用sendmessage,发送就可以了
      

  5.   

    copico(苦涩(一路向北)) 朋友 的用sendmessage发送一个你认识的符号过去程序收到后就 做 Y 按钮的动作 !!!!!!!!!!!!!!!!!!!!!!!! 问题是那个AA程序不是我写的,我根本没办法重载他的窗口消息处理程序.我要的是BB程序发送一个能够操作AA程序中的列表框的选择某项的消息给那个列表框,好让它可以根据BB程序发送过来的内容去选择与之对应的项
      

  6.   

    copico(苦涩(一路向北)) 朋友有没有QQ,能否加你?
      

  7.   

    看来要用到SubClassing 怎么个用法?
      

  8.   

    现在这个问题解决了,可是又来了一个问题,有两个列表框,第二个列表框的内容要在第一个列表框中点击选择了某项后才会显示内容,请问我在另一个程序中用API选中了第一个列表框中的某项之后应该用哪个API再来点击这项使得第二个列表框中的内容显示出来!
      

  9.   

    to 可是又来了一个问题,有两个列表框,第二个列表框的内容要在第一个列表框中点击选择了某项后才会显示内容,请问我在另一个程序中用API选中了第一个列表框中的某项之后应该用哪个API再来点击这项使得第二个列表框中的内容显示出来!模拟鼠标操作,参看
    http://community.csdn.net/Expert/TopicView.asp?id=4724159
      

  10.   

    这个问题已经解决了,现给出代码:
         private const int LB_FINDSTRING = 0x018F;//查找列表框中符合条件的项并返回INT数常量
         private const int LB_SETCURSEL = 0x0186;//选择并加亮显示符合条件的项常量
         private const int LB_ADDSTRING = 0x0180;//向目标列表框添加一项常量
         j = FindWindowEx(cc, new IntPtr(0), "ListBox", null);//查找A程序第一个列表框,用SPY++找到的,在不同机子上句柄可能有变化,CC是这个列表框的主窗口句柄
         k = FindWindowEx(cc, j, "ListBox", null);//查找A程序第二个列表框,其它同上
         int ab=SendMessage(j, LB_FINDSTRING, 0, sr2);//发送消息给A程序第一个列表框,查询列表框中符合条件的项,并返回符合条件的INDEX值
         SendMessage(j, LB_SETCURSEL , ab, 0);//利用刚刚返回的INDEX值查找并选择加亮显示该项
        SendMessage(k, LB_ADDSTRING, 0, sr3);//向A程序的第二个列表框添加对应于第一个列表框中的子内容,SR3是个字符串变量,其内容为添加的项文本
        SendMessage(k, LB_ADDSTRING, 0, sr4);//同上
       ab=SendMessage(k, LB_FINDSTRING, 0, sr4);//发送消息给A程序第二个列表框,查询列表框中符合条件的项,并返回符合条件的INDEX值
       SendMessage(k, LB_SETCURSEL, ab, 0);利用刚刚返回的INDEX值查找并选择加亮显示该项
      

  11.   

    对了,上面忘记说了SendMessage这个API我用了两个重载的行形,第一个是:
    [DllImport("user32.dll", CharSet = CharSet.Auto)]
            private static extern int SendMessage(
             IntPtr hwnd,
             int wMsg,
             int wParam,
             int lParam
             );
    第二个是:[DllImport("user32.dll", CharSet = CharSet.Auto)]
            private static extern int SendMessage(
             IntPtr hwnd,
             int wMsg,
             int wParam,
             string lParam
             );
    两个的区别是第一个SendMessage最后一个参数是整形,第二个SendMessage最后一个参数是字符串形式,这个要注意,望大家以后多指点,小弟在此谢谢各位了!