Главная страница
    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.045 c
2-1215801511
Чайник
2008-07-11 22:38
2008.08.17
Редактирование записи в базе


2-1216055751
QMike
2008-07-14 21:15
2008.08.17
нарисовать на канве TImage


2-1216104030
workbench
2008-07-15 10:40
2008.08.17
модальное окно


15-1214850088
hmel
2008-06-30 22:21
2008.08.17
Глубокоувожаемые мастера помогите! Делаю программу,где нужно использовать круговые регуляторы...


1-1196857719
9899100
2007-12-05 15:28
2008.08.17
закрыть окно





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский