Delphi2007.net 首页

Delphi 非技术区  |  Delphi VCL组件开发及应用  |  Delphi 数据库相关  |  Delphi Windows SDK/API
Delphi 网络通信/分布式开发  |  Delphi 语言基础/算法/系统设计  |  Delphi GAME,图形处理/多媒体  |  Delphi 笔记

进程间通信(向"计算器"发送消息)

作者:lnjamn   关键字:   时间:2005-12-30 5:07:46

//在WinXP下测试通过
//首先运行calc.exe
//修改"计算器"的CE按钮,使其Visible为False或者Enabled为False
procedure TForm1.Button4Click(Sender: TObject);
Var
  hwnd_Calc, hwnd_btn_CE : HWND;
begin
  hwnd_Calc := FindWindow(nil, '计算器');
  if hwnd_Calc<> 0 then
  begin
    hwnd_btn_CE := FindWindowEx(hwnd_Calc, 0, 'Button', 'CE');
    ShowWindow (hwnd_btn_CE, SW_HIDE) ;    // Visible := False; 
    //EnableWindow (hwnd_btn_CE, FALSE) ;  // Enabled := False; 
  end;
end;

//向"计算器"发送 ALT+E
procedure TForm1.Button7Click(Sender: TObject);
Var
  hwnd_Calc, hwnd_btn_CE : HWND;
begin
  hwnd_Calc := FindWindow(nil, '计算器');
  if hwnd_Calc<> 0 then
  begin
    setforegroundwindow(hwnd_Calc);
    keybd_event(VK_MENU, MapVirtualKey(VK_MENU, 0), 0, 0);
    keybd_event(ord('E'), MapVirtualKey(ord('E'), 0), 0, 0);
    keybd_event(ord('E'), MapVirtualKey(ord('E'), 0), KEYEVENTF_KEYUP, 0);
    keybd_event(VK_MENU, MapVirtualKey(VK_MENU, 0), KEYEVENTF_KEYUP, 0);
  end;
end;