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

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

ただいまの
回答率

88.63%

vbsにてIE起動しget送信で引数を送りたい

解決済

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 3,995

nakasaki

score 7

プログラムに関して初心者です。上手く内容をお伝え出来ず、ご迷惑をおかけしてしまうかもしれませんが何卒皆さまのお力をお貸しいただけましたら幸いです。

前提・実現したいこと

・現状
AシステムにてIDログイン(利用者毎にIDは異なる)→Aシステム上からBシステム(IE上で動作)をURL(getメソッド)にて起動できるようになっており、ID情報を引っ張り自動ログイン(特定のIDのみログイン可)しています。

・変更したい内容
現状どおりAシステムからのID情報を引っ張り、自動ログインできる状態にてBシステム(IE)を指定のウインドウサイズ、位置で開けるようにしたいです。

調べた所vbsにてウインドウサイズを指定してIE起動できることがわかり、その方法を利用。
Aシステム→
bat(Aシステムから直接vbsが起動出来ないため、vbs起動用として挟む)%1にてID情報をvbsへ→
vbsにてID情報を受け、IEをウインドウ指定して開く→objIE.NavigateでBシステムURLへGetメソッドで飛ぶように設定し自動ログインできるようにしたいです。

ここに質問したいことを詳細に書いてください

AシステムからID情報をbatへ→引数をbatからvbsへ→vbsにてIE起動しgetメソッドでAシステムからのID情報をBシステムへ送れるようにする方法はありませんでしょうか。

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

vbsまではID情報を引っ張ってこれているようですが、vbsにてIE起動しgetメソッドでBシステムへID情報を送ることが出来ません。

該当のソースコード

batファイル・vbs・URLgetメソッド

・batファイル
@echo off
rem batファイルからVBScriptを実行
cls
cscript //nologo C:\IeAutoStartUp.vbs %1

・vbs
Option Explicit
Dim objIE
Dim i
Dim intWidth
Dim intHeight
Dim intX
Dim intY
Dim oParam

'引数(パラメータ)の取得
Set oParam = WScript.Arguments

'初期設定(ウィンドウサイズ、表示位置に使用)
intWidth = 1280
intHeight = 920
intX = 0
intY = 80

'IEオブジェクトを作成します
Set objIE = CreateObject("InternetExplorer.Application")

'ウィンドウの大きさを変更します
objIE.Width = intWidth
objIE.Height = intHeight

'表示位置を変更します
objIE.Left = intX
objIE.Top = intY

'ステータスバーとツールバーを非表示にします
objIE.Statusbar = False
objIE.AddressBar = False

'URL指定(Getメソッド)
objIE.Navigate "http://○○/singlesignon.htm?UserID=oParam"

'インターネットエクスプローラ画面を表示します
objIE.Visible = True

試したこと

上記内容を実施。
AシステムにてIDログイン→
AシステムにてbatへID情報を送り起動(そのようにできる設定があります)→
batにてvbs起動→
%1でログイン情報をvbsへ→
vbsにてBシステムへGetメソッドで起動(USERID=○○ の○○部分が自動でBシステムのログイン情報として変換されている模様ですがよくわかりません。)
しかしIDを引っ張れませんでした。(ログインフォームには oParamとでます)
vbsまでID情報を送れていることを確認するため、下記vbsでコマンドライン上にID情報を送れていることを確認しました。
Dim oParam
Set oParam = WScript.Arguments
Dim idx
For idx = 0 To oParam.Count - 1 
WScript.echo oParam(idx)
Next

他、VBSでIEを指定ウインウサイズで開き、閉じるという動作を作成。そのvbsを起動してもらえば次回以降IEが指定位置・サイズで開くかと思いましたがvbsではウインドウを閉じてもIEの位置・サイズは記憶されませんでした。

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

IE8上での動作となります。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

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

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

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

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

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

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

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

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

0

objIE.Navigate "http://○○/singlesignon.htm?UserID=oParam"
URLとして"oParam"という文字列を送ってしまっているようです。

今回の場合はoParam変数の内容を渡したいので、
objIE.Navigate "http://○○/singlesignon.htm?UserID=" & oParam
としてみてはどうでしょうか。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/08/09 19:14

    ご回答ありがとうございます。
    ご教授通り変更してみましたが、
    実行時エラー:引数の数が一致していません。または不正なプロパティを指定しています。
    とエラーがでて上手くいきませんでした。

    キャンセル

  • 2016/08/09 19:50 編集

    すみません、oParamにはWScript.Arguments全体をセットしていたのですね。
    ```
    'Set oParam = WScript.Arguments
    oParam = WScript.Arguments(0)
    ```
    としてoParamに第一引数のみを取得するか、もしくは
    ```
    objIE.Navigate "http://○○/singlesignon.htm?UserID=" & oParam(0)
    ```
    として第一引数をパラメータとして渡してみてください。

    キャンセル

  • 2016/08/09 20:06

    ご教授通り第一引数を設定することでID情報を渡せました!!
    ありがとうございます!!本当にありがとうございました!

    キャンセル

0

Navigateメソッドの第一引数はBSTRである必要がありますが、VBScript上でBSTR変換するのができてないように見えます。
(VBScriptでなく)VB/VBAであれば、StrConv関数にてBSTR変換したりできますがVBScriptには備わってませんので、
《ここからは仮設》
下記のStrConvDLLにて与えるURLをBSTR変換してみてはいかがでしょうか。

文字変換ライブラリ StrConvDLL
http://www.gesource.jp/soft/strconv/strconvdll.html

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/08/09 19:04

    ご回答ありがとうざいます。
    勉強不足にて回答文の内容がわからない部分多いため、勉強・確認しながら試してみたいと思います。

    キャンセル

  • 2016/08/09 21:21

    この回答、既に削除申請を出しています。間違った回答ですので、無視してください。

    キャンセル

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

  • ただいまの回答率 88.63%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

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