[ 掲示板に戻る ]

過去ログ閲覧モード

navigateしづらいサイト / むーたん
IE.navigateの遷移が非常に重たかったり、すぐに止まってしまうサイトは他のサイトと何が違うのでしょうか?例えば次の例はbookoffのものです。

Public IE
IE = CreateOLEObj("InternetExplorer.Application")
IE.Visible = True
setOleEvent()

for n=1 to 10
IE.Navigate("http://www.bookoffonline.co.jp/display/L001,p="+n+",bg=1221,st=u,")
BusyWait()
next

このケースではすんなり1〜10まで遷移できます。
でも例えばmixiで同様の処理(ページ数をfor〜loop)すると遷移速度が遅い&ストップする事が頻繁にあります。F5を押したり、「次を表示」など、手動でカバーしてやると動くケースも多いけれど、できれば全部自動にしたいです。

すぐに止まってしまうサイトって何が違うのでしょう?自宅PCからだけでなく、ネカフェをいくつか回って同様の処理をしたけれど、やはりmixiは重たいです。職場の業務用サイトもたまに止まったりしました。
IE.navigateだけでなく、IElinkで「次を表示」とやってもやはりストップしてしまいます。良案ありましたら教えて下さい。

No.569 2014/12/13(Sat) 01:26:38

Re: navigateしづらいサイト / むーたん
環境を書き忘れていました。
IE11、windows8です。
windows7でも止まる事を確認しています。

No.570 2014/12/13(Sat) 10:40:13

Re: navigateしづらいサイト / Nagatani
たぶんで申し訳ありませんがBusyWait()が原因だと思います。
FAQ : IE11にて画面更新後に操作(COM)ができない  #n45
http://www.uwsc.info/faq.html#n45が記載されていますのでご確認ください。


////////////////////////////////
/// BusyWait
  DEF_DLL SendMessageA(Hwnd, Long, Long, Dword): bool: user32//
  CONST WM_ACTIVATE = $06
  Procedure BusyWait()   // 更新待ち処理
Const TIME_OUT = 30
Tm = Gettime()
repeat
FUKIDASI("BusyWait Now ")
Sleep(0.3)
IF GetTime() - Tm > TIME_OUT THEN Exit
UNTIL (! IE.Busy) and (IE.ReadyState=4)
SendMessageA(ie.Hwnd, WM_ACTIVATE, 0, 0) // 更新直後に WM_ACTIVATEを送る事によりバックグランドでも操作可となる
FUKIDASI()
  Fend

///////////////////////////////
Procedure Assert(cmd, line)
if cmd then Exit
Msgbox("Assertion failed at "+line)
ExitExit
Fend

No.574 2014/12/14(Sun) 22:14:49

Re: navigateしづらいサイト / むーたん
>>Nagataniさん
遅くなりまして申し訳ありません。
IE8だったり、11でそれぞれ試しました。
フキダシのお知らせはわかりやすくてありがたいです。
結果としては、正直どうかわからなかったです。
今まで止まってしまう時でも、完全停止ということはあまりなく、数分〜数十分するといつの間にかnavigateしていたことがあり、今回頂いたスクリプトでも分単位の停止はありました。以前よりもスピーディになっているのかもしれないけれど、主観的にはちょっとわかりません。
今回頂いたものを見て、スレッドを使ってみようかと思いつきました。

参考にさせて頂きました。ありがとうございます。

No.605 2014/12/19(Fri) 21:52:08
CHKIMGの座標位置について / koi
気分的な問題が大きいのですが
CHKIMGで画像検出した際に画像ポジションをクリックさせたいのですが
現状は左上座標が返ってくるためそこをクリックさせています
できればこれを画像の中心位置をクリックさせるようにしたいのですが
検索画像の画像サイズが分からないといった理由からそれが実現できずにいます
(複数の検索を行っていてそれぞれ画像サイズが異なります)

ヘルプなどで見ている限り簡単に取得する方法がなさそうに感じているのですが
見落としているだけで実は方法があるでしょうか?
(別途API使ってサイズ調べるとかいうのは無しで)


要望として
G_IMG_XWやG_IMG_YW みたいな変数追加できないでしょうか

No.604 2014/12/19(Fri) 17:21:14
フォームデータの内容を取得したい / 釣る野草
<input type="text" size="30" value="読み込み">

上のソースの"読み込み"を取得したいです
どうすればいいでしょうか?

No.599 2014/12/18(Thu) 18:04:35

