Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Enter = Tab

Ответить
Настройки темы
Enter = Tab

Пользователь


Сообщения: 84
Благодарности: 0

Профиль | Отправить PM | Цитировать


Можно ли как нибудь перестроить клавиши впроге.

Например, нажатие Enter равносильно нажатию TAB

Отправлено: 13:05, 02-06-2003

 

Аватара для CyberDaemon

DOOMer


Сообщения: 3254
Благодарности: 438

Профиль | Отправить PM | Цитировать


В какой проге? Общее решение - перехватить клавишу и делать с ней все, что хочешь

-------
"640 K ought to be enough for anybody" Bill Gates, 1981


Отправлено: 13:11, 02-06-2003 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Пользователь


Сообщения: 84
Благодарности: 0

Профиль | Отправить PM | Цитировать


Перехватить нажатие клавиши - это просто

А вот как эмулировать нажатие клавиши TAB - вот это вопрос

Отправлено: 14:12, 02-06-2003 | #3


Аватара для CyberDaemon

DOOMer


Сообщения: 3254
Благодарности: 438

Профиль | Отправить PM | Цитировать


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.

Если нужно подробнее - могу пример на Делфи запостить.

-------
"640 K ought to be enough for anybody" Bill Gates, 1981


Отправлено: 14:20, 02-06-2003 | #4


Пользователь


Сообщения: 84
Благодарности: 0

Профиль | Отправить PM | Цитировать


Скинь мне, плиз!!!

buylov_va@kalmsu.ru

Отправлено: 14:28, 02-06-2003 | #5


Аватара для CyberDaemon

DOOMer


Сообщения: 3254
Благодарности: 438

Профиль | Отправить PM | Цитировать


Я в качестве справочника использую "Советы по Делфи" от Валентина Озерова. А он сжатый весит 3,5 метра. Такие объемы мылом.... Поиском в инете находится на раз:

Советы по Delphi от Валентина Озерова (2000 советов): Оглавление (39.6K) + 1..1000 (1.93M) + 1000..2000 (1.56M)
Смотрелка HTML Help без IE (416K)

Модераторы не обидятся, если я сюда пример запостю?

Подскажите пожалуйста как сделать имитацию ввода с клавиатуры для программы выполняющейся в дос-окне

Код: Выделить весь код
const

ExtendedKeys: set of Byte = [ *// incomplete list
VK_INSERT, VK_DELETE, VK_HOME, * VK_END, * *VK_PRIOR, * VK_NEXT,
VK_LEFT, * VK_UP, * * VK_RIGHT, *VK_DOWN, * VK_NUMLOCK
];

procedure SimulateKeyDown(Key : byte);
var

flags: DWORD;
begin

if Key in ExtendedKeys then flags := KEYEVENTF_EXTENDEDKEY else flags := 0;
keybd_event(Key, MapVirtualKey(Key, 0), flags, 0);
end;

procedure SimulateKeyUp(Key : byte);
var

flags: DWORD;
begin

if Key in ExtendedKeys then flags := KEYEVENTF_EXTENDEDKEY else flags := 0;
keybd_event(Key, MapVirtualKey(Key, 0), KEYEVENTF_KEYUP or flags, 0);
end;

procedure SimulateKeystroke(Key : byte);
var

flags: DWORD;
scancode: BYTE;
begin

if Key in ExtendedKeys then flags := KEYEVENTF_EXTENDEDKEY else flags := 0;
scancode := MapVirtualKey(Key, 0);
keybd_event(Key,
scancode,
flags,
0);
keybd_event(Key,
scancode,
KEYEVENTF_KEYUP or flags,
0);
end;
[s]Исправлено: CyberDaemon, 17:00 2-06-2003[/s]

-------
"640 K ought to be enough for anybody" Bill Gates, 1981


Отправлено: 14:53, 02-06-2003 | #6


Новый участник


Сообщения: 13
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


TForm.KeyPreview:=True

Procedure TForm1.Form1KeyDown(...);
Begin
IF Key=VK_RETURN then SelectNext(ActiveControl,True,True);
End;

-------
Прежде чем сказать "Невозможно", подумай, прав ли ты?


Отправлено: 10:36, 07-06-2003 | #7


Новый участник


Сообщения: 21
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


Для Delphi:
Код: Выделить весь код
 
unit Unit1; 
 
