回答不出这个问题的都是傻瓜!!!!!
在VB中有一个例子,就是模拟按键“1”“+”“1”“=”发送给计算器,计算机显示结果为2,请问在delphi中如何实现该功能,谢谢高手指点迷津,要求有完整的例子程序。

解决方案 »

  1.   

    我回答
    根据vb的例子弄到delphi上就可以了。
    哈哈。
    楼主问这个问题就是回答不上了。当然就是**了
      

  2.   

    真令人着急,怎么大家都这么不争气,激将法都失效了。
    好吧,长话短说,delphi中怎样发送模拟按键事件给其他应用程序,这下应该有人回答得出了吧。
      

  3.   

    当输入=是执行计算事件!
    用ASCII值判断!
      

  4.   

    你放一个编辑框,用来显示输入的值和计算结果;
    放许多按钮,分别将caption设置为:1 2 + - * / =等
    每按一下触发事件就可以了
      

  5.   

    用几个控件就可以了
    你可以用按钮放数字和运算符的
    比如
    button1的caption为1
    button2的caption为2
    button3的caption为+
    button4的caption为=
    text1的test属性为空
    定义两个变量整型变量x和y、一个字符型变量c
    在button1按钮按下的时候,触发的事件是用x记录下数值代码如下:
     x:=strtoint(button1.caption);
    button2按钮按下的时候,触发的事件是用y记录下数值代码如下
     y:=strtoint(button2.caption);
    在button3按钮按下的时候用字符型变量c记录下运算符号
     c:=button3.capition;
    当button4按钮按下的时候写下如下的代码:
    text1.text:=inttostr(x+y);
    这样在text1中就会显示结果了
    也可以这样更加完善,可以做其他运算
     if c="+" then
       text1.text:=inttostr(x+y);
     if c="-" then 
       text1.text:=inttostr(x-y);
    ……依次类推
      

  6.   

    大家请仔细看题目,不是要编译个计算器软件,这种软件我都编了好几个了,网路上流传的Power克格勃 类似黑客软件 都是我编的,难道还要问大家如何编写一个计算器。
    再仔细看看题目,是要求编译个delphi程序,能够发送按键“1”“+”“1”“=”这五个按键给window自带的计算器。不是高手请不要灌水。谢谢
      

  7.   

    傻瓜的办法,先找到计算器的窗口,还找到该窗口的按钮的HWND,一一发送鼠标按下消息type
      TBtnWnd = packed record
        btn_1: HWND;
        btn_plus: HWND;
        btn_equ: HWND;
      end;
      PBtnWnd = ^TBtnWnd;procedure TForm1.Button1Click(Sender: TObject);
      function enum(AWnd: HWND; AParam: LPARAM): BOOL; stdcall;
      var
        buf: array[0..63] of Char;
      begin
        if (GetClassName(AWnd, buf, 64)<>0)
        and SameText(buf, 'Button') then
        begin
          if GetWindowText(AWnd, buf, 64)<>0 then
          begin
            if buf = '1' then
              PBtnWnd(AParam)^.btn_1 := AWnd
            else if buf = '+' then
              PBtnWnd(AParam)^.btn_plus := AWnd
            else if buf = '=' then
              PBtnWnd(AParam)^.btn_equ := AWnd;
          end;
        end;
        Result := True;
      end;
    var
      w: HWND;
      btn_wnd: TBtnWnd;
    begin
      w := FindWindow('SciCalc', '计算器');
      if w<>0 then
      begin
        FillChar(btn_wnd, sizeof(btn_wnd), 0);
        EnumChildWindows(w, @enum, Integer(@btn_wnd));
        if (btn_wnd.btn_1<>0)
        and(btn_wnd.btn_plus<>0)
        and(btn_wnd.btn_equ<>0) then
        begin
          SendMessage(btn_wnd.btn_1, WM_LBUTTONDOWN, MK_LBUTTON, 0);
          SendMessage(btn_wnd.btn_1, WM_LBUTTONUP, MK_LBUTTON, 0);
          SendMessage(btn_wnd.btn_plus, WM_LBUTTONDOWN, MK_LBUTTON, 0);
          SendMessage(btn_wnd.btn_plus, WM_LBUTTONUP, MK_LBUTTON, 0);
          SendMessage(btn_wnd.btn_1, WM_LBUTTONDOWN, MK_LBUTTON, 0);
          SendMessage(btn_wnd.btn_1, WM_LBUTTONUP, MK_LBUTTON, 0);
          SendMessage(btn_wnd.btn_equ, WM_LBUTTONDOWN, MK_LBUTTON, 0);
          SendMessage(btn_wnd.btn_equ, WM_LBUTTONUP, MK_LBUTTON, 0);
        end;
      end;
    end;
    运行后,计算器得出正确的值:2