UWSC 掲 示 板
投稿時に「証明書が不正です」と出る場合には、JavaScriptをオンにしてください
動作不具合での質問の場合には環境(OS,IEのバージョン等)の表記もしてください
タイトルは質問内容を表したものにしてください
ネットゲーム関係の質問はご遠慮ください

何度もchkimg のループを実行する時のデータ呼び出しについて / masaki
while true
if chkimg("test.bmp") then
処理1
else
処理2
endif
sleep(0.1)
wend

とした場合に画像データはchkimgが実行される度に読み込みを行っていますか?
それともメモリ上にキャッシュされ画像データの読み込みは一度だけですか?
上記の例の場合1秒間に10回(実際にかかる時間は考慮せず)も読み込んでいるのかと疑問に思いました。

No.2981 2016/10/01(Sat) 10:00:42

Re: 何度もchkimg のループを実行する時のデータ呼び出しについて / まるぱ
while true
msgbox("test.bmpを入れ替えて下さい")
if chkimg("test.bmp") then

と変更して、メッセージボックスでOKを押す前に
test.bmpの画像を他の画像に入れ変えれば

その答えが出ますね。

他の画像(名前はtest.bmpにする)に入れ替えても処理1なら「画像データの読み込みは一度だけ」と考えていいのではないでしょうか?


疑問>実験>結果から考察>次の実験>結果から考察、、、、

No.2984 2016/10/01(Sat) 21:42:02

Re: 何度もchkimg のループを実行する時のデータ呼び出しについて / koi
http://www3.rocketbbs.com/13/bbs.cgi?id=umiumi&mode=pickup&no=534
でのumiumiさんの書き込みによると
BMPはUWSC内部でキャッシュしているので毎回読みには行きません。
ということのようです

No.2986 2016/10/02(Sun) 04:16:15

Re: 何度もchkimg のループを実行する時のデータ呼び出しについて / しゅん
回答でなくて申し訳ないですが、、、
koiさん、まるぱさんの意図を汲んでも良かったのではないでしょうか。
飢えている人に魚を与えるより、釣り方を教えた方が良いケースは多いかと思います。

masakiさん、スクリプトにPRINT文を適宜入れ、時間とログを取るようにすると、その手の疑問は解消しますよ。
いつ画像データを読むかも想像できるようになります。

No.2990 2016/10/03(Mon) 00:18:56

Re: 何度もchkimg のループを実行する時のデータ呼び出しについて / masaki
まるぱ様、koi様ご返信ありがとうございます。
先ず、まるば様の方法で試してみました。
結果は画像入れ替えで入れ替えた反応がでました。
つまり再読込がされている事になります。
続いてkoi様の過去の投稿にもある通り毎回読まないとumiumi様のご回答で確認致しました。
画像が変われば再読込をして画像がそのままであれば再読み込みしないと言う事で宜しいでしょうか?
それとも毎回読み込みを行っているのか少々混乱しております。
しゅん様ご返信ありがとう御座います。おっしゃる通りですが内部的要素を含むため今回質問させて頂きました。これはUWSCを作った側でしか判らないと判断しました。

No.2992 2016/10/03(Mon) 09:47:44

Re: 何度もchkimg のループを実行する時のデータ呼び出しについて / umiumi
>画像が変われば再読込をして画像がそのままであれば再読み込みしないと言う事で宜しいでしょうか?
そうです。

No.2994 2016/10/03(Mon) 21:37:02

Re: 何度もchkimg のループを実行する時のデータ呼び出しについて / masaki
umiumi様
おかげさまで疑問がすっきり解決しました。
ありがとうございました。

No.2996 2016/10/04(Tue) 08:29:08
特定のファイルをzipさせたい / taku
フォルダの中にある特定の複数のファイルをzip圧縮させたいのですが、

そもそもUWSCでzip圧縮する方法が分かりません。

分かる方いらしたら、ご教授くださいませ。

No.2982 2016/10/01(Sat) 15:09:01

Re: 特定のファイルをzipさせたい / Nagatani
Lhaplusであれば下記の通りです。

EXEC("<#DBL>C:\Program Files (x86)\Lhaplus\Lhaplus.exe<#DBL> /O:C:\Users\xxxxxxxx\Documents /C:zip C:\Users\xxxxxxxx\Documents\book1.xlsx",True)