Re: フォームデータの内容を取得したい / stuncloud
// typeがtextでsizeが30のinput要素を取得
e = ie.document.querySelector("input[type=<#DBL>text<#DBL>][size=<#DBL>30<#DBL>]")
msgbox(e.value)

No.603 2014/12/19(Fri) 14:55:43
UWSC ver 5.0.4 / umiumi
CHKIMG関数にてアプリ最大化でバックグランド時に位置が8ドットずれるパターンを修正
COMの関数の使用にて空文字を使用した時にエラーが出るパターンがあるのを修正
MONITOR関数にて番号0 がメインモニタでない事があるのを修正
POWERSHELL関数にて戻り値にBOM(文字コード)が付加された場合に BOMを削除
Chromeブラウザに対しSENDSTR関数が不可になっていたのに対処
Pro版:
XLSETDATA関数にて文字色、セル色の指定を出来るようにした
XLOPEN関数にてExcel起動済み状態でパスワード付きファイルを開くとダイアログが出るのを修正
Debugger: オープンダイアログにて引数にパスを指定するとエラーになるのを修正
Debugger: クロスリファレンスにてエラーの出るパターンの修正
RecIE: ファイル選択ダイアログの記録がされないパターンがあるのを修正
Uws2Exe: BMPの取り込みにて 一行に2つ以上のCHKIMGがある場合に 2つ目以降がNGなのを修正

No.577 2014/12/15(Mon) 01:18:30

掲示板検索(過去ログ(〜2014/12/07)・検索ツール) / umiumi
クリック行に色を付けるようにした
html/textファイルをフォルダー下に移した
モニター幅が1500以下の場合にはそれにIEの幅を合わせる
〜2014/12/07迄の過去ログ収録

No.578 2014/12/15(Mon) 01:19:55

