- - PR -
windowsサービスからのマウス(キーボード)制御
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2009-03-04 18:29
C# .NET Framework2.0でサービスプログラムを作っています。
formアプリケーションでは Cursor.Positionにてマウス位置を制御することが出来ていますが、 サービスプログラムを作って試しに或るタイミングで単純にCursor.Positionに値を設定しても マウスの位置に変化が起きません。 プロセスのデバッグで確認するとサービスプログラム上はCursor.Position=の部分を実行しています。 何か方法があるのでしょうか? よろしくお願いします。 [ メッセージ編集済み 編集者: ml 編集日時 2009-03-04 18:30 ] | ||||||||
|
投稿日時: 2009-03-04 18:49
サービス アプリケーションはデスクトップ コンテキストを持っていないので、デスクトップと対話できません(ウィンドウを表示したり、ユーザーからの入力を受け取ったりできない)。
ユーザーがログオンしていないときなど、どうしましょう? | ||||||||
|
投稿日時: 2009-03-04 19:01
Jittaさま
お返事ありがとうございます。 windowsログオン前、vistaのアカウントとパスワードの入力画面で マウスとキーボードをリモート操作されているソフトを見た事があります。 (OS付属のリモートデスクトップ接続ではなく) クレデンシャルプロバイダ周りをさわった事があるのですが、 あの辺りを使わなくてもサービスで出来るのではないかと思い (上記ソフトは何となくサービスっぽかったので) 質問させて頂きました。 C#からsetcorsorposやsendinputでもかまわないのですが。。。 よろしくお願いします。 | ||||||||
|
投稿日時: 2009-03-04 19:07
未確認ですが、サービスのプロパティの「デスクトップとの会話をサービスに許可云々」をチェックすると出来ませんか?
| ||||||||
|
投稿日時: 2009-03-04 19:24
実行アカウントを、ログオン中のアカウントに変更して、やってください。 本番は、権限の低いアカウントを作って、そのアカウントにやらせて下さい。 | ||||||||
|
投稿日時: 2009-03-04 21:02
ドン・ファンさん、Jittaさん
お返事ありがとうございます。 いずれも試してみましたが、動作しません。 単純にタイマーでcursor.position(setcursorposも試してみました)で ちょっとずつマウスを動かすだけのコードで試しています。 同じ内容のものをformアプリケーションで動作する事は確認しています。 アタッチしてのデバッグでもタイマーで実行されているのは確認できます。 | ||||||||
|
投稿日時: 2009-03-04 22:13
これって、サービスでやってます?[CTRL]+[ALT]+[DEL] は、対話的な入力しか受け付けないと聞いているのだけれど。。。 たとえば、VNC を入れてリモートから操作すると、勝手に動いているように見えます。付属のリモート デスクトップだと、ローカルは強制的に接続を切られますが(ライセンス上の都合)、VNC ではリモートからもローカルからも操作できます。 ご参考 http://support.microsoft.com/default.aspx/kb/327618/ja http://support.microsoft.com/kb/327618/ja
だそうです。 | ||||||||
|
投稿日時: 2009-03-04 22:37
この時ではなく、アカウントとパスワードを入力出来る時の状態です。 ログオン前だけに サービスかと思っているのですが、 何か方法があるのでしょうね。 これが出来ているソフトを見た事があるだけに実現できればなぁと思っています。 |