No.2983 2016/10/01(Sat) 18:41:56

Re: 特定のファイルをzipさせたい / satocha
カレントディレクトリに"empty.zip"を作り、そこに圧縮する場合

sha = CreateOleObj("Shell.Application")
powershell( "Set-Content -path empty.zip -value (<#dbl>PK<#dbl> + [char]5 + [char]6 + (<#dbl>$([char]0)<#dbl> * 18)) -ErrorAction Sto" )
zip=sha.NameSpace("empty.zip")
zip.CopyHere(圧縮したいフォルダやファイルのパス)


このあと、zip.CopyHereでいくらでもファイルやフォルダを追加できます

No.2985 2016/10/02(Sun) 04:11:15

Re: 特定のファイルをzipさせたい / stuncloud
powershell()関数を使うのがアリで、さらにWindows 10であればCompress-ArchiveというCmdletでzipファイルが作れますよ
例: jpgファイルだけをjpg.zipに圧縮
cmd = "Get-ChildItem .\folder\*.jpg | Compress-Archive -DestinationPath jpg.zip"
powershell(cmd)

No.2993 2016/10/03(Mon) 10:27:14
data URI Scheme用のBase64エンコード / まるぱ
最近よくこの掲示板を覗かせてもらってます。
今日やりはじめて、うまくいかないのでご存じの方教えていただけますでしょうか?

しゅんさんのページ
http://d.hatena.ne.jp/junjun777/20140428/powershell_base64

ここにある方法
[Convert]::ToBase64String([System.IO.File]::ReadAllBytes('$path'))
これをPowerShellで実行。

で画像をdata URI Scheme用のBase64エンコードしてみましたが、
MSXML2.XMLHTTPでPOSTしたところサーバーからエラー500が返ってきました。

そもそも
これは URI Scheme用なのでしょうか?

これが合っているのならエラーが出る原因は他にあることになります.
アドバイスよろしくお願い致しますm(- -)m

No.2979 2016/09/30(Fri) 22:59:05

Re: data URI Scheme用のBase64エンコード / まるぱ
自己解決しました。この方法であっていました。
あとはさらにURLエンコードしたりする必要がありました。

No.2980 2016/10/01(Sat) 08:53:39

Re: data URI Scheme用のBase64エンコード / しゅん
ちなみに、Base64エンコードには、以下の方法もあります。
http://d.hatena.ne.jp/junjun777/20120827/file_to_uwsc_script
Base64変換部分を取り出すのは面倒かもしれませんが。
#POWERSHELL関数は遅いですからね、、、。

No.2991 2016/10/03(Mon) 00:20:45
IE11にアップデート後、ボタンを押しても反応がないについて / シスイ
IE11にアップデート後、サイト上でボタンやテキストリンクを押しても反応がなくリンク先に飛ばなくなりました。UWSCの掲示板で投稿するのはいかがなものかなと思いましたが、すごく困っています。
助けて頂けないでしょうか?
試した事は、IEのインターネットオプションで保護モード解除、セキュリティーレベルを一番低くしてみた、互換表示設定でURL登録です。
環境は、WINDOWS7を利用しています。

No.2937 2016/09/27(Tue) 06:02:08

Re: IE11にアップデート後、ボタンを押しても反応がないについて / しろまさ
まずはIEのリセットとPCの再起動
https://support.microsoft.com/ja-jp/kb/923737

No.2940 2016/09/27(Tue) 08:26:54

Re: IE11にアップデート後、ボタンを押しても反応がないについて / シスイ
しろまさ様、IEのリセットとPCの再起動をしてみましたが、改善はないです。
gifの画像で症状をスクリーンショットしてみました。

https://gyazo.com/fb5e4bd24a9a6839c6de80f9689c3d9d

No.2946 2016/09/27(Tue) 12:24:53

Re: IE11にアップデート後、ボタンを押しても反応がないについて / しろまさ
マルウェアのチェックをしてみる。
http://www.geocities.co.jp/Playtown-Yoyo/6130/notes/malwarebytes-anti-malware.htm
https://www.malwarebytes.com/mwb-download/

No.2949 2016/09/27(Tue) 16:38:36

Re: IE11にアップデート後、ボタンを押しても反応がないについて / シスイ
しろまさ様、マルウェアのチェックをしても改善なかったです。IE11ボタン押せないとかで検索しても、私と同じ症状になってる人いないみたいでお手上げ状態です。
No.2950 2016/09/27(Tue) 20:54:10

