質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
ActiveX

ActiveXは、Microsoft社が開発したプログラミング技術群の総称。特定の技術ではなく、さまざまな技術を指しますが、一般的にActiveXといった場合は「ActiveXコントロール」を指します。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

.NET Framework

.NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

解決済

javascriptでActiveXObjectを使用し、SendKeysとsleepを交互に行いたい

nemui_00
nemui_00

総合スコア5

ActiveX

ActiveXは、Microsoft社が開発したプログラミング技術群の総称。特定の技術ではなく、さまざまな技術を指しますが、一般的にActiveXといった場合は「ActiveXコントロール」を指します。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

.NET Framework

.NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

1回答

0評価

0クリップ

959閲覧

投稿2019/10/15 08:47

編集2019/10/16 00:23

前提・実現したいこと

Webアプリから、クラサバのソフトウェアへデータ入力を行う処理を実装したい。

発生している問題・エラーメッセージ

javascriptでActiveXObjectを使用し、SendKeysとsleepを交互に行う処理を作成していますが、
SendKeys後、sleepが行われず、sleep後にまとめてSendKeysが実行されているような動きになってしまいます。
どうしたらよいのでしょうか?

該当のソースコード

以下のhtmlファイルをIEで開き、データ入力画面というファイル名のテキストファイルをメモ帳で開いた状態で、ブラウザのbuttonを押すと、事象を確認できます。
また、button2はRunで新規に開いたやり方です。これだとうまくいくようです。

html

<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title></title> <script type="text/javascript"> function inputData(arg1) { var obj = new ActiveXObject("WScript.Shell"); obj.AppActivate("データ入力画面"); sleep(1000); //キー・コードを送る。 obj.SendKeys(arg1); sleep(2000); obj.SendKeys("{ENTER}"); sleep(900); obj.SendKeys("{F5}"); sleep(2000); obj.SendKeys("{ENTER}"); obj = null; } function inputData2(arg1) { var obj = new ActiveXObject("WScript.Shell"); obj.Run("notepad"); sleep(1000); //キー・コードを送る。 obj.SendKeys(arg1); sleep(2000); obj.SendKeys("{ENTER}"); sleep(900); obj.SendKeys("{F5}"); sleep(2000); obj.SendKeys("{ENTER}"); obj = null; } function sleep(waitMsec) { var startMsec = new Date(); // 指定ミリ秒間だけループさせる while (new Date() - startMsec < waitMsec); } </script> </head> <body> <form id="form1"> <div> <button type="submit" onclick="inputData('12345');">button</button> <button type="submit" onclick="inputData2('12345');">button2</button> </div> </form> </body> </html>

試したこと

AppActivateでなくRunで新規に画面を起動した場合(button2のやり方)、うまくいくようです。

補足情報(FW/ツールのバージョンなど)

IE11
ASP.NET WebForm
.NET Framework 4.0

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

Zuishin

2019/10/16 00:33

ActiveX は終わっているということを承知の上で作っていますか? 回答を作ってる間にその結末で自己解決するんじゃないかと思われているかもしれません。 少し調べてみてその結末に納得して自己解決されるのがいいかもしれません。
nemui_00

2019/10/16 00:40

ご回答ありがとうございます。 ActiveXはあまり使いたくなかったのですが、社内で作ったクラサバのソフトウェアへの入力方法がこれしかないため、仕方なくこういったやり方でやっています。 もう少し考えてみようと思います。。
Zuishin

2019/10/16 00:43

このソースと目的を見る限りそんなこと無さそうですが。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

ActiveX

ActiveXは、Microsoft社が開発したプログラミング技術群の総称。特定の技術ではなく、さまざまな技術を指しますが、一般的にActiveXといった場合は「ActiveXコントロール」を指します。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

.NET Framework

.NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。