押されいるキーを取得するには?

解決


匿名  2005-03-25 01:52:47  No: 13933

こんにちは。

WinXPで、Delphi6 Personalを使い、アプリケーションを作っています。

フォームを閉じた時にどのキーが押されてるのか調べたいのですが、どうすればいいのでしょうか?


たかみちえ  URL  2005-03-25 02:33:55  No: 13934

GetKeyStateあたり?


匿名  2005-03-25 02:41:28  No: 13935

どうやって使うんですか?


Google  2005-03-25 03:45:38  No: 13936

検索しましょう。
http://www.google.co.jp/search?hl=ja&q=GetKeyState+Delphi&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=lang_ja


匿名  2005-03-25 07:34:30  No: 13937

if GetKeyState(VK_CONTROL)<>0 then
 showmessage('ctrlが押されてます')
else GetKeyState(VK_SHIFT)<>0 then
 showmessage('shiftが押されてます');

って、わざわざ全部の仮想キーコードと比較しなければならないのでしょうか


まったく  2005-03-25 08:21:29  No: 13938

>どのキーが押されてるのか調べたいのですが

GetKeyboardState と MapVirtualKey だと


たかみちえ  URL  2005-03-26 09:08:36  No: 13939

処理がやたらと冗長になりそうなときは、頭を使いましょう。
想定しているものを全部定数配列に納めてループ処理ですませるとか、いくらでもやりようはあります。

> わざわざ
  それがふつうと言うものです。面倒くさがってはお話になりません。
それを地道に一個一個処理していくか、ループでいっぺんに処理するかは、プログラマの知恵次第です。


たかみちえ  URL  2005-03-26 09:12:39  No: 13940

たとえば、上の例で言うなら
const
  KeyList : array[0..1] of Integer = (VK_SHIFT, VK_CONTROL);
  KeyStr  : array[0..1] of String = ("shiftキー", "ctrlキー");
var
  i : Integer;
begin
  for i := 0 to Length(KeyList) - 1 do begin
    if GetKeyState(KeyList[i]) <> 0 then ShowMessage(KeyStr[i] + "が押されている");
  end;
end;
  など。


匿名  2005-03-27 01:02:54  No: 13941

>たかみちえ様
出来ました・・凄いです。こんな事に気づかなかったなんてまだまだ精進が足りませんね^^;


匿名  2005-03-27 01:18:29  No: 13942

ただその書式、少しおかしいところがいくつかありますね^^;


たかみちえ  URL  2005-03-27 03:03:35  No: 13943

ぱぱっと書いただけでテストなどしていませんので、その辺はご容赦を(^^ゞ
まあ、趣旨が伝われば幸いです。


匿名  2005-03-27 05:40:41  No: 13944

いつも助けてくださってありがとうとざいます^^
仮想キーコードって、数値に置き換えられないんでしょうか。

あと関係ないんですが、Luna対応にするためにManifestファイルを使いますよね?  あれをExeファイルに埋め込みたいんですが、どうすればいいですか(リソースがどうこうと言うのは聞いたことがありますが・・


こちろをどーぞ  2005-03-27 06:19:17  No: 13945

http://homepage1.nifty.com/ht_deko/tech002.html#tech021

Theme Managerコンポーネントも使用したほうが吉


たかみちえ  URL  2005-03-27 09:51:59  No: 13946

(読む方が)混乱しないように一つのスレッドには一つの質問に限った方がよいと思いますよ。
> 数値に置き換え
  仮想キーコードって、そもそも数値ですが?
VK_SHIFTなどはただの定数です。表示してみれば分かります。

> manifestファイル
  上のリンクで分かると思いますが、それでも分からないようなら拙作ソフトのソースでも開いてみてください。配布パッケージ内のsrc.zipです。


匿名  2005-03-29 00:42:18  No: 13947

キーの方も、マニフェストの方も出来たんですが、何故かマニフェストをバインドすると、upxで圧縮した後で実行すると

---------------------------
アプリのパス
---------------------------
アプリのパス

このアプリケーションの構成が正しくないため、アプリケーションを開始できませんでした。アプリケーションを再度インストールすることにより問題が解決する場合があります。
---------------------------
OK   
---------------------------

と言うmb_Error型のダイアログメッセージが出ます。これは仕様なのでしょうか


匿名  2005-03-29 06:50:46  No: 13948

リソース圧縮を無効にしたら出来ました。
皆さん本当にご迷惑をおかけしました。

>たかみちえ様
サイト、拝見しました。とっても勉強になります、早速Bookmarkに入れました。これからも宜しくお願いします


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加