ホーム
Top.Mail.Ru Yandeks.Metrika
フォーラム: "Main";
現在のアーカイブ:2002.01.08;
ダウンロード:[xml.tar.bz2];

ダウン

キーが押されたというメッセージをシステムに送信する方法 似ている枝を探す


Delphimun   (2001-12-20 12:10) [0]

Как послать системе сообщение, что нажата клавиша? Например ставишь по таймеру это сообщение системе, что нажата клавиша, а пользователь работает в данный момент в блокноте и чтоб в блокноте писались эти буквы, которые ты послал системе(что нажли клавишу)



gek   (2001-12-20 12:32) [1]

Получаешь дескриптор блокнота и отсылаешь ему wm_keydown



Delphimun   (2001-12-20 13:10) [2]

я с этим уже разобрался(мне нужно было не только блокноту отсылать, а вобщем системе)
Вот пример из faq, кто заинтересовался:

-------------------------------------------------- -----------------------
Ниже приведена процедура, позволяющаю отправлять нажатия в любой
элемент управления (window control), способный принимать ввод с
клавиатуры. Вы можете использовать эту технику чтобы включать клавиши
NumLock, CapsLock и ScrollLock под Windows NT. Та же техника работает
и под Windows 95 для CapsLock и ScrollLock но не работает для клавиши
NumLock.
Обратите внимание, что приведены четыре поцедуры: SimulateKeyDown() -
эмулировать нажатие клавиши (без отпускания) SimulateKeyUp() -
эмулировать отпускание клавиши SimulateKeystroke() - эмулировать удар
по клавише (нажатие и отпускание) и SendKeys(), позволяющие Вам гибко
контролировать посылаемые сообщения клавиатуры.
SimulateKeyDown(), SimulateKeyUp() и SimulateKeystroke() получают коды
виртуальных клавиш (virtural key) (вроде VK_F1). Процедура
SimulateKeystroke() получает дополнительный параметр, полезный при
эмуляции нажатия PrintScreen. Когда этот параметр равен нулю весь
экран будет скопирован в буфер обмена (clipboard). Если дополнительный
параметр равен 1 будет скопированно только активное окно.
Четыре метода "button click" демонстрируют использование:
ButtonClick1 - включает capslock ButtonClick2 - перехватывает весь
экран в буфер обмена (clipboard). ButtonClick3 - перехватывает
активное окно в буфер обмена (clipboard). ButtonClick4 - устанавливает фокус в Edit и
отправляет в него строку.
例:

procedure SimulateKeyDown(Key : byte);
始まる
keybd_event(Key, 0, 0, 0);
終わり

procedure SimulateKeyUp(Key : byte);
始まる
keybd_event(Key, 0, KEYEVENTF_KEYUP, 0);
終わり

procedure SimulateKeystroke(Key : byte; extra : DWORD);
始まる
keybd_event(Key,extra,0,0);
keybd_event(Key,extra,KEYEVENTF_KEYUP,0);
終わり

procedure SendKeys(s : string);
var i : integer;
flag : bool;
w : word;
始まる
{Get the state of the caps lock key}
flag := not GetKeyState(VK_CAPITAL) and 1 = 0;
{If the caps lock key is on then turn it off}
フラグなら
SimulateKeystroke(VK_CAPITAL, 0);
for i:= 1 to Length(s)do
始まる
w := VkKeyScan(s[i]);
{If there is not an error in the key translation}
if ((HiByte(w) <> $FF) and (LoByte(w) <> $FF)) then
始まる
{If the key requires the shift key down - hold it down}
if HiByte(w) and 1 = 1 then
SimulateKeyDown(VK_SHIFT);
{Send the VK_KEY}
SimulateKeystroke(LoByte(w), 0);
{If the key required the
shift key down - release it}
if HiByte(w) and 1 = 1 then
SimulateKeyUp(VK_SHIFT);
終わり
終わり
{if the caps lock key was on at start, turn it back on}
フラグなら
SimulateKeystroke(VK_CAPITAL, 0);
終わり

procedure TForm1.Button1Click(送信者:TObject);
始まる
{Toggle the cap lock}
SimulateKeystroke(VK_CAPITAL, 0);
終わり

procedure TForm1.Button2Click(送信者:TObject);
始まる
{Capture the entire screen to the clipboard}
{by simulating pressing the PrintScreen key}
SimulateKeystroke(VK_SNAPSHOT, 0);
終わり

procedure TForm1.Button3Click(送信者:TObject);
始まる
{Capture the active window to the clipboard}
{by simulating pressing the PrintScreen key}
SimulateKeystroke(VK_SNAPSHOT, 1);
終わり

procedure TForm1.Button4Click(送信者:TObject);
始まる
{Set the focus to a window (edit control) and send it a string}
Application.ProcessMessages;
Edit1.SetFocus;
SendKeys("Delphi Is RAD!");
終わり
-------------------------------------------------- -------------------------

Теперь мне нужно отследить нажатие пользователя на кнопку клавы(например алфовитную) и обнулировать это нажатие\заместить своим.




ページ: 1 全枝

フォーラム: "Main";
現在のアーカイブ:2002.01.08;
ダウンロード:[xml.tar.bz2];

2階









メモリ:0.83 MB
時間:0.108 c
1-22247
として
2001-12-17 11:29
2002.01.08
.....できる人を助けます


3-21954
ストラホフ
2001-12-05 15:32
2002.01.08
誰もがバグに遭遇しましたか


1-22029
neo_
2001-12-18 12:33
2002.01.08
Tthreadを殺す


7-22432
ヴォルデマール
2001-09-25 04:12
2002.01.08
起動時の優先順位の割り当て


3-21901
ビクター
2001-12-06 09:46
2002.01.08
レコードの削除に関する問題





アフリカーンス語 アルバニア語 Arabic アルメニア語 アゼルバイジャン語 バスク ベラルーシ Bulgarian カタロニア語 中国語(簡体字) 中国語(繁体字) クロアチア チェコ語 デンマーク語 Dutch 英語 エストニア語 タガログ語 Finnish フランス語
ガリシア語 ジョージアン ドイツ語 ギリシャ語 ハイチ語 ヘブライ語 ヒンディー語 ハンガリー語 アイスランド語 Indonesian アイリッシュ イタリア語 日本語 Korean ラトビア語 リトアニア マケドニア語 Malay マルタ語 Norwegian
ペルシア語 ポリッシュ ポルトガル語 ルーマニア Russian セルビア Slovak スロベニア語 スペイン語 スワヒリ語 Swedish Thai トルコ語 ウクライナ語 ウルドゥー語 ベトナム語 ウェールズ語 イディッシュ語 ベンガル語 ボスニア語
セブアノ語 エスペラント グジャラート語 ハウサ語 モン族 イボ ジャワ語 カンナダ語 クメール語 ラオ語 ラテン マオリ語 マラーティー語 モンゴル語 ネパール語 パンジャブ語 ソマリ タミル語 テルグ語 ヨルバ語
ズールー語
Английский Французский Немецкий Итальянский ポルトガル語 Русский Испанский