Re: UWSC ver 5.0.4 / s
CHKIMG関数に一致率を指定できるようにしてもらえると助かります。
グラボやOSを変更するたびに使えなくなってしまうので(´・ω・`)

現在の
戻値 = CHKIMG( 画像名, [透過色/色無視, x1, y1, x2, y2, 番号, 色幅] )
から
戻値 = CHKIMG( 画像名, [透過色/色無視, x1, y1, x2, y2, 番号, 色幅, 一致率] )

デフォルト100%で任意に変えられるようになると嬉しいです。

No.579 2014/12/15(Mon) 13:08:13

Re: UWSC ver 5.0.4 / satocha
powershell関数への迅速な対応ありがとうございました。

たびたびpowershell絡みで恐縮なのですが、powershell関数に渡る文字列中のバックスラッシュ(円マーク)についてご教示願います。

次のテストプログラムで下のように表示されるのですが、どうしてこのような結果になるのかよく理解できません。

どうやら文字列先頭や文字列内ではただの文字として作用し、文字列末尾では何かエスケープシケンスのように働いているような気がしますが、そのような理解でよろしいでしょうか。

<テストプログラム>
str=powershell(src1)+powershell(src2)+powershell(src3)
sendstr(0,str)
msgbox(str)

textblock src1
"\ab\c\"+"def"+"\"+"ghi\"
endtextblock
textblock src2
"\ab\c\"+"def"+"\\"+"ghi\"
endtextblock
textblock src3
"\ab\c\"+"def"+"\\\"+"ghi\"
endtextblock

<表示>
\ab\cdefghi
文字列に終端記号 " がありません。
+ CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordEx
ception
+ FullyQualifiedErrorId : TerminatorExpectedAtEndOfString

\ab\cdef\ghi

<powershellコンソールでの表示>
PS> "\ab\c\"+"def"+"\"+"ghi\"
\ab\c\def\ghi\
PS> "\ab\c\"+"def"+"\\"+"ghi\"
\ab\c\def\\ghi\
PS> "\ab\c\"+"def"+"\\\"+"ghi\"
\ab\c\def\\\ghi\

No.583 2014/12/16(Tue) 15:18:20

Re: UWSC ver 5.0.4 / umiumi
'シングルクォートでくくってください。
"ダブルクォートの場合だと エスケープシーケンスが働いてしまいます。

No.586 2014/12/16(Tue) 22:35:31

Re: UWSC ver 5.0.4 / しゅん
PowerShellのスクリプトをエスケープしているのは、おそらくシェルですね。
この方法ではUWSCではどうしようもないかと思います。
どうしてもダブルクォートを使いたいなら、-EncodedCommandを使えば良いと思います。
---
TEXTBLOCK _src
"\ab\c\"+"def"+"\"+"ghi\"
ENDTEXTBLOCK

//PRINT _src
//PRINT POWERSHELL(_src)

// COM使用
DIM dom = CreateOleObj("Microsoft.XMLDOM"), binMan = dom.createElement("tmp")
binMan.dataType = "bin.base64"
binMan.nodeTypedValue = ENCODE(_src, CODE_BYTEARRAYW)
PRINT binMan.text
PRINT POWERSHELL("powershell -EncodedCommand " + binMan.text)

// crypt32.dll使用
DEF_DLL CryptBinaryToStringW(wstring,DWORD,DWORD,var wstring,var DWORD): BOOL: crypt32
CONST BASE64_NOCRLF = $40000001
DIM blen = 0, len = LENGTH(_src) * 2 // サロゲートペアも大丈夫、、、なので長さの2倍Byte
IFB CryptBinaryToStringW(_src, len, BASE64_NOCRLF, NULL, blen) THEN
  DIM buf = FORMAT(CHR(0), blen)
  IFB CryptBinaryToStringW(_src, len, BASE64_NOCRLF, buf, blen) THEN
    PRINT buf
    PRINT POWERSHELL("powershell -EncodedCommand " + buf)
  ELSE
    PRINT "Conv Error"
  ENDIF
ELSE
  PRINT "len Error"
ENDIF
---


umiumiさんへ
内部で-EncodedCommandにしてみてはどうでしょうか?
また、今回気づいたのですが、サロゲートペア文字をLENGTHにかけると、2文字となります。
今回はそれで良いのですが、これは現時点で仕様と思って良いでしょうか?

No.594 2014/12/17(Wed) 22:31:46

Re: UWSC ver 5.0.4 / satocha
しゅん様 

-EncodedCommand の情報と丁寧なコードのご教示、大変ありがとうございました。

二重引用符のエスケープシーケンス問題は、既存のPS1スクリプトを他端末でセキュリティポリシー変更なしに実行する方法を模索する中で出てきたものでした。

おかげさまで、下記の関数を作ることで解決できました。

<"test.ps1">
"\ab\c\"+"def"+"\"+"ghi\"
"\ab\c\"+"def"+"\\"+"ghi\"
"\ab\c\"+"def"+"\\\"+"ghi\"

<"ExecPs1.uws">
msgbox(ExecPs1( "test.ps1" ))

function ExecPs1( ps1 )
   result =powershell( replace( src, "##PS1##", "<#dbl>"+ps1+"<#dbl>" ) )
textblock src
$encoded= [Convert]::ToBase64String([System.Text.Encoding]::Unicode.GetBytes((gc ##PS1## ) -join "`r`n"))
powershell -EncodedCommand $encoded
endtextblock
fend

No.596 2014/12/18(Thu) 07:32:55

Re: UWSC ver 5.0.4 / umiumi
>内部で-EncodedCommandにしてみてはどうでしょうか?
考慮します。

>サロゲートペア文字をLENGTHにかけると、2文字となります。
対処を考慮します。

No.600 2014/12/19(Fri) 01:14:38
テキストボックスに入力できません / chumpgose
下のように書いてみましたが、IDもパスワードも入力されず、何も起きません。ログイン画面が変更になる前までは正常に動いていました。

IE.Navigate("https://login.aliexpress.com/buyer.htm")
BusyWait()
IESetData(IE,"xxxxxxxx","loginId")
IESetData(IE,"xxxxxxxx","password")
IESetData(IE,True,"","submit-btn")

RecIEを使ってみましたが、該当部分は何も表示されませんでした。

No.581 2014/12/15(Mon) 16:34:10

Re: テキストボックスに入力できません / routa
別ドメインのiframeが使われているようで,これのようですね。
http://www.uwsc.info/faq.html#n37
>操作は、ACC(アクセシビリティ用インターフェース)を利用してください

No.585 2014/12/16(Tue) 20:40:19

Re: テキストボックスに入力できません / chumpgose
ご回答ありがとうございます。
難しそうですが、勉強してACCを試してみます。

No.598 2014/12/18(Thu) 16:42:06
ページの遷移が出来ない / ミュウ
通常は、Ie.navigate(url) にて、直接urlを入力して移動していますが、これが出来ないページがたまにあります。(何かのページにログインしている場合など)

これは、どのような原因が考えられますでしょうか?
(ちなみに、ielink関数を使うと移動は出来ます)

No.595 2014/12/18(Thu) 07:19:54

Re: ページの遷移が出来ない / ミュウ
追記
Ieでキャッシュ保存しない設定にしていることや、
リファラーが問題かもしれないなー と何となく考えています

No.597 2014/12/18(Thu) 07:33:50
スケジュール設定について / 田中
指定した時間から5分おきとか10分おきに動かす様なスケジュール設定はできますでしょうか?
もしできるのであれば、朝7時から5分おきに動かす場合の設定方法を教えてください。
宜しくお願いします。

No.588 2014/12/17(Wed) 06:27:11

Re: スケジュール設定について / koi
>朝7時から5分おきに動かす
直接的な方法ではないですが
スクリプトを2つ作って7時にスクリプト1を起動
スクリプト1でスクリプト2を一定時間ごとに起動するようにするのではだめですか?
時間間隔はiniファイルなどで変更可能にしておけば
時間変えるときにスクリプトを変更する必要もありません

もしくはタスクスケジューラなどで7時にUWSCを起動
起動時とインターバル毎にスクリプトを動かす  とか

スクリプトの内容次第ですが 別プロセスで実行 の
オプションは必要になるかもしれません

No.589 2014/12/17(Wed) 13:34:50

Re: スケジュール設定について / 田中
ありがとうございました。
タスクスケジューラで動かすことにしました。

No.592 2014/12/17(Wed) 18:55:10

Re: スケジュール設定について / とおりすがり
HH>6 AND NN MOD 5=0 とか
No.593 2014/12/17(Wed) 22:28:52
CALLした時について / ざっく
下の用に記述すると呼び出したモジュールの中に入っている変数strはBfile.strで呼び出せたのですが・・

Bfile.処理()で関数を呼び出そうとしたところ
「FEND文がありません」とか「関数が入れ子になっている」とエラーが出ます。


CALL先ファイルの関数を呼び出し元でも自由に呼び出すという表現は正確ではないのかもしれませんが、

一番最初に行われるモジュール呼び出しでAfileモジュールを実行して、
次にCALLでBfileのBfileモジュールが呼ばれ処理()がモジュール呼び出しできるようになると思っていたのですが、うまくいきません。(Bfile.strはできるみたいです)

任意のタイミングでAfile側からBfile.処理()をしようとしています。

おかしなところや代替案があれば回答よろしくお願いします。




一つ目のファイルの記述----Afile.UWS

Bfile.処理()

MODULE Afile
PUBLIC CALL Bfile.UWS() //パス指定
ENDMODULE


二つ目のファイルの記述----Bfile.UWS

PROCEDURE 処理()

PRINT "testtest"

FEND


CLASS Bfile

PUBLIC str = "test"
PROCEDURE 処理()

ENDCLASS

No.587 2014/12/16(Tue) 22:50:29

Re: CALLした時について / stuncloud
// class/module関数はclass/module内で定義します

CLASS Bfile
 PUBLIC str = "test"

 PROCEDURE 処理()
  PRINT "testtest"
 FEND
ENDCLASS

No.590 2014/12/17(Wed) 13:41:46

Re: CALLした時について / ざっく
解決しました。

CALLした時に不具合があったのではと思っていたのですが違ったんですね。

恥ずかしながら、モジュール内で一度も関数を使った事がありませんでした。

回答ありがとうございました。

No.591 2014/12/17(Wed) 14:54:01
(No Subject) / yuuta
CLKITEM関数のアイテム一覧にない種類のアイテムの
クリック(選択)イベント発生は、可能でしょうか?

具体的には、Windowアプリ版のピクチャーボックス及びラベルになります。

No.580 2014/12/15(Mon) 15:46:49

Re: / routa
CLK_ACCを指定してみてダメなら
座標を指定して BTN関数で処理するしかないかも。

No.584 2014/12/16(Tue) 20:39:37
ランチメニューの英語つづり / Ken Skywalker
もしかすると、わざとかもしれないので、そうならば、無視してください。もし、意図していないならば、かえていただければと思います。
英語モードでuwscをつかうと、日本語のランチメニューという項目がLunch Menuになっています。普通は、Launch MenuかLaunch Settingかと思います。Jokeとしてはおもしろいのですが、私は、アメリカに住んでいて、アメリカ人に使わせたいので(たぶん、Pro版買います)、ちょっと微妙かなとおもいます。

No.582 2014/12/16(Tue) 10:34:29
全1036件 [ ページ : << 1 ... 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 ... 104 >> ]