プログラミング

プログラミングに関するフォーラムです。VBAは除きます。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(指定なし : 指定なし)
SendKeysの文字化け
投稿日時: 17/04/08 13:33:58
投稿者: hisayanxp

VBSで下記の記述をして実行すると日本語が文字化けします。
Clipを使えば良さそうなのですが、使ってもうまくいきません。
 
Dim shellObj
Set shellObj = WScript.CreateObject("Wscript.Shell")
shellObj.Run "C:\Windows\System32\notepad.exe "
WScript.Sleep(5000)
shellObj.SendKeys "こんにちは"
 
どのようにするとうまくいくでしょうか?

回答
投稿日時: 17/04/09 18:33:16
投稿者: MMYS

Sendkeysとはキーボード操作をシュミレートする命令です。
キーボードを押すという操作は、Windowsが監視してます。
つまり、このキーボードを押すという動作をソフト的に行うのがSendkeysです。
https://msdn.microsoft.com/ja-jp/library/cc364423.aspx
 
Sendkeysは単にキーボートを押す「だけ」です。
メモ帳がアクティブでないとかカーソルがどっかいったとか、
とにかくお構いなしにキーボートを押します。
つまり、目隠しをしてパソコンを操作するようなものです。
 
Sendkeysはそれ以外に方法がなく、Sendkeysのデメリットを理解した上で使うべきです。
 
 
さて、本題、
英数字やShiftキーなどはキートップにあるものは押す操作は出来ますが、
"こんにちは"
なんてキーはありませんから、そのままでは出来ません。
 
ところで、Windowsには ペースト機能があります。
このショートカットキーは Ctrl+V です。つまり、貼り付けなら出来ます。
 
つまり、まずクリップボードに"こんにちは"をコピーします。
その後、メモ帳に対してCtrl+Vを送れば出来ます。
ただし、たまたまうまくいかないとかが起きる可能性があります。
 
 
サンプルコードは自力で考えないとスキルが付きませんし、
検索すれば沢山ヒットしますので控えます。
 

投稿日時: 17/04/10 07:45:32
投稿者: hisayanxp

MMYSさん
ありがとうございます。
やってみます。