CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  VCL组件开发及应用

用sendmessage如何向一个窗题发送一个固定的键值

楼主lxlzq(石头)2002-10-28 14:06:49 在 Delphi / VCL组件开发及应用 提问

比如   向某个窗题发送一个‘enter’ 问题点数:100、回复次数:3Top

1 楼outer2000(天外流星)回复于 2002-10-28 14:11:43 得分 50

The   keybd_event   function   synthesizes   a   keystroke.   The   system   can   use   such   a   synthesized   keystroke   to   generate   a   WM_KEYUP   or   WM_KEYDOWN   message.   The   keyboard   driver's   interrupt   handler   calls   the   keybd_event   function.    
   
  VOID   keybd_event(  
   
          BYTE   bVk, //   virtual-key   code  
          BYTE   bScan, //   hardware   scan   code  
          DWORD   dwFlags, //   flags   specifying   various   function   options  
          DWORD   dwExtraInfo   //   additional   data   associated   with   keystroke  
        );  
  Top

2 楼forgot(忘记forgot2000)回复于 2002-10-28 14:16:30 得分 40

unit   Umain;  
   
  interface  
   
  uses  
      Windows,   Messages,   SysUtils,   Classes,   Graphics,   Controls,   Forms,   Dialogs,  
      Spin,   StdCtrls;  
   
  type  
      TForm1   =   class(TForm)  
          Button1:   TButton;  
          Label1:   TLabel;  
          Edit1:   TEdit;  
          Label2:   TLabel;  
          SpinEdit1:   TSpinEdit;  
          Label3:   TLabel;  
          Edit2:   TEdit;  
          procedure   Button1Click(Sender:   TObject);  
      private  
          {   Private   declarations   }  
      public  
          {   Public   declarations   }  
      end;  
   
  var  
      Form1:   TForm1;  
      cnt   :   Integer   =   0;  
      function   EnumWindowsProc(Hwnd:THandle;lParam:LParam):boolean;Stdcall;  
      function   EnumChildProc(Hwnd:THandle;lParam:LParam):boolean;Stdcall;  
   
  implementation  
   
  {$R   *.DFM}  
   
  function   EnumWindowsProc(Hwnd:THandle;lParam:LParam):boolean;  
  var  
      WindowCaption:array[0..254]   of   Char;  
  begin  
      GetWindowText(Hwnd,WindowCaption,255);  
      if   StrPas(WindowCaption)=Form1.Edit1.Text   then  
      begin  
          cnt   :=   0;  
          EnumChildWindows(Hwnd,@EnumChildProc,0);  
          Result   :=   False;  
          Exit;  
      end;  
      Result   :=   True;  
  end;  
   
  function   EnumChildProc(Hwnd:THandle;lParam:LParam):boolean;  
  var  
      WindowCaption,WindowClass:array[0..254]   of   Char;  
  begin  
      GetClassName(Hwnd,WindowClass,255);  
      if   Pos('EDIT',UpperCase(StrPas(WindowClass)))   >   0   then  
      begin  
          Inc(cnt);  
          SendMessage(Hwnd,WM_SETTEXT,0,LongInt(PChar(IntToStr(cnt))));  
          ////此处换成SendMessage(Hwnd,WM_SETTEXT,0,LongInt(PChar('你想送的字符串')));即可  
      end;  
      Result   :=   True;  
  end;  
   
  procedure   TForm1.Button1Click(Sender:   TObject);  
  begin  
      Enumwindows(@EnumWindowsProc,0);  
  end;  
   
  end.Top

3 楼pazee(耙子)(今年过年不收礼,收礼只收尿不湿)回复于 2002-10-28 14:21:00 得分 10

用PostMessage   好些。  
  handle是你那个窗体的handle  
   
  PostMessage(Handle,   WM_KEYDOWN,   VK_RETURN,   0)Top

相关问题

  • 键值问题
  • 新手,键值问题
  • 关于键值的问题
  • 虚拟键值的问题
  • 键值转换的问题
  • 关于键盘按键 键值问题
  • 请问简单的问题(关于按键键值问题)?
  • 关于读注册表键值的一个问题。
  • 注册表中删除键值的问题,不能删除!
  • 关于系统键盘键值的问题?回答给100分

关键词

  • keystroke
  • tlabel
  • keybd
  • tform
  • wm
  • label
  • event
  • function

得分解答快速导航

  • 帖主:lxlzq
  • outer2000
  • forgot
  • pazee

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo