【マクロ】 UWSC Part4 【シェアウェア化】at SOFTWARE
【マクロ】 UWSC Part4 【シェアウェア化】 - 暇つぶし2ch51:名無しさん@お腹いっぱい。
08/01/26 19:16:29 iQgREZVD0
>>39だけど
今更なんだけどね
アクティブウィンド取得に
>IE = CreateOLEObj("InternetExplorer.Application")
>IE.Visible = True
この2行がいる時となくても次へ進む原因がわかったので報告w

選ぶ商品によってはまるでカレンダーのような画像をクリックしては次へ
って感じなんだけど
IE7はタブ方式なので先に開けたページをきちんと閉じていないとおかしくなるみたい
IE6に戻そうとしたら「古いバージョンをインストールできませんって」戻せないよ^^;

先の2行をつけてスタートしたときは
一時停止でフォーカスがあわないままなんだ
もうIE7が悪いんだってことにしておこうw
IE6に戻すためのツールがあるらしいのでそれ使ってIE6に戻すわ

おー朝からメシ食わずにテストしてたから腹減った~
朝飯兼晩飯くってくるわ
んじゃ

52:名無しさん@お腹いっぱい。
08/01/26 19:58:31 a90vN8qC0
>>50
ありがとうございます。うまくいきました。”領域設定”とか書かれているのでわざわざeTilTranいれてもらったんだと思いますが、それをみこんでもうひとつ質問があります。
eTilTraで画像を読み込むと左側に画像のリストが表示され、これはITM_LSTVEWで取得できる情報だなと思い
URLリンク(blogs.yahoo.co.jp)
↑のスクリプト使って情報を取得しようと思ったんですが固まって取得できません。もし取得できるなら配列を使って挿絵の画像名を取得してDOSコマンドで別のフォルダに
そのファイルをコピーしたりできると思っているんですが、どうやったらアイテム情報を取得できるでしょうか?よろしくお願いします。

53:50
08/01/26 20:50:09 UAcIKHXR0
>>52
ITM_LSTVEWじゃ無理そうだね
別の方法で取得できるのかどうか、私にはわかりません


54:名無しさん@お腹いっぱい。
08/01/26 21:38:44 a90vN8qC0
>>53
そっかーやっぱITM_LSTVEWじゃだめなんですねー。とにもかくにもお手間おかけしました。ありがとうございました。

