Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.08.17;
Скачать: [xml.tar.bz2];

Вниз

как програмно нажать на клавиши   Найти похожие ветки 

 
DJ_UZer ©   (2008-07-15 00:49) [0]

привет всем! пожалуйста подсажите как в своем приложении можно програмно нажать на клавиши? например на ctrl+Y?


 
KilkennyCat ©   (2008-07-15 01:03) [1]

{PostKeyEx32 function}

procedure PostKeyEx32(key: Word; const shift: TShiftState; specialkey: Boolean);
{************************************************************
* Procedure PostKeyEx32
*
* Parameters:
*  key    : virtual keycode of the key to send. For printable
*           keys this is simply the ANSI code (Ord(character)).
*  shift  : state of the modifier keys. This is a set, so you
*           can set several of these keys (shift, control, alt,
*           mouse buttons) in tandem. The TShiftState type is
*           declared in the Classes Unit.
*  specialkey: normally this should be False. Set it to True to
*           specify a key on the numeric keypad, for example.
* Description:
*  Uses keybd_event to manufacture a series of key events matching
*  the passed parameters. The events go to the control with focus.
*  Note that for characters key is always the upper-case version of
*  the character. Sending without any modifier keys will result in
*  a lower-case character, sending it with [ssShift] will result
*  in an upper-case character!
// Code by P. Below
************************************************************}
type
  TShiftKeyInfo = record
    shift: Byte;
    vkey: Byte;
  end;
  byteset = set of 0..7;
const
  shiftkeys: array [1..3] of TShiftKeyInfo =
    ((shift: Ord(ssCtrl); vkey: VK_CONTROL),
    (shift: Ord(ssShift); vkey: VK_SHIFT),
    (shift: Ord(ssAlt); vkey: VK_MENU));
var
  flag: DWORD;
  bShift: ByteSet absolute shift;
  i: Integer;
begin
  for i := 1 to 3 do
  begin
    if shiftkeys[i].shift in bShift then
      keybd_event(shiftkeys[i].vkey, MapVirtualKey(shiftkeys[i].vkey, 0), 0, 0);
  end; { For }
  if specialkey then
    flag := KEYEVENTF_EXTENDEDKEY
  else
    flag := 0;

  keybd_event(key, MapvirtualKey(key, 0), flag, 0);
  flag := flag or KEYEVENTF_KEYUP;
  keybd_event(key, MapvirtualKey(key, 0), flag, 0);

  for i := 3 downto 1 do
  begin
    if shiftkeys[i].shift in bShift then
      keybd_event(shiftkeys[i].vkey, MapVirtualKey(shiftkeys[i].vkey, 0),
        KEYEVENTF_KEYUP, 0);
  end; { For }
end; { PostKeyEx32 }

// Example:

procedure TForm1.Button1Click(Sender: TObject);
begin
  //Pressing the Left Windows Key
 PostKeyEx32(VK_LWIN, [], False);

  //Pressing the letter D
 PostKeyEx32(Ord("D"), [], False);

  //Pressing Ctrl-Alt-C
 PostKeyEx32(Ord("C"), [ssctrl, ssAlt], False);
end;


 
DJ_UZer ©   (2008-07-15 01:52) [2]

KilkennyCat, спасибо!


 
Германн ©   (2008-07-15 01:57) [3]


> DJ_UZer ©   (15.07.08 01:52) [2]
>
> KilkennyCat, спасибо!
>

Ну и за что спасибо?
Ты что сдаёшь зачет по программированию в кулинарном техникуме?


 
KilkennyCat ©   (2008-07-15 02:07) [4]


> Германн ©   (15.07.08 01:57) [3]

Не мешай естественному отбору ;)


 
Vikindos ©   (2008-07-15 02:09) [5]

=)


 
DJ_UZer ©   (2008-07-15 02:39) [6]

Германн, спасибо за код, щас пойду eго разбeрать...


 
Германн ©   (2008-07-15 02:39) [7]


> KilkennyCat ©   (15.07.08 02:07) [4]
>
>
> > Германн ©   (15.07.08 01:57) [3]
>
> Не мешай естественному отбору ;)
>

Ну дык стараюсь.Но твоя шпаргалка ?



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2008.08.17;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.051 c
4-1194264584
msn777
2007-11-05 15:09
2008.08.17
Cогласовать вызов из разных потоков WriteFile ReadFile FilePointe


15-1211462902
vajo
2008-05-22 17:28
2008.08.17
Может у кого-нибудь есть дрова для материнки Foxconn WinFast N152


1-1196691015
antonn
2007-12-03 17:10
2008.08.17
авторизация в Novell


2-1215754141
Новичек
2008-07-11 09:29
2008.08.17
Посылка сообщения внутри DLL.


2-1216181931
artos
2008-07-16 08:18
2008.08.17
Проблема с DBLookupcombo от InfoPower4000





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский