我可以写程序向其它应用程序发送键.就好象用键盘对其它应用程序一样.但有些键不作用.
如:ctrl-有效
ctrl+s,无效
ctrl+p,无效.(但不知道为什么,ctrl+s对计算嚣却能够返回其计算结果.)
我期望用alt+F激活菜单,想通过光标键下移来选择要应的功能键,但无效.(该子菜单无快键,只能用光标下移键操作). 请相关有丰富经验的人指点.以下是软件原代码.
如:ctrl-有效
ctrl+s,无效
ctrl+p,无效.(但不知道为什么,ctrl+s对计算嚣却能够返回其计算结果.)
我期望用alt+F激活菜单,想通过光标键下移来选择要应的功能键,但无效.(该子菜单无快键,只能用光标下移键操作). 请相关有丰富经验的人指点.以下是软件原代码.
解决方案 »
- bigint类型变量 , 如果用inttohex函数操作 是不是会有错 怎么解决?
- 如何将下面的代码翻译成DELPHI?struct vcinthdr{word retransmission:5;word size:11;};
- 如何用delphi获得机器的外网地址
- 请delphi 高手帮忙!!
- ttimer的使用问题
- 有关TDateTimePicker的问题
- 怎么样获取combobox里的值?
- 请教:自己定义的ado记录集(Recordset)下定位某一条记录的命令是什么?
- 用那个函数确定一个字符串的字节长度(急)
- 采集卡问题
- 如何建立一个网页模块?
- 如何实现用delphi启动SQL SERVER
unit sndkey32;interfaceUses SysUtils, Windows, Messages;Function SendKeys(SendKeysString : PChar; Wait : Boolean) : Boolean;
function AppActivate(WindowName : PChar;var newhnd:integer) : boolean;{Buffer for working with PChar's}const
WorkBufLen = 40;
var
WorkBuf : array[0..WorkBufLen] of Char;implementation
type
THKeys = array[0..pred(MaxLongInt)] of byte;
var
AllocationSize : integer;(*
Converts a string of characters and key names to keyboard events and
passes them to Windows.Example syntax:SendKeys('abc123{left}{left}{left}def{end}456{left 6}ghi{end}789', True);*)
Function SendKeys(SendKeysString : PChar; Wait : Boolean) : Boolean;
type
WBytes = array[0..pred(SizeOf(Word))] of Byte;
TSendKey = record
Name : ShortString;
VKey : Byte;
end;
const
{Array of keys that SendKeys recognizes. If you add to this list, you must be sure to keep it sorted alphabetically
by Name because a binary search routine is used to scan it.} MaxSendKeyRecs = 41;
SendKeyRecs : array[1..MaxSendKeyRecs] of TSendKey =
(
(Name:'BKSP'; VKey:VK_BACK),
(Name:'BS'; VKey:VK_BACK),
(Name:'BACKSPACE'; VKey:VK_BACK),
(Name:'BREAK'; VKey:VK_CANCEL),
(Name:'CAPSLOCK'; VKey:VK_CAPITAL),
(Name:'CLEAR'; VKey:VK_CLEAR),
(Name:'DEL'; VKey:VK_DELETE),
(Name:'DELETE'; VKey:VK_DELETE),
(Name:'DOWN'; VKey:VK_DOWN),
(Name:'END'; VKey:VK_END),
(Name:'ENTER'; VKey:VK_RETURN),
(Name:'ESC'; VKey:VK_ESCAPE),
(Name:'ESCAPE'; VKey:VK_ESCAPE),
(Name:'F1'; VKey:VK_F1),
(Name:'F10'; VKey:VK_F10),
(Name:'F11'; VKey:VK_F11),
(Name:'F12'; VKey:VK_F12),
(Name:'F13'; VKey:VK_F13),
(Name:'F14'; VKey:VK_F14),
(Name:'F15'; VKey:VK_F15),
(Name:'F16'; VKey:VK_F16),
(Name:'F2'; VKey:VK_F2),
(Name:'F3'; VKey:VK_F3),
(Name:'F4'; VKey:VK_F4),
(Name:'F5'; VKey:VK_F5),
(Name:'F6'; VKey:VK_F6),
(Name:'F7'; VKey:VK_F7),
(Name:'F8'; VKey:VK_F8),
(Name:'F9'; VKey:VK_F9),
(Name:'HELP'; VKey:VK_HELP),
(Name:'HOME'; VKey:VK_HOME),
(Name:'INS'; VKey:VK_INSERT),
(Name:'LEFT'; VKey:VK_LEFT),
(Name:'NUMLOCK'; VKey:VK_NUMLOCK),
(Name:'PGDN'; VKey:VK_NEXT),
(Name:'PGUP'; VKey:VK_PRIOR),
(Name:'PRTSC'; VKey:VK_PRINT),
(Name:'RIGHT'; VKey:VK_RIGHT),
(Name:'SCROLLLOCK'; VKey:VK_SCROLL),
(Name:'TAB'; VKey:VK_TAB),
(Name:'UP'; VKey:VK_UP)
); {Extra VK constants missing from Delphi's Windows API interface}
VK_NULL=0;
VK_SemiColon=186;
VK_Equal=187;
VK_Comma=188;
VK_Minus=189;
VK_Period=190;
VK_Slash=191;
VK_BackQuote=192;
VK_LeftBracket=219;
VK_BackSlash=220;
VK_RightBracket=221;
VK_Quote=222;
VK_Last=VK_Quote; ExtendedVKeys : set of byte =
[VK_Up,
VK_Down,
VK_Left,
VK_Right,
VK_Home,
VK_End,
VK_Prior, {PgUp}
VK_Next, {PgDn}
VK_Insert,
VK_Delete];const
INVALIDKEY = $FFFF {Unsigned -1};
VKKEYSCANSHIFTON = $01;
VKKEYSCANCTRLON = $02;
VKKEYSCANALTON = $04;
UNITNAME = 'SendKeys';
var
UsingParens, ShiftDown, ControlDown, AltDown, FoundClose : Boolean;
PosSpace : Byte;
I, L : Integer;
NumTimes, MKey : Word;
KeyString : String[20];
begin
MessageBox(0,Message,UNITNAME,0);
end;