uwsc同一ソフトで複数起動すると上書きされる理由と改善方法

このQ&Aのポイント
  • uwscを複数起動し、それぞれのウィンドウにデータを入力した際、一つ目に入力した値が他のウィンドウに上書きされてしまう問題が発生します。その原因として、uwscが複数のウィンドウを別々のインスタンスとして認識していないためです。
  • uwscは各ウィンドウを同じソフトとして認識しているため、他のインスタンスの操作が反映されてしまいます。これを改善するためには、uwscにマルチインスタンス対応の設定を行う必要があります。
  • 詳しい手順はuwscの公式ドキュメントを参照してください。また、uwsc以外のツールを使用する方法もあります。複数のウィンドウを別々のソフトとして認識し、個別に操作できるツールを探してみてください。
回答を見る
  • ベストアンサー

uwsc 同一ソフトをクリックすると・・・

uwscについて質問なのですが、 検索エンジンからデータを拾ってくる、とあるツールを使っているのですが、このソフトが複数起動可能なソフトなので6つ起動させて、 ウィンドウを調整して、画面の左7割ぐらいに、 二列にして3つ並べています。 右側の3割にはエクセルを縦長に表示したものを表示させて、 uwscの記録を開始して、そのエクセルのA1に入力されている値を、 一番左上に表示してあるウィンドウのフォームに入力して、 で、またエクセルに戻り、A2の値を、右の一番上のウィンドウのフォームに入力して、、、とやっていき、 6つに入力しおわったところで、一番左上のウィンドウから「検索開始」というボタンを次々とクリックしていき、 uwscを停止させて、再生開始をクリックしたら、 なぜか、ツールを一つのソフトとして認識してしまっているみたいで、 一つ目に入力したものの上にA2の値が上書きされてしまい、 どんどんと上書きされてしまいます。 これはなぜなのでしょうか? 他にやり方があれば教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
noname#194317
noname#194317
回答No.1

それは、ウィンドウIDが同じだからじゃないですか?同一ソフトで複数立ち上げられるものとしてはメモ帳もそうですけど、UWSCが起動した状態でメモ帳を2つ起動し、順番にクリックしてUWSCで記録すると、2つとも「GETID("無題 - メモ帳","Notepad")」となってしまうはずです。これではウィンドウIDが同じになってしまい、区別できません。おそらく、こういうことが起きているのだと思います。 アプリケーションのタイトルが区別できる場合、先のメモ帳の例で言うと「無題」ではなくファイル名が設定されていれば、タイトルを全て指定することで、GETIDの値が区別可能になります。「GETID("C:\TEST.TXT - メモ帳","Notepad")」のようにです。 もしタイトルでは区別できない場合、アプリの立ち上げ順序に依存しちゃいますが、各ソフトをACW関数で切り替えるのをやめて、Alt+Tabキーでの切り替えにすれば対応できるでしょう。次のような感じです。 KBD(VK_ALT,DOWN,40) KBD(VK_TAB,CLICK,40) KBD(VK_ALT,UP,40) この例だと次のアプリがアクティブになります。もし2つ先のアプリをアクティブにしたければ、KBD(VK_TAB,CLICK,40)を2行並べてください。3つ先なら3行並べればOKです。 先に「アプリの立ち上げ順序に依存する」と書きましたが、これはこの方法で切り替えるスクリプトを作成した場合、次にこのスクリプトを動かす時もアプリの立ち上げ順序が同じになっていないと、誤動作するためです。例えばTabを3回押したらそのツールの3個目になるつもりだったのに、前回と違って今回はOutlookがそこにいた…という事故が起こりうるわけです。なので、スクリプトの先頭にツールの起動処理を入れてしまう方が安全かも知れませんね。

aslikethat
質問者

補足

