回答不出这个问题的都是傻瓜!!!!!
在VB中有一个例子,就是模拟按键“1”“+”“1”“=”发送给计算器,计算机显示结果为2,请问在delphi中如何实现该功能,谢谢高手指点迷津,要求有完整的例子程序。
在VB中有一个例子,就是模拟按键“1”“+”“1”“=”发送给计算器,计算机显示结果为2,请问在delphi中如何实现该功能,谢谢高手指点迷津,要求有完整的例子程序。
解决方案 »
- 熟悉点云数据处理,一起讨论讨论
- Delphi主程序和DLL如何用共同一個Session連接到Oracle數據庫
- 谁能告诉我COM到底为什么要使用类厂?明白后就结帖
- delphi快捷键的问题
- QR的数据显示问题?
- 如何实现从form1打开form2,点击form1,form1得到焦点,但form2还在form1前显示???
- 超市连锁,可以完全用delphi 编程吗?
- 请教高手!请问那位大侠知道Delphi中能获取cpu利用率和过程占用cpu率的两个API函数!感激不尽,谢谢
- 如何从硬盘安装Delphi5??
- 数据库方面的高手请进.是关于ADO的问题.
- 怎么样从WORD文件中读取数据写入到TXT文件。高手帮忙~
- 关于文件复制:copyfile路径问题!
根据vb的例子弄到delphi上就可以了。
哈哈。
楼主问这个问题就是回答不上了。当然就是**了
好吧,长话短说,delphi中怎样发送模拟按键事件给其他应用程序,这下应该有人回答得出了吧。
用ASCII值判断!
放许多按钮,分别将caption设置为:1 2 + - * / =等
每按一下触发事件就可以了
你可以用按钮放数字和运算符的
比如
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);
……依次类推
再仔细看看题目,是要求编译个delphi程序,能够发送按键“1”“+”“1”“=”这五个按键给window自带的计算器。不是高手请不要灌水。谢谢
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