Re: IE11にアップデート後、ボタンを押しても反応がないについて / しゅん
画像を見ると、リンクの色が変わっているので、押せているように思えます。
押せているけど、遷移しない、、、。
シスイさんの環境で再現する、最小のスクリプトを提示していただけますでしょうか。

No.2958 2016/09/28(Wed) 08:50:31

Re: IE11にアップデート後、ボタンを押しても反応がないについて / シスイ
しゅん様、スクリプトですがbtnでクリックしようとした所、画面遷移がしないと事が判明しました。そこで、手動でマウスでクリックしても画面遷移がしません。ローカル環境だと画面遷移してくれます。この症状で、1週間つぶれてしまいました。
No.2960 2016/09/28(Wed) 09:25:50

Re: IE11にアップデート後、ボタンを押しても反応がないについて / しろまさ
> 手動でマウスでクリックしても画面遷移がしません。
> ローカル環境だと画面遷移してくれます。

この違いをもう少し具体的に詳しく教えて下さい。

No.2962 2016/09/28(Wed) 10:20:28

Re: IE11にアップデート後、ボタンを押しても反応がないについて / シスイ
しろまさ様、下記のスクリーンショットで撮ったgifの画像を見てみて下さい。
ローカル環境のワードプレスのログインだとログインボタンが押せて画面遷移します。
一方のローカルではない場合だと、ログインボタンが押しても画面遷移されません。

[ローカル環境]
https://gyazo.com/e92b649e4de69c5c58818232b6dd17b7

[ローカルではない場合]
https://gyazo.com/b6918ac72538b2d6c210a0cf3a9e4064

No.2965 2016/09/28(Wed) 13:46:14

Re: IE11にアップデート後、ボタンを押しても反応がないについて / しゅん
自PCにサーバーをたてて、wordpressを動かすとクリックできるけど、インターネット越しになるとできなくなる、ということだとすると、インターネットオプションのセキュリティ設定に何かありそうですね。
ためしに該当URLを信頼済みサイトにしたらどうなりますでしょうか?
また、インターネット越しの場合、他のブラウザー(FireFox等)では、クリックできるのでしょうか?

No.2967 2016/09/28(Wed) 17:13:11

Re: IE11にアップデート後、ボタンを押しても反応がないについて / シスイ
できたぁ〜〜〜〜〜〜〜〜しゅん様本当にありがとうございます。
このゾーンのサイトにはすべてサーバーの確認(https:)を必要とするにチェックが入っていたのを外して信頼済みサイト追加に登録したら画面遷移できました。
IE11をアンインストールしようとしても、パソコンで制限されているとかあって八方塞がりだったんです。
UWSCでできる事を色々勉強してきて可能性が拡がってきたと思っていた所に今回の問題で、代替案を考えていたのでホントに助かりました。

No.2968 2016/09/28(Wed) 19:00:08

Re: IE11にアップデート後、ボタンを押しても反応がないについて / しゅん
おめでとうございます。
ただ、しろまささんのアシストあっての解決ということを忘れないでくださいね。

#多分、特殊な環境で、こういうことが起きるのか。
#グループポリシーとかかしらん。

No.2989 2016/10/03(Mon) 00:12:40
DOSCMD関数のCDコマンドが動作しない / kch6
いろいろな方のブログを参考にDOSCMD関数を使ってカレントディレクトリを変更しようと

DOSCMD("CD " + path)(pathはディレクトリ名)

としてもディレクトリが変更できないのですが、私だけなのでしょうか?

DOSCMD関数を使ってカレントディレクトリを変更できないので、カレントディレクトリを変更したいときに

WshShell = CreateOleObj("WScript.Shell")
WshShell.CurrentDirectory = path

としているのですが、ほかにうまい方法があればご教授願いたいと思います。よろしくお願いします。

No.2971 2016/09/29(Thu) 14:33:13

Re: DOSCMD関数のCDコマンドが動作しない / stuncloud
textblock cmd
cd
cd C:\Windows\
cd
endtextblock

print doscmd(cmd)

として試してみました
cdだとディレクトリを移動しませんね
cdではなくpushdにしてみたらコマンドプロンプト内での作業ディレクトリは変更できました
しかしそれはあくまでdoscmd実行中のコマンドプロンプト内だけで、UWSC側には影響がないようです