interface 
 
uses 
 *Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 
 *Dialogs, StdCtrls; 
 
type 
 *TForm1 = class(TForm) 
 * *Edit1: TEdit; 
 * *Edit2: TEdit; 
 * *Button1: TButton; 
 * *Button2: TButton; 
 * *Label1: TLabel; 
 * *procedure Button1Click(Sender: TObject); 
 *private 
 * *{ Private declarations } 
 *protected 
 *procedure Enter_Tab(var Msg:TMessage);message CM_DIALOGKEY; 
 *public 
 * *{ Public declarations } 
 *end; 
 
var 
 *Form1: TForm1; 
 
implementation 
 
{$R *.dfm} 
 
{ TForm1 } 
 
procedure TForm1.Enter_Tab(var Msg: TMessage); 
begin 
 
if msg.WParam=13 then 
begin 
Perform(CM_DIALOGKEY,9,0); 
msg.Result:=1;//отключаем обработку нажатия Enter 
end 
else 
inherited; 
end; 
 
procedure TForm1.Button1Click(Sender: TObject); 
begin 
ShowMessage('Enter=Tab'); 
end; 
 
end.

************************************************
Для C++ (CBuilder6):
Заголовочный файл
//---------------------------------------------------------------------------
Код: Выделить весь код
 
#ifndef UnMainH 
#define UnMainH 
//--------------------------------------------------------------------------- 
#include <Classes.hpp> 
#include <Controls.hpp> 
#include <StdCtrls.hpp> 
#include <Forms.hpp> 
//--------------------------------------------------------------------------- 
class TForm1 : public TForm 
{ 
__published:// IDE-managed Components 
 * * * *TButton *Button1; 
 * * * *TEdit *Edit1; 
 * * * *TEdit *Edit2; 
 * * * *TButton *Button2; 
 * * * *TButton *Button3; 
private:// User declarations 
protected: 
void __fastcall KeyCatch(TMessage &Msg); 
BEGIN_MESSAGE_MAP 
MESSAGE_HANDLER(CM_DIALOGKEY,TMessage,KeyCatch) 
END_MESSAGE_MAP(TForm) 
public: 
// User declarations 
 * * * *__fastcall TForm1(TComponent* Owner); 
}; 
//--------------------------------------------------------------------------- 
extern PACKAGE TForm1 *Form1; 
//--------------------------------------------------------------------------- 
#endif


Файл реализации
//---------------------------------------------------------------------------
Код: Выделить весь код
 
#include <vcl.h> 
#pragma hdrstop 
 
#include "UnMain.h" 
//--------------------------------------------------------------------------- 
#pragma package(smart_init) 
#pragma resource "*.dfm" 
TForm1 *Form1; 
//--------------------------------------------------------------------------- 
__fastcall TForm1::TForm1(TComponent* Owner) 
 * * * *: TForm(Owner) 
{ 
} 
//--------------------------------------------------------------------------- 
void __fastcall TForm1::KeyCatch(TMessage &Msg) 
{ * 
 * if( Msg.WParam==13){ 
 * Perform(CM_DIALOGKEY,9,0); 
 * *Msg.Result=1;//отключаем обработку нажатия Enter * 
 * } else * TForm::Dispatch(&Msg); 
} 
 
 
 
 
 
 
void __fastcall TForm1::Button1Click(TObject *Sender) 
{ 
ShowMessage("Enter=Tab"); 
}

//---------------------------------------------------------------------------


[s]Исправлено: Vla2003, 20:31 7-06-2003[/s]


[s]Исправлено: Vla2003, 12:27 9-06-2003[/s]

-------
Извините, это опять я


Отправлено: 19:27, 07-06-2003 | #8



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Enter = Tab

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Alt+Tab Tuner 1.0 OSZone Software Новости программного обеспечения 0 19-01-2010 21:30
Интернет - [решено] В Internet Explorer-е не работают Enter и Tab Sandor Microsoft Windows Vista 2 28-04-2009 20:28
Разное - Сочетание клавиш WIN+TAB Dragon_1 Microsoft Windows Vista 5 28-12-2008 02:49
Разное - WinVista+Tab aleksandriys Microsoft Windows Vista 0 17-12-2007 13:26
Gnome & cron(tab) Cursed Общий по Linux 7 07-12-2003 16:46




 
Переход