2011-01-12 15 views
3

をロックしている間にロックがキーボードの上に導かれ、スクロールがオンまたはオフになりますように、私は「プレス」(アプリケーションから)Scroll Lockキー、 にできるようにしたいと思いますキーボードのキーを押すことができます。は、どのように私はコンピュータが

私は関数keybd_event(user32.dllから)でDllImportを使用しました。 と私のアプリはwin xpでサービスとして動作します。イッツ

が正常に動作しますが、私は(+ Lを獲得)、コンピュータをロックしたときにその機能が働いて停止します。

私はローカルサービスとして、および管理者としてサービスを実行しようとしましたが、それは何の違いが行われていません。

提案がありますか?

ありがとうございました。

+0

私は(それがランダムにオンにしたときに、それをオフにする以外)私の人生でそのキーを使用したことがありません...しかし、興味深い質問。 – Mehrdad

+1

はい、セッションスイッチがこれを行います。何か違いがある場合:あなたのプログラムはVistaやWin7ではまったく動作しません。回避策はありません。 –

+0

@ハンス:「回避策はない」ということをどうすれば確実に確認できますか?私はデバイスドライバがおそらくそれを行うことができると確信しています。実用的な回避策ではありませんが、それは確かに一つです。 – Timwi

答えて

0

助けてくれてありがとう。

最後に、msgina.dllを自分のdll(ginastub.dll)、 に置き換え、新しいスレッド(winlogonセッションで実行される)を開きました。 私のサービスは、名前付きパイプを使用してそのスレッドと通信し、キーを押すためのコマンドを送信できます。

、それにもかかわらず1を、それはしばらく時間がかかったが、動作するように見える:)

+0

これでXPから絶対にアップグレードしないようにする必要があります。 ;-) –

0

あなたはこのためにグローバルフックを必要とし、あなたがサービスをインタラクティブにする必要がありますあなたは、Windowsのサービスから実行されているので、これはタブ - >サービスと対話することを許可するログオン時にサービスのコントロールパネルから設定することができ、すべての最初のデスクトップ。

グローバルフックは管理コードでは簡単ではありません。 http://www.codeproject.com/KB/system/globalsystemhook.aspx

キーロガーがパスワードを盗むのを防ぐために、Windowsが特別な注意を払っているので、コンピュータをロックするときにこれが動作するかどうかは確かに言えません。 。教育目的のために

ログインを傍受したい場合しかし、文書化の方法は、のGina.dllを置き換えることであろう。

+1

私は彼がログインを傍受しようとはしていないが、コンピュータがロックされていても動作するインジケータライトとしてスクロールロックライトを使用すると思います。 –

+0

ジーナはもうありません。それはVistaから削除されました。 –