> WshShell = CreateOleObj("WScript.Shell")
> WshShell.CurrentDirectory = path


が一番手間なく変更できる手段だと思いますよ

No.2972 2016/09/29(Thu) 15:27:56

Re: DOSCMD関数のCDコマンドが動作しない / kch6
stuncloudさん、早速のお返事ありがとうございました。参考になりました。
No.2973 2016/09/29(Thu) 18:28:17

Re: DOSCMD関数のCDコマンドが動作しない / しろまさ
APIもありますよ。

DEF_DLL SetCurrentDirectoryA(String) :Long :kernel32 // カレントディレクトリ変更
SetCurrentDirectoryA("C:\")

No.2976 2016/09/30(Fri) 10:45:56

Re: DOSCMD関数のCDコマンドが動作しない / kch6
しろまささん、ありがとうございました。勉強になりました。
No.2977 2016/09/30(Fri) 12:10:45
Re:IEのソースをコピー / リズ
id = GETID("Google Chrome","Chrome_WidgetWin_1",-1)
SCKEY(id,VK_F6)

msgbox("転載したいURLを選択してからOKを押してください")

SCKEY(id,VK_CTRL, VK_C)

url = GETSTR(0)

ie = createOLEobj("InternetExplorer.Application")
ie.Visible = True
ie.navigate(url)
BusyWait(ie)

ie2 = getid("Internet Explorer","IEFrame")
SCKEY(ie2,VK_CTRL, VK_A)

ie3 = GetActiveOLEObj("InternetExplorer.Application")
ctrlwin(hndtoid(ie3.hwnd), ACTIVATE)

selection = ie3.document.getSelection()
if selection.rangeCount then
 range = selection.getRangeAt(0)
 content = range.cloneContents()
 elem = ie3.document.createElement("div")
 elem.appendChild(content)
 // クリップボードへコピー
 sendstr(0, elem.innerHTML)
else
 msgbox("未選択です")
exitexit
endif
-----------
以前こちらで質問させて頂いたものです。
作成して頂いたstuncloudさんありがとうございました。
完璧なものをご用意して頂きとても助かりました。
あの後私の方でいろいろ編集してみた所、
selection = ie3.document.getSelection()
上記コードで止まってしまい原因がわからないです。
-----------
流れとしては

クロームを起動させておいてマクロ実行

メッセージ表示後、URL全選択

URLをIEで開きなおし、開いてるページ全体のソースをクリップボードに貼り付け

以上となります。
ご教授の程よろしくお願いします。

No.2947 2016/09/27(Tue) 15:18:40

Re: Re:IEのソースをコピー / stuncloud
それは部分的なソースが欲しい場合に選択範囲から取得する、というものです
全体が欲しいなら単に
ie.document.documentElement.innerHTML
で良いでしょう

No.2948 2016/09/27(Tue) 16:23:56

Re: Re:IEのソースをコピー / リズ
ありがとうございます。

下記で無事動きました^-^
sendstr(0, ie.document.documentElement.innerHTML)

No.2970 2016/09/29(Thu) 00:33:06
ファイルのアップロード方法、ウィンドウIDを取得出来ない / ししずむ
とある会員サイトで、CSVファイルから情報を取得して、画像ファイルを登録(アップロード)しようとしています。
<form>の中にある要素の<input type = "file"></input>をクリックすると、
「アップロードするファイルの選択」というダイアログが出てきます。

@ダイアログ上部のディレクトリを表示している欄に、画像を保存しているディレクトリを入力。

Aファイル名の欄に、CSVファイルに掲載している画像名を貼り付けて、「開く」をクリック。

B次の画像を登録

という作業を実現したいと思っています。

----------記述してみたソース------------

IE.document.forms[0].elements[2].click() //<form>の中にある要素の<input type = "file"></input>をクリック、ダイアログを立ち上げる。

Up_ID = getid("アップロードするファイルの選択") //ダイアログのウィンドウIDを取得。

SCKEY(Up_ID, VK_TAB, VK_TAB,VK_TAB,VK_TAB,VK_TAB,VK_SPACE) //ディレクトリ情報を入力する欄にカーソルを移動。

SENDSTR(Up_ID,Pic_Dir) //画像アップロード元ディレクトリ情報を貼り付け。

SCKEY(Up_ID,VK_RETURN) //画像アップロード元ディレクトリに移動。

SCKEY(Up_ID,VK_SHIFT,VK_TAB,VK_TAB) //ファイル名を入力する欄にカーソルを移動。

SENDSTR(Up_ID,画像ファイル名) //CSVファイルから読み込んだファイル名を入力。

SCKEY(Up_ID,VK_RETURN) //「開く」をクリックして画像をアップロード。

----------記述してみたソース------------

上記のソース内容を記述してみましたが、動きませんでした。
ダイアログのウィンドウIDが取得できていないようです。

sleep()で待ち時間等を設定しましたが、動きませんでした。

GetId()の記述の仕方はあっていると思うのですが、どうしてウィンドウIDが取得できないのか分かりません。

このような場合、どのようなソースを記述すれば良いのでしょうか?ご教授よろしくお願いいたします。

使用ソフト:UWSC5.2.2.0
OS:Windows7
Internet Explorer:ヴァージョン11

No.2933 2016/09/26(Mon) 18:42:50

Re: ファイルのアップロード方法、ウィンドウIDを取得出来ない / stuncloud
> どうしてウィンドウIDが取得できないのか分かりません。
IE.document.forms[0].elements[2].click() してファイル選択ダイアログが表示された時点でスクリプトがブロックされてるからですね
getid()が動作するのはダイアログが閉じられた後になります
ファイル選択ダイアログに対する処理を関数化して、あとはinput要素をclick()する直前にその関数をthreadで呼ぶことで対処可能です

thread SetFileDlg()
IE.document.forms[0].elements[2].click()

procedure SetFileDlg()
 id = getid("アップロードするファイルの選択")
 // ファイル選択ダイアログに対する処理
fend

No.2945 2016/09/27(Tue) 10:58:54

Re: ファイルのアップロード方法、ウィンドウIDを取得出来ない / ししずむ
ご丁寧にありがとうございます!
その様なやり方は全く知りませんでした。

 IE.document.forms[0].elements[2].focus()
 SCKEY(IE_ID,VK_SPACE)
 sleep(0.3)
 UP_ID = GetID("アップロードするファイルの選択")
上記の様に、一旦focus()させてからスペースキーを送ることで、
ダイアログがアクティブになり、操作出来るようになりました。

教えていただいた方法も今後の作業で必要になってくるので、
試してみて身につけたいと思います。

ありがとうございました!!

No.2969 2016/09/28(Wed) 23:48:53
メッセージボックスが表示されるまで待つ / テス
UWSCで秀丸マクロを実行後、クリップボードに張り付けるものを作成したい考えています。

hide_id = GETID("秀丸")
SCKEY(hide_id, VK_CTRL, VK_A)
SCKEY(hide_id, VK_CTRL, VK_V)
SCKEY(hide_id, VK_ALT, VK_M ,VK_X)

id1 = GETID("マクロ実行", "#32770", -1)
SCKEY(id1, VK_TAB)
SCKEY(id1, VK_RETURN)
SLEEP(10)
SCKEY(hide_id, VK_CTRL, VK_A)
SCKEY(hide_id, VK_CTRL, VK_C)

上記で動く事は動くのですが、SLEEP(10)とは限りません。
そこでふと思ったのですが、秀丸マクロで「マクロ完了」とメッセージが出る条件で
全選択⇒コピー といった事は可能でしょうか

No.2952 2016/09/27(Tue) 23:16:40

Re: メッセージボックスが表示されるまで待つ / 俄プログラマー
Repeat Until 文を使用
No.2955 2016/09/28(Wed) 00:39:33

Re: メッセージボックスが表示されるまで待つ / テス
ご返信ありがとうございます。

Repeat Until 文でループさせる場合、どのような条件式になるでしょうか

No.2956 2016/09/28(Wed) 02:34:33

Re: メッセージボックスが表示されるまで待つ / satocha
秀丸エディタを持っていない(有料ですからね)のですが、思いつく方法を書いてみます
>秀丸マクロで「マクロ完了」とメッセージが出る
というのがどういう状況を言っているのかわからないので、場合分けして答えます
場合1=マクロ終了後に「"マクロ実行"」ダイアログが閉じる場合
  while status(id1,st_isid)
   sleep(0.1)
  wend
場合2=別のマクロ終了ポップアップが出てくる場合
  この新ダイアログがgetid("マクロ終了")で補足できるとして
  repeat
   end_id=getid("マクロ終了")
   //ここでポップアップを閉じる処理(ありそうなのがclkitem(end_id,"OK",clk_btn))が必要かも
  until status(end_id,st_isid)
場合3=マクロ実行ダイヤログが残ったままで終了ポップアップも出ず、エディタのメッセージエリアに「マクロ終了」という文字列が出力される場合。エディタ本体でなくマクロ実行ダイヤログにメッセージが出るなら下のhide_idをid1におきかえてください
  repeat
   allstr=""
   for str in getitem(hide_id,itm_acctxt,-1)
    allstr=allstr+str
   next
   for str in getitem(hide_id,itm_statusbar,-1)
    allstr=allstr+str
   next
  until pos( "マクロ終了", allstr ) 

ただ、これUWSCを使わず全部秀丸のマクロでできたりしないのでしょいうか

No.2957 2016/09/28(Wed) 05:08:37

Re: メッセージボックスが表示されるまで待つ / 俄プログラマー
>Repeat Until 文でループさせる場合、どのような条件式になるでしょうか

「秀丸マクロで「マクロ完了」とメッセージが出る条件で」
とご自身で書かれている筈ですが?
Repeat Until 文、GETID 文
ヘルプで使い方の例があります。参考にして練習してみてください。

PS
スレの乱立、お名前の変更は避けましょう。
答える側の事も考えて下さいね。

No.2963 2016/09/28(Wed) 12:20:51

Re: メッセージボックスが表示されるまで待つ / テス
ご返信ありがとうございます。

>ただ、これUWSCを使わず全部秀丸のマクロでできたりしないのでしょいうか
確かにその通りでした。
秀丸マクロでクリップボードにコピーすれば済む話でした。

repeat〜untilの文例ありがとうございます。
マクロ終了のメッセージが出た場合の条件式を自力で作成する事が出来ず、
質問を重ねてしまい申し訳ありません。
大変勉強になりました。

No.2966 2016/09/28(Wed) 15:23:00
同タイミングでの2つのPopupWin / tiny
はじめまして。大変お世話になっております。

下記のようなPopupWinを含む1つのスクリプトをランチメニューから同時に起動して2つのIEに対して別々に処理したいのですが、うまくいきません。
PopupWinするタイミングはそれぞれのIEでランダムなのですがほぼ同じになる時があり、その時にPopupWinした2つのウィンドウを区別できないのかうまくクリックできません。
親IEからPopupWinしたウィンドウのみをクリックすることは可能でしょうか?
よろしくお願い致します。

Thread PopupWin()
IESetData(IE,True,"","alt=決定")
BusyWait(IE)

Procedure PopupWin()
ID = getid("Web ページからのメッセージ","#32770",-1)
clkitem(ID,"OK")
Sleep(1)
Fend

No.2926 2016/09/26(Mon) 12:10:38

Re: 同タイミングでの2つのPopupWin / stuncloud
同時にダイアログが出た場合は、双方のスクリプトが同じダイアログからgetidでIDを取得しているのではないかと考えられます
そのため片方のスクリプトではクリックに成功し、もう片方はクリック対象を失って失敗している…と仮定した場合以下で回避できるのではないかと思います

Procedure PopupWin()
 ID = getid("Web ページからのメッセージ","#32770",-1)
 if ! clkitem(ID,"OK") then
  PopupWin()
 endif
Fend

クリックに失敗したらもう一度ダイアログを待機します
こうすれば残ったダイアログも見つけられるのでクリックさせられます

この方法で上手く行けば、どちらのIEが出したダイアログかは考慮する必要がないので楽ですね
ただし懸念点がないわけではなく、双方のスクリプトのclkitemが成功したことになってしまう場合にこれでは上手く処理できないんですね
タイミングによってはそういうこともあり得るかもしれないです

あとそもそも仮定が間違っている可能性もあります
とりあえずお試しください

No.2929 2016/09/26(Mon) 14:56:20

Re: 同タイミングでの2つのPopupWin / tiny
アドバイスありがとうございました。
アドバイス頂いた通りやってみたのですが、うまくいきませんでした。

>同時にダイアログが出た場合は、双方のスクリプトが同じダイアログからgetidでIDを取得しているのではないかと考えられます
>そのため片方のスクリプトではクリックに成功し、もう片方はクリック対象を失って失敗している…と仮定した場合


仰られているこの仮定はその通りだと思います。
実際例えばIE1,IE2の出すダイアログをdlg1,dlg2として、dlg2のクリックを失敗し開いている状態で次のdlg1が開かれるとIE1はdlg2をクリックしている様な現象が見られます。

引き続き良いアイデアがありましたらよろしくお願い致します。

No.2942 2016/09/27(Tue) 10:03:53

Re: 同タイミングでの2つのPopupWin / しろまさ
IEのプロセスが別ならGetAllWinからPIDで判断できるのでは?(タブ型だとダメ)
No.2943 2016/09/27(Tue) 10:37:30

Re: 同タイミングでの2つのPopupWin / stuncloud
あーだめでしたか、やはり両方でOKが押せたことになっちゃってるのかな?
であればもう双方のスクリプトで2回づつクリックを試みるとかでいい気がします

Procedure PopupWin()
 for i = 1 to 2
  ID = getid("Web ページからのメッセージ","#32770")
  clkitem(ID,"OK")
  while status(ID, ST_VISIBLE)
   sleep(0.1)
  wend
 next
Fend

getid空振り時に無限待ちしないように第三引数の-1は外しました
あとはOKをクリックしてからダイアログが消えるまでの間に同じダイアログをgetidしないように待つ処理も入れてみました (意味ないかもですが、不要そうなら消して大丈夫です)
計4回処理を試みるのでどっかしらでふたつのダイアログに引っかかるんじゃないかと思います
getidの無限待ちを止めたので thread PopupWin() はなるべくダイアログが出る直前に呼んでください

No.2944 2016/09/27(Tue) 10:47:49

Re: 同タイミングでの2つのPopupWin / tiny
アドバイス通りやりましたが、やはりうまくいかない時があります。
タイミングによっては、
COM_Error:Access violatin at adress 0068A6B1 in module 'uwsc.exe'.Read of address 00000000
のようなエラーが出て止まります。
調べたところ、実際にはクリックできてないがクリックできたと判定して次の処理に進んでしまうためエラーしている様です。
タイミングの問題ということで、sleepを場所、長さを変えて挿入したり、ループ回数を変えたり等してみましたがだめでした。
何かあと一息のような気がしますので、引き続きよろしくお願い致します。

No.2951 2016/09/27(Tue) 23:13:53

Re: 同タイミングでの2つのPopupWin / 俄プログラマー
TRYを使ってみるとか?
No.2954 2016/09/28(Wed) 00:38:28

Re: 同タイミングでの2つのPopupWin / stuncloud
こちらで検証用ページを作って試した限りでは問題なく動作しています
必要な情報が足りずこれ以上はもうアドバイスのしようもありません
(実際のサイトが見れれば話は別なんですが)
あとはもう、そもそもダイアログ出させなくするとかいった乱暴な手段しか思い浮かばない

> やはりうまくいかない時があります。
うまくいく場合もあるってことですよね
どういった場合にうまくいかないかを調べてそれに対処していくしかないでしょう
> 何かあと一息のような気がしますので
とのことなのでがんばってください

No.2961 2016/09/28(Wed) 09:50:37

Re: 同タイミングでの2つのPopupWin / tiny
わざわざ検証までして頂きありがとうございます。
もう少し原因を調べてさらに試行錯誤したいと思います。
本当にありがとうございました。

No.2964 2016/09/28(Wed) 12:22:07
テキストデータ全体をメッセージ表示 / シン
質問です
すでに開いている秀丸のテキストデータすべてをクリップボードに張り付け、メッセージに反映するにはどうすればいいでしょうか

No.2936 2016/09/27(Tue) 01:39:33

Re: テキストデータ全体をメッセージ表示 / しゅん
秀丸に対してSCKEY等で全選択・コピーを指示し、GETSTRでクリップボードから内容を取得、MSGBOXで表示すれば良いと思います。
No.2959 2016/09/28(Wed) 08:53:23


 過去ログ(〜2016/10/02)・検索ツール


以下のフォームに記事No.と投稿時のパスワードを入力すれば
投稿後に記事の編集や削除が行えます。
200/200件 [ ページ : << 1 ... 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 >> | 過去ログ ]