素早い詳しいご回答ありがとうございます。 そういうことだったんですね^^ tabu+altを5回を繰り返すと上手い具合に循環できるようになったのですが、フォームへの入力と、検索開始ボタンのクリックで、先ほどの様になってしまいます。これらはどうやってスクリプトを書けばいいのでしょうか? htmlの場合はvalueやnameでできることは分かったのですがアプリはわかりませんでした。

関連するQ&A

  • EXCELのVBAでUWSCを・・・

    EXCELのセルにある値が入ったら、VBAでUWSCを立ち上げてUWSCのマウス操作を開始したいんです。 VBAにはどういう記述をすればいいのでしょうか?

  • UWSC教えて

    こんばんは UWSCというソフトでフォームに入力する際に、「半角英数ならそのまま、ひらなが入力モードなら半角英数にしてから入力」、つまり常に半角英数で入力したいのですが、どのようなコマンドを指定すればよいのでしょうか?

  • UWSCで変数をキー入力

    UWSCで変数に応じたキー入力をしたいのですが、 どうすればいいのでしょうか? たとえば 変数Aが 1 の場合は 01 とキー入力 変数Aが 25 の場合は 25 とキー入力 という感じで、変数Aは1~84までの値を取ります。 これをSELECT文で試してみたのですが、 1~5くらいまでならうまくいくのですが、 さすがに84まであるとエラーがでてしまいます。 SELECT A CASE 1 KBD(VK_0,CLICK,40) KBD(VK_1,CLICK,40) CASE 2 KBD(VK_0,CLICK,40) KBD(VK_2,CLICK,40) ・ ・ CASE 84 KBD(VK_8,CLICK,40) KBD(VK_4,CLICK,40) SELEND ↑エラー 二桁目と一桁目で分けて入力すればよさそうですが、 どう処理すればいいのかわかりません。 また、仮に変数が文字列を値として取る場合も、 その文字列をそのままキー入力させるにはどうしたらよいでしょうか?

  • (UWSC)エクセルのセルの値を読み込むには?

    UWSCで、エクセルのセルの値を読みこむ方法について 悩んでおります。 Excel = GETACTIVEOLEOBJ("Excel.Application"); val1 = Excel.ActiveSheet.range("A1").value; を使えば、開いているエクセルのA1セルにある値を 「val1」に読み込むことができました。 今、A1~A100にある100個のリストを順々に読み込むことを 考えています。おそらくfor文を使って、以下のようにするのかな? と思っております。 for i=1 to 100 val=○○ next A1~A100の値を順々に読み込むにはどのようにすればいいのでしょうか?

  • UWSCについて

    UWSCに関しての質問です。 エクスプローラを開き表示されるまで、停止させる には下記のように入力すれば上手く動きます。 Repeat Sleep(0.2) Until GETSTR(IE, 1, STR_STATUS) = "ページが表示されました" sckey(IE,VK_tab,VK_tab) ただ、エクセルのファイルを開く時もファイルが開くまで 上記と同様に停止したいのですがどうすればいいのでしょうか。 "ページが表示されました"とIDを書き換えるのかなと個人的に 思いましたが変わりに何を入力すればいいのか解りません。 よろしくお願いします。

  • 自動入力ツール「UWSC」について

    自動入力ツール「UWSC」について RagnarokOnlineにてUWSCを用いて簡単な動作をさせたく、具体的にはF6→F7と順に押すようにしたいのですが記録する所がうまくできません。 1.「Alt+F3」を入力し記録開始 2.F6を入力(ゲーム内ではF6を押したときの行動がとられます) 3.F7を入力(上に同じ) 4.「Alt+F2」を入力し記録終了 その後、再生をしてみても何も起こらないので困っているのですが、ROがアクティブになっているときは外部の入力を受け付けない等の制限があるのでしょうか? 分かる方回答をお願いします。

  • UWSCがうまく動かない

    ExcelからUWSCを使って他のソフト2個を動かして又、Excelに 戻ってくるのですが、UWSCが重なって動作を同時に行う為、次のソフトで実行してみました。すると同時には動作せずに1個のプログラムの動作が終わって次ののプログラムを実行してくれて良くのですが、戻るときにExcelプログラムが真っ白に表示されて上の部分にファイル名と応答無と出てそれ以上進みません。UWSCソフトを終了すれば元には戻りますが、うまく操作をさせるにはどうすれば良いですか?よろしくお願いします。 UWSCの動きは⇒スタートボタンの横のタスクバーにあるソフトをクリックから始まり⇒終わったら又、Excelのタブをクリックして戻ります。 次のソフトはWebで見つけたソフトです。 外部プログラムの実行と処理待ち そこで、以下のサンプルマクロでは、Shell関数を使用して外部プログラムを実行し、そのプログラムが終了するまで待つように処理を施してあります。 *もうひとつの質問ですが、Win32 API関数の宣言はどこに記載をすればいいのですか? このままエディータに書けばいいのでしょうか '--- Win32 API 関数の宣言 --- Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, _ ByVal dwMilliseconds As Long) As Long Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, _ ByVal bInheritHandle As Long, _ ByVal dwProcessId As Long) As Long Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long '--- Win32 API 定数の宣言 --- Global Const PROCESS_ALL_ACCESS As Long = &H1F0FFF Global Const INFINITE As Long = &HFFFF Sub WaitRun() Dim TaskId As Long 'タスクID Dim hProc As Variant 'プロセスハンドル ' 外部プログラムの実行 TaskId = Shell("c:\Test.bat", 2) ' プロセスハンドルの取得 hProc = OpenProcess(PROCESS_ALL_ACCESS, False, TaskId) ' プロセスのオープン If OpenProcess(PROCESS_ALL_ACCESS, False, TaskId) <> vbNull Then ' プロセスのシグナル待ち Call WaitForSingleObject(hProc, INFINITE) ' プロセスクローズ CloseHandle hProc End If

  • UWSC使用中に画面クリックすると裏に飛んでしまう

    UWSCの初心者です。 オンラインゲームで、装備の変更のためにUWSCを使用しているのですが、 装備変更を行った後、マウスのポインターを装備にあわせても、何の装備か表示されなかったり マウスでクリックすると、ゲーム画面から裏に画面が切り替わってしまうという問題がおきて、困っています これらの問題は常になるわけではなく、なる時とならないときがあります。 アクションゲームですので、裏に切り替わって戻ってくるまでの間に敵に攻撃されてしまうので、不便で仕方ありません。 自分なりに調べてみたのですが、解決方法がまったく分かりませんでした。 良い方法をご存知の方、教えていただけるとたすかります。 どうぞよろしくお願いします。 ちなみに、ゲームはウインドウモードだととても小さすぎるので、フルスクリーンでプレイしています

  • UWSCについて

    当方、画像修正のフォトショップというソフトと合わせて使っています。 フォトショップ上で、画像のリサイズをしているのですが、画像が数百枚、時には千枚を超える時もあり、この作業をUWSCにやらせています。 現在の構文は簡単なもので、以下のようなものです ~~~~~~~~~~ while true A座標クリック B座標クリック ~~~~~~~~~~ しかし、稀にですがエラーメッセージが出てしまい「OKボタン」押さない限り、操作がストップしてしまいます。 この状況を改善するにはどの様な構文にすればよいでしょうか? またこういった事が詳しく載っているサイトはありますか?

  • エクセル vbOKCancel

    エクセル vbOKCancelについて Sheet上にボタンを作り、フォームが表示 フォーム上の ボタンをクリックしたらTextBoxの値がSheetの セルに値を入れるようにしました! MsgBoxを表示させて ”セルの値を入れますか?”と させましたが・・・はいをクリックは問題ないのですが いいえをクリックしても 値はセルに入力されてしまいます! いいえをクリックしたら 入力させない記述はあるのでしょうか? 教えて下さい。

専門家に質問してみよう