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

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

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

Re[4]: Sendkeysの後、CTRLが無効化される


(過去ログ 169 を表示中)

[トピック内 6 記事 (1 - 6 表示)]  << 0 >>

■97500 / inTopicNo.1)  Sendkeysの後、CTRLが無効化される
  
□投稿者/ HCL (1回)-(2021/05/28(Fri) 10:51:31)

分類:[.NET 全般] 

@Form上で
 自アプリ独自のショートカットキー、
 「CTRL+SHIFT+B」(ToolStripMenuItemに登録)で
 下記A以降の機能を呼び出す

A他アプリにフォーカス
 user32.dllのSetForegroundWindowを使用

BSendkeys.sendでCTRL+Vを実行

=======================================
Bを実行している時点で
キーボードのCTRL+SHIFT+Bを押したままですが、

このまま次に、CTRLから指を離さずに
CTRL+Zなど、CTRLを使う操作をしようとすると
CTRLが効きません。

改善方法を教えて下さい。

=======================================
Bを実行しない場合、CTRLは効くので
Sendkeysのせいだと思っています。

引用返信 編集キー/
■97503 / inTopicNo.2)  Re[1]: Sendkeysの後、CTRLが無効化される
□投稿者/ HCL (2回)-(2021/05/29(Sat) 13:50:47)
質問者です。

アプリ切り替えと関係なく、

CTRLを押した状態で
(ショートカットキー、Timerイベントなどで)
SendKeys.Send("^V")を実行すると、
押し続けていたCTRLが無効になりました。

"^V"は"^p"(意味の無い打鍵)でも同様でした。
必ず、上記が発生するわけではなく、
CTRLが有効であり続ける場合もありました。

SendKeysを実行した後も
CTRLが有効であり続ける方法を
探しています。

引用返信 編集キー/
■97504 / inTopicNo.3)  Re[2]: Sendkeysの後、CTRLが無効化される
□投稿者/ Azulean (1191回)-(2021/05/29(Sat) 14:08:59)
No97503 (HCL さん) に返信
> SendKeysを実行した後も
> CTRLが有効であり続ける方法を
> 探しています。

難しいかもしれません。
SendKeys はキーを操作したことを擬似的に再現する仕組みなので、^V であれば、「Ctrl を押下」「V を押下」「Ctrl を離す」をエミュレートすることになります。
この仕組み上、SendKeys で処理する限りは回避が難しい事象に思えます。

物理キーボードの入力状態に影響を与えず、他のアプリを操作したいのであれば、SendKeys を使わない手法を調査・検討した方が良いでしょう。
(メニューを操作したことを示すメッセージを送るとか、いくつかは考えられると思われます)
引用返信 編集キー/
■97505 / inTopicNo.4)  Re[2]: Sendkeysの後、CTRLが無効化される
□投稿者/ とっちゃん (726回)-(2021/05/29(Sat) 15:26:03)
No97503 (HCL さん) に返信
> SendKeysを実行した後も
> CTRLが有効であり続ける方法を
> 探しています。
>
SendKeys で、Ctrlキーの状態を変更してしまうのが直接的原因なので送らなければいいだけです。

キーボードの状態を見て SendKeys で "^V" を送るか、"V" を送るかを切り替えれば
Ctrl キーの状態を変えずに処理ができます。

具体的には、GetKeyState() API または GetAsyncKeyState() API でその時点のキーボード状態を確認し
Ctrl が押されている場合は、"V" だけを送るようにすればよいと思います。

ただし、ショートカットが"Ctrl+Shift+B"なので、送信先アプリによっては「Ctrl+V」ではなく
「Ctrl+Shift+V」のショートカットを処理することもあるのでその点は注意が必要です。

引用返信 編集キー/
■97508 / inTopicNo.5)  Re[3]: Sendkeysの後、CTRLが無効化される
□投稿者/ HCL (3回)-(2021/05/31(Mon) 09:14:44)
質問者です。
ご回答有り難うございます。

Sendkeyで、
CTRLを押してるときは
CTRLは入力を行わない、という処理を試しましたが、
うまくいきませんでした。

押下中のCTRLと
Sendkeysの"V"を合わせて
CTRL+Vにすることはできないようです。

また、アプリごとに
Sendkeysがうまくいったり、いかなかったりするので、
Sendkeysは諦めました。

keybd_eventを使用することにしました。
引用返信 編集キー/
■97524 / inTopicNo.6)  Re[4]: Sendkeysの後、CTRLが無効化される
□投稿者/ HCL (4回)-(2021/06/02(Wed) 12:34:01)
No97508 (HCL さん) に返信
> 質問者です。
> ご回答有り難うございます。
>
> Sendkeyで、
> CTRLを押してるときは
> CTRLは入力を行わない、という処理を試しましたが、
> うまくいきませんでした。
>
> 押下中のCTRLと
> Sendkeysの"V"を合わせて
> CTRL+Vにすることはできないようです。
>
> また、アプリごとに
> Sendkeysがうまくいったり、いかなかったりするので、
> Sendkeysは諦めました。
>
> keybd_eventを使用することにしました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -