VBSで質問です。環境はXP Proです。
InputBoxで入力した日本語を他のアプリケーションに入力をしたいのですが、Sendkeysが2バイト文字は不可とわかり頓挫しました。sendkeys以外で使える技を教えてくださいませ。下記のコードを考えてましたが挫折しました。
--------------------------------------------------
Option Explicit
Dim Name
Name = InputBox("名前を入力してください")
'シェルを用意
Dim objWshShell
Set objWshShell = Wscript.CreateObject("Wscript.Shell")
'notepad起動
objWshShell.Exec "notepad.exe"
'notepadアクティブにする
objWshShell.AppActivate "objWshShell.Exec.ProcessID"
wscript.sleep 1000
'notepadに名前を入力する
objWshShell.Sendkeys Name
***sendkeys以外で文字を送る技を期待しています。
No.1
- 回答日時:
おそらく抜本的なところで仕様を変える必要が出てくるのでしょうが(本当にnotepadに送りたいわけではないんですよね?)、テキストファイルに書き出して、そのアプリ側で起動時にそのテキストファイルを読み込んで起動とか。
結局のところ、そのアプリ側で何らかの受け入れ窓口を作らない限りはsendkeyしかありません。
あるいはVBや.Netならsendkeyで日本語も送れるので、そちらで作られたDLLを利用したこういう手もあります。
http://blog.hirsky.com/changelog/2006-08-04-1.html
ありがとうございます。DLLを入れる方法はできないのです。
指摘のとおりnotepadに送りたいのではなく、他人のPCに自動で文字を送りたいアプリがあるのです。
DLLを他人のPCにインストールするわけにはいかないので申し訳ありませんがこの手は遠慮させていただきます。
No.2ベストアンサー
- 回答日時:
こういうのはクリップボード経由でやります。
本ソースをどこで拾ったか忘れちゃいましたが、どっかに落ちてました。
以下のようなやりかたでたいてい問題ないと思います。
'ここから
Dim Name
Name = InputBox("名前を入力してください")
Dim objWshShell
Set objWshShell = Wscript.CreateObject("Wscript.Shell")
objWshShell.Exec "notepad.exe"
objWshShell.AppActivate "objWshShell.Exec.ProcessID"
Set oClip=New Clipboard
oClip.Text=Name
objWshShell.SendKeys "^V~",true
Class Clipboard
Private oIE, bSuccess
Private Sub Class_Initialize()
Set oIE=CreateObject("InternetExplorer.Application")
oIE.Navigate "about:blank"
Do While oIE.Busy Or oIE.Document.ReadyState <> "complete"
oIE.Sleep 10
Loop
End Sub
Private Sub Class_Terminate()
oIE.Quit
Set oIE=Nothing
End Sub
Public Default Property Get Text
Text=oIE.Document.ParentWindow.clipboardData.getData("Text")
End Property
Public Property Let Text(sData)
bSuccess=oIE.Document.ParentWindow.clipboardData.setData("Text", sData)
End Property
End Class
’ここまで
私の場合、よくファイルを開いたりする時につかっています。
objWshShell.SendKeys "%FO",true
などしてから.SendKeys "^V~"したりして使います。
かなり核心にせまる内容ですがスクリプトを走らせると
「このWEBページがクリップボードへアクセスするのを許可しますか?」
と出て文字送りがされませんでした。
調べてみるとURLのバーにパスワードを読み取られたりするのを防ぐためにセキュリティがブロックしているようです。IEのセキュリティ設定は変更したくはないので、他の方法はございませんか?
申し訳ないのですがよろしくお願いします。
No.3
- 回答日時:
なかなか難しいですね
NO.1の方がおっしゃる通り
>(受け取る側の)アプリ側で何らかの受け入れ窓口を作らない限りはsendkeyしかありません。
ですよ
NO.2の方のクリップボード経由も常套手段ですが、IEから警告が出たとなると、おそらく他の方法もすべて引っ掛かります
(我々が思い付く程度のセキュリティホールがあるとも思えないので)
そもそも2バイト関係なく、sendkey自体だめだったんじゃ…
もしこの「セキュリティを変更せずに、データの送受信」が可能であれば、
緊急度『高』のとんでもないセキュリティホールですよ
と言うか、これまでどの穴塞いでたんだ?ってもんです
VBSで開発されている位ですからお分かりですよね?
仮にsendkeyが使えるのであれば、俺が思い付くのは、文字コードをsendkeyで入力させるように指定する
のはいかがでしょう?
設定がめんどくさそうですが(笑)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 入力ボックスが繰り返しポップアップして止まらない。 下記コードでファイル名の変更をしたいのですが、変 1 2022/09/08 11:27
- Microsoft ASP C#からvbsを実行したい 5 2022/11/24 17:31
- Visual Basic(VBA) Selenium Basicの件 5 2023/04/10 20:55
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- Visual Basic(VBA) ExcelVBA No.を自動連番で設定をしながらデータ入力をしたい 2 2022/08/03 18:19
- その他(プログラミング・Web制作) プログラミング pythonの問題について 2 2022/04/19 00:41
- その他(プログラミング・Web制作) テキストエディタで複数行にわたる文字列の行頭に番号を振る方法 4 2023/03/11 12:57
- Visual Basic(VBA) ファイル名の右側を変更したい ファイル名:「1001日別売上」の左側へ「2022」を追加し、「202 6 2022/10/14 10:03
- JavaScript Javascriptが機能せず原因が分からないので教えて頂きたいです 3 2023/06/04 14:50
- UNIX・Linux Linuxについて質問です。 以下のhistoryの出力結果から、sedコマンドのファイル名tmp1 1 2023/02/03 20:11
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コマンドライン版ソフトの意義
-
WSH(VBScript)でアプリケーショ...
-
初回接続の遅い原因について
-
イラストレーターCS4のシリアル...
-
コンソールアプリケーションの...
-
VB.NETでMessageBoxを表示した...
-
VBSでのSendKeysでの画面の最小化
-
対象のアプリケーションが終了...
-
VB6での二重起動(複数起動)の制...
-
フレームワーク「4.8.1」で、[S...
-
C#でGUI・CUIの判断する仕方を...
-
FOM出版の公認テキスト&問題集...
-
自分自身を更新するプログラム
-
外部アプリケーションの起動に...
-
Vba アプリケーションが立ち上...
-
OSによるWinExecの動...
-
緯度、経度の 10進法と 60進法...
-
Macターミナルで実行中のプログ...
-
VBAの配列サイズとメモリに関して
-
スレッドの安全な終了のさせ方
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
コンソールアプリケーションの...
-
フレームワーク「4.8.1」で、[S...
-
Vba アプリケーションが立ち上...
-
自分自身を更新するプログラム
-
VBSでのSendKeysでの画面の最小化
-
イラストレーターCS4のシリアル...
-
Windowsプログラムのビジー状態...
-
Accessフォームからの外部アプ...
-
Console Applicationをタスクト...
-
VB.NETでMessageBoxを表示した...
-
初回接続の遅い原因について
-
pccNTmon.exeとntrtscan.exeの違い
-
vb6で異なるのプロジェクト間で...
-
WSH(VBScript)でアプリケーショ...
-
対象のアプリケーションが終了...
-
VB.NETでフォームアクティブの...
-
MFCアプリケーションでの終了コ...
-
他アプリケーションの終了
-
実行時のコマンドプロンプトを...
-
Shell関数の終了を調べる方法
おすすめ情報