C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

ツリー一括表示

キーボード操作に関する質問 /たこ兵 (17/11/03(Fri) 21:00) #85535
Re[1]: キーボード操作に関する質問 /Azulean (17/11/03(Fri) 21:20) #85536
  └ Re[2]: キーボード操作に関する質問 /たこ兵 (17/11/03(Fri) 21:56) #85537
    └ Re[3]: キーボード操作に関する質問 /Azulean (17/11/03(Fri) 22:51) #85538
      └ Re[4]: キーボード操作に関する質問 /たこ兵 (17/11/03(Fri) 23:12) #85539
        └ Re[5]: キーボード操作に関する質問 /たこ兵 (17/11/04(Sat) 09:57) #85541
          └ Re[6]: キーボード操作に関する質問 /たこ兵 (17/11/04(Sat) 15:28) #85546
            └ Re[7]: キーボード操作に関する質問 /Azulean (17/11/05(Sun) 16:27) #85552
              └ Re[8]: キーボード操作に関する質問 /たこ兵 (17/11/07(Tue) 09:40) #85573 解決済み


親記事 / ▼[ 85536 ]
■85535 / 親階層)  キーボード操作に関する質問
□投稿者/ たこ兵 (1回)-(2017/11/03(Fri) 21:00:38)

分類:[.NET 全般] 


OBSというキャプチャソフトでF9キーに録画開始のショートカットキーを割り当てています。

これをVB.NETを使って、操作したいと考えています。

キーボードの操作に関しては
https://dobon.net/vb/dotnet/vb6/sendkeys.html

SendKeys.Send("{F9}")

で行うことができるはずです。
しかし、これを実行してもうまくいきません。
どうもデフォルトの状態だとフォーム内でしかキーが有効になっていないようです。
https://dobon.net/vb/dotnet/form/keypreview.html

このページに他のフォームが受け取れるコードが書かれてあり、
試してみましたが、他のソフトウェアでは受け取ることができませんでした。

一体、どうすればうまくいきますか?

あと、ボタンを押す時間なども調整できるのでしょうか?

よろしくお願いいたします。





[ □ Tree ] 返信 編集キー/

▲[ 85535 ] / ▼[ 85537 ]
■85536 / 1階層)  Re[1]: キーボード操作に関する質問
□投稿者/ Azulean (886回)-(2017/11/03(Fri) 21:20:38)
No85535 (たこ兵 さん) に返信
> しかし、これを実行してもうまくいきません。
> どうもデフォルトの状態だとフォーム内でしかキーが有効になっていないようです。

このコードを呼んだときに、アクティブなウィンドウ(フォーム)に対して送信すると捉えてください。
たとえば、あなたのプログラムの Button1 をクリックしたときのイベントにそのコードを書いている場合、あなたのプログラムがアクティブになっていますので、あなたのプログラムに送られます。

参照されているページに「補足」で書いてあることも調べてください。
https://dobon.net/vb/dotnet/vb6/sendkeys.html
[ 親 85535 / □ Tree ] 返信 編集キー/

▲[ 85536 ] / ▼[ 85538 ]
■85537 / 2階層)  Re[2]: キーボード操作に関する質問
□投稿者/ たこ兵 (2回)-(2017/11/03(Fri) 21:56:55)
No85536 (Azulean さん) に返信

ありがとうございます。
OBSに関してですが、
ウインドウがアクティブになっていなくとも
F9のショートカットキーを押せば動作するのですが
VBのコードの場合には、アクティブにしないといけないのでしょうか?
アクティブにせずとも動作させることはできないでしょうか?
 
[ 親 85535 / □ Tree ] 返信 編集キー/

▲[ 85537 ] / ▼[ 85539 ]
■85538 / 3階層)  Re[3]: キーボード操作に関する質問
□投稿者/ Azulean (887回)-(2017/11/03(Fri) 22:51:02)
2017/11/03(Fri) 22:53:10 編集(投稿者)

No85537 (たこ兵 さん) に返信
> OBSに関してですが、
> ウインドウがアクティブになっていなくとも
> F9のショートカットキーを押せば動作するのですが
> VBのコードの場合には、アクティブにしないといけないのでしょうか?
> アクティブにせずとも動作させることはできないでしょうか?

そのキャプチャソフトの実装と、あなたが書いているコードに依存する話なので、第三者にコメントは難しいかと。
いろいろと実験してなぜ期待通りにならないのかを探っていくことが必要となるでしょう。
[ 親 85535 / □ Tree ] 返信 編集キー/

▲[ 85538 ] / ▼[ 85541 ]
■85539 / 4階層)  Re[4]: キーボード操作に関する質問
□投稿者/ たこ兵 (4回)-(2017/11/03(Fri) 23:12:51)
No85538 (Azulean さん) に返信

すいません、言い忘れましたが、
以前、VBAで作った
Application.SendKeys "{F9 5}"

というコードだとうまく動作しました
VB.NETだとどうすれば良いですか?

http://hanatyan.sakura.ne.jp/patio/read.cgi?no=245

このページにあるAPIも使ってみましたが
うまくいきませんでした。
 
[ 親 85535 / □ Tree ] 返信 編集キー/

▲[ 85539 ] / ▼[ 85546 ]
■85541 / 5階層)  Re[5]: キーボード操作に関する質問
□投稿者/ たこ兵 (5回)-(2017/11/04(Sat) 09:57:23)


OBSのウインドウハンドルを取得しウインドウをアクティブ化してみましたが
なぜかうまくいきませんでした。
メモ帳へのキー入力ならうまくいくので、プログラム自体は間違っていないようなのですが・・・

VBAのコードだとできるのであれば
VB.NETでできないはずはないと思うのですが・・・
どなたかご教授下さい。
 
[ 親 85535 / □ Tree ] 返信 編集キー/

▲[ 85541 ] / ▼[ 85552 ]
■85546 / 6階層)  Re[6]: キーボード操作に関する質問
□投稿者/ たこ兵 (6回)-(2017/11/04(Sat) 15:28:53)
keybd_eventでうまくいきました。

keybd_eventと SendKeys.Sendは一体何が違うのでしょうか・・・???
 
[ 親 85535 / □ Tree ] 返信 編集キー/

▲[ 85546 ] / ▼[ 85573 ]
■85552 / 7階層)  Re[7]: キーボード操作に関する質問
□投稿者/ Azulean (888回)-(2017/11/05(Sun) 16:27:42)
No85546 (たこ兵 さん) に返信
> keybd_eventと SendKeys.Sendは一体何が違うのでしょうか・・・???

SendKeys.Send はデフォルトでフックプロシージャーを使ったキー入力の動作となっているようです。
keybd_event とは仕組みが違います。

下記のページの「メモ」にあるように、app.config に SendInput を使うように指示すれば、SendKeys でも動くかもしれませんね。
https://msdn.microsoft.com/ja-jp/library/system.windows.forms.sendkeys.send%28v=vs.100%29.aspx
[ 親 85535 / □ Tree ] 返信 編集キー/

▲[ 85552 ] / 返信無し
■85573 / 8階層)  Re[8]: キーボード操作に関する質問
□投稿者/ たこ兵 (7回)-(2017/11/07(Tue) 09:40:53)


app.configの方は試していませんが
非常に勉強になりました。
ありがとうございます。

解決済み
[ 親 85535 / □ Tree ] 返信 編集キー/


管理者用

- Child Tree -