55:名無しさん@お腹いっぱい。
08/01/27 07:55:27 oz1/lB8h0
結局、寝ないでIE6をインストールしようと頑張ったけど
レジストリーまでいらってもダメだった
んでIE7を再インコ
IE7のオプションをよく見てたら「タブブラウザを使わない」ってチェックがあった
やったー
タブブラウザのお陰でこんなに酷い目にあってるんだ
これでやっと開放されるwww
さてテストして寝ようか・・・・・・
ん!?
画面上は普通のブラウザに見えるけど・・
まさか!
やっあぱりそうだ ガーーーン!!
なんと1枚目の画面がアクティブになっている画面にすっかり隠れていた
なんなんだよ!!
タブじゃなくても画面を2つ開けていたら「多重ログイン」扱いされてはじかれちゃうんだピョーン(;´д⊂ヽ

アクティブウィンドウ以外のウィンドウは全てを閉じる命令ありますか?
それを先に命令して最後に残ったアクティブ画面を操作したい

ウィンドウの名前はそのつど変わるので
アクティブウィンドウ以外をせべてウィンドウは閉じるって命令があればなー
はー昨日からなにやってんだか
疲れたおやすみー

56:名無しさん@お腹いっぱい。
08/01/27 11:51:38 A03LsX+d0
>>55
多重ログインは窓閉じても回避できないよ。
ログインしたらその窓でやらないと。
つまりログインした窓に対して確実に操作する必要がある。

もし窓が隠れてしまうなら、ACWでActiveにしないと。

ActiveWindow以外を閉じるには、
ActiveWindowを取得し、
全てのWindowを取得し、
全てのWindowからActiveWindowを除外した全てを閉じる。
↓がコード   >>56

IE = GETACTIVEOLEOBJ( "InternetExplorer.Application" )
ID = HNDToID(IE.HWND)
窓数 = GETALLWIN()
for i = 0 to 窓数 - 1
ifb "InternetExplorer.Application" = STATUS( ID, ST_CLASS ) Then
ifb ID <> STATUS(ALL_WIN_ID[i], ST_PROCESS) Then
CtrlWin(STATUS(ALL_WIN_ID[i], ST_PROCESS), CLOSE)
endif
endif
next
// ここで、最初に取得したアクティブウィンドウのオブジェクト(IE)と
// そのウィンドウID(ID)だけが残っている。


57:名無しさん@お腹いっぱい。
08/01/27 11:56:26 A03LsX+d0
>>52-54
ListViewとListBoxは見た目同じようで中身はダイブ違うけど勘違いしてない?


58:名無しさん@お腹いっぱい。
08/01/27 14:54:45 oz1/lB8h0
>>56おはよ^^
>>55だよん
早速サンプルありがとう。そのまま使わせて貰ったけど窓はとじなかったよ

んで前から出てたエラーが出た(アクティブ画面のボタンを押せないエラー)
全部窓をとじないでUWSCもそのまま(UWSを読み込ませたまま置いておいて)
手動でアクティブじゃないほうの窓を閉じて
再びUWSCの読み込ませていた命令(>>56の命令を最初に書いてあるUWSファイル)をそのまま再スタートさせたら上手くいけた

やっぱりアクティブ以外の窓は全部とじないとUWSCではエラーになるみたい
ちなみに
改めてログインしなおして手動で進めていき
UWSCではエラーになって押せないボタンを手動で押して進めてみると
先に開いていた窓はそのまま閉めなくてもいけた
手動だと進めるってことはサイト側の問題ではないね

もしかしたらUWSCは先に開いている状態の窓をアクティブと認識しているのかな?
でも実際には2枚目に開いた画面(UWSCで操作したい画面)がアクィブなんだ
なぜ2枚目がアクティブだと私が言い切れるのかといえばですね
2枚目が開いてから何もしない状態でもマウスのスクロールが効いていた

UWSCがアクティブだと認識してる窓と実際アクティブな窓とは違うと想定すれば
今回のようなエラーになると思う
だとすればUWSCへの命令は「アクティブウィンドウは閉じて次のウィンドウへ移動しなさい」って命令しなければいけない
しかし何度も言うようにそのサイトでは不正対策のために窓の名前は毎回違うんだよね
ん~悩むなあ・・・そのサイトのアドレスを教えれば状況が理解してもらえるんだろうけど
ここは色んな人が見るのでそれはちょっとこまる・・・^^;

2枚の画面が開いているとき・・・UWSCから見てのActiveWindowをCLOSEすると
UWSCは残りの画面は窓名がわからなくてもアクィブウィンドウと認識してくれるんだろうか?
ちょっと知事選の投票行って所用を済ませてまたテストしてみるわ。ありがとー


59:名無しさん@お腹いっぱい。
08/01/27 15:31:30 A03LsX+d0
>>56の> ifb "InternetExplorer.Application" = STATUS( ID, ST_CLASS ) Then
これは間違いだったかも
"InternetExplorer.Application"じゃなくて"IEFrame"だよね

↓は以前作ったやつだけど、自分でVid-DLを新しく開きまくりだから
あらかじめ全て閉じる処理した。
タイトルが固定だからやりやすかったけど・・・
IEオブジェクトには.navigateってのがあるから、開いてるページをそれで取得できるならタイトルは分からなくてもなんとかなるでしょ。

// 全てのIEを閉じる
ID = GetID("Vid-DL", "IEFrame", 0.1)
While -1 <> ID
CtrlWin(ID, CLOSE)
ID = GetID("Vid-DL", "IEFrame", 0.1)
Wend
sleep(1)

// IEを起動
ID = Exec("C:\Program Files\Internet Explorer\IEXPLORE.EXE " + url)
sleep(3)
IE = GetActiveOLEObj("InternetExplorer.Application", "Vid-DL" )


60:名無しさん@お腹いっぱい。
08/01/27 19:59:14 oz1/lB8h0
>>59
おお貴重な情報だありがとう
今、テストしていてわかったんだけど
そのサイトのページってIEに対して何か制限をかけているみたいなんだ

右栗禁止、「F5」で更新できないとかは前からだったんだけど
ブラウザをFirefoxに変えてテストしてみたら
右栗OK、F5Ok、「Ctrl」+「W」で私の言うアクティブウィンドーが閉じた
(IEではどちらの窓も閉じない)
多分どちらの窓もUWSC自身では取得していない
手動で適当なところをマウスクリックしたらUWSCが操作可能になる

UWSCがFirefoxにも対応していたらなー問題解決なのに・・・
IEのオプションで右栗突破すればどうにかなりそうな希ガス
他にもやらなければいけないこといぱーい
ふう疲れるIEの右栗禁止を突破するのが鍵棚
UWSCは多分どちらの窓も取得していないのでボタンクリックの命令でエラーになるような

IEのオプション研究からやり直しだわw
ありがとう
いつも悪いね^^

61:名無しさん@お腹いっぱい。
08/01/27 20:02:06 oz1/lB8h0
あーぁIE7にバージョンアップしたのが一生の不覚だよ
OSのインスコからやり直すくらいしないと
もうIE6に戻せないしー
まったく甘い言葉にご用心
IE6がいいよホント

62:名無しさん@お腹いっぱい。
08/01/28 02:21:08 f2jwJo210
WHILEやREPEATを使ったループ中に終了条件を満たさずとも100秒経過したら
強制的に次の処理へ移行、とするにはどうしたらいいでしょうか?

63:名無しさん@お腹いっぱい。
08/01/28 02:43:16 rGtBli6R0
100秒って時間を合わせるのは難しいけど、
for文で1秒スリープ×100回なら自動的に100秒以上で抜けるから、
もう一つの終了条件をIf文で追加ですね。

1回あたりの待ち時間が1秒くらいならほぼ期待通りの時間だけど、
0.01秒で指定してもだいたい0.1秒くらいはかかるしね。

時間を正確にするならGetTime使うかな。
けど、何かしたらそれだけ重くなるし、ループにはSleep必須。

StartTime = GetTime()
While 終了条件
If StartTime + 100 < GetTime() Then Break

// 処理 //

sleep(0.1)
Wend

条件を同時に判断してもいいけど、条件の指定を間違ったとき、
andの計算の優先順位が間違ってるとおかしくなる。

While 終了条件1 and (GetTime() < StartTime+100)

64:名無しさん@お腹いっぱい。
08/01/28 03:20:39 f2jwJo210
>>63
詳しく教えてくださってありがとうございます、助かりました。

65:名無しさん@お腹いっぱい。
08/01/29 03:09:04 00BHvaXU0
自分で>>56使って見たけどかなり間違ってるね
>ifb "InternetExplorer.Application" = STATUS( ID, ST_CLASS ) Then
これは
ifb "IEFrame" = STATUS( ALL_WIN_ID[i], ST_CLASS ) Then
だし

GETALLWIN()で取得した全IEの表示ページを
IE.document.URLみたいに簡単に取得したかったんだけどな。
GetStrでも取れるけどIEオブジェクトから直接取りたいけどオブジェクトがIDからじゃ取得できないんだよな・・・


66:名無しさん@お腹いっぱい。
08/01/30 00:15:15 aG+PMwK+0
URLリンク(scripts.web.fc2.com)

URLリンク(www.uploda.org)
URLリンク(www.vipper.net)
上記アップローダーで、サムネイルから画像を選んだ後、
時間帯によっては広告ページが表示されるのがめんどいので自動クリックする。

終了のために、終了ボタンを表示し、
処理対象のページアドレスをメモ帳に追加していく。

ページ構成が同様のサイトであれば使えるので、対象サイトに追加していけばほかのサイトにも使える。
ただし、アダルトサイトはダミーが多いので大変なことになるかも。


67:名無しさん@お腹いっぱい。
08/01/30 14:37:55 bDlCrFc60
いよー
諸君元気でやっとるかね
私は相変わらず多忙続きでへろへろ~w

IE7に変えたらアクティブウィンドーの取得がおかしくなったって前に私が発言したんだけど
取り消しだ
そのサイト最近リニュアルしたんだけど
ソースをひとつづつチェックしてたらなんと!
IEに対していろんな制御してたんだ
* ENTERキーを押したかのを検査する
*IEのショートカットキーおよび一部の機能を無効にする
* マウスのクリック(2重リクエスト)
*マルチサブミット防止処理
* ファンクションキーの無効化

これをジャバスクリプト命令にして先にヘッダ部分で読み込んでやがった
UWSCの操作でどうにかできる問題じゃなかったんだ
ここで相談に乗ってくれた九州男児ありがとう
きみのソースでかなり勉強できましたが
サイト側がIEに対して制御かけていることが判明しました
色々とありがとう
寒い日が続くけど風邪ひかないようにね

あ、UWSCに要望あるんだよね
・多重起動ありにしてください(もっかいお金払ってでもいいですのでバージョンアップということでお願いします)
・IEだけでなく他のブラウザにも対応して下さい特に便利なFirefoxに対応していないのは痛いです
以上
んじゃノシ

68:名無しさん@お腹いっぱい。
08/01/30 18:44:34 aG+PMwK+0
URLリンク(www.vid-dl.net)

↑を使ってダウンロードする場合はアドレスの貼り付けが手作業になる。
「URLリストを開く」でアドレスがまとめて取得できるが、ファイル名が正しくない。
表示されるファイル名を取得して自動的に保存するスクリプトをUWSCで書いてみた。
保存場所はデフォルトなので、あらかじめ1つめをダウンロードして場所を指定しておかないと場所が分からなくなる。

Vid-DLの窓を終了すればスクリプトも終了します。(アイドリング中)
最初に「保存」をクリックしてやらないと先に進まない場合があったのを修正。

URLリンク(scripts.web.fc2.com)

69:名無しさん@お腹いっぱい。
08/01/30 19:07:03 bDlCrFc60
やっぱりUWSCがいいな
Firefox用の自動ソフトを探してテストしてみたんだけど
どれも使えない
RECIEがいいよ
ってことで
右クリ禁止とF5禁止の突破を考えていたんだけど
UWSCでブックマークレットとか使える?
お気に入りにジャバスクリプトを登録しておいて
右クリ禁止のページになったらそのブックマークをクリックするだけで
ジャバスクリプトが発動するんだ

それかUWSCでジャバスクリプトの命令を実行できる?
まあスクリプトのことはよくわかんないので
その右クリ禁止ページになったらKey制御している.jsのソースがわかったので
falseをtrueに書き換えるだけ^^;
どうなることやらwww

・UWSCでブックマークレット使いたい
・UWSCでジャバスクリプトの命令を実行したい

毎度聞いてばかりで悪いね
よろしく
あ~腹減った~
今日も忙しくて朝飯も食ってないよ
メシ食ってくるね

70:名無しさん@お腹いっぱい。
08/01/30 19:43:53 ts57POVO0
RECIEてIE専用だしCOM使ってるだけだろ。
ブラウザがらみ邪魔九歳から別スレ建てろよ。

71:名無しさん@お腹いっぱい。
08/01/30 20:17:03 aG+PMwK+0
>>69
無理だと思う。返事は期待できないよ。


>>71
// JaneDoe Viewの操作を補助する。
// スレを切り替えると自動更新し、最終取得で並び替える。

ID = GetID("JaneDoe View", "TMainWnd")
prev = GetSTR(ID, 1)
while 1
sleep(0.1)
// アプリが終了された場合は連動して終了
if !IDToHND(ID) Then break
url = GetSTR(ID, 1)
ifb prev <> url Then
prev = url
cnt = 0
REPEAT; cnt = cnt + 1; UNTIL "" = token("/", url, true)
if 4 = cnt Then CLKITEM( ID, "《更新", CLK_MENU or CLK_SHORT )
endif
wend



最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch