【マクロ】 UWSC Part4 【シェアウェア化】
1 :
ミスターユーダブリューエスシー :
2008/01/14(月) 14:47:14 ID:VrXr82Zu0
2 :
名無しさん@お腹いっぱい。 :2008/01/15(火) 00:48:48 ID:6WQevle80
キタ━━━━━━m9( ゚∀゚)━━━━━━!!
こんにちは、教えて君ですみません<(_ _)> UWSCで作られたe.xeファイルのUWSCスクリプトのソースを見る方法って ありますか?知ってらっしゃる方教えてください。
5 :
名無しさん@お腹いっぱい。 :2008/01/16(水) 10:02:29 ID:KDV0+Mn+0
荒らしに親身になって答えるのは親切でもなんでもない。 その荒らしを居つかせ、更なる同類の荒らしを呼び込む。 そのことに気付いてください。
7 :
名無しさん@お腹いっぱい。 :2008/01/20(日) 15:36:22 ID:HGvEXPwB0
新スレキタ━━━━━━m9( ゚∀゚)━━━━━━!!
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=shift_jis"> <meta http-equiv="Content-Language" content="ja"> <title>IEGetSrcのテスト</title> </head> <body> <form> <p> タ グ <input type="checkbox" name="C1" disabled="disabled"><input type="text" name="T1" size="82" onclick="this.select()" value="body"> 番号<input type="text" name="TNUM" size="7" onclick="this.select()" value="1"><br> 前方文字<input type="checkbox" ID="C2" name="C2" disabled="disabled"><input type="text" name="T2" size="53" onclick="this.select()"> 後方文字<input type="text" name="T3" size="57" onclick="this.select()"> </p> <p><input type="button" value="ソース取得" name="B1" onClick="C1.checked=true"> <input type="button" value="切り出し" name="B1" onClick="C2.checked=true"> <input type="reset" value="リセット" name="B2" onClick="C1.checked=false; C2.checked=false; T1.value=''; T2.value=''; T3.value=''; S1.value=''"> <input type="button" value="終了" name="B3" onClick="CEND.checked=true"> <input type="checkbox" ID="CEND" name="CEND" disabled="disabled" ></p> <p><textarea name="S1" rows="13" cols="101" ></textarea></p> </form> </body> </html>
9 :
名無しさん@お腹いっぱい。 :2008/01/20(日) 17:43:05 ID:/h9BPzq00
HTMLのフォームを利用するのを書いたけどその後投稿できない
Form = CreateOLEObj("InternetExplorer.Application") Form.visible = True Form.navigate(GET_CUR_DIR+"/IEGetSourceTest.htm") REPEAT; sleep(0.1); UNTIL !Form.busy AND Form.readystate = 4 FormID = HNDToID(Form.HWND) IE = CreateOLEObj("InternetExplorer.Application") IE.visible = True IE.navigate("about:blank") ID = HNDToID(IE.HWND) // Formの監視 While 1 Ifb Form.document.forms[0].C1.checked Then Form.document.forms[0].S1.value = IEGetSrc( IE, Form.document.forms[0].T1.value, Val(Form.document.forms[0].TNUM.value) ) Form.document.forms[0].C1.checked = false Endif Ifb Form.document.forms[0].CEND.checked Then Form.Quit IE.Quit break Endif sleep(0.1) Wend
11 :
名無しさん@お腹いっぱい。 :2008/01/20(日) 17:55:07 ID:/h9BPzq00
>>8 をIEGetSourceTest.htmって名前で、UWSCのところに保存して、
>>10 をUWSファイルとして保存。
blankを表示してる方の窓でソース取得したいページを表示して
タグ名指定してクリックすると、ソースが取得できる。
動的に挿入されるコードはIEの表示−ソースじゃ取れないんで便利かも。
オブジェクト無効のチェックまでした方がよかったけどどうすればいいんだか。
BetweenStrの行があると投稿できなかったんで削除してます。
出来損ないのHTMLだけど作るのに1日かかった。
12 :
名無しさん@お腹いっぱい。 :2008/01/21(月) 11:44:51 ID:U5tw6KbY0
ここはお前の日記帳じゃねーぞ
14 :
名無しさん@お腹いっぱい。 :2008/01/21(月) 13:07:22 ID:U5tw6KbY0
>>13 ああ、悪い。
しかし、俺が悪いんじゃないぞ。
ほかの人が書き込まないのが悪いんだ。
なんか俺が占有してるみたいに見えるのはそのせいだ。
・・・
まさか俺以外の誰も使ってないなんて事はないよな?
15 :
名無しさん@お腹いっぱい。 :2008/01/21(月) 13:11:26 ID:U5tw6KbY0
>>12 のHTMLをForm代わりに使えないことはないけど
F5で再表示しただけでUWSCでエラーになる。
IEコンポーネント使わないと操作はできないとしても、
別アプリ使ったりしてほかのページに飛べないようにしないとまずいな。
.Navigaterをロックして更新できなくできればいいんだが。
WHILE TRUE IFB GETKEYSTATE(VK_NUMPAD1) THEN REPEAT KBD(VK_2,DOWN,10) KBD(VK_3,DOWN,10) UNTIL GETKEYSTATE(VK_3) SLEEP(0.1) KBD(VK_4,DOWN,10) ENDIF WEND のようなスクリプトがあるとして、Num1も何も押していないのに 再生した瞬間4キーが勝手に連打されるのですがドコに原因があるでしょうか?
ローカルのHTMLを開いて警告が出るのはIEが出してるのであってIEコンポーネントじゃないんだよな。
つまりIEコンポーネントを使うアプリケーションが警告を出さなければいい話なんだけど
CreateObjectとかするとアプリケーションはIEが起動するんだよな。
専用アプリを先に起動すれば実現できるけどやり方がスマートじゃない・・・
けどIE使うより普通のFormっぽいから出来れば使いたい。
あんまりがんばってもUWSCを使う意味がなくなりそうだから・・
けどスクリプトのForm・・・自分でWindowsAPIを呼べばいいのかな・・・
>>16 KBDが無条件に実行されて、自分で送信したキー情報をGETKEYSTATEで拾ってるんじゃね?
18 :
名無しさん@お腹いっぱい。 :2008/01/21(月) 18:10:19 ID:U5tw6KbY0
既にIEで開いてるページに命令するのわかりません どこか適当なサイトでF5クリックするさんぷる お願いします サンプルをいろいろと見てきましたがないみたいです お願いします
>>19 while 1
KBD(VK_F5, CLICK, 1000)
wend
IEを手前に持ってくるのは、開始でsleep(5)とかで待たせてる間に自分でクリックするか、
IEオブジェクトを探してアクティブにする。
「ほかの人が書き込まないのが悪いんだ。」 とか、ほざくガキが出てくる始末
22 :
名無しさん@お腹いっぱい。 :2008/01/22(火) 12:45:24 ID:UGnsuQEl0
>>21 まだ書き込んでない人いるのにその人たちを差し置いてなに書き込んでんだよと
レス番900過ぎるまで引っ込んでろと。
23 :
名無しさん@お腹いっぱい。 :2008/01/22(火) 13:14:26 ID:UGnsuQEl0
一時停止は必要だな
>>23 乙
でも俺が試したら止まんなかったよ
何回も試したけどね
先にそれを起動させておくの?
それともUWSCが先に起動かね?
それと上のほうでクリック1000てなんだよ
ガキのいたずら小僧か
無茶苦茶するなよ
嵐認定
出入り禁止ね
27 :
名無しさん@お腹いっぱい。 :2008/01/22(火) 17:24:05 ID:UGnsuQEl0
>>25 >クリック1000てなんだよ
クリック1回して1秒休憩。
まあ、CPU占有しちゃうから実際にはKBDでは時間は指定しない。
つまり↓になる
while 1
KBD(VK_F5)
sleep(1000)
wend
>でも俺が試したら止まんなかったよ
スクリプトファイル見れば分かると思うけど、UWSファイルの中で実行ファイルを呼び出してるから。
単独で実行ファイルを起動しても、ボタンがあるだけでなにもしないよ。
UWSC_Control.exeとControlSample.UWSは同じ場所に保存しないと呼び出せないよ。
WindowsXPではちゃんと動いたけどほかのだともしかしたら動作おかしいかもしれない。
だけどCreateWindow程度の基本的なAPIしか使ってないのに動かなかったらおかしいよ。
メモ帳に「テスト」って書き続けて止まんないぞ 結局「Alt」「F2」で強制終了 他のUWSファイルで操作していて一時停止させる場合には このソースを書き足すって事なんだな しかしボタンの押す順番間違えたら 永遠に「テスト」って書き続けてる・・・
>>28 >メモ帳に「テスト」って書き続けて止まんないぞ
それを止めるための停止ボタンなんですが。
ただ、停止したり終了したりはスクリプトで記述することで実現してるので、
それが書かれてないスクリプトはとまりませんね。
画面が表示されてないUWSC本体をコントロールすれば確実に止められるかもしれないけど・・・
>しかしボタンの押す順番間違えたら
>永遠に「テスト」って書き続けてる・・・
もしかして、一時停止中に終了を押しても終了しないとか?
一時停止を解除すれば終了するけど、
それがいやなら一時停止ループの脱出条件に、終了ボタンを押したときを入れればいいよ。
そう書いておくべきだったかな?
IE7 XP どうやったらUESCでHTMLファイル見れるんだ 普通にIE7からは見れてる RECIEでHTML内のボタンクリックからはじめたかったのになー RECIEはHTML読めないんかね
30だけど自己解決した^^
IE7で既に開いてるページをUWSCで操作したいんだ アクティブウィンドーの取得だけでは動かないんか? どこかサンプルソースないですか? 具体的には非同期通信するためのスクリプトが記載してあるHTMLからIE7を開く その開いてあるページを操作したい どなたかサンプルお願いします
33 :
名無しさん@お腹いっぱい。 :2008/01/23(水) 12:46:13 ID:iN7rdS2C0
>>32 IE = GetActiveOLEObj("InternetExplorer.Application", "")
>>33 おお
早速のレスありがとう
今からテストしてみる
いつも悪いね
あなたもし関西に来れるなら一度メシ食いに行きますか
私は今、落ち目で大変なんだけど
ラーメンとカレーは食べ歩いたので美味しいとこ知ってるよ
>IE = GetActiveOLEObj("InternetExplorer.Application", "")
↑この最後の、””何かね?
>>33 出来た!ありがとうおおおお!
最後の””付けたままでも動いたよ
こんな感じ
IE = CreateOLEObj("InternetExplorer.Application")
IE.Visible = True
IE = GetActiveOLEObj("InternetExplorer.Application", "")
このあとラジオボタンやセレクトメニューを選んで次のページへ飛んで
そこでも自動操作できた
マジでありがと
なぜか1箇所だけフォーカスあわせてたのがマウスであわせないとダメになってたけど
まあいいや合格!
そのフォーカスの後にこの前教えてもらった「Ctrl」ボタン押すまでスリープ0.01ループさせてたんだけど
あれが要因かな?
でもそのフォーカスにマウスであわせてテキスト入力後に「Ctrl」押したら
すぐに「次のページへ」を自動で押してくれた
昨日まで自分で色々やってたんだけど
「関数IEが指定されていません」とか「○○変数が・・・」まあエラーばっかりだったんだ
聞いてよかったよ
ありがとう
カレーライスでよかったらおごるよ
JR環状線の福島駅近くにある上等カレーって食券機でお金払うお店なんだけど
ここが美味しいよ!
36 :
名無しさん@お腹いっぱい。 :2008/01/23(水) 13:57:18 ID:iN7rdS2C0
>>35 そのコードだめです。
まず推奨コードから
>>10 のがそれですが、余計なのもあるんで。
IE = CreateOLEObj("InternetExplorer.Application") // IEの起動
IE.visible = True // 表示?
IE.navigate("
http:/www.yahoo.co.jp ") // アドレス入力
REPEAT; sleep(0.1); UNTIL !IE.busy AND IE.readystate = 4 // ページ表示完了待ち
ID = HNDToID(IE.HWND) // コントロールする名前がなかったりする場合に利用
input("") // どうしても入力待ちしたい場合。
※IEのソースを覗いたりすればIEオブジェクトだけでいろいろできるけど、
見た目だけで操作可能なIDは結構使える。
んで、
>>23 のを使うなら、一番最初に実行ファイルを起動し、
上記inputの位置に停止コードを挿入。
けどマウス位置を合わせないといけないなら
>>23 のとかinputは使えないね。
ちなみに僕は九州だしお金まったくないんで無理。
就職のために引っ越すつもりもないし、かといって地元企業には近寄りたくもないし。
ネットでの出会いには懲りてるからOFF会とかも出ませんから。
江戸川区でなんか売春サイトが摘発されてるけど、あそこに住んでたころは毎日小中学生にラブコールしてた。
>>35 -- だめな理由 --
1.CreateしたIEは放置して別のをGetしてる。タイミング的に同一のを拾ってくるかもしれないが意味がない。
2.起動直後のを拾ってきているから操作できない状態にある。
まあその後のコードは省略されてるだけでちゃんと待ってるかもしれないけど。
マウスをあわせないといけない場所ってどんなですか?
Webページは、ウィンドウを縮めるとレイアウトが変わるのでマウス座標では問題ありますよ。
よかったらアドレスとクリックしたい場所を教えてください。
>>36 よくわからんけど最初の2行を入れないとエラーになるんよ
既に開いてるページなので
>IE.navigate("
http:/www.yahoo.co.jp ") // アドレス入力
>REPEAT; sleep(0.1); UNTIL !IE.busy AND IE.readystate = 4 // ページ表示完了待ち
これは入れる必要ないと思うので書いていない
>ID = HNDToID(IE.HWND) // コントロールする名前がなかったりする場合に利用
>input("") // どうしても入力待ちしたい場合。
これは勉強になった!ありがとう
>>36 はUWSCの解説本書いてみたらどうだ
UWSCのヘルプよりかなり理解できるぞUWSCの解説本って小林シンヤ氏のだけだろ
もうちょっと命令ひとつひとつを説明してくれたら嬉しい命令の解説に命令を引用してるんだからわかんないよ
本出したら、俺絶対に買うよ
マウスを合わせる場所は画像認証の入力だよ
IDとPASSの後に画像認証入力して次の画面へいくボタンを押すんだ
今はこんな感じでやってる(初めからUWSCで開いたIE画面ならフォーカスが合わせられたまま待機してるのにね
Assert(IESetData(IE,"123456789","loginId"),12) // ID入力
Assert(IESetData(IE,"abcdefghijk","passWd"),13) // PASSWORD入力
IE.document.forms(0).elements(5).focus()//画像認証にフォーカスあてる
REPEAT; sleep(0.1); UNTIL GetkeyState(VK_CTRL)//「Ctrl」押すまで待機
Sleep(0.1)
Assert(IESetData(IE,True,"","alt=ログイン"),19) // IMAGEログインボタン押す
REPEAT
SLEEP(0.1)
UNTIL !IE.BUSY AND IE.READYSTATE = 4
>>23 は使うかどうかわかんない実際0.1秒を争うようなタイミングなのでマウスでボタンを押すより
目の前のキーボードで決められたボタン押すほうがわずかでも速いような希ガス
>>36 そうだと思ったよ多重ログインの警告画面が出るようになった処理するようにしておいたけど・・・そういうことか。なるほど。ありがと
もし大阪に来ることがあれば必ず声かけてみてくれ。んじゃ
>>36 すまん
最初の2行なしでいけた
理由もわかった
何かと便利なので普段使うブラウザがFirefoxで
そのページを見るときだけアドオンツール使ってIE7にしてた
俺のエラーの理由は多分そうだわ
今、最初からIE7で起動して開いたページに対してやってみたら
>IE = CreateOLEObj("InternetExplorer.Application")
>IE.Visible = True
↑これなしでいけた
ちなみにFirefoxからIE7へ切り替えてそのページを開きながらテストしてみたら
上記の1行目を抜いてやってみたら
>Uスクリプト変数:IEが定義されていません
>5行目:IE.Visible = True
とエラーが出てた
でもやっぱり画像認証のフォーカスはされていなかったので
今もマウスで1クリックしてから手動でテキスト入力した
input試して見るわ
ありがと
何回もすまん IE.document.forms(0).elements(5).focus()//画像認証 を input("") に変更するにはどうすればいいですか? 取り合えずinputはまだ使わずにfocus()に0から順番に1.2.3て入れてみようか? innputでの待機がわからないよ^^; いつも悪いね
41 :
名無しさん@お腹いっぱい。 :2008/01/23(水) 22:11:39 ID:iN7rdS2C0
>>40 input("")は入力ダイアログが出るだけで、IEの操作はしませんが。
画像?にフォーカスするのがもし画像にOKボタンみたいな機能が割り当てられてるんなら、
フォームにSUBMITを送るだけでおkだったりしますよ。
>>41 おお
いつも悪いなあ
ありがとう
IE.document.forms(0).elements(5).focus()//今これSUBMIT
IE.document.forms(SUBMIT).elements(5).focus()
IE.document.forms(0).elements(SUBMIT).focus()
IE.document.forms(0).elements(5).focus(SUBMIT)
こういう感じでテストしてみるわ
ちょっと風呂は入ってくるね
んじゃ
>>42 document.forms[0].submit()
です。
elementを特定しない分楽です。
疲れた〜 今日はテスト終わり 結局フォーカス自動でフォーカスを合わせられなかった 右栗禁止なのでそのへんもあるのかも マウスでどこかを1回でもクリックしたら TABであわせられるけど マウスクリックしないとTABボタン動かない つまり自動ではあわせられないようなんだ サブミットではないよ 画像の横にテキスト入力のボックスがあるから タグネーム=キャプチャインプットになってた とにかく疲れたわ おやすみ〜
ひょっとしてIESetDataってhttpsのページには動作しないの?
知らないけどSENDSTRなら関係なく送れる
質問です。eTilTranという画像傾き補正ソフト用の自動読み込み→補正→保存のスクリプトを書いているのですが、ファイル数がすくない場合は問題なく動くのですが、 ファイル数が多いと読み込んでる間にUWSC上でCLICKITEM等の処理が終わってしまい、適切に処理できなくて困ってます。SLEEP関数以外に読み込みが終わるまで待機し続ける ような命令・関数があったら教えてください。
そんな便利な関数はないよ。 「スキャンしています」「保存しています」とかいう作業中のダイアログが出るなら、getidでその作業中ダイアログが出ている間待機して、消えたら次の処理。 あるいは処理終了時に「変換が終了しました」というダイアログが出るなら、getidでそのダイアログが出るま待機。 ウインドウじゃなくstatic_txtのメッセージやウインドウのタイトルで作業中かどうかを判断する場合もある つまり、各アプリによって、待機のタイミングを計る方法はそれぞれ違う。
>48 なるほど、やっぱそれしかないですか。読み込み完了時にダイアログもウインドウのタイトルも変わらないんでタイミング計りようがないんですけど、 進捗状況を伝えるバーがビーーーと伸びていくんですが、これはGetITEMとかで取得できる情報なんでしょうか?
ボタンの状態みてあげるよろし ID=GETID("eTilTran") STATUS=-1 WHILE STATUS=-1 STATUS=CHKBTN(ID,"領域設定") WEND
>>39 だけど
今更なんだけどね
アクティブウィンド取得に
>IE = CreateOLEObj("InternetExplorer.Application")
>IE.Visible = True
この2行がいる時となくても次へ進む原因がわかったので報告w
選ぶ商品によってはまるでカレンダーのような画像をクリックしては次へ
って感じなんだけど
IE7はタブ方式なので先に開けたページをきちんと閉じていないとおかしくなるみたい
IE6に戻そうとしたら「古いバージョンをインストールできませんって」戻せないよ^^;
先の2行をつけてスタートしたときは
一時停止でフォーカスがあわないままなんだ
もうIE7が悪いんだってことにしておこうw
IE6に戻すためのツールがあるらしいのでそれ使ってIE6に戻すわ
おー朝からメシ食わずにテストしてたから腹減った〜
朝飯兼晩飯くってくるわ
んじゃ
>>50 ありがとうございます。うまくいきました。”領域設定”とか書かれているのでわざわざeTilTranいれてもらったんだと思いますが、それをみこんでもうひとつ質問があります。
eTilTraで画像を読み込むと左側に画像のリストが表示され、これはITM_LSTVEWで取得できる情報だなと思い
ttp://blogs.yahoo.co.jp/uwsc_script/archive/2007/10/06 ↑のスクリプト使って情報を取得しようと思ったんですが固まって取得できません。もし取得できるなら配列を使って挿絵の画像名を取得してDOSコマンドで別のフォルダに
そのファイルをコピーしたりできると思っているんですが、どうやったらアイテム情報を取得できるでしょうか?よろしくお願いします。
53 :
50 :2008/01/26(土) 20:50:09 ID:UAcIKHXR0
>>52 ITM_LSTVEWじゃ無理そうだね
別の方法で取得できるのかどうか、私にはわかりません
>>53 そっかーやっぱITM_LSTVEWじゃだめなんですねー。とにもかくにもお手間おかけしました。ありがとうございました。
結局、寝ないでIE6をインストールしようと頑張ったけど レジストリーまでいらってもダメだった んでIE7を再インコ IE7のオプションをよく見てたら「タブブラウザを使わない」ってチェックがあった やったー タブブラウザのお陰でこんなに酷い目にあってるんだ これでやっと開放されるwww さてテストして寝ようか・・・・・・ ん!? 画面上は普通のブラウザに見えるけど・・ まさか! やっあぱりそうだ ガーーーン!! なんと1枚目の画面がアクティブになっている画面にすっかり隠れていた なんなんだよ!! タブじゃなくても画面を2つ開けていたら「多重ログイン」扱いされてはじかれちゃうんだピョーン(;´д⊂ヽ アクティブウィンドウ以外のウィンドウは全てを閉じる命令ありますか? それを先に命令して最後に残ったアクティブ画面を操作したい ウィンドウの名前はそのつど変わるので アクティブウィンドウ以外をせべてウィンドウは閉じるって命令があればなー はー昨日からなにやってんだか 疲れたおやすみー
56 :
名無しさん@お腹いっぱい。 :2008/01/27(日) 11:51:38 ID: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 :
名無しさん@お腹いっぱい。 :2008/01/27(日) 11:56:26 ID:A03LsX+d0
>>52-54 ListViewとListBoxは見た目同じようで中身はダイブ違うけど勘違いしてない?
>>56 おはよ^^
>>55 だよん
早速サンプルありがとう。そのまま使わせて貰ったけど窓はとじなかったよ
んで前から出てたエラーが出た(アクティブ画面のボタンを押せないエラー)
全部窓をとじないでUWSCもそのまま(UWSを読み込ませたまま置いておいて)
手動でアクティブじゃないほうの窓を閉じて
再びUWSCの読み込ませていた命令(
>>56 の命令を最初に書いてあるUWSファイル)をそのまま再スタートさせたら上手くいけた
やっぱりアクティブ以外の窓は全部とじないとUWSCではエラーになるみたい
ちなみに
改めてログインしなおして手動で進めていき
UWSCではエラーになって押せないボタンを手動で押して進めてみると
先に開いていた窓はそのまま閉めなくてもいけた
手動だと進めるってことはサイト側の問題ではないね
もしかしたらUWSCは先に開いている状態の窓をアクティブと認識しているのかな?
でも実際には2枚目に開いた画面(UWSCで操作したい画面)がアクィブなんだ
なぜ2枚目がアクティブだと私が言い切れるのかといえばですね
2枚目が開いてから何もしない状態でもマウスのスクロールが効いていた
UWSCがアクティブだと認識してる窓と実際アクティブな窓とは違うと想定すれば
今回のようなエラーになると思う
だとすればUWSCへの命令は「アクティブウィンドウは閉じて次のウィンドウへ移動しなさい」って命令しなければいけない
しかし何度も言うようにそのサイトでは不正対策のために窓の名前は毎回違うんだよね
ん〜悩むなあ・・・そのサイトのアドレスを教えれば状況が理解してもらえるんだろうけど
ここは色んな人が見るのでそれはちょっとこまる・・・^^;
2枚の画面が開いているとき・・・UWSCから見てのActiveWindowをCLOSEすると
UWSCは残りの画面は窓名がわからなくてもアクィブウィンドウと認識してくれるんだろうか?
ちょっと知事選の投票行って所用を済ませてまたテストしてみるわ。ありがとー
59 :
名無しさん@お腹いっぱい。 :2008/01/27(日) 15:31:30 ID: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" )
>>59 おお貴重な情報だありがとう
今、テストしていてわかったんだけど
そのサイトのページってIEに対して何か制限をかけているみたいなんだ
右栗禁止、「F5」で更新できないとかは前からだったんだけど
ブラウザをFirefoxに変えてテストしてみたら
右栗OK、F5Ok、「Ctrl」+「W」で私の言うアクティブウィンドーが閉じた
(IEではどちらの窓も閉じない)
多分どちらの窓もUWSC自身では取得していない
手動で適当なところをマウスクリックしたらUWSCが操作可能になる
UWSCがFirefoxにも対応していたらなー問題解決なのに・・・
IEのオプションで右栗突破すればどうにかなりそうな希ガス
他にもやらなければいけないこといぱーい
ふう疲れるIEの右栗禁止を突破するのが鍵棚
UWSCは多分どちらの窓も取得していないのでボタンクリックの命令でエラーになるような
IEのオプション研究からやり直しだわw
ありがとう
いつも悪いね^^
あーぁIE7にバージョンアップしたのが一生の不覚だよ OSのインスコからやり直すくらいしないと もうIE6に戻せないしー まったく甘い言葉にご用心 IE6がいいよホント
WHILEやREPEATを使ったループ中に終了条件を満たさずとも100秒経過したら 強制的に次の処理へ移行、とするにはどうしたらいいでしょうか?
63 :
名無しさん@お腹いっぱい。 :2008/01/28(月) 02:43:16 ID: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)
>>63 詳しく教えてくださってありがとうございます、助かりました。
自分で
>>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 :
名無しさん@お腹いっぱい。 :2008/01/30(水) 00:15:15 ID:aG+PMwK+0
いよー 諸君元気でやっとるかね 私は相変わらず多忙続きでへろへろ〜w IE7に変えたらアクティブウィンドーの取得がおかしくなったって前に私が発言したんだけど 取り消しだ そのサイト最近リニュアルしたんだけど ソースをひとつづつチェックしてたらなんと! IEに対していろんな制御してたんだ * ENTERキーを押したかのを検査する *IEのショートカットキーおよび一部の機能を無効にする * マウスのクリック(2重リクエスト) *マルチサブミット防止処理 * ファンクションキーの無効化 これをジャバスクリプト命令にして先にヘッダ部分で読み込んでやがった UWSCの操作でどうにかできる問題じゃなかったんだ ここで相談に乗ってくれた九州男児ありがとう きみのソースでかなり勉強できましたが サイト側がIEに対して制御かけていることが判明しました 色々とありがとう 寒い日が続くけど風邪ひかないようにね あ、UWSCに要望あるんだよね ・多重起動ありにしてください(もっかいお金払ってでもいいですのでバージョンアップということでお願いします) ・IEだけでなく他のブラウザにも対応して下さい特に便利なFirefoxに対応していないのは痛いです 以上 んじゃノシ
68 :
名無しさん@お腹いっぱい。 :2008/01/30(水) 18:44:34 ID:aG+PMwK+0
やっぱりUWSCがいいな Firefox用の自動ソフトを探してテストしてみたんだけど どれも使えない RECIEがいいよ ってことで 右クリ禁止とF5禁止の突破を考えていたんだけど UWSCでブックマークレットとか使える? お気に入りにジャバスクリプトを登録しておいて 右クリ禁止のページになったらそのブックマークをクリックするだけで ジャバスクリプトが発動するんだ それかUWSCでジャバスクリプトの命令を実行できる? まあスクリプトのことはよくわかんないので その右クリ禁止ページになったらKey制御している.jsのソースがわかったので falseをtrueに書き換えるだけ^^; どうなることやらwww ・UWSCでブックマークレット使いたい ・UWSCでジャバスクリプトの命令を実行したい 毎度聞いてばかりで悪いね よろしく あ〜腹減った〜 今日も忙しくて朝飯も食ってないよ メシ食ってくるね
RECIEてIE専用だしCOM使ってるだけだろ。 ブラウザがらみ邪魔九歳から別スレ建てろよ。
71 :
名無しさん@お腹いっぱい。 :2008/01/30(水) 20:17:03 ID: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
右クリ禁止のブックマークレストわかった!!
下記アドレス
https://www.squarefree.com/bookmarklets/zap.html#restore_context_menu 「Bookmarklets for Zapping Annoyances」で紹介されている
restore context menu というブックマークレットを「お気に入り」に登録します。
ブックマークに登録の仕方はIEならボタンの上で右クリックする
「お気に入りに追加」を選ぶと
「追加しようとしているお気に入りは安全でない可能性があります。続行しますか?」
とでてくる
「はい」を選ぶとめでたくお気に入り入りだ
Firefoxはボタンの上で右クリックして「お気に入りに追加」でもいいし
ボタンを「お気に入り」までドラッグ&ドロップしてもいい
効果のほうは今のところ全線戦勝www
右クリ禁止にキミらもつかってみるといいよ
UWSCでお気に入り選んで操作できるのかね??
すっげー楽しみだwwwww
何か一人のせいでこのスレ森下がってるよね KY←本人読めるかな?
・゚・(ノД`)・゚・ あかんかったー IERECではお気に入り押せないじゃん しかし右クリ突破のスクリプトは凄いのー UWSCでジャバスクリプの実行の仕方教えてくれ
EXEC(”ジャバスクリプ”)
COMのみでできんのがスマートじゃないけども
ie.navigate("javascript:window.external.AddFavorite('
http://google.co.jp/ ','グーグル')")
clkitem(getID("お気に入りの追加"), "OK", CLK_BTN)
これを埋めればおk
ちなみにこちら大阪 カレーおごってくさい
osaka_karee@yahoo.co.jp
>>76 そのままだと「IEが定義されていません」とエラーになるよ
んで2行足してやってみたら「IEではダウンロードできません」「エラーが特定できません」となる
IE = CreateOLEObj("InternetExplorer.Application")
IE.Visible = True
ie.navigate("javascript:window.external.AddFavorite('
http://google.co.jp/ ','グーグル')")
clkitem(getID("お気に入りの追加"), "OK", CLK_BTN)
ちなみにjavaスクリプトも実行できなかったよ
それからお気に入りに追加したいんじゃなくて
IEのお気に入りボタンを押して選んで押す
「ブックマークレット」ぐぐってみ
ブックマークレットで右クリ禁止を対策したいの
ちなみに右クリ禁止ページでテストしてるけど今のところ全勝
右クリ禁止サイト全てのページで右クリできるようになったもんね
だからこのブックマークレットをUWSCで使いたいのさ
カレーライスはおあずけねw
んじゃ
駐車禁止対策もUWSCで使いたいよな。
ページ内に右クリ禁止の記述を発見したらそこを書きかえるってのを SleipnirかFoxのプラグ印としてぶちこんどいたらいいんじゃない? あと、ブラウザのアドレス部に javascript:XXXXXX; (XXXXX = javascriptの記述) を入力するとページに対してjavascriptを実行できる。これを使ったらUWSCがもっと便利になるべな。 ゆうたら、そのブックマークレットをアドレス部にぶちこんでひらくUWSCを書けば お気に入りの中のボタンを押す必要もなくなるんよ。 カレーおごってくさい
アドレスに入力するのも知ってたよ しかしどうせななら「F5」「TAB」「「マウス」一緒に解禁したいだろ 英語のページにそれらしいソースがあったけど 250行はある アドレス作戦は520文字までなんだよね 明日は病院か はぁどーなることやら んじゃーの おやすみ
右クリック禁止を何とかしたかったんじゃないの? F5 とか TAB って禁止できるの? そのそれらしいコードと右クリック禁止のコードを js ファイルに保存して 外部スクリプトを読み込むようにすりゃいいんじゃない OPTION EXPLICIT DIM url = 対象の URL DIM js = js のフルパス (ex. file:///X:/hoge.js) DIM ieobj, headelm, scriptelm ieobj = CREATEOLEOBJ("InternetExplorer.Application") ieobj.Visible = True ieobj.Navigate(url) REPEAT SLEEP(0.1) UNTIL !(ieobj.Busy) AND (ieobj.ReadyState = 4) headelm = ieobj.document.getElementsByTagName("head").item(0) scriptelm = ieobj.document.createElement("script") scriptelm.type = "text/javascript" scriptelm.src = js scriptelm.charset = "Shift_JIS" headelm.appendChild(scriptelm)
82 :
名無しさん@お腹いっぱい。 :2008/02/02(土) 16:58:15 ID:F1ruxvK80
ページの自動再読み込みは、サーバーを毎回チェックするように設定しとけば
↓のコードでいけるけど、F5と同じ動作できんかな・・・キーを送信すると表に出てきてうざいから×
url="
http://~~ "
IE.navigate(javascript:parent.frames.location='"+url+"'")
>>76 Ctrl+Dで画面なしでお気に入りに追加。
だからSCKEY(ID, VK_Ctrl, VK_D)でいいよ
>>43 これうまくいかんことがある。
やっぱ↓のが確実。submitはボタンの名前かID
ClkItemなら表示名で指定できるけどWebページのボタンには使えんね。
IE.document.forms[0].submit.click()
そうそう。
再表示をメニューから指定しようとしたんだけど、サブメニューがクリックできなかった。
たいていサブメニューになってるからCLK_MENUの実用性が低い・・・
使い方があるのかもしれんけど分からん。
基本的なことで申し訳ないけど 「座標(11,22)の色が白(FFFFFF)以外になるまで待つ」スクリプトを教えてください
while peekcolor(11,22)=$ffffff sleep(1) wend
>>79 ブックマークレット色々探したんだけど
右クリ突破100%のブックマークレットはいくつかあったけど
「Tab」や「Ctrl」「Shift」「F5」とかまで無効を突破できるのってないもんだな
っと思ってたら1個だけ見つけたw
UWSCでテストしてOKだった
そのスクリプトここに貼ってもいいかどうかわかんないので
もし気になるならそれを置いてるアドレス教えるわ
それから何故画像認証画面にフォーカスを合わせられなかったり
右クリ突破してるのにマウスクリックできないのかわかった!!
そのテストするときはIE7で開いている窓が2つあるんだけど
そのどちらかがアクティブだと思っていたらなんと!!!!
その状態ではUWSCがアクティブ画面になってるじゃん
しかもRECIEで修正しようとしても
RECIEでは「Alt」押さえっぱなし「Tab」1回押して
「Alt」「Tab」両方放すって記録できないじゃん
カメラで記録できるのかな(後でやってみるけど
カメラで記録したのってRECIEで使えないエラーになることあるもんなー
「Alt」「Tab」使ってアクティブウィンドーをIE7に変えたら
前に教えてもらったフォーカスあわせるのができた
今のままじゃアクティブウィンドーに1回マウスクリックでもしないとアクティブにならない
UWSCがアクティブのままだったらIEの画面をマウスクリックしないんだよね
このままじゃ半自動っていうのか半手動っていうのか全自動じゃないってことだ(涙
誰かRECIEの方の命令でAlt押さえっぱなしTab1発教えてクレヨンしんちゃんwww
いつも悪いね。あじがとーー
連投スマソ85です でけた! カメラで記録したのをちょっと変更しただけでいけましたw ALTダウン TABクリック1回 押してアクティブウィンドー切り替えてALTアップ そしてTABもう1回押してウィンドー内のテキストボックス切り替えて CTRL押すまで待機。 画像認証を入力→CTRL押して次の画面へ郷ひろみwww やったー 嬉しい 教えてくれたらカレーライスご馳走しようと思ったんだけど 自己解決でけたwww KBD(VK_ALT,DOWN,1000) KBD(VK_TAB,CLICK,1) KBD(VK_ALT,UP,1000) SLEEP(0.1) KBD(VK_TAB,CLICK,1) SLEEP(0.1)
再び連投 スマソwww アクィブウィンドーやっと取得できたので TABでテキストボックスの切り替えしなくても そのままフォーカス合わせれた やった! これで0.1秒速くなったぞwwww ここは私の日記帳棚w んじゃノシ KBD(VK_ALT,DOWN,1000) KBD(VK_TAB,CLICK,1) KBD(VK_ALT,UP,1000) SLEEP(0.1) IE.document.forms(0).elements(5).focus()
読んでる限り何がしたいのかよくわかんなってきたけども フォーカス合せて入力するなら IE.document.forms(0).elements(5).value = input("にゅうりょくしてください") がクールなんちゃうかいな これならフォーカス外れててもぶちこめる
89 :
名無しさん@お腹いっぱい。 :2008/02/03(日) 21:20:40 ID:VOpowv0z0
2ゲットスクリプト実行してたら規制された。
90 :
名無しさん@お腹いっぱい。 :2008/02/03(日) 21:29:36 ID:VOpowv0z0
一応完成したんだけどまだまだ高速化できるかなと、内部処理作ってる途中だったのに。
スレッド一覧だと更新が遅れることがあるんで、普通にニュース速報+のページを更新。
ただし、フォームとかリンクとか多くて時間がかかるんで、HTMLだけを取得。
昨日は文字化けの解決法が分からなくて寝てしまったんだけど、
ソースがシフトJISのデータはバイナリで受信すればいいことが分かった。
とりあえずIE画面なしでHTML取得するスクリプト
↓↓↓
oHttp = CreateOLEObj("MSXML2.XMLHTTP")
oHttp.Open("GET", "
http://mamono.2ch.net/newsplus/ ", False)
oHttp.setRequestHeader("If-Modified-Since", "Thu, 01 Jun 1970 00:00:00 GMT");
oHttp.Send
str = BETWEENSTR(DECODE(oHttp.responseBody, CODE_BYTEARRAY),"<form method=GET name=f","<form action=")
どうせ規制くらうんだし前バージョンのスクリプトアップしてもいいのかな?
業務妨害になっちゃうかもしれないからやめとくか。
91 :
名無しさん@お腹いっぱい。 :2008/02/03(日) 21:50:16 ID:VOpowv0z0
UWSCで作る意味がない
日記、というより独り言になってるな。 だらだら書きたいならブログでも作ってそっちに書いたら?
>>92 ほかにいいスクリプトがあるなら教えてください。
>>96 とりあえず何がしたいのか3行でまとめてみ。
98 :
名無しさん@お腹いっぱい。 :2008/02/04(月) 00:06:35 ID:iTB6+LfJ0
99 :
92 :2008/02/04(月) 00:35:51 ID:GzuoCs/D0
ちなみにさっきのレスは上げっぱなしの奴に対してね
●に対応しないと規制されるよん
102 :
名無しさん@お腹いっぱい。 :2008/02/04(月) 01:11:53 ID:iTB6+LfJ0
104 :
名無しさん@お腹いっぱい。 :2008/02/04(月) 02:40:32 ID:iTB6+LfJ0
内部処理でできて通信規制かからなければこーゆーのも夢じゃないんだけど
>>90 のやり方で作りかけてるスクリプト実行するのに2秒かかっちゃうんだよね。
HTMLもそれなりなサイズだし文字コード変換してるしスクリプトだし、1秒未満は無理。
取得したデータをストリームとして逐次必要な分だけ受け取って処理するとか、
文字列がバイナリ配列と等価なC言語とかなら余計な処理を省けていいんだけどなあ。
http://mamono.2ch.net/test/read.cgi/newsplus/1202057922/1-2 1 名前:sek ◆inter/GWwg @sek漬けφ ★[] 投稿日:2008/02/04(月) 01:58:42 ID:???0 ?2BP(1113)
2 名前:2ゲットちゃん ◆.r1OODycY. [] 投稿日:2008/02/04(月) 01:58:42 ID:iNELh+Ip0
2ゲット
105 :
名無しさん@お腹いっぱい。 :2008/02/04(月) 03:29:59 ID:iTB6+LfJ0
新しいスクリプトを考えたんだけどさすがにUWSCじゃ無理だ。 手前に表示されてるブラウザから表示中のURLをゲットして、 URL中の数字部分を抜き出して、ボタン一つで増減したページを開くようにできたら リンクが張られてないけど連番になってるのを見るのに便利棚と思ったんだけど。 数字が何箇所かある場合はボタンの数も変えないと使えないし。
106 :
名無しさん@お腹いっぱい。 :2008/02/04(月) 03:44:11 ID:iTB6+LfJ0
>>104 2秒かかるって間違い。
sleep(1)が入ってた。
sleepが必要になる部分を調整したら1秒未満は問題なく出せる速度だった。
>>105 そんなフリーソフトあった気がする。ベクタで探してみたら。
まあ作るのが楽しいならいいけど。
UWSCと似たようなソフトでAutoItも良いよ。ドキュメント充実してるし。
英語だけどなw
108 :
名無しさん@お腹いっぱい。 :2008/02/04(月) 18:21:10 ID:iTB6+LfJ0
19時に規制されてたぞ、ほどほどになw スレが立つ前の時刻で2getする方法もあるけど、 ここまで荒らすとなると教えられないな。
110 :
名無しさん@お腹いっぱい。 :2008/02/04(月) 21:05:49 ID:iTB6+LfJ0
>>109 2ゲットがあらしとか馬鹿みたい。
みんなが2ゲットのためにF5アタックするくらいなら、2を取らせないほうが負荷は減るはず。
>スレが立つ前の時刻で
スレ番を予想してPOSTするんだろ。
111 :
名無しさん@お腹いっぱい。 :2008/02/04(月) 23:02:29 ID:Hux/5Icf0
awtを使ったJava GUI アプリでサーバーと通信しているものがあります。 (得意先コードを入れると得意先名を読み込んできて表示したり) サーバー負荷によって帰ってくる時間が違うので、IEのbusyやreadystateの様に待ちたい のですが、どうしたらいいでしょうか? 何か方法があれば教えてください。
112 :
名無しさん@お腹いっぱい。 :2008/02/05(火) 00:29:54 ID:bHal2eZv0
ニュー速+のほとんどのスレで、スレが立つとすぐにAA張ってるやつらいるのに
僕だけがなんで規制されるのか分からない。
手動っぽいスクリプトならいいんかと。
それとも単に通報されたのが僕だけなのかと。
>>111 oHttp = CreateOLEObj("MSXML2.XMLHTTP")
oHttp.Open("GET", "
http://mamono.2ch.net/newsplus/ ", False)
Openの最後がFalseなら非同期なので待たない。
Trueなら同期なので返事を待つ。
更新がない限りなにもしないのなら、
>>90 では1970年とか指定してるところを、
保存したLast-Modifiedをセットする。
LastModified = "Thu, 01 Jun 1970 00:00:00 GMT"
while 1
oHttp.setRequestHeader("If-Modified-Since", LastModified);
oHttp.Send("")
ifb 200 <> oHttp.status Then
continue
endif
LastModified = oHttp.getResponseHeader("Last-Modified")
wend
・・・UWSCのコードだからawtでは関係ない気がするけど。
まあどの言語でもOLE使う場合はほとんど一緒だと思う。
あるwebの文章からある文字列の直後の数字を変数に入れたいのですが、 やり方知ってる方教えてください、、。 例えば 次の時刻は10時です。 と書かれてあるページから「時刻は」の文字列の直後にある「10」 を、ある変数に入れる とかの処理なのですが、、。
114 :
名無しさん@お腹いっぱい。 :2008/02/05(火) 03:14:16 ID:bHal2eZv0
文字列 = "次の時刻は10時です。" BETWEENSTR( 文字列, "次の時刻は", "時です。", [省略] ) 戻り値:"10" STRCONV("10", SC_HALFWIDTH) 戻り値:"10" VAL( "10" ) 戻り値:10 VAL( STRCONV(BETWEENSTR( 文字列, "次の時刻は", "時です。"), SC_HALFWIDTH) ) ああ、今日免許更新しないと失効しちまうが昼までに起きれる自身がない・・・ 免許取得とか更新のときはいっつも寝不足で目つきわるいんだよ。 徹夜明けで一発免許とったときはつらかったずら。
115 :
名無しさん@お腹いっぱい。 :2008/02/05(火) 03:36:06 ID:bHal2eZv0
>>112 ちょいミス。
Openして同期通信しないとね。
んで自己レスしなくても専用ブラウザで自己レスのプレビューしたら見れるね。
>>115 oHttp = CreateOLEObj("MSXML2.XMLHTTP")
LastModified = "Thu, 01 Jun 1970 00:00:00 GMT"
while 1
oHttp.Open("GET", "
http://mamono.2ch.net/newsplus/ ", True)
oHttp.setRequestHeader("If-Modified-Since", LastModified);
oHttp.Send("")
ifb 200 <> oHttp.status Then
continue
endif
LastModified = oHttp.getResponseHeader("Last-Modified")
wend
暗示かかってるおかげで2:30〜3:00は眠くなるんだけどその時間帯を外すと少しも眠くならないと言う・・・
検索して出てきた情報を全自動で全部の情報をエクセルに取り込みたいんだけど (UWSCとエクセルのWEBクエリー機能を使ってです) 曜日や時間によっては検索されて出てきた情報が3ページのときもあれば6ページのときもあります UWSCを使って1ページ目はエクセルに取り込んで保存できました 変数使って2ページ目3ページ目と同じ事を繰り返すことは可能だと思います 困ったことにわからないことができました 検索で出てきたページ数ってどうやってUWSCに判断させればいいの? エラーになって止まったままになってしまうと2件目の検索サイトに行けないです どなたかページ数の判断のさせかたを教えて下さい
// 投稿処理 //////////////////// // 戻り値: TRUE:正常、FALSE:エラー // 引数: // IE :IEオブジェクト // conturl :スレの場所 // TNo :スレ番 // text :投稿テキスト // メモ帳=0 :メモ帳ID // メモ帳IDはデバッグ用 Function Cont( Var IE, conturl, TNo, text, メモ帳=0) result = true ID = HNDToID(IE.HWND) str = conturl+TNo+"/l1&nohead" for i = 0 to 2 IE.navigate(str) REPEAT; sleep(0.1); UNTIL !IE.busy AND IE.readystate = 4 // エラーページチェック str = Status(ID, ST_TITLE) errortitles[4] = str for e = 0 to 4 ifb 1 <= Pos(errortitles[e], str) Then select e case 4 // エラーがなければ続行する。 break 2 case 0 // 接続エラーなら規定回数試行する。 sleep(2) continue 2 default // その他エラーならエラー終了する。 SendSTR( メモ帳, errortitles[e] + "<#CR>", 1, false, false ) IE.navigate("about:blank")
result = false exit selend endif next // ここには来ないはず msgbox("エラー判定ミス") exitexit next // 投稿画面で既に書き込みがあればキャンセルする。 src = IEGetSrc(IE, "dt", 1) ifb 1 <> Val(BetweenStr(src, "<dt>", " :")) Then result = false exit endif
// テキストセット IESETDATA(IE, text, "MESSAGE") // 送信 IE.document.forms[0].submit.click() REPEAT; sleep(0.1); UNTIL !IE.busy AND IE.readystate = 4 str = Status(ID, ST_TITLE) ifb 1 <= Pos("書き込み確認", str) Then IE.document.forms[0].submit.click() REPEAT; sleep(0.1); UNTIL !IE.busy AND IE.readystate = 4 endif IE.navigate("about:blank") REPEAT; sleep(0.1); UNTIL !IE.busy AND IE.readystate = 4 Fend
120 :
名無しさん@お腹いっぱい。 :2008/02/05(火) 09:55:18 ID:bHal2eZv0
ThreadNoにスレ番(ニュース速報+のスレのURLのnewsplus/の後の数字)をセットして
>>117-119 のContを呼び出す。
エラーを出したくないい場合、Contの中で、"/l1&nohead"としてるのを"/1"として条件のあったページにします。
>>116 検索ページにそのままは使えませんが、エラーの判定と戻る操作のサンプルです。
これがエラーに飛んでしまった場合、タイトルバーで判定するのが早いですが、
さまざまなページには対応しきれないので、完全な動作は保障できません。
エラーが出た場合、 .Navigateじゃなく、IE.GoBack() を使えばいいです。
以下は、Contを呼び出すコード
conturl = "
http://mamono.2ch.net/test/read.cgi/newsplus/ " // スレッド保存場所
PUBLIC errortitles[]="サーバーが見つかりません", _
"ERROR", _
"ERROR", _
"error", _
""
text = "てきとうに"
// 投稿用ブラウザを起動
IE = CreateOLEObj("InternetExplorer.Application")
IE.visible = True
メモ帳 = Exec("notepad.exe")
ThreadNo = スレッド番号
ifb Cont( IE, conturl, ThreadNo, text) Then
SendSTR( メモ帳, "good<#CR>", 1, false, false )
else
SendSTR( メモ帳, "err<#CR>", 1, false, false )
endif
116です
>>117-120 エラーで判断して処理するってことですね
アドバイスありがとうございます
自分的には初めて作る大掛かりなものなので気長にやってみます
ありがとうございました
122 :
113 :2008/02/05(火) 22:41:59 ID:hWzTsUwB0
>>114 華麗にお答えありがとう。参考になります。
すいませんまたですが、あるウィンドウのローカル座標を扱う方法を 教えてください、、。
>>123 目的の窓をマウスクリックする操作を録画し、ファイルに保存する。
ヘルプを開き、記録された操作をする関数名でキーワードから検索
MOUSEORGね。
UWSCでテキストエディターの秀丸を起動させたいんだけどどうすればいいですか?
失礼します。 ある処理が終わるまで他のウィンドウをアクティブにさせない 方法を教えてください。他の自動で開くウィンドウにキー操作が 取られてしまう、、、。
127 :
123 :2008/02/06(水) 12:20:21 ID:K7KdaWNn0
>>124 ありがとうございます。
ちょっと分りませんが調べてみます。
exec("C:\Program Files\Hidemaru\Hidemaru.exe")
誤爆
>>126 それ私の逆だね
私の場合サイト側が不正対策や自動スクリプト対策の為に色んな仕掛けがしてあって
UWSCがアクティブになりIEで開いている窓は手動でマウスクリックしないとアクティブにできなかったんだ
IEでウィンドー開いてサイトを見ているのにアクティブがUWSCに戻されていたのはなかなかわかんなかったよ
あなたの場合は私と逆にすればいいのではないでしょうか
一旦「Alt」+「Tab」を使ってUWSCにアクティブしてみたらどうでしょうか?
KBD(VK_ALT,DOWN,1000)
KBD(VK_TAB,CLICK,1)//この行最後の数字はUWSC意外に動いているプログラムの数で変更して下さい
KBD(VK_ALT,UP,1000)
SLEEP(0.1)
IEにアクティブ戻すときにもう一度同じ命令してもどしてね
>>128 あじがと
それやってみてダメなんだよね
どうやって秀丸をきどうさせるんだろね??
わかんないよw
>>126 >他の自動で開くウィンドウにキー操作が取られてしまう、、、。
そんなあなたにSCKEY
// ショートカットキーの実行
SCKEY( ID, キー, [キー, キー, キー, ...] )
シフト、Alt、DELとかの順に指定するとタスクマネージャが出ると思うけど、
別にシフトキーとか指定なしにF5とかを指定しても使える。
問題は再生時間の指定がないことだけど、
僕はKBD使うときも時間指定は0でsleep入れてタイミング取ってるから。
>>128 ありがとう
前回、それで起動させれないと判断したのは私の入力ミスのようでした
もっかいやってみたらそれで秀丸を呼び出せました^^
ありがとうです
秀丸を立ち上げれたけど終わらすのはどうするの? HIDEMARU.quit HIDEMARU.out HIDEMARU.down HIDEMARU.exit これ全部ダメですよー
(^ω^;)
自己解決 uwscで終了の指示を出すのではなく 秀丸のマクロで自動終了させることにしたのだw
136 :
名無しさん@お腹いっぱい。 :2008/02/06(水) 22:57:24 ID:lHr9HGwD0
137 :
名無しさん@お腹いっぱい。 :2008/02/07(木) 00:12:19 ID:wx7kSWwB0
http://scripts.web.fc2.com/scriptsup/test15.uws ↑は
>>120 でさらしたやつの本体。
スレトップページから拾ってくるのが早いだろうと思って作ったけどまったくの無駄だった。
トップページは連続して読み込んだりできないし人が多いとまったく更新されない。
まったくの失敗作なんだけど、スレの書式が違うのに対応したり更新のチェックをしたりしてるので
Webページ読み込む処理の参考にはなるかなと。
とはいえ、データを丸ごと受け取っても、区切りがはっきりしてないテキストを
UWSCではうまく扱えないので意味ないかも。
HTMLとかなら改行コードを省いてくれるのは助かるんだけど
2chの.datファイルで改行コードが消されてしまうと処理できないしな・・・
138 :
名無しさん@お腹いっぱい。 :2008/02/07(木) 07:03:10 ID:wx7kSWwB0
2ゲットツールをPythonで書き直してるんだけど アプリケーションを操作するのは環境依存してしまうから基本NGのようでできない。 一応WindowsのCOMを使えるようにしたり、 Macでアプリケーションを作るフレームワークがあったりするけどややこしい。 まずソフトが日本語じゃないからインストールがめんどい。 アプリを操作するんだったら簡単なのに 目に見えないプロパティやらメソッドやらをマニュアル見て・・・ Pythonでやるのが間違ってんのかなあ
全然間違ってないけどスレを間違ってる。
XPのIE7でサイトの巡回と自動ログインと保存にUWSC使用中。 今度PCをVistaに買い換えるんだが、同じIE7だからスクリプトはそのまま動くかな? 使用法にもよるだろうが、XP→Vistaにした人で問題あったりした人いたら教えて。
141 :
名無しさん@お腹いっぱい。 :2008/02/08(金) 03:46:27 ID:bciAgBLk0
>>140 そういえばIE7になると、タブブラウザだから
IEオブジェクト作る前にWindowsのShellオブジェクト作らないといけないとか書いてあった。
誰か秀丸エディターの「grepの実行」 検索文字「時間」で入力する方法教えてくれ 昨日からずっとやってるけどダメだ 取り合えず「grepの実行-秀丸-」の窓はアクティブにして 検索文字入力のところへフォーカスあわせるまではいくんだけど 自動では英数字しか入力できないのかな?? 30時間は寝てない・・・ まじやば寝るわ
143 :
名無しさん@お腹いっぱい。 :2008/02/08(金) 12:01:40 ID:bciAgBLk0
>>142 秀丸が文字コード違うのかも
文字コード違うとNULLに置き換えられることがある。
メモ帳にならUWSCの文字はそのまま出力されるから、
同じように秀丸の編集画面に貼り付けられるか試し、
そんでダイアログにもできるかどうか試す。
あと、データの送信方法が、API使うのとユーザビリティーなんとかってのと2タイプがあるけど、
APIでだと動かない場合がある。
APIで動かないのは、コントロールの種類を間違って指定した場合があるけど、
ACC指定してやれば番号さえ間違わなければまず確実に送信できるよ。
ACC指定は、スタティックテキストも探し出してくれるから見た目に忠実。
ACC指定するとウィンドウがアクティブになっちゃうから動作は遅くなるし、
裏で動かすことが出来なくなるけど、とりあえず動作させたい場合は使える。
exec("C:\Program Files\Hidemaru\Hidemaru.exe") hidemaru=GetID(" - 秀丸","Hidemaru32Class") scKey(hidemaru,VK_ALT) scKey(hidemaru,VK_S) scKey(hidemaru,VK_G) grep=GetID("grepの実行","#32770") sendstr(grep,"時間",1,TRUE) clkitem(grep,"OK",CLK_BTN) これじゃだめなん?
>>143 いよー^^
いつも悪いね
さっきもやってたんだけどわかんないよ
取り合えずカメラで記録したものを色々やったけどダメっぽい
RECIEで他に記録しておいた命令で使えそうなのも試してみたけど
まったくわけわかめ^^;
お手上げですよ
秀丸のマクロの記録、終了、保存、再生テストとやっても
検索文字は手動入力になってしまう
どうなってんだか??
今日はもう時間が無いのでまた夜にでもテストしてみる
ちょっと出かけてくる
ありがと
んじゃ
>>144 おぉ!
私が書き込んでる間にレスくれてたのか
ありがとー!
それ夜にでもテストさせてもらうよ
今、まじでスグ出かけないとダメなんだ
夜になっちゃうけどテスト結果報告するよ
ありがと
んじゃ行って来ます^^
>>144 ありがとう
テスト結果良好!!
読み込めない文字があったときのエラー対策なんかで少し時間かかっちゃったけど
grep機能はバッチリGOO!
あなた凄いですね^^
マジでカレーライスおごらせてください
時間があるときにでも連絡下さいメル欄
自分は小島ですよろしく
ここでさらしてから変な勧誘メールが多くなったので
そろそろ捨ててしまおうかと思ってるアドレスだから
もし大阪に来れるなら早めに連絡下さい^^
よろしく
それから聞いてばっかしでほんと恐縮なんだけど
grepしてる時間のあいだはSLEEP(0.1)しかないかな?
今は1ファイルを作ってテストしてるけどSLEEP(3.0)以上にしないとエラー画面でるんだよね
IEのこんな感じの命令あればいいのにね
今はテスト仕様なのでかまわないんだけど
使うとなったら20ファイルや30ファイル読み込ませることもある
どうにかならんかね?
↓こんな感じの秀丸にはできないの?
REPEAT
SLEEP(0.1)
UNTIL !IE.BUSY AND IE.READYSTATE = 4
ごめん たまたまレス見て秀丸もってたから適当に書いただけで今までの流れというか何を作ってるのかわからんから(書いておいてなんだがGREP自体どんな機能か知らん)答えようがないです。
149 :
名無しさん@お腹いっぱい。 :2008/02/09(土) 01:29:17 ID:Q50fZGOu0
>>147 IEの場合は公開されたオブジェクトとプロパティ、メソッドがあるから利用できるけど
それ以外のでは自分でコントロールを読み取って、
基本的にUWSCにある機能しか使えないからその範囲内でなんとかする。
僕はシステムメニューを読み取るためにWindowsAPIを使ったりしましたけど大変です。
どっかから関数定義を拾ってきてUWSCに合わせて定義。
API使うにはデータを書き込む場所をあらかじめ用意しないといけない。
一つしか使わなかったからnameを用意できたけど、APIっていろいろ組み合わせないと
それだけではたいしたこと出来ないわけで。
しかもスペースが一つになってるけど実際には
>>149 のように
受け取る可能性のある最大サイズを用意してあり・・ませんが。
CONST MF_BYCOMMAND = $00000000
CONST MF_BYPOSITION = $00000400
DEF_DLL GetMenuItemID(HWND,Long):Long:USER32.DLL
DEF_DLL GetMenuStringA(HWND,Long,Var string,Long,Long):Long:USER32.DLL
DIM name = " "
GetMenuStringA( GETCTLHND(ID, GET_SYSMENU_HND), 8, name, namelen, MF_BYPOSITION )
while getId("grep処理中") <> 1 sleep(0.05) wend while getId("grep処理中") = 1 sleep(0.05) wend すごく単純に。 0.1秒やとウインドウが消えるのが早すぎて0.05秒ということで 適当に grepWait() とかでまとめてポンポンおいたらええのんとちゃうかな ごっちゃんです^^
了解ですよ^^ あとでメールしますね よろしく
しかし終了条件書かないと永遠ループで ALT+F2で強制終了 そのあとの処理できんね REPET 繰り返し処理 UNTIL//終了条件 次の作業へ grepの終了条件ってなんだろね
grep実行したら、「grep 処理中」て小窓がでない? さっきのは、実行ボタン押した直後に置いて 小窓出る→小窓消える→脱出 て流れだったんだけど。 ちなみにVer7でVistaです。 もしたまに失敗とかなら、 c = 0 while getId("grep処理中") <> 1 sleep(0.05) c = c + 0.05 if c >= 3 then break wend while getId("grep処理中") = 1 sleep(0.05) c = c + 0.05 if c >= 3 then break wend てな感じで保険かけといたらいいんじゃないかな
すみません教えてください。
IE.navigateで開いたページに載っているリンク先をIELINKで開き、
そのリンク先のページのテキストをIE.DOCUMENT.BODY.INNERTEXTで
取ろうとしたのですが、何故かリンク元のテキストがコピーされてしまいます。
リンク先のテキストをコピーするにはどうしたら良いのでしょうか?
(事情があり、直接リンク先のURLは取得出来ないんです、、。)
例
IE = CREATEOLEOBJ("InternetExplorer.Application")
IE.visible = true
IE.navigate("
http://www.yahoo.co.jp/ ")
REPEAT
SLEEP(0.1)
UNTIL !IE.busy AND IE.READYSTATE = 4
IELINK( IE,"ショッピング")
REPEAT
SLEEP(0.1)
UNTIL !IE.busy AND IE.READYSTATE = 4
TEXT = IE.DOCUMENT.BODY.INNERTEXT
sendstr(0,TEXT)
ielink()を使わない方法になるけども
IE = CREATEOLEOBJ("InternetExplorer.Application")
IE.visible = true
IE.navigate("
http://www.yahoo.co.jp/ ")
REPEAT
SLEEP(0.1)
UNTIL !IE.busy AND IE.READYSTATE = 4
a_tag = IE.document.getElementsByTagName("A")
for i = 0 to a_tag.length-1
ifb a_tag.item(i).innerText = "ショッピング"
IE.navigate(a_tag.item(i).href)
REPEAT
SLEEP(0.1)
UNTIL !IE.busy AND IE.READYSTATE = 4
print IE.document.body.innerText
break
endIf
直では飛べないもんだと勝手に解釈して、
試してないけどだいじょうぶなはず
プラス 最後に next ね
157 :
名無しさん@お腹いっぱい。 :2008/02/10(日) 02:48:17 ID:qFjON2CV0
>>154 WinXPのIE6でやったけどちゃんとショッピングのページが取れたよ。
目的のHPかIEのバージョンの問題じゃないかな。
158 :
156 :2008/02/10(日) 17:48:22 ID:Jvn5XWpQ0
さらに
IE.navigate(a_tag.item(i).href) は
a_tag.item(i).click
ね
>>157 の言うとおりいけるとおもうけど
すいません自分の勘違いでした。
>>154 の例ではちゃんとショッピングの
ページのテキストが取れました、、。
自分の見ようとするページで例を書きたかったのですが、会員制ページ
だったので、、、。そしてその会員制ページはやはりリンク元のテキスト
が取れちゃうんですよ、、、。やっぱりショートカットでコピーかな。
>>156 さん
例ありがとうございました。何故か動かないのですが、知らないtag
とかまだ良く分らないので調べてみます。
これ、HP見るとVistax64での動作検証をしてないと書いてありますが、 やはり、不具合でるのでしょうか?というのは、 MOUSEORG(ID,0) ACW(ID,0,0) MMV(50,141) で、マウスが移動せずに、IDで指定されたウインドウが移動するのです。 UWSCは管理者権限+XPSP2の互換モードで実行しています。
MOUSEORG()で基準が変わるのは MMV()、BTN()、PEEKCOLOR()、CHKIMG() だからACW()でウインドウが移動される。
すいません、舌足らずでした。 ACWで(0,0)にはわざと移動させてます。 そのあとMMVで再度ウインドウが動きます。 位置的には-400,200ぐらいに(画面の外にウインドウが半分出ます)
163 :
名無しさん@お腹いっぱい。 :2008/02/11(月) 14:53:16 ID:7fZalG9R0
ACWはウィンドウを動かすコマンドだからね。
164 :
名無しさん@お腹いっぱい。 :2008/02/11(月) 15:00:50 ID:7fZalG9R0
MMVで・・か マウスを移動する前にマウスクリック(左ボタン押し下げ)したことになってれば窓が動くし。 ACWで変なところに飛んでるわけじゃないなら、 マウスボタンをあげる操作を送信したらいいかも。 BTN( LEFT, UP ) とかで。 ただ、MOUSEORG()の影響を受けるかもしれないから、 それの実行前と後で試すのがいい。
165 :
名無しさん@お腹いっぱい。 :2008/02/12(火) 04:49:52 ID:XVM9B7S70
すいません教えてください。GETACTIVEOLEOBJ()でURLがそのまま
ウィンドウのタイトルになってるそのタイトルを入れたのですが、
エラーが出ます。どう指定すれば良いでしょうか?
例
IE = GETACTIVEOLEOBJ("internetexplorer.application","
http://www.audiojapan.jp/2005ex.jpg ")
167 :
名無しさん@お腹いっぱい。 :2008/02/13(水) 03:26:54 ID:Qm3jXXZF0
>>166 "internetexplorer.application"が小文字に変更されてるからとか
ACW(GETID("Microsoft Excel - Book1","XLMAIN"),-4,-4,1032,746,0) これの"XLMAIN"とはどういう意味なんだ? その後ろの-4,-4,1032,746,0これもわかんね サイトのページを次々にを貼り付けていきたいんだけど 1ページ目しか貼らないよ -4,-4,1032,746,0 ←これが味噌のようなきがする だれかよろしく^^
ちなみにエクセルに貼り付けたい場所は A.1 A,143 A,,286 A,428 つまり前の位置より142行下げた位置にはりたいんだけど わかんないよ(涙 エクセルのA列って何行まで貼れるのだ?? 10万行はOK??
おkおk
取得した色情報をリアルタイムで表示ってどうやるんでしょう? ヘルプからほぼ丸写しなのにできない・・・ x=G_MOUSE_X; y=G_MOUSE_Y WHILE x>0 c=PeekColor(x,y) FUKIDASI(c) Sleep(0.5) FUKIDASI() WEND
x=G_MOUSE_X; y=G_MOUSE_Y これをWhileの中にも入れればいい
ありがとうございます、座標定義付けその都度やらないといけないんですね 出力された色情報が10進数orz これって16進に変えられますか
Format(c,0,-1)
ありがとうございます、関数あったのですね よく調べずに聞いて申し訳ありませんでした
ごめん、こっちのほうがいいかも c=Peekcolor(x,y) b=(c AND $FF0000) / $010000 g=(c AND $00FF00) / $000100 r=c AND $0000FF Fukidasi(CHGMOJ(FORMAT(c,6,-1)," ","0"))
度々すまん。b,g,rの3行無視してくれ
>>176 ありがとうございます、CHGMOJ入れたのは黒が000000になるようにでしょうか
179 :
166 :2008/02/13(水) 23:43:56 ID:E5I/Ahuu0
180 :
166 :2008/02/13(水) 23:51:25 ID:E5I/Ahuu0
181 :
名無しさん@お腹いっぱい。 :2008/02/14(木) 06:34:24 ID:vVJB7APg0
DLLでUWSCに命令送ったらUWSCが動作するようにしたいのですが・・・ ウェイトを置いて命令がきていないかチェックするしかないですか
182 :
名無しさん@お腹いっぱい。 :2008/02/14(木) 11:24:09 ID:LyEfCpZO0
すんません、uwscをBATファイルで記述したいですけど(簡易exe化のため) どんな風にかけばいいですか? マクロファイルとuwsc本体は別のフォルダにあります。
マイドキュメントにあるtes123.txtを切り取って c:\tmp\作業場 に貼り付けたいです 作業をした後は名前を123-OK-001.txtに変更してC:\tmpに保存して c:\tmp\作業場のtes123.txtは削除 どなたか教えて下さい
dosコマンド使えばOK
>>182 ヘルプの起動オプション読め。
それから起動するだけならBAT不要。ショートカットに引数指定で十分。
sendstrで:とか;とか,とかどうやって書けばいいの? 「:」「;」「,」こういうの特殊文字っていうんかな?? 変数置換が定義されてませんって出てきて進めない(涙 よろひく^^;
Uスクリプト 変数置換が定義されていません どうすればいいのか?? 誰か頼む //秀丸置換@ hidemaru=GetID(" - 秀丸","Hidemaru32Class") SLEEP(0.1) scKey(hidemaru,VK_ALT) SLEEP(0.1) scKey(hidemaru,VK_S) SLEEP(0.1) scKey(hidemaru,VK_R) SLEEP(0.1) sendstr(置換,":",1,TRUE) SLEEP(0.1) sendstr(置換,";",2,TRUE) SLEEP(0.1) clkitem(置換,"OK",CLK_BTN) SLEEP(2.0) KBD(VK_RETURN) SLEEP(0.1)
188 :
名無しさん@お腹いっぱい。 :2008/02/14(木) 19:31:19 ID:L/XlfUKK0
>>187 「置換」っていうのがUWSCの変数扱いになってる。
そこGetIDとかで取得したウィンドウIDを入れるところだし。
>>188 187だけどこれは秀丸でgrepしてそのままこの作業に入ろうとしてるんだけど
秀丸の窓は取得してると思うんだ
もっかい取得からやりなおしてみるありがとう
UWSCのヘルプ
//<マルチステートメント>
; (セミコロン) // N88Basic的な1行IF文での変態的使い方はダメ
意味わかんねー^^;
190 :
名無しさん@お腹いっぱい。 :2008/02/14(木) 19:55:23 ID:L/XlfUKK0
if a then b; ccc これはif文の一部に処理cccが入ってるけど、;で区切られてるからif文と関係なく実行されるもの。 つまり行を分けるべきだけど;を使うとこういうことができちゃうんだけど駄目だよってこと。 N88Basicのころは行数を短くすると処理が早くなるし、狭い画面いっぱいに使えるから変態行為もやってた。かも。
>>189 おお
ありがとう!
置換=GetID("置換","#32770")
SLEEP(0.1)
この2行を足したら先に進めた
結果的にエラーのままだけど
文字の問題のような希ガス
:を1つめのボックスに入力してくれない
;は2つ目のボックスに入力されてた
エラーになったのはこれです
sendstr(置換,":",1,TRUE)
SLEEP(0.1)
sendstr(置換,";",2,TRUE)
SLEEP(0.1)
clkitem(置換,"OK",CLK_BTN)
SLEEP(2.0)
KBD(VK_RETURN)
SLEEP(0.1)
なんとか検索文に: ←これ入力できないかね??
私じゃわけわかめだよ^^
最近しみじみ思うことがあるんだ WEBとかパソコン関係は頭の良い人が圧倒的に有利だって事。 よろしく^^
あ、レス番間違い^^;
上のは
>>188 さん
>>190 さんへのレスね
まあ流れでわかるだろうけどw
exec("C:\Program Filesl\Hidemaru\Hidemaru.exe") hidemaru=GetID(" - 秀丸","Hidemaru32Class") scKey(hidemaru,VK_ALT) scKey(hidemaru,VK_S) scKey(hidemaru,VK_R) grep=GetID("置換") sendstr(grep,";",1,TRUE) sendstr(grep,";",2,TRUE) sleep(55) clkitem(grep,"OK",CLK_BTN) こうじゃね
>>194 さん
レスありがとう
grepの窓と置換の窓は別のようなんだ
grepのときはgrepの実行と窓に書いてあったけど
置換のときは
白色□の後ろに置換って書いてあったよ
ありがとう^^
なんとなくわかってきた^^ ご飯食べてきてからもっかいテスト 夜に結果報告するよ いつも悪いね ありがとう
197 :
名無しさん@お腹いっぱい。 :2008/02/14(木) 20:59:36 ID:vVJB7APg0
表示しているページが適切であるか(404とかでない)を確認するにはどうしたらいいですか
カレー奢れよ
わかりましたー
OKボタンを押すのをオルト+Aに変えたらいけましたwww
置換=GetID("置換","#32770")
SLEEP(0.1)
sendstr(置換,":",1,TRUE)
SLEEP(0.1)
sendstr(置換,";",2,TRUE)
SLEEP(0.1)
KBD(VK_ALT,DOWN)
SLEEP(0.1)
KBD(VK_A,CLICK)
SLEEP(0.1)
KBD(VK_ALT,UP)
SLEEP(3.0)
KBD(VK_RETURN)
SLEEP(0.1)
みんなありがとう!
これをエクセルに読み込ませるんだけど
インデントの設定とかできるんかなあ?
まあやってみるよw
>>198 いいよ
連絡待ってるね
んじゃ
Internet Exploereのウィンドウ操作に関するプロパティで、以下以外の ものはあるでしょうか? IE.Goback() IE.GOforward() IE.GoHome() IE.Quit 特にリロードをしたいのですが、そのプロパティはあるのでしょうか?
リモコンの無い古いビデオデッキのチャンネル合わせするにはどんなスクリプトですか?
>>201 自動サーチだし。
>>200 メソッド入れてぐぐったらいいよ。
MSのサイトじゃないと一通りは出てこなかったけどURLが分からない。
>>36 のコードをOpera等 IE以外のブラウザで使用したいのですが,
どうしてもProgIDがわからず,CreateOLEObjが通らなくて困っています。
IE以外で Opera Lunascape Sleipnir なんでも構いませんので,操作方法のわかる方
ご教授ください。よろしくお願いします。
SleipnirならCOMもってたと思うぞ
205 :
名無しさん@お腹いっぱい。 :2008/02/15(金) 16:13:26 ID:3aTa5ZAi0
スレッドの終了を待ちたいのですがHANDLEが使えません whileで監視するほか無いですか
206 :
名無しさん@お腹いっぱい。 :2008/02/15(金) 16:24:10 ID:3aTa5ZAi0
4バイト変数はつかえませんか
CHKIMG関数で、FOR〜NEXT文を使わずにA又はBの画像がある場合クリックとするにはどうすれば良いんでしょうか?
208 :
名無しさん@お腹いっぱい。 :2008/02/15(金) 19:23:07 ID:1nIrDTGD0
>>207 普通に両方chkimgすればいいよ。
>>206 数値は4バイトっぽいよ
>>205 終了を待つのならスレッド使わなければいいんじゃない?
スレッドでやりたいんならグローバル変数で終了フラグ使うかな。
それともWindowsのスレッド?
209 :
名無しさん@お腹いっぱい。 :2008/02/16(土) 09:40:39 ID:U+vL/fya0
>>200 更新の方法
1.sckey(ID, VK_F5)
2.IE.navigate("javascript:parent.frames.location='"+url+"'")
Javaスクリプト実行テスト
IE.navigate("javascript:alert(document.lastModified)") // テストコード
ヤフオクで(時計 ダイヤ)で検索したものを秀丸に貼り付けてるんだけど ヤフーの窓が 「yhoo!オークション (時計 ダイヤ))」になってるんだ 秀丸への貼り付けで窓の取得は(時計 ダイヤ)で取得できてる ヤフーオークションでページが行き過ぎて窓名が「yahoo!オークション」だけに変わったら 次に組んであるリピートを飛び越えてファンクション111に飛びたいんだ IF GETID("(時計 ダイヤ)")<>("(時計 ダイヤ)") next ふぁんくしょん111 ENDIF IF文がエラーになるんだよね?? ()を取っ払ったり付けたりしたけどわかんない わかる方おねがいします よろしく^^
いえいえ こちらこそよろしくです^^
>>210 GetIDの戻り値は数値
数値と文字列を比較しても常にFalseになる。
ウィンドウタイトルが同じだと、GetIDが期待したとおりには動かない。
ウィンドウの並びによってうまくいったりいかなかったり。
だからそのタイトルが一つしかないタイミングがあるんなら、
そのときにGetIDで取得したIDはその窓が入らなくなるまで保存して使う。
「名前を付けて保存」とかは確認画面まで同じだったりする。
そういうときに、確実に子の方のIDを取る関数をさっき作った。
//////////////////////////////////////////////////////
// 子ウィンドウを探す
// PID:親ウィンドウID
// CID:子ウィンドウID
Function GetChldID( PID, CID )
Result = 0
Ifb PID = STATUS( CID, ST_PARENT ) Then
result = CID
exit
endif
// リストから検索する
窓数 = GETALLWIN()
for i = 0 to 窓数 - 1
ifb PID = STATUS( ALL_WIN_ID[i], ST_PARENT ) Then
result = ALL_WIN_ID[i]
exit
endif
next
Fend
213 :
名無しさん@お腹いっぱい。 :2008/02/16(土) 12:01:11 ID:U+vL/fya0
GetChldIDで子IDが分かってないのに渡してる理由は、 「保存」をクリックした後に窓が閉じてるかチェックするためにGetIDしてるから。 そして、保存クリックするときに使ったIDDは、窓が閉じるまで変更しない。 そのチェックループ // 保存窓が開くまで待ち、開いたら「保存」をクリック。 REPEAT; sleep(0.1); IDD = GetID("画像の保存"); UNTIL -1 <> IDD sleep(0.1); ClkItem( IDD, "保存" ) // 窓を閉じる while 1 sleep(0.4) i = i + 1 // IDD = GetID("画像の保存") IDC = GetID("画像の保存") If -1 = IDC Then break CID = GetChldID( IDD, IDC ) // 子ウィンドウがあればそのIDを取得 Ifb CID Then ClkItem( CID, "いいえ" ) // ファイル保存ダイアログ終了ボタン Else ClkItem( IDD, "キャンセル" ) // 上書き確認メッセージ終了ボタン Endif wend
いよー^^
>>212 私はスクリプトは詳しくないんだけどよろしくw
>>213 >GetIDの戻り値は数値
>数値と文字列を比較しても常にFalseになる。
そうなんだ
数値が帰ってくるのか勉強なった!
>確実に子の方のIDを取る関数をさっき作った。
なんか凄い
全然理解できてないんだけどそれで戻り値がわかるんだね
おっしゃー修行するぞーw
なんとかエラー無しにデータをまとめれるようになってきたんだけど
調べてるときにページの行きすぎを止めれないんだよねw
エラー処理とか分岐とかわかんないしーwww
でも
>>213 がすっごいのを作ってくれたようだ
私はよくわかんないけど後でうちのUWSCちゃんに読み込ませてみるよ^^
いつも悪いね
ありがとう^^
COMインタフェースを利用してもっと便利にUWSCを使いたいのですが、 ググってもCOMインタフェースについてあまり分らないのですが、 詳しいページや書籍等ご存じの方教えていただきたいのですが。
216 :
名無しさん@お腹いっぱい。 :2008/02/18(月) 03:48:29 ID:EJhG70Bd0
質問です。 エクセルから読み取ったデータを元に、 自動にプロフィールを入力してくれるマクロを作りたいです。 そこで問題になったのですが、 サイトから自動的に割り当てられたPASSが入力欄に ●●●●←こんな感じですでに入力されており、 それが邪魔して自分の好きなPASSを入力できません。 どうしたらいいのでしょうか? 元から入力されているPASSを消す方法が知りたいです。 どなたか詳しい方、教えてくださいよろしくお願いします。
>>216 既存テキストを選択状態にして、Sendtextの後半の引数でTrueとかFalseとかいろいろ試す。
または、IE.Document・・・.Valueに代入する。
>>215 俺も知りたい。誰か説明サイトきぼんぬ。
219 :
200 :2008/02/19(火) 11:27:49 ID:EgETKIbh0
>>209 お答えしてくださってたのですね。ありがとう。お礼遅れてすみません。
220 :
名無しさん@お腹いっぱい。 :2008/02/21(木) 09:01:53 ID:QfENpo4n0
乙
python普及してるだろ。uwscよかずっと。
IEでファイルのダウンロードするとき、ゲージのある窓が親なはずなんだけど、 確認メッセージで「保存」クリックしたあと、なぜかID:23のやつが「名前を付けて保存」の子になってる。 最初に同じ名前の窓が同時に出るのを回避しようとしたんだけど、 IDは変わるしプロセスのハンドルも一緒だしスマートな方法が分からない。 最初に作ったときは「セキュリティの警告」が後ろについててなんの問題もなさそうだったんだけど、 警告のないタイプが出るようになったんでウィンドウハンドルで判断しようとしたけどうまくいかなかった。 クリックするたびに0.5秒sleepすればたいていはうまくいくけどまちまちだし・・・ Webページの保存でもプロセスを見て判断しててうまくいったように見えたんだけど、 次の窓が出るまでが一瞬だから、0.1秒のスリープが入るだけでたまたまうまくいってただけのようだ。 結局ウィンドウタイトルの変化をチェックするしかないのか・・・ ID PARENT PROCESS ICON VISIBLE ACTIVE BUSY TITLE CLASS 22 23 3080 0 1 0 0 ファイルのダウンロード #32770 23 -1 3080 0 1 0 0 ファイルのダウンロード #32770 ↓↓↓ 23 24 3080 0 1 0 0 名前を付けて保存 #32770 24 -1 3080 0 1 0 0 ファイルのダウンロード #32770 ファイル−名前を付けて保存 → Webページの保存 22 23 3080 0 1 0 0 Web ページの保存 #32770 23 -1 3080 0 1 0 0 YourFileHost.com - Free hosting for ALL your files S1 - Microsoft Internet Explorer IEFrame ↓↓↓ 21 22 3080 0 1 0 0 Web ページの保存 #32770 22 -1 3080 0 1 0 0 YourFileHost.com - Free hosting for ALL your files S1 - Microsoft Internet Explorer IEFrame
226 :
名無しさん@お腹いっぱい。 :2008/02/22(金) 12:15:07 ID:k1zztVaQ0
227 :
名無しさん@お腹いっぱい。 :2008/02/22(金) 13:26:39 ID:l6900mrp0
今日初めてuwscを知り仕事の単純作業を記憶させ再生して作業してる者ですが他作業しようと別窓開くと止まってしまいます。自分でも調べてるのですがまだまだ勉強途中で差し支えなければ教えてください。例@エクセルキー操作再生時にネット操作or別窓にてエクセル操作等です。
sage忘れてしまいましたすみません
>>227 たとえばメニューなら2度クリックしますが、その操作中に他の窓をクリックすると消えちゃってキャンセルされますよね。
そういうのは
http://www.uwsc.info/download.html の、一番下のツールでメニューのIDを調べてSendMessageする。
キー操作を再生することで自動化している場合、キー入力できる対象はアクティブウィンドウの一つだけだから
他のウィンドウをクリックしてアクティブにしちゃうと操作が中断されちゃう。
SCKEYとかなら操作対象をIDで指定できるけど、sleepを入れないと。
キー操作が早すぎても操作できないから。
>>226 とかみたいにウィンドウがあっちがでたりこっちがでたりするようなやつとか
思い通りに操作できないことがある。
そんな感じで途中で止まってしまうってことがあるんで、
IF文を使ってちゃんとできた場合とできなかった場合とそれぞれ分けてコーディングする必要はある。
マクロに完全に任せてキーとか触らなければ、sleepで十分な時間を取っていれば単純にやることの羅列でもそれなりに使えるけど。
>>229 さんありがとうです。一応ツールでメニューのIDというか黄色い文字でるとこ
まで辿り着き左上に題名(←黄色文字 題名みたいなの)みたいな物がでた所まで行きました。(黄色文字)
そこからがメニューで終了とでるのですが???って感じで・・・(終了whi?)
でも機械音痴な私には凄い進歩でマクロがんばって勉強します。
夜までいじってどうしても解決しなければまた質問させて
ください。恐らくSendMessage←これのやり方が理解できてない(笑)
>>230 付属テキストに書いてありますが、
.uwsファイルの先頭にこの2行を追加し、
DEF_DLL PostMessageA(HWND,Long,Long,DWORD):Bool:user32.DLL
WM_COMMAND = $111
これでメニューを呼び出します。
PostMessageA(IDtoHND(ウィンドウid), WM_COMMAND, 調べたコマンドID, 0)
最初僕も迷いましたが、UWSファイルを直接実行しても窓がすぐ消えるので、
UWSC.exeを起動し、ChkCtlID.uwsファイルを開き、メニューIDを調べたいウィンドウをクリックし、メニューを選択。
っていう手順でやると、コマンドIDがとれるんで、それをPostMessageAの
「調べたコマンドID」のところに入れてやりますです。
もちろんIDtoHND(ウィンドウid)は、そのメニューを持つアプリのハンドルが必要なので、
ID = GetID("InternetExplorer")
とかで取得したIDがあれば、
PostMessageA(IDtoHND(ID), WM_COMMAND, 108, 0)
みたいにできます。
けど、IEとかでなく、メモ帳とかならこんなめんどくさいことをせず、
ClkItem( ID, "ファイル\開く" )
とかだけで開けたりします。
そのメニューが使えるかどうか確かめるには、
http://scripts.web.fc2.com/ に置いてあるGetItem.uwsでメニューアイテムを取得して確かめるのがいいかと。
230です・・・・マクロって凄い便利です。でもでもでも いじる事10数時間・・・・殺意が芽生えてくるぐらい 難しいですねww でも知ってしまったら覚えなきゃ損だしPCスキル向上の為 頑張ります。まず本を買おう そして皆さん親切だから わからなければ教えて君します。 ちょっとスレ違いっぽくなりましたが皆様感謝しております。 そして毎日ココ覗くの日課にします^^^
教えてください。IEをSCKEY(ID,VK_F5)で更新しているのですが、 いちいちウィンドウがアクティブになってしまい処理が重くなり 困っています。バックグラウンドで更新させる事は出来ないでしょうか?
すみません続けて質問お許し下さい。 自作関数の定義の部分でプログラムが終わってしまいます。 例えば以下の文を実行したのですが、msgbox(1)が実行されないまま 終わってしまうのです。 FUNCTION A(B) RESULT = 1 FEND MSGBOX("ok") 何か間違ってますでしょうか?自分だけでしょうか?
236 :
名無しさん@お腹いっぱい。 :2008/02/25(月) 02:33:50 ID:BlXku21t0
>>236 『更新ボタンをクリック』あるいは『F5 キーを押下』なら Refresh メソッドだけでいいんじゃないでしょうか
ttp://msdn2.microsoft.com/en-us/library/aa768258 (VS.85).aspx
> This method is the same as clicking the Refresh button or pressing F5 in Microsoft Internet Explorer.
現在表示されてるページを Navigate するのなら
わざわざ JavaScript の一行野郎を実行しなくても
IE.Navigate(IE.LocationURL)
で出来ますよ
JavaScript の『parent.frames.』は不要だと思います
location だけで window オブジェクトの location プロパティにアクセスできます
更に location オブジェクトには reload メソッドが存在します
238 :
名無しさん@お腹いっぱい。 :2008/02/25(月) 04:26:34 ID:BlXku21t0
>>237 それが、キャッシュから読み込んでくるから更新状況が分からないんだよね。
refresh2で指定できるみたいだけどどう違うのかいまいち分からなくて。
で、自分がキャッシュを読んでるだけなのかサーバーが古いデータしか返してくれないのかも
自分では確認できなくて混乱するんで。
>>237 ああ、そうじゃない。
リフレッシュを繰り返すでしょ。
するとたまに通信できなくなって、エラーになるんですよ。
エラーになってリフレッシュすると、エラーのページをもう一度表示してしまうんで、
目的のページを表示するには、前のページに戻るか、もう一度URLを指定で、
ああ、そういうわけだから少なくともRefreshはだめなんだけど、・・・
>>238 それは知りませんでした
それなら URL を保存しておき Navigate するほうが手っ取り早いですね
Refresh2 はリロードの方法をオプションで指定できるようになってます
指定できるのは以下の定数
typedef enum RefreshConstants {
REFRESH_NORMAL = 0,
REFRESH_IFEXPIRED = 1,
REFRESH_COMPLETELY = 3
} RefreshConstants;
REFRESH_NORMAL:
サーバへ送信するヘッダに "Pragma:no-cache" を含まない
REFRESH_IFEXPIRED:
未実装
REFRESH_COMPLETELY:
サーバへ送信するヘッダに "Pragma:no-cache" を含む
IE で Ctrl-F5 を押下するのと同じ
"Pragma:no-cache" ヘッダは、キャッシュされたコピーを返すのではなく、情報が確実に最新になるようにサーバに命じます
ユーザがブラウザで Refresh するとき、通常、このヘッダを送りますが、いくつかのサーバに問題を引き起こします
location オブジェクトの reload メソッドは
オプショナル引数でキャッシュやサーバからページをリロードするかどうかを指定できます
241 :
235 :2008/02/26(火) 00:17:05 ID:rAAfz3EM0
皆さんお答えありがとうございました。
しかしIE_KAWASE.Refresh2(3)やIE_KAWASE.location.Reload()、IE_KAWASE.REFRESH()
は自分の環境(XPとIE6)ではcomエラーが出ました。
IE.Navigate(IE.LocationURL)を実行すると
http:///を読み込もうとしてエラーと出ます 。
url="
http://www.yahoo.co.jp/ "
IE.navigate(javascript:parent.frames.location='"+url+"'")
を実行すると、'"+url+"'"という変数はないと言われ実行出来ませんでした。
IE.navigate(javascript:parent.frames.location.reload()) では
変数javascript:parentが定義されていませんと出ました。
このスレの上の方で紹介されていた
IE.navigate("javascript:alert(document.lastModified)")
のテストコードはうまく作動するのですが、、。残念です。
>>236 関数の定義は後ですか、、、。分りました。ありがとう。
242 :
235 :2008/02/26(火) 00:43:32 ID:rAAfz3EM0
あ
url="
http://www.yahoo.co.jp/ "
IE.navigate(javascript:parent.frames.location='"+url+"'")
と
IE.navigate(javascript:parent.frames.location.reload())
は()内の""が足りませんでしたね、、。一人で混乱してすみません。
どうもそれで旨く行きそうです。ありがとう。
ああ、ダブルクォート(”)抜けたまま書いちゃってすいません。 × IE.navigate(javascript〜 ○ IE.navigate("javascript:parent.frames.location='"+url+"'") ○ IE.navigate("javascript:alert(document.lastModified)")
>>241 説明が足りませんでした
>>237 は既に目的の URI を IE で開いてあることが前提です
IE.Navigate(IE.LocationURL)
が
http:/// を読み込もうとすることなどから推測すると
ページを表示していない状態でメソッドを呼んでいませんか?
location オブジェクトをいきなり参照できるのは JavaScript の話です
IE オブジェクトから location にアクセスするには
IE.Document.parentWindow.location
としなくてはなりません
OPTION EXPLICIT
DIM url = "
http://pc11.2ch.net/test/read.cgi/software/1200289634/l50 "
DIM ieobj = CREATEOLEOBJ("InternetExplorer.Application")
ieobj.Visible = True
ieobj.Navigate(url)
wait(ieobj); ieobj.Refresh2(3)
wait(ieobj); ieobj.Document.parentWindow.location.reload()
wait(ieobj); ieobj.Refresh()
wait(ieobj); ieobj.Navigate(ieobj.LocationURL)
PROCEDURE wait(browser)
REPEAT
SLEEP(0.1)
UNTIL !browser.Busy AND (browser.ReadyState = 4)
FEND
245 :
235 :2008/02/26(火) 22:00:50 ID:rAAfz3EM0
すみません良く見るとオブジェクト関係でミスしてました、、。 自分でも簡単なサンプル書いて走らすと以下の全てで更新出来ました。 IE.Refresh() IE.Refresh2(3) IE.Document.parentWindow.location.Reload IE.Navigate(IE.LocationURL) IE.navigate("javascript:location='"+url+"'") 更新コレクションが出来ましたが、やはり一番信用があるのは 上から二番目か一番下なんでしょうかね。 皆さん本当に助かりましたありがとう。
いつかqらIEsureになったんだよ
いよー諸君!元気でやっとるかねw
私は相変わらず貧乏暇なし状態(涙
以前ここでIE6からIE7にしたらおかしくなってIE6に戻せなくて困ったって話しただろ
あれ、解決できたんだよねwww
私がノートンゴーバック、ノートンセキュリティー入れてるのが原因なのかもしれないけど
WindowsのコントロールパネルからIE7を削除してもレジストリーいじくっても必ず復活してたのだ
仕方ないのでシマンテックに電話してノートンの一時的なOFF方法を確認して
ノートンゴーバックをOFFにしてもIE7はアンインストールできなかったんだ
(あちこちのサイトでアプリケーションの削除でIE7はアンインストールできるって解答してる馬鹿解答者は嘘つきなんだよね)
実際何回試してもIE7を削除できなかったんだ
ま、前置き長くなってスマソ
私みたいな状況で困ってる人がいたら下記のツールを使えばいいよ
見た目はIE7のままだけどUWSCを困らせる動作は止まった!
一応ざっとでいいから頭の隅っこに覚えておいて損はないと思うよ
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
↓ ↓ ↓ ↓ ↓
自動配布の無効化ツールキット (Blocker Toolkit) は英語版のみの提供ですが、日本語環境でも問題なく動作いたします。
マイクロソフトのページ
http://www.microsoft.com/downloads/details.aspx?FamilyID=4C12D92F-808D-4C21-96CA-DC191A0A8E41&displaylang=ja 一番下のほうにある↓これらも一緒にインストしたよ^^
setup.exeつーのが必要だったけどマイクロソフトのサイト内をくるくる廻ってたら見つかった^^
自動配布の無効化ツールキット (Blocker Toolkit) をダウンロードした人は、次の製品もダウンロードしています。
Windows Service Pack ブロッカー ツール キット
Virtual PC 2007 - 日本語
Windows XP Service Pack 2 サポート ツール
Windows 2000 および Windows XP 用の Windows Script 5.6
Office 2000 アップデート: Service Pack 3 (SP-3)
ページ トップへ
何度もすみません。スレッドとCOMインターフェイスを使って実行すると
以下のエラーメッセージが出ました。
「COM_Error:アプリケーションは、別のスレッドにマーシャリングされた
インターフェイスを呼び出しました」
もしかしてメインで定義されたCOMオブジェクトをスレッドで使うから
怒られているのでしょうか?
例
PUBLIC IE
PUBLIC URL = "
http://www.google.co.jp/ "
IE = CREATEOLEOBJ("InternetExplorer.Application")
IE.VISIBLE = TRUE
IE.NAVIGATE(URL)
REPEAT
SLEEP(0.1)
UNTIL !IE.busy AND IE.READYSTATE = 4
Thread IET()
PROCEDURE IET()
IE.navigate(URL)
FEND
メインとスレッド両方を跨いでCOMオブジェクトを使う方法があれば
教えていただきたいのですが、、。
>>248 メインでクリエイトして、別スレッドでGetするとか。
それがだめならメインでIEオブジェクトを使って、別スレッドではそのIEのIDを使って
ID経由で操作するとか。
IE = CREATEOLEOBJ()
ID = HNDToID(IE.HWND)
ん?
Thread IET(IE)
PROCEDURE IET(IE)
IE.navigate(URL)
FEND
って引数渡しでもだめなのかな?
250 :
248 :2008/02/28(木) 22:53:15 ID:apCasTZq0
ありがとうございます。
>メインでクリエイトして、別スレッドでGetするとか。
それはダメでした。
>それがだめならメインでIEオブジェクトを使って、別スレッドではそのIEのIDを使って
>ID経由で操作するとか。
HWNDというのがあるんですね。IDを使ってどうやって操作するのか分りません。
UWSCの独自関数で使えるIDなのかな、、、。
>って引数渡しでもだめなのかな?
どうもスレッドの中でオブジェクトを扱えない様な、、、?
PUBLIC URL = "
http://www.google.co.jp/ "
IE = CREATEOLEOBJ("InternetExplorer.Application")
IE.VISIBLE = TRUE
IE.NAVIGATE(URL)
REPEAT
SLEEP(0.1)
UNTIL !IE.busy AND IE.READYSTATE = 4
Thread IET(IE)
PROCEDURE IET(IE)
msgbox(IE.DOCUMENT.BODY.INNERTEXT)
FEND
251 :
248 :2008/02/28(木) 22:53:48 ID:apCasTZq0
そもそもスレッドの中でオブジェクトを生成する事さえも出来ません、、、。
thread IET()
PROCEDURE IET()
URL = "
http://www.yahoo.co.jp/ "
IE = CREATEOLEOBJ("InternetExplorer.Application")
IE.VISIBLE = TRUE
IE.NAVIGATE(URL)
MSGBOX("OK")
FEND
>>251 あ、メインが終わるとスレッドも終わるからね。
簡略化してるだけならいいけど。
とりあえず待ちの処理をいろいろ入れてみた
thread IET()
sleep(3)
str = input("入力してください。")
for i = 0 to 1000
next
MsgBox(str)
// ここでメインの終了
PROCEDURE IET()
FEND
253 :
248 :2008/02/29(金) 00:56:35 ID:6G2Wsix70
ありがとうございます。 メイン終わったらスレッドも終わる。気づきませんでした、、、、。 取りあえずsleepでメインを延命させ、引数はIEをわたしましたが、 やはりcom_errorが出ました。メインでオブジェクトを作り、 スレッドでそれを操作する事は出来ないのかな。
はじめまして、いつもありがたく使わさせて頂いてます 質問なのですが、サンプル集などにある【開いているウインドウを全て閉じる】スクリプトを実行すると 常駐アプリまで終了してしまう事があります。これを回避したいのですが、 // 開いているウインドウを全て閉じる for i = 0 to GETALLWIN()-1 // 全てのウインドウIDをゲット(ALL_WIN_ID[]変数に入る) if STATUS(ALL_WIN_ID[i], ST_CLASS) = "Shell_TrayWnd" then Continue // タスクバーはスキップ if STATUS(ALL_WIN_ID[i], ST_VISIBLE) then CTRLWIN(ALL_WIN_ID[i], CLOSE) next if STATUS(ALL_WIN_ID[i], ST_CLASS) = "Shell_TrayWnd" then Continue // タスクバーはスキップ ↑この行の"Shell_TrayWnd"の部分を変更して追加?などと思っているのですが、ヘルプを見てもよくわかりません・゚・(ノД`)・゚・ 具体的なアプリとは極窓、ObjectDockなのですが、常駐以外にも通用する回避方法を教えて頂けると嬉しいです よろしくお願いします!
>>254 Shellはタスクとか管理するプログラム。
TrayWndはタスクバーのこと
>>255 極窓、ObjectDockなどの一般アプリを管理するプログラム
また”TrayWnd”に該当する記述(単なるアプリ名なのか、はたまた…)
を代入すればいいということですよね?
それを調べる術が分からないんですが…
257 :
名無しさん@お腹いっぱい。 :2008/03/01(土) 18:30:42 ID:9+P79t8n0
>>256 調べる方法って、"Shell_TrayWnd"ってサンプルを使ってググるか
動いてる全部を拾ってリストを表示するかだよ
ST_VISIBLEがそうだったかは知らないけど、画面を持っているやつを消せばいいと思うよ。
>>256 STATUSで取れる全部をリスト化して、
自分が消したいやつを選んで、
消したいのと消したくないのを区別するデータを選んで、それを条件に組み込めばいいんだ。
そのSTATUS(ALL_WIN_ID[i], ST_CLASS)を表示させてみれば分かるだろ・・・
>>257-259 ありがとうございます!できました
サンプルの【全ウィンドウのタイトルとクラス名を取得する.UWS】で生成されるリストから行末尾" , @"を
if STATUS(ALL_WIN_ID[i], ST_CLASS) = "@" then Continue // @はスキップ
とし、
>>254 の式に代入ですね!
ただリストの段階でのピックアップがアプリによっては面倒ですね…
Janeなんかは1つでも、ObjectDockは4つ必要でした(もしかしたらもっと少ない?)
効率的な抽出方法を模索してみます、ありがとうございました。
スレッドを色々試していて、変な動作に気づきました。下の例ですが、
getidの部分で処理が固まります。でふいに通過したりするし、、、。
後ウェイトの処理の所で固まる事もあります。何か間違えているでしょうか。
thread test()
SLEEP(60)
PROCEDURE test()
while true
Print "ループの中に入りました"
ifb -1 = getid("google")
Print "getid処理終わりました"
IE= CREATEOLEOBJ("InternetExplorer.Application")
IE.VISIBLE = TRUE
IE.NAVIGATE("
http://www.google.co.jp/ ")
REPEAT
SLEEP(0.1)
UNTIL !IE.busy AND IE.READYSTATE = 4
endif
IE.navigate("javascript:location='"+"
http://www.google.co.jp/ "+"'")
REPEAT
SLEEP(0.1)
UNTIL !IE.busy AND IE.READYSTATE = 4
sleep(1)
gettime()
Print G_TIME_SS
wend
FEND
262 :
261 :2008/03/02(日) 00:54:50 ID:Yi/U7J7N0
半角のスペースがみんな消えてる、、。見にくくなってすみません、、。
>>261 GETID() で待ち時間を指定したらいいんじゃないでしょうか
GETID("google", "IEFrame", 0.1)
264 :
名無しさん@お腹いっぱい。 :2008/03/02(日) 11:13:56 ID:3bX/dcQb0
265 :
261 :2008/03/03(月) 00:10:03 ID:HohBPKNx0
>>263 ありがとうございます。そ、その様です、、。何のためにあるのか
分らなかった、、。
uwsc上からファイル内に特定の文字があるか高速に検索する方法って何かありますか。 なんとなく専用検索ソフトより遅い気がするのですが。
>>266 そりゃあスクリプトなんだから専用検索ソフトより遅くて当たり前でしょう。
んで漢字コードとかも自動認識だし余計時間もかかりますよ。
268 :
名無しさん@お腹いっぱい。 :2008/03/03(月) 15:44:42 ID:JPCXwBcX0
c言語かアセンブラでDLLをつくれ
その専用ソフトを呼び出すのが本筋
いよー諸君久しぶり〜^^
元気でやっとるかねw
私が聞きたいこととよく似た質問を誰か先に聞いてるねw
>>266 私は相変わらずですよーwww
タグをコピリンしたいんだけど
タグとその上1行をコピペしたいんだよね
例えば<a href 〜 </a>なんだけど
その上の1行も一緒にコピリンしたいw
ソースのどこにあるかわからない <a href を探して
その上の行のhomeから<ahref えを超えて </a>までを少々コピリンをば^^
下の2行みたいな感じw
恵美の青空日記2008年3月4日
<a href="
http://ooommmeeekkkooo ">今日は青カン(ウフはーと</a>
誰か教えて下さい
いつも悪いね^^;
今度こそカレーおごらせて下さい
連カキスマソ
>>270 です
できればフォルダー内にあるファイル全部一括で・・・
いやーここまで厚かましいと自分で恥ずかしいねwww
あ、<a href の上の行にある文字列は
英数字、漢字、ひらがな、カタカナ、空白、なんでもありで何文字かもわかんない^^;
ちょっと無理っぽいかな(´;ω;`)
誰かおながいしますよ(;´д⊂ヽ
272 :
名無しさん@お腹いっぱい。 :2008/03/05(水) 03:17:55 ID:wRSS+jLU0
正規表現で文字列を抽出できるDLL、文字が存在するか調べられるDLLを作ってやるよ
273 :
272 :2008/03/05(水) 06:22:57 ID:wRSS+jLU0
>272 別にわざわざDLL作らなくても VBScript.RegExp使えばいいんじゃね?
>>270 ”<”これを区切り文字として文字列を分割し、一塊ずつ取り出す。
サンプルは2chのスレの一覧からの切り出し
URL中のダブルクォートとかを拾わないために、>カッコを含む出来るだけ長いキーワードを使った方が良いと思う。
できるだけ長いといっても、/l50 みたいに必ずつくやつ。
2chは機械的に作り出したリンクだから間違いなく取り出せるんだけど、
手入力だと ” と > の間にスペースが入ってたりまちまちなんで、
それを自動で判断するとしたら、正規表現とかいうややこしいのを使う必要がある。
src = IEGetSrc(IE, "body")
// SendSTR( メモ帳, src + "<#CR>", 1, false, false )
for i = 1 to 100
str1 = token( "<", src, true, false )
if "" = str1 Then break
// 切り出し
str2 = BetweenStr( str1, "a href=<#DBL>", "/l50<#DBL>>" )
next
ちなみに、文字列の先頭からの切り出しは、自分で文字列を追加。
BetweenStr( "先頭" + str1, "先頭", "/l50<#DBL>>" )
文字列の最後を切り出すには
BetweenStr( str1 + "最後", "a href=<#DBL>", "最後" )
あと、UWSCでは1文字ずつの取出しができないと思ってたんだけど、copyでできた。
これと、VK_の定義が文字コードと一致する仕様を利用して、
文字列→キーで入力を作った。
文字列が配列になってるのは、リストから選択したやつを使ってるだけなんで、普通に半角英数文字列入れたら動きます。
for i = 1 to length(PassList[SlctNum])
sleep(0.01)
char = Copy( PassList[SlctNum], i, 1 )
if !CHKNUM(char) Then char = STRCONV(char, SC_UPPERCASE)
KBD(ASC(char))
next
sleep(0.2)
ちなみにループ中とループ後のsleepは必須。
これがないと入力したキーが一部無視され、短くなる。
sleepなしに数箇所の入力をすると一つも入力されないので、
フォーカス移動の前後にも十分なsleepが必要。
これを使ったサンプルがある
対象がVMware+オンラインゲームなので動かせる人は少ないと思うけど、
コードとかやり方は参考になるかもなので見てみて。
http://scripts.web.fc2.com/VMware/ ここの、自動ログイン。
自分で使ってるけど、パソコンが重くなってるときにクリックできない場合があるのと、
Windowのサイズを間違ったときにフォーカスが合わなくて入力できない場合があるけど
フォーカスが合えばしっかり入力できますよ。
277 :
272 :2008/03/05(水) 07:42:00 ID:wRSS+jLU0
>>274 そんなのがあるんだ しらなかった
バグはUWSCと正規表現DLLの組み合わせによって起こるらしいことがわかり
回避する手立てはなさそうなことは判明しました
ちゃんと動くやつがあればそれを使えばいいんだけど
>>277 UWSCで受け取る領域をあらかじめ割り当てないとだめですよ?
279 :
272 :2008/03/05(水) 08:41:42 ID:wRSS+jLU0
>>279 ありがとおおおおお!
マジで<a href= の部分取り出せた^^
>>279 さんスゴス(驚いた!
あのーマジで言いにくいんだけど
<embed>abcdefg</embed>ではできないですか?
ホントはサーチしたいのは<embed>タグなんですよ^^;
ここでヒントもらって自分用に書き直そうと思ってたんだけどできないよー・゚・(ノД`)・゚・
何故なんだろか??
<embed>タグをサーチさせると
↓
「empty
-62366448文字目に出現します」
のエラーになっちゃうんだよね^^;
もう正直に言っちゃうと<embed>タグは約5000個集めたんだけど使えない^^;
秀丸のgrep機能ですぐ5000個のタグはバッチリ抜けたんですよ
でもタグに応じた文字が飛んじゃってる^^;
本当に申し訳ないんだけどお手数お掛けして恐縮しまくりなんだけど
お手すきのときで結構ですので例のUWSファイルの3行目と4行目を
<embed>タグに対応したものを教えていただけないでしょうか??
.dllはあのまま同じものを使えるんですよね
ホントにゴメン
すいませんけどおながいしますm(_ _)m
281 :
272 :2008/03/05(水) 23:20:14 ID:2mDDoFQk0
レスない・・動かないですか?
すみません。 excel = CREATEOLEOBJ("EXCEL.Application") excel.VISIBLE = TRUE excel.workbooks.add() で作ったエクセルのオブジェクトから、ウィンドウの タイトルを得るにはどうすればよいでしょうか?
>>282 IEなら、
status( HNDToID( IE.HWND ), ST_TITLE )
284 :
282 :2008/03/06(木) 23:07:04 ID:VQYLCHRN0
>>283 ありがとうございます。
status( HNDToID(EXCEL.HWND ), ST_TITLE )
でも行けました、、、。
タスク完了通知メール送信設定ってできますか? もしくはログを自動で保存とかありませんでしょうか・・・
>>285 ログの保存ならコマンド実行が確実。
DOSプロンプトから
C:\> ECHO Hello! > CCC.txt
C:\> ECHO Hello! > CCC.txt
だと新規ファイル
C:\> ECHO Hello! >> CCC.txt
だと既存ファイルに追加
だったと思う。
UWSCにメール機能はないけど、COMでつかえるメールがどこかにあるらしい。
むずかしくてやめたけど。
ブラウザ利用で、自動ログイン自動メール送信なら可能。
時間かかるし、重い処理してると失敗すると思うけど。
おぱよ^^ ちょっとしつこくてスマソ <object>〜</object>の取得はどうすんの? いつも悪いね^^
条件分岐で違うブロックにジャンプさせる GOTOみたいなものはどう記述したらいいんでしょうか? また、ラベルに代わるようなものはありますか?
>>289 ifb ?? then
??
else
??
endif
> GOTOみたいなもの
UWSC本家の掲示板に最近あった。
>>290 掲示板検索してみたらGOTO文にかわるものはないみたいですね
他のコードで代用もできるみたいなので
ありがとうございます。
いまどきGOTO実装してる言語のほうが珍しくね? 使う必要ないし。
そういう事じゃなくて
>>289 はジャンプしたい場所にある機能を
独立したプロシージャにすればいいだけだよ。
例外処理用の関数もあるしGOTO+ラベルいらねえな
そういえば例外処理ついてたね
確かにテスト時や例外エラー時だけはGOTOラベル使いたい時がある。 それが無かったら見た目がごちゃごちゃになって見にくい。
FOR文の中で変数をかえていけないの? kakurenbo = 1 for kakurenbo = 1 to 30 s = IEGetData(IE,"TAG=SPAN","kakurenbo") // kakurenbo = kakurenbo + 1 print s next ページ内で取りたいタグネームは決まってるんだけど コロコロ番号が変わるんだよね(kakurenbo)には本来、数字が入るんだけど 同じサイト内なのに数字がコロコロ変わるんだよ(X X) んで変数使って”kakurenbo”を1〜30全部取得してみたいんだけど For文の中では変数変わんないの? 他に何かいい方法あったら教えて下さい いつもの小島ちゃんです^^ よろしくー
ん? 間違えたプリントしてからkakurennboを変更しなきゃw これです 今、間違いに気づいたのでちょっとテストしてくる 結果が良好だったら報告するので 報告がない間はこの質問は有効ということでよろちくびw kakurenbo = 1 for kakurenbo = 1 to 30 s = IEGetData(IE,"TAG=SPAN","kakurenbo") // print s kakurenbo = kakurenbo + 1 next
こんちわ連投スマソ小島ちゃんデシ だめだー・゚・(ノД`)・゚・ 変数は変わんないままUWSCがタイムオーバーエラーになっちゃうよ ページ内のタグネーム全部取ってみることはできないですか? よろしくお願いしますm(__)m
何度も連投すいません小島ちゃんです 結局ソース直読みしてきたんだよね^^; こんなかんじなんだけど↓ 「こんにちは小島ちゃんです^^」の部分をテキストとして保存したいんだ ---------------------- 取得したい部分のHTMLはこんな感じ <div id="kojima"> <span >こんにちは小島ちゃんです^^</span> </div> ---------------------- やったこと@ s = IEGetData(IE,"TAG=SPAN","kojima") // print s 結果@ uwscがタイムアウトエラー(プリント表示なし) ----------------------------------- やったことA s = IEGetData(IE,"kojima") // print s 結果Auwscがタイムアウトエラー(プリント表示なし) ----- 「こんにちは小島ちゃんです^^」をテキスト保存の方法 どなたかわかる方おながいしますm(__)m
小島ちゃんが女の子だったら手取り足取り教えてあげる^^
小島ちゃんレポ
やったことB
s = IEGetData(IE,"<div id=<#DBL>kojima<#DBL>>") //
print s
結果B UWSCがタイムアウトエラー(プリント表示なし)orz
小島ちゃんただ今UWSCのヘルプと格闘中w
>>301 過去すれ嫁www
>>302 読んだけどわかりませんでしたので諦めます^^
ヘルプはわかりづらいからぐぐったほうがいいよ^^
テストしてる間にUWSCから「関数BusyWait(IE)がありません」ってでてくるんだよね なんでだろか?? さっきまで動いていたのにね 一度パソコンリセットしてみよか?
ダメだ・゚・(ノД`)・゚・ なんか頭の中がおかしくなってきたw UWSC.LOGより 08/03/12 12:06 Uスクリプト: 関数: BUSYWAIT がありません 4行目: BUSYWAIT(IE) 08/03/12 12:07 Uスクリプト: 関数: BUSYWAIT がありません 4行目: BUSYWAIT(IE) 08/03/12 12:08 Uスクリプト: 関数: BUSYWAIT がありません 4行目: BUSYWAIT(IE) 08/03/12 12:14 Uスクリプト: 関数: BUSYWAIT がありません 4行目: BUSYWAIT(IE) 08/03/12 12:15 Uスクリプト: 関数: BUSYWAIT がありません 4行目: BUSYWAIT(IE) 08/03/12 12:16 Uスクリプト: COM_Error:例外が発生しました。 146行目: UNTIL (! IE.busy) AND (IE.readyState=4) ちょっと用事に出かけてくるね^^ その予定って本当は午前中に済ませる予定だったのだがwww みんなぁおらに力を貸してくれ おながいしまうm(__)m でわ行って来ます^^
307 :
名無しさん@お腹いっぱい。 :2008/03/12(水) 16:38:50 ID:Qmf9SonL0
こんばんは! ^^ 本家の過去ログ見てたらもの凄いツールを配布されてる方が居た! そのツールのお陰で問題解決できそうだよ^^ ここにも紹介したいくらいなんだけど 勝手にリンク貼っていいのかわかんないのでやめておくけど ホント感謝ですよ 本当にありがとうございます!詩人さんm(__)m
>>308 そんなすばらしいものを見つけたんならリンクを貼りまくってGoogle検索の上位に上がってくるように配慮すべき
>>309 お礼のメールを出しておいたんだけど
初めてなのでそこまで話できなかったよ
全く知識0でここまでやってこれたのみんなのお陰だよ^^
作者のumiumiさんはじめUWSC繋がりで私にアドバイスくれた方達のおかげだよ(;´д⊂ヽ
みんなマジでありがとぉー
これかたもよろしくー
なんか日記化してるな...
312 :
名無しさん@お腹いっぱい。 :2008/03/13(木) 02:00:43 ID:j6+mhtLj0
最近、「UWSCの小島です」って色んな方にメールしますタ^^; おやしみー
あ〜眠すぎて間違えた 「UWSC(スレ)の小島です」ってメール出してます^^; ちかれた〜おやすみー^^;
エクセルのセルのデータを取得してブラウザ起動してそれにURL渡す(次のセルデータに行って繰り返し) このような場合、どうやったら早いでしょうか
>>316 ループカウンタの使い方が悪い。
pg=0
pg = pg + 10
while pg <= 300
wend
または
for pg = 0 to 300 step 10
next
あと、ループにこだわる必要はない。
ためしにやるだけなら直接書く。
データの加工は段階的に試す。
そして一つ一つを実行したら十分な時間を空ける。
中身がちゃんとできたらループに入れる。
pg = 0
url = "
http://www.google.co.jp/search?q=UWSC&hl=ja&lr=&start= " + pg + "&sa=N"
print url
IE.Navigate(url)
sleep(3)
ループごとにメッセージ表示でとめる方法もある。
if msgbox("メッセージ", BTN_YES or BTN_NO)
ヘルプのサンプルコードを見ること。
ヘルプの使い方は、関数とかなら「キーワード」で検索。
定数とかは「検索」で検索
分類で見るときとか一通り確認したいときに目次を使う。
訂正 pg=0 while pg <= 300 pg = pg + 10 wend
>>318 さん
即レスありがとうございます!
貴重なご指摘重ねてお礼申し上げます^^
ループ参考になおさせて頂きます^^
それからURLの件もありがとうございます!
まだまだ先は長そうなんですが皆さんのお陰で少しづつですが前進できています
ありがとう!! ^^
PS:先ほどの読み込み違反の原因がわかりました
検索結果をプリントしてたんですが
上から順番に読み込んでは戻って次のところへってやってるうちに
検索結果が変わっちゃうときがあるみたいなんです
その時に print str の部分が読み込み違反になってUWSCのerror画面が出るみたいなんです
対策方法は思いつかないので取り合えずいまはこのままテスト続行してみます
細かいところまでホントにありがとうございます
でわ修行続けますね^^
>>318 さん
ありがとうございます!
無事ページを移行することが出来るようになりました^^
まだまだ先は長そうなんですけど
今日の一歩は本当に大きな一歩のような気がします
本当にありがとうございました!
まだうwscから出る読み込みエラーの対処方法はわかんないけど
頑張ります^^
あ、それからさっき接続先のサーバーから下記のような文字が帰ってきてエラーになりました
スリープをもっと入れたらエラー回避できそうでしょうか?
---------------------------------
500 Internal Server Error
問題が発生しました。
対応を開始します。 問題 をカスタマー サービスに報告してください。
Also, please include the following information in your error report:
この下に暗号文のような意味不明な英数字が40行ほど続く。
ー----------------
スリープで回避できるかな?
それとも、また検索時と実際にページにアクセスしたときのずれなのふぁろうか??
とにかくみなさんありがとうです
これなんだよね我が家のUWSCさんはよくこれなるんですよ 多分、検索結果とページを読み込みにいった時に既にそのデータが無くなっているか 順番が変わってしまっているのかという気がするんですが どうすればいいのか( ゚д゚) (゚д゚ )ワカラン ------ 08/03/13 18:15 Uスクリプト: COM_Error:モジュール 'UWSC.EXE' のアドレス 00527A24 で アドレス 00000000 に対する読み込み違反がおきました。 36行目: STR = ":"小島ちゃん^^ + IE.document.getElementByID["kojima"].innerText + "<#CR>" -------- リターンしてすぐゴーバックすれば復旧しそうな気がするんだけど if errorのあとどう書けばいいのか? わかんないんですよ(涙 また過去スレ読ませてもらお^^; いつもありがとう
>>319 strが空っぽのときにprintするとエラーになるのかもね。
僕はprint使わずに、メモ帳に書いてるからそういう経験あまりない。
回避するには、
if len(str) Then print str
とかしたらいいかも。
>>322 さん
なるほど読み込むものがない可能性もあるよね^^
そのif文頂きます!
ありがとう本当に助かってます
私一人では本屋さんに行ったり図書館に行ってもあまり進まなかったんです
(なんせ覚えはよくないほうだからねw)
でもみなさんのお陰で大きな一歩を前進できました
ホントありがとう
まだまだ修行しますのでご指導よろしく^^
UWSCなら本よりググったほうが情報多いでしょ
UWSCを最近知ったのですが、当方前にpythonのマニュアルを少し見てループや条件分岐の仕組みを少し理解した位でまったくの素人です。 UWSCに関してググってもサンプルコードだけで、 基本的な事を解説してるサイトが少ない為、まず小林シンヤさんの本を買いました。 VBスクリプトなどを理解したらUWSCも扱いやすいでしょうか? この機会にスクリプトの勉強をしたいのですが、その他に勉強になるような言語はありますか?
>>325 Pythonの方が絶対使いやすいし、
将来サーバサイドスクリプトを作るときにも役立つし絶対お勧め。
Win32ライブラリもかなり豊富。
Win32特化ならAutoIt32がお勧め。UWSCと同じようにCOMとの強調もできる。
ただし海外モノはUnicodeが扱いにくい。
Rubyも良いかもね。
>>326 Pythonおもろいわ。Rubyもいいんだけど、なんかすっきり書ける。
この辺りは好みで分かれるんだろう
Tabkeyを1秒間隔で20回連続でクリックする簡単な命令あれば教えて下さい
330 :
名無しさん@お腹いっぱい。 :2008/03/14(金) 23:53:33 ID:qcKgsiwY0
これはいったい何のソフト? 張ってあるリンクからHPとんで調べようと思ったけど ウィルスバスターが邪魔するからちょっと警戒してるんだ。
>>330 別に要らないだろ・・・危険なんだから見ない方が
教えてください。以下の方法でメインとスレッドを同期させようとしましたが、 途中で止まります。どこかおかしい所があれば教えてください。 PUBLIC cnt PUBLIC testS PUBLIC sleeptime = 0.01 THREAD testS() for cnt = 0 to 100000 //メインループ開始 while !(testS = "READY") //スレッドがREADYするまで待機 sleep(sleeptime) wend testS = "GO" //スレッドにGOの合図 while !(testS = "WORK END") //スレッドがWORK ENDするまで待機 sleep(sleeptime) wend testS = "RETURN" //スレッドにRETURNの合図 cnt = cnt + 1 next //メインループ終了
//続き、、、 PROCEDURE testS() //スレッド定義 while true //スレッドループ開始 ptestS = "READY" //メインにREADY完了の合図 while !(testS = "GO") //メインのGOの合図待ち sleep(sleeptime) wend print cnt //WORK testS = "WORK END" //WORK ENDの合図 while !(testS = "RETURN") //メインのRETURNの合図待ち sleep(sleeptime) wend wend //スレッドループ終了 FEND もし何か良い同期の方法があれば教えてください。
すみません、、、、、 ×ptestS = "READY" //メインにREADY完了の合図 ○testS = "READY" //メインにREADY完了の合図 自分の環境ではだいたいcntが1000までで止まります。
先日、私が言ってたもの凄いツールなんだけど あまりにも強烈でそのファイルばっかりあちこちで使ってたんよ^^ まぁ調査系のファイルなんだよね で、そのファイルと他で探してきたサンプルファイルを合体させると超凄いことになるw はずなのに・・・ callしたらなぜか1行目のIEが変数定義されていませんってなる んでその超凄い調査系のファイルをCALLしないようにすれば治る ん〜〜 非常に美味しそうなこと思いついたのに残念でしゅ^^; 私はマクロの勉強中で初心者なんだけど自動マクロってオモシロイよね あーCALL・・・
336 :
332 :2008/03/16(日) 01:34:46 ID:7nlFsKrV0
>>332 ダメですしばらくするとやはりtestSにゴミが入ってエラー出ます、、。
不思議ですね。
>>336 変数名と関数名が同じだとしたら問題じゃね?
AutoItXにUWSCのChkImg相当の機能って無いですかね?
なんでここで聞くの?
>>338 たしかautoitxはwshとかからautoit32の機能を使うためのDLLだろ?
uwscから使えばいいんじゃね?
ありがとうございます
主ファイル名の末尾が数字であるものを検索したいのですが 検索結果が思い通りにいきません。 例えば、getdir(xxx,*1.txt) とした場合に、123456789.txt や abcdefghijk.txt といったファイルも検出されてしまいます。 何がおかしいのか分かる方がいらっしゃいましたらご教授お願いします。
>>342 Windowsのバグ(仕様)。
コマンドプロンプトで同様にやってみると判る。
SFN形式で"xxx~1.txt"みたいのが引っかかるから。
最後が数字の場合はとりあえず全部拾ってからregexpなりで検索した方がいい。
※ひょっとしたら解決方法もあるかもしれんが、
少なくともuwscでは直接サポートしていない。
俺ならgetdir(xx,"*.txt")でtxtファイル名を全部取得してから ファイル名の文字列から ".txt"の前の文字を取り出してそれが数字"0-9"なら該当ファイルとして判断する、 という具合にする
345 :
342 :2008/03/16(日) 20:14:08 ID:sydmBoC60
>>343 早速の回答、ありがとうございます。
正規表現は自分には敷居が高いっぽいので、getdirではすべてのファイルを取得しておいて
最後が数字かどうかは別スクリプトを書いて判断させるようにします。
その例に絞れば ”*1.txt” でリストを取得して 拡張子の前のファイル名の最後が”1”じゃないのをはじけばいいね。 GetDirやったあと…↓みたいな? For i= 0 to Length(GETDIR_FILES)-1 str= GETDIR_FILES[i] If Pos(”1.txt”,str,-1)=0 Then Continue Print str Next
347 :
332 :2008/03/16(日) 21:46:00 ID:7nlFsKrV0
>>332 分りました。testSに合図を文字列で送っていたのですが、
数値にすると転けなくなりました。インタープリターが
処理について行けなくなる様ですね。でもスクリプトが
見づらくなるなあ。
>>346 短縮される場合、~(チルダ)数字.拡張子ってなるから、
str = Between(文字列, "~", ".txt")
とやって、strが数字文字列かをチェックすればほとんどの場合でいいんじゃないかな。
もちろん、直接チルダ+数字とかいう名前を指定してたらはじいちゃうけど、
そんな名前をつけるやつが悪いわけで。
349 :
342 :2008/03/16(日) 22:43:45 ID:sydmBoC60
あわわ、親切な人がいっぱいだ。 for i=0 to getdir(xx,"*.tib",false)-1 if chknum(copy(GETDIR_FILES[i],length(GETDIR_FILES[i])-4,1)) = true then ほにゃらら next で完了しました。thx!
教えてください。 try except を使って、エラーが出たらスクリプトを再起動させたいのですが、 callで自分自身を呼び出すと当然多重定義で怒られます。どうすれば良いで しょうか?
>>350 try〜は使ったこと無いが…
call ”自分自身”
↓
Exec("uwsc.exe 自分自身.uws")
exit
じゃ駄目?
ありがとう。 Exec("uwsc.exe 自分自身.uws") っていう書き方が出来るんですね! 今テストでエラープログラムしてみたんですが、最後にexitexit 書き忘れてuwsc無限増殖してます。システム止まる前にお礼します。 さようなら。
ワロタw
いよー諸君^^
元気でやっとるかねw
今更ながら自分の無能振りを再確認できる事実をただ今わかったw
超亀レスですが
>>272 さん本当にマジでありがとう!
テストでは私のターゲットとするものがエラーになってションボリしてたんだけど
これを応用すればよかったんだ!
ヒントは既にだしてくれていたんだ
本当にありがとうございましたm(__)m
たった今、活用することに成功!
>>272 さん
遅くなりましたが心からお礼申し上げます
ありがとうございました!!
昨日tryの事でお聞きした者ですが、またで申し訳ないのですが、 TRYがループやブロックを跨いでいる、もしくはブロックの対応が取れていない というエラーが出るのですが、ループは跨いでいないので、ブロックを跨いでいるか、 もしくはブロックの対応が取れていないのだと思いますが、ブロックとは何でしょうか?
356 :
名無しさん@お腹いっぱい。 :2008/03/18(火) 17:58:20 ID:juIaKe4V0
UWSCのクラスから、オブジェクト指向を学ぼうかと(本格的にではなく) 思っているんですが、 基本的にはウィンドウ操作が目的のUWSCでどんなクラスを作ればいいのかよくわかりません。 とりあえず入会とかの自動投稿データを連想配列使っているので それのデータの保管と取り出しをクラス化してみようかと思いますが・・・ あと、プロ版でもないのにWindowsの画面を作れないのは分かってますが、 グラフィックライブラリを使ったそういうのがあれば教えてください。
uwscはオブジェクト指向ではないので学ぶのはムリです
なにかと最近タイミングの悪いことが続く小島ちゃんです^^ こんばんはwww FOPENについて聞きたいんだけど FOPENについてなにやら難しそうな話をしてたのでカキコしないで退散してきましたよw ヘルプに書かれてる「ファイル名」とは場所の指定とかしなくていいの? c:\にあるtest.txtを読み込んで1行目と2行目をメモ帳に書き込みたいんだけど できねー・゚・(ノД`)・゚・ ほとんどサンプルのコピペなんだけど3行目で行き詰ってしまったよ^^; TEST.TXT : 定義が間違ってます←UWSCさんがお怒りですw id = FOPEN("TEST.TXT", F_READ or F_WRITE) For MODE = 1 to FGET(id, -1) TITLE = FGET("TEST.TXT", 1) //ここでエラーになるんよ(;´д⊂ヽ HONBUN = FGET("TEST.TXT", 2) next C:¥とか場所は書かなくていいんのかな? どなたか優しい方お願いします
ヘルプ見れば分かるでしょ。
戻値 = FGET( ファイルID, 行, [列, ダブルコーテイション] )
なんのためにID取ってるのかと。
ていうかループで行数取るときはIDて書いてるのに・・・
ディレクトリは、何も書かなければカレントディレクトリでしょう。
>>357 手続き型だけどオブジェクト指向でやれるよね?
こんちわ^^
>>359 さんレスありがう小島ちゃんです^^
お陰さまで3行目をクリアーできたよ
まだ結果が思ったように行かなくてちょっと困ったチャンです^^;
C:\にあるTEST.TXTをカット&ペーストしたいんだけど
FGETしてないみたい
TEST.TXTのエンドに123456って書き込むんだよね
メモ帳立ち上げて貼り付けるテストしてみたんだけど
1行目2行目をクリップボードに取り込んでいないみたいFGETが間違ってる??
--------
id = FOPEN("C:\TEST.txt", F_READ or F_WRITE)
if id < 0 then EXITEXIT
A = 1
For A = A to 5 step 1
FGET(id, -1)
Fget(id,A)
Fput (id,A)
A = A + 1
Fget(id,A)
Fput (id,A)
A = A + 1
NEXT
----------
あとファイル名に日時を入れたいんですよ
こっちもも失敗続きなんだよね(x x)
TIME = G_TIME_YY4 + G_TIME_MM2 + G_TIME_DD2 + G_TIME_HH2 + G_TIME_NN2
SCKEY(GETID("#32770"),VK_K,VK_J,VK_M, "+TIME+" )
どなたか教えていただけませんかお願いします
>>360 何土地狂ってんですか。
SCKey()はKBD()と同類で、ただ単にCtrl+Cとかいう組み合わせキーを操作できるってだけで、
文字列を送信するためのものじゃありません。
ちゃんとこっちを使いましょう。
SENDSTR( ID, 文字列, [番号, 送信モードフラグ, ACC指定] )
関数を忘れたらヘルプの解説のほうを検索してみるとか
過去に作ったやつを参考にするとか・・・
IEのJavaScriptでURLをつなげる部分を勘違いしたんでしょうけど
"+TIME+"
っていうのはそのままの文字列になってしまいます。
IEのところでやってたのは、何かって言う文字の間にURLをはさむっていうやつです。
"何か" + url + "何か"
>For A = A to 5 step 1
>FGET(id, -1)
・・・
FGET(id, -1)は行数です。
最後の行とか全部の行を見ないなら関係ないですね。
行数分繰り返すって書いてたのは、、、
>For A = A to 5 step 1
>A = A + 1
>A = A + 1
>NEXT
・・・あの、無理にループしなくてもいいんですよ?
FORのループカウンタをループ内で変更するのは最悪の方法です。
http://www.google.co.jp/ なんかグーグルが使いやすくなった。
GoogleのOfficeはバグだらけって話だったけど、トップページから呼びやすくなってるし
データもGoogleに保存できるんだろうし(使ってないから知らないけど)
個人的なものでスクリプト組むんなら、MS Officeが入ってない環境でも使える
GoogleDocumentなんかいいんじゃないかと思う。
まあ、
OLEの機能を使うにはローカルにインストールされてないといけないから、
IEの中のアプリの操作は、かえって使いにくいかもしれない。
スクリプトの待ちも回線状況次第だし、いつまで待てばいいのか調べようがないし。
>>361 さん
いよー^^
小島ちゃんです
お忙しい中、ご解答頂きありがとうございます
その行単位なんだけど先に大切なことを調べるのを忘れてた^^;
エディター式とかワープロ式とか言うらしいんだけど
改行コード単位で2行づつ切り取りたいんだ
さっきもあるエディターのアドインで
禁則処理とか調べてツールををダウンロードさせてもらって
試してみたんだけど
設定が良くわかってないからなのか上手くいかなかった
ちなみにエクセルの分割処理で有名らしい
分割君ってフリーを先ほど試させてもらったら
7分程度で固まってエラーになってたw
1万行(約4M)くらいのファイルが多いんだけど
大きいものになれば4万行(16M)くらいのもある
1000行程度10個に分けてからやってもいいんだけど
最後はそうなるかも・・・
これらをすべて改行コードでの2行で分割したいんだ
1行で(1つ目の改行コード)まで半角で400から500くらいかな??
FGETって改行コード単位で取得できるのか調べないといけなかった(x x)
とにかくありがとでした^^
>>363 1万行のファイルを2行ずつでファイルに分割するとかアホみたい・・・
そういうのはDOSのバッチファイルでやればいいんだけどね。
typeが表示コマンドで、行を表示するたびに > でファイルに出力できれば最高なんだけど。
たとえば
split.batファイルを作って
for てきとう
type 2行 > ファイル%番号%
next
みたいな。
まあ、標準コマンドはこういうことできないから拡張されたDOSコマンドを探せばいいと思ったけど
ズバリそのものがありました。
http://www.vector.co.jp/soft/dos/util/se300863.html ファイル名の指定が分からないけど
まあ
rename でてきたファイル名のリスト 変更後のファイル名
っていう1万ほどの行を自動生成してバッチファイルにして実行でおk。
こういうこまごましたツールを使う場合、それぞれの手順と名前付けとかのルールとかを
しっかり手順書に書いておかないとわけが分からなくなるから。
どこでどのツールを使うかもね。
結局データに変更が加わったときとか、壊れたデータが見つかったときとか、
やり直す手順とか、作成後のデータに手を加えてた場合にどうするかとか。
UWSCは便利だけどFGETとかは行番号の指定がおかしくても特別エラー返さないから問題ある。
もしUWSCでする場合でも、いちいちID取得とかしてたら時間の無駄だから
DOSコマンドで ”echo 文字列 > ファイル名” (>が新規で>>が追加かな)
って言うのを実行してDOS任せがいいよ。
>>363 なんでUWSCでやるかな。
perlとかruby覚えな。数行で書ける。
そもそも4万行を2行ずつ分割したら2万個のファイルできるわけだが、いったい何に使うんだ?
目的をかなえるための手段を間違えてないか?
>>366 なんでPerlとかRubyみたいなクソ言語勧めるかな。
UWSCはそれらよりましだよ。
もちろん守備範囲の違いは分かってるけどさ。
あと、UWSCは読み書きがCSVを前提にしてるから順次アクセスみたいに効率よくなさそうなのは欠点。
けど行数を言うならアセンブラでもない限りそう変わらん。
この程度は。
まあ逐次処理を前提にしてないから逆に行番号を指定するのはめんどい。
2行程度ならいいけど・・・
複雑になるとファイルごとに行番号を管理しないとな。
>>363 とりあえずこんな感じ。動かしてないけどたぶんいけるんじゃないかな。
予定通りファイルを開けなかった場合中断するとか必要だよ。
InFileName = "???"
IFID = FOPEN( InFileName, F_READ )
For i = 1 to FGet(IFID, F_LINECOUNT) / 2
OutFileName = "???" + FORMAT( i, 5 ) + ".txt"
OFID = FOPEN( OutFileName, F_WRITE )
str = FGET( IFID, i*2-1 )
FPUT( OFID, str, 1 )
str = FGET( IFID, i*2 )
FPUT( OFID, str, 2 )
FCLOSE( OFID )
Next
FCLOSE( IFID )
>For i = 1 to FGet(IFID, F_LINECOUNT) / 2 これは For i = 1 to FGet(IFID, F_LINECOUNT) step 2 って書いたほうがわかりやすいな。 せっかくstepあるんだし。 InFileName = "???" OFCnt = 1 // 出力ファイル数カウンタ IFID = FOPEN( InFileName, F_READ ) For i = 1 to FGet(IFID, F_LINECOUNT) step 2 OutFileName = "???" + FORMAT( OFCnt, 5 ) + ".txt" OFID = FOPEN( OutFileName, F_WRITE ) str = FGET( IFID, i ) FPUT( OFID, str, 1 ) str = FGET( IFID, i + 1 ) FPUT( OFID, str, 2 ) FCLOSE( OFID ) OFCnt = OFCnt + 1 Next FCLOSE( IFID )
『タスクトレイの特定のアイコンを右クリック (負荷等の影響で一定時間メニューが表示されなかったらもう一度右クリック) ↓ メニューが表示されたら任意の操作をクリック (メニューが何らかのウィンドウに隠れてしまった場合でもクリック可なら尚いいです)』 となるようなスクリプトはどのようにして記述したらよろしいでしょうか。 getidやTasktray.GetList等をググったりして試してみましたが、 良好な結果は得られませんでした。 アイコンの判別は画像処理ではなく、WindowIDにて行いたいです。
こんばんわ^^
>>364 おぉ探してくれたんだありがと!
あとでテストさせてもらうよ^^
>>365 気遣ってくれてありがと
パイホン??おっぱいほんww
>>366 答えは簡単な理由だよ
あくまで目的は「全自動」だからUWSCに決めた他と比べることはしない
細かいことが出来るからこの言語あの言語とかいう発想はないんだよね
最初に「オート」「マクロ」「スクリプト」ってのを探しまくったときに
自動で色々してもエラーが少ないのがUWSCだとおもったからさ
プログラミングとか特に興味があるわけでもないからね
今は目標達成までにはパソコンでの情報も一部必要だかなっておもったからやってるだけw
ところが思ったように進まないんだよねw
>>367-
>>368 さん
いつも悪いね涙もんだよ(;´д⊂ヽアリガト
大切に使わせてもらうね
シフトジスとかエンコードは知ってたけど
改行コードも3種類あったんだね初めて知ったよ
DOS時代の先人がいいもの残してくれていた。これで綺麗なテキストになるよ^^
みんなのサンプルもきっと後進の人たちに役に立つはずだよ
いつもありがとう
んじゃノシ
371 :
369 :2008/03/21(金) 00:24:55 ID:G1v5m36m0
>>369 カラー判定ではエラーになることがあるから気持ちはわかるよ^^
ベクターで「ショートカットキー」で調べたら色々あった
動かしたいソフトにホットキーがないのならWindowsの設定を変更して
OS全体に反映させることの出来るショートカットキーを作るツールで
起動と終了のショートカットキー設定してそれからUWSで操作するのがよい鴨^^;
私は言語の事はわかんないけどそう思ったんよ^^
オヤシミノシ
>>371 右クリックのメニューは専用のWindowsAPIがあった。
UWSCでも右栗メニューはあった気がする。
ちょっと探してみたけど分からない。
とりあえずシステムメニュー取得に使った関数あげときます。
UWSCのGETCTLHNDでメニューハンドルが取得できるけど
標準メニューとシステムメニューだけ。
GetMenuStringA.....MF_BYPOSITION
で、メニューハンドルと項目の位置から、メニュー項目名は取得できるけど
これが、・・・
一度は表示したメニューじゃないと取得できない。
つまり、表示のためにクリックしてやらないといけない。
最後に表示された状態を記憶していて、それを取得するから。
DEF_DLL GetMenuItemID(HWND,Long):Long:USER32.DLL
DEF_DLL GetMenuStringA(HWND,Long,Var string,Long,Long):Long:USER32.DLL
確実に右クリメニューを表示する方法は、Winキーとセットの、メニューキーを使うのがいいかと。
右クリメニューの取得方法は・・・
おぱよ^^
>>368 さんがせっかく作ってくれたUWSファイルなので
早速、使わせていただこうとしたら 変数1が定義されていません
とエラーになるのでOFCNTの前に1 = 1 とか 1 = 2 って入れたり
もしかして変数名が使ってはいけない名前なのかと思い
OFCNTをCNTにしたけど変数定義できない
変数宣言を1行目に移動させても定義できない^^; なぜだろか?
>>371 もっかい
>>369 を読んで見た
>メニューが表示されたら任意の操作をクリック
>(メニューが何らかのウィンドウに隠れてしまった場合でもクリック可なら尚いいです)』
メニュー操作はWindowsの関連付けでは無理ぽ
ベクターでダウンロードさせてくれるこのツールどうでしょうか?
Winsize
ttp://www.vector.co.jp/soft/win95/util/se054629.html 使いたいソフトをこれで四隅に固定させると
UWSCカメラの座標でメニュー操作できそうな希ガス
95、NT、汎用とか古いソフトのようなのでどうかわかんないけど
私も必要になることがあるかも知れないのであとで試用レポいれるね
んじゃ^^
>>374 >変数1が定義されていません
ああ、
OFCnt = 1 // 出力ファイル数カウンタ
これが全角数字だからですね。
半角に直したらいけると思います。
おぱよ2回目〜^^
>>371 さん
私が進めてみたツールは使えるけど使えないかなw
念のためウィルスチェックして設定して色々試していたら
このツールはショートカットキーが使えるのかテストしておこうと試してみたんだ
使ってみたら面白いのであれこれと遊んでいたら
なんと画面が逆さまになっちゃった(X X)ほえ=
それでマウスで終了させようとしたんだけど
画面が逆さまになっているとこれが難しい
仕方ないのでパソコンをリセットしたら
びっくり!!
なんとリセットしても設定はそのまんま東だよwww
(全部設定しなおすのは簡単なんだけどマウスを上手く操作できなくて起動させれない)
ダハハw
来たか!このときがw
私はノートンGOBACKをインストールしているので時間を戻せることが出来るのだwww
って事でGOBACKして画面をなんとかもどしたけど
お勧め取り消しておくよ
ごめんね^^;
>>375 さん
早速ありがとうです
今から書き直してみます^^
いつもすいません^^;
やった!
>>375 さん
マジでありがと!!
上手くできました^^
しかもきちんと改行コードづつにしてくれてある(∩´∀`)∩ワーイ
本当にありがとうございました!
ここで相談してみてよかったです
ありがとうございました!
379 :
369 :2008/03/21(金) 13:22:35 ID:G1v5m36m0
多数レスありがとうございます。 結果的に言うと、やりたいことは達成できました。 ChkCtlID.uwsにてコマンドIDを調べる方法です。 ↓ DEF_DLL PostMessageA(HWND,Long,Long,DWORD):Bool:user32.DLL WM_COMMAND = $111 id = GETID("対象アプリウィンドウ名の一部") PostMessageA(IDtoHND(id), WM_COMMAND, コマンドID) 実はやりたいことは、このアプリに実装されているアプリ自身を再起動すると言うものです。 そこで・・新たな問題にぶち当たってしまいました。 再起動した後、新たに出現したウィンドウをクローズし、タスクトレイアイコンのみにするということを行いたいのですが、 新たにgetidを行ってもエラーも出ず無反応で、スクリプト実行中のまま止まって(待ち状態)しまいます。 以下スクリプトを記載します。 ----------ここから while id > 0 //アプリが完全に終了するまで待つ sleep(0.2) wend id2 = GETID("対象アプリウィンドウ名の一部") while id2 < 0 //再起動されたアプリが完全起動するまで待つ sleep(0.2) wend ctrlwin(id2,close) //再起動されたアプリのウィンドウを閉じる ----------ここまで idとid2の関係は要するに、ウィンドウタイトルとクラス名が同じで、PIDが違うということだと思います。
>>379 IDは変数だから代入した後、自分で消さない限り変化しませんよ。
IDTOHAND()とかでハンドル値が取得できなくなればアプリが終了したと判断できるかも。
381 :
369 :2008/03/21(金) 16:10:49 ID:G1v5m36m0
ありがとうございます。 ----------- h = IDToHnd(id) while h = empty sleep(0.2) wend ----------- こんな感じでよろしかったでしょうか。 これはこれで上手く動いてるように思えます。 しかしまだ問題が・・・。 情報後出しで申し訳ないですが、この対象アプリは起動中、タスクトレイと実ウィンドウの2つを有します。 GETALLWINでの結果も複数のウィンドウ名が存在します。 sleepを各所に入れて確認してみると、どうもid2=GETIDの処理がウィンドウの描画を待たずに行われているらしく、 後続のctrlwinが正しいウィンドウに適用されてないように見えます。 実際の視覚的な見え方としては、アプリが終了した段階でスクリプトが完結します。 適当なsleepをid2=getidの前に入れ、確実にウィンドウ自身のIDを取るようにするとctrlwinまで正常に完結します。 しかしsleepだと負荷等の要因でウィンドウの描画が遅れるとダメなので・・・。
382 :
369 :2008/03/21(金) 16:16:09 ID:G1v5m36m0
よくよく考えたらh=enptyも違いますね。もうどうしたら。。
>>381 >こんな感じでよろしかったでしょうか。
だめです。
while IDToHnd(id)
無効なIDを指定した場合にハンドル値に0が返る場合はこれで動きます。
たしか0になりますよ。
GetAllWinで取得すると、たとえばIEの名前を付けて保存は、
「ファイルを開く」という名前のウィンドウが取得できます。
これが時間がたつと「名前を付けて保存」に、名前だけじゃなく姿も変身します。
自分の環境(PenM1.7GHz、メモリ768MB)では、0.1秒のスリープを2回入れて足りなかったことは
今のところありません。
まあわざわざスリープのループを入れる以外に、時間のかかる場面では必ず
sleep( 0.1 ) としていますが。
画像がプレビューされるのは tweakdlg.exe で抑えてます。
GetAllWinでとったら、あとは親子関係を見れるんですが、IEの名前を付けて保存では
(窓が重なって出るタイプの場合)親子関係がちぐはぐに取れてしまうので
どちらを取得しても操作できるように、キー操作を送ります。
どちらかが閉じるなど変化した場合、改めてIDを取り直す必要があります。
それぞれのループが期待したタイミングで抜けているか分かるように、
何か画面に表示したほうがいいと思いますよ。
教えてください。 IEでエラーダイアログが出るのですが、それを自動で消すには どの様な関数を使えば良いでしょうか?ウィンドウのIDを使って SCKEYで送りましたが、反応しないのです。やはりダイアログの IDとかあるのかな、、、。どうやって取得するのか分りません。 どうかご教授お願いします。
>>384 IDが分からなくても、IDに0を指定するとか、KBDで操作することも出来るよ。
その場合にはアクティブにしておく必要があるけど。
さっきから触り始めてるけど関数名やら定数名がclk,chk,slctとか 母音の省略してるのが覚えにくいな perlのelsifみたいな半端な省略になじめなかったのを思い出した 多少冗長でも英単語として打ち込みやすい名前にしてほしかったなぁ
fukidasi fukidashi hikidashi hikidasi katsuodashi irikodasi
UWSC内で20行程度のvbsスクリプトを実行する方法はありませんか? exe化してexecでvbsを実行するのはプロセス起動のたびに重くなり実用的ではありませんでした。
公式のサンプルでも見てみたら?
いまUWSCを学んでる最中なのですが whileやrepeatでの条件の間や条件まで繰り返すのではなく 条件になったら処理実行、みたいなのはどう書けばいいですか?
>>388 vbsの仕様は知らないけど、
たとえばuwsファイルもuwscに関連付けるとuwsファイルをexe化しなくても実行できるようになる。
vbsが関連付けてあって実行できるようにしてあれば別にexe化する必要はないよ。
>>390 Repeat sleep(1) Until 条件 // 条件を満たすまで待機
処理
または
While True // 無限
sleep(1)
If 条件 Then 処理 // 条件を満たしたときだけ処理。
Wend
下のやり方で注意するべきなのは、一旦条件を満たすと、条件を満たさなくなるまで何度も繰り返すこと。
そして、条件を満たすのが一瞬だけだった場合、たまたま処理されたりされなかったりすること。
条件を組み合わせたり条件に範囲(不等号)を使って解決する。
たとえばC言語のforループなら
for( i = 0; // 初期値
i < 10; // 条件
i++) { /*処理*/ }
これはUWSCでは
for i = 0 to 9 step 1
next
と同じループ
394 :
384 :2008/03/25(火) 02:11:07 ID:5jeLiSq40
>>385 ありがとう。結果が出たら報告しようと思ってましたが、
IEにエラーが出た時点で何故かtry-exceptが反応せず、
IEのエラーメッセージのOKボタンをクリックした時点で
反応するという腹立たしい状態のままなのでお礼遅れてしまいました。
try-exceptは捨てます。
ランチメニューの0〜9番をキーボードに割り当てて ボタン一つでそれらを切り替えることって出来ないですか? 猫まねきを使って割り当てられるかなと思いましたが ランチメニューを出して0〜9のボタンを押せるようになるまでに 1秒ぐらい待たないと押せないみたいで猫まねきでは無理でした。
>>384 ClkItem(getid(ダイアログ名),"OK")
で行きませんか?
自宅pc内での作業なのですが指定したフォルダーにある全てのHTMLファイルから @:<title></title>部分と<a href= </a>を抜き出してリンクつきのタイトル一覧表を作る A:出来上がったタイトル一覧表のタイトル部分をクリックして対応HTMLファイルを表示させる この流れを行いたいんです @を行う方法を教えて下さいm(__)m
HTMLファイル読み込んで文字列操作すればいい。 またはその手のソフトを使って自動そうさする。
400 :
394 :2008/03/30(日) 01:50:49 ID:yIU7/GAD0
>>396 >>397 お答えしてくれてたのですねありがとう。
COMエラー用のエラー検出を使うとうまくいきました。
たまに転けますが、、、。
>>398 // 指定文字列間の文字列を返す
戻値 = BETWEENSTR( 文字列, 前文字, 後文字, [n個目] )
すみません。教えてください。 クリックしたリンクのURLを得るにはどうすればよいでしょうか? 移動先のページを読み込む前に得たいのです、、。
>>402 IELinkを使わずにやる方法に、タグのソースを見る方法がある。
・・・
URLがソースに書いてあれば取れるけど、JavaScriptとかを実行する場合は開くまで分からないよね。
スクリプトレベルじゃなくプログラムレベルでなら開こうとする動作を横取りすることも可能だけど。
新しくウィンドウを開くのを監視して・・とかどっかにあった。
ありがとうございます。 結構難しい事なのですね、、。 良かった事に自分の場合はjavaのページではないので、 タグのソースを見る方法を教えていただきたいのですが、、。
IEならヘルプにのってるから見てみるといい
ありがとうございます。 ソースを見るってそういう事だったのですか、、。
繰り返しについて質問です。 UWSCのプログラムを実行するたびに ○回目の繰り返しです。 とかいう文字列を入力していきたいのですが可能でしょうか? プログラムの実行は手動です。
マウスのクリックやキー入力を関知するにはどうしたら良いですか?
>>408 DWebBrowserEventsの場合は変更が加わらないと拾えないようです。
しかもWebページ上のコントロールに関しては見当たりませんね。
http://itpro.nikkeibp.co.jp/members/NBY/techsquare/20030717/2/hyo2.html?ST=security クリックやキー入力の場合は、HTMLとかに書いてないと無理じゃないでしょうか。
HTMLドキュメントに対して書き加えることは多分可能ですが、
既存コントロールのイベント部分に挿入できるかは分かりません。
UWSCから離れて考えたほうがいいかと。
>>402 たまたま見つかったので試してみましたが、どうもエラーが起きます。
いちおうテストコード載せておきます。
STOPFORM(true)
public メモ帳 = Exec("notepad.exe")
IE = CreateOLEObj("InternetExplorer.Application")
IE.visible = True
IE.navigate("about:blank")
OleEvent( IE, "DWebBrowserEvents2", "BeforeNavigate2", "test" )
while true
sleep(1)
wend
Procedure test()
//MsgBox(EVENT_PRM[1]) // メッセージで止めるとおかしくなる。
//print EVENT_PRM[1] // 固まる
SendSTR(メモ帳, EVENT_PRM[1] + "<#CR>", 1, false, false ) // どっちみちエラーになる
Fend
>>407 意味が分かりません。
繰り返しとは、一般的にはfor〜nextとかrepeat〜untilとかwhile〜wendのことを言うと思うのですが、
実行するたびにということは、実行回数のことを意味してるように思われ、それにしては文字列を
入力するというのはどういうことでしょうか?
まだ出力するというなら実行回数を知りたいのかなとも思うのですが、入力と出力だと意味が真逆だし・・・。
>>407 スクリプトの最初にInput()を入れれば入力可能です。
あと、可能かと言われれば、可能です。
普通に考えれば
> ”○回目の繰り返しです。”とかいう文字列
とかいうのは
for i = 1 to 100
print i + "回目の繰り返しです。"
next
で、
>プログラムの実行は手動です。
っていうのは、ループの実行制御を、ボタンをクリックするまで待つのかなとか思うんですが、
これでは出力になるし、
単純に手動実行ならスクリプト起動のことかもしれないけど
起動を自動というのはスタートアップに設定したりスケジューラに登録するなどして起動することを言うので
普通に考えれば起動はほとんど手動になるはず・・。
スクリプトを何回起動したかというのは、データファイルに書きこんでおけばいいので
何回目の起動かというのは手入力する必要はありません。
ファイル入出力やり方が分からないときにとりあえずでやることはあります。
>>409 バグる問題は、Procedure test() 内に
EVENT_PRM[1] = true を加えればいいって本家掲示板で教えてもらった。
んで、サムネイルをクリックするたびに新しい窓を開きまくるのを抑制するのを作ってみた。
まさかUWSCのオブジェクトを渡して期待通りに動くとは思ってなかったけど、
新規ウィンドウを抑制して、2つ目の窓で画像を開いてくれる。
STOPFORM(true)
public gIE = CreateOLEObj("InternetExplorer.Application")
gIE.visible = True
IE = CreateOLEObj("InternetExplorer.Application")
IE.visible = True
IE.navigate("
http://thumb.uploda.org/tha0.html ")
OleEvent( IE, "DWebBrowserEvents2", "NewWindow2", "test" )
sleep(1000000)
Procedure test()
EVENT_PRM[0] = gIE // 新しく指定するブラウザオブジェクト
EVENT_PRM[1] = True // Cancel flag
Fend
NewWindow2ではキャンセルフラグ立てれば新規ウィンドウを抑制できるのに
BeforeNavigate2では止まらないのはなんだろうね。
EVENT_PRM[0] = gIE を省略すると
EVENT_PRM[1] = True を指定しても、キャンセルしてくれなかった。
つまり単純に開かないという選択肢はないってことかな。
>>408 ありがとうございます。すいません理解が追いつきません今実験ちゅうでう。
415 :
名無しさん@お腹いっぱい。 :2008/04/02(水) 19:30:50 ID:ScfPXn9/0
UWSCでバイト配列を扱うことはできますか? DLLに渡すために使いたいんですが…
>>415 <DLL 使用定義>
// DLL (API等)の関数を使用する事ができるようになります
DEF_DLL 関数名(型, 型, ...): 戻り型: DLL名
型: int、long、bool、uint、hwnd、string、Wstring、float、double、word、dword、byte、char、pchar、Wchar、pWchar、boolean、longlong、Extended、SafeArray
参照引数(ポインター渡し)として使う場合は Var 宣言を付ける
構造体:型を { } にて展開して書く 関数名(型, {型, 型, 型} )
※ int=long=bool(4byte)、 dword=uint=hwnd、 char=boolean(1byte)
ヌルポインタを渡す時は NULL定数を使用して下さい
417 :
415 :2008/04/03(木) 14:11:40 ID:ePngtmzp0
某スクリプトを参考に、文字列型を使うことで一応解決しました。
文字の組み合わせを作るクラス Class key dim s = "0123456789" //abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" dim s_len dim k[10] = 0,0,0,0,0,0,0,0,0,0,0 dim keystring Procedure key s_len = Length(s) Fend Function next() inc(0) keystring = "" For i = 10 to 0 step -1 Ifb k[i] Then For i = i to 0 step -1 keystring = keystring + copy( s, k[i], 1 ) Next Result = keystring Exit Endif Next Fend Procedure inc( c ) k[c] = k[c] + 1 Ifb s_len < k[c] Then k[c] = 1 inc(c+1) Endif Fend EndClass
>>418 を使うサンプル
NTパスワードをクラックするツールを使ったことがあるけど、
400MHzのを使って9桁の数字の答えを見つける間に(10桁目に入るころ)、
このスクリプトでは5倍の性能のパソコンを使ってもやっと7桁目に入った。
まあ他のアプリケーションを操作する目的のスクリプトだからアセンブラと張り合う必要はないんだけど
やっぱり性能差って結構あるなあ。
メモ帳 = Exec("notepad.exe")
dim len = 0
Start = GetTime()
while 1 // keyテスト
If !IDToHND(メモ帳) Then Exitexit
s = key.next()
Ifb len < length(s) Then
len = length(s)
t = GetTime()-Start
s = s + "<#TAB>" + format(t/60/60 MOD (24*60*60), 2) + ":" + format(t/60 MOD (60*60), 2) + ":" + format(t MOD 60, 2)
SendSTR(メモ帳, s + "<#CR>", 1, false, false )
Endif
wend
IEの反応が遅すぎて待ちループを抜ける場合があるので、 いつものループの前に、待ちループに引っかかる条件になるまで待ちっていうのを入れた。 もちろん、反応が早すぎる条件でこれは自殺行為だけど。 Whileじゃなくてforで回数限定するべきだったかな。 urlを指定する場合は直後に移動開始するけど、 スクリプトが動く場合は、クライアントでの計算が終わるまでなにもしないようで。 IE.document.forms[0].submit() while !IE.busy AND IE.readystate = 4 sleep(0.1) Wend REPEAT; sleep(0.1); UNTIL !IE.busy AND IE.readystate = 4
>>413 すみませんまだ考えているのですが、オブジェクトを二つ作るのは何故なんですか?
DosCMD("echo 俺様天才",False,True) DosCMD("pause",False,True) "俺様天才"が出てこないんだけど、何か間違ってる?
>>422 print DosCMD("echo Hello!World.")
↑表示 ↑コマンド実行
>>421 まず、新規ウィンドウを抑制するためには、誘導先が必要なこと。
ぐぐったら2chブラウザで、飛び先を調べる専用のブラウザを作ってるとか書いてあったからそんな風にしてみた。
けど、元のブラウザに表示させるならオブジェクトは一つでいいかもね。
二つ作るのは、ウィンドウを二つ作るため。
オブジェクトって言うのは基本的にその内部に配列を持たないなら、
それ自身を複数作ることで、、
つまりIEオブジェクトはブラウザは一つしかもてないから
2つ目のブラウザを持つためにオブジェクトをもう一つ用意した。
グローバル宣言したのは関数内で使うため。
けど、グローバルはよくないから、修正してクラス化しました。
Class 2つ目の窓
Dim IE
...
初期化とか関数とか
EndClass
425 :
422 :2008/04/05(土) 23:25:03 ID:sGOewx620
>>423 javaで出力を受け取りたくてやっていたが、ファイル経由でしか出来ないようですね。
ありがとうございました。
>>425 >DosCMD("echo 俺様天才",False,True) ← コマンドプロンプトで一瞬表示されて終了
>DosCMD("pause",False,True) ← ↑が終わったあとに別のコマンドプロンプトでポーズがかかる
UWSCに取り込みたいのならば、
echo = DosCMD("echo 俺様天才",False,False)
大量のファイルのコピーを、 DOSCMDでMkDirとCOPYと呼び出してやってるけどめちゃめちゃ時間かかる。 何がそんなに時間かかるか分からないけど時間かかる。 DOSコマンドのほうが早いだろうけど、フォルダ名をランダムにしたくて、 DOSにランダムのコマンドないし まあ作ればいいかもしれんけど最近やってないからめんどくさいし。 で、UWSCのランダム関数使ってバッチファイル書き出し。 CALL ほげ.bat ランダムファイル名 ほげ.batで MkDir %1 MkDir %1\規定フォルダ Copy ファイル %1 ファイル数何十万だしそれでも時間かかるけど。 さすがにCallするだけのバッチファイルが何メガもあるしな。 それでも1時間かかってたのが15分で終わる。 仮想マシンじゃなかったらもっと早いかも。 こういうのにsleep入れたらまったく動かないんだな。 たった100回のループに何秒もかかっちゃう。 ああ、でも時間は体感だから4倍も早いのかどうかわかんないな。
ランダムファイル名を使ったバッチをつくってから実行しろよ。
>>428 うん。そうしたって話したんだが。
それでコピーしまくったらフォルダが1800に断片化してる。
まあたいした問題じゃないんだ。他は空っぽだから。
けど、なんにもしてない、メモリも150MBもあいてるのにずーっとがりがりがりがりがりがり
ディレクトリキャッシュが小さすぎなんかな
>>427 を読んだ限りでは単発コピー用のバッチを
UWSCのループで実行しているように見えるが?
その代わりにUWSCのループでバッチを書き出して
最後に一発実行すれば…という意味なんだが?
ただ10万ファイルならどうやっても時間かかるだろうな。
なんかのクラックとか悪事をやろうとしてるのか?
>>430 > CALL ほげ.bat ランダムファイル名
たしかにUWSCにもCALL文はありますが、.batをCALLでは呼べません。
その下に4行のDOSコマンドを書いてますが、あれを出力するわけじゃなく、
ランダムな数字をあのバッチに渡して実行するわけです。
そのまま全部書き出すとサイズが数倍のギガバイト単位になっちゃうし、
記述ミスが起きた場合に、それを探すのが大変な作業になります。
> なんかのクラックとか悪事をやろうとしてるのか?
まあクラック用のキー生成を作ったから、あれを応用しようかと。
実際クラックといっても性能が悪くて実用性は0に近かった。
とりあえずコピーをいっぱいしてメールアカウントが大漁だから
うにょうにょしようかと。
けどキャッシュがきかなくて一日中ディスクががりがりゆってて
100万アカウントとかメル鯖が耐え切れんようで。
ケータイ程度でも人気サイトになるとそれなりなスペックがいるんだなあとおもた。
かかわらら無い事にした。
ポイント登録サイトに登録しまくろうかと思ったんだけど 「同一PCからは1件しか登録できない」って言われたから断念。 無料のメル鯖でアカウント作りまくったけどプロバイダの規制に引っかかるから送信できないし。 架空の注文入れて逮捕された話は聞くけど、登録しまくりで逮捕された件はないから大丈夫かと思ったら そもそも登録しまくりが無理なんだね。 チェック機能を改造して通るように出来たとしても不正アクセスとかになるだろうし。 残念。
434 :
425 :2008/04/07(月) 22:23:16 ID:ioJJxEpk0
>>426 俺は馬鹿だな。そんな単純なことも気付かないなんて・・・。
ありがとうございました。
435 :
421 :2008/04/08(火) 00:10:06 ID:kRmCRuCE0
>>423 お礼遅れましたがありがとうございます。勉強します、、、。
ファイルネームにTimeの入力教えて下さい
gettime() fopen(gg_timeなんとか)
UWSCで人工無能を作るにはどうすればいいですか?
exec("人口無能.exe")
天然無能なら俺のことだよ。
レジストリのバックアップをUWSCで行いたいです
先人が公開されているGETTIME部分を参考にさせて頂いたのですが
ファイル名に応用するのに上手くいきませんよろしくお願いします
ACW(GETID("レジストリ ファイルのエクスポート","#32770"),0,46,654,478,0)
Sleep(1.0)
GETTIME()
function time→string()
GETTIME();
result = G_TIME_YY4 + ":" + _
G_TIME_MM2 + ":" + _
G_TIME_DD2 + ":" + _
G_TIME_HH2 + ":" + _
G_TIME_NN2 + ":" + _
G_TIME_SS2 + ":" + _
FORMAT(G_TIME_ZZ2, 3, 0);
fend
SendStr("#32770", "G_TIME_YY4 + ":" + _G_TIME_MM2 + ":" + _G_TIME_DD2 + ":" + _G_TIME_HH2 + ":" + _G_TIME_NN2 + ":" + _G_TIME_SS2 + ":" + _", 2)
>>437 レスありがとうございます
すごく初歩的な質問なのかもしれませんが 検索した限りでは答えを得られなかったので 教えていただけるとありがたいです。 同一ソフトを多重起動している場合 getidでそのアプリケーションを取得する場合 起動している二つを区別して取得することはできるのでしょうか?
>>443 IEのように、タイトルが表示するページによって変わるなら区別可能。
その場合でも、同じタイトルになる場合、GetIDでは区別できない。
>>442 functionで関数定義すると、メインはそこで終わり。だと思う。
SendStrは前に持ってくる。
もう一つ。
実際にエクスプローラーでどんな名前にしたいかサンプルを作るといい。
”:”入りファイル名は禁止。
ドライブ名のために使われるから。
”:”でもこっちの全角なら使えたりする。
普通日時は2けたずつだから、今日の日付は080411か、20080411。日本の場合。
外国では順番違うから、Apr1108とかかな。
Format()は頭0だとスペースになっちゃうからChjmojiかなんかで” ”を”0”に置き換えないといけないかも。
>>444 レスありがとうございます。
重ねて質問で申し訳ないのですが
バックグラウンドでの動作をさせるために
クリックなどの動作の指示を送ろうと思うのですが
その指示を多重起動している同一のソフトに区別して
送るための手段はあるのでしょうか?
>>444 さん
>>442 です
アドバイスありがとうございます
>>445 さん
ヘルプか作者のumiumiさんのHPか忘れたけどID取得のサンプル
//【全ウィンドウタイトルの表示】
これでIDわかるかもしれないです
あと先人の方でHtmlAnalyzer.uws(同一名称があったので今は名前が変わったと思う)
これは全ウィンドーの詳細版のようなツールです
その手の調査にはとても優れものです
>>445 さん
秀丸で多重起動させて全ウィンドやってみた
表題が同じだと窓名は同じでした
この場合、どのようにして操作するのかわからないので
解答待ちをするか本家の掲示板で尋ねてみて下さい
全ウィンドの結果はこんな感じでした
ID=28,"(無題) - 秀丸","Hidemaru32Class"
ID=29,"(無題) - 秀丸","Hidemaru32Class"
(ID=28とか出ているのは僕のパソコン内での順番ですので窓取得には関係ないかもしれません)
僕がgrepする時に使っているキー入力です
他にもっと良い方法があるかもしれませんが取りあえずこれでキー入力できています
よくわからないけど
UWSCのプロ版で作成したマクロはフリー版で動かない命令があるようです
役に立てばいいんですがドゾ
//秀丸エディターで「時間」をgrep検索する
EXEC("C:\秀丸エディター\Hidemaru.exe")//秀丸起動
SLEEP(0.1)//0.1秒休憩
hidemaru=GetID(" - 秀丸","Hidemaru32Class")//秀丸アクティブ
scKey(hidemaru,VK_ALT)//ALTキークリック
scKey(hidemaru,VK_S)//Sキークリック
scKey(hidemaru,VK_G)//Gキークリック
grep=GetID("grepの実行","#32770")//出現した小窓をアクティブ
sendstr(grep,"時間",1,TRUE)//文字”時間”を入力
clkitem(grep,"OK",CLK_BTN)//okボタンクリック
>>445 さん
>>447 です
一応補足です
3行目と7行目にある下記の行ですが
hidemaru=GetID(" - 秀丸","Hidemaru32Class")//秀丸アクティブ
grep=GetID("grepの実行","#32770")//出現した小窓をアクティブ
(" - 秀丸","Hidemaru32Class")を入力するのが面倒なので
hidemaruという変数に変更しています
この行以降は(" - 秀丸","Hidemaru32Class")はhidemaruで呼び出せます
7行目の小窓の取得も同じです
("grepの実行","#32770")を変数grepにしているのでその後呼び出す時は
下記の様にgrepで呼び出せるようにした変数です
sendstr(grep,"時間",1,TRUE)//文字”時間”を入力
clkitem(grep,"OK",CLK_BTN)//okボタンクリック
呼び出すための変数は
>>445 さんの任意の文字で構いません
言葉足らずですが補足しておきます
僕もUWSC初心者です
お互いガンガレ^^
アクティブ簡略化の一例(レジストリエディタで試してみる) //変数 = GETID("全ウィンドで調べる","全ウィンドで調べる") //()の中は全ウィンドで調べたものをそのまま貼り付け EXECでレジストリエディタが起動している状態にする //変数=tes333を作ってみる tes333=GETID("レジストリ エディタ","RegEdit_RegEdit")//このカッコ内は全ウィンドよりコピペ Sleep(1.0)//休憩1秒 //以降レジストリエディタが起動している状態で窓名に変更がなければ下記で呼び出せる ACW(tes333)
>>446-449 返信が遅くなりすいません。
非常に役立つアドバイスありがとうございます。
私はUWSCを昨日から初めて使い始めたような人間なので
このように実例を交えたアドバイスをしていただけると本当に助かります。
>>445 の質問に関しては、自分で調べた限りでは
解決法がわからなかったので、どなたかにアドバイスいただけるのを待ちます。
>>445 ちょっと意味分からなくて放置してた。
無題ドキュメント複数ってのはありがちですね。
簡単な回避方法は、uwsスクリプトで
ID = Exec("notepad")
として起動から管理する方法と、
GetAllWinで取得した一覧をSelectで選ばせ、選択したウィンドウをActiveにして見せて、
MsgBoxにYes、Noのオプションつけて「これですか」と聞いてみるとか。
さらに、無題ドキュメントでも編集中であればGetStrとかでテキストの文字は読み取れるから、
なにか特定のキーワードがあればそれを探してみるとか。
>>451-453 ありがとうございます。
実は私もついいましがたexecで起動からの管理をするという方法に
たどりつきました。
本家の過去ログにあることでした。
すいません。
いろいろなアドバイスを頂き本当に助かりました。
まだまだ初歩的な点で、うまくいかないことなどが山積みですが
根本的にどうすればよいかわからなかったことは解決したので
独力で頑張ってみようと思います。
ありがとうございました。
>>453 のバグってました。
×:length(ipconfig[i]-43))
○:length(ipconfig[i])-43)
// IPアドレス検索
Ifb Pos( "IP Address", ipconfig[i]) Then
print "Found:" + ipconfig[i]
MyPrivateIP = Trim(copy(ipconfig[i], 44, length(ipconfig[i])-43))
456 :
名無しさん@お腹いっぱい。 :2008/04/13(日) 00:36:59 ID:iN/+POZc0
>>453 YahooBBを使っていて、Yahoo鯖へのtracertで外部IPアドレスを取得できると思って作ったんですが、
tracertは毎度違うアドレスを経由してしまいます。
だからサーバーから見た自分のグローバルIPアドレスはこの方法では取得できませんでした。
他のISPだったらうまくいくのかどうか、よく分かりません。
ファイル操作で質問です ファイルオープンする時に見当たらなければ ファイルを自動で新規作成できますか? 正規表現で検索して文字列抽出した後にファイルへ書き出したいです UWSCで可能ですか
>>457 > F_WRITE // 書き専用モード (既にファイルがあれば前の情報は消去)
「ファイルがあれば」と書いてありますが、なければ新規作成になります。
ヘルプの説明が不十分と言えるかもしれませんが、
自分で動作を確認するテストコードを書かないとあちこちでつまづきます。
ISOとかで動作が保障された言語ではないので。
chkimgをすると メモリもしくはリソースを確保できません と出るんですがなにかメモリの設定で やってはいけないことあるんでしょうか? メモリは2Gあるので足りてるはずです。
>>460 検査対象の座標が左上右下の順なのに逆転してマイナスになってるとか
ファイル形式が無圧縮ビットマップじゃないといけないのにjpg指定してるとか、
でなければメモリ多すぎとか。
463 :
名無しさん@お腹いっぱい。 :2008/04/16(水) 21:03:39 ID:uWVNqvCF0
UWSCをサーバー上のプログラムに使用したとき 使用された側でそれを感知することは可能なのでしょうか? 素人なのでわかりづらい内容かもしれませんが、よろしくです。
>>462 Windows9xとかならありますが。
ディスク大杉もよくありますね。
>>463 サーバー上ってCGIとかでしょうか。
そういうのは感知できないでしょうが、
自動化ソフトによるものという推測をする方法はありますね。
何度も繰り返し行われた場合にその時間とかで。
キーやマウスによる操作かどうかをチェックして、ユーザーが操作したかをチェックしてるユーザー登録画面もありますね。
466 :
名無しさん@お腹いっぱい。 :2008/04/16(水) 21:24:15 ID:uWVNqvCF0
>>465 ありがとうございます。
ネットゲームなんです。今まで使えていたのですが
UWSC自体を立ち上げているときは手動でもその動作ができず
UWSCを立ち上げていなければその動作を手動ではできる状態です。
467 :
460 :2008/04/16(水) 21:46:27 ID:7yWsW+WN0
>>465 xpですが対処する方法ってないものでしょうか?
CHKIMG("0001.bmp")
と書いただけでも上記のエラーが出てきます。
>>467 スクリプトと同じフォルダにそのファイルありますよね?
で、そのファイルのあるドライブの空き容量が2GB以上あったりとかはしますか?
あと、UWSCのバージョンは最新ですか?一応最新にしてみるとか。
保存されたビットマップの色数と画面の色数がまずいとか。
他にはちょっと見当がつきません。
基本的に、nProtectGGが入っている場合でも、画像を読み取ることは出来なくてもエラーになったりはしないものなので。
>>466 >UWSC自体を立ち上げているときは手動でもその動作ができず
コントロールしようとして結果的に邪魔をしてるような感じでしょうか・・
>UWSCを立ち上げていなければその動作を手動ではできる状態です。
見当もつきません。
マクロ禁止なゲームでなければ、ゲーム名と画像を本家掲示板に報告したら
バグフィックスとかのお役に立てるかも。
他の人の環境で動くようなら意味ないかも・・・
469 :
460 :2008/04/16(水) 23:45:29 ID:7yWsW+WN0
>>468 同じフォルダにあります。
空き容量も6Gあります。
バージョンが古かったので
最新版にしてみたけど
変わらずでした。
画像も変えてみたけど同じ。
あーなんでだろう・・・
すいません、質問なのですが とあるゲームで簡単なマクロが組みたくUWSCで自分で書いた簡単なキーを打ってくれるスクリプトを再生しようとしたのですが 何故か全く動きません…再生中にメモ帳に窓を切り替えたらちゃんと文字を打ってくれるのですが又ゲームの窓に切り替えると止まってしまいます 何が原因なんでしょうか…?
>>470 操作対象を特定しない操作でゲームは操作できない理由は2つ考えられる。
1.DirectInputを使ってるからUWSCからの送信をゲームが見てない。
2.nProtectGameGuardがブロックしている。
ゲームをマクロ化したければマクロ機能付きジョイパッド使うとか。
>>471 レスありがとうございます!
なるほど…恐らくnProtectGameGuardが原因かなあ…ちなみにGR使って回避する事は可能ですかね?
質問なのですが、「特定の画像を認識するまで待機」という命令ってUWSCで可能ですか?
可能ですよ
>>474 出来ますか、ありがとうございます!
色々試しても上手くいかなかったので不可能かと思いました・・・
頑張ってみます!
>>472 >ちなみにGR使って回避する事は可能ですかね?
最近のGameGuardを回避できるものはありません。あきらめること。
仮想マシンでゲームを実行すれば、GameGuardとか関係なくホストから操作できるけど、3倍〜10倍重いから。
477 :
名無しさん@お腹いっぱい。 :2008/04/19(土) 16:46:00 ID:IJKtNPAd0
一時停止機能つけてください
あるだろ?
480 :
名無しさん@お腹いっぱい。 :2008/04/26(土) 08:25:17 ID:H+8T5fbW0
リモートデスクトップで使用しているときのUWSCについて質問したいことがあります。 WindowsXP SP2マシンからリモートデスクトップ接続して使っているPC(WindowsXP SP2) でUWSCを使っているのですが、リモートデスクトップを最大化したり通常ウィンドウで 使っているときは問題ないのですが、最小化したり接続を切ったあとにUWSCのマウス 操作関数MMVが動いていないのです。接続を切ったときはともかく、最小化したときぐらい は動いて欲しいのですが…。対策方法をご存知の方は教えてください。
>>480 そういう特定条件の話は本家でお願いします。
最小化したウィンドウにマウス操作を送る設定なら、マウス操作が無効なのは当然だと思います。
最小化から復帰したときにだめなら、とりあえず、マウス操作対象を割り当てなおすことで対処できるかやってみたら。
あと、リモートデスクトップなら、UWSCをどっちで動かし、最小化ウィンドウがどっちのどの画面でのことなのか正確に書いたほうがいいと思います。
482 :
名無しさん@お腹いっぱい。 :2008/04/26(土) 09:44:29 ID:H+8T5fbW0
わかりました。マウスの操作対象を割り当てなおすところからやってみます。 ちなみに最小化は、リモートデスクトップ内のウィンドゥではなく、接続元画面に おけるリモートデスクトップの画面です。
AutoHotKeyと較べてUWSCの方が優れている面とかあります? 出来る事自体はAHKの方が多く基本的にUWSCで出来る事はAHKで実現可能な様ですが・・・ 個人的にはコードの書き安さや文法等はUWSCの方が使いやすいんですけどね
・Ahk ・スクリプト構文が原始的 ・アドホックな拡張 (関数、構文など全般) ・Unicodeがネイティブじゃない ・GUIサポートが豊富 ・日本語サポートが未熟 ・英語コミュニティは活発だが日本語コミュニティは少ない ・ライブラリは豊富 ・ホットキーに複雑な機能を割り当てるのが楽(もともとそういうソフト) ・Uwsc ・まとまっていて馴染みやすいBasic風構文 ・アドホックな拡張 (組み込み関数郡) ・Unicodeはネイティブに近い。日本語・多言語もそこそこ扱いやすい。 ・GUIサポートはない。IE/MSアプリに依存しすぎる面がある。 ・日本語サポートは必要十分 ・国際的コミュニティは皆無に近い。日本語は本家掲示板以外にいくつか存在する。 ・ライブラリ化は馴染まない性質のため皆無に近い ・IE操作が楽。ソースにデータを置ける機能、マルチスレッド機能等が特徴 ・Autoit3 ・比較的厳格なBasic風構文 ・頻繁な更新により全体的にかなりまとまっている ・Unicode対応は進んでいるが未だにネイティブではない ・GUIサポートはかなり豊富 ・日本語サポートはまだまだ限定的 ・公式コミュニティは非常に活発。しかし日本語コミュニティは皆無に近い ・ライブラリはかなり豊富 (全体像が把握しにくくどれを使っていいか迷う) ・他のスクリプトからAutoit3の機能を利用する機能/開発環境一式を提供/その他
print したものをテキストにコピしたいんだけどどうすればいいですか どこかにLOG残ってるんでしょうか?
ヘルプくらい読むとか インストールフォルダくらい見るとかしないものか
あのヘルプは初心者にはきついですよ わかんない ドライブごと.LOGを検索したら 拡張子LOGがいっぱい出てきてわかんない わかったらここで聞かないよ
初心者のくせにファイル検索が出来るなんてすげーよ その調子でUWSCのインストールフォルダの場所を検索する作業に戻りなさい
>>488 さん
UWSC.logってのがあった!
ありがとー!
490 :
なぜだ? :2008/05/05(月) 09:22:03 ID:cFWGsJpt0
Uwsc Ver.4.2 + WinXP SP2 script.uws file1 関連付け起動時にこんな感じでスクリプトにパラメータ渡しても うまく受け取れないようなんだが? Win2000では問題ない。 この問題のせいでWinXPで動かないスクリプトが多くて困ってる。 ちょっと前まで、あるいはWinXpSP1の頃、あるいは以前のUwscでは 問題なく動いていたように思うんだが、久々移植したらこの問題が…。 普段Xp使ってるヤツ、心当たりあれば事情説明頼む。
491 :
名無しさん@お腹いっぱい。 :2008/05/05(月) 13:56:32 ID:FiF55k6b0
アクションの定義のせいかな "D:\Program Files3\uwsc\UWSC.exe" "%1" 上記はデフォルトの定義だけど、これではUWSファイル名しか渡さない。(XP) > 実行時に引数を付けていた場合は「%2」〜「%9」が対応する。「%*」は%2以降の引数全てを表す。
>>491 そういえば、pro版のインスコでも第2引数以降の %* は自分で追加しないと駄目だけど、
これってなにか意図あるのかしら?
お世話になります プリント窓からメモ帳にコピしたいのですが文字列を取得できません スリープ10秒している間にALT+A ALT+Cを手動でするとコピ出来ているのですが 下記スクリプトではコピできないんです ヘルプのSCKEYの例にはオルトダウンで実行しているようなんですが実際にはコピ出来ていません どなたかアドバイスお願いします CTRLWIN(GETID(GET_LOGPRINT_WIN), ACTIVATE) sleep(10.0) SCKEY(VK_ALT,A) sleep(1.0) SCKEY(VK_ALT,C) sleep(1.0)
print命令の代わりに FOPEN FPUT FCLOSEでテキスファイルに直接書いてったほうが早くない? それじゃダメなの?
>>494 さん
即レスありがとうございます
そうしたいんですが参考にさせていただいているスクリプトがprintなんです^^;
よろしくお願いします
参考にしてPrint部分を書き換えればいいじゃん 参考にするってのはそう言う事だよ
497 :
なぜだ? :2008/05/06(火) 07:16:44 ID:nXY1j0ks0
>>491 サンクス。
あーなんとなくそれズバリ臭い。
関連付けはたぶんアプリケーションから開くで
「このタイプにはこれを云々〜」を使ったんじゃないかと。
498 :
名無しさん@お腹いっぱい。 :2008/05/06(火) 09:49:02 ID:NM2S3mo50
>>492 必要ないからじゃないかな。
ファイル名に引数なんて、コマンドラインから実行か、ドキュメントファイルへのショートカットかでしょ。
>>493 普通コピペはCtrlキーなんだけど
お世話になります
>>493 です
SCKEYでprint窓をコピできなかったのはVK_CTRLです
先のVK_ALTは間違い。下記ミスです
-----------------------------
↓print窓をコピできないスクリプト
CTRLWIN(GETID(GET_LOGPRINT_WIN), ACTIVATE)
sleep(1.0)
SCKEY(VK_CTRL,A)
sleep(1.0)
SCKEY(VK_CTRL,C)
sleep(1.0)
----------------------------
↓これではコピできます
KBD(VK_CTRL,DOWN)
SLEEP(0.2)
KBD(VK_A)
SLEEP(0.2)
KBD(VK_CTRL,UP)
KBD(VK_CTRL,DOWN)
SLEEP(0.2)
KBD(VK_C)
SLEEP(0.2)
KBD(VK_CTRL,UP)
SLEEP(0.2)
UWSC4.4aです
500 :
名無しさん@お腹いっぱい。 :2008/05/06(火) 15:15:34 ID:NM2S3mo50
>>499 KBD()はキーコードだけでいいけど、
SCKEY()は操作対象のウィンドウIDが第一引数だよ。
ちゃんとヘルプで確認。
あ、Print窓はID取れないよね。自分自身のだし。
ということはKBDでやるか、メモ帳に出力してそっからコピペするかのどっちかになるけど
キーボード操作がいらないという点でメモ帳をお勧め。
メモ帳ならPRINTの代わりにSendSTRで
キーボード操作の変わりにGetSTRで。
>>500 さん
お世話になります
>>499 です
直接エディターの行頭に整理番号付けれましたありがとうございます!
いつもすいません感謝です
i = 0
FOR i = 1 to 9999//行頭に4桁でプリント窓に整理番号
SendSTR(hidemaru, CHGMOJ(FORMAT(i, 4), " ", "0"))
KBD(VK_RETURN)
NEXT
あの後学のためにきいてみたいんですけど
CTRLWIN(GETID(GET_LOGPRINT_WIN), ACTIVATE)
↑
>>499 のこれはprint窓をアクティブにできていないでしょうか?
そもそもUWSCのログウィンドウから文字列を取得しようっていう考え自体がおかしいんだよ ログウィンドウに書かれているって事は、UWSCでログ出力したから書かれているわけで すでに取得(所持)しているデータなんだから、わざわざ再度取得しようなんてあり得ない ログウィンドウ以外にも同じデータを書き出したいなら ログの他に別なファイルに書き込むようにすればいいだけのことなんだよ
>>502 えっ
そうだったんですか知らなかったよorz
ログは自動で取れているものだったんですね
ありがとうございます
結局、本当にやりたい事は「0001〜9999をテキストファイルに出力したい。」だったのに > 文字列出力ってことはPrintかな? 「0001〜9999までPrintするマクロ教えてください」 > Printできたけど好きなファイルにコピーしたいな… 「ログウィンドウからコピペしたいんですが教えてください」 そんな遠回りする面倒な事しなくても最初から「0001〜9999をテキストファイルに出力したい。」 って聞けば、回答者の手をなんども煩わせる事をしなくていいんだよ
紛らわしくてすいません今回の質問は2つだったんです ・ログを取る→printしなくても自動でログを保存していることが判明解決 ・行頭に整理番号を付ける(KBDとSCKEYの違いがわからない)→SendSTRで解決 お手数をお掛けして申し訳なかったです
情報を小出しにすると良いこと無し!の見本例だなw
>>505 解決…
よく分かってないけど出来たからいいや。解決って事にしておこう
を解決というならお好きにどうぞ…
ちなみに「printしなくても自動でログを保存」なんてしませんから。
ログ保存解決できてないや ログを保存するときとしないときがありますね
> そもそもUWSCのログウィンドウから文字列を取得しようっていう > 考え自体がおかしいんだよ なこたーない。これは一種のコンソールだから。 このワザを使うとログウィンドウを使っていろいろ面白いことができる。 この話の流れのことは知らんが。
秀丸エディターのgrep検索窓のID(2種類)わかる方おられましたらお願いします 秀丸エディターでALT→S→Gで出てくるgrep検索の小窓ID調べています UWSCの全窓で新規ファイルを調べたら"(無題)(更新) - 秀丸","Hidemaru32Class"のようなんですが 下記のようにしたのですがエラーになりました test1 SendSTR("(無題)(更新) - 秀丸","Hidemaru32Class"," 分|時間|日 ") test2 SendSTR("(無題)(更新) - 秀丸","検索する文字列"," 分|時間|日 ") その下の「検索するファイル(N)」のIDもわかりません (現在のファイル)が出てる小窓です わかるかたお願いします PS:私の使っているプロバイダーがまた2chのアクセス規制に引っかかっているようで モリタポ使ってP2P書き込みしています レス遅くなるかもしれませんが ロムってますのでよろしくお願いします
>>509 >このワザを使うとログウィンドウを使っていろいろ面白いことができる。
ちと思いつかないんだけど、例えば?
暇があったら教えてくださいまし。
お世話になります
>>510 です
以前教えて頂いたのを数字を変えたら2つとも入力できました
あの時教えてくれた方本当にありがとうございました
hidemaru=GetID(" - 秀丸","Hidemaru32Class")
scKey(hidemaru,VK_ALT)
scKey(hidemaru,VK_S)
scKey(hidemaru,VK_G)
grep=GetID("grepの実行","#32770")
sendstr(grep,"分|時間|日",1,TRUE)
sendstr(grep,"(現在の内容)",2,TRUE)
clkitem(grep,"OK",CLK_BTN)
513 :
名無しさん@お腹いっぱい。 :2008/05/11(日) 12:39:40 ID:gbPkk0Gd0
新着情報 / お知らせ 2008/05/11 UWSC Ver4.4b、 Pro版と Free版をリリースしました。 [Ver4.4b] GETOLEITEM関数にてメモリ漏れがあるのを修正 マイナス座標のマルチモニタにて正しい位置にダイアログが出ないのを修正 スレッド終了時に正しくスレッドが終了しないパターンがあるのを修正 記録機能で出来るだけ時間遅れが発生しないよう修正 CLASSを MODULEに名前を変更した(旧名も維持) Pro版: CREATEFORM関数にてFOM_NORESIZE指定時にキャプション部のアイコンが消えないようにした RecIE:コンテキストメニュを出しキャンセルすると、その後の記録がダメになるのを修正 RecIE:コンテキストメニュが有効にならないパターンがあるのを修正 RecIE:マルチフレームにて正しく記録できないパターンがあるのを修正 UDebug:エデット可能とした UDebug:変数表示領域のヒント表示にて変数の型を表示するようにした
あるオンラインゲームで、UWSCを使ってみようと思っています。 UWSのファイルを頂いたのですが、○○のX座標、Y座標の位置を設定して、と言われました。 ゲーム内の座標の位置はどのようにわかるorどのように設定すれば良いのでしょうか? わかりづらい質問ですみません。 わかる方いましたら教えていただけないでしょうか?
>>514 動作を録画してクリックしてみたら良いんじゃないの?
録画不能だったらそもそも再生も出来ないからUWSCは無理って事だろうし
質問です。 1つのUWSCでの2つの動作を同時に監視ってできますか? ゲームでのライフとマナの回復を自動化しようと思ってます。 ライフのみ、マナのみの回復は動作したのですが 二つを同時に、ってのはどうやればいいんでしょう? UWSC2つ起動してすれば一応は動くのでしょうが重くなりそうで・・・
その熱意があればゲームの開発に参加したほうがいい。
>>516 ライフとマナの監視を順番に書けばいいんじゃね?
どうしても同時にやりたいならthread使えばいいけど 順番でやったほうがいいだろうね
520 :
名無しさん@お腹いっぱい。 :2008/05/19(月) 15:53:19 ID:LQUUjva40
>>516 動作を同時には受け付けないから、スレッド分割する意味はないよ。
それぞれループしてると思うけど、そのループの中に2つとも続けて書けばいいだけ。
sleep()入れるべきだけど、sleep()抜けた最初にチェックするべきはライフかマナか。
回復魔法があるならマナが優先だろうけど、普通はHP回復が優先だろう。
あ、処理をひとつにまとめても、待ちループ中でsleep()はひとつに絞るべき。
先日購入したのですが、初心者なものでEXE化のやり方が全くわかりません。 どのようにすればいいのですか?
釣れますか?
>>521 釣りなのだろうか?
一番右のボタン押して
UWS2EXEをクリック
スクリプト選んで必要ならオプションも選んで「OK」クリック
524 :
521 :2008/05/19(月) 23:56:41 ID:RrkO6zW10
釣りじゃありません^^; ファイル名だけを書いても駄目だったのですが 右にある...をクリックすると参照ができ 作成することができました スレ汚しすみません(_)
ある座標の色が、指定した色に変わったと同時に、指定したキーを一度押す。そして20秒待機。 この操作をしながらいくつかのキーを連打する、というプログラムは組むことが できるのでしょうか?
できます
>>525 いくつかのキーってのが同時押しなのかが良く解らんけど
できるんじゃね?
公式とのマルチじゃん。 自分でやる気ないなら”こんなソフトウェアつくってください”にでも行ってくれ。
529 :
名無しさん@お腹いっぱい。 :2008/05/21(水) 23:56:27 ID:snD+WCDt0
>>525 キー操作がどの関数か分かってるんだから
UWSCとKBDでぐぐったらいいんじゃね?
あと、質問が大雑把杉。
もしかしたら待機中に他のキー操作するのかな。
ていうかなんかのキーを連打しつつ、なんかを監視して条件が一致すれば指定キーを押すのかな?
そういうことならキー操作のたびになんかが変化していくからこーなったらこーするみたいなことで理解できるけど
動作がイメージしにくくて分からない。
もうあからさまなネトゲのマクロ系質問にはうんざり
それをここに書いてなんかメリットあんの?
明日の7時に飯作ってから起こしてくれるスクリプトよろしく。
535 :
名無しさん@お腹いっぱい。 :2008/05/23(金) 10:35:29 ID:K076AzmG0
これ、もっと素早く動かないの?
良く鍛えて手動でやれば速くなる。
記録したマクロをすばやくすることはできる。
541 :
名無しさん@お腹いっぱい。 :2008/05/24(土) 17:04:11 ID:0Ok14byu0
IEGETSRCってもしかしてフレームの中身見れなくね?
>>541 IE操作系は可能な限りDOM使った方が確実だぞ。
例えばこんな感じ。
IE.document.frames("フレーム名"もしくは番号).document.getElementsByTagName("タグ名").item(番号).outerHTML
543 :
名無しさん@お腹いっぱい。 :2008/05/25(日) 09:27:29 ID:uI/JGpW+0
Internet Explorerを操作する際に IE.document.form[0].elements[0].value= 32 などと表記されるのですが、他にどのようなプロパティがあるのかを 調べるにはどのようにすればよいのでしょうか?
chkimgで2番目に一致する画像の座標を取得したいのですが、 調べてみてもいい方法が見つからず、対処方法が分かりません。 どなたかいい案、または解決法をご存知の方、ご教授お願いします。
>>544 一回目の一致はスルーするようにすれば?
一致回数を変数に足して数え上げすればいいんじゃない?
つーか最近質問してる奴、その後どうなったかしりたいんだが… できたのかできなかったのか…
変数Aを変更していきたいのですが上手くいきません どなたかお願い致します tes_00001というIDをセットして次はtes_00002って感じで IDを順番に変更したいのですが 上手くいきません 変数を使わないでtes_00001とかtes_00002として UWSファイルに記入しておくとログインできます SetDataで変数の使い方教えてください 下記は上手くいかないUWSファイルです A=00001 //IDの数字を変更する ////////////// IESetData(IE,"tes_"A"","login") // TEXT A = A + 1
548 :
名無しさん@お腹いっぱい。 :2008/06/06(金) 05:04:19 ID:FDme0qe80
>>547 ログインする前に文字列が正しいか確認汁
手軽な確認方法は PRINT "文字列"
× "tes_" A""
× "tes_" "A"
× "tes_" A
△ "tes_" + "A"
○ "tes_" + A
画像認識で認識した場合、認知した画像だけをクリックすることは出来るのでしょうか ウィンドウの位置がいちいち変わるのでどうやればいいのかわからなくて困ってます。
550 :
名無しさん@お腹いっぱい。 :2008/06/06(金) 09:48:44 ID:FDme0qe80
ウィンドウIDが取得できるならMouseORG()でマウス座標をアプリケーション基準にすればいい。 画像のクリックは、取得した座標またはそれを基準に計算した座標をBTN()に渡せばおk。
すいません自己解決しました
>>548 さん
>>547 です
お陰さまでかなり前進できましたありがとうございます
実は数字部分を5桁にしたいのですが
下記のようにすると数字部分は1桁になり
tes_5というIDになります
これをtes_00005としたいです
もしわかるようでしたらまた教えて頂けないでしょうか
何度もすいません
下記はtes_5となるuwsファイルです
(希望のIDは数字部分が5桁→tes_00005です)
A = 00005
//IDの数字を変数にする
//////////////
IESetData(IE,"tes_" + A ,"login") // TEXT
//結果:tes_5
迷惑行為に協力するな。
>>553 うっかりしてましたありがとうございます
>>554 迷惑行為じゃないですよ
先方のサイトには1ID単位でお金払いますのでむしろ優良会員です^^
>>553 できました
ありがとうございました
i = 0
FOR i = 1 to 99999
i = CHGMOJ(FORMAT(i, 5), " ", "0")//5桁
id = "t_e_s_" + i
IESetData(IE, id ,"login")
クリックする時ある一定の範囲内でランダムにクリックする方法はあるのでしょうか
558 :
名無しさん@お腹いっぱい。 :2008/06/07(土) 19:37:46 ID:9D62L0dl0
RANDOM (Range) // 0 <=X <Range の範囲にある乱数を返す 50〜100なら 50 + RANDOM(51)
>>558 出来ましたどうもありがとうございます。
特定のメモリアドレスの値を取得することって出来ますか?
DLL経由でできるよ
ありがとうございます 何というDLLか教えてもらえませんか
俺はp_memory.dll使ってるな
使ってみます どうもありがとうございました
565 :
名無しさん@お腹いっぱい。 :2008/06/09(月) 12:54:07 ID:V8q+DOZz0
ファイルサイズを取得したいのですが何か良い方法はありませんでしょうか? 例えばファイルサイズが5kB未満のファイルのみ削除というような処理がしたいのです。
566 :
名無しさん@お腹いっぱい。 :2008/06/09(月) 13:30:28 ID:xo+Ed/yr0
DOSのDIRコマンドでサイズ順にソートしたリストを取得。 1行ずつ、5kB以下のファイル名を取得し、 DEL ”ファイル名” のようなリストを作り、ファイル名を .bat 、つまりバッチファイルにする。 作成したバッチファイルを実行する。 DOSコマンドはレイアウトが固定文字数だからCOPYコマンドで必要な部分を取り出せばいい。 他の方法を取るなら、OLEでフォルダオブジェクトからいっこずつファイル情報取り出して処理。 この場合プロパティ・メソッドが分かれば名前を指定するので、場合によっては楽。 DOSコマンドは80文字×行数のレイアウトと文字列操作が自在にできるなら難しくはないけど そこら辺からやるなら難しいかも。 DOSコマンドを使う場合はExecじゃなくてDOSCMD()の戻り値の文字列を使う。 1行ずつの処理はTOKEN()で区切り文字に"#CR"を指定かな。 文字列をイメージで書くと "1行目。。。#CR 2行目。。。。。。#CR 3行目。。。。。。。。。。"
UWSCで エクセルでエラーがでた場合のダイアログの対応をしたいんだけど エラーがでるとUWSCの動作自体とまってしまうようです なんとかなりませんか
COMエラーなら、エラーが出ないような作りにするか、COMエラーを無視するか。 予定外の画面でループに入ってるとかじゃありませんよね?
>>567 それ俺が本家で質問した内容と獄似じゃん。別スレッドで
監視して処理すれば良いと教えてくれたよ。
570 :
565 :2008/06/10(火) 18:55:38 ID:9wU31cQm0
>>566 ありがとうございます!
DOSコマンドの方で実現できそうです!
>>571 2chのことじゃねーよw
ヘルプ見てみろ
573 :
名無しさん@お腹いっぱい。 :2008/06/11(水) 13:53:47 ID:+ocdyabV0
>>571 ここで言う本家とはUWSC作者のうみうみさんのサイトの事だよ
ヘルプからいける
>>572-524 公式サイトの掲示板において
どんなキーワードで検索すればいいのでしょうか?
>>575 エクセル エラー ダイアログ じゃないのか?
見つからなければ
>>567 の通りに質問すればいいかも
自分がエクセルのことわかってたら教えてあげるんだけど
エクセル使わないのでわかんない
本家で聞いてみて
というか
>>569 が答え書いてくれてんのに検索する必要もないじゃん
ダイアログの監視ってのがわかんないんだろ
>>569 が時間のあるときにでもうpしてあげれないのかな
自分の場合はIEなんだけど、iexplore.exeというタイトルの ダイアログが出たらリターン押して回避し、スクリプトを 起動し直す処理として以下の文を別スレッドに書いたよ。 IEを使うスレッドはCOMエラーがでない様にしてる。 procedure error() while true id = getid("iexplore.exe") ifb !(id = -1) SCKEY(id,VK_ENTER) Dim ExePath = GET_UWSC_DIR + "\uwsc.exe " Dim FilePath = "C:\Documents and Settings\unknown\デスクトップ\UWSC\???.UWS" exec(ExePath + "<#DBL>" + FilePath + "<#DBL>") exitexit endif sleep(1) wend fend
うわ2chってtab無視されるんだな、、。
乙です
>>580 掲示板はたいていそうだよ。
UWSCは全角スペースおkだから頭に入れるといいよ。
エディタで半角スペース2個を全角スペースに置き換えればいいからすぐできる。
これって任意のx,y座標をクリックってとうやるの? CLKITEMじゃx,y座標の設定はできないっぽいけど…
BTN、MMVでした
どなたか教えていただきたいのですが、 20日とかかれた物を21日 次の日 21日とかかれた物を22日 と毎日直すルーチン作業をやっているのですが ここで最初の日付のみを定義するだけで作業を完了させたいのですが 置換の部分がうまくいきません 以下作った物を簡略したものです。 x="20日" y=x+1 id = GETID("xxxxx") idd = GETSTR(id) ic=CHGMOJ(idd,"x","y") SendStr(id,ic,0,true) 文字を含む数値に加算していくにはどうしたらよいのでしょうか? 諸先輩方ご指導いただけたら幸いです
文字と数値は分離しなきゃ駄目でしょ。 そのサンプルで言えば x=20 ic=CHGMOJ(idd,x+"日",y+"日") とかでしょ
数値(変数)+文字列じゃないでしょうか? x = 20 y = x + 1 ic=CHGMOJ(idd,"x" + "日","y" + "日") 間違ってたらスマソ
>>587 です
あ、カキコしてる間に被ったorz
スマソ
589 :
585 :2008/06/15(日) 23:52:57 ID:nD2XrmN+0
>>586 >>587 ありがとうございます!
今やったら動作しました
基礎の基礎ができてなかったですorz
明日から早速使ってみます!
ありがとうございました!
手でやった方が時間稼げていいんじゃない化?
複数のIF文を1つにまとめようと思い IFB 条件式 THEN 実行式 ELSE IF 条件式 THEN 実行式 ・・・・・ にしたのですが、IFB CHKIMGを含む条件式の行でエラーが出てしまいました 元の文ではエラーはでませんでした
592 :
名無しさん@お腹いっぱい。 :2008/06/17(火) 15:26:56 ID:bZJXNtcf0
@IFB 条件式 THEN // 後ろには何も書けない 実行式 ELSE IF 条件式 THEN 実行式 ・・・・・ // IFは1行に書く ENDIF // @のIFBの終了が必要 AIFB 条件式 THEN // 後ろには何も書けない 実行式 ELSEIF 条件式 THEN // ELSEIFはIFBのブロック扱いだから@と同じ 実行式 ・・・・・ ENDIF // AのIFBの終了が必要 @の場合、ELSEなので前半と後半のどちらかが実行されるが、 Aの場合はどちらの条件にも当てはまらない場合、何もしないで通過する。
593 :
名無しさん@お腹いっぱい。 :2008/06/18(水) 21:44:15 ID:vzguVllq0
質問です。MS-accessのフォーム上のボタンを押すスクリプトを作成したいのですが 作動しません。COMを使うと言うことですが下記の"InternetExplorer.Application"の 部分をどのように変更したらよいかわかりません。"access.application""msacces. application"などとやってみたのですがaccessが起動しません。 IE = CreateOLEObj("InternetExplorer.Application") IE.Visible = True どなたかMS-accessをCOMで動かす手段を教えていただけないでしょうか。よろしく お願いいたします。
アクセス持ってないので確認できていないんだけど こんな感じではないでしょうか アクセス起動前↓ access = CREATEOLEOBJ("access.Application")//エクセルを起動 既に起動しているエクセルを制御するには↓ access = GETACTIVEOLEOBJ("access.Application",ウィンドウタイトル) access.visible = True 上記でアクティブにならないときはアクセスを起動しておいて uwscの「全ウィンドウタイトルを調べる」で窓名とかのスペルを確認してみてください 制御できるようになればボタン操作はuwscヘルプの通りでできると思います Tabキー使って押す位置にフォーカスを合わせたりボタンを押したりです 子ウィンド名がわからなくなったときは uwscの//【全ウィンドウタイトルの表示】.uwsで調べれば解決できることが多いです
あー見ればわかるだろうけど カタカナでエクセルと書いてあるところはアクセスに置き換えてください エクセルで使えるものを応用しました^^;
596 :
名無しさん@お腹いっぱい。 :2008/06/19(木) 00:28:53 ID:SDl/sose0
>>594 【全ウィンドウタイトルの表示】.uws
でぐぐったら「UWSCコードの断片生成器」とか出てきた。
すげーもん作ってるなあとおもた。
これマクロの構文が実行できなくて途中でとまってしまったときに 自動的かつ強制的にマクロの実行をとめる構文ってふりますか
598 :
名無しさん@お腹いっぱい。 :2008/06/19(木) 02:02:09 ID:SDl/sose0
途中で止まったかどうかを検出できるかわからないけど、 スレッドでタイマー監視(一定時間sleep)して時間が来たら終了とかは出来る。 問題は、トラブルが起きたときに期待通り動くかどうか。
一定時間内に終了しなければ終了ということですか?
>>599 うん。
スレッド間通信でもすれば、とまった時点で終了するようにも出来るけど、
同じ変数にアクセスするとエラーになるから・・
>>597 > これマクロの構文が実行できなくて途中でとまってしまったときに
これがまず判らん。
だなぁ…言葉通りに取ったら 実行できないような構文ではエラーになるからそもそも実行できません。とか言いたくなる
603 :
593 :2008/06/19(木) 16:53:05 ID:ktF13Wok0
>594 レスありがとうございます。試してみたのですが access = CREATEOLEOBJ("access.Application") access.visible = True これを実行すると一瞬画面になにかが現れて消えてしまいます。 タスクマネージャーで見ていてもaccessは現れません。 ところがウインドウのタイトルを調べるスクリプトを追加して以下のようにしてみると access = CREATEOLEOBJ("access.Application")//エクセルを起動 access.visible = True // マウスカーソル下のウィンドウのタイトルとクラス名を表示 While True id = GETID(GET_FROMPOINT_WIN) // マウスカーソル下のウィンドウ moji = STATUS(id, ST_TITLE) + " , " + STATUS(id, ST_CLASS) Fukidasi(moji, G_MOUSE_X+8, G_MOUSE_Y, 3) Sleep(0.2) Wend このスクリプトを実行するとアクセスが起動した状態となりました。この動作の 違いがなぜ起こるのかがわかりませんが、少しスクリプトを書き足してうまく いくかどうかチャレンジしたいと思います。ありがとうございました。
>>603 アクセスの起動は完了しているけど
アクティブにできていない状態なのかな?
自分が以前エクセルを使っていたときは
//エクセル
EXCEL = CREATEOLEOBJ("EXCEL.Application")
EXCEL.visible = True
EXCEL.workbooks.add()//新規作成
SLEEP(3.0)
↑これで動いていたんだよね
そのあと状況によって下記のようなのも使っていたみたい
(どんな感じで使ってたのか忘れた^^;UWSファイルだけ残ってた)
ACW(GETID("Microsoft Excel","XLMAIN"),VK_RETURN)
SLEEP(0.1)
ACW(GETID("カレントフォルダの設定","#32770"),VK_RETURN)
SLEEP(0.1)
アクセスにも使えたらいいんだけど
曖昧な返事でスマソ
がんがって下さい
605 :
593 :2008/06/19(木) 20:47:55 ID:KIGy1Ht30
604様ありがとうございます。uwscとIEやEXCELの関連については色々な所に書いて あるのですがaccessについてはほとんど情報がなく手探りの状態です。COMについて もう少し勉強してみます。 とりあえずMMVを駆使(藁)して何とか実行は出来たのですが、環境を選ばないで実行 出来るようになるのはまだまだ先のようです。
606 :
593 :2008/06/20(金) 08:01:10 ID:A413DB570
アクセスの既存のデータベースを開くことが出来るようになりました。 OpenCurrentDatabaseというコマンドを用いるようです。お騒がせしました。 access = CREATEOLEOBJ("access.Application")//アクセスを起動 access.visible = True access.opencurrentdatabase("ファイル名")
607 :
モカジャバ :2008/06/20(金) 12:27:39 ID:wy+L+eJ10
608 :
593 :2008/06/20(金) 12:44:56 ID:A413DB570
607様ありがとうございます。 プログラムというのがよくわかっていないこともありuwscのコマンドについて 調べていたのですがあまり情報が無く質問いたしました。 COMというのはuwscのコマンドではなくCOMという言語がありそれをuwscから コントロールするという理解でよろしいのでしょうか。
uwsc自体が何に準拠しているのか明確にしていないので仕方ないよ あえて言うならWSHって聞いたことある わからないときはお互い様だ わかるまで質問していいよ でもよく調べたね お疲れです
610 :
593 :2008/06/21(土) 07:57:02 ID:sUem1x2/0
609様、ありがたいお言葉、助かります。 むかしBASICで挫折して以来言語というものに手を出せなかったので 正直VBですら全く理解していません。少しずつ勉強しながら安定して 動作するようなスクリプトを目指します。 WSHがwindows script hostというのを今調べましたが初耳です。 仕事が終わったら図書館に行って関連書籍を借りてみます。 ありがとうございました。
割り込みですみません。 ACCESSのクエリで表示されている特定のフィールド値を最初から順番に取得 するマクロを作成中です。DoCmd.FindrecordやGotoControlを使用し、レコードの 移動には成功していますが値の取得方法がわからず苦戦しております。 どなたか方法をご存じの方いらっしゃいましたらよろしくお願い申し上げます。
xlsファイルで検索文字が完全に一致したもののみに セルに色をつけたいのですが Excel = CreateOLEObj("Excel.Application") Excel.Visible = True Excel.Workbooks.Open(C:\Documents and Settings\sadaharu_hoshi\デスクトップ\test.xls) Excel.Cells.Find(str_Find, LookAt:=xlWhole).Select Excel.activecell.Interior.ColorIndex = 6 上記のコードを実行すると Uスクリプト:SyntaxError 5行目:Excel.Cells.Find(str_Find, LookAt:=xlWhole).Select となってしまいます. どうすれば,完全に検索文字と一致したものだけのセルの色を へんこうできるのでしょうか? ご教示よろしくお願いします
絶対エクセルのマクロでやったほうがいいと思う。 情報量もUWSCと比較にならない
>>613 そうですかぁ
わかりました.マクロの方でやってみます
どうもありがとうございました.
>>612 Find(str_Find, LookAt:=xlWhole)
名前付き引数を使う場合は、全引数に指定する
Find(What:=str_Find, LookAt:=xlWhole)
616 :
名無しさん@お腹いっぱい。 :2008/06/28(土) 00:04:53 ID:b1Whp9d10
ファイルのリネームを行う関数を考えてます Procedure frename( dir, file, name ) DosCmd("cd "+dir) DosCmd("ren "+file+" "+name) Fend このようにカレントディレクトリを指定した後 renコマンドを使うってことは出来ないですか?
617 :
名無しさん@お腹いっぱい。 :2008/06/28(土) 00:18:47 ID:b1Whp9d10
DosCmd("cd "+dir+"<#CR>ren "+file+" "+name) でもダメですね。 複数行はやっぱり無理なんでしょうか
>>616 ren [Drive:][Path] filename1 filename2
だから Doscmd(”ren "+dir file name) じゃダメなのか?
こうじゃね? 自分のやつからコピペだけど推測して doscmd("REN "+"<#dbl>"+ filefolder[n] +"\" + zipfile + "<#dbl> <#dbl>"+ zipren +"<#dbl>")
あぅ… Doscmd(”ren "+dir+" "+file+" "+name) か… スペースあるならDBL関数作っといた方が楽だと思う。
俺ならリネームはFileSystemObject使う。 public FS = CreateOleObj("Scripting.FileSystemObject") objFile = FS.GetFile(fullPath) // リネームするファイルのフルパス objFile.Name = str // strはリネーム後の名前
622 :
名無しさん@お腹いっぱい。 :2008/06/28(土) 01:39:03 ID:b1Whp9d10
どうもありがとう!!
627 :
612 :2008/06/29(日) 15:14:49 ID:y910ZLsm0
>>615 ご教示ありがとうございます
> Find(What:=str_Find, LookAt:=xlWhole)
で指定しましたが,
Uスクリプト:SyntaxError
がやはりでてしまいます.
629 :
615 :2008/06/30(月) 10:17:25 ID:wlnysiba0
>>627 名前付き引数を使うとカスケード呼び出しがNGのよう
一度変数に入れるとOK
range = Excel.Cells.Find(What:=str_Find, LookAt:=xlWhole)
range.Select()
もしくは
Excel.Cells.Find(str_Find, , xlWhole).Select()
630 :
612 :2008/07/01(火) 00:42:50 ID:Fu8k1XEt0
>>629 ありがとうございます.
> range = Excel.Cells.Find(What:=str_Find, LookAt:=xlWhole)
> range.Select()
> Excel.Cells.Find(str_Find, , xlWhole).Select()
勉強になりました.ホントありがとう
すいませんtabコードってなんでしょうか? ぐぐってみてもわかりませんでした 初歩的なことかもしれませんがお願いします
632 :
名無しさん@お腹いっぱい。 :2008/07/03(木) 23:49:57 ID:QhOIn+IH0
文字はコードで表されています。 半角なら1バイト、全角なら2バイト。 だけど、表示できる文字以外に制御コードっていうのも一緒に割り当ててあります。 DeleteとかBackSpaceとかTABとか。 TABコードはテキストの中に含まれていた場合、半角4文字とか8文字のスペースと同等の空白になるのが普通です。 特殊な文字のようでもありますが、本来は制御コードなのでTABコードと言います。 これをキー入力として送信するとアクティブコントロールが移動します。つまり制御します。
633 :
名無しさん@お腹いっぱい。 :2008/07/04(金) 02:14:35 ID:3i9jmRR10
休止状態から復帰してUWSCのプログラムを動かすことはできたんですけど 処理がおわったらまた休止状態にしたいんです。 どういう手段がありますかね?
スタート -> U -> H とかじゃ駄目なの?
自分ならNircmd使うかな… 専用のTool他、たくさん方法はあるんでない?
ある時刻になるまでループする処理を作りたいんだけど "120000"という文字列で12時ジャストにループから抜けるようなコード作れる? 秒数にするサンプルあさってみたがとんでもない数値になって比較しても時間になってもループ抜けない。 どうしたらいいか途方に暮れてるのですがわかる方いらっしゃいますか。
Repert Gettime Until Val(G_TIME_HH2 + G_TIME_NN2 + G_TIME_SS2) > Val("120000") 思いついただけ、確認すらしてない
>>633 なんだ、標準コマンドあるじゃん…
// シャットダウン/電源断/サスペンド/モニタOff
POFF( コマンド )
引数
コマンド:
P_SUSPEND // サスペンド (休止状態)
P_SUSPEND2 // サスペンド2 (スタンバイ)
>>636 // 日付、時間の取得(時間変数に時間を設定する)
戻値 = GETTIME( [±n日, 基準日] )
ではダメ?
これ探して上のを見つけたのは内緒w
ぽふ
640 :
名無しさん@お腹いっぱい。 :2008/07/04(金) 07:39:44 ID:deccdJhu0
>>636 1周2秒以上かかるループで秒数ぴったりをチェックしてもだめですよね。
59秒のつぎは01秒なので、00秒にはなりません。
つまり、12時ちょうどなら
ifb 12 <= 時 then
ifb 0 <= 分 then
ifb 0 <= 秒 then
// これで条件を満たす。
endif
endif
endif
こんな判定条件がいやだというなら単位を秒にそろえて判定
ただし日付が変わる24時を超えることはないので万能でもない。
12 * 60 * 60 + 00 * 60 + 00 <= 時 *60 *60 + 分 * 60 + 秒
時、分、秒はそれぞれG_HHとかのグローバル変数に置き換えてくださいです。
その前にGetTime()の戻り値は秒単位で日付入りらしいので
120000の文字列からGetTime()と同じ形式の数値を作れば
終了時刻 <= GetTime
だけで済む
>>636 GetTimeの戻り値は2000年1月1日を基準とした秒数らしいですが、
日付からこれを求めることはできません。
1年は365日の年と366日の年があるので、
基準日からのうるう年については2月29日の日数を加えないといけません。
そんなめんどくさいこと出来ませんよね。
今日の0時ちょうどの日時が分かればいいので、現在の日時を求め、
単位を日とし、時分秒が小数になるのでこれを切り捨てます。
そしてまた単位を秒にあわせます。
すると今日の0時0分0秒の日時が求まります。
式は↓です。
int(GetTime()/24/60/60)*24*60*60
上記に終了条件の時刻を加えたものをtmとすると終了条件は
tm <= GetTime()
となります。
ていうか午前0時をまたがらないなら
>>637 がシンプルでいいね。
UWSCが時間に動作しないことがまれにあるんで 確認のため動作ログを確認したいのですが UWSCって動作ログをとっていないのですか?
>>642 print 使ったら?
UWSC.LOGに書き込まれるよ
>>643 printをの例文を調べてみたのですが、ちょっとレベルが高すぎてわかりません
簡単にスクリプトの実行したかどうかを記録するにはどうしたらいいのでしょうか
Print "スクリプト実行"
646 :
名無しさん@お腹いっぱい。 :2008/07/04(金) 16:48:50 ID:deccdJhu0
>>645 それだけじゃいつ実行したか分からないからこの2行でやらないか?
GetTime()
print G_TIME_HH2 + G_TIME_NN2 + G_TIME_SS2 + "スクリプト実行"
ログウィンドウには時間でないけど、ログファイルにはちゃんと時間が記録されてるよ
そなん? ログファイル見たことないから知らなかった。
650 :
名無しさん@お腹いっぱい。 :2008/07/04(金) 22:52:05 ID:3i9jmRR10
651 :
名無しさん@お腹いっぱい。 :2008/07/04(金) 22:52:51 ID:3i9jmRR10
ちなみにUWSCからメール送信とかは難しいですよね?
Outlookをアクティブにして AltF+N+M(新規メール) 宛先をSenstr TABキー、2回送る 件名をSendStr TABキー一回 本文SendStr Alt+S(送信) 難しいか?
チェーンメールコワス
ありがとうございました><
655 :
名無しさん@お腹いっぱい。 :2008/07/04(金) 23:15:00 ID:3i9jmRR10
>>652 UWSCのスクリプトから直接は無理ですかね?
656 :
名無しさん@お腹いっぱい。 :2008/07/05(土) 00:36:29 ID:ChaTk63p0
>>655 UWSCそのものにはそういう機能はない。
OLEで送信できるツールはあるらしい。
あと、DOSのコマンドラインで送信するツールもある。(これはパスワード入力なのでセキュリティなし)
メール送信のサンプルスクリプト付いてただろ
658 :
名無しさん@お腹いっぱい。 :2008/07/05(土) 08:25:51 ID:ChaTk63p0
サンプルはuwscがインストールされてるとこだよ
660 :
名無しさん@お腹いっぱい。 :2008/07/05(土) 13:03:29 ID:ChaTk63p0
>>659 見当たらないけどバージョンは?
有料版だけとかじゃね?
インストールするだけなら金払わなくていいし、やってみればいいんじゃね
スパマに協力しない。
663 :
名無しさん@お腹いっぱい。 :2008/07/05(土) 21:23:05 ID:F4EdzD4S0
全然詳しくはないのですが分からない事があったので質問させてもらいます。 Microsoft Virtual PCで本PCから仮想PCの操作をしようと思ったのですが、 ACWとMOUSEORGとBTNで座標等の指定をしてもカーソルが画面の淵に行ってしまいます・・・ 他に何が必要なのでしょうか(´・ω・`)
665 :
名無しさん@お腹いっぱい。 :2008/07/06(日) 09:38:31 ID:l+fd55Q80
>>664 仮想マシンの場合、ホストとゲストそれぞれにマウスがあることになってますが、
ゲストを操作してるとき、実際にはホスト側のマウスは非表示になっているはずです。
ゲスト操作モードの場合は表示されているカーソルはゲストのもので、
UWSCが操作したのは見えないホスト側だったりして、操作と実際がちぐはぐに見えることがありますが、
クリック自体はできるはず。
ゲストのマウス操作は仮想マシンのドライバがホスト側マウスを監視してゲストに反映させていると思いますが、
UWSCによる操作を仮想マシンが拾えてないからかも。
VMwareの方はクリックしてみればマウス表示も反映されるので、操作はできると思います。
ただし、ゲストマシンは画像としか認識できないので文字やウィンドウIDで指定して操作できません。
純粋に座標のみでの指定になるので、全画面表示で固定のレイアウトである必要があります。
また画面サイズも固定しなければなりません。
ちなみに仮想マシンの窓枠を基準にした座標になるので、
ツールバーとかの配置次第で仮想マシンの座標も変わってきます。
よく分からないけどとにかくゲストにペイントを全画面で表示してクリックしてみるのがいいかと。
htmlファイルの中に抜き出したい行が複数行あるのですが どんな方法がありますか? 抜き出したい所の記述は <html><body> 〜うだうだ〜 <---ここから開始---> 抜き出したい部分 <---ここで終了---> 〜うだうだ〜 </body></html> という記述です。 特定の文字があれば、抜き出したり 同じ行番号なれば指定出来るのでしょうが 全部が全部ランダムなのでどうしようかと・・・ 自分的には唯一どのファイルにも特定している<ここから開始><ここで終了> という部分を使えばいいと思うのですが、それをどう料理していいのか 長文になりましたが、何かいい方法ありませんか?
>>666 > 特定の文字があれば、抜き出したり
<---ここから開始---> と <---ここで終了---> は
特定の文字のようにに見えるのだが、なにかダメな理由があるのか?
「〜うだうだ〜」で抽出すればいい。
669 :
名無しさん@お腹いっぱい。 :2008/07/11(金) 11:07:24 ID:KCN23mY00
>>666 悪魔のような質問者ですね。(数字的な意味で)
> 全部が全部ランダム
なら、抜き出したい部分をどうやって特定してるんですか?
質問の仕方が下手で申し訳ないです。
それと、仕事が夜なのでレスが遅くなりました、重ねてお詫びします。
自分で読み返した所文章がおかしい事に今更ながら気がつきました。
「抜き出したい所の記述」ではなくファイルの中身の記述が
上記666のような中身の構成になっておりまして、
必要部分が<---ここから開始---> <---ここで終了--->の間の文章となっております。
>>667 さん
駄目な理由は無いのですが、その唯一どのファイルにも共通の記述
<---ここから開始---> と <---ここで終了--->
で挟まれてる文章の抽出方法がわからないのでお知恵を拝借したいと・・・(汗
>>668 さん
「〜うだうだ〜」の所を削除しようと思うも、「〜うだうだ〜」がランダムに記述されているので
特定の方法に手を拱いております。
今の所前半の〜うだうだ〜は特定の行番号で終わっているようなので、
1行削るのを指定行数分ループさせて削っているのですが
後半のうだうだの開始位置=<---ここで終了---> の記述行が数行ずつ+にも-にも
ずれているので手詰まり状態ですorz
>>669 さん
今気づきました・・・不吉ですね(汗
ややこしい質問をして申し訳ないです。
抜き出したい部分が特定出来ないのでここでお知恵を拝借したいと思っています。
辛うじて<---ここから開始---> と <---ここで終了---> で挟まれている文章という事しか提供出来ないのです。
判り難い質問まことに申し訳ないです。
宜しくお願いします。
ファイルオープンして <---ここから開始--->が出るまで1行ずつ読み込んで <---ここから開始--->出たら <---ここで終了--->が出るまで1行ずつ読み込んで 抜き出し処理 これだけの話じゃない…ヘルプのスクリプト関数 - ファイル関連を読みましょう
たしかにFOPEN,FGET,FDELLINE,POSでできそうだな。
<---ここから開始--->と<---ここで終了--->が定型文なら cmdのfindstrで行番号探してから抜き出してやる方法もある。 (uwscで一行づつ読込み、判定させるよりは早い)
674 :
名無しさん@お腹いっぱい。 :2008/07/12(土) 06:38:44 ID:yIjoMxpX0
UWSCはFirefoxに対応してるんですか? 下記の命令をFirefoxで行う方法教えてください @UNTIL !IE.BUSY AND IE.READYSTATE = 4 AACW(GETID,) BIESetData(IE,True,"","")
676 :
名無しさん@お腹いっぱい。 :2008/07/12(土) 12:50:12 ID:J6VPGUm10
>>675 対応してません。
本家掲示板でもその質問はあったと思いますが。
正確には、FireFoxはOLE機能を提供してないので
Webページのオブジェクトにはアクセスできません。
FireFoxは拡張できるのが特徴なので、OLE機能を提供するプラグインをインストールし、
それを利用することでIEのように操作することが可能になるようです。
もうちょっと簡単な方法は、FireFoxのウィンドウにIEを取り込んで使う方法で、
これは実質IEを開いてるのでIEと同じように操作できるはずです。
これもプラグインのひとつです。
>>676 詳しくありがとうございます
了解しました
STOPFORM(true)
Dim oHttp // 通信オブジェクト
url="
http://mamono.2ch.net/newsplus/subject.txt " // スレッド一覧
conturl = "
http://mamono.2ch.net/test/read.cgi/newsplus/ " // スレッド保存場所
DIM text= "2" // 投稿テキスト
oHttp = CreateOLEObj("MSXML2.XMLHTTP")
IE = CreateOLEObj("InternetExplorer.Application")
IE.visible = True
ID = HNDToID(IE.HWND)
LastModified = "Thu, 01 Jun 1970 00:00:00 GMT"
sleeptime = 1
while 1 // 監視ループ
sleep(sleeptime)
Gettime()
COM_ERR_IGN //COMエラー無視
oHttp.Open("GET", url, True )
oHttp.setRequestHeader("If-Modified-Since", LastModified);
oHttp.Send("") // スレッド一覧の取得
ifb 200 = oHttp.status Then
sleeptime = 3
else
// エラーのたびに間隔を長くして監視を継続する。
sleeptime = sleeptime + 10
continue
endif
LastModified = oHttp.getResponseHeader("Last-Modified")
ifb COM_ERR_FLG continue endif COM_ERR_RET //エラー処理復帰 // ファイルの取り出し str = DECODE(oHttp.responseBody, CODE_BYTEARRAY) // IEウィンドウが閉じられていれば終了する。 if !IDToHND(ID) Then break // スレッド一覧から、レスのついてないスレを検索する。 ThreadNo = 0 for TCnt = 1 to 50 str1 = token( "<#CR>", str, true, false ) Ifb 1 < Pos("(1)", str1) Then str2 = CopyB( str1, 1, 10 ) ThreadNo = Val(str2, -1) if -1 = ThreadNo Then continue 2 endif next // 新規のスレがあれば、投稿処理 Ifb ThreadNo Then ret = Cont( IE, conturl, ThreadNo, text) Gettime() ifb ret Then // 投稿したら130秒待つ。 sleeptime = 130 else sleeptime = 5 endif Endif wend
>>678-679 は2ゲットスクリプトの一部で、
ニュース速報+のスレッド一覧から新規スレを検出し、投稿処理を呼び出す。
以前、HTMLファイルを受信していたが、これだと混雑時に更新しないしエラーでまくり。
テキストファイルをゲットすればサイズも小さく、鯖への負担も軽いし、
何より、かなり確実に更新される。
たまに10秒くらい遅れてる感じだけど。
Subject.txtで取得したテキストは、メモ帳に送るとなぜか改行コードが消えてたので
区切りを検出できないと思ってたけど、内部で<#CR>を区切りにしてみるとちゃんと1行ずつ取得できた。
HTMLを処理するよりだいぶシンプルになった。
スレッドの番号はエポック秒(1970年1月1日を基準にした秒)なので、
GetTime()の戻り値に946652400を加えるとスレッド番号になる。
実際にはその番号のスレがあるかどうかは、取得してみないと分からないが、
逆にスレ番から946652400を引いた数値とGetTime()の戻り値を直接比較するのに便利。
たとえば、現在時刻から何秒前までのスレ番を抽出したり、
UWSCでは日付を指定して取得することもできるので何日前から何日前までのスレ番を抽出したりとかできるかと。
まあ応用は勝手にそれぞれやればいいけど、効率的な方法があるってことで。
2ゲットは惜しみなく奪う(時間的な意味で)
682 :
670 :2008/07/14(月) 01:40:53 ID:TCAGfTzi0
みよう見真似で CONST AA = "test.txt" File_ID = FOPEN(AA, F_READ) if File_ID < 0 then EXITEXIT BB = fget(file_id,-1) CC = "" EEE = Pos("<---ここで終了--->","<---ここで終了--->") for i = EEE to BB CC = CC + FGET(File_ID, i) + "<#CR>" next print CC <---ここから開始--->は行番号が決まっていたので、 その行までループで削除するようにしましたが、 後半部分の<---ここで終了--->以降全部削除しようと思うも 検索対象のEEEがどうにも反応してない様子です。 何処か変ですか?EEEだけをプリントで出力すると1と帰ってくるのも変な気がするのですが(汗 ヘルプによると(1から)と記述されてるので、記載されてる行番号が表示されないとおかしい気がするのです・・・
EEE = Pos("<---ここで終了--->","<---ここで終了--->") for i = EEE to BB ここ、2行とも間違ってる。 Posはキーワードが出てくるところまでの文字数を取得するけど BBはファイルの行数。 文字数から開始して行数まで繰り返すのは間違ってる。 「ここで終了」ってキーワードを行単位で探して、次の行からを連結するんなら // キーワードの検索 行数 = fget(file_id,-1) cnt = 1 for i = cnt to 行数 cnt = i text = fget(file_id,cnt) If Pos("<---ここで終了--->", text) Then break next // キーワード以後の連結 CC = "" for i = cnt to 行数 // ここで初期値に使うcntが cnt = i text = fget(file_id,cnt) CC = CC + text + "<#CR>" next って感じでやるんだけど、改行つきテキストを連結してどうするんだろ。 FPut()で出力できるのは1行ずつな気がするけど。 アドバイスというかお願いだけど、一つ一つ、ひと塊ずつ、変数に代入するたびprintとかして 期待したとおりになってるか確認してください。
動画配信サイトyoutubeでタイトルと埋め込みタグembedを自動で集めたいんだけど
どこに質問してもわからないのでどなたか教えてください
recIEで記録させてみるんですけどIEナビゲータはURLを記録します
同じ動画(同じURL)は必要ないのどうしていいのかわかりません
下記のアドレスはyoutubeで「マジック」を検索したものです
http://jp.youtube.com/results?search_query=%E3%83%9E%E3%82%B8%E3%83%83%E3%82%AF&search_type=&aq=1&oq=%E3%83%9E%E3%82%B8 動画が20個出てきます
動画の部分もしくはリンクをクリックすれば
その動画のページにジャンプします
動画のページでは左側にテレビ画面、右側に埋め込みタグ(embed)があります
このタイトルとembedを記録保存したいんです
タイトルとembedをメモ帳などに保存したら
先ほどの20タイトル並んだ画面に戻り
次の動画で同じようにタイトルとembedを記録したいです
20タイトル終わると
”次へ”をクリックして
次の20タイトルも同じようにタイトルとembedを保存したいです
つまり「マジック」に関する動画のタイトル一覧表みたいなものを
自動で作る方法を探しています
どなたか優しい方、丸投げでお願いいたしますm( _ _ )m
685 :
名無しさん@お腹いっぱい。 :2008/07/15(火) 18:06:35 ID:Z+obuikc0
ユーザー切り替え後も切り替え前のユーザーで連打とか動作し続けるツールはありますか?
686 :
名無しさん@お腹いっぱい。 :2008/07/15(火) 21:27:17 ID:mnZsQEf80
そういうことは無理だと思うけどXPのマルチログオンで 他のユーザーとオーディオデバイスは共有してるから、 キーボードを共有状態にできればやれるかもね。 デバイスドライバとして動作するキーボードマクロならもしかしたら可能かもしれないけど パスワードの設定があると他のユーザーでログインすらできないんじゃないかな。 あと、Vistaからはサウンドもユーザーごとに切り替えられるから無理なはず。
>>685 >切り替え前のユーザーで連打
ああ
勘違い
裏で継続できるかってことか。
・・・
とりあえずUWSCはログイン画面に戻るとフォーカスを失ったような状態なのか、 キー入力はとまる。 「アプリケーションに直接送る」では、期待通りの動きはしない。 メモ帳に送ってみたが、文字が入力されない。 キー操作が入らない2ゲットツールなら問題なく動いた。
スケジュールって秒単位の設定できないの? Web特価品の自動購入したいけど、試してみたらワンテンポ入れて実行されるみたいなんだよね。 Windowsの時計を一秒遅らせるとかするしかないんだろうか?
>>689 数分前にスケジュールで起動して
プログラムで秒単位で指定した時間に開始するような条件式を作ればよくね?
>>689 > Web特価品の自動購入
よくそんな恐ろしいことする気になるよな。
> Windowsの時計を一秒遅らせる
時計なんてすぐ狂うから意味ないしょ。
特価品のページが更新されたかをチェックしてループするのが確実。
Webページの更新日時も取得できるけど、自動的に広告が挿入されるのが最近の主流なので使えない。
ページ内に日時が書いてあれば利用可能。
自動購入というか、マウスの動作覚えさせてその時間に誤差なくボタン押してくれれば良いんですよ。
誤差を1秒以内に納めることは出来るかもしれないが、誤差無く…は無理でしょう
Webページって通信状況とかによってだいぶ時間がずれますよ。 2げっとツールでも3秒で投稿できるときもあれば10秒以上かかることもあるし。 それから、テレビ用の2代目のHDDとかはたいてい回転止まってるんで、 テレビ起動するとき5〜10秒くらいスピンアップのために動作が止まったりします。 より正確に実行するには、1分前には起動し、 ページの表示も済ませておいて、ボタンを押すだけの状態にしておくことですね。 でもその日公開されるページを真っ先にということなら、 1分前から数秒おきに更新してチェックする必要があると思います。 その場合、IEを使うと、確実に再表示できるのは5秒に一回くらいです。 待ち時間を0にすると、毎回表示にかかる時間が違うので 1回あたりの実行時間はだいたい3秒くらいでばらつきがあります(2chのSubject.txtの場合) しかし、キャッシュを取ってくる可能性があるので100%ではありません。 だからある程度大雑把にしか動作しないんですよ。 しかも上述したのはIE.Navigateすら使わない効率的な方法を取っての話なので、 ページにもよりますが十秒間隔で更新チェックできればいいほうじゃないでしょうか。
流れぶった切ってすいませんが Vistaを使ってまして通常はシャットダウンでPCを終了してますが uwscを使う時だけスリープにしたいのです uwscから簡単にスリープにする方法が何か無いですか?
スリープ状態から動くかも問題だね
Flashベースのソフトを自動化したいのですが、 ハンドルの取得ができません。というかクラス名がわかりません。 どのようにしたら調べられますか? ちなみにブラウザ上で動作するものではありません。
699 :
670 :2008/07/20(日) 00:28:34 ID:I4f/l7Cx0
>>683 超亀レスすみません。アドバイス有難う御座いまた。
いまいち、思った通りの動作をするスクリプトを組めなかったので
かなり遠回りなやり方で事無きを得ました。
レスして頂いたのに呑み込めなくて申し訳ないです。
有難う御座いました。
>>697 695ですがお礼が遅くなってすいません
望んでいたとおりの動作して感動です
もうメッチャ愛してるw ありがとね〜
>>701 完全なタイトル か 検索一覧のタイトル どっちを拾いたいの?
> つまり「マジック」に関する動画のタイトル一覧表みたいなものを
> 自動で作る方法を探しています
目的はこれだけ?
> embed
どの部分か教えて。興味ないから全然知らん。
眠いからとりあえず寝る。
CSSだから作りきれるかわかんなそす。
>>703 それぞれのタイトルまたはサムネイルをクリックすると
その動画のページに飛びます
出てきたテレビ画面の上にあるタイトルです
テレビ画面の横に説明と埋め込みタグがあります
>>684 の1つめを例にしたら
「人体切断マジックを透明な箱で種明かし」 これがタイトルです(テレビ画面の上にあります)
テレビ画面右側に↓このよいうにありますので、その下にEMBEDがあります(クリックしないとコピー出来ないようなんです)
投稿者: aiaiaiai00
メンバー登録: 5 か月前
動画: 17 チャンネル登録しますか?
YouTube にログインしよう
Google アカウントでログイン!
追加日: 2008年02月22日 (詳細)
人体切断マジックを透明な箱で種明かし
追加日: 2008年02月22日 (情報を減らす)
人体切断マジックを透明な箱で種明かし
カテゴリ: 映画とアニメ
タグ: 人体切断マジックを透明な箱で種明かし URL:
カスタマイズ 埋め込み:
<object width="425" height="344"><param name="movie" value="
http://www.youtube.com/ 〜2chの文字数制限のため省略〜425" height="344"></embed></object>
このオブジェクトから始まるタグとタイトルを保存していきたいんです
よろしくお願いいたします
>>705 です
これ何故かどこに聞いても絶対に教えてもらえないんです
いつもどこかから
>>704 (偽質問者)のような人が現れて「自己解決しました」とか「もういいです」とか
適当に質問者のように振舞ってその質問を終わらせようとします
UWSCのみなさん是非ともご協力お願いいたします
色んなyoutubeサイトや攻略本や裏ツールとか探しては質問するんですが
必ず邪魔が入って解答なしです
誰かに「それできませんyoutubeの仕様です」とか邪魔されたこともあります
(そういう解答があればみんなその質問はスルーするからです)
youtube自身がembedを提供しているのにembedを取れないはずはないと思うのです
UWSCのみなさん何卒よろしくお願いいたします
頭が無いなら手動でやればいい。
↑こういう人ばっかりです
他で聞いても絶対教えないように工作してくる人がいてるんです
どなたか
>>684 お願いします
丸投げでお願いします。とかいう馬鹿をついからかいたくなるんだよ
特定のサイトに、高負荷をかける事も出来るから、教えないんじゃないの?
>>708 そもそも妨害する程のレベルの質問じゃないw
病院行った方が良いんじゃないの?
久々にスレが伸びてると思ったら夏厨か。。
>>684 YouTubeのような複雑なサイト作れる人がいたとしてもやらないだろ。
あほらしい。
2ゲットツールも改良重ねて正味2週間くらいはかかってるのに。
人間がやる場合F5連打して発言するだけのものをですよ。
このスレで一番ソースを投稿してるボクがやらないのに他にやる人がいるとは思えません。
もし作ってる人がいるとしたらリンクはるかもとは思ったけどいないから
いくらお願いしても無理ですよ。
そんなに欲しければ金払って作ってもらうか、自分で作るかですよ。
まあ、YouTubeくらいのサイトなら結構自動化してる人はいてもおかしくないけど・・・
本家掲示板のほうが出てくる可能性は高いと思いますよ。
>>703 に、作ってもいいって人が出てきてて具体的なこと聞いてるのに
>ありがとうございます
の一言しかないんじゃ、話が通じてないってのもあってやってもらえないでしょう。
と思ったら
>>705 に書いてたか。
誰が書いてるか分かるように、名前欄に684って入れるといいよ。
妨害するまでもなく、ID変更されててわけ分からないから。
>>どなたか優しい方、丸投げでお願いいたしますm( _ _ )m ワロタ
自己解決しました。ありがとうございました
723 :
684 :2008/07/21(月) 19:57:03 ID:nWr2udRv0
>>718 どうも邪魔する人が必ず現れるんですよ
2ゲットツールで自慢してる人みたいにどーでもいいことで自慢してるけど
役に立つものは作らない
つまり煽りだらけなんです
youtubeのAPI開設サイトでも
サムネイルの作り方は解説しているのに
タイトルとembedを取得して一覧表を作る方法はどこにも解説されていません
これが一番キモだから大事な部分だから教えないようにしてるんでしょうか?
簡単だとかなんだとか言うのは聞き飽きたのでどーでもいいです
どんだけ自分に対して自慢されてもわかんないので自慢になっていないですよ
自己満足の煽りはお控え下さい
どなたか
>>684 お願いします
>>722 さんありがとうございます
スグ確かめます!
>>723 > 役に立つものは作らない
役に立つって言うか、クラック専門なんで。サーセン。
726 :
名無しさん@お腹いっぱい。 :2008/07/21(月) 20:11:31 ID:3mDElLwP0
仕事として金もらってやってる人って、自分は役に立つことしてるって威張ってるけど
書き込み見ても分かるように他人の迷惑も考えない自己中なんだよね。
立派なもん作ったぞって威張ってるけど四国に誰も通らない橋3本もかけたり
無料道路と平行に、誰も通らない有料の高速道路を作ったり
わけ分からんことのために他人の金を勝手に使いまくり。
それを批判すると、金を無駄に使ったことこそが俺の仕事であり偉大さであるとかいう変な威張り方をして
他人の金で養った部下を使って暴力振るいまくり。
ボクも関係ないこと書いてるけど同じことを何度も書いてレス数が1000まで行ったら
このスレがdat落ちしてしまって書いたことが無駄になってしまう。
まあボクの書き込みをごみ呼ばわりする人だから、ごみ掃除してすっきりした位にしか考えてないんだろうね。
>>708 >>710 >>712 >>714 >>716 >>721 だから社会人ってむかつく。
地位の高いやつって殺したくなる。
727 :
684 :2008/07/21(月) 20:12:24 ID:nWr2udRv0
不快な思いをされた方、本当にすいません
神が現れたようなので私はこれで消えます
>>722 さん
>>684 です
教えていただいたオブジェクト試してみました
バッチリです!
驚きました凄いです!
このオブジェクトの取得とあわせてタイトルを取得してタイトルとオブジェクトをメモ帳に保存する
次の動画ページで同じ作業
20回繰り返したら検索ページの”次へ”で次の20タイトルって感じなんです
お手数をおかけして本当に申し訳ないですが
是非とも教えてください
何卒よろしくお願いいたします
[email protected]
729 :
670 :2008/07/21(月) 23:50:04 ID:QW9F5Wts0
htmlタグの文章を置換する時何か良い方法ないですか? 「""」を多様してる箇所だと サソ = "" カコ = "" サソ = "" testes(アオ+カコ+サソ) としてごまかしてるんですが、流石に<body>タグとかだと ""がかなり出てくるので区切るのも疲れるというかなんというか
730 :
670 :2008/07/21(月) 23:50:44 ID:QW9F5Wts0
名無しに戻るの忘れました。スミマセン
すみません、正規表現でどうにかなりました。 失礼しました。
ID:hnxMA1ZS0 はどうしてるんだろ。 自慢すると反吐が出るらしいから作ったものを人に見せたりしないのか それともどっか別のところにうpしてるのか・・・ おっと給与明細の時間だ
733 :
703 :2008/07/23(水) 01:45:59 ID:ZO1AyJyI0
>>732 作ってるよーww
それ明らかに厨の書き込みだし
@重要なところはページ遷移だけ
なぜか 次へ が押せない だから別のアプローチで
細かいとこはループ抜けとか
>>733 さん
>>684 です
お忙しい中、本当にありがとうございます
当方IERECの応用の仕方もわからないので本当に恐縮です
気長に待っていますので
お手すきのときにでもよろしくお願いいたします
735 :
684 :2008/07/24(木) 16:29:14 ID:s9fkplSK0
>>732 さん
>>684 です
>>703 さんの名誉のために記載しておきます
先日から連絡を取り合って私の要望など聞いてくれました
プロジェクト名や内容も決定しました
本日、送ってきてくれました
ハッキリ言って驚くぐらい凄いです!
そのツール名や内容は703さんに著作権があるので
ここで私が公開できませんがとにかく凄いツールです
703さん、このツールはマジで購入する人が居てるのではないでしょうか?
732さんが703さんを疑っているようなので
おせっかいのようですがツール完成を記載しておきます
(・∀・)
737 :
732 :2008/07/24(木) 23:29:10 ID:y26Qkfrh0
コピペで済むような決まりきったことならググればヒントくらいは出てくるけど 作るのはそれなりに大変なんですよ。 だから疑ってるというよりは心配してたってのと、 まあいただけるものはいただこうかと。 あと、たまたま作ってくれる人がいたけど、 手間のかかるものをわざわざ無料で作ってくれるひとなんてめったにいないんだから それを親切に教えてあげたつもりだったのになんか悪意に取られちゃって心外でした。 まあすぐ上のレスも見ずに投稿したのも不注意だったけど それ前提に書き直すのめんどくさいしどうせひとつの意見だしいっかと。 まあ長々といらんことをと思われるかもしれないけどなんか誤解されてるようなのでね。
妨害工作だ。とか妄想癖がある人なんだからしょうがないよ…相手にするだけ無駄
ボタンを画像認識して勝手に押すマクロを作ってみたけど、ボタンが出るまで待つようにしたい場合。 while (G_IMG_X > 0) ifB CHKIMG("test.bmp",0,450,600,630,625) //画像認識設定 BTN(LEFT,CLICK,G_IMG_X,G_IMG_Y) //クリック Endif //判定終了 wend じゃダメなんだろうか。 G_IMG_Xは予約されてて一行目で0に初期化することが出来ないし、MsgboxでG_IMG_X表示させてもG_IMG_Xとしかでない…
740 :
名無しさん@お腹いっぱい。 :2008/07/27(日) 21:28:43 ID:LaD016mP0
>>739 BTN Clickしたあとbreakでループ抜けないと。
あと、ボタンってボタンだけが出てくるわけ?
ダイアログと一緒にボタンが出てくるってことなら、
ダイアログのウィンドウ範囲をStatusで取って、その範囲だけ見るようにしたほうが効率的。
あと、ボタンはフォーカスがあるときとないときで見た目が変わってくるから・・・
741 :
739 :2008/07/27(日) 22:31:36 ID:h1+dSzEi0
Break忘れるとは…追加してきます。 ボタンの位置は固定なので、画像認識範囲を手動で設定しました。 ダイアログが出る場合にはStatusで範囲が取れるんですね。 他の作業で使うときに組み込んでみます。 ありがとう。
742 :
703 :2008/07/28(月) 00:42:56 ID:LX3P57sV0
>>742 あ、703さん
684です^^
更新バージョンもありがとうございます
(今、メール出したよ^^)
この度は本当にありがとうございました
検索文字を変更しながら次々に自動でファイル保存できるのはとても便利なので
私以外の方も反応あると思いますよ^^
お忙しい中、こまめなバージョンアップまでして頂き心から感謝しています
本当にありがとうございましたm(_ _)m
>>742 そんな教えたがり作りたがりなら公式掲示板から出ない方がいいね
しこしこ自作したのを公開するサイトでも作ればいい
745 :
732 :2008/07/28(月) 10:24:31 ID:XV3kAofM0
>>742 使ってみたよ。
コメントなしで200行にさらに機能追加か・・・大変だね。
リスト取れて便利かもしれないが、、、
リストを作るのが目的ならスペック的に改良の余地がある。
大量に資料を作るのでない限り必要はないけど。
僕も作ってうpしてるけど、結構「うごかん」って言われる。
他人の環境で動くように作るのって大変。
バージョン違いとか吸収する作りにするより、変更しやすいようにしとくのが簡単な解決法だったりする。
// ボタン類(チェックボックス、ラジオボタン)の状態を返す CHKBTN( ID, アイテム名, [番号, ACC指定] ) ↑の前後に何も無いアイテムをチェックしたいので アイテム名がわかりません>< 何らかの方法でアイテム名を戻値にでも格納する方法ってないですか?
>>744 残念ながらオンゲの癖で公式は常駐してない
指で数えられるほどしか見てないし
そんなに需要あるの?
>>745 > 僕も作ってうpしてるけど、結構「うごかん」って言われる。
Windowsフォームならしょうがないんじゃ?w
IEオブジェクトは6と7で同じコードで動くから書きやすい
> 変更しやすいようにしとくのが簡単な解決法
public が多くなるのには同意w
>>746 よくわかんない
Winアプリの話?それともWeb?
Webだったらページ教えてくれた方が早いかもね
748 :
名無しさん@お腹いっぱい。 :2008/07/28(月) 22:43:38 ID:XV3kAofM0
>>746 名前がないなら、CHKBTN( ID, "", 番号 )
って感じで、番号だけ指定すればいい。
レイアウトが変わるようなものでも、ボタンのID(WindowsのコマンドID)が分かれば
SendMessageで操作できたりするけど無理だろうね。
メニューならツールあるからできるけど。
>>747 CHKBTN()でクリックできるのはWinアプリだよ。
>public が多くなるのには同意w
?? あんまり使わないけどね。
どういう組み方してるのか知らないけど・・・
他の人の作ったの参考にしてる?
僕は・・他の人のは何が書いてあるかさっぱりだから見ないけど。
749 :
746 :2008/07/28(月) 22:47:56 ID:cxi8sfU50
>>747 winアプリです やっぱ無理かなー
しかもスクリーンショットしか無いの
一応 怪しい文字列を狙って↓を試させたけどダメだったみたい
戻1 = CHKBTN(ID,"選択",1)
戻2 = CHKBTN(ID,"選択",2)
MSGBOX(戻1 + 戻2)
チェックボックス自体は標準的なアレだから名前さえわかればなんとかなりそうなんだけどね
スクリーンショットうpは勘弁 会社名とか入っちゃてるし
>>748 お! ありがとうです 早速""で試してみます 愛してます
>>748 > CHKBTN()でクリックできるのはWinアプリだよ。
それは承知してるw
文章からして聞かざるを得なかった
変更しやすいようにしとくってそういう意味じゃないの?
参考にはしないね
でも解析の勉強では他人の見るよ
>>751 > 変更しやすいようにしとくってそういう意味じゃないの?
public ってどの関数でも共通で使える変数でしょ。
全体の処理を、単純にStart、Main、Endみたいに部分で分割する場合には
グローバル変数を使いまくるのはかまわないと思うけど、
関数化ってのは、使いまわししたり入れ替えてみたりってのが主な目的なのに
グローバル変数なんか使ったらそういうことがやりにくくなるでしょ。
関数内部で宣言したものをpublic で直接アクセスさせるのは、
クラス変数(MODULE)の初期化とかを単純化するのに便利ではあるけど・・・
あと、WindowsAPIなどで使う固定値、たとえば
def_dll GetWindow(hWnd,long):long:user32.dll
Public GW_ENABLEDPOPUP = 6 // ポップアップウィンドウ
なんてことは必要かどうか知らないけどやる。
def_dllなんて先頭でやっとかないといけないけど、使うときは関数内だからね。
ダイアログとかのID取るときに使ってるんだけどね。
GetWindow( IDToHnd(PID), GW_ENABLEDPOPUP )
欠点は、メニューとかツールチップとかまで取得してしまうから、
ダイアログIDが欲しければそれを無視しないといけない。
>>751 話はそれたけど、 public なんてそういうときしか使わないと思う。
関数内で使いたければ引数で渡せばいいわけで。
関数は依存関係をできるだけ少なくするべきなんですよ。
引数で渡さない場合はコメントにでも書いておかないと。
変更しやすいというのは、プログラムでは基本だけど、ちゃんと変数宣言をしてコメントで説明するとか、
データや設定は別のファイルに・・とか。
クリックするボタンが”送信”とかなら直接
ClkItem(ID, "送信") とか書いちゃうけど、
Webサイトによって違う用語なら変数宣言してファイルの先頭だけ見ればいいようにとか。
2ゲットツールで言えば、投稿するテキストは先頭で
TEXTBLOCK text1 // 投稿テキスト
もうクソスレは〜〜
ENDTEXTBLOCK
って宣言しとけばAAでも見やすいし変更も簡単だし。
これを別ファイルでもつ場合、複数行なのでデータファイルとしては使いにくいから
TEXTBLOCKで宣言したファイルをCALLしちゃうとか。
はっきり言って手抜きではあるけど労力は少なくて済む。
これを関数で分割した場合、変数をグローバル変数として直接使おうとすると・・・
少なくとも変数名は合わせないといけなくなるけど、
引数で渡せば、関数の中では、関数の外のことなんか気にしなくてよくなる。
IEオブジェクトのようなものは普通に引数として渡してコピーを作ると多分おかしくなるから、
グローバル変数にするか、Var宣言して直接参照が必要だと思うけど、
グローバル変数は変数名の問題があるから使わない。
スレッド化するときはIEオブジェクトはグローバル変数でもVar宣言でも問題が出てくると思う。
754 :
753 :2008/07/28(月) 23:59:19 ID:XV3kAofM0
GetWindow を使うのが特定の関数だけの場合でも DefDLLを関数内で宣言できないっぽいよね。 だから使うときはDefDLLとその関数定義とをコピーしてるけど、 汎用関数を集めてライブラリ化してCALLしちゃえばすっきりするのかもしれない。 けど同じ関数を2度宣言しちゃった場合とかどうなるかよく分からないのでCALLは使ってない。 それほどたくさん作ってるわけでもないし。 バージョン違いとかで分けても20こくらいしかない。 使い捨ての小さいのならたくさんあったりするけど。
とある条件が有効になったらどんな作業中でも中断して、別の作業を行う、みたいなことをするにはIF文を各作業の合間に大量につぎ込んでいくしかない?
中断するにはそれが必要だね。 Function XClkItem(...) XSleep() result ClkItem(...) End こんな関数作ったらIfの羅列はやらなくて済むよ。 XSleep()は別の作業をするべきか判断して、やるならやって戻る。 引数をそのまま渡し、戻り値もそのまま戻す。
>>756 XSLEEPのところにIF文とか組み込んでいくわけね
でも全体的な構造としてみればやっぱり作業の合間に別の作業を優先させるかどうかの判断を組み込んでいくのと変わらないよね
マルチスレッドみたいに作業Aの稼動中に、作業Bで作業Aを中断させるかどうかを判断するっていうのを同時進行させるのは無理かな
758 :
名無しさん@お腹いっぱい。 :2008/08/01(金) 10:20:42 ID:q1yVEBdu0
>>757 別のスレッドで監視し、実行することはできる。
だけど、もうひとつのスレッドの実行を止めるには、・・
スレッドを外から強制的に止めたり、終了・再開などしない限りはできない。
まあ、普通はフラグを立てて、If文ではそのフラグをチェックするだけにするので
ややこしい条件を2度書くということはない。
安全に作ったスクリプトなら、窓が閉じられてIDが無効になってれば終了するように作るだろうから
タイミングは送れるけどとめることができる。
僕がやってる方法は、IEオブジェクトのIDを保持し、IDToHndで無効なハンドルが帰ったら終了する。
全体のループのSleep()入れた後にそのチェックをしてるだけなので、
他のタイミングで終了したら結局エラーは出る。
もうちょっと細かく入れるなら、IE操作後の待ちループのSleepを、ハンドルチェックし、
おかしければExitExitで即時終了するような関数と入れ替えることもできる。
でも、そこまでやってもIEを正に操作してるときに終了されたらやっぱりエラーになると思う。
ExitExitは呼び出し元でIf文を書かずに済むのがメリットだが、
ひとつのスレッドだけ終了とかができない。
また、再開するにはスレッドが動いてるかをチェックできないといけない。
ExitExitするときに終了することをどっかに書き残せば可能。
他のUWSファイルをCALLするやり方ならExitExitで使えるかも・・
たとえばユーザーにクリックさせない方法なら、ボタンを無効化したり、
モーダルダイアログをかぶせたりして不可能状態にすることができる。
だけど画面ころころ変わるやつだと、
・・
結局は労力と効果、副作用のバランスを考えて、副作用を抑え、高い効果を
どこまで低い労力で得られるかに尽きる。
>>757 あ、ごめん。
スレッドBからスレッドAを監視、中断はできないね。
普通のプログラミングではハンドルが取得できて、それ経由で操作するもんだけど・・
複数のUWSを使う場合、普通はCALLを使うけど、
Execを使ってID取得したら終了させることができたりするのかな?
実行するUWSC.exeを終了させれば、強制終了と再開はできるかもしれない。
けど、強制的にストップすると、再開は最初からやり直しになるから意味がないかも。
760 :
755 :2008/08/01(金) 11:45:42 ID:FNt8XgrD0
>>758-759 なるほど、結局強制的にそういう手段をとらないとうまくいきそうにないなぁ
ありがとうございました
761 :
名無しさん@お腹いっぱい。 :2008/08/01(金) 12:27:08 ID:q1yVEBdu0
breakやcontinueで深さを設定できるみたいに Exitでも関数、スレッド、タスクっていう3種類に増やしてもらえればもうちょっと使いでがあるかも。 どっちみちメインスレッドが終了すると全部落ちるけど。 あと、スレッドのIDか何かで実行状態を見れたり、スレッドが終了する場合に呼び出される関数があれば・・ これは・・もうちょっと本格的にオブジェクト指向でクラスを導入してもらえればできるかも。
古典的な同期手法で、 Aは、あるファイルがあるかどうかを確認しつつ作業する あるファイルがあったら無くなるまで待機 Bは作業開始時にあるファイルを書き込む 作業終了時にあるファイルを消す みたいなことで可能ではあるけど、今時の手法じゃないね
ちょっと質問ですが PUBLIC abc[][1][2]=1,2,3,4,5,6 index=2 tfunc(abc[1]) //←1 tfunc(abc[index]) //←2 procedure tfunc(def[][]) fend 上の関数を呼び出すときに配列の添え字に変数を使うと定義されていないと出るのですがなんでなんでしょう
>>763 indexが2でオーバーフローしてるからじゃね?
>>764 1にして試してみましたがやはり定義されていないとでました
>>763 1次は自動サイズ
2次は0,1の2つ
3次は0,1,2の3つ
定義されたデータは6つ
1次の配列数はちょうど一つなので、最大の添え字は0
・・・あれ?
>>763 procedure tfunc(def[][])
↓
procedure tfunc(def[][2])
または
procedure tfunc(def[1][2])
で定義するとか。
abc[1]は実際にはデータなし
def[][]はデータ個数にあわせて配列を用意するので、なしならなしとなるだけ。
と推測
変数で配列数が不確定に・・なるのかな?
配列データの扱いがあまりうまくないのかな?
>>767 やはりいろいろ工夫してみましたが定義されて無いと出ました
別の方法でやってみようと思います
回答してくださった方、ありがとうございました
peekcolorを使って黒色を認識させたいのですがうまくいきません。 ifb (PEEKCOLOR(x,y) and ○○) MSGBOX("黒") ○○のところに $0や000000などを入れて見ても反応しません。 BGRの黒色はどう打ち込んだらいいのでしょう?
>>769 普通に下みたいなのはだめなの?
ifb PEEKCOLOR(x,y) = 0 THEN
MSGBOX("黒")
ENDIF
>>770 その方法でも黒っぽい色のほとんどは取りこぼすよ。
グレーかどうか調べる関数に、最大の明るさを指定してやれば黒っぽい色の判定ができる。
マイナスになるのを想定してなかったけど・・・
//////////////////////////////////////////////////////////////////
// グレーチェック
function isGray( color)
red = color and $FF
green = (color and $FF00) / $100
blue = (color and $FF0000) / $10000
sum = red + green + blue
aveH = sum / 3 + 10
aveL = sum / 3 - 10
ifb ( red < aveL ) or ( aveH < red ) Then
RESULT = false
elseif ( green < aveL ) or ( aveH < green ) Then
RESULT = false
elseif ( blue < aveL ) or ( aveH < blue ) Then
RESULT = false
else
RESULT = true
endif
Fend
真の黒以外は000000じゃないからなぁ。 画像切り出して1x1ピクセルの画像保存してCHKIMGじゃだめなのか?
欲しいのが真の黒か黒っぽい色かで構文が変わってくるよな
画像系は、下位ビットマスクして幅持たせないと駄目でしょ…
>>771 red = color and $FF
green = color / $100 and $FF
blue = color / $10000 and $FF
とした方が分かりやすかったな。
んで
aveL = sum / 3 - 10
のあと
If aveL < 0 Then aveL = 0
が必要
あと、
ifb ( red < aveL ) or ( aveH < red ) Then
RESULT = false
は、
ifb red < aveL Then
RESULT = false
ifb aveH < red Then
RESULT = false
って展開すると、ややこしい論理式を展開しなくてよかったかも。
でも値の範囲だしまとめた方がいいかなと・・・
っていうか
red green
green blue
blue red
の組み合わせでそれぞれの差の絶対値を見れば平均値で見なくてよかったかも。
ということで
>>771 の改良版
動作未確認。
function isGray( color)
red = color and $FF
green = color / $100 and $FF
blue = color / $10000 and $FF
Ifb 20 < ABS(red - green) Then RESULT = false
elseif 20 < ABS(green - blue) Then RESULT = false
elseif 20 < ABS(blue - red) Then RESULT = false
else RESULT = true
Endif
Fend
>>776 の黒版
黒ならtrue
それ以外はfalse
ただし、黒に見えるかどうかはペイントの色編集画面で見た目で判断。
function isBlack( color)
red = color and $FF
green = color / $100 and $FF
blue = color / $10000 and $FF
Ifb 24 < red Then RESULT = false
elseif 24 < green Then RESULT = false
elseif 24 < blue Then RESULT = false
else RESULT = true
Endif
Fend
778 :
769 :2008/08/07(木) 02:22:53 ID:mgr2CkxX0
>>770-777 UWSCをはじめたばかりでよくわからず書き込んでしまったものにお返事いただけてうれしいです。
769で書いた式でも赤とか青などは認識してしまったので???状態でした。
単純に真の黒を認識できればよかったのですが、レスを読んで冷静に考えてみるとこんなことで悩んでいたのかと恥ずかしいです><
お手数かけてすいませんでした。
教えていただいた式はがんばって勉強してこれからに役立てたいと思います。
どうもありがとうございました。
firefox操作成功した人いますか?色々やってもやはり出来ませんでした。
UWSCでなくてもいいならpyXPCOMってのも有るようだな。 XPCOM オートメーションとか良く知らんのだが。
>>782 > 私はLinuxでサンプル・コードを開発しましたが、PythonとXPCOMはクロス・プラットフォームであるため、Windowsやその他のプラットフォームでも私の手順をエミュレートすることができると思います。
いいねえ。
動作が軽快なFx3を操作するだけのために苦労するよりは
クロスプラットフォームでユーザーの多いスクリプトコードを使ったほうが簡単で確実に構築できる。
Pythonはインストール済みだしちょっとやってみっかな。
さすがにユーザー数が少ないXPCOMとUWSCの組み合わせはつらすぎる。
クロスプラットフォームはでかいなぁ。
786 :
779 :2008/08/09(土) 23:08:11 ID:Y67lUv5A0
>>781 遅くなりましたがありがとう。今Pythonを理解しようと努めています。
>>785 こういうのってのはどういう意味でこういうのなのか意味が分からない
画像のせいとは思えないので下手な命令のせいだと思う
788 :
781 :2008/08/10(日) 08:25:47 ID:AUhGtmQN0
>>786 http://pc11.2ch.net/test/read.cgi/tech/1190395268/545 にちょっと書いてるんだけど
PythonだとFireFox関係のソフトを自分でコンパイルしてインストールしてやらないといけないらしく、敷居が高いかも。
僕もまだ試してない。
だけどXPConnect っていうXPCOM とのブリッジが(たぶん標準で)入っているから、
JavaScript なら使えるらしい。
JavaScriptはWebページ記述の標準言語だし
言語から覚えるならPythonよりもJavaScriptにしたほうがいいと思うよ。
言語そのものの機能としてはJavaScript<Pythonかもしれないけど(逆かも)、
JavaScriptはXPCOM と相互呼び出しも可能だし、
ローカルで使う分には、JavaScriptで記述できないことはJAVA言語で書けばそのまま利用可能で
言語の統一性から覚えやすいだろうしお勧めです。
>>782 が言ってたpyXPCOMっていうのは、JavaXPCOM っていうものと同等のものらしくて
JavaScriptができればPythonじゃなくても問題ない。
789 :
785 :2008/08/10(日) 08:58:30 ID:0l5vMIcn0
>>787 ごめんなさい。説明へタでした
文字があるかないかで場合分けをしたかったのですが、反応したりしなかったりだったので
>>785 の画像が小さすぎて判定できないかとも考えてしまいました
代案はできましたけど柔軟性にかけるので、できれば785の画像だけで判定できたら、と思っています
>>788 pyかjsかはどうでもいいだろ。
ウェブコンテンツはDOMを使ってるわけで言語はあまり関係無い。
それでも言語に拘ると言うならCを引きずってるパズル的なjsよりpyの方が解り易い。
automationの場合は単にブラウザのコントロールだけでなくその他のリソースと
連携する場合が多いのでそういうライブラリが揃っている事が重要。
このスレ的に言うと日本語とUnicodeの扱いが簡単な事とWin32APIやCOMの
制御は絶対必要。その条件ならUWSCかどうかはあまり重要じゃない。
>>790 COMならUWSCも使えるけどFireFoxはXPCOMっていう類似品なのでUWSCでは無理。
これを操作するためにどうしようかと言う話。
ライブラリがそろっている事が大事なのは分かっているみたいだけど
どの言語ならその環境がそろっているかと言う問題から言語の話になる。
このスレで最初に話題に上ったのはFireFox3の操作で、
スクリプト向けのインターフェースとしてはXPConnectというのがあって、
これはJavaScriptのみのサポートになる。
だから一番手軽に扱えるのはJavaScriptということになるという話。
まあ、UWSCがXPCOMをサポートしてくれればそれで済む話だけど
XPCOMはライセンスがGPLなので、下手をすればUWSCがGPLに違反してトラブルになる可能性もある。
http://www.ibm.com/developerworks/jp/webservices/library/co-xpcom.html#d ライブラリをそのまま利用するだけならライセンス違反にならないらしいけど、
それを利用するコードのサンプルとしてGPLなソースを参照し、取り入れてしまい、
それが発覚してもやばいことになる。
そういう注意を払ってまでクロスプラットフォームなXPCOMに対応するのは
Windowsでしか使えないUWSCにとってメリットがあるのかどうか。
そして取り入れたとして既存のCOMと一緒くたに使えるのかどうか。
UWSCで使いたいならAutoItでやってるのと同じ方法を使えばOK。 XPCONNECTは良く知らんけど javascript というかgecko系アプリに 組み込まれているjavascript処理系で使うんだろ? それなら別にXPCOM 使わなくても自動的にやりたい事をFirefox拡張として作れば済むだろ。 拡張にするのが面倒ならUserChrome.js使えばいい。 FirefoxでiMacroとかの拡張使ってそのスクリプトをUWSCで動的に作って 渡すとかじゃ駄目か? この手はiMacro以外にもいろいろ有ったと思う。
793 :
名無しさん@お腹いっぱい。 :2008/08/15(金) 02:26:54 ID:Yv6gtcry0
ここの皆さんはゲームに興味ないかも知れませんが、UWSCが国内で爆発的に広まったのは オンラインゲームの自動化が可能だったことも大きく普及した一因でありました。 私もUWSCをはじめたきっかけは、ただクリックだけのつまらないゲームをなんとか自動化して 楽しむために必死にプログラムを作って自作のスクリプトを組んではその出来栄えを楽しんでいました。 しかし、皆様もご承知のように最近のPCゲームには、ゲームガードやハックシールド(一種の監視ウイルス) なる付属ソフトがクライアントPCに自動的にインストールされUWSCのようなマクロ動作するソフトを 悉く廃除してしまう監視ソフトが導入され、ゲーム好きのUWSC愛好家は壊滅状態になっています。 ゲームされないUWSCユーザは、ゲームでUWSCを使うのは違反行為だと思っておられる人もたくさん いると思いますが、どちらが違反しているのか実は非常に微妙で、個人で楽しむゲームに監視ソフトまで入れられて 情報抜きとっている業者は何も言う権利がないのです。事実、商用の自動化ソフトや中国からと思われる 高性能BOTは、営業妨害に当たるためゲーム業者は何もしません。見つかれば個人ユーザのIDは廃止するだけです。
今はオンラインゲームやらないのでよくわかんないけど UWSCをゲームに使うのOKだと思います そういうソフトなんだからそういう使い方ありだと思います 質問受け付けませんとか書いてる人いてるけど解答してもきりが無いからだと思うのです 自分でマクロ組んで操作する分には使い方までとやかくは言えないでしょ 自動でお小遣い稼ぎのように言う人もいてたけど そんなに甘いもんじゃないですよね
>>793 VMware使った監視ソフト回避の方法が
>>276 BOT業者に対抗してないとしたら、それは中の人が技術供与してるか、
中の人の副業かじゃないかな。
796 :
名無しさん@お腹いっぱい。 :2008/08/15(金) 02:49:30 ID:Yv6gtcry0
何が言いたいかと申しますと、いま自動化ツールのUWSCはゲームに対しては、 まったく機能しないツールとなってしまいUWSC愛好家は壊滅状態になっています。 過去にゲームガードやハックシールドを回避する試みは何度も繰り返され、 別サーバに監視ソフトを置いたり、自動化ツールのプロセスを隠したりするソフトも 出回りましたがすぐに対策がとられ壊滅状態となっております。 それどころか、そのようなソフトにウイルスやキーロガーまで埋め込まれています。 一体誰が埋め込んだのでしょうか?少なくとも開発した人はそのような悪質なソフトは入れないですよね。 そういう訳で、日本で発展した自動化ツールUWSCはPCゲームでは最早使い物にならないソフトになっています。 もう一度UWSC本来の目的に立ち返って、監視ソフト付きのPCゲームでもUWSCが使えるようなソフトを 開発できるような人は日本にはいないのでしょうか?(もちろん違反ソフトではなく回避ソフトです) ここで偉そうに言ってる人でも何人がそのようなソフト作れるか疑問です。 ゲームで使ってるUWSCユーザは壊滅状態で監視ソフト回避できる人は皆無です。 せいぜい仮想PCを使って誤魔化している程度です。 長い文章すいませんでした。 UWSCの発展のために是非チャレンジしてみてください。
ていうか自分でやらなきゃゲームつまらんだろ。 そうじゃないというなら自動化前提のゲームをやるべき。 ライフゲームとかなら見てるだけで済むし。楽チンだろ。
798 :
名無しさん@お腹いっぱい。 :2008/08/15(金) 03:24:36 ID:Yv6gtcry0
>>795 今出来ることは仮想PC(VMwareのみ)しか無さそうですね。
プログラム的な回避は無理そうですしすぐ回避されます。
ゲームの世界では神降臨と呼ばれますよ。
>>797 クリックだけのゲームなんてまったく興味が無いです。
自分でスクリプト組んで自動化するのが楽しいのです。
最も実践的ですよ。
UWSCのシェアウェア化賛成だけどゲーム用が一番良いと思います。
最近、ネット株やFXでシステムトレードなるものが開発されていますが、
そういう世界はプロの世界ですからいくらUWSCを駆使しても
個人投資家は儲かりませんよw
ご参考まで。。。
ライフゲームはクリック要らないんだが。 クリックだけのゲームは興味が無いといいながらクリックする事が重要なゲームを 自動化したいとはそもそも考え方間違ってるだろ。ようするに誰か判らんが単に 相手の人間共をズルをしてでも負かしてやりたいという浅ましい根性にすぎない。 UWSCで自動化するのが楽しいのならプログラミングでも学んでマウスクリック しなくとも頭を使って工夫する事でエキサイトできるゲームでも作れ。
>>796 そういうの使ってたから基本的な理屈は分かるんだけどね。
トロイを仕込んでUWSCを素通りさせる。
でも、今はむずかしい。
そういうツールを使うことが前提だとしたら、UWSCは機能がちょっと弱い。
ゲーム向けマクロツールには、メモリーを読み取って効率的にマクロを組めたりするし。
んでそういうのをひっくるめた商用ソフトが悪名高いゴーストリプレイ。
商用のマクロツールですら満足には動かないのに個人でそれ以上のを作れる人なんて・・
801 :
名無しさん@お腹いっぱい。 :2008/08/15(金) 03:47:38 ID:Yv6gtcry0
>>799 議論するつもりは無いのですがUWSC普及のためにはゲームは避けられないと思いますよ。
最近、ゲームの世界ではUWSCユーザ壊滅状態ですからw
ちなみに、ゲームで本当にズルしているのは、中国産の高級BOTやパケットいじってる人です。
>>801 なぜキミが危惧してるのか疑問なんだが?
ゲームゲームって糞ばっかりのチョンゲや国産ネトゲのことだろ…どうでもいい。
>>801 チートした上でのマクロだろ。
例のとこにあるサイコロマクロみたいなチートなしのマクロもなくはないけど・・・
本家掲示板では多分昔からゲームの話は禁止だろうから、そこは昔から変わらないと思うけど、
確かに僕もゲームでマクロするためにUWSCを使い始めたんだよね。
実は2000年ごろからUWSCの存在は知ってたけど、本職プログラマだったから
「最初からそういう風に作ればいいしWindowsAPI直で操作できるし」とか思ってた。
マクロは市販のが当時あるにはあったし。
いたずらでメニューを消されてなんもできんごとなって、むしろ「なんてひどいツールだ」って思ったっけ。
ウィルスと違ってああいうのは防げないんだよね。
当時勝手に契約させるWebが当たり前にあったから・・・っていうか節穴トラップに引っかかりまくったから
政府宛に意見メール送ったよ。
「確認画面ないものは無効にすべきだ」って。
UWSCのメリットはゲーム以外にGameGuard回避ツールとか動かす上でも小さくて手軽だったところかな。
>>802 まあそれはそうだよね。
ゲームユーザーが有料版使うわけじゃないし。
有料の機能はメールとエクセルなわけで。
あと画面出す機能もあるけど、上で出てきたXULRunnerはGPLで無料だし。
エクセルは標準でVBAあるし、UWSCを使う理由がないかもね。
そもそも自動化ツール使わないことに同意してMMOやってんだろ? 同意しないかツール使わないかどっちかにしろよw
806 :
名無しさん@お腹いっぱい。 :2008/08/15(金) 12:26:48 ID:wC/UBYHm0
違法な契約は無効だよ。 法的根拠のない条項に同意したことになっていても無視して問題ないことになってる。 たとえばDVD暗号の解除とかね。 ルール上視聴以外の目的で解除してはいけないし、視聴するときは コピーもしないことに同意した上で視聴していることになっているが、 法律ではそれらを無視してかまわないことになってる。 自動化ツール使ってる人は同意してないから使ってるんだよ。 つまり問題ない。 ソフト会社は、自動化ツールを使うなと命令してくるくせに、 使いたくないツールを勝手に無断で同意したことにしてインストールしてくるところもある。 JWORDとか。 つまりどっちもどっち。 同意しなければ使わせないと言うなら、同意しない限りインストールも許さないのは当然のこと。 ソフト会社同士が真っ向から対立しているからどっちかのために法律を作ることはできない。
同意しますか? ・はい ・いいえ はなんのためにあるのやら
>>806 だったら運営にその規約は無効なので改定してもらうだけでいいじゃないか・・・
本当に無効ならそれが一番簡単だぞ
>>808 法的に無効な契約というのは、契約した相手に対して抑止力になることと、
裁判で有利に戦うためにあるんだよ。
だから条項からはずしたりしない。
詳しい話は忘れたが、
たとえばパチンコのシステムを真似したアダルトサイトは検挙されたけど、
パチンコが合法だからおれっちも合法だと言い張るためにそういうシステムを取っている。
違法と認識して自分から腰引けてたら商売できないから。
そういうわけだから、相手が出してくる条項を改定してもらうなんて、
それこそ裁判で相手を負かさない限り無理。
または、毎日新聞のWAIWAIのように、インターネットの掲示板だけじゃなく
チラシばら撒いたり広告主に圧力かけたりして実力行使に出ないと無理。
無視してればいいものを改定してもらうなんて言い出すのがもう分かってない。
チョンゲ脳のやつらはこういうウザいところが毛嫌いされてるってのすら理解できてないから困る
> ゲームの世界ではUWSCユーザ壊滅状態ですからw それは喜ばしい。 といってもフリーの自動化ツールは他にいろいろあるいので UWSCがゲーム専用になっても別に構わんが。
XUL+JavaScriptに手出そうとしてから数日経ってるが この板のFirefoxのスレとXUL Explorerとかいうツール入手したくらいで まだ画面作るのも十分分かってないくらい。 っていうか出た。 資料はWebにいっぱいあるからなんとかなるだろうけどやっぱ取っ掛かりで時間食うわ。 窓出す最初でなんでmozillaのアドレスが出てくるのかもようわからんけど削ったら画面が灰色から白になった・・ FireFoxの引数で起動する予定だったけど結局XULRunner(17MB)入れちゃった。 結局Java呼び出すのもまだできとらんが、 どうやら画面なしにスクリプト実行することはできないらしい。というかデフォで画面出る。 基本的にJavaScriptはウェブブラウザの機能としてあるのでブラウザが必要だが、 XUL Runnerみたいのがあれば別にFireFoxとかなくても動かせるっぽい。 具体的な話はあっちに加わるけど、とっかかりはこっちでも参考になるだろうし書いてみた。
これは間違い投稿か? そうじゃないと仮定して…。 XULな時点で求めてるものと違うんじゃないか? ちなみにブラウザの機能としてじゃない javascript 処理系もある。 俺は使おうとは思わんが。
とあるゲームで 2種類のチェックボックスをクリックして、合成ボタンをクリックして 別のアイテムを合成するってのをやっているんですが たまにイレギュラーなアイテムができまして、 そのアイテムが出来たときに優先的にそこをクリックする方法ってありますか? そのアイテムができてしまうと、最初のクリックの場所がずれてしまい 優先的に使ってしまわないとマクロがとまってしまうんです。
> FireFoxを使う前提からすれば問題ないっぽい なんだその話か。それならFirefox拡張使えばいいよ。
>>816 話がかみ合わないね。
使うって言うか作るって言う話で、
FireFox拡張としての体裁を取るかどうか分からないからXULって話してるの。
単体ファイルで使えるかどうか知らないけどXULはFireFox拡張のためのファイルの一つ。
FireFox拡張だとインストーラとか必要だし面倒でしょ。
・・・まあ作ったほうがいいのかもしれないけど。
http://codezine.jp/a/article/aid/679.aspx - chrome.manifest インストール用の設定ファイル
- install.rdf 同上
userchrome.js使えばインストーラなど要らん。 ていうかfirefox内で閉じた自動化ならその手の拡張を使えばいい。 モジラの?フレームワークの自動化ならXPCOMがらみ。 WindowsのCOMやWin32APIベースの機能を併用したりしたいなら どうやっていいいか迷う…ってのが元々の話だろ。 せいぜい一生件名検索して天才プログラマになってくれ。 俺はむずいのは駄目だ。
言いたいことはわからなくもないが クリックだけのつまらないゲームを自動化したらもっとつまらなくなるんじゃないかろうか?
UWSCでBOT作ろうとしても無理、クリックの自動化だけ。BOTとは比較にならない。 BOT技術は中国が最高、日本でBOT作れる人はまずいないと思われ。 私もだがwゲームガードも回避できないありさま。 いつのまにか、ソフト先進国はインド、中国になり、3Dゲームやアニメは韓国が先進国になってるよ。 日本で唯一自慢できるのは徴兵制のない平和な民主国家だが、 若者はすでに平和ボケして社会でも使い者にならないニート国家になってしまっているのが現状。 悲しいな〜w
BOTという名前のソフトは大方はクリックを繰り返すだけのもの。 またはチートとは無関係の久々津 あれ?くぐつじゃなかったっけな? 変換候補に出てこない。
アニメってのは3Dアニメのことだな
普通の日本アニメも、実際に書いてるのは韓国の下請けだよ。 プロジェクトの本体が日本にあるだけ。
>>821 何も知らないんだなw
UWSCなどのスクリプトを使って自動クリックするのはマクロ操作で
低級プログラムねw
BOTは、自動で狩り場まで走って行き狩りをはじめドロップを集める。
薬無くなったら町まで帰ってきて薬を補充し、拾ったものがいっぱいになったら倉庫にあずける。
そしてまた狩場までいって狩りをするw
主にリアルマネー業者(プロ主に中華)がドロップ品を売って外貨獲得のためにBOTを使ってる。
最近はゲーム人口も減って停滞気味かな?
個人でUWSC使って自動クリックするのは趣味の範囲内だなw
低レベル名発想でかわい過ぎるよw
チートはメモリいじって自分のレベル上げたりドロップの種類を変えたりするズルイやつw
これぐらいの知識集めてここに来いw
>>824 そういうのをクリックを繰り返すものって言うんだぞw
メモリいじったりとかもUWSCでできる
何も知らないんだなw
>>824 BOTを作る技術があるのなら自分のレベルを上げてドロップをいいやつに変えたほうが効率いいよな。
つまりチートをズルイと評するくせにBOTを褒め称えるとかなんにも分かってないくせに知ったかぶりだけしてる厨房ってことだな。
っていうか、・・
http://blog.livedoor.jp/botbokumetu/archives/50518431.html > 売り子ちゃん+ : つまり、BOT対策を行っている方が、BOTをつくっているのです
>+売り子ちゃん+ : RMTの話はご存知とおもいますが、
>+売り子ちゃん+ : 現在のRMTはほぼ中国人、韓国人、在日に寡占されています
>+売り子ちゃん+ : 私は、その中で数すくない日本人でした
>+売り子ちゃん+ : 彼らは、日本人から金をすいとる事しか考えていません
>また、ROのクライアントに不正ツールのdllが混入していた事件もこれで納得がいく。
>オンラインゲーム開発元に日本向けBOT開発者のスパイがいるならば、日本用に
>梱包されたクライアントに不正ツールが混入していても何の不思議でもない。
ハッキングしてるんじゃなくてクライアントを作ってるやつがそのソースコードを使って改造してるので簡単に作れる。
蔵のソースコードがあれば僕ですらBOTは作れる。
そもそもBOTはテストツールとして、ソフト開発時に開発チームが自分で作っているはずだしな。
なんか一気にスレが香ばしくなったな
>>828 あんた2chの管理人でもないんだろ
ここ見たくなければ自分が来なけりゃいいだけ
過疎ったところで関係ない
来るなとか言う奴が来るな
第一次スルー検定実施中
>>814 自動錬金うるせぇぞw
みじんこ以下だな。
窓化不可のオンゲーでこちらを使用したんですが a→スペース→enter→enter という操作でwindowsモードを服用しない方法はありませんか?
日本語でおk
>>832 窓化不可以前にマクロ不可だろ。それクリアしてんの?
アクティブになってればウィンドウモードでも全画面でも
KBD() で操作可能。
ただしマクロ防止機能が働いてるから無理。
本家のゴミ削除してこいよ。
ネトゲって一回もやったことないんだがそんなに面白いのか。
MoE錬金スレから来ました 記念下記子
838 :
名無しさん@お腹いっぱい。 :2008/08/25(月) 12:04:16 ID:ZOmOewBX0
昔少しだけいじってたUWSC4.2を最近またいじるようになった俺 IE_Sub使ってるんですが 強制窓化するリンク踏んで新窓開いてしまうとその新窓を操作対象にする方法がわからないボスケテ
>>838 新窓開こうとするのをキャッチして指定の窓に開けるよ。
OLEEVENTで。
新しい窓開こうとすると専用窓で開かせる。
窓を閉じようとしたら(っていうか閉じるけど)開いた方の窓で処理する関数を呼び出し。
OleEvent( IE, "DWebBrowserEvents2", "NewWindow2", "NewWin" )
OleEvent( IE, "DWebBrowserEvents2", "OnQuit", "IEOnQuit" )
///////////////////////////////////////////////////////////
// 新規ウィンドウイベント処理関数
Procedure NewWin()
EVENT_PRM[0] = PicWin.IE() // 新しく指定するブラウザオブジェクト
EVENT_PRM[1] = True // Cancel flag
Fend
///////////////////////////////////////////////////////////
// 終了イベント処理関数
Procedure IEOnQuit()
Ifb PicWin.IsEnable() Then
Thread PicWin.Save()
Else
MsgBox("終了します")
Exitexit
Endif
Fend
MODULE PicWin Dim IE Dim ID Dim Title Procedure Init() IE = CreateOLEObj("InternetExplorer.Application") IE.visible = True ID = HNDToID(IE.HWND) //REPEAT; sleep(0.1); UNTIL !IE.busy AND IE.readystate = 4 // Navigateなしではストップする。 //Fukidasi( "このウィンドウに画像が表示されます。", Status(ID, ST_X), Status(ID, ST_X) ) SetWindowTextA(IDToHND(ID), "このウィンドウに画像が表示されます。") OleEvent( IE, "DWebBrowserEvents2", "TitleChange", "TitleChange" ) Fend Procedure TitleChange() Title = EVENT_PRM[0] Fend FUNCTION IE() RESULT = IE Fend FUNCTION IsEnable() RESULT = IDToHND(ID) Fend Procedure Save() GLOBAL.Save( ID, Title ) Fend ENDMODULE
>>838 お手軽だけど不完全な方法は、GetIDで窓ID取るかGetActiveOLEObj()でIEオブジェクトを取る。
新規窓は表に来るものだから、順調に動けば一発で取れる。
スクリプトとかで子窓を出すのは、ダイアログみたいなもんだけどどうだろうねえ。
842 :
名無しさん@お腹いっぱい。 :2008/08/25(月) 13:23:09 ID:ZOmOewBX0
おおありがとう ちと試してみるよ 以前やってたときは確かIE_Subの関数だけで全部やろうとしてたんだけどなんでだっけな・・・ 全部裏で動かないのが気に入らなくて挫折した気がする 立ち上げた窓内でなら思い通りに動いてくれるんだけどなあ
While-Wendループさせてて While-Wendループが○回行ったときにIFB-ENDIF命令が実行されて またWhile-Wendループに戻る動作をしたいんですが どういう方法がありますか? 少し調べてみましたが、至らないせいか「指定回数ループさせる」方法しか載ってなくて その後新たな命令を実行した後ループに戻る方法がみつかりません C言語でたとえると int i; i=0; While{ ”ループで行う命令”; i++; if(i=100){ ”if命令”; i=0; } } みたいにループ回数を何か変数でおいてカウントして 変数が一定数に達したところで条件分けする方法を考えたのですが uwscでのi++の表現の仕方がわからなくて… 何かいい方法教えてください
スクリプト使ったことないけど i=i+1 じゃだめ?
>>843 5回に1回の処理でしょ。
2タイプあるよ。
i++;
に相当するのは
i = i + 1
ちなみにUWSCのループ変数はループ内で変更できないので無限ループならforは使えない。
その1
while true
// 内ループ5回に1回
for i = 1 to 5
// 毎回の処理
next
// 内ループ5回に1回
wend
その2
for i = 1 to 200000000
// 毎回の処理
ifb i MOD 5 = 0 Then
// 5回に1回の処理
endif
// 毎回の処理
next
846 :
843 :2008/08/25(月) 22:17:38 ID:PVKz7f4N0
>>844 i=i+1使えたのですか…。ありがとうございます。覚えておきます
>>845 そうです。そんな感じです
助かりました。ありがとうございます。そちらを利用させてもらいます
i++; に i= i+1は相当しないだろ。 ↓が正解。 function iplspls(var i) Result= i i= i+1 Fend
自分の知識の狭さを披露してなにが楽しいんだか
( ゚д゚)ポカーン
・・・
わかる方居ましたら教えてください。 GETFORMDATAでフォームから取得した数字が、数ではなく文字として取得されてしまいます。 数字として取得するにはどうすればよろしいでしょうか? 説明が下手なんですけど、例をあげると 数 = GETFORMDATA("Text1")+5 フォームでText1の場所に10を入力すると 数が105となってしまいます。これを15にしたいんです。
>>851 戻値 = VAL( 文字列, [エラー値] ) ではだめなのか?
>>852 数字に変えることができました。ありがとうございます。
-------------------------------------------------------------------------------- // 文字型を数値に変える 戻値 = VAL( 文字列, [エラー値] ) 引数 文字列: 数値に変える文字列 エラー値: 数値に変換できない場合に返す値 戻値 数値 数値変換できない場合はエラー値を、デフォルトでは ERR_VALUE (-999999) を返す --------------------------------------------------------------------------------
= 0 + 戻り値
CLK_ACCで押せないラジオボタンがあって気が狂いそうボスケテ 全体のソースには表示されてない気がするんだ いや明らかに表示されてない 火狐のページ情報でフォームからそれらしいの探すと 押せないボタンやラジオボタンは大抵フィールド名が入ってる なにか大幅な勘違いをしてるんだろうか俺は
素朴な疑問なんだが、UWSCのスクリプトだけでwindowsのどのような操作でも模倣することができるの?
FireFoxの拡張はXULだって上でやってたろ。
XULってのはHTMLみたいなもんだからUWSCでボタンを認識しないだろう。
>>857 UWSCでコントロール可能なのは、アプリケーションがやり取りをWindowsAPI経由でやっているから。
UWSCはそれをキャッチして録画したり、
WindowsAPI経由でテキスト取得・設定や操縦したりする。
ブラウザで表示するWebページなどは、WindowsAPIなどでやり取りするのはHTMLテキストの状態までで、
それを解釈してボタンを表示するのはブラウザ自身。
外部と通信してないプログラムはいじれない。
まあグラフィックとしては出力してるし、テキストもあるわけだけど。
テキストとして表示されるものについてはテキストとして扱えるからCLK_ACCでいじれたりする。
いや、COMとして通信してんのかな?
ただ、キー操作によって再現できることならまず再現できるね。
操作の結果が常に正しいとしてだけど。
IEとか通信エラーよく起こすからキー操作だけじゃ無理。
>>856 > フィールド名が入ってる
フィールドって言うかフォームだったりする?
フォームのないドキュメントならコントロールのIDか名前だけで操作できるけど
フォームがある場合はどのフォームなのか指定しないといけない。
けど、名前が重複してないならALLを指定すればどのフォームとか考えなくてよくて簡単。
>>856 だけど
>>858 火狐はソース確認用に使ってるだけなんだごめんねごめんね
>>859 結局IE_Sub+UWSC旧ver利用で全体の流れ作って触れないとこはCLK_ACCにすることでゴリ押した
その部分に差し掛かるとIEが表出てきてうざったいが仕方ない
試しに試用ProいんすこしてIERecして確認したら触れないとこだけエンコードがなんちゃら&謎URL+長蛇文字列になって再生できんかた
レスさんくす
なにもプロテクトのかかっていないソフトでUWSCを OS VISTAで起動して開始すると窓を開く意外なにもできないんですが 理由は何ですか? XPではふつうに動作します
2008/09/02 UWSC Ver4.4c、 Pro版と Free版をリリースしました。
すんませんUWSCは標準出力に書込出来ませんよね。 ファイルで受け渡しするのが最も最適な解でしょうか。
>>864 公式より
// 標準出力を配列にしてから表示
dim x[0]
stdout = doscmd("dir c:\")
行数 = strToArray(stdout, x)
for i = 0 to 行数-1
print x[i]
next
// 文字列を配列に格納
function strToArray(str, var hiretu[])
Result = 0
while Trim(str) <> ""
Resize(hiretu, Result)
hiretu[Result] = Trim(Token(Chr(13), str))
Result = Result + 1
wend
fend
>>864 標準出力って言うのはDOS窓毎に存在するわけで。
DOSCMD()だっけ
あれでECHOとやればUWSCで呼び出したDOS窓の標準出力に吐き出すけど
画面は出ないし完了したらすぐ閉じるから受け取れない。
で、
DOSCMD()の戻り値が実は標準出力の結果なんですね。
S = DOSCMD("echo hello world.")
print s
とやると、hello world.ってログに吐き出すと思います。
DOSCMDは1行コマンドですが、
パイプとか使って1行で複数のコマンドを実行することが出来ます。
標準出力をパイプで別のコマンドに渡せばいいんです。
そして、バッチファイルで書けばUWSCからはそのバッチを呼ぶだけで済みます。
短い出力ならこんなことも出来るかも。メリットないけど。
s = DOSCMD(コマンド)
DOSCMD("コマンド " + S)
stdioは別にDOS窓にあるわけじゃないよ。
>>867 え?DOSの標準出力の話じゃないの?
Windowsの標準出力って・・・どこで見るの?
プログラム.exe >ファイル
>>865 ご回答ありがとうございます。
自分もこんがらっているのですがdoscmdは呼び出したコマンドの標準出力を
UWSC側で取得できるだけで今回の件とは離れているかなと思います。
>>866 >UWSCで呼び出したDOS窓の標準出力
これがオレオレSTDOUTで
>hello world.ってログに吐き出すと思います。
これがオレオレSTDERRだと思ってます。
一度のforkで処理、結果取得が出来るシンプルな流れでしたら同期等の処理を
考えずにいいかなと思ったのですがマニュアル熟読、ググりまくりでも解決しないので
窓アプリの挙動で動作している現状では仕様的に難しいのかもしれませんね。
期待する動作としては
---test.uws---
PRINT STDOUT "hello world!" // 実際はエラー
-------------
C:\> uwsc test.uws [リターン]
hello world
C:\>_
という感じです。
mouseorg(id,2)で、BTNとかのマウス操作が効かないんですがおかしいところあったら教えてください KBDは効きました id=getid("xxx") mouseorg(id,2) BTN(LEFT,CLICK,xxx,xxx)
>>872 座標がおかしかったりするかもしれないからそれをチェックした方がいいよ。
クリックじゃマウス ポインタが表示されないこともあるからMMV()で
MMV(xxx + 1, yyy )
ウィンドウを常に非アクティブで動作させる事はできますか?
できます
>>870 コンソールに出力するだけなら、以下のコードで可能です。
OPTION EXPLICIT
DEF_DLL AllocConsole(): bool: kernel32.dll
DEF_DLL GetStdHandle(dword): dword: kernel32.dll
DEF_DLL WriteConsoleA(dword, dword, dword, VAR dword, VAR dword): bool: kernel32.dll
CONST STD_OUTPUT_HANDLE = -11
CONST INVALID_HANDLE_VALUE = -1
PUBLIC g_stdout
AllocConsole() // コンソール割り当て
g_stdout = GetStdHandle(STD_OUTPUT_HANDLE) // 標準出力のハンドル取得
IF g_stdout = INVALID_HANDLE_VALUE THEN EXITEXIT 1
writecons("hello world<#CR>")
SLEEP(5)
FUNCTION writecons(str)
DIM n
RESULT = WriteConsoleA(g_stdout, str, LENGTHB(str), n, NULL)
FEND
プロセスにコンソールを割り当ててるだけなので、プロセス終了と共にコンソールは閉じられます。
また、DOS 窓から『C:\>uwsc test.uws[Enter]』のようにしても、新たに DOS 窓が開かれます。
>>875 よければやり方を教えていただけませんか?
>>877 アクティブになる操作をしなければいいんです。
KBD()使う前にMOUSEORG( ID, 2 )で窓に直接送信する設定をしておくとか
SCKey()を使うとか
ClkItem()でもACC使わないとか
SendStr()でも SendStr( ID, "text", 1, false, false )のように、後ろにfalseを二つつけるとか
IEの場合にもSendStr()使わずにIESETDATA( )使うとか
IE.Document.Forms(0).Items(0).Value = "なんたら" みたいにDOMアクセスするとか。
Win32APIだけを使ってアクティブにならないようにすればよい。
UWSCのスクランブルとAutoHotkeyのexe化ではどちらが セキュリティ的に優れているのでしょうか?
セ、セキュリティ・・・?
どっちも危険つー事だな。
悪意のプログラムを組むのはどちらも簡単だ。
>>881 表現が悪かったかもしれません
UWSCのスクランブルを解除される危険性と、パスワードで暗号化された
AutoHotkeyのexeファイルを逆コンパイルされる危険性のどちらが
高いかということです
>>884 パスワードがかかってるからって中身が暗号化されてるとは限らないと思いますが、
「データは暗号化されます」なんてどっかに書いてありますか?
プログラムやデータが全て暗号化されるのでないなら、
文字列として存在するデータはバイナリエディタで見れば一発で分かります。
それらを使って安全な方法は、パスワードというかキーを入力して
それを使って自分で暗号データを解除するスクリプトを、暗号データとともに内臓する方法だと思います。
スクリプトや暗号化されたデータを見てもキーが分からないと意味がないですから。
いつだったか、僕がエクセルに大事なデータを誕生日と掛け合わせて暗号化したものを保存していたことがあります。
誕生日を入力すると元のデータに復元する計算式を入力していたわけです。
これなら僕の誕生日を知らない人は元のデータがなんだったか分かりません。
まあ、セルの書式が年月日だったから僕の誕生日を知ってる人に破られましたが。
質問です peekcolor関数の機能をC++で実現したいのですが、 これはどういうAPIを呼び出しているんですか?
>>886 GetPixelだと思われます
ただ、Vistaでこの関数を繰り返し使うとGDIの関係上ものすごく重いです
>>887 なるほど
ありがとうございます
すぐに返答いただけるとは思っておりませんでした
これ以上質問するとスレ違いかもしれませんが、ついでですので・・
vistaの場合、画面の一点の色を取得するにはどういうAPIを呼び出すと効率が良いのでしょうか?
>>888 VistaではCreateDIBSectionでビットマップを作ってBitBltで画面をビットマップにコピーしてから
メモリに直接アクセスする方法が一番速いと思うよ
>>890 おお、そこまでしていただけるとは
感謝です
以下のような処理を考えているのですが 動作1 ↓ 判定1(判定結果によって、続行または「動作1」に戻る) ↓ 動作2 ↓ 判定2(判定結果によって、続行または「動作1」に戻る) ↓ 動作3 ↓ 判定3(判定結果によって、続行または「動作5」に飛ぶ) ↓ 動作4 ↓ 動作5 このように、どこか特定の場所にジャンプさせる場合は、どのように記述すればよいのでしょうか? 昔、(自動化ソフトではないけど)Teraタームというソフトでマクロを組んでいたときは 「ラベル」というのがあって、GO TO **とかいう命令で飛ばせたんですが(ラベル **と記述した部分に飛ぶ) UWSCのヘルプを見ても同類のものが見つかりませんでした。
繰返し 動作1 もし 判定1 なら 繰返し続ける 動作2 条件が一致しなくなるまで 判定2 動作3 もし 判定3 なら 動作4 動作5 終わり
>>892 REPEAT
REPEAT
動作1
UNTIL 判定1 // 条件によってはRepeatに戻る
動作2
UNTIL 判定2 // 条件によってはRepeatに戻る
動作3
IFB 判定3 THEN
動作4
ENDIF
動作5
>>893-894 REPEATとかIFBを使ってそうするのですか。
どうもありがとうございました。
DMMのサンプル動画を自動で収集するスクリプトって配布されてないでしょうか?
2ちゃんの2ゲトとかもそうだけど、 動機が不純だと教える気も失せるんだよな・・・ もっとウソでもいいから、似たような健全な質問に 変えたらどうかな?w
>>896 無いよ
満喫によってはサービスでDMMアダルト見放題の店あるだろ
その店に行く度、このアニャルズボズボ動画をなんとか自宅にお持ち帰りできないのかやってみた
結果的にできたけど
時間がかかりすぎて満喫代が馬鹿にならんのでやめた
お持ち帰りのやり方は
ストリームから本当のurlを探し出す(海外製のURLSnooper 2 で出来る操作方法は直感的にわかるくらい簡単)
そのurlをGetASFStreamでダウンロードのセットする
ここまでは元動画を再生させながら行う
(セットしてしまえば元動画はストップしておk)
ダウンロードされた動画からコピーガード対策DRMをばbbとかしなければいけない
これはあるツールで完璧にできる(秘密)
まあ頑張ってみてw
今ロケットマウスを使っているのだけど、ロケットマウスからこっちに乗り換えたという人がいたら こっちの便利なところを教えてもらえないだろうか?
>> 897 すみません。 でも、下手に隠したり、言い換えたりすることでちゃんと伝わらなくなるのもあれなので。 もっと詳しく言うと、気になる女優名で検索し、サムネイル形式の検索結果を開いた状態でスクリプトを実行すれば 「各作品のページに飛び、サンプル動画があればダウンロードして保存する」という機能が欲しいのです。 これは省力化以外に、WEB上でサンプル動画を再生させた場合は早送りなどの操作ができないという問題を回避するためです。 >> 898 サンプル動画の方はガードがかかっていないようで、 GetASFStreamの「URL-プロトコル-解析」でURLが出てきて、 それをDLして再生もできました。
>>900 気持ちはよくわかるよ。
問い詰められて、途中から答えられなくなっちゃうんだよなwww
そういうのはさ… それ専門のソフトとかブラウザのプラグインでいくらでもあるじゃん。 まして1分かそこらのサンプルで早送りて…w
>>900 もうほとんど答え出てるじゃない
IEオブジェクトでソース見て、各作品ページ毎にどういうソースになっているのか
サンプルある場合はどういうソースになっているのか
ソースで判明したら、ループでアクセスしてGetASFStreamに渡して実行ボタン押すだけだろ
別にダウンロード自体まで自前で作る必要もあるまい
>>902 自動でダウンロードも出来ますか?
そのソフトの名前を教えてもらえないでしょうか。
>>903 そうですね。
ただ、手順のイメージはあるのですが、初心者なので記述の仕方がよく分からない状態です。
まあこれはヘルプ見て格闘するしかないですね。
動画のリンク集から自動でダウンロードするの作ろうとしたんだけど これにIEじゃなくXMLのダウンロードでやろうとしたんですよ。 やっぱ余計な画像とかダウンロードしたくないし。 一応一覧までは取得できたんだけど、動画へのリンクが貼ってある個別のページから 飛ぼうとすると、トップページに飛ばされちゃうんですよね。 どこから飛んできたかとかチェックされちゃってるようで。 途中までのリストを取ったらその先はIEを使えばよかったかもしれないけど、なんか挫折しちゃった。
アプリのチェックボックスのON/OFFを判断して「もしOFFになってたらONにする」見たいなのって次の方法じゃダメですか? たとえばButton1という名前の付いたチェックボックスの場合で IFB CHKBTN(ppjcID,"Button1") = 1 THEN CLKITEM(ppjcID,"Button1") SLEEP(0.1) ENDIF CHKBTNがチェックボックスの状態を返すなら、値がON(1)になってた場合に CLKITEMでチェックボックスを新たにクリックさせればOFFになると思ったのですが、反応がありません 「値がOFF(0)になってた場合にONにする」ことはできたのですが、なぜかその逆が反応してくれないんです…
ヘルプを見ると、こう書いてあって、 // アイテムのクリック // (ボタン、メニュー、チェックボックス、ラジオボタン、リストボックス、コンボボックス、タブコントロール、ビューリスト、ツールバー) 戻値 = CLKITEM( ID, アイテム名, [種別, チェックOn/Off, 番号] ) ↑ ここでTrueかFalseを指定する んじゃないのかな? ヘルプの例とかみてみそ。
あれ、そこで設定できるの…? ありがとうございます。ちょっと読み足りなかったみたいです。ヘルプ見てきます
すみませんが教えてください。 IE7で、リンクをクリックして新しいタブでページを開いたとき 以下の記述で読み込みが完了するまで待たせようと思ったのですが 実際にやってみると、どうも待っていないような気がします。 REPEAT SLEEP( 0.1) UNTIL !Ie.busy AND Ie.readystate = 4 これは元のタブが完了しているので待ち時間も無しになってしまうのでしょうか? (監視対象を元のタブから新しいタブに移行させるような記述が必要?)
回答になってなくて申し訳ないが、おれタブ切ってるよ。 すごい信用ならない動きするから。 (以上、屑回答者でしたw)
ファイル名の10文字ををグラフのタイトル名にしたいのですが、 WITH EXCEL .LEFT(.ACTIVEBOOK.NAME,10) ENDWITH WITH EXCEL .APPLICATION.WORKSHEETFUNCTION.LEFT(.ACTIVEBOOK.NAME,10) ENDWITH を2つを試したのですが『COM Error』となるのですが UWSCでLEFT関数はつかえないのでしょうか?
>>911 まずCOMでExcelの関数を呼べるかどうか調べるんだ。
とりあえず僕が知ってるのはマクロ(Public定義されたVBA関数)を外部から呼び出せるってことだけだ。
>>912 呼び出せるかどうか ググってきます
ありがとうございます
どこやったか場所が分からない。って スクリプトのフォルダ作っておけよ…って話だし ランチメニューに登録したらショートカットでメニュー出せるじゃんって話だし スクリプト毎にショートカットキー設定したいんです。ってことなら 普通にショートカット作ってショートカットキー設定すればいいじゃん。って話だし
916 :
909 :2008/10/08(水) 11:20:32 ID:KudTSrE20
>>910 遅レスで申し訳ないですが、回答ありがとうございます。
IE7はタブブラウザとして使用しないほうがいいのですか。
もし、あくまでタブブラウザとして使用する場合、
GETSTR( IeId, 1, STR_STATUS) = "ページが表示されました"
で、3回連続で「ページが表示されました」を取得できればOKとするようにしようと思うのですが
(3回連続というのは、読み込み中に一瞬「ページが表示されました」が表示されるのを回避するため)
この場合、何か問題点等考えられるでしょうか?ご存知の方、アドバイスよろしくお願いします。
ちなみに、ステータスバーは画面に必ず表示されているとし、マウスカーソルは退避済みという前提です。
画面上に表示された画像が、予めuwscディレクトリに保存しておいた画像と一致するかどうかを確認して、 一致した場合、一致した画像のファイル名を取得したいのですが、可能でしょうか? chkimgだと一致したかどうかと、一致した場合の座標しか取得できないようで、どうしたものか困っています。 uwscでは不可能ですか?
>>917 UWSCはフォルダ丸ごと処理する関数はありませんよ。
自分でファイルの一覧を取ってループします。
ファイル一つ一つの名前を使って処理するので、
一致があればそのときに使ったファイル名が一致したファイル名になります。
比較するファイル数が多くなり、リアルタイムに繰り返し監視するような場合は
画面キャプチャして自力で画像処理したほうが処理能力が上がっていいと思います。
レスありがとうございます。 最終的には、比較する画像ファイル数は最小で30、最大で2500ファイルくらいになりそうです。 この場合、逐一saveimgで画像保存していって処理した方がいいですか? あと >自分でファイルの一覧を取ってループします。 >ファイル一つ一つの名前を使って処理するので、 >一致があればそのときに使ったファイル名が一致したファイル名になります。 との事ですが、一致したファイル名はchkimgの戻値で返ってこないですよね? 一致したファイル名を変数もしくは定数に入れる事は可能なのでしょうか?
>>919 ファイル名を変数にできないのはCALLで、これは例外的なものです。
他は変数、配列に格納できます。
そもそもファイル名を渡さないと比較できないのにファイル名を返してもらう意味がありません。
30くらいの画像なら分かりますが、2500ファイルとの一致とかむちゃくちゃです。
通常の静止した入力画面だとして、比較が完了するのに何秒かかかるでしょう。
数十秒かけて入力するのを自動化するのならそれでも意味があるでしょうが、
まずは別のやり方が出来ないかを確かめた方がいいと思います。
921 :
名無しさん@お腹いっぱい。 :2008/10/14(火) 12:23:34 ID:0+q0+Xkm0
今朝からヘルプ眺めながらポチポチ打ちこんでるけど ヘルプがかなり見づらいな 大文字小文字区別しない仕様のせいか全部大文字だし かと思えば例文とか小文字だったり大文字小文字混じりだったり
>>921 =STRCONV( ヘルプ, SC_LOWERCASE )
最近使い始めたばかりで、まだまだわからないことが多いんですが、 UWSCでマウスやキーボードの動作を自動運転させていると、モニタが 省電力に入りません。 これは当然だと思うんですが、「電源を切る」以外にモニタを強制的に 省電力状態にして、任意の方法(例えばショートカットキーを操作するとか マウスの中ボタンをクリックするとか)を採るまで復帰させないような方法 またはソフトはありませんでしょうか?
モニタのケーブルをはずす
わざわざのレスありがとうございます。 ただ、そういうのじゃなくて、お願いします。
ソフトを聞きたいのなら完全にスレ違いじゃないですか?
マジで消しとけばいいじゃん
スレ違いということで、申し訳ないです。 同じソフトを使っている先輩方から何か教えていただければと甘く考えていました。 自分で探します。
〈\_/ / '´ ̄ ,z≧D≦ \ / /´⌒/| /'⌒ l ) OSに、私が操作してる様に見せかけるのに | /Tメ| /ヘヾハ ) |/ l! ∨ l! |`ト ) こんなに必死で取り組んでいるのに | 、_ 、_,Y ) |///r─‐┐//〉| ) それを見破って、省電力モード移行とか、スクリーンセーバー起動とか \|、_V⌒V イヽ| ) ト、__了 /j ) ど ん だ け 〜!? \ //r'´ \
でもユーザーログインしない状態で バックグラウンドで動かせばできるかな?
うん。comとかで値の受け渡しはできたとしても、 マウス・キーボードの動きはやっぱ無理だねw
VectorでHiMacroExとかいう同種のソフトが紹介されてたから使ってみたけど ウィンドウをD&Dする事とか出来なかった。 UWSCすごいな。
>>932 HiMacroEXのレビュー見ただけでドラッグできそうだったんですけど。
キー入力の再現だけで見ればあっちはシンプルな記述だね。
http://fefnir.com/index.htm でも機能はバッチファイルのマウスキーエミュ付き程度のものか。
UWSCの関数呼び出したいけど、プログラムをCOMとして実装したらできるのか。
でもCOMとか大げさなもの使うなら汎用通信オブジェクトみたいにしてどのプログラムでも利用できるようにしないとな。
使うのは簡単だけど・・・
でもサービス名ってあらかじめ登録なのに自由に使えるようにするってどういうことだろ。
ウィンドウプロシージャみたいに引数になんでも渡せるようにするとか?
・・・
無駄か。
別フレームのフォーム項目にデータを入れたいのですが、どうもうまくいきません (やりたいことは、クリック証券の為替注文フォームですばやく売買・期限などを選択したい) 注文ページのフレームは3つに分かれていて、3つめのフレームに注文画面が入っているのですが IE = GETID("クリック証券 FX取引 - Microsoft Internet Explorer") ACW(IE,479,143,1278,942,0) IESetData(IE,True,"IE.Document.frames[2].Document.forms[0].P002.0","0") // RADIO IESetData(IE,True,"IE.Document.frames[2].Document.forms[0].P010.0","1") // RADIO IESetData(IE,True,"IE.Document.frames[2].Document.forms[0].P004.0","1") // RADIO …のように指定しても動きません。書き方がおかしいでしょうか?
935 :
934 :2008/10/20(月) 14:09:40 ID:d54g8P6j0
すみませんできました。 一行目を IE = GetActiveOleObj("InternetExplorer.Application", "クリック証券 FX取引") にしてやることで、以後フレーム指定無しで IESetData(IE,True,"P002.0","0") // RADIO IESetData(IE,True,"P010.0","1") // RADIO IESetData(IE,True,"P004.0","1") // RADIO のように書いたらできました。GETIDとGetActiveOleObjって違うんですね… 板汚し失礼しました。
IDはウィンドウハンドルの番号で、ウィンドウごとにつき、ウィンドウの制御に使います。 OleObjectはOLEコンポーネントっていう独立したパーツです。 IEは、IEオブジェクトを作っても一緒に起動するしそれが一つのプログラムのように見えますが、 実はウィンドウはIEオブジェクトをコントロールしてるだけなんですね。
>>935 自動売買なら携帯サイト経由がおすすめ。
フラッシュとか不安定すぎて金預けることなんかできませんよ。
IEのページ内をスクロールさせながら指定画像を全てクリックする、というスクリプトを作成したいのですが、 参考になるサイト等ないでしょうか? 対象画像が1つで絶対にページ内にある場合だと簡単なのですが、対象画像が複数個ページ内に ある場合どうすれば良いのか、もしくは無い場合はページの一番下まで行ったら終了するという形に したいのですがこれも分かりません。 ページの表示位置を数値(ピクセル)で読み書きできればなんとかなる気もするのですが、 SETSLIDER( ID, 値, [番号] )を使ってみても値が読めませんでした。
>>938 SETSLIDERで操作するスライダーっていうのは、
画面解像度とか設定するときにスライドさせて数値を指定するあれのことですよ。
ページスクロールのは、VScrollBar、HScrollBarっていうコントロールで、
これはUWSCでは対応してないのでウィンドウメッセージで操作することになりますね。
WindowsAPIを使うか、スクロールバーがくっついた状態の画像を検索するかですね。
ただ、IEではスクロールバーの色を操作できちゃらしく、そういうページに対応する場合は色を見ないようにする必要があるでしょう。
API使う場合、スクロールバーっていろんな場所に出てくるから全部対応するのは大変でしょうね・・
画像のファイル名がわかってるんならスクロールさせずにクリックできるけど(ソースからその画像のリンクを開く) 画像比較じゃないとダメなのかな?
スクロールさせながら、ってことは 自分がその動いてる状況を見たいってこと?
>>939 さん
ありがとうございます。
VScrollBar、HScrollBar、ウィンドウメッセージ等がどういうものか分かってないので調べてみます。
>>940 さん
いくつかのケースを想定しているのですが、例えばFLASHの中のボタンだと画像で押すのがいいのかな・・・と。
FLASHの座標を取得してマウスクリックでFLASHを選択状態にして、TABキーで目的のボタンを選択してエンターで押す、
というのはやったことがありますが(ちなみにこれもページの上の方にあるFLASHでしかやったことがありません)、
TABキーで選択できないタイプもあるみたいですし。
あと、書いてなかったですが指定画像を基点として別のところをクリックすることも考えています。
>>941 さん
最終的に目的物をクリックできればOKなので、リアルタイムに状況を確認できなくても構いません。
>>932 HiMacroEXもウィンドウをD&Dできますよ。
初期設定だとマウス操作や操作時間を記録してないからじゃない?
どの操作を記録するかとかも設定できるし
HiMacroEXだけでもかなりいろいろできるからこっちメインで使ってる。
俺はUWSCはかなり細かいことしたいときだけに使うかなぁ
記録してから編集するのがHiMacroEXの方がやりやすい
スクリプトの内部で以下のようにEXECを使って別のスクリプトを実行しているのですが、 EXEC( "C:\パスA\uwsc44c\UWSC.exe C:\パスB\ファイル名.uws", TRUE) この「ファイル名.uws」は「○○○_1025.uws」のように日付をつけるようにしていて、変更・修正するたびに変わります。 そうするとEXECのなかのファイル名も変えないといけないので面倒くさいです。 EXECの中のファイル名をワイルドカードを使って「○○○_*.uws」としてみたのですが反応しませんでした。 どういうやり方が良いかアドバイス頂けないでしょうか。 フォルダ名は変わらず、「○○○_*.uws」というファイルも一つです。(旧版は別のフォルダに移動させているため) バージョン管理ツールでも使えばいいのかもしれませんが、そっちも無知なもので。
>>945 ○○○は固定なの?
1025 この部分だけ変わる?
ファイル名にある日付は EXECを実行する日付と一緒?
ファイルを検索して実際に有るスクリプトのファイル名を取得すればいいだろう。 しかしいちいち日付なんかつけなきゃ済む事だろ。
>>945 俺がした質問の答えがすべてyesなら
GETTIME()
EXEC( "C:\パスA\uwsc44c\UWSC.exe C:\パスB\○○○_"+G_TIME_MM2+G_TIME_DD2+".uws", TRUE)
これでできる
949 :
名無しさん@お腹いっぱい。 :2008/10/25(土) 19:41:33 ID:gMwmlNqd0
そういうのは現バージョンのファイル名は固定にして バックアップしたフォルダのほうだけ日付つけりゃいいだけじゃん。 いろんなソフトみたって、実行ファイル自体のファイル名に バージョンやら入ってる事なんて無いだろ…常識で考えろ
それじゃ日付変わったら確実に動かないな。 お前の質問に全てyesになる根拠はどうみてもゼロだろ。
日付とればいいだけのことなのに
どうしても日付はつけたままにしておきたいというのなら
>>947 の言うとおり、GETDIRで存在するファイル名取得すればいいだけ
952 :
945 :2008/10/25(土) 21:14:29 ID:QrnfltsL0
どうもみなさんありがとうございます。
GETDIRを使えばたしかにいけそうですね。
バージョン管理は普通のファイル(エクセルやワード)の場合は「○○○_1025」でやっていて問題なく、
人に提出するときにも便利だった(むしろ日付なりバージョンの記載が求められる)ので良かったんですが
ソフトなどの場合は、不都合でますね・・・。
>>949 さんの言うとおり変更発生したあとに付けるというやり方に倣いたいと思います。
UWSCのスクリプトをUWSC自身のランチャー以外から実行すると、 "STOPFORM(FALSE)"を記述しても非表示のウインドウが作成されて フォーカスを奪い、実行直前のアクティブウインドウを取得できず困っています。 非表示のウインドウが作成されないようにする方法は無いのでしょうか。
すみません、間違えました。 ウインドウを作成しないなんて無理に決まっています。 ウインドウがフォーカスを奪わないようにする方法です。
解決できそうな方法は、 ランチャーをUWSCで作って、CALLするときにアクティブウィンドウを取得しておくとか。 あと、.uwsの関連付けのときにUWSC.exeの呼び出し方法を記述しているはずだけど UWSC本体を非表示にするオプションを付けて起動するとか。 exeへのショートカットにはウィンドウの大きさを指定するあったと思うけど関連付けで非表示は、できたっけなあ・・・?
>>954 起動時に表示で起動されてるかもしれないから難しいよ。
起動後に非表示にしてもフォーカスは奪った後だろうし。
>>956 たとえば以下のようにしてもアクティブウインドウのタイトルは"Test.uws"です。
Set Shell=CreateObject("WScript.Shell")
Shell.Run "C:\Uwsc\UWSC.exe C:\Uwsc\Uws\Test.uws", 0, false
>>953 こんな方法もあるけど・・・
窓使いの憂鬱、ノドカ、AHKといったキーカスタマイズソフト(=常時キーを監視するソフト)から
特定のキーを押したときに、スクリプトを呼び出すようにする。
上記のキーカスタマイズソフトには、キーを押した時点の
ウィンドウ名やアプリ名、クラス名を取得できる機能があるので
自分の作ったスクリプトに、引数としてその値を渡すことが出来る。
窓使いの中の設定= key M3-N =&ShellExecute("open", "C:\Appli\AppliWindowName.UWS",$WindowTitleName,,ShowNormal)
UWSCのスクリプトAppliWindowName.UWSに、キーを押した時点の
アクティブだったアプリのフルパスと、ウィンドウ名を引数で渡すという意味。
↓
スクリプトのPARAM_STRで取得できる値は、":"区切りで渡される以下のものになる。
D:\Jane Style\Jane2ch.exe:Jane Doe Style 【ソフトウェア】 - 【マクロ】 UWSC Part4
【シェアウェア化】:::::::書き込み:
>>953 ??こんな方法もあるけど・・・??窓使いの憂鬱、ノドカ、
AHKといったキーカスタマイズソフト(=常時キーを監視するソフト)から??特定のキーを
押したときに、スクリプトを呼び出すようにする。??上記のキーカスタマイズソフトには、
キーを押した時点の??ウィンドウ名やアプリ名、クラス名を取得できる機能があるので??
自分の作ったスクリプトに、引数としてその値を渡すことが出来る。
>>958 窓使いの憂鬱はMeなので使えません。
ノドカに関してはわかりませんえした。
AHKについても調べましたが、AHKのスクリプトを書けるのなら
そもそもUWSCを使って処理する必要がなくなってしまいます。
UWSC単独では解決できないようなのであきらめます。
ありがとうございました。
(でも、どうして非表示のウインドウがフォーカスを奪ったりするんだろう)
透明ウィンドウが出現してフォーカスを持っていくんなら、 Alt+EscかAlt+Tabで入れ替えてやればいいかもしれない。 自分自身がアクティブじゃないときにやっちゃいけないから、自分自身がアクティブかを確認しないと。 でも自分がアクティブになってるかどうかって、どのウィンドウで確認すればいいんだろ? とりあえずアクティブウィンドウを取って、 自分自身に関係するの全部と比較か。
AutoHotKeyのZip版で試したら動いたんで参考がわりに。 環境はWindows2000。MEで動くかはわからん。 以下を TestUWSC.ahk として保存。 autohotkey.exeにドロップするか、関連付けて実行。 ↓ではUWSC.exeとAHKtest.uwsのフルパスはとりあえずプログラムフォルダーのUWSC。 Windows+Gキーを押すたびに、AHKTest.uwsに、 アクティブウィンドウの"プログラム名" "クラス名" "ウィンドウ名"が渡る。 #g:: WinGet Process,ProcessName,A WinGetClass, class, A WinGetTitle, Title, A Run,"C:\Program Files\uwsc\uwsc.exe" "C:\Program Files\uwsc\AHKTest.uws" "%Process%" "%class%" "%title%" return //AHKtest.uwsの中身。↓で引数で受け取って、メッセージボックスで表示 //AHKtest.uws プログラム名=PARAM_STR[0] クラス名=PARAM_STR[1] ウィンドウ名=PARAM_STR[2] ID=getid(ウィンドウ名,クラス名) msgbox(ID+"<#CR>"+プログラム名+"<#CR>"+クラス名+"<#CR>"+ウィンドウ名) // ちなみに、サクラエディタで試したとき、Windows+Gでフォーカスがアクティブから外れ、 //ウィンドウ名が変わる。そのためIDは-1となった。ほかのアプリは1で取れた。
>>961 大変ご親切にありがとうございました。
こちらの環境でも正常に動作しました。
ですが、先にも書きましたようにAHKを使うのであればなにも
UWSCを使わなくても、処理自体をAHKにやらせれば済む話なので意味がありません。
私は自分が知らないだけで、ウインドウがフォーカスを奪わないようにする方法が
あるのではないかと思い質問した次第です。
失礼な物言いをお詫びいたします。
>>962 一応ですね、奪ったフォーカスを返すことはできました。
最初ストップフォームのIDを取得しますが、Alt+ESCによって元のウィンドウをアクティブにします。
最初から切り替わってはいけないのならこの方法でもだめですが・・
エクスプローラー上でダブクリしたら、一瞬フォーカスを奪われるけど、またエクスプローラーが手前になります。
stopform(false)のとき、GetID(GET_ACTIVE_WIN)の結果はGetID(GET_THISUWSC_WIN)と同じになります。
stopform(true)のとき、GetID(GET_ACTIVE_WIN)の結果はストップフォームのIDとなり、、
Status(ID, ST_CLASS)で確認するしかないようです。
stopform(true)
ID = GetID(GET_ACTIVE_WIN)
print "ID:" + ID
print "hWnd:" + IDToHND(ID)
print "TITLE:" + Status(ID, ST_TITLE)
print "CLASS:" + Status(ID, ST_CLASS)
KBD(VK_Alt, DOWN); sleep(0.02)
KBD(VK_ESC); sleep(0.02)
KBD(VK_Alt, UP); sleep(0.02)
ID = GetID(GET_ACTIVE_WIN)
print "ID:" + ID
print "hWnd:" + IDToHND(ID)
print "TITLE:" + Status(ID, ST_TITLE)
print "CLASS:" + Status(ID, ST_CLASS)
sleep(5)
input("")
>>963 960さんでしょうか、961さんでしょうか?
確かにほぼ100%取得可能です。
望んでいた物とは違いますが、処理するプロセスを手直しすれば
実用になると思います。
本当ににありがとうございました。
965 :
名無しさん@お腹いっぱい。 :2008/11/07(金) 01:05:03 ID:8LGBQYpD0
>>964 例えば、どんな用途で使う予定だったの?他の人の参考になるかもしれないんでよかったら教えてください。
こちらでお伺いしてよいかもわかりませんのですれ違いなら申し訳ありません。 UWSCとvirtualPCを併用しておりますが、仮想PC内でUWSCでマクロを起動します。 そこで、親機に戻ると操作も止まってしまうのですが、 いわゆる仮想PC内(裏で)マクロを実行し続けることは可能でしょうか?
>>966 > 親機に戻ると操作も止まってしまう
なんでだろうね。
VMwareでは、仮想PC内のマクロは親とは無関係に単独で動くんだけど。
VirtualPCで非アクティブ時に止まるような設定にしてるんじゃないの
>>967-968 すばやい回答ありがとうございます。
VP上のオプションから見てみましたが、パフォーマンスのところの非アクティブ時に一時停止するは
チェックが入ってませんでした。
UWSCでマウスを動かす操作を保持しつつ、→ALTでホストに復帰してるんですが、どうもUWSCだけが止まってるよう
なかんじです
VPC→ホストに切り替え時にUWSCの動作を保持というのは皆様、問題なくできているのでしょうか?
stopボタン押下時のイベントハンドラって書けますか? やりたいこととしては、マクロ開始時にロードしたdllが プロセス展開してるのでcloseする処理を入れたいのですが><
調べてもよくわからなかったので質問させていただきます。 とある文字列をクリップボードにコピーして、その中から特定の文字列を抜き出したいのです。 例えば abcdifg ID:123456 abcdefg をクリップボードにコピーします。 この文字列の中からID:の横の123456だけを抽出してクリップボードに戻すという事をしたいです。 ただ、ID:の文字以外の文字は毎回違うのでどうすればいいのか教えていただけませんか?
>>971 SENDSTR( 0, BETWEENSTR( GETSTR( 0 ), "ID:", " ", ), , TRUE, )
無理かな
973 :
名無しさん@お腹いっぱい。 :2008/11/22(土) 18:23:53 ID:ObZbScyR0
>>971 検索に正規表現を使ってもいいし、
Between()でID:から改行までを取り出し、それをreplaceで置き換えてもいいし
でも、人間の操作をチカンするのって嫌いなんだよね。
昔MSチャットで自分のメアド交換しようとしているのに、自動的にストーカーのメアドに置換されてて、
メールを送ってもらってもストーカー経由でしか連絡取れず、
当時連絡を取り合った相手は次々に殺されていったよ。
だからスパイウェアっぽいやつは全部嫌い
>>971 UWSCの仕様がよくわかってない私が答えるのもなんなんだけど
クリップボード内での展開ってのがミソですね
ということはUWSC自体が正規表現を扱えるのかがポイントだと思う
私も同じようなことを模索した経験があるんですけど
結局、私は急いでいたので解答待ちをしないで
正規表現の使えるエディターを自動操作して間に合ったんだけど
クリップボード内での展開でUWSC自身が正規表現を使えるか私も興味あります
解答レスじゃなくてスマソ^^;
あんまり関係ないんじゃない? 正規表現だったら1行で表せるけど 使えないから数行使いました。程度でしょ クリップボードの文字列を取り出して置き換えるだけの話だし
>>976 何が関係ないの?
検索するのに正規表現つかわない?
ていうかUWSCで正規表現使えるかが知りたいので
関係ないといわれてもお前のレスのほうが関係ないよってかんじかな
こんなやつ、つい最近も別スレでみたな…分かりやすい
どうでもいい会話が好きなようだ
UWSCで正規表現が使えるのかそれだけ教えてくれってことわかんないのかよ
空気の読めない奴だ
お前のレスはいらないので
>>971 に詳しく説明してあげればいいよ
といってもお前の会話能力で
>>971 が理解できるように伝わるのかは疑問だがなw
出かけるのでレスいらないよ
んじゃな
>>975 あなたの言う、「クリップボード内での展開」ってどういう意味?どういうのを想像してるの?
ミソとか言われてもさっぱり想像できない。
クリップボード内の文字列を、取り出し->置換->格納じゃなくて
直接、置換できるような想像してるの?
置換する手段に正規表現を使うかどうかなんてどうでもいい
関係大有りさ 正規表現で無いと取り出せない文字はどうすんの 私の場合まさにそれだったんだ それでUWSCスレや本家サイトに質問しても頓珍漢な解答ばかりで全く進まなかった 結局、テキストにしてエディターでやれば簡単だったってこと テキストエディター使わなくてもいいかどうかを聞いてたの つまりクリップボード内で全て完結できますかってこと もしできるのであればサンプル欲しいね 本当にできるのか検証しないとね プログラム関係の解答者は自己満足の嘘つきオナニー解答者が多いからな。 以前質問したときはあなた居なかったんだね サンプルよろしくね マジででかけるのでレスできないからヨロ
クリップボード内ってどういう事かと思ったらそう言うことですか。 正規表現で表現できるのに プログラム的に表現できないなんてことはないですよ。 元質問者の方は正規表現なんて関係ない話なのでこれで終わりにしますけどね
つまらんことでスレ伸びすぎ
トークン取り出せば委員だろ? もっと低レベルの関数で十分。 下手にregexp使う必要など無い。
986 :
名無しさん@お腹いっぱい。 :2008/11/23(日) 10:37:09 ID:6RUEQI4a0
WHILE TRUE 文で、特定の画像がなければそれまでのループを一時停止して、 他の動作をする。 こういうのを作りたいんですがどうやってループとめるんでしょうか?
987 :
名無しさん@お腹いっぱい。 :2008/11/23(日) 10:45:50 ID:wxFyQTZV0
別処理がuwsc内なら、別処理を関数化する。 別処理がuwsc外なら、sleepさせる。
正規表現ならCreateOleObject("VBScript.RegExp")でええんちゃうのかしら
あ、CreateOleObjectって関数はないね CreateOleObjだった
しばらく触ってなかったから書き方忘れてたけど 今書いて試してみたらCreateOleObj("VBScript.RegExp")で置換できたよ
>>985 のリンクに書いてあるね、見逃してたよ
何度も書き込んでゴメンネ、ゴメンネ(´・ω・`)
uwscのbotで食いつなぐとか終わってんなw
むしろそれだけで食いつなげる現状に圧倒されるww
シナ人boterとか家が建てられるらしいしな 家を建てるまではいかない日本人でもそれなりにいい小遣いになるはずだ アイテム課金が増えた今は儲かるのかよく分からんけど
UWSCのスレや掲示板見てたら 色判別して何かしたい…って質問があったら 10件中、7,8件はネトゲ、残りの1,2件は株、で残りその他って感じだもんな…