能不能将运算式直接传给计算器,然后用代码来实现最后的“=”号运算。小白这里遇到了点问题,希望大家可以帮忙想想。

解决方案 »

  1.   

    可以
    IntPtr hwndCalc = FindWindow ( null, "计算器" ); //查找计算器的句柄
      if ( hwndCalc != IntPtr.Zero )
      {
      IntPtr hwndThree = FindWindowEx ( hwndCalc, 0, null, "1" ); //获取按钮3 的句柄
      IntPtr hwndPlus = FindWindowEx ( hwndCalc, 0, null, "+" );   
    }
      

  2.   

    谢谢wuyq11的答复,恩,先试试。
      

  3.   

    谢谢jx0797的指示。
    是这样的,我现在想试试wuyq11的方法,但是我在下面的代码中出现了点问题,调不下去了。
    [DllImport("user32.dll",EntryPoint="FindWindow")]
    public static extern IntPtr FindWindow(string strclass, string strname);
    public static extern IntPtr FindWindowEx(IntPtr hwndCalc, IntPtr child, string first, string second);
     在第三行代码处出现了警告,程序运行的时候报错了。
    说是“方法FindWindowEx被标记为外部对象,并且它上面没有任何属性,请考虑添加一个dllimport”。
    因为同学这两天就要结果,所以着急了些,还请各位能帮忙看看。
      

  4.   

    问题解决了,受wuyq11的启发,找到了一遍解决文章。大致如下
    一、使用Process将计算器窗口先调出来,
    proc.StartInfo.FileName = @"calc.exe";
    //调出计算器
    proc.Start();
    二、 读取文件,保存到全局变量strCaculate中。
    三、使用FindWindow激活计算器窗口。
    四、利用FindWindowEx和SendMessage发送消息给计算器,让计算器执行命令。
    参考代码为:http://hi.baidu.com/enus/blog/item/3d5d49ef95309e1ffdfa3cb4.html
    其实人家把问题都解决了,发现自己果然很多东西还需要学习呢。
    谢谢大家。
      

  5.   

    ps:findwindowex无法在win7下找到数字键和符号键,这样做难度比自己写个计算器还大。
      

  6.   

    wuyazhe说得很对,我现在给朋友发过去了,但是他的系统是vista的。vista中使用findwindowex获取字符串“(”的句柄时,就不行了,取得的值为0.  这下惨了。有没有什么办法呢?