2ch勢いランキング アーカイブ

自動化ツールuwsc使いよ集まれ5


名無しさん@お腹いっぱい。 [] 2009/12/09(水) 05:27:33 :J1DL1P1U0
Windowsを自動化させるツールUWSC。
ttp://www.uwsc.info/

uwsc使いのみなさま、マターリ己のスクリプトを晒しましょ。
名無しさん@お腹いっぱい。 [sage] 2009/12/09(水) 05:28:50 :J1DL1P1U0
●質問したい方へ。
 「○○作れますか?」→ スクリプトを期待するのはお門違い。作れるか作れないか教えてくれる人はいるかも。
 「○○が作りたい」→ 自分作ればいいんじゃない?
 「○○作って下さい」→ 依頼スレじゃありません。
 過去ログを見る、検索する等、自分で出来る事を書き込む前にするように。
 自力で作ったのを晒すか、具体的な解らない場所を提示して、改善点や解決策を求めるようにしましょう。

●スクリプトを晒す上での注意
 他人が読みやすいようにインデントを付けるように。解らない人はググレ。
 (タブインデントは使えないんだぜ 全角スペース等に 変換しておくべし)
 言いたい事に関係無い部分は 〜○○の処理〜 や 処理A 等のようにし、
 必要な部分を晒すようにする。

●他人の書いたスクリプトを安易に実行しないように。
 ハードディスクをフォーマットされたりしても、自己責任。

前スレ
自動化ツールuwsc使いよ集まれ4
ttp://pc12.2ch.net/test/read.cgi/software/1235990960/
名無しさん@お腹いっぱい。 [sage] 2009/12/09(水) 06:14:55 :J1DL1P1U0
UWSCスクリプトの解説(初歩の初歩)
ttp://big.tm.land.to/handbook/uwsc.htm
UWSCで自動化 超速!! Windows マクロテクニック
ttp://izagne.com/uwsc/
名無しさん@お腹いっぱい。 [sage] 2009/12/09(水) 06:19:43 :J1DL1P1U0
解決マクロマン
ttp://blog.livedoor.jp/uwsc/archives/cat_50008789.html
SCRIPTS
ttp://scripts.web.fc2.com/
UWSCサンプル集
ttp://www.nagomi-jp.net/~liners/uwsc_sample_page.htm
UWSCの誘惑
ttp://nem.symphonic-net.com/uwsct/0610uwsct.html
UWSCの落し物部屋
ttp://siromasa.xxxxxxxx.jp/
名無しさん@お腹いっぱい。 [] 2009/12/09(水) 19:49:51 :wIUeYzw+0
どなたか、教えていただけませんでしょうか?

ttp://oshiete1.goo.ne.jp/qa5509856.html

UWSCはまだマイナーなんでしょうか?
↑では誰も回答してくれません。
この板で質問したほうがよかったかなと後悔。。。
名無しさん@お腹いっぱい。 [sage] 2009/12/09(水) 20:40:08 :OlCmmWUF0

まだ前スレが埋まってないよ?
それに、そっちで質問してるんだったら、一日くらいは待とうぜ?

そのソフトを使ったこと無いから解らんが、
>"winLirc.exe"が準備するキー情報
これはどこに準備されるのか不明なの?

外部プログラムのメモリ読み出すDLLとか使って、準備するキー情報とやらを読み出すか、
ソースに付け加えて赤外線認識時に何か動作させるか、そういう事すればいいんじゃね?
名無しさん@お腹いっぱい。 [sage] 2009/12/09(水) 21:28:44 :q5sTIjr10
そんな丸投げな質問の仕方ならレスつかなくて当然
名無しさん@お腹いっぱい。 [sage] 2009/12/09(水) 21:57:28 :8TzPg+9x0

UWSCもユーザー多いかどうか分からないけど、
それ以上に赤外線リモコン使ってる人が少ないでしょう。

確かにUWSCの起動は遅いので、一瞬で起動して操作するということはできません。
exe化することで少々反応は早くなるかもしれませんが、どれほど効果があるか分かりません。
試用版でDOSコマンドを実行するものをexe化してみましたが、微妙に反応がいい気はします。

効果がありそうな方法は、あらかじめUWSCを起動しておくことですね。
昔よくあったんですよ。
一太郎とかエディタとかをすばやく起動するために、タスクアイコンとして常駐しておくという方法が。
UWSCはそのまま起動すると画面が邪魔だから、1ヶ月くらいSleepするスクリプトを起動しておけばいいんじゃないでしょうか。
とりあえず今やってみたところ・・・変りないですね。


一番いい方法は、常駐しているUWSCにコマンドオプションが送られてそのまま処理するというものですが、
同じスクリプトファイルでも新規に起動してしまうし、UWSCは外部からの呼び出しができない仕様になっているので無理ですね。

DOSのバッチファイルを起動するのはとても早いんですよ。
DOSだけでやれればそれでいいと思います。
名無しさん@お腹いっぱい。 [sage] 2009/12/09(水) 22:51:53 :8TzPg+9x0

けど、UWSCを使いたければ、こういう方法があります。
1.UWSCのループでクリップボードを監視
2.DOSでクリップボードにコマンド発行
3.コマンドの種類ごとに機能を実行

この方法ならコンスタントに、DOSコマンド実行(0.1秒)+UWSCのSleep時間(0.1秒)で0.2秒後にはコマンドを実行できるでしょう。

このコマンドを使います。
ttp://www.vector.co.jp/soft/winnt/util/se328049.html

UWSCを呼ぶ代わりに.batファイルを登録します。
-- click.bat ここから--
rem こんな感じで
echo "コマンド実行-A" > clip
-- click.bat ここまで--

-- リモコン.uws ここから最後まで--
while true
 cl = getstr(0)
 ifb 1 = pos( "コマンド実行", cl ) then
  sendstr(0,"") // 使ったら空にしないと永久ループになる
  select cl
   case "コマンド実行-A"
    KBD(VK_A)
   default
    sendstr(0, cl) // コマンドがなかったから元に戻す
  selend
 endif
 sleep(0.1)
wend
名無しさん@お腹いっぱい。 [sage] 2009/12/09(水) 23:43:52 :wIUeYzw+0

回答ありがとうございました。
名無しさん@お腹いっぱい。 [sage] 2009/12/09(水) 23:47:54 :JwROkqhK0
 
ちとツッコミ。

>exe化することで少々反応は早くなるかもしれません
コンパイルしている訳ではありませんので スピードが速くなる事はありません。
サイズもUWSC本体と同程度になります。
※ UPX等を使えばサイズは3分の1程になります(UWSC本体の圧縮は厳禁) 
by umiumi

>確かにUWSCの起動は遅い
関連づけしておけば起動速度自体は特に気にならないような…
計算処理が (たとえi=i+1だけでも)あると速度的に相当見劣りするのは確かだけど。
名無しさん@お腹いっぱい。 [sage] 2009/12/09(水) 23:55:55 :wIUeYzw+0

ありがとうございます。

DOSのバッチファイルということで、clip.exeをちょっと実験してみました。
なんせ、DOSコマンドはdir、copy、path、mkdirぐらいしか使ったことがありませんし(そもそもプログラミング自体、大昔にアセンブラをいじった程度です)
ご教授頂いただいたことは、(あくまで私の解釈ですので間違っていたらご指摘ください)DOSコマンドでWinLirc.exeのデータを取得してクリップボードにコピー、
それをUWSCで扱う・・・ということだと理解しました。
残念ながら、clip.exeの動作は理解したのですが、DOSコマンドを使っていかにwinlirc.exeから情報を得るのかがわかりません。
許せるならば、貴殿の知識をもう少しお分けいただければと思います。お願いします。
名無しさん@お腹いっぱい。 [sage] 2009/12/09(水) 23:58:15 :8TzPg+9x0
前スレで出てたAutoHotKeyだとWindowsアプリのようにメッセージを受け取って処理できるんですよね。
バッチファイルでSendMessageできれば待ちループもなくて平均0.5秒始動が早くなると思って探してみました。
@はOLEオブジェクトなのできっと遅いです。
AはSendMessageというDOSコマンドを自作しているっぽいですが、肝心のコマンドが見つかりませんでした。
BはMessengerサービスを開始してファイアーウォールも無効にして試したけどうまくいかなかった。

@ ttp://plaza.rakuten.co.jp/u703331/diary/20070413/
> コマンドプロンプトから直接Win32API [ シェル ]
> コマンドプロンプトから直接Win32APIを呼び出してみました。
> 実際は、MSHTA->VBScript->Excel->Excel4.0マクロなんだけど。
> C:\borland>mshta vbscript:execute("Set a=CreateObject(""Excel.Application""):a.ExecuteExcel4Macro(""CALL(""""user32"""",""""MessageBoxA"""",""""JJCCJ"""",0,""""Hello, World"""",""""TEST"""",0)""):close()")
> 
> C:\borland>
> 
> ダブルクォーテーションが多いので入力するときに大変・・・・
> (改行されているのはブラウザのせいなので、そこはよろしくです)

A ttp://www.hm2.aitai.ne.jp/~kagemasa/unigraphics/wbat_post.btw
:/マシンファイルの設定
> SENDMESSAGE "$%HANDL%" WM_CHAR '1'
> SENDMESSAGE "$%HANDL%" WM_CHAR VK_RETURN
> STR LEN %MFILE%
> FOR /L %%A IN (1 1 %ERRORLEVEL%) DO
>  STR MID B %MFILE% %%A 1
>  SENDMESSAGE "$%HANDL%" WM_CHAR '%B%'
> ENDFOR
> SENDMESSAGE "$%HANDL%" WM_CHAR VK_RETURN

B バッチファイルでこんなコマンドを実行。でもかなり面倒な上にセキュリティもなくなる。
net send localhost メッセージ
名無しさん@お腹いっぱい。 [sage] 2009/12/10(木) 00:37:38 :AMT7Pyke0

> DOSコマンドを使っていかにwinlirc.exeから情報を得るのか
RC01 POWER exe で実行ファイルが指定できると思います。
もし拡張子batファイルを指定可能なら、に書いた click.bat を指定します。

click.batに記述されたコマンドでクリップボードに文字列をセットし、
UWSCがその文字列を受け取ったら処理を開始します。

クリップボードはいろいろな文字列が入ってくるので、誤作動しないように固有の文字列を作る必要があります。

パスの設定が必要になると面倒なので、 clip.exeはWindowsフォルダにコピーした方がいいでしょう。
本当はセットで使うので同じフォルダに置いて echo "コマンド実行-A" > %~dp0clip.exe とかしたほうがいいんでしょうけど。


まあそうかもしれませんが、batファイルの呼び出しと比較したらやっぱり雲泥の差になりますから。
さんがどこまでの反応速度を求めているのか分かりませんが、
たとえばテレビのチャンネルを変えるだとかブラウザでスクロールするとかの場合にはそれなりの反応速度を期待すると思います。
また、繰り返し実行するものの場合は起動から終了までの通しでの時間が重要になるし、
ゼロに近づける方法はやっぱり重要だと思います。
名無しさん@お腹いっぱい。 [sage] 2009/12/10(木) 22:32:15 :+EDF+/cG0

こんばんは、12です。ご説明、よくわかりました。

早速、作ってみました。
もう、完璧です!
マシーンの動作ってこうでなくっちゃ、という感覚です。
UWSCもにちょっと手を加えただけで完成です。
(DOSのechoコマンドがスペースとCRLFを引き連れてやってくるところはてこずりました。)

重ねてお礼申し上げます。ありがとうございました。

ついでといっては、なんですが、


>UWSCはそのまま起動すると画面が邪魔だから、1ヶ月くらいSleepするスクリプトを起動しておけばいいんじゃないでしょうか。

ここの部分を詳しく教えていただければと思います。
SLEEPだけのスクリプトを動かしておけば、他のは隠れて動く、ということなのでしょうか?
これも、実験してみます。
名無しさん@お腹いっぱい。 [sage] 2009/12/10(木) 23:49:40 :AMT7Pyke0

余分なものが入ってましたか。気がつきませんでした。

> ここの部分を詳しく教えていただければと思います。
サクラエディタとかの常駐型アプリを使ってみると分かりますが、一旦起動したらメモリ上に残るので、
以降のファイルを開く動作が非常に速くなります。

UWSCも同じように、一つ常駐させればスクリプトの読み込みが早くなるかなと思ったんですが、
UWSCは別プロセスで起動するのでそうはならないようでした。

常駐させる方法として次の1行を実行させる方法を提案しました。
スクリプトファイルを直接実行すれば、UWSCのメイン画面は表示されないので。
sleep(60*60*24*30) // これで1ヶ月スリープ

「画面が邪魔」というのは、UWSCの画面は最前面に表示されるので、常時起動しているとしたら邪魔ですよね?
スクリプトファイルの関連付けで起動することで、メイン画面は非表示になるのを利用しようというわけです。
名無しさん@お腹いっぱい。 [sage] 2009/12/11(金) 00:03:06 :TAkxOJ9A0
大文字小文字にこだわりのあるおにーさんたちはどう書いてるの?(´・ω・`)
CREATEOLEOBJ
CreateOLEObj
CreateOleObj
Createoleobj
名無しさん@お腹いっぱい。 [sage] 2009/12/11(金) 00:12:03 :bDw5dpFU0
CreateOLEObj
なんとなく、クセかなぁ。
全部大文字とか全部小文字はなんとなくぱっと見で読み辛い気がするね。
ちょっと前流行った日本語の文字の場所を入れ替えるどうのこうののコピペじゃないけど、
英語でも頭文字の部分が強調されていれば、感覚的に解る感じがするからなー。
名無しさん@お腹いっぱい。 [sage] 2009/12/11(金) 00:53:34 :3W3bqgjj0
CreateOLEobj

objは小文字で書いちゃうなぁ。
objIEとかで探すとそういう書き方が多かったもんで。
名無しさん@お腹いっぱい。 [sage] 2009/12/11(金) 01:27:12 :Zaw60Q490
CREATEOLEOBJ

理由:単語辞書の登録がたまたまそうなってから…
名無しさん@お腹いっぱい。 [sage] 2009/12/11(金) 01:40:56 :ex5DG+cq0
空白にこだわりのあるおにーさんたちはどう書いてるの?(´・ω・`)

For i = 0 to 10 - 1

For i=0 to 10 -1

For i=0 to 10-1

GetID( Title, Class)

GetID(Title, Class)

GetID(Title,Class)
名無しさん@お腹いっぱい。 [sage] 2009/12/11(金) 01:57:52 :mXLjG1QG0
For i = 0 to 10 - 1

GetID(Title, Class)
名無しさん@お腹いっぱい。 [sage] 2009/12/11(金) 02:02:40 :yv164UXr0
有料でいいから文法をjavascript仕様にしたものを出してくれないかな。需要はあると思うんだけど。
名無しさん@お腹いっぱい。 [sage] 2009/12/11(金) 02:25:02 :ASOL9Pzm0
c系統に慣れているから
while wend とか ifb endif とかになれるのはつらかったけど、慣れるとそれなりにいい^^
名無しさん@お腹いっぱい。 [sage] 2009/12/11(金) 04:22:04 :iOSKkb9p0
FOR I = 0 TO (10 - 1)
名無しさん@お腹いっぱい。 [sage] 2009/12/11(金) 11:03:24 :Vw07lAHm0
CreateOLEobj

IESetData( IE, text, "MESSAGE" )
IE.document.all.submit.click()
REPEAT; sleep(0.1); UNTIL !IE.busy AND IE.readystate = 4
for i = 0 to 10 - 1
while true

GetID( Title, Class )
GetID(Title)


まあキーワードに色付けてるから大文字の方が目立って見やすかったりする。
名無しさん@お腹いっぱい。 [sage] 2009/12/12(土) 03:00:40 :7cmFQzAf0
CLKITEMで項目を選択したいのだが項目名が変化する場合って
どうやって取得するんでしょうか

CLKITEM(id, "ダウンロード済 (X)", CLK_LSTVEW or CLK_LEFTCLK)

具体的には Xが変化するわけですが、Xのところに設定する
ワイルドカードみたいなのないんでしょうか
名無しさん@お腹いっぱい。 [sage] 2009/12/12(土) 04:18:37 :HwVuwznO0
CLK_SHORT
名無しさん@お腹いっぱい。 [sage] 2009/12/12(土) 14:23:00 :M7k2JrZE0
押されてるキーを全て取得する方法って無いかな?
GETKEYSTATE使うのは無謀すぎるし・・・
そういうスクリプトやDLLがあるなら教えてくれるとありがたい
名無しさん@お腹いっぱい。 [sage] 2009/12/12(土) 15:07:15 :TyWlORGEO

javascript仕様って何?
文法の話?標準関数とか?
27 [sage] 2009/12/12(土) 15:29:54 :7cmFQzAf0

できました
サンクスです
その1 [sage] 2009/12/12(土) 17:11:47 :HwVuwznO0


DEF_DLL GetKeyboardState({byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byt
e,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,by
te,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,b
yte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,
byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,
byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,
byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,
byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,
byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,
byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte}): int: User32.dll
DIM key[256]
その2 [sage] 2009/12/12(土) 17:14:29 :HwVuwznO0
WHILE True
GetKeyboardState(key[0],key[1],key[2],key[3],key[4],key[5],key[6],key[7],key[8],key[9],key[10],key[11],key[12],key[13],key[14],key
[15],key[16],key[17],key[18],key[19],key[20],key[21],key[22],key[23],key[24],key[25],key[26],key[27],key[28],key[29],key[30],key[31],k
ey[32],key[33],key[34],key[35],key[36],key[37],key[38],key[39],key[40],key[41],key[42],key[43],key[44],key[45],key[46],key[47],key[48],
key[49],key[50],key[51],key[52],key[53],key[54],key[55],key[56],key[57],key[58],key[59],key[60],key[61],key[62],key[63],key[64],key[6
5],key[66],key[67],key[68],key[69],key[70],key[71],key[72],key[73],key[74],key[75],key[76],key[77],key[78],key[79],key[80],key[81],key
[82],key[83],key[84],key[85],key[86],key[87],key[88],key[89],key[90],key[91],key[92],key[93],key[94],key[95],key[96],key[97],key[98],k
ey[99],key[100],key[101],key[102],key[103],key[104],key[105],key[106],key[107],key[108],key[109],key[110],key[111],key[112],key[113],k
ey[114],key[115],key[116],key[117],key[118],key[119],key[120],key[121],key[122],key[123],key[124],key[125],key[126],key[127],key[128],
key[129],key[130],key[131],key[132],key[133],key[134],key[135],key[136],key[137],key[138],key[139],key[140],key[141],key[142],key[143],
key[144],key[145],key[146],key[147],key[148],key[149],key[150],key[151],key[152],key[153],key[154],key[155],key[156],key[157],key[158],
key[159],key[160],key[161],key[162],key[163],key[164],key[165],key[166],key[167],key[168],key[169],key[170],key[171],key[172],key[173],
その3 [sage] 2009/12/12(土) 17:16:07 :HwVuwznO0
key[174],key[175],key[176],key[177],key[178],key[179],key[180],key[181],key[182],key[183],key[184],key[185],key[186],key[187],key[188],
key[189],key[190],key[191],key[192],key[193],key[194],key[195],key[196],key[197],key[198],key[199],key[200],key[201],key[202],key[203],
key[204],key[205],key[206],key[207],key[208],key[209],key[210],key[211],key[212],key[213],key[214],key[215],key[216],key[217],key[218],
key[219],key[220],key[221],key[222],key[223],key[224],key[225],key[226],key[227],key[228],key[229],key[230],key[231],key[232],key[233],
key[234],key[235],key[236],key[237],key[238],key[239],key[240],key[241],key[242],key[243],key[244],key[245],key[246],key[247],key[248],
key[249],key[250],key[251],key[252],key[253],key[254],key[255])
FUKIDASI("VK_LEFT=" + ((key[VK_LEFT] AND $80) = $80) + " VK_RIGHT=" + ((key[VK_RIGHT] AND $80) = $80) + " VK_UP=" + ((key[VK_UP] A
ND $80) = $80) + " VK_DOWN=" + ((key[VK_DOWN] AND $80) = $80), 0, 0)
SLEEP(0.1)
WEND
名無しさん@お腹いっぱい。 [sage] 2009/12/12(土) 17:22:27 :3Ho66wEG0

BOOL GetKeyboardState(
PBYTE lpKeyState // 状態データの配列
);
dakara

DEF_DLL GetKeyboardState( byref byte[] ): Long: User32.dll

dim key[255]
ret = GetKeyboardState(key[])
for i = 0 to 255
 print key[i]
next
35 [sage] 2009/12/12(土) 17:37:15 :3Ho66wEG0
ミスってた。
↓のコードで表示できたよ。3つまで同時表示。UWSCでもできるんだなあ。びっくり。
配列だと最初からポインタ渡しなんだな。

DEF_DLL GetKeyboardState( byte[] ): Long: User32.dll

dim key[255] // 0〜255で256個の配列
while true
 ret = GetKeyboardState(key[])
 FUKIDASI("VK_LEFT=" + ((key[VK_LEFT] AND $80) = $80) + " VK_RIGHT=" + ((key[VK_RIGHT] AND $80) = $80) + " VK_UP=" + ((key[VK_UP] AND $80) = $80) + " VK_DOWN=" + ((key[VK_DOWN] AND $80) = $80), 0, 0)
 SLEEP(0.2)
wend

しかし、256個並べるわけにはいかないから、文字列連結が必要だろう。
256回のループはやっぱ必要か。
いや、共用体としてLong[64]を使えばループ回数は減らせるはずだ。
共用体が無理ならコピーでもいい。
35 [sage] 2009/12/12(土) 19:03:03 :3Ho66wEG0
なんか、キーを4つほど押したことになってるな・・・
んで普通に3つ押せる。
名無しさん@お腹いっぱい。 [sage] 2009/12/13(日) 01:05:59 :Znj2ND940
つ ttp://www3.bigcosmic.com/board/s/board.cgi?id=umiumi&mode=all&no=296&log=ON&cnt=3
つ ttp://www3.bigcosmic.com/board/s/board.cgi?id=umiumi&mode=all&no=316&log=ON&cnt=3

実用面では厳しいものがあると思うよ…。素直にAH(ry
35 [sage] 2009/12/13(日) 11:16:19 :C0QriWGM0
こんな感じでやればループ回数は1/4になるはずだけど、なんか失敗してるっぽい。
for j = i * 4 to j + 3  とかできちゃうのはUWSCの特徴。(やらない方がいいかも。)
普通なら for j = i * 4 to i * 4 + 3 って書かないといけない。

DEF_DLL GetKeyboardState( byte[] ): Long: User32.dll
DEF_DLL RtlMoveMemory( long[], byte[], Long ): Long: kernel32.dll

dim key[255]
dim array[63]

while true
 s = ""
 ret1 = GetKeyboardState(key[])
 ret2 = RtlMoveMemory(array[], key[], length(key))
  for i = 0 to 58 // arrayの場合
   ifb array[i] and $80808080 then
    print "i=" + i + "(" + array[i] + ")"
    for j = i * 4 to j + 3
     ifb key[i] and $80 then
      s = s + "j=" + j + "(" + key[j] + ") "
     endif
    next
   endif
  next
 FUKIDASI(s, 0, 0)
 SLEEP(0.2)
wend
35 [sage] 2009/12/13(日) 11:28:01 :C0QriWGM0
UWSCで効率的にやろうと思ったら、DLL使って文字列化することだね。
そうすれば、同時に押せるキーは3つしかないわけだから、3回のループで済む。

key[255]を
keystatestring="00000000000000000000000000010010000000000000000" //256文字

for i = 1 to 3
 POS( "1", keystatestring, i )
next

っていうか、keycoe[2]っていう配列にキーコードを返してくれるDLL関数があれば、その方がいいのか。
GetKeyboardState(keystate[])
for i = 0 to GetKeyCode(keycode[], keystate[])
 ptint "keycode=" + keycode[i] + " keystate=" + keystate[keycode[i]]
next
名無しさん@お腹いっぱい。 [sage] 2009/12/14(月) 17:44:27 :9JPfc9vT0
ちょっと質問が
ウィンドウのないプロセスを終了させたいときはどうすればいいの?
具体的に言うとconime.exeをUWSCを使って終了させたいんだけど、
GETIDとCTRLWINを試してもできなかった。UWSCで終了させる方法はあるのかな?
名無しさん@お腹いっぱい。 [sage] 2009/12/14(月) 17:55:50 :YldRjkCS0
タスクマネージャーを開かせて、CLKITEMでconime.exeを選択、終了してみちゃどうだい
名無しさん@お腹いっぱい。 [sage] 2009/12/14(月) 18:14:38 :9JPfc9vT0
うーん、そういう方法しかないのか
名無しさん@お腹いっぱい。 [sage] 2009/12/14(月) 18:18:53 :Bshp7Krq0

DOSCMD("tskill conime")
とかじゃない?
名無しさん@お腹いっぱい。 [sage] 2009/12/14(月) 18:34:19 :J++hvE3G0

コマンドの説明ではなんか微妙にちがうっぽいけど、メモ帳は終了できたよ。

普通はtaskkillとかtasklist使うって書いてあるけど、Homeエディションだからか入ってないんだよね。
tasklistが使えたら便利なんだけど。
API使って取得するより、DOSコマンドのパイプ使って絞り込んだ方が早いしね。
tasklist | find "notepad"とか。


ちなみにUWSCの関数ではIDでしか制御できないけどIDが取得できないので制御できないね。
名無しさん@お腹いっぱい。 [sage] 2009/12/14(月) 18:47:09 :Bshp7Krq0

IDが言語っぽいなw
つ qprocessコマンド
名無しさん@お腹いっぱい。 [sage] 2009/12/15(火) 00:00:11 :J++hvE3G0

それも超マイナーなJ++・・

qprocessね。なるほど。
UWSCで使ったら便利なコマンドとかバッチとかまとめたら便利かも・・・って環境によるんだよね。

関連ってことで一応あげとくか。
初心者〜管理者まで必読!コマンドライン(DOS Pt.8)
ttp://pc12.2ch.net/test/read.cgi/win/1243134619/

【.cmd】 バッチファイルスクリプト %5 【.bat】
ttp://pc12.2ch.net/test/read.cgi/tech/1242268171/
41 [sage] 2009/12/15(火) 06:41:43 :vPOWhoxM0
そうだった、肝心なDOSコマンドのこと書くの忘れてた。ごめん
DOSCMD("taskkill /im conime.exe")
で終了させる方法はもう試してたんだけど、
DOSコマンドを使うとconime.exeが自動起動するから
UWSCでDOSコマンドを使ったときに、起動したconime.exeも一緒にkillできないかなと思って

UWSCだと方法はDOSコマンドしかないみたいだから
DOSコマンドを使うときに一緒にDOSCMD("taskkill /im conime.exe")と書くしかないか
名無しさん@お腹いっぱい。 [sage] 2009/12/15(火) 15:06:20 :9Zmrpz910

っ 一口メモ
Conime.exe を起動しないようにする
[HKEY_CURRENT_USER\Console]]
"LoadConIme"=dword:00000000
名無しさん@お腹いっぱい。 [sage] 2009/12/17(木) 14:08:44 :gJ3JtLvf0

CTRLWIN() でイけたよ @XP Home SP3

DIM path = "C:\WINDOWS\system32\conime.exe"
DIM i

FOR i=0 TO GETALLWIN()-1
  IFB STATUS(ALL_WIN_ID[i], ST_PATH) = path THEN
    CTRLWIN(ALL_WIN_ID[i], CLOSE)
    BREAK
  ENDIF
NEXT
名無しさん@お腹いっぱい。 [sage] 2009/12/17(木) 14:18:13 :fLsGSbJB0

すごいけどやりたくないんじゃないかな。

まあのこの一文は間違いって分かったけど。
> ちなみにUWSCの関数ではIDでしか制御できないけどIDが取得できないので制御できないね。
名無しさん@お腹いっぱい。 [sage] 2009/12/17(木) 23:29:02 :uV4iSpsO0
ググっててスクリプトの多重起動禁止で
既に起動している場合自身を終了ってのがあったんだけど

if getid(status(getid(GET_THISUWSC_WIN), st_title),status(getid(get_thisuwsc_win),st_class) > 0 then ExitExit

コピペして起動するとSyntaxErrorって出る
どこが間違ってるの?
名無しさん@お腹いっぱい。 [sage] 2009/12/17(木) 23:36:50 :uV4iSpsO0
あ、自己解決したかも
)
が一つ足りないんだよね?
名無しさん@お腹いっぱい。 [sage] 2009/12/18(金) 03:18:11 :PR8RGQ0b0
うん
名無しさん@お腹いっぱい。 [sage] 2009/12/18(金) 15:21:16 :nijyYsTD0
basicの
go to 文のように

指定行へ飛んで再び命令を実行するコマンドはありますか?
名無しさん@お腹いっぱい。 [sage] 2009/12/18(金) 15:26:19 :vrRma16p0

なさそうなので次のようにして代用している
たぶんPROCEDUREとかにした方が簡単だろうけどね

WHILE TRUE
処理(必ず行う処理)
if 条件 then break
処理(条件により飛ばす処理)
WEND
名無しさん@お腹いっぱい。 [sage] 2009/12/18(金) 15:39:47 :8nryPwZy0

ありがとうございます
やはり工夫しないと代用はできないようですね
名無しさん@お腹いっぱい。 [sage] 2009/12/18(金) 15:49:09 :sdiE7QKM0

そういうbreakの使い方って可読性低いんじゃない?
やるなら
ifb
 (条件により飛ばす処理)
endif
とか処理の範囲を明確にするほうがいいような気がする。

…まぁ、俺はそうしてる、ってだけだけど。
名無しさん@お腹いっぱい。 [sage] 2009/12/18(金) 16:19:03 :vrRma16p0

普通ならたぶんifb 〜endifだろうね
ただ、何を作ってたか忘れたけどどうしてもifbで出来ないケースにぶち当たってしまい、
苦肉の策で考えてやってみたんだ。それ以来こっちのほうを使っている
思い出そうとしても思い出せないくらいだけど、gotoなくてしばらく苦しんだことだけ覚え
てる
そもそも WHILE TRUEの時点でかなり特殊な使い方をしてるって意識できるループに
なるからね。ループを脱出できるのはbreakしかできないんだ
名無しさん@お腹いっぱい。 [sage] 2009/12/18(金) 16:29:12 :2K48D2BC0
> ifb OK then
>  ifb OK then
>   ifb OK then
>    OK処理
>   endif
>  endif
> endif
↑では行数が増えた分だけインデントが深くなるので
> while true
>  if NG then break
>  if NG then break
>  if NG then break
>  OK処理
> wend
↑のように書いたりするんです。
でもOKとNGとがループの抜けと共に混じることになるので
↓のように、関数を使うのがベターかな。
> ifb !処理() then // 普通はエラーの場合に条件分岐なので、falseを反転して分岐処理
>  NG後始末
> else
>  OK後処理
> endif
>
> Function 処理()
>  処理 = false // 失敗に備えてエラーをセット
>  if NG then exit
>  if NG then exit
>  if NG then exit
>  OK処理
>  処理 = true // 成功したら成功フラグをセット
> FEND
名無しさん@お腹いっぱい。 [sage] 2009/12/18(金) 17:45:48 :SLXkS1nI0
ifbよりbreakの方がgotoっぽいからbreak使ってる
名無しさん@お腹いっぱい。 [sage] 2009/12/18(金) 18:21:51 :dGzexJ6N0
全然素人だからアホな考えかもしれないけど
uwscにgoto処理できる機能を作者さんが付け加えることはできるの?
名無しさん@お腹いっぱい。 [sage] 2009/12/18(金) 18:42:22 :in2xK9mD0

goto のように他の行へ移動したいのですが
初歩的な質問ですみません。
VBAでいう goto みたいな命令文はあるのでしょうか?
よろしくお願いします。


DATE:2007/1/17(Wed) 13:26 No.474

RE:goto umiumi


ありません。
#将来的にも付ける気はありません
名無しさん@お腹いっぱい。 [sage] 2009/12/18(金) 21:30:11 :WhncmQLP0
あったほうが便利なのにね
名無しさん@お腹いっぱい。 [sage] 2009/12/18(金) 22:35:34 :Rqu21NSB0

goto使っちゃ   負けだと思ってる  個人的にネ

名無しさん@お腹いっぱい。 [sage] 2009/12/18(金) 23:42:48 :6/ZSokwM0
使い始めでカンタンな動作しかさせないつもりだったんだけど
とあるサイトを sleipnirでバックグラウンドで操作したいんだけど
アクティブウィンドウで動作させる場合は KBDで事足りてるだけどPC占有されちゃうんで
バックグラウンドでやりたい。

id = GETID("Sleipnir")
MOUSEORG(GETCTLHND(id, "Internet Explorer_Server"), 2)
KBD(VK_TAB,CLICK)〜
とかやってもうんともいわなくて
SCKEY(id, VK_TAB)  これをやるとウィンドウがアクティブになってしまう。

ttp://uenomemo.blog31.fc2.com/blog-entry-52.html
これを参考にしようかと思ったんだけど さっぱり。
pnir = CreateOLEObj("Sleipnir.API")と宣言されてもあとどうしていいかわからない。
誰か教えてください。 
名無しさん@お腹いっぱい。 [sage] 2009/12/19(土) 00:05:02 :ATzk7yJS0
CLKITEM使えよw
名無しさん@お腹いっぱい。 [sage] 2009/12/19(土) 00:05:38 :67QaJwyf0
こりゃまた大胆なマルチポストだな…。
名無しさん@お腹いっぱい。 [sage] 2009/12/19(土) 05:47:10 :8hxMfkWq0
そのレベルから教えるのは無理なので
まずは3の教則本でも買って勉強してきてください
名無しさん@お腹いっぱい。 [sage] 2009/12/20(日) 03:13:13 :sezMof5L0

sleipnirで操作する必要性がわからない。
sleipnirって中身IEでしょ?
だから普通にIEを制御すればいいと思うんだけど。
66 [sage] 2009/12/20(日) 07:35:14 :bLgdGkWj0
67-70とりあえず本は注文しといた。
sleipnirに拘ってはいないんだけど、普段使ってるからなんとなく。
IEと同じだからやることは同じかなと。
ま、まだ出来てないんだけどね。理解するまでもう少し時間かかるかな〜
名無しさん@お腹いっぱい。 [] 2009/12/20(日) 11:24:50 :67+0bBGV0
Operaで動かしたいよー
メモ [sage] 2009/12/20(日) 14:12:47 :sezMof5L0
OLEEVENT( オブジェクト, インタフェース名, イベント名, Procedure名 )

インタフェース DWebBrowserEvents2
void BeforeNavigate2(java.lang.Object pDisp, com.ms.com.Variant URL, com.ms.com.Variant Flags, com.ms.com.Variant TargetFrameName, com.ms.com.Variant PostData, com.ms.com.Variant Headers, boolean[] Cancel)
void CommandStateChange(int Command, boolean Enable)
void DocumentComplete(java.lang.Object pDisp, com.ms.com.Variant URL)
void DownloadBegin()
void DownloadComplete()
void NavigateComplete2(java.lang.Object pDisp, com.ms.com.Variant URL)
void NewWindow2(java.lang.Object[] ppDisp, boolean[] Cancel)
void OnFullScreen(boolean FullScreen)
void OnMenuBar(boolean MenuBar)
void OnQuit()
void OnStatusBar(boolean StatusBar)
void OnTheaterMode(boolean TheaterMode)
void OnToolBar(boolean ToolBar)
void OnVisible(boolean Visible)
void ProgressChange(int Progress, int ProgressMax)
void PropertyChange(java.lang.String szProperty)
void StatusTextChange(java.lang.String Text)
void TitleChange(java.lang.String Text)

新しいページが開くときに動くには BeforeNavigate2、TitleChange、NewWindow2
開き終わってから動くには NavigateComplete2
イベント処理関数が終了しないとその続きが処理されないので、単純に実行タイミングとして使う場合はスレッド呼び出しをする。
途中で別のページを開く可能性があるので、タイマーで終了する必要があるかも。
73 [sage] 2009/12/20(日) 18:36:46 :NXkHkjdJ0
このスレは今後オレのメモとして使うからお前ら書き込むなよ。
名無しさん@お腹いっぱい。 [sage] 2009/12/20(日) 18:54:23 :sezMof5L0
了解
名無しさん@お腹いっぱい。 [sage] 2009/12/20(日) 19:15:57 :wo2Kl350P
メモは非表示にしたいので名前は「うんこメモ」でよろしく
名無しさん@お腹いっぱい。 [sage] 2009/12/20(日) 20:15:15 :sezMof5L0
// 待ちループなしのIE制御スクリプト
STOPFORM(true)
PUBLIC gIE2
gIE2 = CreateOLEObj("InternetExplorer.Application")
gIE2.visible = True
gIE = CreateOLEObj("InternetExplorer.Application")
gIE.visible = True
ID = HNDToID(gIE.HWND)
OLEEvent( gIE, "DWebBrowserEvents2", "TitleChange", "TitleChange" )
OLEEvent( gIE, "DWebBrowserEvents2", "BeforeNavigate2", "BeforeNavigate2" )
OLEEvent( gIE, "DWebBrowserEvents2", "NewWindow2", "NewWindow2" )
OLEEvent( gIE, "DWebBrowserEvents2", "OnQuit", "OnQuit" )
sleep(60)
CtrlWin(ID, CLOSE)
Procedure OnQuit()
 exitexit
FEND
Procedure TitleChange() // キャッシュに入ってない場合に2回呼ばれる。そして1回目はページ受信前のタイトル。
 Title = EVENT_PRM[0]
 print "TC " + Title
FEND
Procedure BeforeNavigate2() // 1回のページ操作につき1回呼ばれる。
 IE = EVENT_PRM[0]   // IEオブジェクト
 URL = EVENT_PRM[1]  // 開くURL
 print "BN " + IEGetData( IE, "TAG=title" ) + " " + URL
FEND
Procedure NewWindow2()
 EVENT_PRM[0] = gIE2  // 新しく指定するブラウザオブジェクト(自分自身は指定できない)
 EVENT_PRM[1] = True // Cancel flag
 print "NW"
Fend
名無しさん@お腹いっぱい。 [sage] 2009/12/21(月) 12:37:44 :9pLp31HK0
>> ID:sezMof5L0
のスレにそんなに顔真っ赤になったのか?
一生懸命メモ貼らなくていいよ。
名無しさん@お腹いっぱい。 [sage] 2009/12/21(月) 15:31:16 :1MBjkeY90
XPでIE6使ってるけど、”ファイルのダウンロード”ダイアログではバックグラウンドで保存ボタンをクリックできないんだけど
これってダイアログが裏で動くのを却下してるってことなのかな。
いまさらだけど、たまにしか作らないとそういうところで引っかかる。
最初から表にいてもなんかクリックできなくて一旦裏にもって行かないといけなかったり。
結局AACで指定しないといけない。
”名前を付けて保存”ではそんなことなさそうなんだけど。
”名前を付けて保存”の上書き確認とかのメッセージボックスなら自作のGetChldID()ですばやく確実にIDをゲットしてクリックできるんだけどなあ。
>  Until !ClkItem( DlgID, "保存", CLK_BTN or CLK_SHORT or CLK_BACK )
>  Result = !CancelIfOverWrite(DlgID, 20)
> // ID: 名前を付けて保存ダイアログのID
> // false: キャンセルしてない true: キャンセルした
> Function CancelIfOverWrite(ID, TLimit)
>  Result = false
>  print "called CancelIfOverWrite()"
>  Repeat
>   sleep(0.1); TLimit = TLimit - 0.1; if TLimit < 0 then exit
>   if !IDToHnd(ID) then exit
>   CID = GetChldID( ID )
>  Until 0 < CID
>  // 上書き確認メッセージ処理
>  Result = true
>  while true
>   ifb 0 < CID then
>    ClkItem( CID, "いいえ" )
>   Else
>    ClkItem( ID, "キャンセル" )
>   Endif
>   sleep(0.3); TLimit = TLimit - 0.3; if TLimit < 0 then exit
>   if !IDToHnd(ID) then exit
>   CID = GetChldID( ID )
>  wend
> FEND
名無しさん@お腹いっぱい。 [sage] 2009/12/21(月) 15:44:52 :1MBjkeY90
あと、のBeforeNavigate2でIEオブジェクトをスレッドに渡して処理しようとしても、
IEオブジェクトを使うときにエラーになる。
グローバル変数を使ったりvarで渡したりしてみたけどどーしてもエラーになる。
普通にスレッド実行するときにはvar引数でIEオブジェクトを渡して使えてたんだけど、
BeforeNavigate2でスレッド呼び出ししたらなぜか駄目だ。
結局BeforeNavigate2では開始フラグをセットして、関数呼び出しは普通に待ちループでやった。
まあBeforeNavigate2も何度か呼ばれたりするみたいだしそのほうが2重起動とかなくてよかったみたい。
もしかして2重起動されるのが原因・・なわけないな。ちゃんと選別してたから。
名無しさん@お腹いっぱい。 [sage] 2009/12/21(月) 16:01:58 :GyHfCZ1l0
独り言お疲れ様です
名無しさん@お腹いっぱい。 [sage] 2009/12/21(月) 22:51:55 :qrX4Zb5TP
質問ならまだしも独り言口調ってマジムカつく
もっと読んでる人の事を考えてほしい
名無しさん@お腹いっぱい。 [sage] 2009/12/22(火) 09:25:16 :/egSySEF0

質問ならまだしも独り言口調ってマジむかつきませんか?
もっと読んでる人のことを考えて欲しいと思っているのですが、貴方の考えはどうでしょう?
名無しさん@お腹いっぱい。 [sage] 2009/12/22(火) 11:16:08 :Y5j4vTTi0
は釣りだろ。
名無しさん@お腹いっぱい。 [sage] 2009/12/25(金) 22:12:23 :QQjADlGN0
DOSコマンドの

pushd X:\Temp
del /q *.*
for /D %%f in ( * ) do rmdir /s /q "%%f"

というのをUWSCでやろうとして

DOSCMD("pushd X:\Temp<#CR>del /q *.*<#CR>for /D %%f in ( * ) do rmdir /s /q <#dbl>%%f<#dbl>", false, true)

と書いたけど、ちゃんと動いてくれない
どこが間違ってるの?
名無しさん@お腹いっぱい。 [sage] 2009/12/25(金) 22:22:33 :PGzvFXxt0
<#CR>で繋げないんだろう。
|使うかバッチファイル作るかすればいいんじゃないかな?
名無しさん@お腹いっぱい。 [sage] 2009/12/25(金) 23:15:19 :QQjADlGN0
だめだ、俺の知識じゃどうやってもできない
おとなしくバッチファイルにしとくわ
名無しさん@お腹いっぱい。 [sage] 2009/12/26(土) 08:32:23 :scMOjuw20

複数のコマンドを連続で実行するなら丸括弧と改行で区切ればいいよ。
普通にコマンドラインで
> ( dir
とだけ入力すれば、More?って聞いてくる。
> )
で閉じるまで実行待ち状態。

パイプも連続実行だけど後のやつが受け取ったものをどう処理するか分からないからね。
しかしなんでループ処理でrmdirしちゃうのかねえ。
85 [sage] 2009/12/26(土) 09:25:34 :MKs2n1Uw0
動かなかった原因がわかった
UWSCスクリプトでやるときは%が一つ余分になるんだ


ttp://okwave.jp/qa4178416.html
俺はここから丸写ししただけ
名無しさん@お腹いっぱい。 [sage] 2009/12/27(日) 19:25:42 :Y9u003Cq0
UWSCではっていうか、
VIDタグに流し込まれたHTMLって普通にDOMアクセスできないですよね。
だけどHTMLソースコードをテキストで構造解析するのはちょっと大変。
そこで、DIVタグのIDさえ取れればその配下のエレメントを処理できる関数を書いてみました。
判定関数をEVALでCALLすることで汎用的に使えます。
まだ動かしてはいないんだけど、一応EVALが関数を実行してオブジェクトを返せることは確認しました。

>// DOMアクセスで再帰的に配下のエレメントをたどる。
>// EVALの結果がemptyでなくなったらやめて結果として返す。
>Function SrchDomTree( elm, func )
> result = empty
> // 先に直接の子ノードを調べる
> for i = 0 to elm.childNodes.length
>  ret = eval(func)
>  ifb ret then
>   result = ret
>   exit
>  endif
> next
> // 孫ノードに入っていく
> for i = 0 to elm.childNodes.length - 1
>  ifb elm.childNodes[i].childNodes.length then
>   ret = SrchDomTree( elm.childNodes[i], func )
>   ifb ret then
>    result = ret
>    exit
>   endif
>  endif
> next
>Fend
名無しさん@お腹いっぱい。 [sage] 2009/12/27(日) 19:42:39 :Y9u003Cq0
おっと。引数を追加する仕組みを忘れてました。
eval(func)のところは
eval( func + "(" + elm.childNodes[i] + env +")" )
呼び出しは
SrchDomTree( elm, "func", ", 引数2, 引数3" )
って感じになるかな?

判定関数はこんな感じ。
>// エレメントのouterHTMLを取ってAタグならIMG srcに"video_download.gif"があるか調べ、
>// あればouterHTMLからリンクアドレスを取得
>Function GetFLVLink(elm)
> result = empty
> str = elm.outerHTML
> ifb 1 = Pos( "<A", str ) then
>  ifb Pos( "video_download.gif", BetweenStr( str, "src=<#DBL>", "<#DBL>" ) ) then
>   result = BetweenStr( str, "href=<#DBL>", "<#DBL>" )
>  endif
> endif
>Fend
>
>// 指定されたリンク文字を持つリンクアドレスを取得
>Function GetKWDLink( elm, keyword )
> result = empty
> str = elm.outerHTML
> ifb 1 = Pos( "<A", str ) then
>  ifb Pos( keyword, elm.innerHTML ) then
>   result = BetweenStr( str, "href=<#DBL>", "<#DBL>" )
>  endif
> endif
>Fend
名無しさん@お腹いっぱい。 [sage] 2009/12/27(日) 23:50:29 :KdIVRt980
ieをアクティブにした状態で以下を実行してみたのですがcom_error例外が発生しました
となってしまします
というか2行目以降でieを使うとエラーになります
解説サイトなど探してもあっさり進んでしまうのですが…何か足りませんか?
よろしくお願いします

ie = CreateOLEObj("InternetExplorer.Application")
SENDSTR(0, IE.document.title)
名無しさん@お腹いっぱい。 [sage] 2009/12/28(月) 00:21:27 :GHkoEhmr0

変数や関数は大文字小文字を区別します。
ieはオブジェクトを受け取ってるけど、IEはオブジェクトを持ってないからエラーになります。
あと、document.titleのtitleもTitleと、大文字小文字を区別するのでエラーになるでしょう。
documentの方は割りと融通が利くようですが。

あと、IEオブジェクトなどはユーザーが閉じると無効になり、使えばエラーになります。
そういうのはそういうものとして使うか、終了を検知してスクリプトを適切に処理するかのどっちかになります。
ID = HNDToID(IE.HWND)
と、IDを取っておいて
ifb ! IDToHnd(ID) then
 // IDと元のIEオブジェクトは無効
 exit
endif
とやれば、com_error例外にならずに終了を判定できます。
IDToHnd()は終了検知に便利なのでお勧めです。

ちなみにウィンドウハンドルのゼロはデスクトップを意味するので、本来は数値で有効無効を判定できるものではないと思います。
名無しさん@お腹いっぱい。 [sage] 2009/12/28(月) 01:24:44 :8NfAzOMC0
win7では使用できますか?
名無しさん@お腹いっぱい。 [sage] 2009/12/30(水) 11:24:56 :3SgEgPry0

多分使えますよ。
でもいろいろ気をつけることはあるようです。
ttp://www.uwsc.info/faq.html
名無しさん@お腹いっぱい。 [sage] 2009/12/30(水) 11:45:30 :3SgEgPry0
OLEEVENTを使っていてどーもクラッシュしまくるので、前後にsleep()を入れてみたら少し改善したようだ。

右クリックメニューをポップアップウィンドウとして検出しようとしたけど、
GetWindow( IDToHnd(ID), GW_ENABLEDPOPUP ) で取得できるのはダイアログ・ツールチップのほか、サブメニューだけっぽいね。
1個目のメニューは右クリックメニューですらポップアップじゃないらしい。
GetID( "", "#32768" )でいけるって本家の過去ログに書いてあったんだけど、やっぱそれが現実的だった。
メニューは簡単に閉じるから名前なし親子関係なしでも案外正しく取れるもんだ。
ただ、クリックできない病気のためにうまくいかない。

しかし、サブメニューの操作が必要なときはその方法ではIDが取得できないだろう。
サブメニュー用のID取得関数がたまたまできたので次レスに投稿する。
ちなみに、親子関係はメインウィンドウの子ということになる。
間違っても親メニューの子ではないので注意が必要。
いや、もしかすると親メニューの子であり、メインメニューの孫だったりするかもしれないが。

GetIDでやっているような、タイマーと永久ループの指定可能な関数にしてみたんだが、
それをfor文でやれるかなと思ったけど、回数を決定できる条件じゃないとだめだった。
具体的には、step0で永久ループにしようと思ったんですが、実行時に警告が出ました。
浮動小数点演算ではやってはいけない、ちょうど0になったときだけ終了という条件にすることでシンプルにできました。
ちゃんと動くかは試してないけど、まあ大丈夫でしょう。

ちなみに、動作確認などのテストコードに番号を振ってるんですが、そのfor文が108番でした。
間は結構飛び飛びだけど、年末にその番号にあたったんでなんだか縁起がいいかもです。
名無しさん@お腹いっぱい。 [sage] 2009/12/30(水) 11:57:01 :3SgEgPry0
// サブメニューのIDを取得する。
// TLimit=-1 : 永久待ち
// TLimit=0 : 1回のみ
// 戻り値 0 : 該当なし -1:ダイアログ表示 その他:サブメニューのID
Function WaitSubMenuPopup( ID, TLimit = -1 )
 def_dll GetWindow(hWnd,long):long:user32.dll
 Public GW_ENABLEDPOPUP = 6   // ポップアップウィンドウ
 result = 0
 H = IDToHnd(ID)
 Repeat
  sleep(0.01)
  if 0 < TLimit then TLimit = TLimit - 0.01
  retH = GetWindow( H, GW_ENABLEDPOPUP )
  if ! retH then continue
  retID = HndToID(retH)
  Select Status(retID, ST_CLASS)
   case "#32768"  // メニュー
    result = retID
    exit
   case "#32770"  // ダイアログが表示されたらエラー中断
    result = -1
    exit
  Selend
 Until ! TLimit
Fend
名無しさん@お腹いっぱい。 [sage] 2009/12/31(木) 18:28:22 :Z8Iw0iCS0
FOR文の使い方について教えてください。
以下のように書くと10から20までの数字が画面に表示されます。

FOR i = 10 TO 20 STEP 1
    FUKIDASI( i)
    SLEEP( 1)
NEXT

ところが各数字を10分の1にすると1から1.9までの数字しか表示されません。

FOR i = 1.0 TO 2.0 STEP 0.1
    FUKIDASI( i)
    SLEEP( 1)
NEXT

これはどうしてなのでしょうか?
名無しさん@お腹いっぱい。 [sage] 2009/12/31(木) 19:15:53 :8NQ2XvCh0
STEP 0.2だと2が表示されるな。
挙動がようわからん…
何か0.124と0.125の間あたりで切り替わるようだが…
とりあえず
FOR i = 10 TO 20
//   多用するならj = i / 10とかして使う
    FUKIDASI( i/10)
    SLEEP( 1)
NEXT
とかするのが無難そうね。
名無しさん@お腹いっぱい。 [] 2009/12/31(木) 22:41:43 :WvG0KKdQP

誤差の影響です。
コンピュータはすべて2進法で計算していますが、
この2進法では0.1という数字を「正確に」扱う事が出来ないのが原因です。

これは私たちの身の回りにもよくある話です。
私たちが普段使っている10進法では「1/9」を小数で表現すると
0.1111・・・ですよね。
1/9を9個足せばもちろん1です。
しかし
0.111111111111111111と途中で数字を切り捨てて計算を続けたらどうでしょうか?
これを9個足しても
0.999999999999999999にしかならず、決して1にはなりませんね。

もちろん工夫をする事によってこの問題を回避する方法を持っている
計算プログラムも存在していますが、難しい処理が必要になるため
プログラムの価格が高価であったり計算する時間が長くなったりします。
uwscのようなプログラムでは一般的に誤差を持っています。

誤差を極力減らすためにはさんがおっしゃるように
なるべく整数のまま計算をするのが最も効果的な方法といえます。
名無しさん@お腹いっぱい。 [sage] 2010/01/01(金) 00:05:54 :zRjPwPJp0

お前、頭いいな。
どこ大学出よ?
名無しさん@お腹いっぱい。 [sage] 2010/01/01(金) 01:08:17 :SeLmUNNh0
この場合は誤差はないと思いますけど。

原因は多分、0.0を0と計算できないこと・・・
いや、やっぱり誤差かな?
回数を計算するときにUWSC内部で
(2.0-1.0)/0.1とかやってるんだろう。

10進数の0.1は、2進数で・・・
ttp://www.infonet.co.jp/ueyama/ip/semi_cnd/abacus.html
> ところで、10進数の 0.1 は、2進数では正確に表すことができず、 その近似値は 0.00011001100110011001100 … になります。

てことは・・やべは無限ループだ。
全て100倍して整数値で計算しないと。
んでもって確実に整数値にするためにINT()とか使わないと。
【末吉】   【1885円】 [sage] 2010/01/01(金) 01:51:39 :SeLmUNNh0
!omikuji !dama
【ぴょん吉】 【605円】 [sage] 2010/01/01(金) 01:56:44 :JMt2GOx60
てすと
名無しさん@お腹いっぱい。 [sage] 2010/01/01(金) 10:05:06 :SeLmUNNh0
> Until !CEIL(TLimit)
は判定をこーするだけでいいな。
複数条件だと論理演算がふつーにはできんからややこしくなるし。
!!(条件1) and !!(条件2)でも通るかもしれんけど。
98 [sage] 2010/01/01(金) 11:48:35 :pAk0r2E30


回答ありがとう。なるほど。

小数点以下を多めに表示させるとこうなりました。

FOR i = 1.0 TO 2.1 STEP 0.1
    FUKIDASI( FORMAT( i, 19, 17))
    SLEEP( 1)
NEXT

1.00000000000000000
1.10000000000000009
1.19999999999999996
1.30000000000000004
1.39999999999999991
1.50000000000000000
1.60000000000000009
1.69999999999999996
1.80000000000000004
1.89999999999999991
2.00000000000000000

0.1を正確に表せないとはいえ、誤差が拡大しないように調整されてるのかな。
回数が狂うのはの言うように実行回数計算を別途やっていてその時点で誤差が出てるんですかね。
98 [sage] 2010/01/01(金) 16:45:33 :wjuaj82V0
小数の問題っていろんなところに出るんだなぁ。
ROUND関数って小数点以下を四捨五入する関数なんだと思うけど
入れる数字によってはおかしくなる。

FUKIDASI( ROUND( 12.5))
SLEEP( 1)
【大吉】   【313円】 [sage] 2010/01/01(金) 18:36:08 :h6GpVGPr0
FUKIDASI( hoge(12.5))
SLEEP(1)

Function hoge(num)
 num = num + 0.5
 num = int(num)
 Result = num
Fend
これだとまともに動くなw
中でどんなことやってるんだろうか…
名無しさん@お腹いっぱい。 [] 2010/01/01(金) 21:30:04 :RTODHS/O0 ?2BP(0)
恐らくヘルプにも四捨五入とは書かれておらず「丸める」とあるはずです。
の挙動を見る限り一般的に使用されている「偶数丸め」をそのまま採用しているかと。

偶数丸めというのは12.5のように12と13の中間の値を取る場合は
偶数側の値に切り捨てを行う処理方法です。13.5であれば切り上げて14とします。

round(14.5)も14になるはずですよ。
名無しさん@お腹いっぱい。 [sage] 2010/01/03(日) 10:53:27 :r0VUyURQ0
の修正
文字列をEVALに渡す場合、ダブルクォーテーションを付加しないと変数扱いになる。
数値を渡す場合は不要なので、SrchDomTreeを呼ぶときに付加しておいたほうがいいっぽい。
// SrchDomTree( "func", IE.document.getElementById("my_footer"), "<#DBL>文字列<#DBL>", "123" )

// Function SrchDomTree( func, elm, env1 = 0, env2 = 0, env3 = 0, env4 = 0 )
//  result = empty
//  // 先に直接の子ノードを調べる
//  for i = 0 to elm.childNodes.length - 1
//   ret = eval( func + "(" + "elm.childNodes[i]" + "," + env1 + "," + env2 + "," + env3 + "," + env4 +")" )
//   ifb !IsEmpty(ret) then
//    result = ret
//    exit
//   endif
//  next
//  // 孫ノードに入っていく
//  for i = 0 to elm.childNodes.length - 1
//   ret = SrchDomTree( func, elm.childNodes[i], env1, env2, env3, env4 )
//   ifb !IsEmpty(ret) then
//    result = ret
//    exit
//   endif
//  next
// Fend

おまけ
// ifb 3 = elm.childNodes[i].nodeType then // テキスト
//  elm.childNodes[i].nodeValue // テキストデータ
名無しさん@お腹いっぱい。 [sage] 2010/01/05(火) 14:59:27 :WsNY715b0
softalk使って日本語しゃべらせたいんだけど、素人過ぎてショートカット乱立させてクリックさせるのが限界です・・・。

上品な立ち振る舞いで話させるには、どうプログラムしたら良いですかね?
名無しさん@お腹いっぱい。 [sage] 2010/01/05(火) 16:22:04 :deSK2IBq0

doscmd or exec と softalk の引数指定
名無しさん@お腹いっぱい。 [sage] 2010/01/05(火) 20:02:55 :idKMoxPT0
ヘルプすべて印刷して一読すると良いよ
それが面倒臭いならテンプレの本買え
名無しさん@お腹いっぱい。 [sage] 2010/01/05(火) 23:22:45 :WsNY715b0

ありがとよ。かなりスマートになった。


exe名入れるときにメモ帳は"notepad"でいいのに、
softalk指定するときはアドレス入れないといけないのは何でなんだ?

プログラムの基礎の質問なんだと思うが...
名無しさん@お腹いっぱい。 [sage] 2010/01/06(水) 00:07:16 :12AIG4f80
そのディレクトリにパスが通っているかという話。
環境変数のPATHにそのディレクトリを登録すれば(=パスを通せば)行ける。
詳しくはググるよろし。
名無しさん@お腹いっぱい。 [sage] 2010/01/06(水) 03:48:14 :j0L+SVeO0
ECMAScript みたいに
関数自体を変数に代入する方法ないかな?
変数を () 付きで実行することで
その変数に代入された関数を実行するようにしたい
名無しさん@お腹いっぱい。 [sage] 2010/01/06(水) 03:57:32 :j0L+SVeO0
あ、evalあるのね
これでできそうです
お騒がせしました
◆fdAnbU5Z6U [sage] 2010/01/06(水) 07:29:33 :EasGK5JXP
少しだけ相手してやんよww
若いだろ?至りってやつだな
名無しさん@お腹いっぱい。 [sage] 2010/01/06(水) 10:00:09 :jv+N909k0

じゃあこれデバッグしてください。
ttp://karimofu.org/dlp/mofu1_7789.zip.php
ダウンロードパス:saymove
名無しさん@お腹いっぱい。 [sage] 2010/01/06(水) 10:01:35 :jv+N909k0
ていうか1月6日に閉鎖ですか。
これから先自作スクリプトはどこにうpすればいいのか。
◆fdAnbU5Z6U [sage] 2010/01/06(水) 11:44:36 :EasGK5JXP
キモイホモだなぁ!おまえブサメンでキモブサだろ?少しだけ相手してやんよww
若いだろ?至りってやつだな
98 [sage] 2010/01/08(金) 14:59:40 :VCRefa1D0

その通りですね・・・偶数丸めというのを知らなかったので。
お騒がせしてすみませんでした。
名無しさん@お腹いっぱい。 [sage] 2010/01/15(金) 20:16:22 :3e5Ape4g0
長文で失礼します。
最近uwscを勉強しはじめました。
uwsc本を参考に連番のIDでサイトにログインするように作ってみました。
一応出来たのですが、ID001からID030までを連続で入れることが出来ないため()
1〜9用マクロと10〜30用マクロに分けて使っています。
もっとシンプルにしたり、1〜30までの連番を1つのマクロに統一する方法はありますでしょうか?
おそらく初歩的なことなのでしょうが質問お願いします。
_________________________________________
例)ログインIDは "id001"〜"id030"
  パスワードは ps
>SUUJI = 1
>FOR A = 1 TO 30

>KBD(VK_i)
>KBD(VK_d)
>KBD(VK_0)
>SENDSTR(,SUUJI)
>SUUJI = SUUJI +1
>KBD(VK_TAB)
>KBD(VK_p)
>KBD(VK_s)
>KBD(VK_TAB)
>KBD(VK_ENTER)
id入力の所を、
1〜9用マクロは、KBD(VK_i) KBD(VK_d) KBD(VK_0) KBD(VK_0)
10〜30用マクロはKBD(VK_i) KBD(VK_d) KBD(VK_0)
にして使っています。

一本化するにはどのように直せば良いでしょうか?
名無しさん@お腹いっぱい。 [sage] 2010/01/15(金) 22:54:28 :zUTDSHGw0

IESetDataを使おう。
Formatで0埋めは出来ないようだから、
z = "0"
zz = "00"
とかして、

for i = 1 to 30
ifb i < 10
hoge = zz + i //数値と文字列足すと文字列として足してくれる
else
hoge = z + i
endif
IESetData(IEID,hoge,"ID")
IESetData(IEID,"ps","PASS")
〜〜
next
とか、そんな感じ。
RecIEで出力させて見れば解ると思うよ。
名無しさん@お腹いっぱい。 [sage] 2010/01/15(金) 22:55:55 :zUTDSHGw0
インデント入らなかった、スマソ
for i = 1 to 30
 ifb i < 10
  hoge = zz + i //数値と文字列足すと文字列として足してくれる
 else
  hoge = z + i
 endif
 IESetData(IEID,hoge,"ID")
 IESetData(IEID,"ps","PASS")
〜〜
next
名無しさん@お腹いっぱい。 [sage] 2010/01/16(土) 13:15:51 :ZYqbg1Ld0
自動ログインスクリプトを作成してみたのだが、サーバーエラーが出た場合の回避方がわかりません。
ifを使う事はわかったのだが、ピッタシに来る例文が探しても見つからないのです。
自力で色々試すもうまく行かず・・・どなたかご教授下さいませ。
以下スクリプト

//IEを開いてページ表示
IE = CREATEOLEOBJ("InternetExplorer.Application")
IE.visible = True
IE.navigate("http://×××××")
//5秒停止
sleep(5)
//接続表示待ち
while True
if (! ie.busy) and (ie.readyState=4) then Break
sleep(0.1)
wend
id = GETID("Internet Explorer")
//ログインID入力
IESETDATA( IE, "●●●●", "id" )
IESETDATA( IE, "※※※※", "pass" )
CLKITEM(id,"ログイン", CLK_ACC or CLK_MUSMOVE)
//5秒停止
sleep(5)
//接続表示待ち
while True
if (! ie.busy) and (ie.readyState=4) then Break
sleep(0.1)
wend

この下にもし「サーバーエラー」が出た場合は再度http://×××××に戻って
再度ログインID入力を再実行したいのだが・・・
名無しさん@お腹いっぱい。 [] 2010/01/16(土) 16:16:24 :hORuBIiX0

ttp://www3.bigcosmic.com/board/s/board.cgi?id=umiumi&mode=all&no=2800
IE = CREATEOLEOBJ("InternetExplorer.Application") ←これはループの外
IE.visible = True
> while true
>  受信処理(のスクリプトのうち最初の2行を除く部分)
>  if 0 = Pos("サーバーが混み合っています", str) then break
>  // 受信エラー
>  sleep(60)
> wend
> // 正常に受信
名無しさん@お腹いっぱい。 [sage] 2010/01/16(土) 20:08:00 :L+sAYtsZQ
わたくし初心者でちょっと困っているのですが
FAQにある
「負荷が高い時に ウィンドウのオープンをスクリプトが待ち切れず・・・」
の答えとしての↓
スクリプト内のGETID関数に第3引数(待ち時間指定)を付けて下さい。
GETID("xxxx", "xxxx", -1)  // -1:画面が出るまで待つ

同様に括弧内に-1をつけても思うように実行されません(待ってくれないのですが)
どなたかご教授お願いしますorz
名無しさん@お腹いっぱい。 [sage] 2010/01/16(土) 20:20:02 :hORuBIiX0

ウィンドウが出現しても、そのコントロールの配置に時間がかかる場合があります。
その場合、ウィンドウは存在しているからIDは取得できますが、コントロールがないので操作に失敗します。
コントロールを利用可能になっているか確かめる必要があります。

ウィンドウが出現していることを確認するには、Statusでタイトル名などを取得したらいいですよ。
本当にGetIDに失敗していたら取得したIDは-1になっているはずなので、その時点ではじくこともできるでしょう。
名無しさん@お腹いっぱい。 [sage] 2010/01/16(土) 20:21:01 :U6EzK14SP
待ってくれないって事は戻り値は-1なの?
別ウィンドウのを取得してるんじゃね?
名無しさん@お腹いっぱい。 [sage] 2010/01/17(日) 01:11:03 :SVOvo/dN0
数字を文字列として扱うにはどうすればいいでしょうか?
intA = 10
intB = intA * 2 //20
Print intA + intB //"1020"と表示したい
文字列結合子と演算子が同じ"+"なので、不可能なのでしょうか?
名無しさん@お腹いっぱい。 [sage] 2010/01/17(日) 02:22:14 :2D/YPlQ90

// フォーマット
戻値 = FORMAT( 数値, 幅, [小数点桁 or 16進指定] )
引数
  数値: 数値 もしくは文字
  幅: 出力される文字数 (数値より指定幅が大きい時は左側をスペースにて補完)
     数値ではなく文字が指定された場合は その文字で幅分を埋める
  小数点桁 or 16進指定: 表示する小数点桁数、 また -1が指定された場合は16進数表記にする
戻値
  フォーマットされた文字列
123 [sage] 2010/01/17(日) 06:07:26 :rLsFwGWi0


数字の所はIFで処理するといいのですね、なるほどです。
昨日から直す作業をしてるのですがまだ動いてないので(IESetData関数がない、と言われてしまう…)もう少し練習をしてみます^^
試しに使っていたのでフリー版を利用していたのですが、RecIEの機能を調べていたらとても便利そうですね。
とても参考になりました。
ありがとうございました。
名無しさん@お腹いっぱい。 [sage] 2010/01/17(日) 10:06:50 :mb/jokyZ0

print "" + intA + intB
もしくは
print intA + "" + intB

print intA + intB + "" はNG
名無しさん@お腹いっぱい。 [sage] 2010/01/17(日) 10:26:16 :gXklMUNy0
//スペースにて補完→0にて補完へ変更…それだけ(^^;

for i = 1 to 30
  hoge = ChgMoj( Format( i, 3 ), " ", 0 )
next
名無しさん@お腹いっぱい。 [sage] 2010/01/17(日) 13:01:39 :SVOvo/dN0
,134,135 レスありです。

その関数は知っているのですが、実は16進数で合体させるため、Formatを多用する以外に方法があるかどうかの確認でした。
説明不足でわざわざコピペしていただいてありがとうございました。

この方法がスクリプトを後で見返したときに一番単純で理解しやすそうですね。
昔VBでVal関数を知らなかったときに文字列に+0して数列に変換していた方法を思い出しましたw
名無しさん@お腹いっぱい。 [sage] 2010/01/19(火) 20:29:01 :E18f84ud0
UWSCProを使用しています。
一度exe化したものを、再び.uwsに戻す事は可能でしょうか?
戻せないにしても、exeの物の中のスクリプトを表示する事は出来るのでしょうか?
名無しさん@お腹いっぱい。 [sage] 2010/01/19(火) 21:29:37 :dm9R5tz30

たぶんバイナリエディタで開くと最後にくっついてるんじゃね?
名無しさん@お腹いっぱい。 [sage] 2010/01/19(火) 21:37:14 :/h2JRfae0

Pro版のEXE化について質問です。
まだ購入していないのですが、EXE化時にスクリプトをコンパイルしていないとの書き込みがありました。

ttp://www3.bigcosmic.com/board/s/board.cgi?id=umiumi&mode=all&no=617

この時には、生のスクリプトがEXEに連結されるだけですか?
そうである場合、暗号化後のスクリプトをEXE化の元に指定することもできますか?

EXE化後に、EXEをエディタで見たらそのままスクリプトが見えてしまわないかと気になったもので。。。

宜しくお願いします。

DATE:2007/3/25(Sun) 15:04 No.628


RE:EXE化時のスクリプト内容 umiumi


暗号化して取り込んでいますので、自分で変換作業をしておく必要はありません。
137 [sage] 2010/01/20(水) 01:35:54 :+aeXo+8F0

バイナリエディタで見てみましたが私には分かりませんでした。
掲示板のQ&Aの回答を見る感じだと、一度exe化してしまったら戻すことは出来ないということで合ってますでしょうか?
暗号化を解く方法があるのであれば別でしょうが…
名無しさん@お腹いっぱい。 [] 2010/01/20(水) 22:41:47 :ip1Zjd0h0
WINDOWS 7でIE8を使用しております。
とある図書館にログインして自分の借りている図書および予約の図書を確認するスクリプトを作っております。
しかし、IDとパスワードは入力さるのですが、「ログイン」のボタンがど〜〜〜しても押してくれません。

大変すみませんが、教えていただけないでしょうか?

次のように実装しております。

ie = CreateOLEObj("InternetExplorer.Application")
ie.Visible = True
id = GETID("Internet Explorer")


ie.navigate("ttps://lib.city.shinagawa.tokyo.jp/cgi-bin/Sopcsryc.sh?p_mode=1&proc=kyj")


while True // 接続表示待ち
if (! ie.busy) and (ie.readyState=4) then Break
sleep(0.1)
wend

id = GETID("Internet Explorer")

//ログインID入力
IESETDATA( IE, "123456789", "ryno" )
IESETDATA( IE, "9876", "passwd" )


CLKITEM(id,"ログイン", CLK_ACC)


名無しさん@お腹いっぱい。 [] 2010/01/20(水) 23:02:51 :8bN4FDNJ0

本家掲示板にIDとパスワードが書いてあるんでログインスクリプト動かしてみたけど
被害者が襲撃に来た(マジで)
うちの地元の警察は個人情報をリークして権力者等に直接襲撃許可を出す悪い癖があるんだ。

親切に教えてやろうと思った奴を罠にかけるのが狙いかもしれないので触らずに削除依頼出すべし。
名無しさん@お腹いっぱい。 [sage] 2010/01/20(水) 23:13:48 :9xULNIKf0

ie.navigate("javascript:onClick(this.execCGI(1));")
名無しさん@お腹いっぱい。 [sage] 2010/01/20(水) 23:32:14 :8bN4FDNJ0

ソース見ると<input type="button" value="ログイン" onClick="execCGI(1)">
名前もIDもないので"ログイン"の文字をクリックするか、itemsを順番に見ていくしかないな。
execCGI(1)って関数実行してるからこれを呼び出せればそれでもいいかも。

ClkItemを使う場合、IDのとり方が悪い。
× id = GETID("Internet Explorer")
○ ID = HNDToID(IE.HWND)

そして、「ログイン」という文字はタイトルバーにもあるので、もしかするとこちらをクリックするかもしれない。
番号に2を入れてみるとうまくいくかも。
> CLKITEM(id,"ログイン", CLK_ACC, true, 2)


おお。その手があったか。
しかしOnClickは余計じゃないか?
> ie.navigate("javascript:this.execCGI(1);")
141 [] 2010/01/21(木) 00:41:19 :BYisD/DI0
様、
様、

う、動いたぁ!ログインボタンが押せたよぉ!

こんなに早いレスがもらえるなんて、感謝感激です。


何を言ってるんだかよくわからんかった。
名無しさん@お腹いっぱい。 [sage] 2010/01/21(木) 04:34:42 :el+zjomK0
IESetData(IE,True,"","ログイン")
この場合↑を使うとすると引数入れる方法ある?
名無しさん@お腹いっぱい。 [sage] 2010/01/21(木) 09:17:09 :prTvVb6F0

いまさらだけど、

ie.document.forms(0).elements(6).value = "ryno" //利用ナンバー
ie.document.forms(0).elements(7).value = "passwd" //パスワード
ie.document.forms(0).elements(8).click //ログインボタンを押す

こっちのほうが安定してるよ。たぶん。

こいつを使って調べた↓
ttp://nem.symphonic-net.com/uwsct/HTMLStarkNaked.uws.txt
名無しさん@お腹いっぱい。 [sage] 2010/01/21(木) 10:50:10 :qBCWT2U/0

141じゃないけど親切な人や
名無しさん@お腹いっぱい。 [sage] 2010/01/21(木) 12:50:21 :UbXqB2Oa0

おーすげー
でもItemsはころころ変わる可能性があるからな。
やっぱり名前が使えるところは名前を使って
ログインボタンだけループでまわすべきだろう。

まあログインページの変更はあまり頻繁には起きないけども。
名無しさん@お腹いっぱい。 [sage] 2010/01/21(木) 12:54:41 :UbXqB2Oa0

// Web上(IE)に値を設定
戻値 = IESETDATA( IE, 値, Name, [Value, 番号] )

IE,    IE,
値,   True,
Name, "",
[Value, "ログイン"
番号] ) ほらここ空いてる
名無しさん@お腹いっぱい。 [sage] 2010/01/22(金) 23:14:18 :5GAs0GCP0

名前を使いたいなら

ie.document.all.tags("input").ryno.value = "なんたらかんたら"
ie.document.all.tags("input").passwd.value = "うんたらかんがら"

または

ie.document.forms(0).elements("ryno").value = "なんたら"
ie.document.forms(0).elements("passwd").value = "うんたら"

でおk。
141 [] 2010/01/23(土) 00:13:09 :ER0elP5I0
再度質問に来たんですけど、さらなるレスが付いていてビックリでございます。

いただいたレスを再度学習してから、また質問に来ることにします。

本当に、ありがとうございます。

名無しさん@お腹いっぱい。 [sage] 2010/01/27(水) 09:06:38 :bTNIzlWA0
UWSCで、関数の中で他の関数を使用することって可能ですか?
名無しさん@お腹いっぱい。 [sage] 2010/01/27(水) 09:19:46 :bTNIzlWA0
すいません、ちょっと勘違いしてました
↑は忘れてください・・・
名無しさん@お腹いっぱい。 [sage] 2010/01/28(木) 01:46:50 :vVvESZ+G0
シェア版を試しにインスコしようとすると、トロイとしてはじかれる。なにこれ?
名無しさん@お腹いっぱい。 [sage] 2010/01/28(木) 01:53:42 :khCmP7150

なんだろうね。
OSとかウィルスソフトとか現象とかを本家掲示板に報告した方がいいんじゃね?
名無しさん@お腹いっぱい。 [sage] 2010/01/29(金) 11:44:21 :PN5QGmYZ0
IEのイベント使ってたらUWSCがメモリ不足やらランダムに型が違うとか
DLLでアクセス違反とかでまくりで訳が分からんかったけど、
BeforeNavigate2をNavigateComplete2に変更したらぱったりエラーも出なくなったよ。

以前NewWindow2でキャンセルフラグ立ててなくて同様にエラーが出まくってたんだけど、
BeforeNavigate2も同様にキャンセルフラグを処理しなきゃいけなくて、
もしかしたらフラグを間違ってセットしてたのかもしれない。
NavigateComplete2ならフラグがないからどっちセットするかで悩まなくて言いし、
なによりBeforeNavigate2のイベント発生時点ではIEオブジェクトとかプロパティが無効になってて
待ちループですらエラーになる状態で、回避するのに苦労したんだけど、そういう処理も必要なくなった。

っていうか、イベントの使い方を間違っていたのかも。
名無しさん@お腹いっぱい。 [sage] 2010/01/31(日) 21:49:27 :QYiiO/FR0
んでスクリプトは一応完成したけどどーも無用の物を作っちゃったらしくて評判が悪かった。
だからこんなのつくりました的なものを紹介だけしときますね。

自動ダウンロードスクリプト公開中
ttp://www1.axfc.net/uploader/Sc/so/77860

7-zip32.dllで圧縮メソッドがBzip2で圧縮してたから
Windows標準では解凍できないようです。

動画ページに直リンがあったりするけど、てきとーな日本語入れてあったりするので使える保証がなく、
直リンにnavigateするとなぜかバイナリファイルをブラウザで開いたりするサイトが多くてやっぱり使える保証がなく、
かといってftpでダウンロードするAPIではいつ終わるとも知れず、
結局自分でリンク貼って右クリでダウンロードするしかなくて、
だけど万が一もあるので入力禁止措置も取ってないのでちょっとマウス持ってるとすぐ止まる。

スレッドで5秒後に確実に解除すればよさそうなんだけど
メインループが終了したときはスレッドも巻き添え食っちゃうから確実ではないし。
いや、スクリプトが終われば復帰できるのかな?

んで、動画サイトが2次サイトだから画質が悪くなっちゃってるのが多くて
ダウンロードしてももったいなかったりする。
名無しさん@お腹いっぱい。 [sage] 2010/01/31(日) 23:47:43 :Q/Gu8X0B0

っ国語力とプログラミング力の関係 解説編
ttp://jibun.atmarkit.co.jp/ljibun01/rensai/genius/04/01.html
名無しさん@お腹いっぱい。 [sage] 2010/02/01(月) 00:52:02 :2o/R36uY0
RecIEを起動させて
記録→アドレス入力→ok
でサイトに飛ぼうとすると

Racie
L20が存在しません

ってダイアログが出てきて先に進めないんだけど同じ症状出たことある人いる?
4.4cからだったと思うけどアップデートしたら途端に動かなくなった
名無しさん@お腹いっぱい。 [sage] 2010/02/01(月) 00:55:45 :Zow1+JjM0

ああ、日本語って難しいね。
短く区切って書くと、悪口で埋め尽くされてしまっていたから
無理やりでもつないでしまう癖がついちゃったんだ。

これでも学生時代は国語はほぼ満点でやってきたんだけどね。
敬語だけはいまいち理解できんかったけど。
敬語ってややこしいのに授業時間が少なすぎ。
正しい敬語を使う環境が身近にないから、練習すればするほどおかしくなっていく。(福岡県の筑豊出身)
これでも親は地元企業の課長〜次長だったりする。

今度は短く区切りすぎ?
名無しさん@お腹いっぱい。 [sage] 2010/02/01(月) 01:03:42 :Zow1+JjM0

有料の機能だし本家で聞いたほうがいいと思うよ。
OSとIEと、UWSCの問題なかったバージョンとかも必要だと思う。
差し支えなければそのアドレスもね。
ところで、RacieじゃなくてRecieだよね?
名無しさん@お腹いっぱい。 [sage] 2010/02/01(月) 01:26:10 :Zow1+JjM0

そういえば俺の後輩のやる気のないプログラマは
「俺文系なのにプログラマやらされてるんです。
 文系だからさっぱり分かりません。」ってゆってた。
「ああそう。」としか答えようがないっつーの。
名無しさん@お腹いっぱい。 [sage] 2010/02/01(月) 18:20:46 :WMRBoQc30
頭悪そうだなお前
名無しさん@お腹いっぱい。 [] 2010/02/05(金) 18:13:12 :hEkLWXs20
HTMLソースを取得して差異があればmsgboxが出る程度の
簡易webチェッカーのようなものを作ろうと思ってるのですが
窓を非アクティブのままwebを更新する(戻るとか進むとかも)方法を教えて下さい

IE.Navigate(IE.LocationURL) や IE.Navigate(URL) も試したのですが
↓のようなサイトでは思うように更新後のソースが取得できませんでした
ttp://www7.big.or.jp/~fujiko/php/time_get.php

仕方ないので今は窓を開いて
CTRLWIN(id, ACTIVATE)
KBD(VK_F5)
とか
CLKITEM(id, "更新", CLK_ACC)
で更新してるのですが、非アクティブで実行する方法を教えて下さい
名無しさん@お腹いっぱい。 [sage] 2010/02/05(金) 20:04:44 :MmS/cyj/0
winhttpかmsxml2を使う
名無しさん@お腹いっぱい。 [sage] 2010/02/05(金) 20:09:56 :vxp7+xcP0

navigateしたあとちゃんと待ちループまわさないと駄目です。
また、nabigateが動き出す前に待ちループに入ってしまうと素通りしてしまうので、
それまでは待ちループに入らないようにする必要もあります。

例1)
IE.Navigate(url)
sleep(3)
REPEAT; sleep(0.1); UNTIL !IE.busy AND IE.readystate = 4

例2)
timeout = 3
IE.Navigate(url)
while !IE.busy AND IE.readystate = 4
 sleep(0.1); timeout = timeout - 0.1
 if timeout < 0 then break
wend
REPEAT; sleep(0.1); UNTIL !IE.busy AND IE.readystate = 4

例2の場合はtimeoutがないと、一瞬で表示が完了した場合に永久ループになります。

navigateの他にRefreshがあり、こちらは引数がいらないので手軽です。
中止    Stop
更新    Refresh
前に進む GoForward
戻る    GoBack

Stopはページが不完全になるので、DOMアクセスでCOMエラーが発生します。
これはStop→Refreshとした場合でも起こるので注意が必要。

WebBrowserコントロールでタブブラウザを作る(.netですが一部ソースは参考になると思います。)
ttp://codezine.jp/article/detail/659?p=3
名無しさん@お腹いっぱい。 [sage] 2010/02/05(金) 20:57:44 :hEkLWXs20

レスありがとうございます
一応 CreateOLEObj("MSXML2.XMLhttp") も試していたのですが
思うような結果が得られず四苦八苦していたのでした


レス感謝です
>nabigateが動き出す前に待ちループに入ってしまうと素通り
になっていたようでした

結果的には IE.Refresh() で期待通りの結果が得られました
今から進む、戻るも試してきます
ありがとうございました
名無しさん@お腹いっぱい。 [sage] 2010/02/06(土) 14:30:56 :bC6Cwg/o0
文字列A xxxxx 文字列B

ある文章の中で、特定の文字列AとBに挟まれた「xxxxx」という文字列を抜き出すにはどうするのが
スマートですかね? アドバイスください。
名無しさん@お腹いっぱい。 [sage] 2010/02/06(土) 14:50:08 :IY8b0Hns0

文字列にもよるけど、
とりあえずBETWEENSTRていうのがある。
戻値 = BETWEENSTR( 文字列, 文字列A, 文字列B, [n個目, 数え方フラグ] )

ところで、 ;っていうのはどういう理由で入れてたんですか?
名無しさん@お腹いっぱい。 [sage] 2010/02/06(土) 14:52:23 :IY8b0Hns0
訂正
;の部分は
& # 1 6 0 ;
名無しさん@お腹いっぱい。 [sage] 2010/02/06(土) 15:20:55 :MuLbdSUi0
追記
GoForward も GoBack も順調に動きました
改めまして感謝です


自分(PC専ブラ)には見えませんが、&#160はhtmlの半角空白みたいです

BetweenStrの話題があったので自分も更に質問です
HTMLソースの
111~
222~
333yyy のような文字列から 333 を抜きたい場合
BetweenStr(略, "xxx", "yyy", n) //yyyの前の文字を抜きたい
xxxとnの部分に何を入れれば良いのかが分かりません
宜しければ参考までに教えて下さい
名無しさん@お腹いっぱい。 [sage] 2010/02/06(土) 15:30:15 :MuLbdSUi0
説明が不十分だと思ったので追記
正確には
111~~<br>
222~~<br>
333yyy
という文字列で、"<br>", "yyy", 1 とか設定しても
222〜333まで抜き出してしまってうまくいかないのです

今は
変数1=(略, "<br>", "yy", 1)
変数2=(変数1, "<br>", "y", 1)
と複数段階に分けて書いてるのですが、これが簡潔に書けるなら知りたいな、と
宜しくお願い致します
名無しさん@お腹いっぱい。 [sage] 2010/02/06(土) 15:47:36 :IY8b0Hns0

( マイナス値で指定すると後ろからサーチ)
BetweenStr(略, "<br>", "yy", -1)
これは試してみました?

> これが簡潔に書けるなら
手順が複雑にはなりますが、正規表現ライブラリを使えば
行頭(^)+不特定文字列(.*)+”yyy”で表現できる場合があります。
<br>のあとに改行コードが入っているならですが。

スクリプトをすっきりさせたいと言うことなら、自作関数に置き換えるとかでもいいと思います。
名無しさん@お腹いっぱい。 [sage] 2010/02/06(土) 17:07:22 :MuLbdSUi0

マイナス値を使っても一発で目的の文字列に到着しないんです
一行で簡単に書ければ....と思ったのですが、諦めます

正規表現は、自分にはまだ早すぎる(理解できてない)ので
もう少し勉強してから挑戦してみようと思います
ありがとうございました
名無しさん@お腹いっぱい。 [sage] 2010/02/06(土) 17:42:47 :bC6Cwg/o0

これは便利ですね。簡単にできました。どうも有り難うございました。
名無しさん@お腹いっぱい。 [sage] 2010/02/06(土) 20:30:18 :IY8b0Hns0

どうせならTOKEN使った関数を自作した方がスマートですよ。
こんな感じで。動かしてないので動作は保障できませんが。
function GetStrForward( kword )
 result = ""
 while true
  str = token( "<#CR>", str, true )
  if ! length( str ) then break // trueを外していると、途中で抜ける場合がある
  if ! pos( kword, str ) then continue
  // キーワードが見つかった場合、その前方の文字列を返す。
  result = copy( str, 1, pos( kword, str ) - 1 )
  exit
 wend
fend

BetweenStrを何度か実行するのって、長いソースだとそーとー実行時間の無駄だと思うんです。
だから、キーワードを含む行をまず見つけて、その1行から切り出す方法を考えた方がいいかなと。
tokenの区切りが文字列で指定可能ならもーちょっと使えるんですけど・・・

HTMLの場合はDOMを駆使するともっと効率的にアクセスできる場合もあるから、
先にDOMで絞り込めないかを考えた方がいいかもしれません。
確実に抽出できるならHTML全体からとった方が短くかけるかもしれませんけど。
名無しさん@お腹いっぱい。 [sage] 2010/02/06(土) 21:25:28 :MuLbdSUi0

あ、ありがとうございます
例まで書いていただいて非常に嬉しいのですがハードル高いっす
残念ながらtoken、function、DOMやらの文字が何一つ理解できません
精進して出直してきます、でも有り難う
名無しさん@お腹いっぱい。 [sage] 2010/02/11(木) 02:46:55 :yrYtb4hB0
失礼します。

キー同時押しのスクプリトご存知の方おしえていただけませんか
よろしくお願いします
名無しさん@お腹いっぱい。 [sage] 2010/02/11(木) 11:48:29 :KutBFNeQ0
kbd(vk_shift,down)
kbd(vk_1,down,30)
kbd(vk_1,up,30)
kbd(vk_esc,up)
名無しさん@お腹いっぱい。 [sage] 2010/02/11(木) 11:52:43 :KutBFNeQ0
なんかちょっとしくってた
名無しさん@お腹いっぱい。 [sage] 2010/02/12(金) 04:04:08 :9YYIHyOz0

// ショートカットキーの実行
SCKEY( ID, キー, [キー, キー, キー, ...] )

名無しさん@お腹いっぱい。 [sage] 2010/02/13(土) 01:06:22 :gvQMSvHV0


お返事ありがとうございます。
参考にさせていただきます。
名無しさん@お腹いっぱい。 [] 2010/02/13(土) 02:00:24 :qgx2boSW0
失礼いたします。

uwscにて実行したいことがあります。
画面上に出ている英数字画像の入力をしたいのですが
うまく入力してくれません。

12桁の英数字が表示され、左の英数字から順番に入力して欲しいのですが、
UWSファイルに書き込んだ通りの順番で入力してしまいます。
UWSファイルには1,2,・・・〜8,9,0,A,B,・・・〜Y,Zの順番で書き込んでおります。
「8 B A Z 9 0 Z Y A B C D」と入力したいのに、
「8 9 0 A A B B C D Y Z Z」と入力してしまいます。

助言だけでも聞けたらと思いレスいたしました。
宜しければお力添えをお願いいたします。
名無しさん@お腹いっぱい。 [sage] 2010/02/13(土) 02:02:19 :qgx2boSW0
sage忘れまして申し訳ないです。
久しぶりの2chでの書き込みですっかり忘れてました。

そして連レス申し訳ありません。
名無しさん@お腹いっぱい。 [sage] 2010/02/13(土) 04:38:30 :eUy/fvfx0

ループをこんな風にしてるんでしょ?
例1)
DIM data="ABCDEFG"

for i = 1 to length(data)
 copy(data, i , 1) ←この文字があるかどうか探している
 KBD() ←見つかったらすぐ入力
nest

文字の判定はやっぱり↑みたいにしないといけないけど
文字が見つかったらその座標を記録していくべきでしょ。
で、座標のX成分でソートして小さい方から入力する。

DIM KEYCAR[8] ←これに見つかった文字の文字コードをセット
DIM KEYX[8] ←これに見つかった文字の座標をセット

文字が一通りスキャンできたらKEYXとKEYCARを並べ替え、
KEYXの小さいものからKEYCARを入力していく。

ソートは件数も少ないし、バブルソートがシンプルでいいと思いますよ。
名無しさん@お腹いっぱい。 [] 2010/02/13(土) 07:59:27 :YuKBFn4V0
(´-`).。oO(nest・・・・・)
名無しさん@お腹いっぱい。 [sage] 2010/02/13(土) 13:12:06 :qgx2boSW0
さんありがとうございます。

>座標のX成分でソートして小さい方から入力する。

>DIM KEYCAR[8] ←これに見つかった文字の文字コードをセット
>DIM KEYX[8] ←これに見つかった文字の座標をセット

>文字が一通りスキャンできたらKEYXとKEYCARを並べ替え、
>KEYXの小さいものからKEYCARを入力していく。
座標のX成分でソートとはどういったことをすればX成分を検出できるのでしょうか?
無知過ぎる私にはやはり早いのでしょうか。。
名無しさん@お腹いっぱい。 [sage] 2010/02/13(土) 17:44:34 :hcaqZS6v0
uwscを使用してるんですが
[K]キーを押すのではなく[K]キーを押し続けるにはいったいどうすればいいんでしょうか
情報くださいorz
名無しさん@お腹いっぱい。 [sage] 2010/02/13(土) 19:03:56 :eUy/fvfx0

もしかしてCHKIMG()を全体にかけてるんですか?
だとしても
>TRUE の場合は見つかった座標を特殊変数 G_IMG_X、 G_IMG_Y に格納
とあるので、G_IMG_XをKEYXの配列に格納していくだけですよ。
他の方法で画像を解析してる場合でも、座標くらい取れるでしょう。

たいていは文字は読みにくいように加工されているからCHKIMG()では対処できないんですけどね。



> [K]キーを押し続けるには
KBD(VK_K, DOWN)
名無しさん@お腹いっぱい。 [sage] 2010/02/13(土) 23:46:03 :qgx2boSW0
さん

CHKIMGの構文くらいしか理解出来ていないほどの初心者です、、涙
理解しきれていない部分が多々あるのでなんともいえないのですが、、

やはりの構文で行った方が確実なのでしょうか?
もし宜しければの内容を分かりやすく説明していただけたらと、涙
本当に初心者過ぎて申し訳ないです。

ここで詳しく説明できないような内容でございましたら、
捨てアド用意しておりますので、そちらでも構いません。
最初はggrksとか書かれるとは思いましたが、
ここまでご親切にお教えしてもらえると嬉しくて仕方ありません><
名無しさん@お腹いっぱい。 [sage] 2010/02/14(日) 00:12:51 :4sAlpgnt0

> やはりの構文で行った方が確実なのでしょうか?
いや、chkimgでいいです。
copyで文字列から取り出したのはあんまりいい方法じゃなかったです。
ただ、chkimgしたら座標を取り出さないと並べ替えできませんよと。

本来手動で行うべきところを自動化するのはあんまりよろしくないので
これ以上具体的な解説はやめときます。
ソートとかの部分的な話なら別にいいけど。

僕もユーザー登録とか半自動化したけど、画像読み取りは難しいから
そこだけ入力待ちとかにしてますよ。
名無しさん@お腹いっぱい。 [sage] 2010/02/14(日) 00:22:56 :XhJVEd4Q0
さんありがとうございます。

ソートとはクリップボードの文字列のソートの事でしょうか?
どういう効果で、どのように使用するのか教えていただいたら光栄です。
名無しさん@お腹いっぱい。 [sage] 2010/02/14(日) 00:49:51 :4sAlpgnt0

えーと、そこはぐぐって欲しかったですね。
ソートとは並べ替えのことです。
ttp://su10.sgu.ac.jp/~morita/Seminar/6thStudent/entani/sort/bubble/bubble.html

関数化してちゃんとできてるかテストしてから組み込んだ方がいいと思います。
名無しさん@お腹いっぱい。 [sage] 2010/02/14(日) 18:50:13 :7ySdGB3b0
Aの操作を○回実行した後にBの操作を実行し
最初に戻るという操作はどうしたら出来ますか?
名無しさん@お腹いっぱい。 [] 2010/02/14(日) 19:20:34 :nB/iMQXP0

While(True)
 For i = 1 To ○
  Aの操作
 Next
 Bの操作
Wend
名無しさん@お腹いっぱい。 [sage] 2010/02/15(月) 01:51:46 :fbzctM220
UWSC Ver4.6 umiumi
64bit環境での高レベル記録、CPUUSERATE関数の対応
KINDOFOS関数にてOSが64bitかのチェックをできるようにした
STATUS関数にてアプリが64bitかのチェックをできるようにした
VARTYPE 関数にて型変更をできるようにした
ROUND関数にて丸め位置を指定できるようにした
GETSTR関数にてマウス移動オプションを付けた
CHKIMG 関数のヒット数チェックにてヒットした位置情報を配列に格納するようにした
多重のCALL文にてファイルのカレントを識別してなかったのを修正
COM のBoolean型を数値型に変換していたのを修正
設定画面が出ている時にはスケジュールが走らないように修正
Pro版:
CREATEFORM にてIFrameが使われた時にsubmitボタンの処理ができなかったのを修正
UDebug: 64bit環境にて Help->"Folder with .INI"で間違ったフォルダを開くのを修正
DATE:2010/2/14(Sun) 01:29 No.2862

Windows 7 64bit環境での動作について umiumi

32bitアプリに対しては問題ありませんが、64bitアプリに対しては以下の制限があります
  CLKITEM、GETITEM関数の種別にて ツリービュー, リストビュー, タブ指定は無効
 (替わりに ACC指定を利用して下さい)
  GETSLCTLST関数にてツリービュー, リストビューは無効
 POSACC関数にて ACC_API(APIトラップ) 指定は無効
  STATUS関数にて ST_PATH(EXEパス取得) 指定は無効
 64bitの DLLを呼び出す事はできません
また、SOUND 関数にて"BEEP"指定時は PC内部スピーカではなく、通常のサウンド出力になる
名無しさん@お腹いっぱい。 [sage] 2010/02/15(月) 02:09:13 :DLqX4NXD0
タスクアイコンを右クリックして選択をするにはどうしたらいいですか?
名無しさん@お腹いっぱい。 [sage] 2010/02/17(水) 05:35:30 :cjyZasPE0

アイコンの画像をビットマップで保存してchkimgで座標を取ってBTN(RIGHT, Click)かな。

アイコンが動いたり隠れたりするとうまくいかないので他の方法探した方がいいね。
ウィンドウ一覧からID取ってPostMessageとかでメニューを出すみたいな。
名無しさん@お腹いっぱい。 [sage] 2010/02/17(水) 06:00:12 :cjyZasPE0
エディタの正規表現検索使ったリンクアドレス抽出が便利だったけど別窓に移動するとダメだったので、
UWSCで検索ワードを別窓にコピペするマクロを作ってみた。

サクラエディタでの正規表現の例
<a href="/test/read.cgi/bike(.*)" target="_blank">cache

 .*でリンクアドレスをワイルドカードにしてるくらいだけど、範囲検索に複数キーワードとシフトキーを駆使するよりも簡単だし、
操作手順が少ないのでマクロもシンプルになり、使い回しが効くようになる。

Alt+TABで切り替わるように設定し、検索側窓をアクティブにした状態でAlt+F1をクリックして開始する。
ショートカットキーはSCKEY()が確実だが、多重起動のエディタのIDを適切に取得するのは大変だし、
どの道Alt+TABで切り替えるんならKBD()でいっかと。

// あらかじめ最初の検索位置に飛んでおく。
// 終了はストップボタンで。
stopform(true)
while true
 sleep(0.2 ); KBD(VK_CTRL, DOWN)  // コピー
 sleep(0.01); KBD(VK_C, CLICK)
 sleep(0.01); KBD(VK_CTRL, UP)
 sleep(0.01); KBD(VK_ALT, DOWN)   // 窓切り替え
 sleep(0.01); KBD(VK_TAB, CLICK)
 sleep(0.01); KBD(VK_ALT, UP)
 sleep(0.2 ); KBD(VK_CTRL, DOWN)  // 貼り付け
 sleep(0.01); KBD(VK_V, CLICK)
 sleep(0.01); KBD(VK_CTRL, UP)
 sleep(0.01); KBD(VK_RETURN, CLICK) // 改行
 sleep(0.3 ); KBD(VK_ALT, DOWN)   // 窓切り替え
 sleep(0.01); KBD(VK_TAB, CLICK)
 sleep(0.01); KBD(VK_ALT, UP)
 sleep(0.2 ); KBD(VK_F3, CLICK)   // 次検索
wend
名無しさん@お腹いっぱい。 [sage] 2010/02/23(火) 14:54:49 :F3gsnxhTP

TrayCommand 0.06を使うと良いと思うよ
名無しさん@お腹いっぱい。 [sage] 2010/02/25(木) 09:04:22 :d7sFY4K50
スケジュール機能を使って特定のウィンドウが現れたときに
それを閉じるスクリプトを書きたいんだけど、

wshid = getid("Windows Script Host","#32770")

ifb wshid = -1
 exitexit
else
 wsh2id = getstr(wshid, 1, str_static)
 ifb wsh2id <= "書き込むことが出来ません"
  ctrlwin(wshid, close2)
 endif
endif

「書き込むことが出来ません」の前の文字が変わるから
部分一致で閉じるようにするにはどうすればいいの?
名無しさん@お腹いっぱい。 [sage] 2010/02/25(木) 09:43:16 :tNdZxzY+P
「特定のウィンドウ」とそうでないウィンドウを
あなた自身はどう見分けてるの?
名無しさん@お腹いっぱい。 [sage] 2010/02/25(木) 13:17:48 :+bexKkLC0

if pos( "書き込むことが出来ません", getstr() ) then print 見つかりました
名無しさん@お腹いっぱい。 [sage] 2010/02/25(木) 18:01:42 :d7sFY4K50

あ、posっていうのがあったのか
ヘルプ読んでたはずなのに見落としてた
ありがとう
名無しさん@お腹いっぱい。 [sage] 2010/02/26(金) 22:10:30 :1IEGk7vg0
ver.4.6にしたら、chkimgで範囲チェックエラーがでるようになったよ。
名無しさん@お腹いっぱい。 [sage] 2010/03/04(木) 08:28:32 :PO6OGpHQ0
VB6とかOfficeのVBAのエディタみたいに入力直後に登録されたキーワードがヒットしたら
強制的に大文字小文字を整形して置換(if→Ifとか)されるような機能を持ったテキストエディタないですか?
大文字小文字を気にして打ち込んでたらだるいしかといってそのままだと見返したときにすごく分かりにくいしで疲れました
名無しさん@お腹いっぱい。 [] 2010/03/04(木) 08:40:10 :2mTNuI0U0
ロケットマウス、久々に新ver出てるのにスレ無いんだね・・・
ttp://home.att.ne.jp/yellow/town/rockm.htm
名無しさん@お腹いっぱい。 [sage] 2010/03/04(木) 10:10:42 :SA9xyQjv0
ロケットマウスは使い物にならない、ゴミ。
名無しさん@お腹いっぱい。 [sage] 2010/03/05(金) 06:08:33 :+qj40agr0
ロケットマウスは素早くマクロ作れるから便利だよ
でも最新版は高すぎる
名無しさん@お腹いっぱい。 [sage] 2010/03/05(金) 10:02:22 :qXBK1A2U0
必死宣伝乙。
名無しさん@お腹いっぱい。 [] 2010/03/05(金) 15:02:28 :kdn5jr8z0

何でこのスレ見てるの?


スレが欲しければ自分で立てろ。客がつくまで自分で維持しろ。
僕もAT小型限定の話をするとあっち行けと追い出されるし、
スレ立てすると「AT限定や小型限定があるだろ重複だ」とか言われて落とされてたけど、
自分で維持してたらそれなりに人が集まってきたよ。

【運転楽々】原付二種△小型AT限定【経費格安】
ttp://namidame.2ch.net/test/read.cgi/bike/1265783258/
名無しさん@お腹いっぱい。 [sage] 2010/03/05(金) 17:46:16 :YqnzvMb+0

お前が一番ウザイな
名無しさん@お腹いっぱい。 [sage] 2010/03/05(金) 17:56:25 :lSX1pwuz0
誤爆か
名無しさん@お腹いっぱい。 [sage] 2010/03/05(金) 21:44:36 :RZfD8bdP0

秀丸でもxyzzyでもいいけど、自分でマクロ書くしかないんじゃ?
名無しさん@お腹いっぱい。 [sage] 2010/03/06(土) 16:35:31 :uUmPPbJA0
でも、UWSC専用のエディタって欲しくないか??
色分け程度ならsakura専用であるにはあるが、入力補助や、デバッガ機能付きとか。

そういうオレはterapad使いで、色分けすらないから、記述漏れが探しにくい。
自分で作るのも面倒だし、テキストエディタって何個も入れたくないしな。

専用エディタなら割り切って入れる気になる。
名無しさん@お腹いっぱい。 [sage] 2010/03/06(土) 17:54:10 :i7mh1+mx0

無いなら作れよ…

作らないまでも、terapadでもオートコンプリートとかマクロのプラグインあるんじゃね?
色分けだとか、デバッガ起動くらい普通に付けられるんじゃねーの?
名無しさん@お腹いっぱい。 [sage] 2010/03/06(土) 17:57:43 :YVVc2xU3P
秀丸と秀丸の強調表示、単語補完、マクロ制御で十分すぎる
低機能なエディタを使ってるから汎用エディタって発想に至らないんだろうなー

この人が最初からEmEditorや秀丸あたりを導入していれば「専用エディタ」などと
馬鹿げた悩みなど起こさなかっただろうに、と残念に思う
名無しさん@お腹いっぱい。 [sage] 2010/03/06(土) 18:00:27 :i7mh1+mx0
エディタ論争に発展しそうですね!
viでいいじゃない…
名無しさん@お腹いっぱい。 [sage] 2010/03/06(土) 18:12:50 :oDoON3sd0
VXEditorでもいいじゃないか
名無しさん@お腹いっぱい。 [sage] 2010/03/06(土) 18:19:56 :xpFYgJ560

こういう異様に高圧的な奴が湧くと荒れる法則
俺はメモ帳で編集してますが
名無しさん@お腹いっぱい。 [sage] 2010/03/06(土) 19:07:36 :v7GY0UD50
自分で使いたいエディタがあるなら勝手に使えばいいじゃないか。
専用があって、なぜ悪い。
名無しさん@お腹いっぱい。 [sage] 2010/03/06(土) 19:40:30 :boTq+at40
それはどうかんがえてもEmEditorの独壇場ですね。
無料のエディタなんて所詮無料分の値打ちしかないですよ。
EmEditorさえ入れておけば間違いないです。
名無しさん@お腹いっぱい。 [sage] 2010/03/06(土) 21:14:59 :LIOXzylY0
ポータブルでも動くエディタがイイと思うがな。UWSCもポータブルで動くしね。
X-Finderも入れれば、相対パスで動かせるし、関連付けもOSと独立して設定できる。
バックアップも楽だし、環境揃えるのも楽。便利だよ。
sage [] 2010/03/06(土) 21:27:36 :sUf1krysI
質問です
UWSCを途中でやめて、また始めから開始するにはどうしたらいいですか??
名無しさん@お腹いっぱい。 [sage] 2010/03/06(土) 21:30:18 :sUf1krysI
↑名前間違った
名無しさん@お腹いっぱい。 [sage] 2010/03/06(土) 23:37:45 :h9shLCdf0

手動でやると仮定すると、
UWSCを通常起動ならSTOPボタンで止めて再生ボタンで再開。
Alt+F1キーで開始してAlt+F2キーとかで停止とかも出来る。


> 無料のエディタなんて所詮無料分の値打ちしかないですよ。
そのとおり。
UWSC Proを買って専用エディタを入手すればデバッグまで出来ちゃうからお勧め。
名無しさん@お腹いっぱい。 [sage] 2010/03/07(日) 04:54:07 :azd9KX7S0
メモ帳最強伝説
名無しさん@お腹いっぱい。 [sage] 2010/03/07(日) 11:21:23 :fJBc+XukI

Alt+F2で止めれるんですけど
Alt+F1で再開が出来ません

バージョンが古いと出来ないってありますか?
名無しさん@お腹いっぱい。 [sage] 2010/03/07(日) 11:53:33 :fsPwSQkP0

XPなら古いバージョンでもできるけど
7とかなら新しいのじゃないといろいろ動かなかったりするかも。

最新でも動かないなら環境依存。他の何かが邪魔してるんじゃないかな。
名無しさん@お腹いっぱい。 [sage] 2010/03/08(月) 14:41:27 :LRrJZmuF0
IE7のリンクをクリックした時に出るエラーダイアログを自動で閉じたいんですが

ifb GETID("Windows Internet Explorer","#32770") > -1
  //ダイアログを閉じる処理をする
endif

としてるんですが、このときエラーダイアログがでていないとGETIDでかなり時間を取られます。
エラーダイアログが表示されているかどうかの判定で良い方法はありますか?
名無しさん@お腹いっぱい。 [sage] 2010/03/08(月) 15:19:30 :8gw+l4vY0

で使ってる
> GetWindow( H, GW_ENABLEDPOPUP )

COMは多分止まってるからIEオブジェクトは使えないので、
あらかじめH = IE.HWNDとしてハンドルを保存しておく。
GetWindow()でダイアログが表示されていればハンドルが取得できる。
ただし、ポップアップウィンドウにはサブメニューとかツールチップも含まれるので、
Status()で"#32770"かどうかをチェックする必要がある。

すべてのウィンドウをリストアップするのと違い、自分の子ウィンドウだけを見るAPIを直呼びするので高速。
名無しさん@お腹いっぱい。 [sage] 2010/03/08(月) 17:11:16 :LRrJZmuF0

アドバイスありがとうございます。
APIの使い方とかわからない素人で、
のスクリプトを見てもよくわからないのでもう少々詳しく質問させてください。

 def_dll GetWindow(hWnd,long):long:user32.dll   //dllを呼び出せるように宣言
 Public GW_ENABLEDPOPUP = 6   // ポップアップウィンドウ

ここまではわかります。

>あらかじめH = IE.HWNDとしてハンドルを保存しておく。
これはどういう意味でしょうか?


おそらくスクリプトとしては

 ifb GetWindow( H, GW_ENABLEDPOPUP ) > 0
   //ダイアログを閉じる処理をする
 endif


こういう感じになるのですよね?
名無しさん@お腹いっぱい。 [sage] 2010/03/08(月) 17:42:07 :8gw+l4vY0

> H = IE.HWND
これはIEオブジェクトを管理するウィンドウのウィンドウハンドルです。
UWSCで言うIDのようなものですが、ウィンドウハンドルと言うのはWindowsのAPIで使うものです。
IDとウィンドウハンドルは「IE.HWND」で検索したら出てきますが、
ID = HNDToID(IE.HWND)
HWND = IDToHND(ID)
と言うように変換できます。

if ! IDToHND(ID) then exit
と言うように、IE窓が終了している場合に中断できるのでIDを保存しておくと便利です。

GetWindow()で使うときも
GetWindow( IDToHND(ID), GW_ENABLEDPOPUP ) とできるので、IDを保存しておいてもいいです。

>  ifb GetWindow( H, GW_ENABLEDPOPUP ) > 0
ハンドルは符号なし整数なので、この比較はしない方がいいでしょう。
負の整数と判断された場合に失敗します。
!が分かりにくいなら0 <> GetWindow() でもいいです。
名無しさん@お腹いっぱい。 [sage] 2010/03/08(月) 19:25:04 :LRrJZmuF0

ご丁寧にありがとうございます。
もう少々ググッて勉強してきます。
またよろしくお願いしますm(__)m
名無しさん@お腹いっぱい。 [sage] 2010/03/16(火) 15:03:54 :HiT6yWWl0
テキスト入力のやり方が分かりません教えてください
名無しさん@お腹いっぱい。 [sage] 2010/03/16(火) 21:52:10 :cI9JqU5P0
何を聞きたいのか分かりません教えてください
名無しさん@お腹いっぱい。 [sage] 2010/03/17(水) 06:51:54 :DkHyneUl0
windows7でuwscを通常通り動かす方法ありませんか
名無しさん@お腹いっぱい。 [sage] 2010/03/17(水) 07:01:16 :8KLxlRw70
UAC切れ
名無しさん@お腹いっぱい。 [sage] 2010/03/17(水) 11:05:24 :u/flnLmx0

普通にwin7で使ってます。
しかも64
64アプリを制御できなかったりしますが、ほぼ問題なし
==>IEは32,64両方入ってますから
名無しさん@お腹いっぱい。 [] 2010/03/17(水) 23:14:19 :j5IphMiE0
スクリプト入力補助、3文字ぐらいうったらあとの文字が自動でるようにしたい
んですけど、どうすればいいんですか?CLCLというのは使い方が意味がわからなかったです。
名無しさん@お腹いっぱい。 [sage] 2010/03/18(木) 16:58:33 :HTSNWkk9P
それをUWSCで作ればいいと思うよ
名無しさん@お腹いっぱい。 [sage] 2010/03/18(木) 17:57:55 :pleFRDKk0

xyzzy
+
ac-mode.l (ttp://white.s151.xrea.com/wiki/index.php?script%2Fac-mode)
+
uwsc-mode.l (ttp://big.tm.land.to/handbook/uwsc.htm)
でできる。
名無しさん@お腹いっぱい。 [] 2010/03/19(金) 00:16:25 :r6TwPwzy0
241です、回答ありがとうございます。そこまで教えられてるのにわからない自分がなさけないです.

uwsc-mode.lはsite-lispフォルダに、uwscはetcフォルダに入れてください。←ここまではわかる
siteinit.lとかに以下の文を追加してください。
; UWSC
(load-library "uwsc-mode")
(push '("\\.uws$" . uwsc-mode) *auto-mode-alist*)
↑意味ワカラン
名無しさん@お腹いっぱい。 [sage] 2010/03/19(金) 00:40:50 :ZI4R2SXH0
そうですか
名無しさん@お腹いっぱい。 [sage] 2010/03/19(金) 01:34:35 :rPEvvIJr0

ttp://xyzzy.s53.xrea.com/wiki/index.php?QuickTour
あとは気合いと根性で
名無しさん@お腹いっぱい。 [sage] 2010/03/19(金) 03:40:08 :y7YOOYqA0
釣りじゃ無かったのかよ
名無しさん@お腹いっぱい。 [] 2010/03/20(土) 18:31:49 :B79HWejI0
241です
気合と根性で補完入力できるようになったんですが、そのファイルにしか適用
されないというか、ほかのファイル開いたときはまた補完されなくなっちゃうんですけど
入力して覚え直させないといけないんです。これじゃー意味ないです。
名無しさん@お腹いっぱい。 [sage] 2010/03/20(土) 19:02:33 :Ajn0jtpj0
あー、そうですか。
名無しさん@お腹いっぱい。 [sage] 2010/03/21(日) 23:22:41 :FxCOzvKn0

while true
ifb getkeystate(VK_X) then
sleep(0.3)
endif

ifb getkeystate(VK_UP) then
sleep(1)
endif

ifb getkeystate(VK_G) then
KBD(VK_DOWN,DOWN,40)
KBD(VK_DOWN,UP,40)
KBD(VK_DOWN,DOWN,40)
KBD(VK_DOWN,UP,40)
KBD(VK_X,CLICK,10)
sleep(1)
KBD(VK_DELETE,CLICK,100)
endif
KBD(VK_F,CLICK,50)
wend

これだとVK_Gのときに最初の処理がスルーされることが
あります。最初というのはダウンアップとXキーのことです。


しかもそれが大体ですがひとつおきになります。
何が問題なのでしょうか?
名無しさん@お腹いっぱい。 [sage] 2010/03/21(日) 23:42:42 :9nY7crvD0

あまりよく読んでないけど、短間隔ループの中でGetKeyで分岐というのはUWSCはムズイよ。
そこまでに押されたKEYを取得だから…
公式の過去ログで良い回答あったと思うけど、探すの面倒だわ。
名無しさん@お腹いっぱい。 [sage] 2010/03/22(月) 10:04:04 :r9UvCn9t0

用途がイマイチわからないので答えるのも難しいけど
自動操作系?
それとも入力支援?
自動操作系なら一定の待ち時間を設けるといいかも。
sleepじゃなくてループで。
例えば
while true
 i=0
 Repeat
  ifb getkeystate(VK_X) then
   sleep(0.3)
  endif
  Sleep(1)
  i=i+1
 Until i>3

とか。Xキーの押下状態で処理をする時に押されてないor押そうとしている時の待ち状態を作る感じ?
250 [sage] 2010/03/23(火) 00:07:33 :l7gIg+dd0
ゲームでアイテムを拾うというのとコマンド入力というので使っています。

連続して使うこともありできれば時間をあまりおかずに使いたいと
考えてましたがやはり短い間隔では取得が難しいみたいですね。

それとパソコンの性能が低いというのも関係あるかも。


UWSC以外にもゲームパッド用のソフトも使ってるのでXが押されたときの
スリープはそっちのソフト用です。

UPのスリープもコマンド入力時のためのものです。
ずーっとアイテムを拾うようにFキーが連打されるように
なっているのでスリープを設けないと入力できないと
いうことからです。


名無しさん@お腹いっぱい。 [sage] 2010/03/24(水) 12:24:59 :2ytrfO4cP
ifb getkeystate(VK_X) thenとかが何のためにあるかわからない・・・
これは俺がアホなのか?
名無しさん@お腹いっぱい。 [sage] 2010/03/24(水) 15:09:35 :HwpEcix70
ハンゲームでファミスタオンラインというゲームをやっているのですが、
このソフトを使ってバックグラウンドで動作させる事は可能でしょうか?
名無しさん@お腹いっぱい。 [sage] 2010/03/24(水) 16:10:50 :yu0OAHHi0
間違いない
名無しさん@お腹いっぱい。 [sage] 2010/03/24(水) 16:47:13 :C4V6o9Yd0
外部DLLとかも読み込めるんだから基本不可能なことはないだろ
255 [sage] 2010/03/24(水) 17:14:51 :HwpEcix70
MOUSEORG で 2 を指定したのですが受け付けてくれないのです。
他に何かやるべき事はあるのでしょうか?
名無しさん@お腹いっぱい。 [sage] 2010/03/24(水) 18:13:20 :C4V6o9Yd0
ヒント;DirectInput
255 [sage] 2010/03/24(水) 18:42:44 :HwpEcix70
DirectInputを使用しているアプリはUWSCの送信は受付ないという事でしょうか?
表では動くのですが、裏では動かないです><
名無しさん@お腹いっぱい。 [] 2010/03/27(土) 09:48:15 :2VmSdvyL0
KBDで使用するCLICKとDOWNの違いってなんですか?
CLICKが反応しなくてDOWN/UPに変更した事もあるんですが。
名無しさん@お腹いっぱい。 [sage] 2010/03/27(土) 10:03:17 :2VmSdvyL0
すいません。補足です。
例えばキーを押しながら別のキーを押したい場合はDOWNだと思うのですよ。
ですが例えば"A"を単打したい場合ってCLICKでもDOWN/UPでもどちらでもいいんですかね?
記録する時どちらも記録されていたので違いがよくわかりませんでした。
名無しさん@お腹いっぱい。 [sage] 2010/03/27(土) 12:20:23 :GJlX799VP
どっちでもいい
好きな方をつかえばいいと思うよ
名無しさん@お腹いっぱい。 [sage] 2010/03/27(土) 12:40:55 :HsANWc9NP

環境によるけど
自分はダウンアップにしてるよ
ハンゲのゲームやってたときに
よく固まってたんですよ
それでダウンダウンダウンダウンって
違う箇所を4回くらいダウンさせて
アップってしたら固まらないようになったです
珍しい事例かもしれないけど
一応お伝えしておきますねw
がんがってください^^
名無しさん@お腹いっぱい。 [sage] 2010/03/27(土) 20:09:52 :2VmSdvyL0
レスありがとうございました。
なるほど。やっぱり違いはなかったんですね。

事例ありがとうございます。覚えておきますw
名無しさん@お腹いっぱい。 [sage] 2010/03/29(月) 16:50:16 :zWqUoN180
UWSCでスクリプトを動かしている間に別の作業をしたいのでMOUSEORGを使ってキーイベントを直接送りたいのですがうまくいきません

// マウス座標を相対座標にする、 またはマウスとキー情報を直接ウィンドウへ送る
MOUSEORG( ID, [基準指定 ] )

例えばnotepadに直接キーイベントを送りたい場合は
MOUSEORG( notepad, [2] )

という書き方でよろしいのでしょうか
ご教授いただけるとうれしいです

名無しさん@お腹いっぱい。 [sage] 2010/03/29(月) 21:36:29 :xNpZMuTv0
ドラッグしてCtrl+Cでコピーした文章をSendstrで出力したいんですが、
コピーした文章の出力方法がわからないのです。

Sendstrの文字列に当たる部分にはどのように書けばいいのでしょうか?

名無しさん@お腹いっぱい。 [sage] 2010/03/29(月) 22:25:27 :NFgbt+8v0

IDはプロセスIDだから、UWSCからnotepadを開くなら開く時の戻り値、
そうでないならGetIDでIDを貰って来なきゃならん。
[基準指定]の[]は省略可を表すだけで、2っていれときゃいいよ。

何処に出力したいのかは大丈夫?
ファイルに出力するなら、ヘルプのファイル操作関連
起動しているメモ帳やなんかに出力したいならSendStr
画面に表示したいならFukidasiやらPrintやらを使えばいい。
SendStrはヘルプ読めば解ると思うけど、
String=GetStr(0)
SendStr(送り先ID,String)
とすれば、変数Stringにクリップボードの文字列を格納して、それを送り先のIDに送る。
文字列の部分には""で囲った文字列か、文字列を格納した変数名を書けば良い。
267 [sage] 2010/03/30(火) 02:35:32 :i+J5d4Um0


ありがとうございました。クリップボードからの取得方法がわからなかったのです。
よく見たらヘルプにも書いてましたね・・・初心者ですいませんm(_ _)m
名無しさん@お腹いっぱい。 [sage] 2010/03/30(火) 06:36:51 :w9o7uVAy0
どなたか、TaskbarSorterをVista対応に改良してもらえないでしょうか?
一応使えることは使えるようなんですが、使えない機能がいくつかあるので、よろしければお願いします
名無しさん@お腹いっぱい。 [sage] 2010/03/30(火) 06:37:53 :w9o7uVAy0
すいません、は誤爆です…
266 [] 2010/03/30(火) 10:20:54 :enNRlci80

返信ありがとうございます
GetIDで取得するIDはClassというものでよろしいのでしょうか?

id = GETID("Notepad")
MOUSEORG(id,2)
〜処理〜

これでは間違っているのかうまくいきませんでした
よろしければ教えていただけるとうれしいです


名無しさん@お腹いっぱい。 [sage] 2010/03/30(火) 10:51:08 :nQEKerym0

Notepadはクラス名はNotepadになるけど、タイトル名は別名かと…
名無しさん@お腹いっぱい。 [sage] 2010/03/30(火) 12:21:01 :uAc8A7pjP
なにか重大な勘違いをしているようだ
名無しさん@お腹いっぱい。 [sage] 2010/03/30(火) 12:24:14 :B93d/s/o0

ウィンドウのタイトルでOK
ヘルプの例にあるように、
id=GetID("メモ帳")
でいいよ。
名無しさん@お腹いっぱい。 [sage] 2010/03/30(火) 13:57:27 :TB+znm4l0
親切な人が多くて素晴らしいですね
266 [sage] 2010/03/30(火) 17:44:58 :enNRlci80
ご丁寧に教えていただいてるにも関わらず未だにうまくいきません><
実はLaTaleというオンラインゲームのウィンドウに直接送りたいのですが
ウィンドウのタイトルはLaTale Clientです

id = GetID("LaTale Client")
mouseorg(id,2)
REPEAT
KBD(VK_RIGHT,DOWN,100)
KBD(VK_RIGHT,UP,100)
KBD(VK_RIGHT,DOWN,100)
KBD(VK_RIGHT,UP,500)
KBD(VK_SHIFT,DOWN,100)
KBD(VK_SHIFT,UP,400)
UNTIL FALSE

これではだめでした
どうすればよろしいのでしょうか
よろしくお願いします
名無しさん@お腹いっぱい。 [sage] 2010/03/30(火) 20:54:57 :B93d/s/o0
なんでREPEAT-UNTILに入れてるの?
条件FALSEにしてるんじゃ意味無いでしょ。
つーかまたゲームのマクロの話かよ…
どうせまたDirectInput使ってるとかだろ
そもそも配布サイトのFAQくらい読んでから来いと…
名無しさん@お腹いっぱい。 [sage] 2010/03/31(水) 00:50:17 :2kVfTA890

それをやろうとするとバン対象だよ
ゲーム側で出来ないように工夫してるし。
名無しさん@お腹いっぱい。 [sage] 2010/03/31(水) 03:14:21 :QDwO3+WbP
そもそもこのスレって暗黙の了解かなんかでチート関連の話題は原則禁止じゃなかったか?
名無しさん@お腹いっぱい。 [] 2010/03/31(水) 03:40:13 :J88r7xmw0
cheatだろうと何だろうと関係ない
UWSCの事なら何でもあり
そもそもUWSCを何に使おうがそれは使い手の勝手
それが気にいらなければレスしなければよい
名無しさん@お腹いっぱい。 [sage] 2010/03/31(水) 04:05:03 :/r7+U6cH0
質問してる以上、流石にそれはないと思う
というかが言いたいのはこんなスレでチートとかの質問するようなアフォは喋るなって事じゃないの
なんか最近不正行為っぽい質問が多いし
要約すると
不正行為関連の質問は自重すべき
名無しさん@お腹いっぱい。 [sage] 2010/03/31(水) 06:08:31 :eObzEOzl0

そうだな。チートだと思われる質問には誰も一切何も答えなければ問題ないな
チートなんか使おうとする奴が質問自重するとは思えないから、答える側が気をつけないとな
266 [sage] 2010/03/31(水) 12:00:12 :mAVKXcTv0
ハンゲームのファミスタの話が出ていたのでオンラインゲームの話題もいいのかと思っていました;
以降気をつけます。ご迷惑をおかけしました><
名無しさん@お腹いっぱい。 [sage] 2010/03/31(水) 12:05:44 :wRNvV5G10
でもなんだかんだでこのソフトはチートでの使用が一番多いわけだが・・・
名無しさん@お腹いっぱい。 [sage] 2010/03/31(水) 15:12:32 :02z0GkxwP
に1票www
名無しさん@お腹いっぱい。 [sage] 2010/03/31(水) 17:19:37 :db3wAIhw0
なんか変な流れを切るようで悪いんだけど教えてほしい。
既に開いてるIEをF5で更新した時に読み込み完了まで待ちたいんだけど
どうすればいいのかな?
よく見かけるのは

IE = CREATEOLEOBJ("InternetExplorer.Application")
IE.visible = True
IE.navigate("ttp://www.yahoo.co.jp/")

REPEAT
 SLEEP(0.1)
UNTIL !IE.BUSY AND IE.readystate = 4

これだけど、これだとブラウザ起動からしちゃうので目的と違うんだよね。
最初に上記でブラウザを起動してから更新の度に
REPEAT
 SLEEP(0.1)
UNTIL !IE.BUSY AND IE.readystate = 4
をすればいいのかな?
できればサイトを開くまでは手動でやりたいんだけど。
名無しさん@お腹いっぱい。 [sage] 2010/03/31(水) 17:57:48 :zl81UiL50
も少し、ヘルプよんでよ

IE=GETactiveOLEobj

ちなみに F5=IE.refresh
名無しさん@お腹いっぱい。 [sage] 2010/03/31(水) 18:45:29 :db3wAIhw0

レスサンクス
ほんとだ、、、書いてあった。。。
ヘルプに書いてあるのに質問しちまって申し訳なかったね。
お蔭様で希望通りの動きができました。
ありがとうm(__)m
名無しさん@お腹いっぱい。 [sage] 2010/03/31(水) 20:08:51 :vqZHXpqN0

おいおい、ニダランスレから出て来るなよw
名無しさん@お腹いっぱい。 [sage] 2010/03/31(水) 21:03:28 :db3wAIhw0
ニダランスレってなんだ?
名無しさん@お腹いっぱい。 [sage] 2010/04/01(木) 03:53:25 :fwJ098Wi0
何でニダーラン?
名無しさん@お腹いっぱい。 [sage] 2010/04/01(木) 04:01:38 :S8TPP2lzP
そんなことまで「なんで?」って聞き返してくるのかよ
ここは昔から質問者に「なんで?」「何するの?」「何がしたいの?」
自分の開発のヒント探るために聞くだけ聞いて質問者への回答は無視か罵倒
だから嫌になって来なくなったんだけど
たまたま覗いてみたら相変わらずのウンコ解答者ぶり

質問者さんへ
ここで聞いても無駄だよ
作者のうみうみ氏のサイトで聞いた方が時間はかかるけど正確だ
質問するために少々勉強してからの方がいいが
ここよりまともに回答してくれるよ
俺も以前はよく解答してたんだけど
UWSCというより何か儲けれるツールを作れないか
そのネタ探しに解答者ぶっているだけ
こいつらアホだからここで質問しても無駄だよ
名無しさん@お腹いっぱい。 [sage] 2010/04/01(木) 04:27:25 :S8TPP2lzP
UWSC覚えるのには時間がかかるよ
なんせ解説本は「Windowsマクロテクニック」という基本中の基本のみの
あまり役立たない本が1冊のみ販売されている
何をしたいかによって習得期間は変わるけど
オンラインゲームでちょっと自動化を作成するのに何ヶ月もかかった
インターネットを通じてしか勉強できないのも原因のひとつだろね
解答者は無報酬で応えているので
生意気だと思えば応えないし応える義務も無い
だから解答者ぶって質問者をイビリ倒すのが趣味って変人も多いよ
ぶっちゃけ奥深く入っていくとUWSCでは間に合わないよ
ゲームだけじゃないよ事務系の仕事を自動化するのも一緒
UWSCがでてすぐに課金ユーザーになって2年ほど夜も寝ないでUWSCばっかし勉強して気づいた事がある
結局間に合わせのUWSCは間に合わせに過ぎない
きちんとしたプログラムを勉強するのが一番近道だよ
それでパールやったけどパールもダメだな
掲示板の解答者がUWSCと同じ種類の人間だらけ
それでジャバスクリプトも勉強したけど
結局スクリプト言語じゃダメだったんだ
初めからC++がいいよ
C++ならなんでもできる
教材もいくらでもあるからね
掲示板でペコペコしながら質問する必要もない
UWSCの2年間全く無駄でした
初心者は初めからC++のほうがいいよ
じっくりやれば俺でも出来るようになった
やりたいことはこれだけだからって簡単にUWSCを勉強しだしたけど
次から次へと課題は出てくるもんだ
それをなんでも解決できるのはC++ですキッパリ
俺、おっさんなんだけど俺でも出来たがんがれ
ここでいつもゴマすりながら質問してた自分が今でも情けないよ
やればできるよ
名無しさん@お腹いっぱい。 [sage] 2010/04/01(木) 04:52:02 :S8TPP2lzP
俺が一番最初に質問してた頃は1人物凄く親切な方がいてた
大阪に住んでるって言ってたな
それで俺はUWSCの楽しさを教えてもらったんだ
あの方には今でも感謝してるよ
あの方はもうこないみたいだし
今、解答者ぶって質問者にレスしてる連中は
質問者が何をしたいか聞きだすのが目的なんだ
美味しいと思えば自分が先に作ってやろうって魂胆みえみえ
それで質問者へのレスは適当にしておくか
更に罵倒して、その質問者はもう来れなくするか
ヘンテコ解答者っていうか解答者の仮面を付けた基地外だな
UWSCの使い方云々抜かしてるガキが出てきた頃から
大阪に住んでるって言ってた解答者さんは来なくなって
質問者も罵倒されるのが嫌で来なくなった
前スレか前々スレは過疎過ぎてダット落ちしてたみたいだし
UWSCの使い方までご指導頂かなくて結構ですって言いたいんだけど
それを言っちゃー解答もらえないから我慢する
それで「質問者が何をしたいのかわからないので応えようが無い」とかはぐらかされて終了
UWSCとperlの解答者には気をつけた方がいいよ
スクリプト言語なんて役に立たないことが多いし
悪い事いわないからC++かJAVAがいいよ
ゲームに使おうがビジネスに使おうがお前に関係ないだろ>糞解答者
名無しさん@お腹いっぱい。 [sage] 2010/04/01(木) 06:04:35 :f/9UZXtU0
おいおい、なんのコピペだよこれ
名無しさん@お腹いっぱい。 [sage] 2010/04/01(木) 06:11:53 :NSxeyl3Z0
不覚にもワロタ
名無しさん@お腹いっぱい。 [sage] 2010/04/01(木) 11:07:20 :0yWWJhZV0
ID:S8TPP2lzP

なにこのキチガイ
名無しさん@お腹いっぱい。 [sage] 2010/04/01(木) 11:14:41 :2Up7o9yS0
C++がいいよ
名無しさん@お腹いっぱい。 [sage] 2010/04/01(木) 21:46:18 :URK6iTyf0
指定時刻に指定ポイントをクリックするスクリプトつくれる?
名無しさん@お腹いっぱい。 [sage] 2010/04/01(木) 22:23:08 :5xeykHJ2P
余裕で作れる
というか初歩中の初歩
名無しさん@お腹いっぱい。 [sage] 2010/04/02(金) 00:28:22 :4cLa/HLo0
なんで?って聞くのは別のアプローチから期待された動作をさせた方が、
確実だったり楽だったりすることがあるからだろ…

ジャバスクリプトとかカタカナで書いている所とか、一度も出てこなかったJAVAが一番最後だけ出てくるとか、
自己矛盾か自己批判を孕んでるあたりとか、自動化をやるのにC++なんぞを使うと言い出すあたりの所ですよね、笑うポイントは。

ゲームに使おうがビジネスに使おうがなんて言ってるけど、そもそもオンゲなんかはプロテクトがかかってるのが多いから、
それすら知らないとか、プロテクトをかいくぐる技術も無いのに質問するヤツが多いから回答者が辟易して、ゲーム関係をうざがるんだろーが…
そういうダークな範囲で使いたいなら独学しろと…
名無しさん@お腹いっぱい。 [sage] 2010/04/02(金) 05:17:12 :/tViDlcK0
お前はなにをいっているんだ
名無しさん@お腹いっぱい。 [sage] 2010/04/02(金) 05:28:23 :Ue5xH3Cy0
ID:S8TPP2lzPには手を触れないよーに
名無しさん@お腹いっぱい。 [sage] 2010/04/02(金) 06:59:15 :I68nnadS0
たぶんこいつは本人で自演だろう
名無しさん@お腹いっぱい。 [sage] 2010/04/02(金) 09:08:28 :+bubi7hm0
大阪に住んでる凄く親切な回答者:ID:S8TPP2lzPがしつこくてうざいからここくるのやめた
名無しさん@お腹いっぱい。 [sage] 2010/04/02(金) 13:18:16 :fDfu5inU0

うざい解答者ってお前のことだわ
名無しさん@お腹いっぱい。 [sage] 2010/04/08(木) 05:17:27 :YpPiuNaU0
001 while
002 //いろいろ計算やら比較をやって
003 条件="おなら"
004 if 条件="ほにゃら" then break
005 print "ほにゃらではない"
006 wend

004行 で breakで ループを抜けたと思ったら、 005行を実行した上で 多重ループを抜けるんで

005 if !( 条件="ほにゃら" ) then print "ほにゃらではなかった"

というような 記述でとりあえずは逃げたんですけど、 こういうもんなんでしょうか?
名無しさん@お腹いっぱい。 [sage] 2010/04/08(木) 09:20:05 :n8jkUacb0
003 条件="おなら"
て書いてるかられしょ
名無しさん@お腹いっぱい。 [sage] 2010/04/08(木) 09:54:44 :3BOGl5Ct0

単純に、3行目のif文を間違えているだけだろう。
「5以上になったらループ抜ける」をやりたいのに「if 5>i then break」と書いちゃってるとか。

名無しさん@お腹いっぱい。 [sage] 2010/04/08(木) 09:56:16 :3BOGl5Ct0

符号が逆だった。

「5以上になったらループ抜ける」をやりたいのに「if 5<i then break」と書いちゃってるとか。
名無しさん@お腹いっぱい。 [sage] 2010/04/08(木) 13:47:14 :nLPIw5SzP

× 003 条件="おなら"
○ 000 条件="おなら"
308: [sage] 2010/04/08(木) 14:31:05 :YpPiuNaU0
ありがとうございます.
やはり ありえないって事のようなので指摘していただいた点を再度調べてみます.

あ、初期値がUWSCから見えないってことでしょうか。その手の事だとすると実行前に構文チェックに掛かって修理してるような気がするんですが?
名無しさん@お腹いっぱい。 [sage] 2010/04/08(木) 15:00:26 :nLPIw5SzP

条件="おなら" は
条件="おなら" であって
条件="ほにゃら" ではない
名無しさん@お腹いっぱい。 [sage] 2010/04/08(木) 15:29:50 :n8jkUacb0

初期値っていうかなんというか

みんな言いたいことは、UWSCは間違ってなくて、記述どおり動いてるってこと
名無しさん@お腹いっぱい。 [sage] 2010/04/08(木) 15:35:19 :9crZpxrL0

いやちゃんと整理して考えてみ
308: [sage] 2010/04/08(木) 16:24:53 :YpPiuNaU0

すみません.ぐっちゃぐちゃでした.
訂正
000 条件="おなら"
001 while 条件="おなら"
002 //いろいろ計算やら比較をやっった結果
003 条件="ほにゃら"
004 if 条件="ほにゃら" then break
005 print "ほにゃらではない"  →  005 if !( 条件="ほにゃら" ) then print "ほにゃらではない"
006 wend
こうかな? こんな感じで Break条件の 否定条件をつけて逃がしてます.でした.orz
ってか、今作ったのを見直してるんですが、実際作った部分はこうです.
0001 mdelay=0; oldmdelay=mdelay; delaysw=0 //スクリプト冒頭で初期値設定済
0100 optx=7 // POPUPMENU(pp, STATUS(xID, st_x), STATUS( xID, st_y )+STATUS(xID,st_height))
0101 SELECT optx
0102  CASE 7
0103    REPEAT
0104     x= INPUT("Now : "+oldmdelay+" to set new(ms):",mdelay)
0105     IF x= EMPTY THEN BREAK
0106    UNTIL CHKNUM(x)
0107    IFB !(x = EMPTY) THEN
0108      mdelay= x; oldmdelay=mdelay;delaysw=1
0109      PRINT "*Set07. Delay. ms: "+mdelay
0110    ENDIF
0111  CASE 8
0112    PRINT "*Set08. Hi Sensitive Start."
1000 SELEND
1001 sleep(911)

0107 と 0110 が break したつもりでも抜けられなかったんで付け加えた行です.
この行に”//"を入れてやったら、やっぱり抜け出せなかったです.
名無しさん@お腹いっぱい。 [sage] 2010/04/08(木) 17:13:56 :2KfY3Rs50

「107と110を付け加えた」のなら
例文と実際のコードのprint位置が違うのだが・・・
「107〜110を付け加えた」のなら修正前のコードが欲しいところ。
名無しさん@お腹いっぱい。 [sage] 2010/04/08(木) 17:19:01 :nLPIw5SzP

ちょっと待て
0105 のbreakでどこを抜けようとしたって?

0107にはxに数値が入ったときかxが空だったときとなるので
その制御では分岐が確かに必要になる。
そうしないとxを使ったときにエラーになるからね。

それを0105でどうにかしようと思うならifb使ってそこになにやら書くか、
exit、もしくはループを追加してbreak 2 を使う必要がある。

UWSCはBasic系なのでcaseを抜けるbreakはない。
そこで、0105から0110に飛ぶようにしたらどうだろう?
0102  CASE 7
0102.5  while true
0103    REPEAT
0104      x= INPUT("Now : "+oldmdelay+" to set new(ms):",mdelay)
0105 +----  IF x= EMPTY THEN break 2
0106 |   UNTIL CHKNUM(x)
0108 |   mdelay= x; oldmdelay=mdelay;delaysw=1
0109 |   PRINT "*Set07. Delay. ms: "+mdelay
0110 +->wend

ループ条件を変更して0108〜0109を次のようにするほうがいいと思う
010x    ifb CHKNUM(x) then
010x      mdelay= x; oldmdelay=mdelay;delaysw=1
010x      PRINT "*Set07. Delay. ms: "+mdelay
010x      break
010x    endif
308: [sage] 2010/04/08(木) 17:27:56 :YpPiuNaU0

すみません. 『break文で 多重ループを抜け出せない』って事があるものなのかって事を 相談したかったんで
条件式の錯誤に気がつかず、また実際のものとずいぶん違うものを提示してしまい迷惑をおかけしました.
最初 書いたときは 107 110行はありませんでしたが 105行の "EMPTY"(CANCEL)入力で BREAKしないので
単純に 107,110行を追加しているのが現状です.
308: [sage] 2010/04/08(木) 18:30:40 :YpPiuNaU0

今 BREAK のヘルプを読んで 顔が熱くなってきました.はずかしい限りです.
0001 mdelay=0; oldmdelay=mdelay; delaysw=0 //スクリプト冒頭で初期値設定済
0100 optx=7 // POPUPMENU(pp, STATUS(xID, st_x), STATUS( xID, st_y )+STATUS(xID,st_height))
0101 SELECT optx
0102  CASE 7
0102.5  while true
0104      x= INPUT("Now : "+oldmdelay+" to set new(ms):",mdelay)
010x    ifb CHKNUM(x) then
010x      mdelay= x; oldmdelay=mdelay;delaysw=1
010x      PRINT "*Set07. Delay. ms: "+mdelay
010x      break
010x    endif
0100   WEND
0111  CASE 8
0112    PRINT "*Set08. Hi Sensitive Start."
1000 SELEND
1001 sleep(911)

こうですね.バッチリきれいに抜け出せました,皆さんどうもありがとうございました.
名無しさん@お腹いっぱい。 [sage] 2010/04/11(日) 09:21:19 :WP7Ufm9tP
無料版でIE以外のブラウザの操作もできますか?
名無しさん@お腹いっぱい。 [sage] 2010/04/11(日) 10:53:36 :7t91Tinz0

基本、無理。
名無しさん@お腹いっぱい。 [sage] 2010/04/11(日) 11:09:55 :WP7Ufm9tP
そうですか。
このゲーム(待ってクリック、待ってクリックを繰り返すFH)で
自動戦闘を繰り返すマクロ作れたらお願いします

ttp://mob-2.com/
名無しさん@お腹いっぱい。 [sage] 2010/04/11(日) 11:40:13 :L29VjoPvP
了解しました。
20万円くらい用意しといてね。
名無しさん@お腹いっぱい。 [sage] 2010/04/11(日) 16:04:40 :S762n6IR0

テンプレくらい読んで書き込めよカス
名無しさん@お腹いっぱい。 [sage] 2010/04/11(日) 16:21:34 :ikeA/Ag60
ブラザウ動かせない糞ソフト
名無しさん@お腹いっぱい。 [sage] 2010/04/11(日) 16:53:32 :7t91Tinz0
シベリアにいた頃に作った、ゲームでクリックするだけのマクロをあげとくわ。

太鼓の達人マクロ。
ttp://gamezone.gooside.com/taiko.htm
// ( .  )  ピリオドの位置にマウスを合わせて開始するといい。
FUKIDASI("マウスを読み取り位置にあわせてください。<#CR>Ctrlキーをクリックで開始します。")
// VK_CTRL が押されたら開始
Repeat; sleep(0.2); Until GetKeyState(VK_CONTROL)
FUKIDASI("実行中。<#CR>Ctrlキーをクリックで終了します。")

// マウス座標保存
MouseX = G_MOUSE_X
MouseY = G_MOUSE_Y

// キー保存変数
dim previousKey
dim key
dim isYellow = false
dim isPreviousYellow = false

sleep(1)
while true
 isPreviousYellow = isYellow
 isYellow = false
 sleep(0.005)
 // VK_CTRL が押されたら終了
 if GetKeyState(VK_CONTROL) then break

 key = 判定( MouseX, MouseY, previousKey, isPreviousYellow, isYellow )
 if ! key then continue
名無しさん@お腹いっぱい。 [sage] 2010/04/11(日) 16:54:06 :Ik0GncC3P
 // キーをクリック
 ifb isPreviousYellow then
  ifb isYellow then
   sleep(0.02)
  endif
 endif
 KBD(key)
 // 最後に押したキーを保存
 previousKey = key
 sleep(0.02)
wend

// 戻り値:キーコード
//     処理しない場合、0を返す。
// X: X座標
// Y: Y座標
// key: 最後のキー
// fYellow: 前回のYellow フラグ
// isYellow:今回のYellow フラグ
// 呼び出し回数:呼び出し側は常に省略する。
//        自分を呼ぶときは+1する
function 判定( X, Y, key, fYellow, var isYellow, n = 0 )
 result = 0
 // 色を取得
 color = PEEKCOLOR( X, Y )
 ifb ! fYellow then
  //黄色が出た後はグレーの判定はなし
  if isGray(color) then exit
 endif
名無しさん@お腹いっぱい。 [sage] 2010/04/11(日) 16:54:53 :7t91Tinz0
 red = color and $FF
 green = (color and $FF00) / $100
 blue = (color and $FF0000) / $10000
 ifb fYellow then
  // 黄色フラグが立っているときは、他のカラー(青、赤)の判定はしない。
  ifb 0 = color then
   // 前回黄色だったら、黒は黄色とみなす。
   isYellow = true
  else
   exit
  endif
 elseif 255 = blue then
  result = VK_M // 青なので「m」
 elseif 255 = green then
  isYellow = true // 黄色
 elseif 255 = red then
  result = VK_Z // 赤なので「z」
 else
  exit
 endif
 ifb isYellow then
  ifb 4 <= n then
   // 黄色で確定 // 黄なのでmとzを交互に
   if key <> VK_M then result = VK_M
   if key <> VK_Z then result = VK_Z
   exit
  endif
  // 規定個数の箇所をチェックする // (黒を除く)グレーがあれば中断
  if ! n then X = X + 35
  result = 判定( X + (n * 5), Y, key, fYellow, isYellow, n + 1 )
 endif
fend
名無しさん@お腹いっぱい。 [sage] 2010/04/11(日) 16:55:11 :Ik0GncC3P
//////////////////////////////////////////////////////////////////
// グレーチェック
// メーターカラーなどがグレーかどうかを調べる
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
名無しさん@お腹いっぱい。 [sage] 2010/04/11(日) 17:07:04 :7t91Tinz0


1.スクリプトを起動し、
2.ゲームのページを開いて開始し、
3.( .  ) ←の顔を合わせる丸括弧のピリオドの位置にマウスを合わせ、Ctrlキーで開始する。
  ゲーム中は放置。
4.ゲームが終了したらCtrlキーでマクロを終了する。

マウスで指定した座標の色を監視し、顔が合わさる瞬間にキーを自動クリックするだけだが、
連打する部分を見分けるためにちょっとめんどくさい処理になっている。
顔の種類の判定をそれぞれ色素の一つしか見ずに済むこんなシンプルなゲームでも、
識別して適切な動作をするのにこれだけの長さのコードが必要になる。

グレーチェックの関数は流用でそれ以外の部分を新規に作ったが、
これだけで5時間もかけてる。
UWSCで小さいマップを動き回るマクロをいくつか書いてる僕がそれだけ時間かかるんだから、
実現可能だとしても、ゲームマクロにはそれなりの労力が必要。
ちなみにマップを動き回るマクロは1000行くらい必要になった。
名無しさん@お腹いっぱい。 [sage] 2010/04/11(日) 21:45:43 :1FTtfnsf0
マウスの感度をよくするにはどうしたらいいものか
名無しさん@お腹いっぱい。 [sage] 2010/04/11(日) 22:12:34 :oXYAxr2f0
マウスの裏を掃除する
名無しさん@お腹いっぱい。 [sage] 2010/04/13(火) 22:18:41 :2xzsxj+L0
マウスパッドを敷く
名無しさん@お腹いっぱい。 [] 2010/04/14(水) 22:23:33 :bbwcK6IR0
ここに1個のpdfファイルがあります。
ページ番号はついていません。

自分で簡易製本するためページ番号をつけたいんです。
偶数ページには左下に、奇数ヘージには右下に。

そんなページ番号をpdfファイルに挿入するためにはどうすればいいですか?
名無しさん@お腹いっぱい。 [sage] 2010/04/14(水) 22:47:05 :pM2mgX640
テンプレくらい読んできてね
名無しさん@お腹いっぱい。 [sage] 2010/04/15(木) 02:27:46 :Ti8sLQUA0

ググれ

基本的には印刷時にソフトで自動挿入だよ。
自動と言ってもUWSCとはまったく関係ないけどね。
PDFを直接編集するソフトなら手作業だろうね。
名無しさん@お腹いっぱい。 [] 2010/04/16(金) 23:21:01 :HC5SVg6T0
uwscはPDFの編集はできないよん
名無しさん@お腹いっぱい。 [sage] 2010/04/19(月) 21:26:23 :1NXVhFap0
俺はエロサイトからダウンロードしてきた大量のエロ動画ファイルのファイル名を
管理するのにuwsc使ってます^q^ノ
名無しさん@お腹いっぱい。 [sage] 2010/04/19(月) 21:54:44 :XgjI0OYr0
ダウンロードしたファイルの管理か。どうやってんだろ。
俺のSayMoveダウンロードスクリプトはダウンロードはするけどリスト化はしてないんだよな。
ダウンロードに失敗したり、あとで削除とかするからダウンロードソフトみたいに画面作って全部管理しないと意味ない気がするし。
名無しさん@お腹いっぱい。 [sage] 2010/04/21(水) 22:53:33 :j6JEIgFp0
フリー版でIEの自動操作はできないの?
6,720円(税込)ってたけぇな
名無しさん@お腹いっぱい。 [sage] 2010/04/22(木) 01:47:11 :BzTJSDhd0

録画機能は有償版にしかついてないけど、再生は有償無償どちらでもできる。
ただ、開発支援環境もなしに作るのは大変。
あっても大変だし労力の割りにできることは大したことなかったりするけど。

まずはフリー版と、IEを自動操作するソースでも手に入れたら?
名無しさん@お腹いっぱい。 [sage] 2010/04/22(木) 18:51:07 :1b3KZlwEP
IE自動操作ってそんなに難しかったっけ?
それとも俺が思ってるのとはまた別なのか・・・
名無しさん@お腹いっぱい。 [sage] 2010/04/22(木) 22:38:55 :BzTJSDhd0
上書き確認のダイアログ処理とかエラーメッセージの対応とか
動的ページの処理とか
結構大変やん?

僕は一度作って改良して使いまわし出来るようになってからはそれほどかからんようにはなったけど、
半年くらいみっちりやらんとちゃんとしたもんは作れん。

いや、単純な操作なら録画・再生程度でそれなりにできるけどね。
フリー版入手よりも、シェア版のお試しを勧めるべきだったか。


んでIEオブジェクトのスレッド間使い回しがなんかバグりまくって動かんしね。
OLEEVENTで受け取ったIEオブジェクトも高確率で使えんし。
どーゆー条件でなら使えるのかよく分からん。
名無しさん@お腹いっぱい。 [sage] 2010/04/24(土) 08:10:49 :6nk6f6hV0
これってUWSCを動かすファイル?
ttp://www.dotup.org/uploda/www.dotup.org835021.jpg
名無しさん@お腹いっぱい。 [sage] 2010/04/24(土) 08:17:59 :kCRize2QP
・・・情報提供料としていくらまで出せます?
名無しさん@お腹いっぱい。 [sage] 2010/04/24(土) 12:55:57 :Xrgo5/kc0
www
名無しさん@お腹いっぱい。 [sage] 2010/04/24(土) 17:10:01 :ZblMfkgKP
ゲームでキャラの位置を正確にしたいんだけど
何かいい方法ある?
東西南北に敵キャラがいて丁度真中迄移動したいんだけど
微妙にずれていくので教えて下さい
東との距離が近くなれば西との距離が遠くなり
南との距離が近くなれば北との距離が遠くなる
上記のような感じでぴったし真中に合わせられないんですよ
ゲーム内の位置とPCの座標を合致させる方法あれば教えてください
UWSCをゲームに云々のくだらない回答は不要です
答えられないならスルーでいいですから







書き込んだ人は自分へのレス禁止
うざいからお前のレスなんて要らねーから
お前のレス必要ないから返事すんなよ
ていうかお前わかってないのに答えようとするから邪魔なんだ罠
消えろ変人解答者
ここでうざい解答者ってお前のことだわ
別人の振りしてレスすんなよ
名無しさん@お腹いっぱい。 [sage] 2010/04/24(土) 17:11:45 :IaNfdo2A0
チートするための方法は教えられないなぁ
名無しさん@お腹いっぱい。 [sage] 2010/04/24(土) 17:17:38 :ZblMfkgKP
です
色判定で3点あわせることに成功
自己解決しましたので349への回答は不要です
名無しさん@お腹いっぱい。 [sage] 2010/04/24(土) 17:18:41 :ZblMfkgKP

おまえさー
答えられないのに出てくんなよ
マジうざっ
お前がまともな回答したことあるの?
それ聞いてみたいわw
名無しさん@お腹いっぱい。 [sage] 2010/04/24(土) 17:20:13 :e4lY74IeP
スルーな
名無しさん@お腹いっぱい。 [sage] 2010/04/24(土) 17:28:03 :ZblMfkgKP
2chのソフト板全体で言える事だけどw
質問者が何も前進しないレスが多いな
本人必死でやってんだから
そっとしておいてあげればいいのに
前進どころかw
足をひっぱりにかかるからなー
質問者をこき下ろす事だけ書いた奴が解答者ぶってるのは
変だと思う
解答者の答えを答えつつ罵倒するならまだしも
こいつわかってて解答者ぶってるの?みたいなのばっかしwww
解答者ぶりたいから張り付いてるのが趣味なんだろw
名無しさん@お腹いっぱい。 [sage] 2010/04/24(土) 17:32:53 :ZblMfkgKP


ご苦労さん
お前は今後このスレで回答しなくていいからね
アホな質問に答えられないのはアホだから
意味わからんやろねw
人が楽しんでるんだからおれでいいだろ
誰にも迷惑かかってないし
万が一かかっていたところで
お前がパトロールする必要ないから
回答できない解答者は消えろ
名無しさん@お腹いっぱい。 [sage] 2010/04/24(土) 17:50:07 :ZblMfkgKP
UWSCは大変魅力のあるソフトなのに
誰かのせいで質問者来ないw
ここは答え返ってくるよりまず罵倒されるの目に見えてるからなw
UWSCの魅力が一般人に伝わらないのは
こういうアホ解答者が蔓延るからだろ
まともな回答できないのかできるけどしないのか知らんけどw
作者のうみうみさんも痛し痒しだろなー
勝手な推測で罵倒された方はたまったもんじゃない
6700円払って怒鳴られた挙句に自分のやりたい事は一歩も前進しない
6700円は社会勉強代として放置する人が多いのはお前の責任だ>アホ解答者
UWSCはいいソフトだよ
もっと広めればいいのに
アホ解答者は正義の味方を装うライバルソフトの関係者か?
チート使用者がチートの質問者に対して
「チートは不正!!!」って叫んでライバルを増やさないよう無駄な努力してるのと同じだわw
クズ解答者の振りして実はUWSCの反映を阻止してるんだろなw
343 [sage] 2010/04/25(日) 01:53:03 :MDkvEHtj0

まあ、作者サポートのある本家掲示板でいらんことを書き込んだことは確かにある。
でもここは2ちゃんねるだ。
だから本家掲示板で禁止されているネトゲのマクロの話もできる。
ID:ZblMfkgKPは作者をよいしょしているが、 ID:ZblMfkgKPだって本家掲示板からは追い出されるような人間だと言うことを自覚しろ。

俺はを書き込んだものだけど、UWSCで位置探知は難しいのであんまりやってない。
多少なりともコントロールできているならはすごいと思うが、基本的なことが分かってないらしい。

正確なコントロールに必要なのは事象を数式化することだよ。
単純な座標計算ではなくね。
別に関数式一つで表せと言うことじゃなく、配列データを使ってもいい。

UWSCは複数のものを同時に探査できないからキャプチャタイミングがずれる。
タイムラグもあるのでそれを想定した操作をしなければならない。
だからTドット単位でのコントロールは、そこまでやっても大変だ。
結局、UWSCをメインに使うとしても、DLL関数を作らないといけなかったりする。
グラフィック処理がもっと多様に記述できて高速に動作する言語ならスクリプトだけでもいけるかもしれないが、
その辺がUWSCの限界だよ。
敵が移動しなくて時間もかけていいのなら、UWSCでもちゃんとぴったりあわせられるけど、
ぴったりあわせるのが目的なら、発想を変えて計測だけ自動で行い、自分で操作するという手もある。

UWSCを使いこなすのは立派だが、優れた人間は効率よく作業するためにいろんな道具を使うし、場合によっては道具を自作する。
僕がUWSCのことをあまりよく書かなかったのは、「あなたがやろうとしていることにUWSCが適しているだろうか」という疑問を投げかけただけだよ。
探せばフリーソフトで簡単に実現できるようなことかもしれない。
お金を出すんならもっといろいろあるだろう。
名無しさん@お腹いっぱい。 [sage] 2010/04/25(日) 02:24:53 :PrF2KgzeP

お前のレスはなんでそんなにひねくれてるんだ
美味いもの食ってゆっくり寝てみ
ちょっとは考え方変わるから
どーでもいいこと1人で理論付けて面白いのかどうなんだかw
名無しさん@お腹いっぱい。 [sage] 2010/04/25(日) 06:23:28 :5DiiqLEb0
面白いキチガイが二人もいるとは
愉快なスレだな
名無しさん@お腹いっぱい。 [sage] 2010/04/25(日) 15:59:04 :inGnxg/U0
思わぬ真性が釣れたみたいだな
名無しさん@お腹いっぱい。 [sage] 2010/04/25(日) 18:33:50 :O5DTM8+t0
ふりー版使用。
あるURLのページのソースを取得したいのですが
IEのメニューで「ソース」を実行すると表示されるコードを取得するには


public ie = CreateOLEObj("InternetExplorer.Application")
IE.Visible = True
ie.navigate(URL)
REPEAT
SLEEP(0.1)
UNTIL !(ie.Busy) AND (ie.ReadyState = 4)
allhtml=ie.document.body.innerHTML

では違うんでしょうか?

URL="ttp://www.google.com/images?hl=ja&source=imghp&q=検索ワード"
で画像検索したページのソースを取得したいのですが、
メニュー・表示・ソースで出てくるコードと
innerHTMLで得られるコードが違うのです
名無しさん@お腹いっぱい。 [sage] 2010/04/25(日) 19:32:32 :zNMUBgVl0
64bitでSkScriptは動きますか?
名無しさん@お腹いっぱい。 [sage] 2010/04/25(日) 23:45:37 :MDkvEHtj0

IEのソースは受信したそのまんま
FireFoxのソースは文字コード変換済み
ie.document.body.innerHTMLはそのときの(動的な処理が施された後の)HTML。(だと思う)
ie.ReadyStateが3から4になるときに動的な処理が施される。
で、どうやったらその飯が取れるかだっけ?
↓のoHttp.responseBody が多分そのまんまだよ

oHttp = CreateOLEObj("MSXML2.XMLHTTP")

LastModified = "Thu, 01 Jun 1970 00:00:00 GMT"
while true
 sleep(5)
 // Webページ読み込み
COM_ERR_IGN  //COMエラー無視
 oHttp.Open("GET", url, True )
 oHttp.setRequestHeader("If-Modified-Since", LastModified);
 oHttp.Send("")
 ifb 200 = oHttp.status Then
  // ok
 else
  continue
 endif
 LastModified = oHttp.getResponseHeader("Last-Modified")
 ifb COM_ERR_FLG
  continue
 endif
COM_ERR_RET  //エラー処理復帰
 str = DECODE(oHttp.responseBody, CODE_BYTEARRAY)
 break
wend
print str
名無しさん@お腹いっぱい。 [sage] 2010/04/27(火) 15:23:05 :GVvjxkxo0
UWSCで空きメモリ容量を取得したいんですが、どうやったらいいでしょうか?

x264のエンコードをuwscを使って自動化しようとやっているんですが、
空きメモリが一定以上無い時は処理をスルーするようにしたいと思っています。
名無しさん@お腹いっぱい。 [sage] 2010/04/27(火) 16:49:04 :QTDzfzJxP
message = doscmd("systeminfo")
msgbox(message)

dosのsysteminfoから取ってくればいいんじゃね?
名無しさん@お腹いっぱい。 [sage] 2010/04/27(火) 17:22:53 :GVvjxkxo0
そんなものが…と思って調べてみたらPro限定コマンドでHomeの自環境では
不可能でしたorz
名無しさん@お腹いっぱい。 [sage] 2010/04/27(火) 19:31:57 :5iz8oRr40

タスクマネージャ起動させといてパフォーマンスタブ-物理メモリ-利用可能読めば?
名無しさん@お腹いっぱい。 [sage] 2010/04/27(火) 22:37:02 :GVvjxkxo0

ありがとうございます。タスクマネージャは常時起動しっぱなしだったんで
これでなんとかなりました。

ところで、UWSC単体あるいはWSH等を含めてUWSCのスクリプト上?で
空きメモリを取得するにはどうしたらいいんでしょうか。
名無しさん@お腹いっぱい。 [sage] 2010/04/28(水) 01:26:20 :IFvYJtzA0

ttp://www.upken.jp/kb/HdPBaCEihTHpWKzfDZZsVhEJEYkamv.html
FreePhysicalMemory ってプロパティがある。

上記を拡張子 .vbs で保存して実行すればとりあえず空きメモリが取得できる。
コマンドラインからファイルを指定してもダイアログが出るんだけど、
> cscript test.vbs
っていう風に、コマンドプロンプトからコンソール向けスクリプトで実行すると、
コマンドプロンプトに結果を返してくれる。
これをDOSCMD()で呼び出せば結果を文字列で受け取れる。

でも余計な文字列はDOSコマンドで除去した方がいいので
> cscript test.vbs | find "Free"
として、空きメモリの行だけ受け取ればいい。

数値だけ受け取りたければ、findstrで正規表現を使って数値部分だけを返すようにも出来るけど
val()に渡すだけで数値化できるならその方が簡単だね。
名無しさん@お腹いっぱい。 [sage] 2010/04/28(水) 02:23:37 :BNDwd4xF0

これ、殆どそのままUWSCでも使えるじゃないかw

COMオブジェクトを触れるなら
わざわざコンソールの文字列をfindしなくてもいいと思う。

まぁ、COMは難しいなぁ、と思うなら369のやり方でも実用上問題ないだろう。
名無しさん@お腹いっぱい。 [sage] 2010/04/28(水) 02:31:36 :5rPFMVrg0
UWSC上でVBScriptのfor-eachに該当するのってどういうやり方になるの?
名無しさん@お腹いっぱい。 [sage] 2010/04/28(水) 02:32:05 :IFvYJtzA0

UWSCに直そうと思ったんだけど、For Each 〜 in をfor 〜 nextで実現する方法が分からなかった。
.lengthの回数配列でまわす程度のイメージは持ってるんだけど・・・できなかった。
そんな苦労をするくらいなら結果だけ使った方が簡単だと思ったんだ。
名無しさん@お腹いっぱい。 [sage] 2010/04/28(水) 03:26:20 :IFvYJtzA0
.length じゃなくて .Countだったっぽいけど、配列アクセスはできないものもあるらしい。
よくわからないけどもしかしたらそれかも。

WSH(・∀・)スレッド! Part 4
ttp://pc12.2ch.net/test/read.cgi/tech/1243095768/210-218

Item
Items
ItemIndex とかいろいろ試したんだけど。

・・・UWSCでのやり方出てきた。GetOleItem使うのか。
ttp://siromasa.xxxxxxxx.jp/Term/4ta1.html
  Function Processor(Obj_CS)
    Dim Col_Processor = Obj_CS.ExecQuery("SELECT * FROM Win32_Processor")
    Dim i, Str
    For i = 0 To GetOleItem(Col_Processor) - 1
      Dim Obj = All_Ole_Item[i]
      If i > 0 Then Str = "<#CR>" + Str
      Str = "Cpu" + "[" + GHz(Obj.MaxClockSpeed) + "] [" + Trim(Obj.Name) + "]"
    Next
    Result = Str
  FEnd
名無しさん@お腹いっぱい。 [sage] 2010/04/28(水) 06:07:04 :TGzzLXVI0
google画像検索で出てきた画像をまとめて保存するスクリプトを書いたのだが、晒すべきかどうか迷う…
google画像検索で出たダウンロード先はそれぞれ別のサーバーだから、特定のサーバーに過重な負担をかける心配はない。
だが、pixivやふたば掲示板のような画像の置いてあるサーバが同一の掲示板やサイトで、同じようにスクリプトでダウンロードした場合、
あっという間にサーバーが悲鳴をあげる。そして管理者が対策をし、そのスクリプトは使えなくなってしまう。
サーバーに過重な負担をかけないよう、画像一枚に二分とか「手動でダウンロードするのと同じくらいのインターバルを置けばそういう事態は回避できるだろうし、
サーバーの貧弱なところからダウンロードする場合、自分ならそうする。
注意書きをしたからと言って百人に一人の馬鹿がそれを平気で破り、サイトそのものに大迷惑をかける恐れもある。
自分の発表したスクリプトが改変されてpixivやふたばに大迷惑をかけないという保証はどこにもない。
バカや不心得者にスクリプト技術を持たせばそれは凶器。
スクリプト荒らし一つで簡単に2chで特定のプロバイダがアク禁されてしまうことを考えれば、ちょっとの改変で画像サイトに大迷惑をかける恐れのある
スクリプトは、やはり自分ひとりで使うのが正解だろうか…
名無しさん@お腹いっぱい。 [sage] 2010/04/28(水) 06:51:38 :IFvYJtzA0
IEを自動操縦するぶんについては、鯖から対策されると言うことはないよ。
2ちゃんねるはプロ串とか荒らしツールの対策はされるんだけど、
IEの自動操縦についてはブラウザ情報がIEなもんだからソフト的な対策は施されない。
同じURLを書き込めば制限されたりするけど、それは自動か手動かを判断しない。
コピペ投稿したらIPアドレスで書き込み制限されるだけであって、ログ取得については無制限。人大杉にはなるけど。

Googleが負荷を気にするかについてだが、
今Youtubeが次々に自動的に動画を再生している。Youtubeの機能で。
つまり、Googleは情報を配信したがっているわけだから、収集ツールなんかはむしろ臨むところなんじゃないかな。

要するにくださいってことです。
名無しさん@お腹いっぱい。 [sage] 2010/04/28(水) 10:35:49 :5rPFMVrg0

369のをGETOLEITEMを使いアクセスするのはやったけど
エラーも何も出ない代わりに何も出力されず終わる…
名無しさん@お腹いっぱい。 [sage] 2010/04/28(水) 11:32:02 :BNDwd4xF0

//---------------------------------------------------
Locator = CreateOLEobj("WbemScripting.SWbemLocator")
objService = Locator.ConnectServer

objEnumerator = objService.ExecQuery("Select * FROM Win32_OperatingSystem")
 GetOLEitem(objEnumerator)
 print "Free : " + ALL_OLE_ITEM[0].FreePhysicalMemory
 print "Total: " + ALL_OLE_ITEM[0].TotalVisibleMemorySize
objEnumerator = null
//---------------------------------------------------

WMIを使うなら、MSDNあたりを眺めておくと何が入っているかの見当がつくよ。
ttp://msdn.microsoft.com/en-us/library/aa394084%28v=VS.85%29.aspx (Win32以外もたくさんあるけど)
巷にあふれるVBからのコード変換をする際の手助けになるはず。
名無しさん@お腹いっぱい。 [sage] 2010/04/28(水) 11:32:14 :IFvYJtzA0

出来たんだけど

【実行結果】
Count : 1
Free : 265140
Total: 523760

【ソース】
Locator = CreateOLEObj("WbemScripting.SWbemLocator")
objEnumerator = Locator.ConnectServer.ExecQuery("Select * FROM Win32_OperatingSystem")
print "Count : " + objEnumerator.Count
for i = 0 to GetOleItem(objEnumerator) - 1
 Obj = All_Ole_Item[i]
 print "Free : " + Obj.FreePhysicalMemory
 print "Total: " + Obj.TotalVisibleMemorySize
next
sleep(10)
名無しさん@お腹いっぱい。 [sage] 2010/04/28(水) 11:39:28 :BNDwd4xF0

短時間でかぶりすぎだろw
名無しさん@お腹いっぱい。 [sage] 2010/04/28(水) 12:05:41 :5rPFMVrg0
あれ?

コードほとんど同じはずなんだけど…
なんかミスってたかな。

ちょっとやってすぐ消したからどこが間違ってたのかわからんw
名無しさん@お腹いっぱい。 [sage] 2010/04/28(水) 13:01:21 :IFvYJtzA0

うん。書いた瞬間やっちゃったって感じだた。


for i = 1
とかがありがちなミス

あとはprintした瞬間にスクリプトが終了とか。
結果を見るためのsleep(10)だからね。

UWSCを通常起動して実行すればログ窓は残ってるけど、
関連付け実行ならsleep()入れないとすぐ消える。
374 [sage] 2010/04/28(水) 19:57:44 :TGzzLXVI0
結局晒してしまう google画像検索で出た画像を指定数、自動保存する
ここから

keyword="九龍城" // 検索キーワード
downKazu=30  // ダウンロードしたい数

folder="C:\Documents and Settings\k\My Documents\My Pictures" // 保存先フォルダ
public FS = CreateOleObj("Scripting.FileSystemObject")
ifb FS.FolderExists(folder+"\"+keyword)=false then
FS.CreateFolder(folder+"\"+keyword)
endif
for page=0 to ((downKazu+17)/ 18)
pagenum=page*18
URL="ttp://www.google.com/images?hl=ja&source=imghp&q="+keyword+"&start="+pagenum+"&ndsp=18"

public ie = CreateOLEObj("InternetExplorer.Application")
IE.Visible = True
ie.navigate(URL)
REPEAT
SLEEP(0.1)
UNTIL !(ie.Busy) AND (ie.ReadyState = 4)
allhtml=ie.document.body.outerHTML
374(2) [sage] 2010/04/28(水) 19:58:59 :TGzzLXVI0
cutword="</A>"
cut=toScanWord(str2,cutword)
//print cut
str2=afterScanWord(cut,"imgurl=")
str2=beforeScanWord(str2,"&")
print str2
nokori=copy(str2,pos(cutword,str2)+length(cutword),length(str2))// print nokori
ie.navigate(str2)
ieWait(ie)
sleep(2)
id=GetID(str2,"IEFrame")
sckey(id,vk_alt,f,a)
number=page*18+i
numberStr=""+number
orgName=copy(str2,pos("/",str2,-1)+1,length(str2))
orgName=chgmoj(orgName,":","")
name=folder+"\"+keyword+"\"+numberStr+"_"+orgName
print name
id2=GetID("画像の保存","#32770")
ifb id2>0 then
sendstr(id2,name,1,true)
sleep(2)
sendstr(id2,name,1,true)
sendstr(id2,name,1,true)
sleep(1)
clkitem(id2,"保存",CLK_BTN)
sleep(1)
else
id2=GetID("Web ページの保存","#32770")
clkitem(id2,"キャンセル")
endif
next
374(3) [sage] 2010/04/28(水) 19:59:41 :TGzzLXVI0
next


function fromScanWord(str,scan)
// 検索ワード以後の文字列を切り取る 検索ワード含む
result=copy(str,pos(scan,str),length(str))
fend

function toScanWord(str,scan)
// 検索ワード以前の文字列を切り取る 検索ワード含む
result=copy(str,0,pos(scan,str)+length(scan)-1)
fend

function afterScanWord(str,scan)
// 検索ワード以後の文字列を切り取る 検索ワード含まない
result=copy(str,pos(scan,str)+length(scan),length(str))
fend

function beforeScanWord(str,scan)
// 検索ワード以前の文字列を切り取る 検索ワード含まな
result=copy(str,0,pos(scan,str)-1)
fend


procedure ieWait(ie)
REPEAT
SLEEP(0.1)
UNTIL !(ie.Busy) AND (ie.ReadyState = 4)
fend
名無しさん@お腹いっぱい。 [sage] 2010/04/29(木) 04:18:51 :EPCxEO3u0

半角スペースだからインデント消えたのかと思ったら最初から入ってなかったぜ。
名無しさん@お腹いっぱい。 [sage] 2010/05/02(日) 09:40:15 :doL+vkcY0
GETSTRみたいに、ネットフレームワークのDataGridViewのセルのデータを取得する方法は、
UWSCだけでは出来ずにWin32APIで取得するしかないでしょうか?
もしそうなら、そのAPI名を教えていただければありがたいです。
具体的には、データグリッドビューで表示されているドル-円のレートを1分毎に取得したいです。
名無しさん@お腹いっぱい。 [sage] 2010/05/04(火) 06:36:01 :0Qq9JDW3P
このソフトに挑戦しようと思います。
ふつうにネトゲで使えるようには
かなり時間を要しますか?
Autohotkeyは初級は使いこなせてると思います。
ぐぐったらゴールデンウィークにこのソフトに出会ったという人の
HPみたのでやってみようかと
名無しさん@お腹いっぱい。 [sage] 2010/05/04(火) 07:01:47 :Q0DkcYUl0

そのままでUWSCが使えるゲームなら、キーの記録と再生した奴をちょっと弄ることを覚えたらそれで応用はできるよ。
連打だけしてればいいようなものもあるだろ?
そういう単純作業をするマクロをたくさん作ってれば上達するよ。
名無しさん@お腹いっぱい。 [sage] 2010/05/04(火) 07:11:09 :0Qq9JDW3P

既存のもの弄ることからやってみようと思います。ヘルプ読んでみたが
数学捨てた低学歴文系にはこの記号の押し寄せに一瞬で圧倒される。AHKよりもぜったいムズイだろう。
AHKは飛び抜けて優れたソフトだと思うが、これにも可能性感じる。
サンプルが動かしたが嬉しい。色や文字を認識しての条件分岐が使えるようになれば
ワクテカしてきそうだ。
名無しさん@お腹いっぱい。 [sage] 2010/05/04(火) 07:25:47 :7yDjLHFl0
こいつは二重人格なのか?
名無しさん@お腹いっぱい。 [sage] 2010/05/04(火) 15:34:19 :wfwIxOPI0
いまでこそ色々使ってはいるモノの、はじめて落としてから、ああこういうことか、と仕組みを理解して動かし始めるまでに結構なタイムラグがあった。
ヘルプはたしかに、仕組みを理解しない人間にああこういうことかと理解させるにはちょっとキツイな、
名無しさん@お腹いっぱい。 [sage] 2010/05/05(水) 05:12:36 :bhIlqqXN0
俺も昨日から使い始めた。UWSCは難しい、と聞いて敬遠してたけど、
自分の操作を記録したものを修正する方法を使えば実に手軽だった。

ところで、
「コンピュータのロック」(Win + L)中はFirefoxへのマウスクリックが
動作してないんだけど、回避策ある?それともロックの仕様?
環境は Vista(x64)SP2 + Firefox v3.6.3 + UWSC v4.6。
名無しさん@お腹いっぱい。 [sage] 2010/05/05(水) 19:16:43 :oF5LYxqnP
このソフトって何年に発表されたものなんですか?
相当昔からあるみたいですね。いまでも最前線のソフトなんでしょうか?
名無しさん@お腹いっぱい。 [sage] 2010/05/05(水) 22:36:46 :kH509+ir0

ttp://www.uwsc.info/history.html
10年前からあるね。すげえなあ。
名無しさん@お腹いっぱい。 [sage] 2010/05/07(金) 07:43:29 :YqDfIqgLP
3Dゲームウインドウ上で半角キーを押すことをUWSCにさせたいのですが、
まったく押してくれません。どうやれば改善するのでしょうか?

自分で半角キーを押したのを記録して再生してもおしてくれません。
KBD(VK_KANJI,CLICK,20)
というのはちゃんと記録されているみたいなのですが。
おしえてください。
名無しさん@お腹いっぱい。 [sage] 2010/05/07(金) 10:20:09 :ygJ5pRgT0

よくある質問です。
・大半の場合おいて出来ません。
・出来る可能性の中でも知識を持つ人が居ない事が多いです。


ネットゲームの場合は自動化を不正と考え
実行を阻止するプログラムが入っている場合が多数あります。
(阻止するプログラムが入っていないほうを探すのが大変なぐらいです)

そのほかのゲームでもタイトルが不明では返答のしようがありません。
また、タイトルが判っても、プレイしていない人が大半ですので
「UWSCの知識」+「そのゲームをプレイしている人」という…返答できる人が非常に限られた話です。
答が帰ってくることを期待しても望みは薄いでしょう。



//次のスレでは、ゲーム関係の質問はテンプレに入れてほしいなぁ…
名無しさん@お腹いっぱい。 [sage] 2010/05/07(金) 10:41:17 :R/Hz/ZTE0

> 「UWSCの知識」+「そのゲームをプレイしている人」という

「UWSCの知識」+「そのゲームをプレイしている人」+「チートしようとしてる人」だろう。

ゲームする奴が全てチートする気のある奴ってわけではないんだから。
名無しさん@お腹いっぱい。 [sage] 2010/05/07(金) 10:48:58 :YqDfIqgLP
395です。UWSCにある特定のバグのようなものがあるのかと思って聞きました。
AutoHotKeyでは半角キーにバインドするとバグるので(まぁあっちは海外製ソフトですが)。

じゃぁ質問を返させてください。
メモ帳の上で半角/全角キーを押す作業をUWSCにさせても
半角キー以外の作業だけせずに工程を終えてしまいます。

ほかのキーバインド関係のソフトは終了させています。日本語入力ソフトは
google日本語入力です。その設定で空白を半角キーに割り当ててみました。

あとチートのやってたわけじゃないです。うっとおしい設定を毎度させられるからです。
おしえていただけませんか?
名無しさん@お腹いっぱい。 [sage] 2010/05/07(金) 10:53:59 :ygJ5pRgT0

割と短い行で済むスクリプトでしょうから
>メモ帳の上で半角/全角キーを押す作業をUWSCにさせても
>半角キー以外の作業だけせずに工程を終えてしまいます。

を見せてみてはどうでしょうか。
名無しさん@お腹いっぱい。 [sage] 2010/05/07(金) 11:25:23 :YqDfIqgLP
これです。手入力で自分で一度したのを記録しました。

ACW(GETID("無題 - メモ帳","Notepad"),200,10,400,400,0)
MOUSEORG(GETID("無題 - メモ帳","Notepad"))
BTN(LEFT,CLICK,178,295,47)
KBD(VK_CONVERT,CLICK,40)
KBD(VK_S,DOWN,40)
KBD(VK_A,DOWN,40)
KBD(VK_S,UP,40)
KBD(VK_A,UP,31)
KBD(VK_G,DOWN,40)
KBD(VK_A,DOWN,40)
KBD(VK_G,UP,40)
KBD(VK_A,UP,40)
KBD(VK_KANJI,CLICK,20)
KBD(VK_S,CLICK,40)
KBD(VK_I,CLICK,10)
KBD(VK_M,DOWN,40)
KBD(VK_A,DOWN,40)
KBD(VK_M,UP,10)
KBD(VK_A,UP,40)
KBD(VK_N,CLICK,40)
KBD(VK_E,CLICK,40)
KBD(VK_RETURN,CLICK,40)


ちなみに半角キーはgoogle日本語入力の「変換前入力中-左の文字を削除」
に割り当てました。二回半角キーを押しました。(一回しか記録されていない?)
手入力では「しまね」の文字のみが残りますが、UWSCでは「さがしまね」
と前の言葉を削除してくれません。
AutoHotKeyではちゃんと入力して削除してくれました。
名無しさん@お腹いっぱい。 [sage] 2010/05/07(金) 11:42:26 :ygJ5pRgT0

こちらでは、半角キーの操作も忠実に実行されました。
…google日本語入力では在りませんが。

IMEをMS-IMEでやってみてはいかがでしょう。
それで出来たら、ゲームと同じでgoogle日本語入力を使っている人が来るまで待ってね。


あと記録に関してはヘルプをよく読むといいよ。取りこぼしが無くなる。
名無しさん@お腹いっぱい。 [sage] 2010/05/07(金) 11:55:01 :YqDfIqgLP

ありがとうございます。そうですか・・・。
ウチの環境に起因してるみたいですね。
googleIMEからAtokに変えることなんて確率高すぎだし、
そうなると半角キーが動作しないことは痛すぎる。
名無しさん@お腹いっぱい。 [sage] 2010/05/07(金) 12:01:01 :ygJ5pRgT0

まぁ、UWSCで出来るとは思うけど
現状の、制御をせずに操作記録をしてるだけじゃぁ辛いかな。

中に書いてあるスクリプトの意味合いを調べて
キーをどのウィンドウに送る、とかを考えて記述してみてくださいな。
名無しさん@お腹いっぱい。 [sage] 2010/05/07(金) 13:26:54 :nRrWodtj0

sendstr(id, "ほげほげ") とか iesetdata(id, "ほげほげ") じゃだめなん?
名無しさん@お腹いっぱい。 [sage] 2010/05/07(金) 13:46:28 :LRAtWfIh0

そのゲームがキーを操作できるか出来ないかは知らないけど、
漢字キーというのは対象アプリケーションがアクティブな状態でクリックしないと意味がありません。

ためしにメモ帳を使って文字の入力と漢字キーのクリックをセットでやってみてください。
文字が入力できないならアプリケーションがキー入力対象になってないから漢字のOnOffができていないと言うことになります。

アプリケーションはアクティブでもゲームは文字入力可能状態になっていないとだめですよね?
そこもちゃんと出来ているかが大事です。


・・・よく分かりません。
名無しさん@お腹いっぱい。 [sage] 2010/05/07(金) 13:59:02 :YqDfIqgLP

わたくし初心者なのでわかりません。調べます。
ただ極めて簡単な手入力なのに再現できないのがありえないと思ったのです。
しかも記録には半角キーを押すという記述があるのに。
こういうのが多発するんであれば手入力から記録するのはしんどいなと。
名無しさん@お腹いっぱい。 [sage] 2010/05/07(金) 14:30:07 :Os/9wnHl0

ネットゲームなんかだと
KBD(VK_KANJI,CLICK,20)
じゃ認識してくれないこと多いな

KBD(VK_KANJI,DOWN)
KBD(VK_KANJI,UP,30)

こういう風にすると認識するかもしれない
これでも認識しないときは30を50とかに変えると良いかも
名無しさん@お腹いっぱい。 [sage] 2010/05/07(金) 21:39:44 :YqDfIqgLP

僕の環境じゃ無理だったっす。手入力じゃできるのになぜ再現できん。
名無しさん@お腹いっぱい。 [sage] 2010/05/08(土) 02:25:23 :KCjmmf/Y0
2010/05/08 UWSC Ver4.6a、 Pro版と Free版をリリースしました。
名無しさん@お腹いっぱい。 [sage] 2010/05/08(土) 06:32:02 :JqIMMq5FP
昨日からさんざん書き込んでいる初心者ですが、Google日本語入力からATOKにしてみました。
そうするとメモ帳への半角/漢字キーの入力の再現ができました。
ただ、やはり3Dゲーム上での半角キーの入力の再現はやはりできませんでした。
しかしちょっとすっきりしました。
名無しさん@お腹いっぱい。 [sage] 2010/05/08(土) 11:18:11 :ASg7DSZb0
4.6aでやっとこchkimgのバグが修正されたか。
名無しさん@お腹いっぱい。 [sage] 2010/05/08(土) 11:33:41 :QYwcVRY00

どういうバグ?
俺はたまに repeat に入れたchkimgで止まることあるんだけど・・・
関係ないか?w
名無しさん@お腹いっぱい。 [sage] 2010/05/09(日) 00:22:33 :YB83BsnNP

仮想キーボードやらソフトウェアキーボードやらを使って間接的に入力するのは?
やった事ないから出来るかはわからないけど
名無しさん@お腹いっぱい。 [sage] 2010/05/09(日) 22:44:32 :wzyOTChL0
こんにちは。
先週初めて競艇場に行った女子大生です。
競艇場内ののトイレに入ってウンコをしようと思ったのですが、
「トイレットペーパー以外の物は流さないで下さい」
と張り紙がしてあったのでウンコをビニール袋に入れて持って帰りました。
非常に不便さを感じました。競艇場ではこうなんですか?
皆さんはどのようにしているのでしょうか?
参考に聞かせてくれませんか?
名無しさん@お腹いっぱい。 [sage] 2010/05/10(月) 00:35:50 :LYMCbv6H0

うんこは食べてしまえば荷物にならなくていいです。




と言うのは冗談で、ウンコを流してダメなトイレはないので素直に流してください。






いつものコピペだけど念のため。
名無しさん@お腹いっぱい。 [sage] 2010/05/10(月) 11:09:35 :xjPPSIWT0
トイレで流れない極太ウンコをしたことを思い出した
名無しさん@お腹いっぱい。 [sage] 2010/05/11(火) 13:33:04 :tljPtQDt0
print と UWSC本体のログの書き込み時間の違いってコントロール出来るんでしょうか?
print実行した直後にログも更新されてるといいんですが…
名無しさん@お腹いっぱい。 [sage] 2010/05/11(火) 13:59:34 :A7VZNycf0

それってログファイルを開いて最後の書き込みを監視して動くとか?
書き込みするファイルを常に開いて中身をチェックするのはあんまりよくないから、
クリップボードとか環境変数とか使ったほうがいいと思うんだけど。
名無しさん@お腹いっぱい。 [sage] 2010/05/11(火) 18:18:28 :tljPtQDt0
基本的に単に見るだけです。
問題があったらUWSC自体を止めるのが目的。

今スクリプトを書いてる最中で何度もテストしてるんですが、doscmdの実行中は
UWSC自体が応答無しになっていてprintのウィンドウを大きくできない状態になります。
UWSCを使って動画のエンコード等しているんで9割以上の時間応答無しになったままです。
一度doscmdが終わってUWSCに実行が戻ってくる瞬間はprintのウィンドウが更新されるんですが
ログの方は更新されない。

関数の中だと書き込まれないのも違うし、時間やある一定量書き込んだらというのも違うし…
ログじゃなくて、FOPEN-FCLOSEでやった方がいいんでしょうかね。
名無しさん@お腹いっぱい。 [sage] 2010/05/12(水) 11:07:41 :a5vstssbP
教えてください。getIDでタイトルなしでクラス名のみでIDを取得することはできますか?
自分がIDがほしいアプリのウインドウは毎回タイトルを変えたり、空白だったりするので。
名無しさん@お腹いっぱい。 [sage] 2010/05/12(水) 11:19:12 :8thtGBLI0
getID("",”クラス名”)
でやってみそ
名無しさん@お腹いっぱい。 [sage] 2010/05/12(水) 11:40:57 :a5vstssbP
ありがとうございます。成功シマシタ。
id = getid("", "MozillaUIWindowClass")
のクラス名の前に置くスペースの位置でつまづいていました。

ど素人にイチからちゃんと学ぶことができる筋道ってありますか?
windowsマクロテクニックの本は有効なのでしょうか?買って損したみたいな
感想もみたりするので・・・。

の上の方の初歩の初歩のサイトを2日かけて読みました。
あとはヘルプみながらサンプルスクリプトを弄るしかないのでしょうか?
のようなサイトでずっと続きが読みたかった。
名無しさん@お腹いっぱい。 [sage] 2010/05/12(水) 12:22:53 :henq843t0
UWSCの解説本なんかあるのかよ…

UWSCは基本だけ押さえておいて、あとはWSH関連をやったほうがいいと思うぞ。
WSH等コンポーネントを呼び出して使うことが多いから。

UWSCのヘルプとWSHのヘルプ
( ttp://www.microsoft.com/downloads/details.aspx?displaylang=ja&FamilyID=e74494d3-c4e1-4e18-9c6c-0ea28c9a5d9d のscd56jp.exe)
だけで結構なんとかなる。
名無しさん@お腹いっぱい。 [sage] 2010/05/13(木) 12:59:27 :8TRBb1jz0
去年は残念ながら失敗した
424 [sage] 2010/05/13(木) 13:00:08 :8TRBb1jz0
ゴバ━━━━(゚∀゚)━━━━ク!!!!
名無しさん@お腹いっぱい。 [] 2010/05/14(金) 12:27:28 :ps7Xn0cn0
すみません、あるネットゲームにおいて2つのパソコンを使い
自動で対戦したいのですが、かんじんなマクロ言語をまったく知りません;;
なので、知識のある方にお願いして(PC詳しい友人無し)
画像認識を含むマクロスクリプトを作って頂きたいのですが、
そういた類の者をオファーできる会社等はあるのでしょうか?
勿論無料とはいいません
よろしくお願い致します!
名無しさん@お腹いっぱい。 [sage] 2010/05/14(金) 12:28:58 :hrZJMe7r0

ゲームによるけど?
タイトル言わないと来るものも来ないよ?
名無しさん@お腹いっぱい。 [] 2010/05/14(金) 12:41:53 :ps7Xn0cn0

ファミスタオンラインという恐らくネットゲームでは単純な方
のゲームだと思います
名無しさん@お腹いっぱい。 [sage] 2010/05/14(金) 12:53:41 :hrZJMe7r0

で、いくら出せるんだ?
名無しさん@お腹いっぱい。 [] 2010/05/14(金) 12:56:18 :ps7Xn0cn0

3万くらいじゃ無理でしょうかね?
名無しさん@お腹いっぱい。 [sage] 2010/05/14(金) 19:24:06 :rBaz5SrhP
バルーンメッセージを取得してテキストに出力したいのですが、取得方法がよくわかりません
出来れば特定ソフトのみのバルーンを取得したいのですが、なにか良い方法はありませんでしょうか
外部ソフトを使うなどでも全然おkなんですが・・・
名無しさん@お腹いっぱい。 [sage] 2010/05/14(金) 19:50:47 :JLo169nCP

情報料として8万円でいかがでしょうか?
業者に調べてもらうとなれば20万はするでしょう。

ご検討ください。
名無しさん@お腹いっぱい。 [sage] 2010/05/14(金) 20:18:15 :+o0AXIKx0
何勘違いしてるの?
2ちゃんはそういうところじゃないよ。
情報出し合う掲示板だよ。

商売したいなら出て行くか、
2ちゃんの広告枠買いなさい。
名無しさん@お腹いっぱい。 [sage] 2010/05/14(金) 21:41:20 :/UXjpTM40
は何を考えて言っているんだ・・?
426に言うならわかるけども
名無しさん@お腹いっぱい。 [] 2010/05/14(金) 21:48:11 :wySSdIwP0
uwscでできることは基本的にWSHでも出来ますか?
名無しさん@お腹いっぱい。 [sage] 2010/05/14(金) 22:00:32 :MQnw18qw0

何細かいこと言ってるんだよ。
ネトゲのアイテムやツールやキャラなどを2ちゃんねるで売買するのは普通のことだよ。
2ちゃんねるで車の売買とかもやってんだぜ?

車どなたか譲ってください。
ttp://namidame.2ch.net/test/read.cgi/car/1273073007/


プレイ動画をちょこっと見たけど、ちょっと難しいね。
・・・仮にボールのビットマップが固定だとすれば座標サーチでいけると思うけど、・・・
あ、変化無しでただ投げるだけ打つだけならもうちょっと簡単かも。
投げる操作をすると同時に、投げましたよともう一台のPCにメッセージを送る。
打つ方は画面は見ずにメッセージを受け取ったタイミングで打つ。
それでもキャラごとにスピードが違うからなあ・・・
通信回線によっても、バッター側に届くタイミングがずれるし・・・
名無しさん@お腹いっぱい。 [] 2010/05/14(金) 23:04:27 :ps7Xn0cn0


アドバイスありがとうございます
こんなこと言っては失礼ですが、違うんです><試合中はもうD連打だけでいいんです><
打つタイミングとか投げるタイミングとかもランダムで...
自分が行って貰いたいのはポイントを簡単に纏めると
試合開始する→ロビーから出る→また試合開始する
この一連の作業をUWSCのマクロスクリプトで行いたいだけなのですが><
まったくPC知識もないもので..

している方に聞けば、マクロ知識と画像認識ソフトがいるみたなのですが
やっぱり人に頼むのは無理ですよね><
名無しさん@お腹いっぱい。 [sage] 2010/05/14(金) 23:10:48 :t4ypZjEx0

それなら簡単そうだから勉強する意味でも自分で組んでみたらどう?
わからなかったらその都度ここで聞けばいいし
とりあえず流れ的には
1.PC1で部屋を作る
2.PC2で1で作った部屋に入る
3.試合を開始する
4.PC1、PC2共にD連打する
5.試合が終わりロビーに出る
6.1へ戻る
でいいのかな?
画像判定は試合中なのかロビーにいるのかを判定する時に使うくらいじゃないかな
そういうのはUWSCで全部できちゃう
名無しさん@お腹いっぱい。 [] 2010/05/14(金) 23:39:28 :ps7Xn0cn0

さすが頭のいい方は仕組みの理解が早いですね;;
おっしゃるとうりです
上級者の方にはやっぱり簡単なプログラミングなんですね;;
マクロ知識まったく皆無で半年はかかりそうですが、自分で試す事
にしてみます!
この度はどうもありがとうございました!!
名無しさん@お腹いっぱい。 [sage] 2010/05/15(土) 16:35:52 :qdoKfTAuP
このスレ終わってんな
名無しさん@お腹いっぱい。 [sage] 2010/05/15(土) 20:10:08 :gQIYbWRy0

基本的にWSHはCOM経由で操作するために設計されてるものなので低レベル入出力はほぼできない
名無しさん@お腹いっぱい。 [sage] 2010/05/15(土) 22:17:03 :g7rDCx6T0
ctrlwinでウィンドウをTOPMOSTとNOTOPMOSTでトグルしたいんだけど
TOPMOSTになってるウィンドウかどうかというのを知るにはどうすればいい?
名無しさん@お腹いっぱい。 [sage] 2010/05/16(日) 03:08:18 :QQZQPNYAP
キッチンのカウントダウンタイマーみたいな効果を
UWSCで実現したいのです。ぐぐって見つけたのですが、
ttp://www3.bigcosmic.com/board/s/board.cgi?id=umiumi&start=20&log=ON&cnt=16
このページの一番上の書き込みをそのままコピペして
新しく作った.UWSファイルにペーストしても
まったく動いてくれません。どう編集すれば
動いてくれますか?おしえてください。
(TimeWaitみたいな関数ないですよね?ヘルプにのってないし)
名無しさん@お腹いっぱい。 [sage] 2010/05/16(日) 03:37:10 :xeTkbS2L0

TOPMOSTにしてないやつはなってないはずなので、
自分でどっちに制御したかを変数で持ってればいいんじゃね?


スクリプトは
Function TimeWait(time_remain, RepeatTime)
から始まっていますよね。
これは自作関数を定義するものですが、どこかから呼び出される必要があります。

具体的には、ファイルの先頭から
TimeWait( 60, 3 )
Function TimeWait(time_remain, RepeatTime)
・・・(省略)
Fend
というように、TimeWait()を呼び出すコードを先に記述しなければなりません。
具体的にどんな引数を渡すべきなのかとかは、めんどくさいので見てません。

> TimeWaitみたいな関数ないですよね?
何もしないで休んでいる組み込み関数ならあります。
sleep() です。
でも、それでは何が起こっているかわからないのでいろいろするわけですね。
名無しさん@お腹いっぱい。 [sage] 2010/05/16(日) 03:53:09 :QQZQPNYAP

ありがとうございます。ためになります。
ということは、投稿されたものよりも前に
たくさんのコードがあってそれが
消されてるということなのかな。

自作関数っていうぐらいだから、それを定義する
コードがたくさん必要なんでしょうね。
ただ1〜2行ぐらい変数を定義してやればいいとぐらいにしか
思ってませんでした。

分ー秒の単位でカウントダウンの経過がわかる
スクリプトを探していたのですが先は長そうですね。
名無しさん@お腹いっぱい。 [sage] 2010/05/16(日) 06:56:22 :xeTkbS2L0

ラーメンタイマー程度で見た目も精度もいらないんなら簡単に記述できるんですけど、
やっぱ画面とかあったほうがいいだろうし、そうすると有償版使うかHTMLのスクリプト使うか、
もしくはHSPなどを使ったほうがいいかもしれません。

sleep()を使った3分タイマーを作ってみました。
まあ、正確な時間を刻まないと生理的に受け付けないとは思いますが・・・単純なSleep()のループよりは正確です。

利点は・・・スクリプトなのにCPU負荷が小さいこと、なのに(多分)正確なタイマー。
欠点は・・・3分でもカウント(表示)が数秒ずれる。負荷を100%で動かすと表示が10秒単位でずれてしまう。
      カウントのスリープ時間を自分で微調整する必要があり、結果がまちまちなこと。
      ま、Gettime()のループにすれば正確になるんですが。・・・やっぱそっちでやった方がシンプルで分かりやすいかな?

// 3分タイマー
TIME = 60*3 // タイマーの時間
PUBLIC start_t = gettime()
print "start"
thread count(TIME)
sleep(TIME)
print "sleeptime:" + (gettime() - start_t)
msgbox("3分経ちました")

//およその残り時間を表示(表示のみ)
Procedure count(times)
 for i = 1 to times
  fukidasi(times - i)
  // sleep(0.966) // +5秒
  // sleep(0.9) // -3秒
  sleep(0.93)
 next
  print "counttime:" + (gettime() - start_t)
Fend
名無しさん@お腹いっぱい。 [sage] 2010/05/16(日) 07:55:08 :QQZQPNYAP

ありがとうございました。
使わせていただきます。時間は適当でいいです。CPU負荷が小さいほうが
利点あります。
sleepの時間ってずれるんですね。はじめてしった。
いままで単純なsleep(1)で通してたんですが。
見てもわからないところばかりですが、このコードみて調べます。
ありがとうございました。
名無しさん@お腹いっぱい。 [sage] 2010/05/16(日) 10:42:58 :ieNwpaRT0

> TOPMOSTにしてないやつはなってないはずなので、
> 自分でどっちに制御したかを変数で持ってればいいんじゃね?

いや単にウィンドウの状態を変えるだけのスクリプトなんで、
TOPMOSTにした後は終了したいんですよ。
INIでも作ればいいのかもしれないですが、もっと直接的に取得する方法って無いもんかと。

ついでに言えば、ウィンドウのZ順?も取得・変更できたら嬉しい。
名無しさん@お腹いっぱい。 [sage] 2010/05/16(日) 10:46:32 :WMf1B8jLP
sleepがズレるわけじゃなくてsleep以外の処理でズレるんだよ

for文に使われる比較処理だってCPU使うし、もちろんsleepをコールする処理自身もCPU使う
だからCPUの負荷だけではなくクロック数やバス幅に影響してしまう
名無しさん@お腹いっぱい。 [sage] 2010/05/16(日) 10:57:04 :WMf1B8jLP

uwsc自体ではZオーダー提供していないんだから
自分でAPIを呼び出すしかないんじゃね?
名無しさん@お腹いっぱい。 [sage] 2010/05/17(月) 01:50:05 :i4pMt12q0

もう見てないかもしれんけど
マド作るなら今よりロビー等の変更が来てからの方がいいよ
画像の用意とか二度手間になる。
まじでやりたいなら教えてやるよ。
名無しさん@お腹いっぱい。 [sage] 2010/05/17(月) 02:14:59 :nvgS/jkJ0

マド死ねよ。
名無しさん@お腹いっぱい。 [sage] 2010/05/23(日) 15:52:15 :O7k5xAup0
uwscって意外と時間指定してボタンを押せとか
やるの難しいと思った
知り合いの家に行く間に、何回か録画ボタンを押して欲しかったんだが
プログラム書こうとして、全く歯が立たなかった
タイマー機能があるのを思い出して、事なきを得たが1時間半くらい悩んだんだよなw
と、思って今やったら、案外簡単に時間って取得出来るのね
あとはこれを上手い具合に変数に格納して、設定した時間と比較して同じになったら
〜しろって風にすれば、タイマー一丁上がりか
変数に155958みたいに格納出来れば楽そうなんだが
あー、A=15*10000+59*100+58でいいのか、簡単じゃん(^^;
俺アホス
名無しさん@お腹いっぱい。 [sage] 2010/05/23(日) 18:51:26 :yypYUx/y0

そのやり方もまだまだ。
なんとヘルプファイルにもっと良い時間の取得の方法が書いてあるんだぜw

…まぁ、変数をどういう使い方にするか、にもよるんだがな。
名無しさん@お腹いっぱい。 [sage] 2010/05/24(月) 09:22:00 :cYdOlD8C0
uwscがスクリプトを現在実行中かどうか確かめる命令はありませんか?
名無しさん@お腹いっぱい。 [sage] 2010/05/24(月) 18:34:15 :30r1mvWj0

数値を文字列として連結したければ
a=123
b=456
c=""+a+b
みたいにやればよし。c=a+""+bでもいい

> あー、A=15*10000+59*100+58でいいのか、簡単じゃん(^^;

これだったらA=""+15+59+58
名無しさん@お腹いっぱい。 [sage] 2010/05/25(火) 19:52:53 :Hp1Js47E0
テキストエディタでスクリプト書こうかなと思って先ほどフリー版uwscを導入したのですが
保存するときの文字コードや改行コードについてヘルプに書いてないのですが特に制限は無いですか?
名無しさん@お腹いっぱい。 [sage] 2010/05/25(火) 21:12:54 :HDkoFkpY0

書いてなくて安全策をとるなら普通Windows版アプリではShift-JIS+CRLFにしない?
名無しさん@お腹いっぱい。 [sage] 2010/05/25(火) 22:29:28 :Hp1Js47E0
windowsだからShift-JIS+CRLFとは限らないのにw
名無しさん@お腹いっぱい。 [sage] 2010/05/25(火) 22:46:22 :BuCIUw3E0
やってみればわかることを聞く人には向いてませんよ。
名無しさん@お腹いっぱい。 [sage] 2010/05/25(火) 23:23:24 :Hp1Js47E0

その程度の知識がないならわざわざレスしなくて結構・・・とだけレスしとく
名無しさん@お腹いっぱい。 [sage] 2010/05/25(火) 23:24:48 :Hp1Js47E0
あ、そうそう一言伝えますね
winだからsjisと決め付けてかかるのはやめたほうがいいですよ
名無しさん@お腹いっぱい。 [sage] 2010/05/25(火) 23:42:12 :PWagYqdo0
sleep(2)
sleep(2)



sleep(4)

は同じことですか?

名無しさん@お腹いっぱい。 [sage] 2010/05/26(水) 00:45:15 :tqM7XX7P0

タスクマネージャにuwsc.exeがあれば実行中かも。
メイン画面も1件としてリストに出てくるけど、見た目で実行中か分かるし。
コマンドはqprocess



試してみたけど、スクリプトの保存形式はunicodeでも動くけど、コードの扱いはシフトJISだね。

DEF_DLL MessageBoxA(HWND,pchar, pchar, DWORD): Long: user32.DLL
DEF_DLL MessageBoxW(HWND,pchar, pchar, DWORD): Long: user32.DLL
MessageBoxAなら保存形式に関係なくテキストが表示できるけど、
MessageBoxWだと文字化け。



微妙に違う。
sleep(2)×2の方がCPUを消費するし、時間もかかる。
名無しさん@お腹いっぱい。 [sage] 2010/05/26(水) 01:15:34 :HAnL27G70
なんで教えを乞う立場の者が煽れるんだろう。
基本的に人間ができてないな。
名無しさん@お腹いっぱい。 [sage] 2010/05/26(水) 04:40:14 :7RyXzF0VP
人間的云々言う場所じゃないだろ
嫌ならレスするなカス
名無しさん@お腹いっぱい。 [sage] 2010/05/26(水) 07:11:30 :L/ZmdYFd0
レスしているのは人工知能だよ
名無しさん@お腹いっぱい。 [sage] 2010/05/26(水) 09:36:14 :bXusYbn00
じゃあ俺も人口知能!
名無しさん@お腹いっぱい。 [sage] 2010/05/26(水) 15:21:35 :Ce2KrQJg0
このスレの人口分布

回答者・・・・・・・・・・・・・・・・・・・ 1%
質問者・・・・・・・・・・・・・・・・・・・10%
態度がでかい自称回答者・・・89%
名無しさん@お腹いっぱい。 [sage] 2010/05/26(水) 18:00:04 :DoB0DBXA0
なぜ態度のでかい質問者がないんだろう
名無しさん@お腹いっぱい。 [sage] 2010/05/26(水) 18:03:02 :Y3WtWtht0
実際はレベルの低い回答者が原因で荒れるからだろ
名無しさん@お腹いっぱい。 [sage] 2010/05/26(水) 22:45:02 :HAnL27G70

悔しそうだなwカスw
名無しさん@お腹いっぱい。 [] 2010/05/28(金) 06:10:20 :6og4XoNt0
ついでに書いておくと、Pythonの場合は保存形式の文字コードがスクリプトにも反映される。
だから大変。
Pythonでも新しめのバージョンでは、リテラル文字指定でユニコードに指定できたりする。



それよりこれ。
for i = 1 to 33000
 navigate(url)
 sleep(1)
next
この程度のスクリプトで逮捕ですよ。

【社会】 図書館HPにアクセス3万3千回で、会社社長逮捕。1秒に1回アクセス繰り返すプログラム作る…愛知
ttp://tsushima.2ch.net/test/read.cgi/newsplus/1274928007/
名無しさん@お腹いっぱい。 [sage] 2010/05/28(金) 11:11:33 :kipVwqRc0
それは手動でやってても同じだわな。
問題なのはスクリプトじゃなくて意図。
名無しさん@お腹いっぱい。 [sage] 2010/05/28(金) 12:08:01 :XdAWpU3T0
>図書館のホームページに集中的にアクセスし、閲覧しにくくしたとして、 逮捕・・・

1秒間に3万3千回アクセスかと思ったら、1秒間に1回かよ?
逆に1秒間に1回のアクセスで重くなるHPなんて、どうやったら作れるんだよ?
名無しさん@お腹いっぱい。 [sage] 2010/05/28(金) 12:10:35 :N8m5GgbM0

お前素人だろ
名無しさん@お腹いっぱい。 [sage] 2010/05/28(金) 13:27:01 :kipVwqRc0

日本のお役所仕事を舐めちゃいけない
名無しさん@お腹いっぱい。 [sage] 2010/05/28(金) 18:03:34 :a1h0S9px0

きっと鯖が初代PC98のまま更新できなかったりするとそうなるんじゃね?
名無しさん@お腹いっぱい。 [] 2010/06/01(火) 04:12:46 :6RwPsnvD0
343 名前:名無しさん@十周年[sage] 投稿日:2010/06/01(火) 01:25:49 ID:SDO0GhkS0
 楽天プライズでUWSCのスクリプトで24時間スロット廻し続けてたら対策された。
 何時間も遊んでたら「遊びすぎじゃ、休憩せい」って弾かれる様になったのは
 俺のせい。 楽天グッズとかショボイ景品が途中で出るようになったのも俺のせいかも。

 ちなみに、ゴールドは長時間遊ぶほどに出玉が悪くなる仕様だと統計とれた。
名無しさん@お腹いっぱい。 [sage] 2010/06/01(火) 09:26:32 :OoGhQHoP0
20年以上動いてる鯖があるってのか
名無しさん@お腹いっぱい。 [] 2010/06/01(火) 09:43:30 :6RwPsnvD0
30年前のだって現役です

【大分】 「『ょ』入力できぬ」代わりに「き『よ』う子」と入力した健康保険証や年金手帳などを発行 年金事務所が謝罪
ttp://tsushima.2ch.net/test/read.cgi/newsplus/1275304190/
>  同事務所が調べたところ、使用しているシステム(国が1980年に導入)は通常のパソコンとは違い、
> 「ょ」「っ」などは特殊な入力方法のため、職員が知らなかったらしい。
家電.com [] 2010/06/01(火) 09:47:46 :Cz2396tn0
家電.com
HP
ttp://Kadencom.chochouo.com

名無しさん@お腹いっぱい。 [sage] 2010/06/04(金) 23:40:40 :iS3gjDV40
2chなどでリンクを踏んだら直接リンク先に行くのではなく
リンク確認の画面に一度飛ばされるのですが、
その画面になったらすぐに次のリンクをクリックする
スクリプトを書きたいのです。

UWSCの誘惑にクリップボードのURLをブラウザに渡すスクリプトあるけど、
そうじゃない形で常に監視しておく形で次々にリンクを踏む形を
取りたいのです。

だれか書いてくださいませんか? お願いします。
初心者ながら書いているのですが
エラーがでてしまいます。
名無しさん@お腹いっぱい。 [sage] 2010/06/05(土) 00:04:07 :iS3gjDV40
こんなんじゃ、まだまだ遠いですか?
エラーでてとまっちゃいます

ctrlwin(getid("","TAppication"),activate)
STOPFORM(TRUE) // ストップボタン表示
ACW(0, 1150, 850)

IE = CREATEOLEOBJ("InternetExplorer.Application")
IE.visible = true
X=0
repeat

IEid = GETID("Internet Explorer")

wks = GETSTR(IEid, 0, STR_STATIC )  // タイトルをGET


IFB POS("リンク確認", wks) > 0 THEN
MsgBox("発見")
sleep(0.5)
UNTIL !IE.busy AND IE.readystate = 4

ret = IELINK(IE,"上記のページにジャンプしようとしています。問題ない場合はクリックしてください")
x=x+1

ELSE
 sleep(1)

ENDIF
until x <> 30
名無しさん@お腹いっぱい。 [sage] 2010/06/05(土) 01:01:23 :7xrzyNYi0
敢えて言おう。専ブラ使え。
名無しさん@お腹いっぱい。 [sage] 2010/06/05(土) 01:32:53 :sSGL2jFW0
初歩的な質問ですみません。
for i= 1 to 100
で回している間、実行したくない i に対して
if i=5 or i=10 or i=32 or i=56 then ・・・
の様に書いているのですが、 i= が多くなると書くのが面倒くさいのでもう少しまとめて
書く方法はあるのでしょうか?例えば
i=(5,10,32,56)
みたいに・・。これではダメだとは思うのですが、他の書き方で。
どなたかお願いします。
名無しさん@お腹いっぱい。 [sage] 2010/06/05(土) 03:01:33 :7xrzyNYi0
実行したくない数に法則性があるならそれを式にする。
単なるリストならそれを置換して作ってしまえば。

置換したくない番号の配列作っておいて、iをそれを比較するとか。

for i=0 to 10
if isNG(i) then print "NG:"+i
next
function isNG(num)
dim ng[]=5,10,32,56
for i=0 to resize(ng)-1
ifb num=ng[i]
result = 1
exit
endif
next
result = 0
fend
名無しさん@お腹いっぱい。 [sage] 2010/06/05(土) 05:19:02 :XHbnzUaJ0

基本的にない。

C言語ならこう書けるけど
switch{
 case 5:
 case 10:
 case 32:
 case 56:
  コード;
  break;
 default:
}

でも、ORoperation()っていう関数を作ればそういう書き方は可能。
if ORoperation( i, 5, 10, 32, 56 ) then
って感じで。
まあ、数値の奴は配列に入れて渡した方がいいんだけど。
if ORoperation( i, Array ) then

function ORoperation( a, x1=0, x2=0, x3=0, x4=0, x5=0, x6=0 )
 dim Array[] = x1, x2, x3, x4, x5, x6, 0 // 0はループ脱出条件
 result = true
 i = 0
 while Array[i]
  if i = Array[i] then exit
  i = i + 1
 wend
 result = false
fend
動くかどうかは知らない。
名無しさん@お腹いっぱい。 [] 2010/06/05(土) 05:37:27 :XHbnzUaJ0

全ての場合にそういう共通処理が考えられるのなら、配列パラメタを使うべきかも

dim Pattern[101] // ="a","x","b","x","c"・・って感じで並べてもいい
Pattern[5] = "a" // 数値の方が扱いやすいが、とりあえず文字の方が分かりやすいかと。
Pattern[10] = Pattern[5] // 都度代入は変更がめんどいので
Pattern[32] = Pattern[5]
Pattern[56] = Pattern[5]

if "a" = Pattern[i] then
もしくは
select Pattern[i]
 case "a"
  コード
 case "b"
 case "c"
 default
  print "パターンなし"
selend
名無しさん@お腹いっぱい。 [sage] 2010/06/05(土) 08:54:06 :BLq+NU9U0
初歩的かもしれませんが自分ではちょっとできないので質問させていただきます。
Aという画像が始めない場合はそのままで、もし見つかったら次に画像Aが消えたときに各処理をしていくというものとして下のようなものを書きました。
while true
 ifb chkimg(A)       ・・・1
   while true
     ifb chkimg(A)  ・・・2
   else
     処理
   endif
   wend
 else
   sleep(1)
 endif
wend
実際に動かしてみたことろ処理が終わった状態でもずっと2のifbを続けます
そこでこのスクリプトに「特定のキーを押した場合1のループに戻る」といった機能をつけようと思ったのですが、
どこにどのような命令を挿し込めばいいでしょうか。
一応2のifbのあとにif GETKEYSTATE(VK_ESC) then exitを入れてみたのですがどうにも反応していないようです。
稚拙な文にてわからづらいところ多々あるかと思いますがよろしくお願いします。
名無しさん@お腹いっぱい。 [sage] 2010/06/05(土) 13:14:44 :hXFmkiOc0

処理が終わったらループから抜けるのを忘れてるんじゃない?
2 の IFB ブロックの『処理』で最後に BREAK すれば一つ上のループに戻るよ
名無しさん@お腹いっぱい。 [sage] 2010/06/05(土) 15:14:33 :XHbnzUaJ0

elseの処理に数秒以上かかるようなら、キー入力を拾えてないかも。
キーをクリックしてから1秒以上経過してからGETKEYSTATEを動かしても、
キー情報は消えてるっぽいから、押されてないことになってるんだよ。

ESCを連打していればそのうち抜けると思うけど。
名無しさん@お腹いっぱい。 [sage] 2010/06/05(土) 18:08:16 :7xrzyNYi0

 while true
  ifb chkimg(A)  ・・・2
  else
   処理
  endif
 wend

2の結果にかかわらずずっとwhileループの中。
画像Aが無くなった後ずっと「処理」を続ける。
その間2はずっとfalseなんでifの直後つまりifがtrueの時実行される場所に
getkeystateを置いても実行されない。
入れるなら「処理」の直前。

while true
 ifb chkimg(A)
  while chkimg(A)
  wend
  処理
 endif
wend

ていうかこんなんでいいんじゃないの?
sleep無いけど。
名無しさん@お腹いっぱい。 [sage] 2010/06/08(火) 20:48:06 :/dGW5DYk0
斧戦争ツール作れよカスども
名無しさん@お腹いっぱい。 [sage] 2010/06/10(木) 23:23:04 :t9RcVFEr0
スクリプトを指定した時間だけ動かすという方法はあるのでしょうか?
例えばスクリプトを走らせてから30分間とかです。
名無しさん@お腹いっぱい。 [sage] 2010/06/11(金) 00:39:39 :aLuYGiLxP
これはひどい
名無しさん@お腹いっぱい。 [sage] 2010/06/11(金) 04:58:24 :l1wBl/570

UWSCはメインが終了したら、他のスレッドが動いていても終了します。

だから、こんな感じでやれば30分きっかりで終了できますが、当然処理は無条件に中断します。
-- sample.uws ここから--
thread func()
sleep(30*60)
exitexit // 不要だが、ここで終了と明示する意味で。

proceduer func()
 // 基本的にこちらですべて処理する
 while true
  sleep(1)
 wend
fend
-- sample.uws ここまで--

中途半端に終了したくない場合、sleep(30*60)の代わりにGettimeのループで
今はダメっていうフラグを監視すればいい
f = false // 処理中フラグ。処理中はtrueがセットされる
t = GetTime()
while GetTime < t + 30*60
 repeat
  sleep(1)
 until ! f
wend
ちなみに、この場合はrepeatじゃないといけない。
そうしないとsleep()してる間にフラグがセットされる可能性が高いから。
もっと確実にやるなら終了するぞっていうフラグも立てるべきかな。
名無しさん@お腹いっぱい。 [sage] 2010/06/12(土) 13:07:37 :1g6XM8MfP
あるウィンドウの子ウィンドウにドラッグドロップしたいんですが、子ウィンドウのIDはどうやって取得すればいいんでしょうか?
名無しさん@お腹いっぱい。 [sage] 2010/06/12(土) 13:34:30 :e7naQunBP
// 指定ウィンドウの ID を返す
戻値 = GETID( タイトル, [クラス名, 待ち時間秒, MDI子タイトル] )
引数
 タイトル: 識別したいウィンドウのタイトル (タイトルの一部分だけでもOK)
 クラス名: 区別に必要でなければ省略して構いません (前方一致でのみ部分指定可)
 待ち時間秒: 確認できるまで指定された秒数待ちます (0.01〜)
         0: 0.1〜10秒まで状況や負荷により自動判断 (デフォルト)
        -1: 無期限待ち
 MDI子タイトル: MDIウィンドウ中の子ウィンドウタイトル
498 [sage] 2010/06/12(土) 16:28:35 :1g6XM8MfP
そうではなくて、子ウィンドウのタイトルが分からない場合はどうすれば・・・
横レス [sage] 2010/06/12(土) 17:52:51 :o26Fnx3o0

>タイトルの一部分だけでもOK
これでだめならGETALLWINで存在する全ウインドウのIDとってから消去法
またはなんらかのWIN32API(知らないけど探せばあるんじゃね?)でハンドル取得してHNDTOID
名無しさん@お腹いっぱい。 [sage] 2010/06/12(土) 18:45:49 :5Y2bRnnp0
参考になるか分からんが、ぴたすちおを使えば子ウィンドウ情報がみえる
名無しさん@お腹いっぱい。 [sage] 2010/06/12(土) 20:19:26 :e7naQunBP
//こういう事?
def_dll GetWindow(hWnd,long):long:user32.dll
GW_HWNDNEXT = 2
GW_CHILD = 5

uCmd = GW_CHILD

p_id = getid("親")

while true
  c_h = GetWindow(idtohnd(p_id), uCmd)
  if c_h = 0 then break
  
  p_id = hndtoid(c_h)
  uCmd = GW_HWNDNEXT
  
  msgbox( status(p_id, ST_TITLE) )
wend
名無しさん@お腹いっぱい。 [sage] 2010/06/13(日) 08:48:23 :c9kd9eBN0

うんこ発見装置を授けよう


うんこ ="1 5 10 18 25 37 56 58 68 74 81 97 99"
for i = 1 to 100
if pos(i,うんこ) > 0 then print i+"に うんこ発見"
next
名無しさん@お腹いっぱい。 [sage] 2010/06/13(日) 09:55:53 :fmHGMG6r0

それ、致命的に駄目だろw
名無しさん@お腹いっぱい。 [sage] 2010/06/13(日) 11:23:05 :c9kd9eBN0

=0 に変更すれば処理したくないiの条件になるが何がダメなんだ?
理由を書いてくれ
名無しさん@お腹いっぱい。 [sage] 2010/06/13(日) 11:47:08 :o9NSeFNt0

自分で書いたのにためしに動作させてないのか?
一回動作させて、プリントログよく見てみろよ。1〜9まで全部条件に引っかかってるだろ。
名無しさん@お腹いっぱい。 [sage] 2010/06/13(日) 12:05:28 :86pvNGkL0
簡単な方法として、正規表現使えるようにすればいけるな
名無しさん@お腹いっぱい。 [sage] 2010/06/13(日) 12:07:17 :86pvNGkL0
ほかには、文字の前後にゴミつけて区切りをはっきりさせればいける
名無しさん@お腹いっぱい。 [sage] 2010/06/13(日) 15:49:17 :c9kd9eBN0
そうだったすっかりわすれてた悪いな
これでいけるだろ

うんこ =" 1 5 10 18 25 37 56 58 68 74 81 97 99 "

for i = 1 to 100
if pos(" "+i+" ",うんこ) > 0 then print i+"に うんこ発見"
next
名無しさん@お腹いっぱい。 [sage] 2010/06/13(日) 16:31:53 :lV2bpcq40
TOKEN() と連想配列でやってみた

DIM うんこ = "1 5 10 18 25 37 56 58 68 74 81 97 99"

HASHTBL hash
DIM str = うんこ

WHILE LENGTH(str)
  hash[TOKEN(" ", str, TRUE)] = TRUE
WEND

DIM i

FOR i=1 TO 100
  IF hash[i] THEN PRINT i+"に うんこ発見"
NEXT
名無しさん@お腹いっぱい。 [sage] 2010/06/13(日) 18:09:26 :Q8xDlz5x0
なるほど。
ハッシュテーブルならパターンが2次元配列で大量にあったとしてもすぐに発見できるね。
名無しさん@お腹いっぱい。 [] 2010/06/13(日) 18:28:57 :M6ZVIcE70
UWSCを使っていて、パスが通っていないのが使いにくい。
CALL文や、ライブラリファイルを別フォルダにした場合、等。

ディレクトリ検索と、よく使うファイルのパスを登録したファイルとそれを使うスクリプトを作って、
CALLやいくつかの変数(プログラムファイル名等)はそれを経由するようにするとか
出来ないことはないけど(CALLとか作る)、
シンプルとはいえ、結構素人が作っていいのか本格的な感じになる。

みなさんはどうしているの? ひょっとしてどなたかが作ったのがありますか?
513 [] 2010/06/13(日) 18:31:58 :M6ZVIcE70

すいません。誤記。
× (CALLとか作る)
○ (CALL2とか作る)

CALL2みたいな新しいprocedureを作ってそこからCALLを呼ぶ、という意味にしたかった。。。
名無しさん@お腹いっぱい。 [sage] 2010/06/13(日) 21:06:35 :E/dbXkmj0

変数strの参照部全部変数うんこだろw
名無しさん@お腹いっぱい。 [sage] 2010/06/13(日) 21:48:07 :lV2bpcq40

参照部とは?

TOKEN() は第二引数を破壊するので
うんこに配慮して、うんこの値をコピーした str を渡しました
名無しさん@お腹いっぱい。 [sage] 2010/06/13(日) 21:53:05 :E/dbXkmj0

ああごめん。ちっと勘違いしてたわ。
名無しさん@お腹いっぱい。 [sage] 2010/06/14(月) 16:34:31 :A4WmwryV0
ifb iegetdata(ie, true, "yes", "はい") > 0
iesetdata(ie, true, "yes", "はい")
sleep(0.5)
else
break
endif
iesetdata(ie, true, "yes", "確認")

これ、もう少し纏まりませんか。主に1.2行目・・・
アンケサイトで「はい/いいえ」で確認ボタン出るまで押すって奴なんですが
名無しさん@お腹いっぱい。 [sage] 2010/06/14(月) 17:02:01 :A4WmwryV0
While iegetdata(ie, true, "yes", "はい") > 0
iesetdata(ie, true, "yes", "はい")
sleep(0.5)
wend
iesetdata(ie, true, "yes", "確認")

あれ、こうか・・・?
名無しさん@お腹いっぱい。 [sage] 2010/06/14(月) 17:32:38 :jt+/tNC/0
そんなアンケートに価値はない
名無しさん@お腹いっぱい。 [sage] 2010/06/14(月) 20:43:35 :aNbH09Ww0
ifb CHKIMG(IMG , -1 )
BTN(LEFT,DOWN,102,715,579)
BTN(LEFT,UP,180,411,641)
else
(ifbの所に戻りたい)
endif

この処理を作りたいのですがelseをどう書けば良いんでしょうか。
イメージ画像が発現するまで待機する様な文が書きたいです。
if以外でも良いのです。
名無しさん@お腹いっぱい。 [sage] 2010/06/14(月) 20:51:53 :aNbH09Ww0
コンティニュー見つけました。
初心者ですみません。
名無しさん@お腹いっぱい。 [sage] 2010/06/15(火) 22:23:39 :Y3W88cOuP
短髪の女の子?がセックスをしながら世界一周を目指すという成人誌を見たことがあるのですが、分かる人いますか?
たしか3年ぐらい前の漫画だったと思います
名無しさん@お腹いっぱい。 [sage] 2010/06/16(水) 01:11:20 :jeyh3hPj0
どんな誤爆だよw
名無しさん@お腹いっぱい。 [sage] 2010/06/16(水) 13:04:10 :yLa0pynz0
これは大胆な確信犯だな。

面白そうだから探してくるわw
名無しさん@お腹いっぱい。 [sage] 2010/06/16(水) 21:29:45 :Z1Itnvke0
peekcolorを使ってB値だけを判定する方法を教えてください
名無しさん@お腹いっぱい。 [sage] 2010/06/16(水) 22:16:46 :nX9kgu9QP
結果をmsgboxで表示すれば目視で判定できます
それとも「どのように」判定したいのか指定があるんですかね
名無しさん@お腹いっぱい。 [sage] 2010/06/16(水) 23:16:32 :6Hb0U1Mg0
「記録」を使って、
作業に使うアプリをまとめて立ち上げたり、
新しいフォルダを生成したりする程度のヘタレた使用をしています

ヘルプを読んで起動オプションがあるのはわかりましたが

スクリプト実行、実行後はUWSC本体を起動したままにする場合
UWSC.exe /K スクリプト名
   ↑
この構文をどのように使えばいいのかがわかりません

例えば、こんな感じだと動きません
GETTIME()
HIDUKE = G_TIME_YY4 + G_TIME_MM2 + G_TIME_DD2
EXEC("NOTEPAD")
SENDSTR(GETID("無題"), HIDUKE + "<#CR>")
UWSC.exe /K 日時出力.UWS

おそらく単純すぎて目の前に答えがあるのに、答えが近すぎて逆に自分の視界に入ってない状態だと思います

ヒントだけでも教えていただければ・・・・orz
名無しさん@お腹いっぱい。 [sage] 2010/06/17(木) 03:11:51 :sncjYoBq0

BってBGRのB?
(peekcolor(x,y) and $FF0000)/$10000
とか?
名無しさん@お腹いっぱい。 [sage] 2010/06/17(木) 06:51:29 :k9E1g4kJ0

exec
名無しさん@お腹いっぱい。 [sage] 2010/06/17(木) 08:09:29 :RfIdECVBP

ヘルプにある「その他項目」は文法の話じゃないよ

スクランブルのほうには書いてあるけど
コマンドプロンプトで起動する場合とかにパラメータを付ける話
名無しさん@お腹いっぱい。 [sage] 2010/06/17(木) 18:34:42 :Ff+fGhbK0
ご教授願います。
以下のスクリプトを作ったのですが、再生すると
行目のIFBに対しENDIFが閉じられていないと出ます。
どこがダメなのか教えてください
WHILE TRUE
ifb GETID(GET_ACTIVE_WIN) = GETID("paper man") then
Ifb PeekColor(512,384) = $FFFF00 then
BTN(LEFT,CLICK)
Endif
Endif
sleep(0.02)
WEND
名無しさん@お腹いっぱい。 [sage] 2010/06/17(木) 18:47:12 :+CCij1w00
見た感じで適当なカキコすると
2行目のGETID条件の相方が変数or定数じゃないのが気に食わないんじゃね?
名無しさん@お腹いっぱい。 [sage] 2010/06/17(木) 18:48:19 :k9E1g4kJ0

それで動いたのでどこが悪いか判りません。

…正直、ゲームチートっぽいのは歓迎したくないなぁ。
名無しさん@お腹いっぱい。 [sage] 2010/06/17(木) 18:50:44 :x399c/MH0
チートじゃないだろ
カスが!発言に気をつけろ
次はないと思え
名無しさん@お腹いっぱい。 [sage] 2010/06/17(木) 18:56:59 :pUIHTkvJ0
まぁ、チートでは無いわな。

ちなみにuwscは、ゲームで使ってこそ価値のある物だと思うw
名無しさん@お腹いっぱい。 [sage] 2010/06/17(木) 19:19:52 :qd5QGDw6i
単純にゲームに対する不正だなw
名無しさん@お腹いっぱい。 [sage] 2010/06/17(木) 19:29:39 :sncjYoBq0
ゲームに対する不正のどこがチートじゃないのかkwsk
名無しさん@お腹いっぱい。 [sage] 2010/06/17(木) 19:40:04 :ydiblUFW0
チートの定義はクライアント内部からでしょ。
UWSCってローカルな情報で動くし。
よくわからん、やってる事は同じだなw
名無しさん@お腹いっぱい。 [sage] 2010/06/17(木) 20:44:42 :sncjYoBq0
定義も何もチートはcheatでそのまんま「不正行為」って意味だろうに。
内部も外部も関係ないだろ。
名無しさん@お腹いっぱい。 [sage] 2010/06/17(木) 20:47:52 :pUIHTkvJ0
直訳とゲーム用語だと少し違うんだよね。
名無しさん@お腹いっぱい。 [sage] 2010/06/17(木) 20:50:44 :k9E1g4kJ0

チートを「不正」以外の言葉で使っている場面を見たことが無い。
どんな独自の用語なんだよw
名無しさん@お腹いっぱい。 [sage] 2010/06/17(木) 20:54:53 :pUIHTkvJ0
めんどくさいなー。

同じ不正でも、"チート"と"操作の自動化"は違うのだ。
後は自分で調べてね。
名無しさん@お腹いっぱい。 [sage] 2010/06/17(木) 20:57:16 :l8wchoUV0
操作の本来実装されている以外の方法での自動化が認められたゲームなんかあるのか?
俺ルールでこんくらいはおkって思ってるだけだろ
名無しさん@お腹いっぱい。 [sage] 2010/06/17(木) 20:57:56 :k9E1g4kJ0

ま、結局不正なのは変わりないからなぁ…
名無しさん@お腹いっぱい。 [sage] 2010/06/17(木) 21:40:09 :RfIdECVBP
不正行為の総称・・・チート
自分を正当化するための魔法の言葉・・・操作の自動化


確かに違うね
名無しさん@お腹いっぱい。 [sage] 2010/06/17(木) 21:58:48 :lFzqbv68O
ん? 自動化も不正だぜw

確かに、データ改ざんの事をチートと呼ぶのが一般的かな。
名無しさん@お腹いっぱい。 [sage] 2010/06/17(木) 22:04:40 :SzGCTaJq0
そもそも「ズル」のことをチートっていうのであってつまりマクロだろうがパケットいじろうがチートだと思うんだが
名無しさん@お腹いっぱい。 [sage] 2010/06/17(木) 22:28:29 :lFzqbv68O
ネットで調べたけど、一応はコンピューター用語として載ってるな。
でも人によって認識のズレがあるみたい。
単純に区別しやすいようにチートとマクロを分けてるとも言えるし。

俺的結論。みんな正しいw
名無しさん@お腹いっぱい。 [sage] 2010/06/17(木) 22:34:10 :ydiblUFW0
ゲームで語るか大きな意味で語るかの違いだな
名無しさん@お腹いっぱい。 [sage] 2010/06/17(木) 23:06:27 :x399c/MH0
マクロのほうが的確
ゲーム見たらなんでもファミコンっていう親くらい違う
名無しさん@お腹いっぱい。 [sage] 2010/06/17(木) 23:41:31 :dSI3F+Sd0
チートって聞いたらドラクエのHP999を思い出した。
名無しさん@お腹いっぱい。 [sage] 2010/06/17(木) 23:52:50 :jN7punls0
そんなにネトゲの話題がしたければネトゲの板にマクロやスクリプトのスレ立てろよ
ここでネトゲの話題に反発してる連中もそこまで行って邪魔はしないだろうよ
名無しさん@お腹いっぱい。 [sage] 2010/06/18(金) 10:30:47 :RlvK9F450
while true
ifb CHKIMG(IMG , -1 ) or CHKIMG(IMG7 , -1 ) ←ここ
break
endif
btn(right,click,800,250)
sleep(0.5)
mmv(900,333)
sleep(0.5)
mmv(1050,333)
sleep(1.0)
ifb CHKIMG(IMG6,-1)
mmv(G_IMG_X,G_IMG_Y)
btn(left,click,G_IMG_X,G_IMG_Y)
sleep(10.0)
endif
wend

最初のIMGが無いのにこの処理が終わってしまうのですが
どこか間違ってますか?
名無しさん@お腹いっぱい。 [sage] 2010/06/18(金) 13:17:56 :RlvK9F450
別の文で解決しました
色を無視してるから何か引っかかってたのかも
名無しさん@お腹いっぱい。 [sage] 2010/06/20(日) 16:51:16 :iYsBGIJR0
MapleStoryというゲームでピラミッドというサバイバルゲームがあり、それは敵がたくさん出てきてそれを倒し、14分で全てが終わる
ゲームなんですが、1分50秒ほど早く終わってしまいます。ピラミッドの低レベル版の9分で全てが終わるサバイバルゲームでは、
ほとんどずれずに繰り返しできたのですが、ピラミッドで時間をずれずにUWSCでするにはどうしたらいいでしょうか?
名無しさん@お腹いっぱい。 [sage] 2010/06/20(日) 18:29:19 :PoKuH6O30

正確に行動するとか
時間やタイミングを合わせて行動するとかならここでもいいけど、
きっちり14分で敵を倒すやり方はゲームやキャラの詳細が分からないと答えようがないよ。

まずはきっちり14分で倒すやり方をメイポスレで聞いて来い。
名無しさん@お腹いっぱい。 [sage] 2010/06/20(日) 19:35:11 :l35pdc4w0
ずれるって事は記録機能を使ってるんだろうけど
自分で作れば可能、色々なサイトを見て少し勉強したらすぐできる
横レス [sage] 2010/06/20(日) 19:42:03 :1vSDRlXF0
それも今のスクリプトの適当な場所にSLEEP(150)を挿入するだけっぽい
名無しさん@お腹いっぱい。 [sage] 2010/06/20(日) 20:40:13 :iYsBGIJR0

レスありがとうございます!
ピラミッド自体は普通にやっても14分で終わるんですね。ステージが5つに分かれていて、
敵が沸いてきたのを倒して、ゲージが0にならなければ次のステージに進めて、14分ちょうどに終わるんです。
詳細は↓ここに書いてあります。
ttp://maplesonar.com/wiki/index.php?%E3%83%8D%E3%83%88%E3%81%AE%E3%83%94%E3%83%A9%E3%83%9F%E3%83%83%E3%83%89
マクロで実行すると1分50秒早く実行を完了して停止してしまうんです。残った1分50秒の間にゲージが0になってゲームオーバーに
なってしまいます。


いろいろなサイトを見て勉強してみたいと思います。


動作を止めているとゲージが0になってしまいます。



みなさんありがとうございます。もっと考えてみようと思います。
名無しさん@お腹いっぱい。 [sage] 2010/06/20(日) 21:23:06 :PoKuH6O30

ACTゲージのMAX近くのドットをキャプチャ(PeekColor)して
赤っぽかったら数秒休む(Sleep(5))っていう処理を追加すればいい。
赤っぽいというのはRGB分解してRが128超えてたら赤っぽいということで。

そういう処理を一箇所に入れるだけで済むようにするには、全体の行動を一つのループに集約する方法がある。

もう一つの方法は、たとえばマウス、キーボードクリックをある関数経由にし、
その関数内で、実行しても良いか悪いか判断する。
その判断するフラグを別スレッドでループする監視処理。
そうすれば延々とキークリックを羅列していても1箇所書き換えるだけで済む。

関数名の変更はエディタの痴漢・・・もとい、チカン・・・・あれ?弛緩・・・
置換だ置換
それでやる。
名無しさん@お腹いっぱい。 [] 2010/06/21(月) 20:42:32 :2HQccvy70

やっぱりUWSCでもできるような単純な処理っぽい。
ttp://librahack.jp/okazaki-library-case/comparativetable.html
>朝日新聞「1回ボタンを押すだけで、1秒に1回程度の速度でアクセスを繰り返せるプログラムを作っていたという。」
>ローカル環境(Thinkpad+XAMPP【Webサーバー】)では、Eclipseの実行ボタンを押して、PHPスクリプトを実行していました。

ttp://librahack.jp/okazaki-library-case/comparativetable.html
>警察・マスコミ「HTTP500が発生した時刻を「停止日時」と表現。」

HTTP500 = 内部サーバーエラー

>朝日新聞:「ホームページの閲覧は21回停止されていた。」
>中日新聞:「計8回機能を停止させ、」
>読売新聞:「閲覧しにくい状態にさせ、」
>日経新聞:「21回にわたりHP閲覧をできないようにした。」
>毎日新聞:「サーバーを21回シャットダウンさせた疑いがある。」
>毎日新聞:「県警が25日に自宅を家宅捜索した際も自動アクセス中だったという。」

>ThinkpadのEclipse環境から、合計64,008回をリクエスト送信。
>家宅捜索のとき Thinkpad電源オフ。リクエストなし。
名無しさん@お腹いっぱい。 [sage] 2010/06/22(火) 16:15:11 :cUoPGlwu0
ですがピラミッドマクロできましたw
攻撃する動作を追加していくっていうアナログな方法で作れましたw
名無しさん@お腹いっぱい。 [sage] 2010/06/22(火) 20:18:25 :FiBTNy8s0
ゲームマクロを作っていると気付く事になる。
あれ?めんどくさい処理を自動化してるんだよな?
なんでこんなめんどくさいゲームやってんだオレ
名無しさん@お腹いっぱい。 [sage] 2010/06/22(火) 20:23:28 :vfPNGvwL0
自動化って仕事(PC操作)を減らしてくれるはずが、自動化がなければとてもやる気がしないようなことに手をつけてしまい
しかもそれがあとから考えて意味あっただろうかと思うような行為だったりもする
スクリプトを組み動作を検証し改良する、という行為そのものが娯楽なのだ、と思わなければまさに愚行だたな
名無しさん@お腹いっぱい。 [sage] 2010/06/22(火) 20:57:53 :C+CRCydp0
uwscを覚えると、やるゲーム全てに対して
「これって自動化できるな」という目線で見てしまう。
名無しさん@お腹いっぱい。 [sage] 2010/06/22(火) 21:52:31 :q8DnHohU0
仕事になると、そういう目線は結構重要。
そんな俺は業務的にUWSCを使いまくり。無ければ仕事量的に処理出来ない…
名無しさん@お腹いっぱい。 [sage] 2010/06/22(火) 22:49:31 :jmCKgS7q0
業務でスクリプト書くとバグがあってそれに気づかなかった時が怖いんだよな…
発覚した時には遥か昔のデータまで遡って修正とか
楽してた分がカウンターとなって襲ってくる
名無しさん@お腹いっぱい。 [sage] 2010/06/22(火) 23:19:31 :q8DnHohU0

正直、気を使うことは確かだね。
過去数回、過去に遡る経験をしたが、新しく発見・修正スクリプトを書いて過去データを直したw

テキストエディタとヘルプ程度…+その問題が軽度である事前の注意力と幸運…が有れば、
その場でサクサクとスクリプト自体を直せるのは強み。 …臨機応変とはこの事か、と。

一般的なスクリプト言語と比べて、実行にスクリプト本体とuwsc.exeで可搬性が高いのはいいと思うよ。
WSHとは比べ辛いが、業務としてEXE化できるのはありがたかった。
…EXE化の利点って隠蔽化の外には、単体でスクリプトに対してD&Dが可能になる、って点が大きい。
名無しさん@お腹いっぱい。 [sage] 2010/06/25(金) 23:50:53 :NEYBETTk0
peekcolorでピクセル単位で場所を指定して監視するのではなく、
画面全体を監視する方法ありませんか?
色で判定を出したいです。
名無しさん@お腹いっぱい。 [sage] 2010/06/26(土) 01:07:04 :lUJoxFiZ0

チェックイメージを使うかピークカラーを画面全体行えば良いと思います
名無しさん@お腹いっぱい。 [] 2010/06/26(土) 03:24:32 :iR+AoK580
てて
名無しさん@お腹いっぱい。 [sage] 2010/06/26(土) 06:44:01 :YCZ3L8nQ0
絶対やっちゃいけないとまではいわないけど、Peekcolorを画面全体でまわすなんて駄目ですよ。
ためしにやったら1回のスキャンで58秒かかりました。

ほかのコンパイラ型言語でDLL関数でも書けばいいと思うけど、
それが無理ならhsp3っていうスクリプトを呼び出して処理するのがいいんじゃないかな。

ttp://fs-cgi-basic01.freespace.jp/~hsp/ver3/hsp3.cgi?print+200604/06060040.txt
ここでhsp3の性能について語られています。
同じようにUWSCでテストしてみました。
数値の足し算が100万回で11秒 (HSP3の50倍)
文字列の連結が100万回で11秒 (HSP3の10倍未満)
peekcolor1280*1024に至っては58秒かかりました。(HSPの140倍)

もちろん僕のCPUは時代遅れなPenMですが、記事が書かれたのが僕がパソコンを購入してから1年後なので、
性能があちらが上だとしてもせいぜい2倍どまりでしょう。

画面をキャプチャするpeekcolorと、メモリをスキャンするpeekで比較したのは公平ではないかもしれませんが、
ドットをスキャンする方法がそれぞれ違うのでこれで比較するのが妥当だと思います。

文字列操作を多用するなら一桁しか違わないといえるので、hspを覚えなおすところまでは必要ないと思います。
しかし、計算速度が重要な画像処理をUWSCでやるのはさすがにナンセンスです。
UWSCでゲーム操作をやれるのは組み込みの検索関数があるからですよ。

HSP3を使うとして、言語は覚えなおさないといけませんが、せっかく覚えたUWSCの知識やスクリプトを無駄にすることはありません。
DLLランタイム経由で呼び出すことが可能です。

PC等 [ソフトウェア] “自動化ツールuwsc使いよ集まれ4”
ttp://pc12.2ch.net/test/read.cgi/software/1235990960/621

Googleのキャッシュにあります。
ttp://www.google.co.jp/search?hl=ja&source=hp&q=uwsc+_hspexec
名無しさん@お腹いっぱい。 [sage] 2010/06/26(土) 08:40:26 :XkryZ5iqi
質問です。
AquesTalkのdllをロードしてwavファイルを出力したいのですが

///構文 unsigned char * AquesTalk_Synthe(const char *koe, int iSpeed, int *size)
///引数
///koe 音声記号列
///iSpeed 発話速度[%] 50-300 の間で指定 デフォルト:100 値を大きく設定するほど、速くなる
///size 生成した音声データのサイズが返る[byte](エラーの場合はエラーコードが返る)
///戻り値 WAVフォーマットのデータ(内部で領域確保、解放は呼び出し側でAquesTalk_FreeWave()で
///行う)の先頭アドレスを返す。エラー時は、NULL を返す。このときsize にエラーコードが設定さ
///れる。

DEF_DLL AquesTalk_Synthe(string, int): string: AquesTalk.dll
DEF_DLL AquesTalk_FreeWave(string): : AquesTalk.dll
sp=50
str="こんにちわ。"
fp = fopen("AquesTalk.wav", F_WRITE);
wav=AquesTalk_Synthe(str, sp)
FPUT(fp, wav)
fclose(fp)
AquesTalk_FreeWave(wav)

戻り値がデータへの先頭アドレスで帰されるので出力したwavファイルの中身は "RIFF4`" とwavファイルの
ヘッダの先頭部分のみになってしまいます。こういうアドレスの先頭・ポインタで戻り値が返された場合、
実体ののデータを取得するにはUWSCではどう記述するのか教えてください。


dllのロード自体がの記述が間違っているかもしれませんが、wavファイルを出力しない↓のコードでは問題なくできました。
DEF_DLL AquesTalkDa_PlaySync(string,int): int: AquesTalkDa.dll
sp=50
str="こんにちわ。"
AquesTalkDa_PlaySync(str,sp)
名無しさん@お腹いっぱい。 [sage] 2010/06/26(土) 09:57:52 :YCZ3L8nQ0

ポインタで受け取ったら、実体をコピーすればいいです。

> VB.net
> Declare Function lstrcpy Lib "kernel32.dll" (ByVal lpString1 As String, ByVal lpString2 As Integer) As Integer

UWSC
DEF_DLL lstrcpyA(string, Long): Long: kernel32.dll
DEF_DLL lstrlenA(string): Long: kernel32.dll

ここで文字列を格納する場所の確保が必要です。
できればstrlenAで文字列の長さを調べ、その長さのバッファを確保したほうがいいんですけど・・・
とりあえず空白文字列を代入で確保しかないです。
好きな長さにするには文字列連結回数で調整ですね。

wav = AquesTalk_Synthe(str1, sp)
str2 = "                              " //この長さを超えるとメモリが壊れる。
lstrcpyA(str2, wav)
FPUT(fp, str2)

ところで、.wav ファイルを開いているようですが、UWSCはテキストファイルしか扱えません。
仮に音声データでないとしたら、間違って再生してしまうような拡張子はやめるべきです。

メモリ破壊を防ぐには、lstrcpynA() 関数を使い、コピーする長さを限定します。
n = (str2とwavの短いほうを選択して代入)
lstrcpynA(str2, wav, n)
名無しさん@お腹いっぱい。 [sage] 2010/06/26(土) 23:49:22 :IdkQBLMFi

返事を忘れてました。申し訳ない。
書かれているように記述して実行してみたのですが、str2の内容が変わらずに出力されてしまいます。
色々試していたのですがどうも思うようにいきません。

>UWSCはテキストファイルしか扱えません
これは知りませんでした。
fputで出力するデータがテキスト形式ではなく、バイナリデータなので上手くいかないのかもしれませんが
もうちょっと自分の方で試してみます。レスサンクスでした。
名無しさん@お腹いっぱい。 [sage] 2010/06/27(日) 07:46:07 :iMo1l0nA0

すいません。
参照渡しが必要でした。

× DEF_DLL lstrcpyA(string, Long): Long: kernel32.dll
○ DEF_DLL lstrcpyA(var string, Long): Long: kernel32.dll

コピー元の方はvar なしでもいいんですけど・・・var がないとconst扱いなのかも。
DEF_DLL lstrcpyA(var string, string): Long: kernel32.dll


やっぱりバイナリデータですか。
UWSCでもポインタとして受け取ることはできているので、WindowsAPIを使ってファイルに保存することは可能でしょう。
しかし、CreateFileA、WriteFile、CloseHandle などの関数のほか、それぞれの引数も結構あるので大変です。
HSP関連には解説があるようですが・・・
ttp://yokohama.cool.ne.jp/chokuto/urawaza/fileaccess.html

やっぱりSaveFileFromURL()みたいに一発で保存できる関数が欲しいところですね。
LightWave3Dとかいうやつだとバッファをファイルに保存するプラグインというのがあるようで・・・


メモ:
FileSystemObject はテキストデータのみ。
名無しさん@お腹いっぱい。 [sage] 2010/06/27(日) 07:48:07 :iMo1l0nA0

AquesTalk2ならAqTk2Appっていうツールがありますね。
UWSC的にはこのツールを自動操縦するのが趣旨にあってると思います。
名無しさん@お腹いっぱい。 [sage] 2010/06/27(日) 08:49:30 :ozy0IIj4i

あーやっぱ結構API関数たくさん使わないと無理ですか。ボチボチやってみます。dd。


以前にUWSCでSAPI関数使ってsapi5の音声エンジンを使って割と簡単にできたし、他のエンジンもCOMオブジェクトから
簡単にできたから、AquesTalkもできるかなと思ってやってみたんですけど失敗。
 現在、半ば意地になってるのと、ついでにちょっとした勉強のつもりでやってるだけで、特にスクリプトを書いてどうこうしよう
と考えてるわけじゃないんです。でも情報d。
名無しさん@お腹いっぱい。 [sage] 2010/06/29(火) 06:26:49 :wrNX1tM50
ファイルに名前をつけて保存の時に、ファイルの種類がHTMLとかになってて、
flvとして保存しようとしても"〜.flv.htm"みたいに二重に拡張子がついてしまう。
ファイルの種類をいじるのもいいけどそれはめんどくさい。
保存するファイル名をダブルクォーテーションで括ってしまえば余分な拡張子はつかなくなる。

それはいいとして、今まで保存したファイルの拡張子を除去するのはめんどくさい。
ファイル名の一部に".flv"を含んだものを探すのもいいけど、
DOSでワイルドカード指定しようとしても.flvはファイル名に含まれてしまう。

UWSCで引数のファイル名を処理するのも考えたけど、実行形式にしないと受け取れないようなことがかかれてたような。
で、バッチファイルで何とかやりました。
割と簡単に記述できるんですね。

:loop
rename %1 "%~n1"
shift
if %1=="" goto end
goto loop
:end
名無しさん@お腹いっぱい。 [sage] 2010/06/29(火) 20:22:17 :m65QeqbN0
よかったね^^
名無しさん@お腹いっぱい。 [sage] 2010/06/29(火) 21:33:15 :fJb2X/gCP
たまにこういう超一方的なレスあるけど何なの?
他人にどういう反応を求めているの?

単純に不快にさせたいんだろうか
名無しさん@お腹いっぱい。 [sage] 2010/06/29(火) 21:52:26 :Qc35Lc290
過疎板や専門板だとよくあることだ
相手にするな
名無しさん@お腹いっぱい。 [sage] 2010/06/29(火) 22:06:48 :usZ+cNtA0
オナニーですから
名無しさん@お腹いっぱい。 [sage] 2010/06/29(火) 23:12:57 :wrNX1tM50
なんで不快になるのか分からないな。
「名前をつけて保存」に関する質問なんてしょっちゅうされてる。

とりあえずダウンロードしてからまとめてリネームすることもあるんだけど
名前が統一ルールならワイルドカード使ってコマンド1行で済むものを
拡張子を削ることができないためにいちいちバッチファイルでリネームするしかなかったので
そういうツールなどないかなあと思ったら拡張子削るだけで金を取るようなソフトしかなくて
いろいろ考えた末にいいものができた。
同じ悩みを持つ人はいるだろうし、自分のメモ代わりにもなるし、短くて邪魔にならないし応用も利くし、
何より話題がなくて過疎ってるから書いてるんだけど。

応用といえば有償版を買うメリットにドラッグ&ドロップをあげてる人いたよね。
DOSのバッチファイルで受け取ってスクリプトに渡せば有償版使わなくても済むことになるわけで、
ユーザーにしてみればお得だし・・・


別件をついでに書いておくけど、他のソフトとの連携がらみでイベントドリブンにできないかなあと考えてる。
に書いたようにUWSCはなかなか遅いので、イベントドリブンにできればより快適に使えるんじゃないかと。
普通にDLL関数のように呼び出して実行が終わるまでとまっているって言うのもひとつの手だけど、
・・・いや、それが一番いい手かもしれない。
さっきまではOCX作ってOLEEVENT()で動かすのを考えていたけど、とにかくめんどくさい。
ただでさえIEをOLEEVENT()で動かそうとしてエラーでまくりでどう使えばいいんか分からなかったりするけど、
DLL関数として呼び出すならそういう問題は起きないはずだ。
DLL関数がコールバック関数を作ってメッセージループする・・実行ファイルを同期オプションつけてEXEC()するみたいな動作をすればいい。
取りあえず画面つきDLLを実行してイベント待ち関数を呼び出せばいいかな?
問題はどんなイベントをどんな渡し方するかだが・・
なんかめんどくさ
どんなソフトからも連携できるようにしようと思ったらやっぱり実行ファイルの呼び出しだけど、
・・・ああ、めんどくさい。
やっぱりファイルの存在チェックをループして具体的な処理はファイルの中に書くのが手軽だ。
テキストファイルはコマンドラインでも作れるし連携しやすいし。
名無しさん@お腹いっぱい。 [sage] 2010/06/29(火) 23:53:55 :mAsbzwiX0
自己完結している文を省けばすっきりするし読み易い
名無しさん@お腹いっぱい。 [sage] 2010/06/30(水) 00:01:11 :FGgZ44ac0
お前さんはペイントで物事が解決したら、
わざわざフォトショスレに報告するのかと。
名無しさん@お腹いっぱい。 [sage] 2010/06/30(水) 00:43:22 :cQDwcNUMP
何を不快と思われているかすら理解できていないのか・・・
そこから説明しよう

>なんで不快になるのか分からないな。
>「名前をつけて保存」に関する質問なんてしょっちゅうされてる。

お前のはお前自身が解決しているから既に質問じゃない
単なる日記だ

しかもダラダラ長いだけで読む人の事を完全に無視した超超一方的な内容
をよーく見てみろよ
名無しさん@お腹いっぱい。 [sage] 2010/06/30(水) 02:18:34 :E6/1yF7a0
よくわからんけどファイルのリネームくらいならUWSCでもできるんじゃない?
名無しさん@お腹いっぱい。 [sage] 2010/06/30(水) 02:25:37 :yk18Gni00

UWSCでもファイルのリネームくらいならどの道DOS使うのが普通なんだけど、
問題はそのファイル名の受け渡しなんだよ。
Inputで多分ファイルパスの受付はできると思うけど、普通はひとつしか受け取らないもんだ。


そりゃそうだよ。
フォトショは起動に時間がかかるから、ペイントでちょちょいとできることはペイントにやらせるでしょ。
ペイントでもできるけどこんな大変だったよって場合は「やっぱりフォトショがあってよかったね」って話になるんじゃね?

フォトショ使ってる人って結構ペイントのこと知らないよね。


あとね、四則演算するときも俺はエクセルとか使わずにメモ帳と電卓を使うよ。
表計算の欠点は計算式が見えないことだね。
eval使えばいいかもしれないけど。

電卓なら「=」までをメモ帳に書いて電卓にコピペで計算できる。
1024*768*32/8/1024/1024=

もーちょっと複雑な計算に対応してくれたら便利なんだけど。

HDDで何ギガの制限とか言うときもこんな感じで電卓にこぴぺ
HDD容量は単位が違うからね。
128*1024*1024*1024/1000/1000/1000=

まあGoogle電卓がもーちょっと便利だけどね。
*じゃなくてxが使えるし単位とか入ってると分かりやすいし
128x1024^3/(1000^3)=
128x2^(10x3)/1000^3=
230km/17L=
名無しさん@お腹いっぱい。 [sage] 2010/06/30(水) 03:25:13 :E6/1yF7a0
よくわからんけどUWSCは電卓ソフトではないと思うの
名無しさん@お腹いっぱい。 [sage] 2010/06/30(水) 07:47:56 :w+UAShhg0
chkimgで画像の検索を左上から右下へではなく、右下から左上へ検索をかけていく方法はありますでしょうか?
名無しさん@お腹いっぱい。 [sage] 2010/06/30(水) 08:55:27 :WYppQ4gN0
探査順で言えば、無いと思う。


求めているものとは違うかもしれないが
帰ってきた個数でfor文まわして、ステップを-1で逆順からやるぐらいかなぁ。
名無しさん@お腹いっぱい。 [sage] 2010/06/30(水) 13:14:19 :w+UAShhg0
なるほど、探査順では無理なのですか
ありがとうございます!
名無しさん@お腹いっぱい。 [sage] 2010/06/30(水) 13:55:13 :L+4kKGni0

> なんで不快になるのか

他人のオナニーが快いのは変態以外の何ものでもないですから
名無しさん@お腹いっぱい。 [sage] 2010/07/01(木) 20:10:04 :OXLrb3Fu0
 おい!お前!
他人(女)のオナニー見て興奮するオレに謝れ!
お前だってどうせYouTubeとかですぐ「オナニー」とかって検索するくせに!
名無しさん@お腹いっぱい。 [sage] 2010/07/01(木) 21:36:50 :JQqovf560
uwsファイル、またはexe化したuwsを起動時に引数を与えてselect case文にそれを適用するという方法はあるでしょうか?
そのまま起動したらデフォルト
~.exe -1 でcase1の動作
~.exe -2 でcase2の動作といった具合です。
名無しさん@お腹いっぱい。 [sage] 2010/07/01(木) 22:20:08 :qiUbeCCI0

param_str[]を使う

select param_str[0]
  case -1
    print "hoge"
    sleep(5)
  case -2
    print "fuga"
    sleep(5)
  default
    print "piyo"
    sleep(5)
selend
名無しさん@お腹いっぱい。 [sage] 2010/07/02(金) 06:31:01 :c3owuz6h0
これの言語ってなにになるの?
名無しさん@お腹いっぱい。 [sage] 2010/07/02(金) 07:30:17 :HelCeMPk0
uwsc。
名無しさん@お腹いっぱい。 [sage] 2010/07/03(土) 02:18:17 :LoG5i7vT0
webページに表示中の画像を全部保存するために

Temporary Internet Files内のjpgファイルを消去
指定URLをリロードして再表示
Temporary Internet Files内のjpgファイルを、指定URL名のフォルダをつくってそこにコピー

と、やれば表示中の画像は保存できるはずだ、と、ここまで考えたが
同じ目的のフリーソフトはぐぐれば簡単に出てきたので、UWSCで作るのはやめたのであった
名無しさん@お腹いっぱい。 [sage] 2010/07/03(土) 20:47:52 :I61lA7zx0

Temporary Internet Filesいじらなくてもどっかのフォルダに名前をつけて保存(完全)する考えが出てこなかったのかと
やめたんならいいけどさ
名無しさん@お腹いっぱい。 [] 2010/07/08(木) 09:32:33 :VGSbza+G0
何回やってもうまくいかなかったので質問させていただきます。
検索しても見つけられませんでした。

コードを見てください。

ファイルの中身はcsv形式です。
fid=fopen(...
lins = FGet(fid, -1)
for i = 0 to lines
lin[i] = FGet(fid, i+1, 1)
lin[i] = FGet(fid, i+1, 2)
lin[i] = FGet(fid, i+1, 3)
...
next

としているのですが、これを簡略化できないでしょうか?
ご存じの方はご教授願います。
名無しさん@お腹いっぱい。 [] 2010/07/08(木) 10:31:01 :VGSbza+G0
です

やりたい事を書いてませんでした。

lin[0]=FGet(fid, i+1, 1)
lin[1]=FGet(fid, i+1, 2)
lin[2]=FGet(fid, i+1, 3)
...

これを、例えば
dim lin[]=FGet(fid, i+1)
とか
dim lin[7]=FGet(fid, i+1)
などの様にならないかなぁ〜と思っています。

もちろん、試したので上記の例えはNGと分かっています。

FOR の入れ子はちょっと・・・
同じようなこと試した方はいらっしゃいませんか?
名無しさん@お腹いっぱい。 [sage] 2010/07/08(木) 11:43:42 :OOcrcd230

基本機能に無いので、関数化するとかの対応が必要だろう。
forの入れ子はしょうがない。

function str2Array(str, Var array[], splitter=",")
 //スプリットして、配列サイズ整えて、配列に格納して参照渡し、resultは個数あたりを返す
fend

あとは、配列のコピー、配列ソート(+反転)、ぐらいを作ると楽です。
名無しさん@お腹いっぱい。 [] 2010/07/08(木) 21:57:01 :VGSbza+G0

ご返答ありがとうございます。

やはり関数化するしかないですね。
基本機能にないものは作っていこうと思います。
ありがとうございました。
名無しさん@お腹いっぱい。 [sage] 2010/07/09(金) 16:06:17 :hX8OxlDV0
自分用メモ

コマンドラインからのファイル圧縮
ttp://nasunoblog.blogspot.com/2007/07/blog-post.html

コマンドラインで操作できるプログラムは、そのアプリにキー入力を送ったりダイアログにファイル名を送ったりするより、コマンドライン操作したほうがスマートにいくね!

uwscで表記した場合、たとえばこんな感じ
exec("C:\Program Files\WinRAR\WinRAR.exe x C:\tst\ttt.zip *.* C:\tst\")

AutoHotKeyだとこうなる(待ちを入れるならrunをrunwait
run, C:\Program Files\WinRAR\WinRAR.exe x C:\tst\ttt.zip *.* C:\tst\
名無しさん@お腹いっぱい。 [sage] 2010/07/09(金) 17:39:08 :dT0oVw9f0
すみません質問させてください

もし、aが60の時マウスを左クリックするという命令を作りたいのですがどう組めば良いでしょうか

a=0

while
sleep(1)
a+10
→このあたりにもしa=60の時クリックさせたいんです
continue
Wend
名無しさん@お腹いっぱい。 [sage] 2010/07/09(金) 17:41:01 :yIcWbCTj0

添付のヘルプにif文の書き方が載ってるよ
名無しさん@お腹いっぱい。 [sage] 2010/07/09(金) 17:42:19 :dT0oVw9f0

!!!
即レス感謝しますm(_ _)m
名無しさん@お腹いっぱい。 [sage] 2010/07/09(金) 17:58:06 :vOMsfoxV0

a = a + 10
としないと加算されないよ
んで、60のときという条件だと1回しか実行しないのにずーっとループしてることになるね。
60になるごとに実行なら、60になったときに初期値に戻すか、
if a mod 60 <> 0 then
って、60で割り切れたら実行するような処理にしないと。


のバッチはファイルが別ドライブだと動かなかった。
そこで、最初に処理するファイルの場所に移動する。
cd /dは、ドライブも移動するオプション。
判定する位置も間違っとったので修正。

cd /d "%~dp1"
:loop
if %1=="" goto end
rename %1 "%~n1"
shift
goto loop
:end
名無しさん@お腹いっぱい。 [sage] 2010/07/09(金) 19:19:11 :vOMsfoxV0
ミス
バッチファイルは全角スペースを区切り文字として処理してしまうのでファイル名が壊れてしまっていた。

echo %1 >> log.txt
で確認。

半角スペースが入るファイル名の場合はダブルクォーテーションで括られているが、
半角スペースがないファイル名はダブルクォーテーションが付かない。
ところが、バッチファイルは全角スペースを区切り文字として見るのでファイル名が分割されて処理されてしまっていた。

UWSCから呼び出す場合は無条件にダブルクォーテーションをつければいいので問題ないが、
バッチファイルを直で呼ぶときにはそういう問題があるようだ。
名無しさん@お腹いっぱい。 [sage] 2010/07/09(金) 20:42:22 :yIcWbCTj0

まぁ、ロングファイルネームを扱うときの鉄則だよな。

<#DBL>で挟むだけの関数とか作ってるわ
名無しさん@そうだ選挙に行こう [sage] 2010/07/10(土) 15:47:58 :YsZsiaJ20
他のスクリプトを組んでいて、設定した画像が出てきたときにその画像の一部をクリックしたいときには
どのようなスクリプトを組めばよいのでしょうか?

ifb CHKIMG("画像.bmp")

認識はこれでOKだと思うのですが、その後この画像のクリックが出来ません・・・
どなたかお願い致します。
名無しさん@そうだ選挙に行こう [sage] 2010/07/10(土) 16:28:45 :ZGTswZRE0
戻値
  有ればTRUE、無ければFALSE
  TRUE の場合は見つかった座標を特殊変数 G_IMG_X、 G_IMG_Y に格納  

// タスクトレイのアイコンを左クリック
Ifb CHKIMG("タスクトレイアイコン.BMP")
  BTN(LEFT, CLICK, G_IMG_X+5, G_IMG_Y+5)
Endif
名無しさん@そうだ選挙に行こう [sage] 2010/07/10(土) 16:36:06 :YsZsiaJ20

有り難うございます。
ちなみに+5というのはどういった意味合いを持つのでしょうか?
あともう一点なんですが、
連続して何回も画像認識をしたい場合は
Ifb CHKIMG("タスクトレイアイコン.BMP")
  BTN(LEFT, CLICK, G_IMG_X+5, G_IMG_Y+5)
Endif
これを複数回連続して使うことは不可能なのでしょうか?
何回も申し訳ありませんがお願いします。
名無しさん@そうだ選挙に行こう [sage] 2010/07/10(土) 16:38:48 :YsZsiaJ20
例です
ifb CHKIMG("Aー.BMP")
x=G_IMG_X
y=G_IMG_Y
BTN(LEFT, CLICK, x, y)
sleep(1)
endif
ifb CHKIMG("B.BMP")
x=G_IMG_X
y=G_IMG_Y
BTN(LEFT, CLICK, x, y)
sleep(1)
endif
ifb CHKIMG("C.BMP")
x=G_IMG_X
y=G_IMG_Y
BTN(LEFT, CLICK, x, y)
sleep(1)
endif
ifb CHKIMG("D.BMP")
x=G_IMG_X
y=G_IMG_Y
BTN(LEFT, CLICK, x, y)
sleep(1)
endif
これでは3つ目と4つ目が実行されません・・・
名無しさん@そうだ選挙に行こう [sage] 2010/07/10(土) 17:00:17 :2HeapwD30

無いからです

一つだけにしてみたり、状況によってドットが変わらないかのチェックは自分でしろよな。
画像チェックは、1ドットでも影が増して色が変わっただけでも反応しない。

試行錯誤は大切だ。
名無しさん@そうだ選挙に行こう [sage] 2010/07/10(土) 18:58:34 :6eMuotW50

> cd /dは、ドライブも移動するオプション。

pushd使えよ。
それに

> if %1=="" goto end

これじゃ%1が空の時
if =="" goto end
になってエラーで終わってるだけじゃん。
goto endが実行されて終わってるわけじゃないぞ。
名無しさん@そうだ選挙に行こう [sage] 2010/07/10(土) 19:06:32 :6eMuotW50

というかそもそもディレクトリの移動の必要が無いじゃないか。

:loop
if "%~1"=="" goto :eof
ren "%~1" "%~n1"
shift
goto :loop

これだけでいい。
名無しさん@そうだ選挙に行こう [sage] 2010/07/10(土) 19:21:32 :2HeapwD30
UWSCや他スクリプトでディレクトリ移動は正直使ったことがなかった
pushdを始めて知ったよ。ありがとう。
名無しさん@そうだ選挙に行こう [sage] 2010/07/10(土) 19:38:28 :6eMuotW50
UWSC単体でディレクトリ移動するコマンドってあるの?
いつも移動なしでフルパスかWScript.Shellを使うが…
名無しさん@そうだ選挙に行こう [sage] 2010/07/10(土) 19:43:37 :2HeapwD30

いや、カレントディレクトリの概念は、
GET_CUR_DIR やGET_UWSC_DIR以上は当然フルパスだし
俺も知らないし、使った事もない。

pushdを始めて知ったというだけだよ。
名無しさん@そうだ選挙に行こう [sage] 2010/07/10(土) 20:23:54 :ZGTswZRE0

あー、それでかあ。
"%1"とかすると展開されて"が二重についちゃうとか思って削ったんだけど、
:end以降のが処理されなくなってたんだよね。

「"」を削った上でつければよかったのか。
名無しさん@そうだ選挙に行こう [sage] 2010/07/10(土) 22:49:50 :6eMuotW50
1行で

for %%i in (%*) do ren "%~i" "%~ni"

とかいうのも面白いかもね。
%1 といった風に裸で使うのはほぼ無いと思う。
ファイルから取得した実際に存在するパスじゃなくても動作するから
パス関係はDOSが便利。こんなのでも切り分けてくれる。

@echo off
set t=c:\abc\def\ghi\jkl.mn
call :sub %t%
pause
goto :eof
:sub
echo %~d1
echo %~dp1
echo %~n1
echo %~x1
名無しさん@お腹いっぱい。 [sage] 2010/07/13(火) 23:15:48 :6gpdqLry0
質問です

CHKIMG関数はあくまで画面上にbmp画像がある場合でしか判定してくれないのでしょうか
オプションの"IMG_MSK_BGR4"等で色幅をもたせればpng画像等も判別できるのだろうか
と思いやってみたところダメでした

ウィンドウに表示されたbmp以外の同じ絵を認識させる方法はないでしょうか
名無しさん@お腹いっぱい。 [sage] 2010/07/17(土) 21:49:05 :aJDaFmMW0
mouseorg(id, 2)
peekcolor(x, y)
をやった場合、最前面の色情報を取得してしまいます。
idで指定したバックグラウンドのウインドウの色情報を取得するようには出来ませんか?

明後日の妹の誕生日に間に合わせたいです、よろしくお願いします
名無しさん@お腹いっぱい。 [sage] 2010/07/17(土) 22:42:17 :r0Wg8T9f0
peekcolorは無理。以前掲示板上で出て作者自身が言ってた
名無しさん@お腹いっぱい。 [sage] 2010/07/18(日) 22:30:57 :91nLnL3t0

そうですかー、やっぱバックグラウンドでLvあげるマクロは
そう簡単に作れそうにないですね
妹の誕生日プレゼントにと思いましたが他のにしたいと思います
名無しさん@お腹いっぱい。 [sage] 2010/07/18(日) 23:53:43 :FSifaFLVP
Windowsで別アカウント作ってUWSCを動かしたまま
ユーザー切り替えって無理なの?
名無しさん@お腹いっぱい。 [sage] 2010/07/19(月) 00:34:53 :AuI5qRwh0

画面がない状態だからキーもマウスも使えないけど、スクリプトは動き続けるかもしれない。


ゲームマクロなんてBANされる原因になるからそんなもんを誕生日プレゼントになんかしたら最悪だよ。
なんなら僕が初体験させてあげてもいいけどどうすか?
名無しさん@お腹いっぱい。 [sage] 2010/07/19(月) 14:52:45 :qP7LYzIv0
マクロを動かす用のパソコンをプレゼントするんだ
名無しさん@お腹いっぱい。 [sage] 2010/07/19(月) 16:40:40 :o9pV2iSG0
参考になるかわからんが
仮想PC上ならウインドウを最小化してもuwscは動き続ける。
名無しさん@お腹いっぱい。 [sage] 2010/07/20(火) 12:42:07 :1LNIKTZk0

これ最強
名無しさん@お腹いっぱい。 [sage] 2010/07/20(火) 16:03:45 :2zhj0ynG0

27歳ですが・・・
名無しさん@お腹いっぱい。 [sage] 2010/07/20(火) 22:02:28 :dQHSvRS20
27歳なら、35歳の俺とry

ところでってのは、裏でレベルを上げながら
PCで他の作業がやりたいんだよね?

だったら仮想PCという答えが出てるじゃん。
名無しさん@お腹いっぱい。 [sage] 2010/07/20(火) 23:15:54 :reIAtfwA0
妹の・・・・笑ったw
名無しさん@お腹いっぱい。 [sage] 2010/07/22(木) 08:59:39 :4ke08AvI0
起動すると画面の解像度が変わってしまうゲームでCHECKIMG使いたいんですけど
画像をどうやって用意したらいいですかね
そのままスクショで保存したら大きさが違うせいか認識してくれないんです
名無しさん@お腹いっぱい。 [sage] 2010/07/22(木) 09:59:14 :xl2JwDzx0
すくしょはJPG圧縮するから色が変わる。
色を見ないオプションをつけるか最初からBMPで保存する設定にしないと。
名無しさん@お腹いっぱい。 [sage] 2010/07/22(木) 12:22:02 :4ke08AvI0
名無しさん@お腹いっぱい。 [sage] 2010/07/22(木) 12:23:57 :4ke08AvI0
↑ミスです


色が変わってしまうんですか
設定変えてもう一度試してみます
ありがとうございました
名無しさん@お腹いっぱい。 [sage] 2010/07/22(木) 12:37:17 :d8nqc9kb0
ゲーム内のスクリーンショットよりプリントスクリーンで画像を保存して使ったほうがいいよ。
名無しさん@お腹いっぱい。 [sage] 2010/07/22(木) 12:39:04 :d8nqc9kb0
途中で送信おしちまった。

どんなゲームかはわからないけど、設定を「低」とかにして、1ドット分だけ切り抜いて検索させるといい。
638 [sage] 2010/07/23(金) 10:19:34 :WAhk26IS0

なるほど試してみます
ありがとうございます
名無しさん@お腹いっぱい。 [sage] 2010/07/25(日) 03:13:10 :aOCpJXAw0
メモ帳を起動させ、将棋の棋譜をコピペ
ALT+F →Aで名前を付けて保存

ファイル名を"kifu201007250245.txt"のような日付タイプにしたいので
KBD入力とGETTIMEを組み合わせてなんとか・・・

ここまでは、あまりスマートではないのでしょうが
初心者なりに満足はしています。


問題は保存先の指定が出来ずに悩んでいます。
何か良い方法はありませんでしょうか?

ファイル名をフルパスにしたりもしましたが、
たまに変なところに保存されてしまいますorz
名無しさん@お腹いっぱい。 [sage] 2010/07/25(日) 03:28:49 :7XlcaHq80

フルパス名をダブルクォーテーションでくくる。


ファイル名は文字列変数で編集したらSendTextで送るだけでいいよ。
KBDはいらないし、GetTimeをどう使ってるか知らないけどやらない方がいい。

でも、ダイアログを出さないやり方の方がすばやくできるよ。
FOPEN()とかでまずファイルを作る。
ファイルはすぐ閉じる。
ファイル名はすでについているので、そのファイルを開く。
メモ帳にコピペ
SCKEY(ID,Ctrl,S)みたいな感じで上書き保存。
名無しさん@お腹いっぱい。 [sage] 2010/07/25(日) 05:40:17 :aOCpJXAw0

ありがとうございました^^
イメージしていなかった方法で、私に出来るか不安でしたが
キーワードをいくつか出してくれたので、何とかなりそうです

保存場所を指定した時間軸付きのファイルも1〜2行で作れちゃうもんだったんですね^^;
名無しさん@お腹いっぱい。 [sage] 2010/07/26(月) 13:04:20 :k4CO6xIK0
下記のサイトに紹介されてたカナン(ブラウザゲーム)での狩りを試してみましたがうまくいきません・・・
uwscにmobのフォルダ作ってmob画像.bmp入れたのですが・・・
何がいけないのでしょうか?

ttp://uenomemo.blog31.fc2.com/blog-entry-451.html#more
ttp://blog-imgs-44-origin.fc2.com/u/e/n/uenomemo/mincana.txt
名無しさん@お腹いっぱい。 [sage] 2010/07/26(月) 13:35:11 :BhA2wW+40
そのサイトで聞いてください
648 [sage] 2010/07/26(月) 15:21:52 :k4CO6xIK0
お騒がせして申し訳ありませんでした。
どうやら画像ファイルの作り方が悪かったみたいです。
無事動きました。
名無しさん@お腹いっぱい。 [sage] 2010/07/27(火) 19:47:07 :WMMGgM0X0
繰り返しについて・・・
for 回数 = 1 to 10
          ↑
10の部分をランダムにしたいんですが
0と1じゃ駄目なんで、2〜10等に変わる感じにしたいです
よろしくおながないしますm(_ _)m
名無しさん@お腹いっぱい。 [sage] 2010/07/27(火) 21:13:18 :4sN4iz/W0
意味不明
名無しさん@お腹いっぱい。 [sage] 2010/07/27(火) 21:20:06 :4sN4iz/W0
もしかして random(9)+2 とかいうレベルの話だったんかな?
名無しさん@お腹いっぱい。 [sage] 2010/07/28(水) 08:45:39 :mZiLqyDj0

トンクス
ちょうど自己解決したところだったんだが
最初(8)に+2で10になると思ってたら0も含めた8なのな・・・^^
名無しさん@お腹いっぱい。 [] 2010/07/31(土) 19:02:04 :d6UOCQyK0
今日無料のをダウンロードしました。

エクセルやデスクトップでは問題なく使えるのですが、
IE上では保存時に『保存すべきデータがない』と警告されます。

何が原因なのでしょうか?
ご教授お願いします。
名無しさん@お腹いっぱい。 [sage] 2010/07/31(土) 20:46:18 :Ew6RvKel0

Web上のコントロールは見た目は同じだけど、Windowsの標準コントロールを使ってるわけじゃなくて
IEの内部で動かしているだけ。
仕組みが違うので標準の記録ツールでは記録できない。

有料版のRecIEで記録すればちゃんと記録できて保存もできる。
名無しさん@お腹いっぱい。 [sage] 2010/08/01(日) 21:56:15 :vShdqIJrP
Firefoxで、サイト上のフォーム名を指定して文字列を入力ってできない?
ググってもIEのことばっかりで・・・
sendstrだとちょっと使い勝手が悪くて・・・
名無しさん@お腹いっぱい。 [sage] 2010/08/01(日) 22:37:32 :btdI04e30

WinHttp.WinHttpRequest.5.1 や Msxml2.ServerXMLHTTP
とかはマジでお勧め。

ブラウザ依存しない代わりに、HTTPの仕様やPOSTやGETの仕様を学ばねばならぬがな。
横レス [sage] 2010/08/02(月) 18:44:59 :JJ+XL60D0

そこら辺の足回りはIEと共通なような?漏れはそのままIEリモート操作使う
名無しさん@お腹いっぱい。 [sage] 2010/08/02(月) 19:14:20 :Cipvvh8p0

なんで”FireFoxで”なのかなとか思ったけど、いろいろアドオンが使えるんだね。
まとめてダウンロードとかするのかな?

UWSCでFireFoxはちょっと現実的じゃないよ。
名無しさん@お腹いっぱい。 [sage] 2010/08/03(火) 01:30:02 :1JFEwvbwP
アドレスバーにjavascript:のURIを書き込んで実行すればいい
名無しさん@お腹いっぱい。 [sage] 2010/08/06(金) 14:40:58 :JYrNWcDP0
uwscシェアウェアに金払うよりAHKやAutoITのほうが高度なことできるし無料なのに
uwscを使う人は何故uwscを選択したのですか?
名無しさん@お腹いっぱい。 [sage] 2010/08/06(金) 14:57:16 :W74hQXM80
freeのしか使わんが、日本語環境向けに作ってない奴は
とかく日本語を扱った時の問題が多くて面倒。

高度なことをやるならC#とか行った方がいいしな。
名無しさん@お腹いっぱい。 [sage] 2010/08/06(金) 19:37:23 :8YuvCzWC0
>日本語環境向けに作ってない奴は
>とかく日本語を扱った時の問題が多くて面倒。

え?
名無しさん@お腹いっぱい。 [sage] 2010/08/06(金) 19:42:51 :pDR/fTRv0
ヘルプ(上級者もリファレンス的に使ったりすると思われる)は
母国語のほうがやっぱり楽というのもある
名無しさん@お腹いっぱい。 [sage] 2010/08/06(金) 23:01:41 :tW5dfjBO0
Shift-JISの扱いは面倒だな。
あとUWSCは最初からターゲットウィンドウのハンドル使ってたが
AHKやAU3は基本はアクティブウィンドウが対象だったし。
名無しさん@お腹いっぱい。 [sage] 2010/08/06(金) 23:14:10 :c6pCZ1eU0
uwscは処理が遅いけどゲーム用スクリプト書くと厨房がHPにアクセスしてくれるんでそれだけでやってます
本業はAC TOOLだけどね
名無しさん@お腹いっぱい。 [sage] 2010/08/07(土) 00:20:53 :9TXxC+F+0
IEを自動操作するには 6,720円払わないといけないの?
無料で手に入れる方法ない?
名無しさん@お腹いっぱい。 [sage] 2010/08/07(土) 00:23:06 :EtXi5Akg0
本業としてUWSCを使いまくってしまっているなぁ。
業務アプリを外部から自動操作するのに凄く役立ってる。手動操作しか考えてないアプリのなんと多い事よ。

世に言われる一般言語で、ctrlwin, getitem, clkitem, getstr, sendstr の処理って出来る?
.netFrameWorkあたりでサクサク出来るなら試してみたいわ。
名無しさん@お腹いっぱい。 [sage] 2010/08/07(土) 01:12:04 :9EzTUoPY0

スパイツール使ってコントロールIDを取得すれば標準APIのPeekMessage()とかでコントロールできるよ。
文字列の受け渡しはちょい面倒かも。
名無しさん@お腹いっぱい。 [] 2010/08/07(土) 02:42:05 :gkyQg9vD0

WSH、VBS
名無しさん@お腹いっぱい。 [sage] 2010/08/07(土) 10:27:33 :N0HExwAC0

COMが使えるソフトならできる
AHKとAutoITは無料でできる
名無しさん@お腹いっぱい。 [sage] 2010/08/07(土) 10:38:48 :YAKDDRNt0
仕事で客に頼まれて作る事ので入れてるけどプライベートは使い物にならない
しょぼいツールに金払ってる情弱がバカに見えて仕方がない
名無しさん@お腹いっぱい。 [sage] 2010/08/07(土) 12:07:09 :uQIZNZs70
なんで管理人以外の人が
>ココは「UWSC」の掲示板ですので、ルールを守り、UWSC特有の質問や、バグ報告などをピンポイントで交わすのが主だと考えています。
って決め付けるんだろう。質問が気に入らないならパスワード制掲示板でも作ってもらえよ


RE:エクセルデータでの比較分岐 Liners

質問がオウム返しなので、プログラミングの基礎を学んでいただく必要がありそうですね。残念ながらココは、プログラミングの基礎を質問する場ではないと考えています。
ココは「UWSC」の掲示板ですので、ルールを守り、UWSC特有の質問や、バグ報告などをピンポイントで交わすのが主だと考えています。

例えば、

Call マクロ1
// id の取得方法が分らない。
if id = 前回 then Call マクロ2
前回 = id

としたが、id の取得方法と繰り返しが分らないなど。
名無しさん@お腹いっぱい。 [sage] 2010/08/07(土) 12:17:48 :RxyiB9bA0
・シェアウェアにしないとEXE化もできない
・記録ツールがIE限定。しかもシェアウェアのみ(笑)
・処理速度が遅い・不安定・実行結果があまり信用できないのでシビアな処理には向いてない
・他のツールでは出来る事が出来ない
・ライセンス販売しててもサポートが適当・ユーザー層も親切な人がほとんどいないので自分で解決する能力がないと厳しい
・早いうちに他に移住したほうが良い
・海外ツールより全ての面で劣るのにライセンス6720円というボッタクリ


今は海外ツールでも日本語化ヘルプとかあるから乗り換えは楽だぞ
名無しさん@お腹いっぱい。 [sage] 2010/08/07(土) 13:26:22 :35jcw7Oi0

> 今は海外ツールでも日本語化ヘルプとかあるから乗り換えは楽だぞ

日本語ヘルプが原語ヘルプと同レベルに充実してる海外ツール教えて。
名無しさん@お腹いっぱい。 [sage] 2010/08/07(土) 13:34:25 :35jcw7Oi0
そもそもこのスレの住人は乗り換える必要性そのものを感じてないと思うがな…

記録ツールなんぞ最初から使わんし。
自分のミス以外で不安定さなど感じたこと無いな
サポートなんかイラネ。ちゃんとしたヘルプありゃ自分で解決できるし。
逆にサポートが必要なヘルプ未整備なツールなんて論外だわ。
名無しさん@お腹いっぱい。 [sage] 2010/08/07(土) 14:01:22 :CH089CZh0

uwscでも無料でできるだろw
名無しさん@お腹いっぱい。 [sage] 2010/08/07(土) 14:22:14 :9EzTUoPY0

EXE化は便利だろうけど、生のスクリプトが残ってないと変更できないよね。EXEとソースのバージョン管理できる?
たとえば自動ログオンとかが基本的な使い方の一つになるけど、IDやパスワードはどこに保存する?
セキュリティがいらないならスクリプトに書いておけばいつでも確認できるし変更もできるよ。

複数のスクリプトを動かすのにEXE化してないといけないと考える人がいるかもしれないけど、
関連付け起動すれば複数同時起動できるし。
名無しさん@お腹いっぱい。 [sage] 2010/08/07(土) 14:28:17 :9EzTUoPY0

> 不安定・実行結果があまり信用できない
信用をどのレベルで考えるかによるけど、考慮してない動作をされればおかしくなるのは当然。
だけど、かなりの部分はマクロ的な処理を取り除けば対処できるよ。

> ユーザー層も親切な人がほとんどいない
規制食らって出てこれないこともあるけど、俺数年常駐してるんですけど。
だけどみたいな質問を延々とされるとそりゃー拒否しますよ。
そういうのはまとめられたドキュメントを読んだほうが早いからね。

> ・他のツールでは出来る事が出来ない
むしろ逆で、フリーソフトでできないようなことをするために使うものですよ。

> ・海外ツールより全ての面で劣るのにライセンス6720円というボッタクリ
無料の機能だけで済ませばいいでしょ。
名無しさん@お腹いっぱい。 [sage] 2010/08/07(土) 14:32:48 :t9aVUOoRP

EXE化の目的はuwscを入れてない人の譲渡用とかなので
ちょっと論点がズレてるような
名無しさん@お腹いっぱい。 [sage] 2010/08/07(土) 15:07:03 :Y/K7lnXh0

>むしろ逆で、フリーソフトでできないようなことをするために使うものですよ。

お前は何を言ってるんだ
名無しさん@お腹いっぱい。 [sage] 2010/08/07(土) 16:23:38 :9EzTUoPY0

UWSCフリー版をセットで渡せばいいんじゃね?

で、メニューに
> start uwsc.exe 自作.uws
っていうコマンドを登録。

フリー版にない機能ってIERecとかの他にはエクセル操作のところですよね。
あ、フォームがあったか。
Pro版の機能を使う場合で配布が必要なら確かにEXE化が必要かも。
名無しさん@お腹いっぱい。 [sage] 2010/08/07(土) 16:34:34 :y0cjyvyY0
スクリプトにuwsc実行ファイルをセットで配布するのは禁止されてる訳だが・・・
名無しさん@お腹いっぱい。 [sage] 2010/08/07(土) 17:29:24 :m1KQHGT30
あれ、このソフトに金払ったっけ
思い出せないw
名無しさん@お腹いっぱい。 [sage] 2010/08/07(土) 17:39:25 :QlRiIcV00
ネット接続があれば本家から落とさせればいいかと
スクリプト配布にEXE化が必須なのはいまどき珍しいオフライン環境ぐらい
名無しさん@お腹いっぱい。 [sage] 2010/08/07(土) 19:37:44 :a+4o6aGY0
一昔前はuwscは確かに主流だった
今はuwscは初心者用な所に至った
流石にuwscが最強だと思って使い続けてる人は居ないと思うけど
名無しさん@お腹いっぱい。 [sage] 2010/08/07(土) 21:24:38 :WmmjjtAx0
uwsc程度の簡単なツールで公式掲示板で偉そうに回答してる人の気持ちが分からない
名無しさん@お腹いっぱい。 [sage] 2010/08/07(土) 21:35:08 :35jcw7Oi0
何でもかんでも偉そうだと勘違いしちゃう人の気持ちも分からんね。
何かコンプレックスでもあるのかしらん。
名無しさん@お腹いっぱい。 [sage] 2010/08/07(土) 21:50:57 :t9aVUOoRP
底辺プログラマは常に見下され、罵られる存在なんだよ
だからLinersとかいう人はプログラミング出来ない人を見つけては
偉そうにしている可哀想な人なんだ

あの掲示板はむしろ自己解決が出来ないプログラミング初心者のために
あるべきだと個人的には思うんだが
ヘルプを使いこなせる(はずの)人なら質問なんてそもそも不要なのだから

作者はLinersに注意を促したほうがいいよ
名無しさん@お腹いっぱい。 [sage] 2010/08/07(土) 23:19:18 :jc3OO7yP0
本日のLinersさんのIDはどれかな
名無しさん@お腹いっぱい。 [sage] 2010/08/07(土) 23:22:41 :jc3OO7yP0
偉そうな態度じゃないならみたいな上から目線の回答なんて事を書かないよね
名無しさん@お腹いっぱい。 [sage] 2010/08/09(月) 17:07:20 :C2Il1A6zO
初歩的な質問させて下さい。
数種類の画像(A.B.C.D)があり、そのいずれかがあった場合指定した動作を実行するにはどうすれば良いのでしょうか?

fb chking("A.bmp")
動作
endif
fb chking("B.bmp")
動作
endif

の様にするしかないのでしょうか?
名無しさん@お腹いっぱい。 [sage] 2010/08/09(月) 18:22:46 :vISs9FQW0

chkimg は座標を返すわけだけど、その座標を使うにはそういう書き方をするしかない。
ただ、どれかひとつあった場合に、とりあえずその一つだけ処理するということなら、
chkimg をまとめることで処理を一箇所だけに記述することができます。

関数化するのが普通だけど、break 2 というのが使えるのでそれを使って記述してみます。

while true
 while true
  ifb chking("A.bmp") then
   break
  else
   break 2
  endif
  // "B.bmp" 〜 "D.bmp"まで記述
 wend
 // 見つかった場合、break でここに飛ぶ
 // ここに見つかった場合の処理を記述
wend
// 一つもなかった場合、break 2 でここに飛ぶ
名無しさん@お腹いっぱい。 [sage] 2010/08/09(月) 18:29:56 :vISs9FQW0

でも、処理をループの奥に記述すると分かりにくいですよね。そこで関数化してみます。

ifb MYchking("A.bmp", "B.bmp", "C.bmp", "D.bmp") then
 【処理】
enfif

Function MYchking(Pic1, Pic2, Pic3, Pic4)
 for i = 1 to 4
  Pic = eval("Pic" + i)
  ifb chking(Pic) then
   result = true
   exit
  endif
 next
 result = false
 exit
Fend

との違いは、いずれかが見つかった場合に1度しか処理しないことです。
もし1〜4の画像を順に調べたい場合はループする必要があります。

もちろん、MYchkingを繰り返し実行することで1〜4の全てを処理しますが、
1の出現回数が多すぎる場合は2〜4まで回ってこないということが起こりえます。

出現頻度の低いものを先にチェックすれば、効率は悪くなるものの、それ以後に回ってこないということはなくなるでしょうね。
その辺の調整は調べる対象次第になるでしょう。
名無しさん@お腹いっぱい。 [sage] 2010/08/09(月) 18:39:48 :C2Il1A6zO

詳しく教えていただき、ありがとうございます!
調整含め、早速試してみたいと思います。
名無しさん@お腹いっぱい。 [sage] 2010/08/10(火) 04:30:14 :tFoU40cT0
最近uwscを使い始めたのですが、
chkingで画像を探してクリックするように
web上のリンクor文字をクリックさせるコード的なものはあるのでしょうか?
お願いします。
名無しさん@お腹いっぱい。 [sage] 2010/08/10(火) 04:59:34 :HXshqRJz0

ret = IELINK(IE,"上記のページにジャンプしようとしています。問題ない場合はクリックしてください")

ところで、chkingではなくてchkimgです。
キーワードに色づけするエディタを使った方がいいと思います。
ttp://scripts.web.fc2.com/sakuraInput00.PNG
名無しさん@お腹いっぱい。 [sage] 2010/08/10(火) 10:59:44 :tFoU40cT0

お早い回答ありがとうございます!
エディタはTerapadを使ってます。
横Terapad使い [sage] 2010/08/10(火) 17:16:16 :CwYB52mM0

とりあえず表示-編集モード-VB使えば?BASIC基本構文が色分けされるだけでもだいぶ楽
CHKIMGとかのUWSC専用構文は色分けされないけど
もっと本格的にやりたきゃモード作るとか
693 [sage] 2010/08/11(水) 19:37:03 :fuFHgMGbO
再度質問させて下さい。

4種の座標
A(20.120)・B(30.130)・C(40.140)・D(50.150)
があり、A〜Dの座標をランダムにクリックさせる場合にはどうすれば良いのでしょうか?

対象ウィンドウのサイズは800*640です。
また、クリック間隔は500ms程度にしようと考えています。
名無しさん@お腹いっぱい。 [sage] 2010/08/12(木) 11:32:05 :6HDVq6//0
dim a[]=1,2,3,4,5,6,7,8
r=random(4)*2
a[r]
a[r+1]
名無しさん@お腹いっぱい。 [sage] 2010/08/19(木) 09:44:12 :7ukdiQRxO

返信遅くなりました。
ありがとうございます!
名無しさん@お腹いっぱい。 [] 2010/08/20(金) 18:06:08 :IackKw990
PUBLIC clear_fuki = -1 // 消去する識別No.を指定する
FUKIDASI("main")
thread create_fuki(1, "aaaa", 100, 100) // スレッドにて吹出し生成
thread create_fuki(2, "bbbb", 200, 200)
thread create_fuki(3, "cccc", 300, 300)
sleep(3)
clear_fuki = 2 // bbbbbを消去
sleep(5)

// 吹出し生成 (pno=識別No.、msg=表示メッセージ、x,y=位置)
procedure create_fuki(pno, msg, x, y)
FUKIDASI(msg, x, y)
while clear_fuki<>pno; sleep(0.1); wend // 消去指定されるまで表示
Fend


公式のなんですけどこれで消さずに残すようにするにはどうすればいいですか?
名無しさん@お腹いっぱい。 [] 2010/08/20(金) 18:36:15 :83ayW7Fq0

むしろaaaa,bbbb,ccccを表示してbbbbだけ消す例
名無しさん@お腹いっぱい。 [sage] 2010/08/21(土) 04:27:21 :FTm8wpbq0
ネットゲームで画像を認識しようとしているのですが
用意したbmp画像をchkimgしても認識してくれません

プリントスクリーン(windowsにあるやつ)
ペイントにコピペ
24ビットマップで保存

の順に作業したのですがおかしいところはあるでしょうか
名無しさん@お腹いっぱい。 [sage] 2010/08/21(土) 04:47:43 :FTm8wpbq0
↑ペイントで開いた画像だけは認識してくれました
名無しさん@お腹いっぱい。 [sage] 2010/08/21(土) 12:49:56 :oobB5dF6i

気付かないレベルで1ドット色が変わってもだめ
動的に画像を作り出すゲームではよくある
名無しさん@お腹いっぱい。 [sage] 2010/08/21(土) 12:52:53 :sO6lLGskO
ifb CHKIMG(".bmp",-1)
endif
これで試してみては?
706 [sage] 2010/08/22(日) 09:45:50 :Y875/60n0
,709
ありがとうございます
画像の用意のしかたはどうやら合ってるみたいでした

自分のPCの環境がおかしいのか
マウスを右か左クリックしているときだけ画像認証が行われることがわかりました
できれば普通に認証したいので原因など思い当たるふしがあったらアドバイスいただきたいです

OSはXPでゲーム自体はdxwndで窓化して表示しています
名無しさん@お腹いっぱい。 [sage] 2010/08/22(日) 16:42:00 :K7byzTQqP
ウィンドウ全体をキャプチャーしているのだったら、画像を切り抜いて小さくすれば(16x16とか)認識するかもしれない
もちろん切り抜く場所によって認識するか認識しないかは変わるので、良く考える
大きい画像の認識はそれなりに負荷がかかるのでいろんな意味でもキツいと思う
名無しさん@お腹いっぱい。 [sage] 2010/08/23(月) 19:15:07 :j1GIf4L/0
IE7のオプション設定を一発で変更したい。

フォントをClearTypeにし、フォントも1~2pt大きくして
IEを使用しているのですが、サイトによっては 、文字や写真が重なる
ときがあります。

その際は、デフォルトに戻す⇔再度設定 と切り替えたいのです。

具体的には
ツール→オプション→ユーザー補助→WEBページで使用されたフォント・サイズを使用しないにチェック


テンプレのURLで調べたのですが、"チェックする"はフォームでのものしかありませんでした。
名無しさん@お腹いっぱい。 [] 2010/08/24(火) 13:04:18 :oayi1Lr90
吹き出しで直線に近い道をゴールしてくれるのをつくりたいのですが
ifb chkimg("aka.bmp",0,1,1,2222,1000) then
a=G_IMG_X
b=G_IMG_Y

while true

ifb chkimg("siro.bmp",0,x+1,y,x+1,y) then
if x<a then x=x+1
else
endif

ifb chkimg("siro.bmp",0,x,y+1,x,y+1) then
if y<b then y=y+1
else
endif

ifb chkimg("siro.bmp",0,x-1,y,x-1,y) then
if y>b then y=y-1
else
endif

ifb chkimg("siro.bmp",0,x,y-1,x,y-1) then
if y>b then y=y-1
else
endif

print "<#CR>"+(200+x)+" "+(300+y)
wend
endif
これだと動いてくれません どうしたらいいですか
akaがゴールの色でsiroが通れる道の色です
名無しさん@お腹いっぱい。 [] 2010/08/24(火) 13:06:05 :oayi1Lr90
吹き出しはこの前の段階で出してスタート地点に移動しています
名無しさん@お腹いっぱい。 [sage] 2010/08/24(火) 18:30:04 :Wb+yA2C1i

ウィンドウ操作なら
タブキーで項目移動、スペースキーで項目反転が出来る


UWSCで出来ないことは無いと思うが
迷路探査アルゴリズム、でググって、考え方を理解しないと難しいだろう
名無しさん@お腹いっぱい。 [sage] 2010/08/26(木) 00:13:14 :wzBcZHfa0
712です。


ありがとうございます。
ただ、その前に オプション画面を出す方法が知りたかったのです。
名無しさん@お腹いっぱい。 [sage] 2010/08/26(木) 08:10:07 :+vvO52tv0

『インターネット オプション』のダイアログを出さずに
直にレジストリを書き換えて再読み込みさせたらいいんじゃね
実行する度に『Web ページで指定されたフォント サイズを使用しない』の
ON/OFF を切り替える例は以下

OPTION EXPLICIT

CONST HWND_BROADCAST = $ffff
CONST WM_SETTINGCHANGE = $1A
CONST SMTO_ABORTIFHUNG = $2

DEF_DLL SendMessageTimeoutA(hwnd, uint, long, uint, uint, VAR dword): long: user32.dll


DIM key = "HKCU\Software\Microsoft\Internet Explorer\Settings\Always Use My Font Size"
DIM wshshell = CREATEOLEOBJ("WScript.Shell")
DIM rsl

wshshell.RegWrite(key, !wshshell.RegRead(key), "REG_DWORD")
wshshell = NOTHING

SendMessageTimeoutA(HWND_BROADCAST, WM_SETTINGCHANGE, 0, "Software\Microsoft\Internet Explorer", SMTO_ABORTIFHUNG, 5000, rsl)
名無しさん@お腹いっぱい。 [sage] 2010/08/26(木) 13:02:28 :MdNPOjE70
質問させて下さい。

・画像A・Bが表示されたらクリックして終了。
・画像が60秒間表示されなかったら終了。

というスクリプトを作りました。
----------------------------------------
変数 = 0
while 変数 < 60

  ifb CHKIMG("画像A.bmp")
  BTN(LEFT, CLICK, G_IMG_X, G_IMG_Y)
  変数 = 60
  endif

  ifb CHKIMG("画像B.bmp")
  BTN(LEFT, CLICK, G_IMG_X, G_IMG_Y)
  変数 = 60
  endif

  sleep(1)
  変数 = 変数 + 1

wend
----------------------------------------
これでもちゃんと動くのですが満足してません。
※sleepとか変数を強引に60にするところとか

もっと美しく、そして応用が利く作り方はないでしょうか?
名無しさん@お腹いっぱい。 [sage] 2010/08/26(木) 21:11:51 :X8EPE0dEi

中断を表したいなら、breakに置き換えればいいだろ。ごく普通。
時間経過を表したいなら、時間取得をすればいい。関数はある。

抽象化したいという理想は何となく判るがね。

名無しさん@お腹いっぱい。 [sage] 2010/08/26(木) 23:38:49 :Pu7JT7nc0
ここは凄く勉強になるなぁ
名無しさん@お腹いっぱい。 [sage] 2010/08/28(土) 08:38:47 :oxztQxVg0

これも良く出来てると想う
名無しさん@お腹いっぱい。 [sage] 2010/08/29(日) 05:36:14 :9AX1wooV0


ありがとうございます。完璧です! まさに求めていた操作感です!


サイズに加え、フォントも変更しているので、
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Settings\Always Use My Font Face

を追加したいのですが、これはむずかしいでしょうか。
現状、UWSファイルを2つ作って、2つを実行させるUWSを走らせています。


なんにせよ感謝です!!
名無しさん@お腹いっぱい。 [sage] 2010/08/29(日) 08:02:00 :2ohpKIfP0
こんな感じ?

OPTION EXPLICIT

CONST HWND_BROADCAST = $FFFF
CONST WM_SETTINGCHANGE = $1A
CONST SMTO_ABORTIFHUNG = $2

DEF_DLL SendMessageTimeoutA(hwnd, uint, long, uint, uint, VAR dword): long: user32.dll


DIM wshshell = CREATEOLEOBJ("WScript.Shell")
DIM rsl

toggle_ie_setting(wshshell, "Always Use My Font Face")
toggle_ie_setting(wshshell, "Always Use My Font Size")
wshshell = NOTHING

SendMessageTimeoutA(HWND_BROADCAST, WM_SETTINGCHANGE, 0, "Software\Microsoft\Internet Explorer", SMTO_ABORTIFHUNG, 5000, rsl)


PROCEDURE toggle_ie_setting(obj, name)
  name = "HKCU\Software\Microsoft\Internet Explorer\Settings\" + name
  obj.RegWrite(name, !obj.RegRead(name), "REG_DWORD")
FEND
名無しさん@お腹いっぱい。 [sage] 2010/08/29(日) 09:19:42 :9AX1wooV0


ありがとうございます。これで仕事の効率が確実にあがります!

ところで、こういった記述、全部ゼロから書いてるんですか?

だとしたらすごいです。
名無しさん@お腹いっぱい。 [sage] 2010/08/30(月) 22:07:44 :+01WMHHg0

これ、逆に
画像が表示されなかったらクリック
画像A・Bが表示されたら終了

にしたい場合、どうすりゃいい?簡単な事でできそうなんだがうまくいかん
名無しさん@お腹いっぱい。 [sage] 2010/08/30(月) 23:34:46 :cCQi0/eo0

while true
  ifb CHKIMG("画像A.bmp") or CHKIMG("画像B.bmp")
   break
  else
   BTN(LEFT, CLICK, X, Y)
  endif
wend

こういうこと?
名無しさん@お腹いっぱい。 [] 2010/09/01(水) 12:55:02 :gZxFjlWw0
無料版の方を使ってますが
上位バージョン(有料版)ではどのような機能が追加されているのでしょうか?
名無しさん@お腹いっぱい。 [sage] 2010/09/01(水) 14:32:51 :mcbj3OJX0
アドバイスお願いします。

ESCキーで動作終了。
画面の座標・X400〜420、Y400〜420のうち
1ドットでも色の変化があった場合、座標400.400をクリックというようにしたいのですが
ESCで停止はできても、クリックが動作してくれません。
IFB Countが悪いのでしょうか?アドバイスお願い致します。
名無しさん@お腹いっぱい。 [sage] 2010/09/01(水) 14:34:17 :mcbj3OJX0
// 画面サイズ
CONST X_MAX = G_SCREEN_W
CONST Y_MAX = G_SCREEN_H
DIM OldColor[X_MAX][Y_MAX];

// X座標変化範囲を指定
CONST X_START = 400
CONST X_END = 420

// Y座標変化範囲を指定
CONST Y_START = 400
CONST Y_END = 420

Total = ((X_END - X_START) + 1) * ((Y_END - Y_START) + 1)

// 起動時の指定範囲の色を得る
FOR x = X_START to X_END
  FOR y = Y_START to Y_END
    OldColor[x][y] = PEEKCOLOR( x, y ) // 座標(x,y)の色を得る
  NEXT
NEXT
729続き [sage] 2010/09/01(水) 14:38:13 :mcbj3OJX0
WHILE True

if GETKEYSTATE(VK_ESC) then exit     // ESCキーを押すと終了させる

  Count = 0
  
  // 起動後の指定範囲の色を得て、変化をチェックする
  FOR x = X_START to X_END
    FOR y = Y_START to Y_END
      NewColor = PEEKCOLOR( x, y )
      
      // 変化あり?
      IFB NewColor <> OldColor[x][y]
       Count = Count + 1
      ENDIF
    NEXT
  NEXT
  
  // 指定範囲の1色が変化
  IFB Count = 1


  ENDIF
WEND

BTN(LEFT,CLICK,400,400)
名無しさん@お腹いっぱい。 [sage] 2010/09/01(水) 17:30:48 :61+r90Q20
色違い判定したところでループ抜けないとダメ

 // 指定範囲の1色が変化
  IFB Count = 1

     BREAK

  ENDIF
WEND

BTN(LEFT,CLICK,400,400)

729 [sage] 2010/09/01(水) 21:08:10 :mcbj3OJX0

ありがとうございます。BREAKは思いつかなかったです。
やってみましたが、反応しませんでした。

IFB Count = 1 の1を、total にして、全ドット箇所の色を変えたら反応しました。
やはり数値は使えないんでしょうか・・・
名無しさん@お腹いっぱい。 [sage] 2010/09/01(水) 21:09:04 :XX3BJheM0
色の変化が1ピクセル”だけ”の時は動くけどそれ以上だと
count=1はfalseになったままでNGだろ。

ifb count>0
break

あるいは
名無しさん@お腹いっぱい。 [sage] 2010/09/01(水) 21:14:02 :XX3BJheM0
書いてる途中で送信してしまった

ifb count>0
 break
endif

あるいは見つかった段階でbrek

IFB NewColor <> OldColor[x][y]
 break 3
ENDIF

もしくは最初にsaveimgで指定範囲をbmpで取得して
以後chkimgで見つからなければbreakとか。
名無しさん@お腹いっぱい。 [] 2010/09/02(木) 16:26:42 :LYfMKHgu0
有料と無料の違いを3行でおねがい
名無しさん@お腹いっぱい。 [sage] 2010/09/02(木) 20:43:28 :rUWrE0cY0
 ・ EXE化ツールが付属しています。(EXE化後は単体での実行が可能であり、ライセンスフリーにて配布できます)
 ・ IE(Web)用記録ツールが付属しています。(Web上の動作をUWSCのスクリプトとして記録する事ができます)
 ・ HTMLを利用した画面関数が使えます。 ・ EXCELシート用関数が使えます。 ・ デバッガが付属しています。
729 [sage] 2010/09/02(木) 21:41:38 :I3CZuiar0

ありがとうございます。だいぶ理想的な動作をするようになってきました。
まだ全然理解できてないとよくわかったので、またヘルプを読みこんでみます
名無しさん@お腹いっぱい。 [sage] 2010/09/07(火) 17:34:36 :yyBP3/0p0
Twitterクライアントを作っていますが。OAuth対応で、
DEF_DLLで下記にある、OAuthLib.dllを利用しようとしていますが、どうしてもうまく行きません。

ttp://oauthlib.codeplex.com/releases/view/42741

C#のソースとかはあるけど、C#分からないし……
BSMTP.DLL(BASP21)のように言語依存があったりするのでしょうか。
名無しさん@お腹いっぱい。 [sage] 2010/09/08(水) 12:51:19 :h0eA5K/vi

正直DLLは鬼門だと思う。
該当DLLを使ったことがなければまず何も答えられない。

そして、貴方が何でどうダメだったのかも解らないので
レスもつけられないスパイラル。
名無しさん@お腹いっぱい。 [sage] 2010/09/13(月) 19:11:15 :iBn2t7Pr0
ある一定の繰り返し作業を指定した時間のあいだ行い、時間が終わったら一定時間止まってまたはじめに戻るといった作業はどのようにすればいいのでしょうか?
繰り返し作業に関しては時間が来れば途中で抜けても構いません。
名無しさん@お腹いっぱい。 [sage] 2010/09/13(月) 22:35:26 :GdQiaKNK0
while true
 hoge()
wend
procedure hoge()
 t = gettime()+指定時間
 while t>gettime()
  繰り返し
 wend
 sleep(一定時間)
fend
名無しさん@お腹いっぱい。 [sage] 2010/09/13(月) 23:41:28 :ZRu4TmLk0
同じ画像Aが複数あって、例えば2番目の画像Aを、CHKIMG使って選ぶには、どうすればいい?
名無しさん@お腹いっぱい。 [sage] 2010/09/13(月) 23:45:09 :5IZqHpRkP
当然二番目の定義に依存する
規制中に書いてたので [sage] 2010/09/14(火) 00:51:48 :Wm//J0TM0

// 60秒(60回)が絶対条件ならfor〜next
for i = 1 to 60
 //処理
 sleep(1)
next

// 時間を正確にするならsleep(1)×60回ではなくGetTime()で差が60まで
sTime = GetTime()
while GetTime() < sTime + 60
 //処理
 sleep(1)
wend

// 画像チェックもループ化
// ただし、break2で抜けられるのはUWSCだけ。他の言語の場合は関数化してexit+breakにする。
// UWSCの場合、配列宣言は添え字の最大値を指定。配列は0からとなることに注意。
// 宣言時の添え字は省略可能だが、2次元配列以上は添え字の指定が必要。
DIM 画像ファイル[1]="画像A.bmp", "画像B.bmp"
for i = 1 to 60
 for i = 0 to 1
  ifb CHKIMG(画像ファイル[i])
   BTN(LEFT, CLICK, G_IMG_X, G_IMG_Y)
   break 2
  endif
  sleep(0.01)
 next
 sleep(0.9)
next

// 配列化は良し悪し。2個程度なら普通にコピペしたほうが早く作れて単純でよい。
名無しさん@お腹いっぱい。 [sage] 2010/09/14(火) 00:57:08 :RQZx9P9x0

> 戻値 = CHKIMG( 画像名, [透過色/色無視, x1, y1, x2, y2, 番号, 色幅] )

番号?

番号!

番号!?
名無しさん@お腹いっぱい。 [sage] 2010/09/14(火) 10:21:10 :1fJhArLm0

あーっそれだ!笑


普通に左上からなので解決!

2人ともサンクス!!
名無しさん@お腹いっぱい。 [sage] 2010/09/14(火) 17:38:28 :r79P7zzl0
ところで、firefox上でjpgやgifをクリックしたいのですが、拡張子をbmpに変えて保存した画像でchkimgしても、上手くいきません。どうすればよいですか?
名無しさん@お腹いっぱい。 [sage] 2010/09/14(火) 17:48:57 :Wm//J0TM0

ファイルの拡張子をいじったと言う話なら、それは無効なファイルだからエラーになってると思います。
動画再生などでは.flvとしておけば再生できたりしますが、それはローダーが解析して適切なデコーダを選択してくれるからです。

UWSCで使える画像はPrintScreenなどでキャプチャしたものを保存したビットマップだけです。
キャプチャソフトなどを使ってもかまわないと思いますが、一旦jpgなどで保存されたものは変色しているので使えません。

> firefox上でjpgやgifをクリックしたいのですが

名無しさん@お腹いっぱい。 [sage] 2010/09/14(火) 20:35:53 :YtyfFzS80

PrintScreen→ペイント、キャプチャソフトも試してみましたが出来ませんでした。きっとjpg画像の背景がグラデーションなのが原因だと思います。

定期的にupされる複数のファイルを一括ダウンロードする為にfirefoxを操作したいと思ったのですが、は具体的にどういうことなのでしょうか?
名無しさん@お腹いっぱい。 [sage] 2010/09/14(火) 20:53:07 :RQZx9P9x0
レイヤーの使えるツールにて
1回目PrintScreenして1レイヤー目にペースト
2回目PrintScreenを2レイヤー目にペースト
2番目レイヤーを除外に設定してレイヤー結合→真っ黒になる
色域指定等で黒のみを選択して別の色に置換

1回目と2回目で違うところがはっきりとわかるようになる。

グラデーションだろうがなんだろうが、同一なら全く問題無い。
名無しさん@お腹いっぱい。 [sage] 2010/09/14(火) 22:09:48 :Wm//J0TM0

こんな感じ。
javascript:document.sf1.submit()
javascript:document.sf1.srchtxt.value = "uwsc"; document.sf1.submit();
javascript:document.sf1.p.value = "uwsc"; document.sf1.submit();
ヤフーのトップページで上記をアドレスバーに入れて移動

pは検索テキストのname
srchtxtは検索テキストのid

以下失敗作。フォームを指定しないといけないっぽいから、フォームの外にあるGoogleのロゴはクリックできないのかな?
--------------
javascript:document.all.logo.click();
javascript:getElementByID(logo).click();

Googleトップページでアドレスバーに上記を入力して移動したらlogoをクリックしてくれるんじゃないかと思ったけどならないね。

javascript:document.all.btnG.click();
javascript:getElementByID(btnG).click();
javascript:document.getElementByID(btnG).click();

javascript:document.all.srchtxt.value = "uwsc"; document.sf1.submit();
javascript:document.all.p.value = "uwsc"        // name=p
javascript:document.all.srchtxt.value = "uwsc"    // id=srchtxt
javascript:getElementByID(srchtxt) = "uwsc"
javascript:document.getElementByID(srchtxt) = "uwsc"
名無しさん@お腹いっぱい。 [sage] 2010/09/15(水) 00:35:58 :e7a2LKU/0
Googleで検索する場合はこれ。
javascript:document.f.q.value = "uwsc"; document.f.submit();

やっぱりフォーム名がいるんだなあ。
名無しさん@お腹いっぱい。 [sage] 2010/09/15(水) 02:49:14 :e7a2LKU/0
javascript:document.write()を実行時に右クリックメニューを出してみたんだけど、COMエラーになっちゃった。
COMエラーを抑制してもいいんだけど処理がややこしくなるから、やっぱりメニューを出せなくするのが一番かな。
たまたま画面切り替えするからそんときに古いメニューは消えるんで、クリックを防ぐだけで済む。
メニューが開いてるかチェックする必要がある条件だとかなりめんどくさくなるね。
名無しさん@お腹いっぱい。 [sage] 2010/09/15(水) 12:14:10 :pZoc5M4Q0
画像Aが座標X,Yにきたらクリックを離すっていうのは可能でしょうか
画像Aはクリック押しっぱなしで動き続けます
このど素人めに何かヒントをお願いします
名無しさん@お腹いっぱい。 [sage] 2010/09/15(水) 13:15:32 :YdaxcQszi
xpなんだけどchkimgがすごい時間かかる。何故?
名無しさん@お腹いっぱい。 [sage] 2010/09/15(水) 13:21:53 :e7a2LKU/0
ifb CHKIMG("画像.bmp")
 ifb x = G_MOUSE_X and y = G_MOUSE_Y
  BTN(LEFT, UP)
 endif
endif


1回あたり0.1秒くらいかかってもおかしくない
スピードアップしたかったらサーチエリアを絞ったり画像サイズを減らしたりサーチが必要でない場合はサーチしないとか。
例えばstatus()でウィンドウの座標を取得してその中だけ検索とか

そういうことをしても、VRAMから画面キャプチャするのにかかる時間は減らせないから、
結局は検索する時間を0.1秒間隔かそれ以上に増やすことが必要。
ゲームなんかの複数のキャラの動きを追跡なんか無理だよ。
名無しさん@お腹いっぱい。 [sage] 2010/09/15(水) 14:56:35 :eX8nObUI0
画像保存先を間違えてただけでした。こんなことに1日かかるとは…
名無しさん@お腹いっぱい。 [sage] 2010/09/15(水) 16:31:04 :pZoc5M4Q0

ありがとうございます、うまく作動しましたがうまくいっていません
私の考え違いでした
画像Aが指定範囲内にきたらクリックを離すに変えたいのですが
chikingではそこの画像がころころ変わるためいまいちでした
範囲指定の方法が知りたいです
なんというか座標(0,0)(0,30)(30,30)(30,0)で囲った部分みたいな感じで指定したいのですが
名無しさん@お腹いっぱい。 [sage] 2010/09/15(水) 16:57:04 :e7a2LKU/0

 ifb x1 < G_MOUSE_X and G_MOUSE_X < x2 and y1 < G_MOUSE_Y and G_MOUSE_Y < y2
 endif

左上(x1, y1)
        □
          右下(x2, y2)


左が小さく右が大きいという位置関係で比較すると間違えにくいです。
逆に、画像が範囲外にある場合は、不等号の向きはそのままで位置を入れ替えます。
ifb G_MOUSE_X < x1 and x2 < G_MOUSE_X and G_MOUSE_Y < y1 and y2 < G_MOUSE_Y
else
 // elseを使ってもいいです。
endif

あ、マウス座標じゃなかったですね。
も読み替えてください。
名無しさん@お腹いっぱい。 [sage] 2010/09/15(水) 20:34:22 :pZoc5M4Q0
あありがとうございます、まさにこれです
頑張ってみます
名無しさん@お腹いっぱい。 [sage] 2010/09/16(木) 09:12:57 :YpEAlvEr0
WinXPでタスクバーを下から上にする+元に戻すのはどうすればいいかな?
あと任意の複数のネットワークフォルダの表示をあらかじめ一覧表示にしておきたいんだけど。

他人様のPC触る事が多くなったので、これらをログオン、ログオフ時に
実行できるようにしたいんだけど。
名無しさん@お腹いっぱい。 [sage] 2010/09/16(木) 12:02:56 :Wu6RTOU/0

1つめ、プロパティで移動可能にしてマウスで引っ張る
2つめ、ドライブに割り当てる
3つめ、人様のPCならデフォで使うべし。もしくは自分用アカウントを用意してもらう。

ログオン時はスタートアップに入れることでできるけど、ログオフの時は、、ログオフのスクリプトを作ってその中で作業して自動ログオフかな。
レジストリ設定ファイルを用意してそれを開くだけだから、手間はレジストリ項目と設定値を調べるだけ。

名無しさん@お腹いっぱい。 [sage] 2010/09/17(金) 21:12:11 :y578Seqv0
firefoxにて、ページの表示完了待ちをするにはどうしたら良いですか?
[] 2010/09/17(金) 22:17:19 :OtWQYYgM0
出たいお
名無しさん@お腹いっぱい。 [sage] 2010/09/17(金) 22:56:57 :6hcFT+axP
PC内の音声(一番大きな音量)の周波数を調べて記録することはできますか?
よろしくお願い致します
名無しさん@お腹いっぱい。 [sage] 2010/09/18(土) 03:14:05 :5HNzlobq0

ステータスバーのテキストを監視とか。
一定時間連続で「完了」とか表示されてれば表示完了と。


それはそうと、IEのコントロールでIE6で問題ないコードがIE8で動かないケースがあるね。

□ケース1
IE起動直後やabout:blankを開いた状態で navigateでjavascript:document.write()をするとエラーになる。
ダミーページを開いてから実行すれば通る。

□ケース2
ClkItem()を実行してもなぜかクリックの動作が画面上だけで終わり、コマンドが実行されなくなることがあって、
そこで停まらないようにするために、クリックに成功したら先に進むのではなく、クリックできなくなったら先に進むようにしていたんだけど・・・

// クリックできなくなるまでクリックを繰り返す
 Repeat
  sleep(0.1)
  if !IDToHnd(DlgID) then exit   // IE8だとここで抜ける
 Until !ClkItem( DlgID, "保存", CLK_BTN or CLK_SHORT or CLK_BACK ) // IE6ではここで失敗してループを出るが

// クリックしたら必ず動作するという前提なら、IE6とIE8のコードは共通化できる。
 Repeat
  sleep(0.1)
  if !IDToHnd(DlgID) then exit
 Until ClkItem( DlgID, "保存", CLK_BTN or CLK_SHORT or CLK_BACK )

// exitで分岐するのでなく、breakで同じ場所に抜けるという方法もある。
 Repeat
  sleep(0.1)
  if !IDToHnd(DlgID) then break
 Until ClkItem( DlgID, "保存", CLK_BTN or CLK_SHORT or CLK_BACK )
名無しさん@お腹いっぱい。 [sage] 2010/09/18(土) 03:19:25 :5HNzlobq0
のケース1のエラーメッセージ
x Internet Explorer では、 をダウンロードできません。
 エラーを特定できません。


あと、右栗メニューを開いた状態でnavigateしてもCOMエラーになるんだけど(IE6, IE8)、あの理屈が分からんね。
名無しさん@お腹いっぱい。 [sage] 2010/09/18(土) 06:04:11 :VDCWC4y80
>> 763
FirefoxのID = "nesuke"とし、全画面表示にしておく

Repeat // 0.2秒間隔でステータスバー内の左端の文字列を読み取る
  Sleep(0.2)
Until PosACC(nesuke, 8, STATUS(nesuke,ST_CLHEIGHT)-8, ACC_NAME) = "完了"

これだと全画面表示に限定されるので、もっと一般的な方法があれば教えてほしい
名無しさん@お腹いっぱい。 [sage] 2010/09/18(土) 08:16:26 :VDCWC4y80
勘違いしてた。
PosACCの位置指定は、スクリーン座標ではなくクライアント座標だから全画面表示でなくてもOKだった。
763 [sage] 2010/09/18(土) 13:09:14 :QQJE6ZZ40
ありがとうございます。かなり処理が早くなり精確になりました。
名無しさん@お腹いっぱい。 [sage] 2010/09/18(土) 16:08:55 :5HNzlobq0

いくつか試したけどダメだね。やっぱりXPCOM使ったりしないと。

<html><head><title>トップページ</title></head>
<frameset rows="30%,*">
 <frame src="about:blank">
 <frame src="ttp://himado.in/" onload='alert("aa")'>
</frameset></html>
上記HTMLを保存してIEで開くと、下のフレームを開き終わってからダイアログが出る。(IE限定)
IE8では警告が出るので実行許可を与える必要がある。
だけどフレーム化するからか、ページでエラーが出るし、画像なども一部表示されてない。

アドレスバーでスクリプト実行も試したけど、すぐにダイアログが出るけどページは動き続けてる。
javascript:document.onload=alert('完了')

-------------以下日記
GetItem()してみたけど【ITM_ACCCLK】でしか完了の文字は出てこなかった。ACC以外はメニューすら拾えなかったよ。
そのACCCLKも選択タブのWebページの中身全部を拾ってしまって、完了の文字はその中にまぎれてしまっている。
だから外から覗くのはちょっと難しい。

FireFoxはアドオンが割と簡単に作れるっぽいから、アクティブタブの表示状態をクリップボードとかファイル経由で渡してくれるようなアドオンを作って導入したら連携できるかも。
ActiveXでアドオンを検索したけど、ActiveXをダウンロードしてくれるアドオンだったりで既存のはなかなか見つからない。

COMでコントロールする方法としてIE Tab っていう、IEをFxで表示する方法があって
Fx上のIEオブジェクトをコントロール可能だから、それ以上のものをつくろうって人はいないんだろうな。

それ以上をやりたければXULだとかXPCOMだとかもあるし。
名無しさん@お腹いっぱい。 [sage] 2010/09/19(日) 00:53:47 :p87as2Nt0

まずは返事くれてありがとう。

> 1つめ、プロパティで移動可能にしてマウスで引っ張る
それをスクリプトでやりたいんだが…。

> 2つめ、ドライブに割り当てる
ドライブに割り当ててもデフォルトは巨大アイコンですが…。

> 3つめ、人様のPCならデフォで使うべし。
人様のデフォルトがどうなっているかあなたも想像つくでしょう。
名無しさん@お腹いっぱい。 [sage] 2010/09/19(日) 11:28:58 :KmV/y+500

> それをスクリプトで
マウスで引っ張ると言うのをスクリプトでやることもできますが、タスクが表示されているとつかむ場所がなくなるので難しい。
とりあえずクラシック表示で画面端ならタスクがあってもつかめるのでUWSCで自動化することはできます。
でも、レジストリファイルを用意してそれをダブルクリックしたほうが早くて確実です。

> 巨大アイコンですが…。
ドライブに割り当てればエクスプローラーのツリーの小さなアイコン+名前で出てくるでしょ。
ツリー無しのフォルダのみ表示してるんですか?
Win+Eで起動したらツリーも表示されているはずです。

> 人様のデフォルトがどうなっているかあなたも想像つくでしょう。
社員食堂を教えた後輩から食事代請求された。食費がかかったから払えと言うのだ。
しつこく請求し続けるそいつを横目に食堂に行き安い定食頼んだら400円の表示で2千円請求されまくり。
席に着こうとしたら机の下はげろだらけなので他の席に着くがそこもきたない。
でも、どの席も、僕が目を向けるとなぜか汚い。心象では他の席は整っているんだが、意識を向けると北無い。
これは北朝鮮がもうすぐほろびるという・・・違うか。
ま、散らかってる席に座って食べ始めるけど後輩がぴったり横にくっついてぐだぐだ言うので
「金も時間もないからこーやって定食くってんだ。金があったらコース食うよコース料理。
 この会社にはコース料理食える部屋だってあるんだよ?(先にコース料理を堪能するシーンがあった)」
食べ始めてすぐチャイムがなり始めて人がいなくなったがそれでもまだ一生懸命食ってると目が覚めた。
そう言えば食事配ってるところ+レジが普通のテーブルだった。俺って想像力に欠けてるんだな。
いや、最近そういうところで飯食ってない・・・いや、おととい行ったばかりじゃないか。ダメだなあ。
名無しさん@お腹いっぱい。 [sage] 2010/09/19(日) 18:10:52 :b1C4Fa5t0
RecIEで作成したUWSのスクリプト文を元に、
最初に入力するIDやパスワードを変えて同じことを自動でさせるようなマクロは作成可能でしょうか?


RecIEで作成したところ、

IE = CreateOLEObj("InternetExplorer.Application")
IE.Visible = True
IE.Navigate("ログイン画面のアドレス")
BusyWait(IE)
IESetData(IE," AのID "user_id") // TEXT
IESetData(IE," Aのパスワード ","user_password") // PASSWORD
IESetData(IE,True,"login") // IMAGE
BusyWait(IE)

(省略)

Fend

となりました。

これを、最初にログイン画面に行きAのIDやパスワードでログインした後いくつかのリンクを押した後ログアウトし(ここで最初の画面に戻る)
そのままBのIDとパスでログインし先程と同じ行動をしてログアウトし、CのIDとパスでログインし……と10人程ログイン行動させたいと思っています。

自分で作成するのが一番なのですが、エラーばかりになってしまい上手く動かすことが出来ないため、
RecIEの自動作成の文を利用したいと思っていました。


どのように直せば良いのか、分かる方教えていただけるとありがたいです。
名無しさん@お腹いっぱい。 [sage] 2010/09/19(日) 18:47:27 :KmV/y+500

一番簡単な方法
IE.Navigate からログオフ+BusyWait(IE) までを10個コピペしてID、パスワードを書き換えていく

2番目に簡単な方法
IE.Navigate からログオフ+BusyWait(IE) までを10回のループにし、
ID、パスワードを配列に入れ、変数化する。

例)
dim ID[] = "a", "b", "c", "d", "e", "f", "g", "h", "i", "j" // 配列はDIMで宣言必須
dim pw[] = "1", "2", "3", "4", "5", _ //改行するときはアンダースコアを入れる
      "6", 7"", "8", "9", "10"
IE = CreateOLEObj("InternetExplorer.Application")
IE.Visible = True
for i = 0 to 9
 ・・・
 IESetData(IE, ID[i], "user_id")
 IESetData(IE, pw[i], "user_password")
 ・・・
next
IE.Quit()
名無しさん@お腹いっぱい。 [sage] 2010/09/19(日) 18:47:36 :Fr1w+8890
RecIEできるなら実行ファイルにして
バッチ走らせた方がいいとオモフ
名無しさん@お腹いっぱい。 [sage] 2010/09/19(日) 19:21:13 :KmV/y+500
3番目の方が簡単かな?
ID、パスワードをカンマ区切りのファイルに保存して読み込む
次の内容でuserid.txt というテキストファイルを用意する。
--userid.txt--
a,1
b,2
c,3
・・・・
--ここまで--

で、1件ずつ読んではIEで作業する。
IEのコントロールはのループと同様

FID = FOPEN( "userid.txt", F_READ )
For i = 1 to FGet(FID, F_LINECOUNT)
 ID = FGET( IFID, i, 1 )
 if "" = ID then break
 PW = FGET( IFID, i, 2 )
 ・・・
 IESetData(IE, ID, "user_id")
 IESetData(IE, PW, "user_password")
 ・・・
Next
FCLOSE( FID )


バッチって・・・
774 [sage] 2010/09/19(日) 19:44:10 :b1C4Fa5t0

ありがとうございます

後学の為?にも2番目の方法でチャレンジして見た所、順調に上手く行きました!
今まで、パスワードが同じだったりIDが連番だったりしないと上手くいかなかったのでとても嬉しいです。
3番目の方法も後で試してみたいと思います。
3番目の方法だと、もっと沢山のID/パスでも管理しやすそうですね。
思っていたよりもとても早く回答頂き嬉しかったです。ありがとうございました。
もうちょっと頑張ってみます。


バッチファイルについて調べてみたのですが、けっこう難しそうでした…。
もう少し上級者になったら調べてみたいと思います。
どうもありがとうございました。
名無しさん@お腹いっぱい。 [sage] 2010/09/20(月) 07:02:22 :8b33L39M0
アメーバピグの釣りゲームのスクリプトどなたかご存じないですか?
名無しさん@お腹いっぱい。 [sage] 2010/09/20(月) 23:10:25 :CXKn8urTP
ヘルプで文字列操作というところをよんでみましたが
わかりませんでした
どなたかご教示お願いします
C:\にあるhoge.txtの任意の行をクリップボードにコピーしたいです
コピーするのは1度のコピーで1行です
3行目6行目15行目26行目など
上から数えて任意の行数の部分をコピーしたいです
わかるかたおられましたらご教示お願い致します
名無しさん@お腹いっぱい。 [sage] 2010/09/21(火) 00:00:06 :7n4Rr5MO0

FID = FOPEN( "C:\hoge.txt", F_READ )

SENDSTR( 0, FGET( FID, 3 ) )
MsgBox("next")
SENDSTR( 0, FGET( FID, 6 ) )
MsgBox("next")
SENDSTR( 0, FGET( FID, 15 ) )
MsgBox("next")
SENDSTR( 0, FGET( FID, 26 ) )

FCLOSE( FID )
名無しさん@お腹いっぱい。 [sage] 2010/09/21(火) 00:48:11 :7QfsV4gVP
さん
夜分お疲れのところ即レスすいません
何から何までありがとうございます
心から感謝します
ありがとうございました
名無しさん@お腹いっぱい。 [sage] 2010/09/21(火) 04:06:20 :ZYwDBTUa0

横からいただきます。
ところでこの741さんのスクリプトを繰り返し作業の部分とスリープの部分で分けて、
スクリプト起動時にどっちから始めるか選択するといったことは出来ないでしょうか?
選択1なら普通に頭から
選択2ならスリープの部分から頭に戻るといった具合です。
よろしくご教示お願いします。
名無しさん@お腹いっぱい。 [sage] 2010/09/21(火) 12:16:37 :AROYaxZy0
頭に選択2ならスリープを追加する
名無しさん@お腹いっぱい。 [sage] 2010/09/22(水) 01:26:48 :IHSb8uJl0

> でも、レジストリファイルを用意してそれをダブルクリックしたほうが早くて確実です。
このレジストリはどこですか? ネット検索で調べてもなかなか見つかりません。

> ツリー無しのフォルダのみ表示してるんですか?
その通りです。ツリー付なんて邪魔だし一覧表示が一番便利。
これも最近使ったフォルダの表示形式をどこかのレジストリに記憶させてるはずですよね。

> いや、最近そういうところで飯食ってない・・・
すいません。読み飛ばしました。
自分は自炊派で外でも外食はせず弁当持参です。
名無しさん@お腹いっぱい。 [sage] 2010/09/22(水) 04:37:02 :FbKy5d+S0

一覧表示を勘違いしてた。

1.エクスプローラで目的のフォルダだけを開く
  ttp://www.atmarkit.co.jp/fwin2k/win2ktips/408expopt/expopt.html
2.UWSCで起動したエクスプローラーのメニューを操作して「一覧」を選択

タスクバーの位置はなんか分かりませんね。
すぐ出てくるかと思ったけど・・・

近そうなのはみっけたんだ。
でも、反映されなかったっぽい。
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Streams\Desktop]
"TaskbarWinXP"=hex:0c,00,00,00,08,00,00,00,02,00,00,00,00,00,00,00,aa,4f,28,68,\

APIで位置を知ると言うのがある。これでいじれるかな?と。
#uselib "shell32.DLL"
#func SHAppBarMessage "SHAppBarMessage" int,var

#define ABM_GETTASKBARPOS  $00000005
#define SPI_GETWORKAREA    $00000030

UINT_PTR SHAppBarMessage(
 DWORD dwMessage,     // メッセージ定数
 PAPPBARDATA pData   // APPBARDATA 構造体へのポインタ);
APPBARDATA AppBarData = { 0 }; // 構造体
名無しさん@お腹いっぱい。 [sage] 2010/09/22(水) 04:48:38 :FbKy5d+S0


APPBARDATA AppBarData = { 0 }; // 構造体

// タスクバーの上下左右位置を取得
AppBarData.cbSize = sizeof( APPBARDATA );
SHAppBarMessage( ABM_GETTASKBARPOS, &AppBarData );

上下左右位置
if ( AppBarData.uEdge == ABE_TOP ){
 // タスクバーは上部にある}
else if ( AppBarData.uEdge == ABE_BOTTOM ){
 // タスクバーは下部にある}
else if ( AppBarData.uEdge == ABE_LEFT ){
 // タスクバーは左側にある}
else if ( AppBarData.uEdge == ABE_RIGHT ){
 // タスクバーは右側にある}

これで位置を取得はできるらしい。
言語はいろいろまじりまくってるんでUWSC用に書き換える必要はあります。
アプリケーションバーの情報を取るAPIだけど、APPBARDATA構造体の初期化で0を入れてるので
デスクトップが指定されたことになり、デスクトップのアプリケーションバーがタスクバーと言うことに。

でも変更は出来ないよなあ・・・
・・と思ったら、ABM_SETTASKBARPOSという風に、GetをSetに変えた奴を使えばいいっぽい。
名無しさん@お腹いっぱい。 [sage] 2010/09/22(水) 06:54:08 :FbKy5d+S0

っと思ったけどタスクバーの移動はマウスでドラッグするしかないらしいです。
レジストリいじれば変更はできそうですが、できたとしても再起動が必要でしょう。
タスクバーというか、エクスプローラーを終了させると自動的にタスクバーは再起動されますが、バグるのでやめたほうがいいでしょう。
ttp://fs-cgi-basic01.freespace.jp/~hsp/ver3/hsp3.cgi?print+201001/10040019.txt

手順はこんな感じでしょう。
1.タスクバー(クラス名"Shell_TrayWnd")の座標を取得して一旦ファイルに保存。
2.解像度(デスクトップのサイズ)を取得して移動先を計算。(つっても上に移動だから高さ0に持っていくだけ)
3.マウスボタンをDOWN、マウスをmove、マウスボタンをUPでドラッグできます。mmvとかsleepとかも入れたほうが確実です。

戻すときはファイルを読んで高さ0からそこへ移動。

「タスクバーを固定する」をクリックするのは簡単だけど、
トグルだからどうやって状態を取得したもんか・・・
チェックマークがメニューにテキストとして入っていれば取得できるだろうけど
レイアウトを考えるとメニューテキストには含まれないだろうし。
名無しさん@お腹いっぱい。 [sage] 2010/09/22(水) 07:38:43 :FbKy5d+S0
ttp://www.winapi-database.com/Program/Shell/SHAppBarMessage.html
ABM_SETPOS = &H3  アプリケーションバーの位置とサイズを設定する。
               APPBARDATA構造体のcbSize,hWnd,uEdge,rcの各メンバを
               設定しておかなければいけない。
               なおこのメッセージはタスクバーに対しては効果がない。
名無しさん@お腹いっぱい。 [sage] 2010/09/22(水) 08:00:03 :2qSCpaeG0
目的の操作はできてるんですが、もっと簡略化できるのでは思ってお聞きします。

SELECT RANDOM(7)
CASE 0
KBD(VK_F2,DOWN,100)
CASE 1
KBD(VK_F3,DOWN,100)
CASE 2
KBD(VK_F4,DOWN,100)
CASE 3
KBD(VK_F5,DOWN,100)
CASE 4
KBD(VK_F6,DOWN,100)
CASE 5
KBD(VK_F7,DOWN,100)
CASE 6
KBD(VK_F8,DOWN,100)
selend

これを簡単にできませんか?
名無しさん@お腹いっぱい。 [sage] 2010/09/22(水) 08:15:58 :FbKy5d+S0

#define VK_F1 0x70
#define VK_F2 0x71
#define VK_F3 0x72
#define VK_F4 0x73
#define VK_F5 0x74
#define VK_F6 0x75
#define VK_F7 0x76
#define VK_F8 0x77
#define VK_F9 0x78

連番な事を利用して
KBD( VK_F2 + RANDOM(7), CLICK, 100 )

DOWNを使うならRANDOM(7)の結果を保存しておかないとUPできない。
名無しさん@お腹いっぱい。 [sage] 2010/09/22(水) 14:18:32 :4pWn14nb0
連番じゃなくても
dim a=VK_F2,VK_F3…,VK_F8
kbd(a[random(7)],click,100)
とか。
名無しさん@お腹いっぱい。 [sage] 2010/09/22(水) 15:40:35 :2qSCpaeG0

DOWNの保存についてkwskお願いします。
動作についてはちゃんと動きました。m(_ _)m


変数aについてエラーが出て実行できませんでした。
名無しさん@お腹いっぱい。 [sage] 2010/09/22(水) 16:15:49 :FbKy5d+S0

× dim a  =VK_F2,VK_F3…,VK_F8
○ dim a[ ] =VK_F2,VK_F3…,VK_F8


> DOWNの保存についてkwsk

DOWNしただけでコマンドが実行される場合もあるが、
GUIのボタンは普通、UPした時点でコマンドが発行される。
「書き込み」ボタンをゆっくり時間をかけてクリックしてみれば分かる。

DOWNして動くとついUPを忘れがちだが、2回目のDOWNをしようとしても動かない。
既にDOWN状態にあり、状態は変化しないから。
次回DOWNして動作するようにするには、UPしないといけない。

UPするときも、どのキーをUPするのか指定しなければならない。
100個もあるキーを全部UPはできないから。
具体的には次のようにする。

Key = VK_F2 + RANDOM(7)
KBD( Key , DOWN, 100 )
KBD( Key , UP, 100 )

保存って言うのは、この場合、変数に入れて消えないようにすること。
戻り値を引数として直接渡すと、関数を終了したときに戻り値はどこにもないからね。

この場合はDOWNしたキーのことだと言うのは明白だからDOWN状態は保存してないけど、
キーコードと一緒に状態(DOWN、UP)を保存する場合もあるかな?

あと、変数にもグローバル変数、スタティック変数、オート変数とあって、
関数内の変数は関数を終了すると消えちゃうから、グローバル変数を使わないと保存したことにならなかったりもする。
引数や戻り値として呼び出し元に返す方法もある。
名無しさん@お腹いっぱい。 [sage] 2010/09/22(水) 16:26:59 :FbKy5d+S0
そう言えばクリックの動作はしてるのに動かないことがあるんだよね。
一度なり始めると全然直らない。

例えばDOWNしてからマウスを移動し、フォーカスをはずしてUPするとクリックがキャンセルされるから、
ハードをロックしてない場合はマウスをいじってるせいで失敗することもあるが、
DOWNからUPが短すぎてキャンセルされてることもあるんだよね。

CLICKで指定するときは時間を入れたほうがいいかもしれないな。

でもハードをロックしてないときはできるだけ短いほうが失敗しにくいはず。
失敗するたびに待ち時間を長くするのがいいかな?
名無しさん@お腹いっぱい。 [sage] 2010/09/22(水) 18:43:02 :TZPv3ebl0

昔キーが効かなかった理由がわかりました
DOWNだけだったので押されたままになってたみたいだ・・・

名無しさん@お腹いっぱい。 [sage] 2010/09/23(木) 12:21:26 :krVIb/Jn0

おーサンクス。
win2000+regmonであれこれレジストリ捜したけどダメで…結局APIあるのね。
人様のWinはXPで、UWSCよりWSHの方が無難なのでうちでUWSCで試して
できたらVBScriptにしてみるわ。

フォルダの一覧表示は一度開いてから、メッセージ送ってやればまぁできるんだよね。
本当は毎回開く10ヶ所くらいのフォルダを一変に変更したいんだけど、
まぁ最初に開く一つでもいいや。ALT+V Lは指が覚えてるんだけど。

あと Net use ドライブ名: UNC コマンドでネットワークドライブ割り当てた時、
次回ログイン時に自動接続しようとするんだけど、ログアウト時にスクリプトを
実行しないで(切断しないで)再接続しないようにするにはこんな感じでいいの?

Net use ドライブ名: 共有UNC /parsistant:no

ちなみにファイルサーバはWindowsじゃなくてSamba(NAS)。
名無しさん@お腹いっぱい。 [sage] 2010/09/23(木) 15:41:30 :GiKDWXbk0

いや、出来ると思ってたけどやっぱり出来ませんということで。


> なおこのメッセージはタスクバーに対しては効果がない。

> Net use ドライブ名: 共有UNC /parsistant:no
net use ?
で書式確認してオプション名でぐぐったらいいんじゃね?
名無しさん@お腹いっぱい。 [sage] 2010/09/23(木) 20:32:00 :krVIb/Jn0

よくわからんのだけど、それをもとに調べてたら autoit のフォーラムにこんなの有ったよ。

ttp://www.autoitscript.com/forum/index.php?showtopic=110642

結論は微妙っぽい感じなのでUWSCでマウス操作すんのが一番いいような気がしてきた。
タスクバーって「Shell_traywnd」クラスでアクティブ化すりゃいいんだっけ?
あとは座標0とMAXでボタンダウン・アップすりゃ済みそうだね。
UWSCずっと使ってないからなー。
ありがとー
タスクバーの位置(上下左右)取得 [sage] 2010/09/25(土) 07:44:07 :nifcYOiA0
DEF_DLL FindWindowA( string, Long ) :Long :User32
DEF_DLL SHAppBarMessage( Long, {Long, Long, Long, Long, Long, Long, Long, Long, Long} ) :Long :shell32
CONST ABE_LEFT  = 0
CONST ABE_TOP  = 1
CONST ABE_RIGHT = 2
CONST ABE_BOTTOM = 3
CONST ABM_SETPOS      = $00000003
CONST ABM_GETTASKBARPOS   = $00000005
CONST ABM_WINDOWPOSCHANGED = $00000009
CONST SPI_GETWORKAREA    = $00000030

dim ABD_cbSize = 36
dim ABD_hWnd  = FindWindowA( "Shell_TrayWnd", 0 )
dim ABD_uCallbackMessage
dim ABD_uEdge
dim ABD_rc_Left, ABD_rc_Top, ABD_rc_Right, ABD_rc_Bottom
dim ABD_lParam = true

SHAppBarMessage( ABM_GETTASKBARPOS, ABD_cbSize, ABD_hWnd, ABD_uCallbackMessage, ABD_uEdge, ABD_rc_Left, ABD_rc_Top, ABD_rc_Right, ABD_rc_Bottom, ABD_lParam )
select ABD_uEdge
 case ABE_LEFT
  print "LEFT"
 case ABE_TOP
  print "TOP"
 case ABE_RIGHT
  print "RIGHT"
 case ABE_BOTTOM
  print "BOTTOM"
selend
sleep(10)

取得後にABD_uEdgeを修正してABM_SETPOS を指定すれば、タスクバー以外のアプリケーションバーの位置を移動可能。意味無いけど。
名無しさん@お腹いっぱい。 [sage] 2010/09/25(土) 20:09:15 :ZzNQ/RQo0

どうもお疲れです。
結局SHAppBarMessageでは無理つー事ですよね。
FindWindowA( "Shell_TrayWnd", 0 )の結果は
ほんとに「タスクバー」のハンドルなんすかね?
それともアプリケーションバー全般?
名無しさん@お腹いっぱい。 [sage] 2010/09/25(土) 23:59:04 :nifcYOiA0

> 結局SHAppBarMessageでは無理つー事ですよね。
うん

> ほんとに「タスクバー」のハンドルなんすかね?
頭にShellって入ってるしタスクバーっていう前提でいいんじゃないかな。

FindWindowExAを使って親ウィンドウのハンドルでNULLを指定すれば
確実にデスクトップに張り付いてるバーにはなるけど、
複数のアプリケーションバーをデスクトップに作れるから当てにはならないよね。
名無しさん@お腹いっぱい。 [sage] 2010/09/26(日) 02:09:48 :ZQ942Aat0
ttp://hibari.2ch.net/test/read.cgi/tech/1277465356/119
> すいませんTest.pngをまとめて入力するにはどうしたらいいですか

クリップボードを経由すればおk。

開くところまで作ってみましたが、なかなか大変ですね。
動作確認用にprint文を入れていますが、削除してかまいません。
動作が止まる場合、途中でsleep()を入れる必要があるかも。
特に起動完了までが長いので、起動完了をチェックする必要があります。
// gimp でファイルを開く動作
ID = GETID("GIMP","gdkWindowToplevel")
print "本体ID:" + ID
acw(ID)
MOUSEORG(ID)

// メニューのAlt+F,L(ファイル-場所を開く)を選択
SCKEY( ID, VK_ALT, F )
KBD( VK_L )

DlgID = GetID( "場所を開く", "gdkWindowToplevel", 5 )
print "DlgID:" + DlgID
print status(DlgID, ST_CLASS) // gdkWindowToplevel

// ファイル名をクリップボードに送信
SendSTR( 0, "c:\data\Test.png" )

// 貼り付け
SCKEY( DlgID, VK_Ctrl, V )

// 指定のファイルを開く
SCKEY( DlgID, VK_ALT, O )
sleep(10)
名無しさん@お腹いっぱい。 [sage] 2010/09/26(日) 11:10:04 :qXPQX8aT0

これを実行すると
// メニューのAlt+F,L(ファイル-場所を開く)を選択
SCKEY( ID, VK_ALT, F )
KBD( VK_L )
のばしょでPrintの画面にLが打たれてしまいます
どうすればいいですか?
本体ID:-1
l
↑こうなります。
UWSCの再生を押した直後すぐにGIMP上のウィンドウをクリックしておけば
なんとかなるんですけど
そのGIMPのウィンドウを有効(アクティブ?)にするにはどうすればいいですか?
名無しさん@お腹いっぱい。 [sage] 2010/09/26(日) 12:43:17 :ZQ942Aat0

ACWでアクティブになるはずですが、IDが-1なのでコントロールできていませんね。
IDが正しく取得できていれば正しく処理されるはずです。

すいません。
起動直後とファイルを開いてからとで処理を変えないといけませんでした。
最初の方を次のように書き換えてください。
ID = GETID( "GIMP", "gdkWindowToplevel" ) // ここは同じ。以下を追加。
if -1 = ID then ID = GETID( "GNU Image Manipulation Program", "gdkWindowToplevel" )
ifb -1 = ID
 MsgBox("IDを取得できませんでした")
 exit
endif

テストしているときに起動しっぱなしでファイルも開いていたので、
タイトルの変更を見落としていました。
ウィンドウタイトルに共通部分があればいいんですが、
起動直後の何も開いてないときと、ファイルを開いた後でまったく共通部分がないので2回取得しないといけません。

ACWだとウィンドウ位置が変更されるので、普通にアクティブにするだけのときは
CtrlWin( ID, ACTIVATE ) です。

後はできるだけぐぐって見てください。
uwscをキーワードに入れるとかなり絞れます。
また、独特の関数名なので関数名でぐぐって見てもいいと思います。
効率的な入力のために、エディタの設定をお勧めしますよ。
ttp://makotowatana.ld.infoseek.co.jp/program.html#sakura
シェア版を期間限定で使ってみるのもいいですけど。
名無しさん@お腹いっぱい。 [sage] 2010/09/26(日) 12:50:07 :qXPQX8aT0
ありがとうございます!
いま、>1の方にあったリンクの講座でメモ帳制御と
クリップボードの制御を覚えました!!
なんだか峠越えた感じです!!
ありがとうございます!!
名無しさん@お腹いっぱい。 [sage] 2010/09/26(日) 15:29:44 :ZQ942Aat0



全角スペースの問題が解決してなかった。
全角スペース対応版

-- 拡張子除去(全角スペース対応版).bat --
set x=%*
for %%i in (%x: =?%) do ren "%%~i" "%%~ni"

2行になっちゃった。
さすがに変数使うんで1行にはならないが。



ファイルを開くコマンドもそうですが、操縦しやすい方法とかソフトを選ぶのも重要なのでお忘れなく。
UWSCはGetSTRとかGetItemとかでテキストデータを取得できますが、
gimpのデータは拾えなさそうなので、
スクリプトを組む前にUWSCのスクリプトで目的のデータが見えるかどうかを調べてください。
ざっと調べるツールは公開されたのがどっかに落ちてると思うので。
名無しさん@お腹いっぱい。 [sage] 2010/09/26(日) 19:38:00 :qXPQX8aT0
// 文字列に指定文字列があるか探す
戻値 = POS( 探す文字, 探される文字列, [n個目] )
引数
 探す文字: 探したい文字列
 探される文字列: 探される文字列

今、↑ヘルプのコマンド集を読んでいますが
もしかして文章の中にpngという単語が何個あるか調べる
コマンドは無いのですか?
名無しさん@お腹いっぱい。 [sage] 2010/09/27(月) 00:42:08 :nng/jfgY0

そこらへんはちょっと不自由な言語です。
あるものを有効に使うとか、いろいろ組み合わせるとかの工夫は必要です。

しかし、POSはn個目の指定があるので、1個目から順に見つけていけば数は数えられますよね。
数が増えれば増えるほど時間がかかりますが・・・

処理効率を求めるなら、TOKENが使えます。
ただ、TOKENは文字列を指定できません。
そこで、REPLACE(CHGMOJ)で区切り文字に使える文字に置き換えます。
置き換える先が既に使われている可能性がありますが、それはあらかじめ消しておきます。
HTMLは改行コードは無視できる文法だったと思うので、TABコードを使うべきかと思います。

Replace( str, "<#TAB>", "" )   // 既存の区切り文字を消す
Replace( str, "png", "<#TAB>" ) // 区切り文字を置換
cnt = 0
while "" <> Token( "<#TAB>", str )
 cnt = cnt + 1
wend
cnt = ZCUT(cnt - 1) // 区切り文字の個数は、切り出したトークンの個数−1
print "個数:" + cnt
sleep(10)

他には、正規表現オブジェクトを使う方法があります。
UWSCはOLEオブジェクトを扱えるので、パターンマッチした個数を受け取れます。
ttp://www.google.co.jp/search?q=RegExp%20uwsc
名無しさん@お腹いっぱい。 [sage] 2010/09/27(月) 00:45:29 :nng/jfgY0
Replaceの使い方ミス

×
Replace( str, "<#TAB>", "" )   // 既存の区切り文字を消す
Replace( str, "png", "<#TAB>" ) // 区切り文字を置換


str = Replace( str, "<#TAB>", "" )   // 既存の区切り文字を消す
str = Replace( str, "png", "<#TAB>" ) // 区切り文字を置換

ま、動作を確認したコードじゃないのでヘルプを参照したりprint文などを挿入して動作をチェックしてください。
名無しさん@お腹いっぱい。 [] 2010/09/27(月) 02:02:23 :1ul5SqODO
やはり無いのですね。
有り難うございます。
お陰様でプログラムの完成のめどがつきました。
つくって頂いた部分が凄く参考になり
助かりました。

しかし、シンプルなのに強力なソフトですね。
実は
憧れのWindows上で色々動くプログラムが作れて
感動しています。
名無しさん@お腹いっぱい。 [sage] 2010/09/28(火) 00:38:43 :HCJum0i10
ついに出来ました。
色々教えて頂きありがとうございます!!
Mypaintの.oraをGimpで開くプログラムです。
詳しい使い方は中に入ってる使い方.txtです。
ttp://www.dotup.org/uploda/www.dotup.org1170021.zip.html
疲れたおっお〜。
名無しさん@お腹いっぱい。 [sage] 2010/09/28(火) 23:08:55 :HCJum0i10
あの〜uwsc内で「"」を使うにはどうしたらいいですか?
例えば
こんにちは→"こんにちは"
のようにしたい場合はどうすればいいですか?

ピング名=(ピング名+ " " + ""henkan0" +i+".png"")
ていう命令を作ったらエラー出ましたOTL
名無しさん@お腹いっぱい。 [sage] 2010/09/28(火) 23:19:46 :sHF43eL60

お前バッチファイルスレで%~dnp1とかstack.xmlとか書いてた奴と同一人物?

全くヘルプ読む気無いのな。
ヘルプの極々最初の方に書いてあるだろが。
名無しさん@お腹いっぱい。 [sage] 2010/09/28(火) 23:25:22 :Rvh5bTPz0
スクリプト
└スクリプト構文
 └文字列処理
   「文字列に改行を含める時は <#CR>、 ” を含める時は<#DBL>です」

正直ヘルプ読みにくすぎてあんまり読む気は起きないけど我慢して読めよ
名無しさん@お腹いっぱい。 [sage] 2010/09/28(火) 23:28:23 :HCJum0i10


じつにごめんOTL
他の命令とかはかなりヘルプ読んだりしてたけど
そういう基本的な事って載ってないかと本気で思ってた・・・
本当にありがとう
名無しさん@お腹いっぱい。 [sage] 2010/09/30(木) 00:15:04 :YhQrTpms0
ttp://www.dotup.org/uploda/www.dotup.org1173513.zip.html
フォトショのpsdファイルからMypaintの.oraに変換するプログラムも出来た。
残念ながら一部手動でかなりのむりくり・・・。OTL

えーと、zipに圧縮するところどうしてもうまくいかなかった。

ご協力ありがとうございました。
名無しさん@お腹いっぱい。 [sage] 2010/09/30(木) 21:32:38 :E2nB0/d70
UWSCがスクリプトへの興味の持ち始めてでAutoHotkey、JSFL、Photoshop Scriptingなどに手を出す日々
名無しさん@お腹いっぱい。 [sage] 2010/10/02(土) 01:48:59 :6TYa9boH0
FireFox関係用語
 XPCOM
 XPConnect
 pyXPCOM
 XUL
 XULRunner
 UserChrome.js
 iMacro

* JavaScript: XPConnect (これは Firefox に含まれています。 XUL アプリケーションで利用されています)
* Java: JavaXPCOM (これは Firefox には含まれていませんが、XULRunner の標準のビルドには梱包されており、また Eclipse のアプリケーションで利用されています)
* Python: PyXPCOM (これは標準のビルドには含まれていませんが、 ActiveState Komodo 製品では利用されています)
* Perl: PlXPCOM
* Ruby: RbXPCOM

HTAっていう、HTMLをローカルアプリのように実効できる、XULRunnerっぽいものがあるが、COMで操作できない。
が、Htabox2っていうフリーソフトでCOM操作できるようになっているようです。

ちなみに、mshta.exe "javascript:new ActiveXObject('InternetExplorer.Application');"
とかする方法が紹介されているが、これは裏で通常のIEを起動しているのでごみが残る。
名無しさん@お腹いっぱい。 [] 2010/10/02(土) 02:24:00 :YThMkDSv0
こんぼぼっくすをひとつのういんどうにふくすうはいちするのってどうするのん?
名無しさん@お腹いっぱい。 [sage] 2010/10/02(土) 04:41:40 :6TYa9boH0

Pro版の話なら本家で聞けば。
HTAの話ならHTAのスレで。

UWSCフリー版にはSLCTBOX()くらいしか無いよね。
SLCTBOX()の場合、カンマで区切るか、配列を渡せば複数データを持たせることは出来る。
でも、コントロールは一つ。
だから、2種類あるなら2回表示すればいいよ。
名無しさん@お腹いっぱい。 [] 2010/10/02(土) 17:37:03 :ItuC9Hc80 ?2BP(0)
質問させて下さい。

a.uwsを12回ループ後
b.uwsを1回

この作業を延々と繰り返したいと思っており

別でc.uwsを作成し
aを12回繰り返し>bを1回

更にd.uwsを作成しcを無限ループさせる記述をしようと考えたのですが
c.uwsに記述する方法がまったく分からず困っております…

どの様に記述したら良いのでしょうか?
名無しさん@お腹いっぱい。 [] 2010/10/02(土) 18:04:27 :uHeDDzc80
//c.uws
for i=0 to 11
call a.uws
next
call b.uws

//d.uws
while true
call c.uws
wend

//dイラネ
while true
for i=0 to 11
call a.uws
next
call b.uws
wend
822 [sage] 2010/10/02(土) 18:13:59 :ItuC9Hc80 ?2BP(0)

やっぱりdはいりませんでしたか…

両パターン出して頂きありがとうございます。
名無しさん@お腹いっぱい。 [sage] 2010/10/03(日) 16:13:43 :ORu8bxIi0
XP時代に def_dll Beep(long, long):long:kernel32.dll で
sound関数使わずにbeep音鳴らしてたんだけど、win7の64bitでは
これもsound関数と同じくスピーカー出力になるんだな…
名無しさん@お腹いっぱい。 [sage] 2010/10/03(日) 16:14:53 :ORu8bxIi0
肝心の質問忘れてた

どうにかしてUWSCからwindows7の64bitでビープ音鳴らすことは出来ない?
名無しさん@お腹いっぱい。 [sage] 2010/10/03(日) 18:35:44 :3p6j4w+t0

自分でビープ音っぽいwav作って鳴らせばよくない?
名無しさん@お腹いっぱい。 [sage] 2010/10/03(日) 20:57:43 :ORu8bxIi0
いや問題なのはその反応速度で音自体じゃないんだ。
スクリプトの動作中にデバッグ用に200ms音を出してたんだけど
(動作中にピポボペプポみたいに音が鳴るw)
これがwavファイルだとまともに鳴らなかったりブチブチ切れたりと
ちゃんと鳴らなくなるんだ。

i=200
Beep(262, i) // ド
Beep(294, i) // レ
Beep(330, i) // ミ
Beep(349, i) // ファ
Beep(392, i) // ソ
Beep(440, i) // ラ
Beep(494, i) // シ
Beep(523, i) // ド

ちなみにこんなのでドレミが出るんだけど、これをwin7x64でやると
プチプチ音が3つほど出るだけで音楽にならん。
名無しさん@お腹いっぱい。 [sage] 2010/10/03(日) 22:00:51 :0t9Scks10

「Windows +7 beep」でぐぐったら一番に出てくる
Vista x64からはスピーカーで鳴らすことになってるということだから、プチプチ音はデバイスの準備(電源投入)の衝撃音かも。

ttp://cpplover.blogspot.com/2010/01/windows-7beep.html
> Windows Vistaでは、僕は設計をやりなおして、障害者補助のbeepの仕組みを、新しい「ユーザー・モード・システム・サウンド・エージェント」に移した。
> この問題のあるパソコンというのは、64bit機だけだから、この機能は64bit版Windows限定の話だよ。

> Beep呼び出しを、システム・オーディオ・ハードウェアにリダイレクトすることで、
> サウンド・ハードウェアは、必要になるまで、スリープさせておけるようになったんだ。
名無しさん@お腹いっぱい。 [sage] 2010/10/03(日) 22:16:21 :ORu8bxIi0
へー そんな事があったんだ…

そしてbeepの反応が悪いのはリアルタイムじゃないからか…
というかwindowsのx64のOSじゃ事実上PCのbeepスピーカーは鳴らせないってことかな。
名無しさん@お腹いっぱい。 [sage] 2010/10/03(日) 22:33:32 :0t9Scks10
仮に、音が鳴らないのが、スピーカーとかに電源投入するのが間に合ってないだけなら、
裏で無音のwavを鳴らしっぱなしにしておけばいいかも。

もしくは、音を鳴らせるようにデバイスの準備をするとか。
その場合ちょっと難しいね。DLL呼び出すか、・・・演奏ソフトを起動しておくだけでいけるかな?
名無しさん@お腹いっぱい。 [sage] 2010/10/04(月) 00:58:33 :nvghzqRM0
UWSCで作った常駐型EXEをタスクトレイに格納するには
どうすればよいのでしょうか?
名無しさん@お腹いっぱい。 [sage] 2010/10/06(水) 18:20:43 :smEf2QjM0
出来ない
諦めるかAHKやAutoITに乗り換える
832 [sage] 2010/10/06(水) 20:53:41 :TFov1LAY0

ありがとうございます。
できないのか・・・(´・ω・`)
名無しさん@お腹いっぱい。 [] 2010/10/12(火) 14:28:54 :1L0ROS/70

count()のsleep()方法だとかなりの誤差が出てくるので、
sleep()の代わりに使うtick()関数を作った。

GetTime()を使うけどSleep時間を計算してSleepするので負荷はかからない。

// tick(3) とすると、3秒刻みでSleepします。
// 呼び出しが遅れるとアクセサリのアナログ時計の秒針のように、飛ぶことがあります。
// なので、呼び出し回数×刻み時間が正しい時間になる保証はありません。
Function tick(t_cnt=1)
 t = gettime()
 sleeptime = (t_cnt - t mod t_cnt) * 1000 - G_TIME_ZZ
 sleep(sleeptime/1000)
 result = sleeptime/1000
Fend

この関数でもSleep後の時刻に数十ミリ秒のばらつきが出ます。
それをなくすにはやっぱりGetTime()のループにする必要がありますが、15ミリ秒単位でしか時刻を取れないので、
GetTime()のループにはSleep(0.015)を入れます。
SleepなしだとCPU100%張り付きですが、秒間の回数が66回になるので全然軽いです。

ここまでやってもCPUが他の作業をしているとやっぱり幾分ばらつきが出てしまいます。
さすがにそれ以上を求めるならスクリプトをあきらめてマルチメディアタイマーとかを使うことになるでしょうね。
名無しさん@お腹いっぱい。 [sage] 2010/10/12(火) 14:33:34 :eaexelUm0
時間を気にするシビアなものはuwscは不向き
名無しさん@お腹いっぱい。 [sage] 2010/10/12(火) 14:53:50 :1L0ROS/70
いや、こないだの'10年10月10日10時10分10秒に投稿するイベントのときに、
それをやってくれるスクリプトがあったらいいなと思って、クリックするタイミングを調整する関数を作ってたんです。

以前にも作ったことはあったんだけどね。
なんか無理やりなコーディングだったのでもうちょっとスマートにしたいなと。

Vipperでは小数点以下二桁まで.10に合わせた投稿が2件あったので、
UWSCでどこまで近づけるかなあとやってみました。
どの道通信回線で数十ミリ秒のズレがあるし、ネイティブ言語でも普通のタイマー使うんならUWSCでも同じ結果だし。

ちなみに↓がGetTime+15ミリ秒刻みの微調整。繰り上がり処理がポイント。
 recentZZ = 0
 Rize = 0
 Repeat
  sleep(0.015)
  gettime()
  if G_TIME_ZZ < recentZZ then Rize = Rize + 1
  recentZZ = G_TIME_ZZ
  ZZ = Rize * 1000 + G_TIME_ZZ
 Until (zcut(1000 + ZZ2 - ZZ1) mod 1000) < ZZ
名無しさん@お腹いっぱい。 [sage] 2010/10/12(火) 16:22:31 :y9xjdbJA0
質問なのですが
if GETKEYSTATE(VK_ESC) then a=1
これはESCが押されたときにa=1になるのだと思うのですが
これをESCが押されて、離したときにa=1にする方法って有るのでしょうか?
初歩的な質問ですいません
名無しさん@お腹いっぱい。 [sage] 2010/10/12(火) 16:45:56 :1L0ROS/70

ifb GETKEYSTATE(VK_ESC)
 fukidasi("押した")
 while GETKEYSTATE(VK_ESC)
  // キーは押されている
  sleep(0.015)
 wend
 a = 1
 fukidasi("離した")
endif

ループにしない場合はフラグをセット

A
if GETKEYSTATE(VK_ESC) then flag = true

B
ifb flag
 ifb ! GETKEYSTATE(VK_ESC)
  flag = false
  a = 1
 endif
endif
名無しさん@お腹いっぱい。 [sage] 2010/10/12(火) 17:27:09 :y9xjdbJA0

素早い回答ありがとうございました^^
希望通りの動きをしています。
助かりましたー感謝です。
名無しさん@お腹いっぱい。 [sage] 2010/10/13(水) 00:01:58 :9ud6QMM30

gettimeの値でスリープ時間調整するともう少し正確になると思うけど
名無しさん@お腹いっぱい。 [sage] 2010/10/13(水) 05:25:58 :qSLCqwxU0

ifb ! ((G_TIME_ZZ + 15) mod 125 - 13) mod 47
 sleep(0.015)
else
 sleep(0.016)
endif

こんな感じでやってみたけどだめだ。


G_TIME_ZZ の取りうる値は13〜998のうち15〜16の間隔ごとの64個の数値なので
計算でどちらになるのかは導き出せる。
でも、sleeptimeをどう調整すれば重複なく全ての数値を取り出せるのか分からない。

14〜17くらいの数値をいろいろ入れてみたけど、重複したり飛ばしたりして、
1秒間あたりが61個とか68個にしかならない。
その中間というのが、ばらつき以外では出てこないんだね。

16ミリ秒を含めると61個以下になって飛ばしてしまうので、結局68個拾ってくれる15ミリ秒でいくしかないよ。

UWSC自身の処理時間が影響するのかどうか・・・
そう言えば、テスト用のコードを除去すると成績が上がるんだよね。
その都度printできないので配列に入れてるんだけど、それがすこし影響するっぽい。

でも、15ミリ秒でばらつき出てたからもうしょうがないんじゃないかな。
5ミリ秒とかいっそのことsleepなしでまわさない限りどっかでずれ込む。

ネイティブコードでも優先度の高いプログラムが動いてると後回しにされてしまうわけだし、
指定時間できっちり動かすには実行優先度を上げるしかないと思う。
他のプログラムと連携するUWSCで優先度を上げるわけにはいかないし。

sleepなしだと割りと正確になるのは多分優先度が少し上がるからだと思うけど、CPU使用率を下げるためのsleepなので。
名無しさん@お腹いっぱい。 [sage] 2010/10/15(金) 10:14:13 :xkC5Phz10
つい先日知って、マウスの動きとかを記録してつかってるレベル
なのですが、ちょっとお聞きします。

ゲームでマウス右を押し続けて動かすことで視点を変更する。
これでマウスを水平に動かすことで視点を180度回転させたいのですが
手動でやるとどうしても上下にぶれてしまいます。

スクリプトでする場合はどうすればいいのでしょうか?
名無しさん@お腹いっぱい。 [sage] 2010/10/15(金) 11:39:43 :8DB5reMV0
y軸の値を変えずにx軸だけ変えればいいじゃん?
名無しさん@お腹いっぱい。 [sage] 2010/10/15(金) 17:40:21 :/cSljJiS0
printで書いた文字をすっかり同じ内容に時間をつけてTEXTファイルに出力したく

PROCEDURE log(mozi)
print mozi
//文字列をカレントディレクトリにあるログ.logに収納する。
FILE_NAME = "ログ.TEXT" //ファイルの名前
PUBLIC F2ID
F2ID = FOPEN(FILE_NAME, F_WRITE)
GETTIME()
YY = G_TIME_YY
MM = G_TIME_MM
DD = G_TIME_DD
HH = G_TIME_HH
NN = G_TIME_NN
SS = G_TIME_SS
時刻 = YY+"/"+MM+"/"+DD+" "+HH+":"+NN+":"+SS
SENDSTR(F2ID,時刻 + mozi)
FEND

というプロシージャ?を作成したのですが、ログ.textは作成されるのですが
中に何も書かれず、そのままのままです。
行き詰っております。ご伝授いただけると幸いです。
名無しさん@お腹いっぱい。 [sage] 2010/10/15(金) 18:00:29 :6UXbdqsd0

ファイルIDとウィンドウIDとは別種のものですよ。
F2IDに対してSENDSTRはできません。

FOPEN したら FCLOSE しないといけないし、
書き込みには FPUT を使います。
845 [sage] 2010/10/15(金) 18:44:25 :/cSljJiS0

返答ありがとうございます。
"ID"とつくので同じものだと思っておりました…
ご指摘の通り
//省略
F2ID = FOPEN(FILE_NAME, F_WRITE)
//省略
FPUT(F2ID,時刻 + mozi)
FCLOSE(F2ID)
FEND
の処理を行った場合書き込めたには書き込めたのですが
log()を呼び出すたびにFCLOSEが行われ
たとえば
log("りんご")
log("みかん")
とやった場合、時刻 + みかん
としかログが残されません。古いほうは上書きされ消されてしまいます。
終了時にFCLOSEをつける方法以外に
上書きではなく過去のに追加していく方法はございませんか・・・?
よろしくお願いします。
845 [sage] 2010/10/15(金) 18:47:41 :/cSljJiS0
自分で読み直してみて
私って少し読みにくい文を書いていましたね・・・

訂正です
(誤)終了時にFCLOSEを
(正)スクリプトの終了時にFCLOSEを
名無しさん@お腹いっぱい。 [sage] 2010/10/15(金) 19:30:49 :mWax+iiO0
そんな長々と書き込むよりも
ヘルプ見りゃ一発でわかると思うんだけどなぁ
名無しさん@お腹いっぱい。 [sage] 2010/10/15(金) 20:08:00 :6UXbdqsd0
ヘルプには
  行: 書込み行 (1から指定)     0(デフォルト)で行末に追加
ってあるから、間違ってはいないはず。

もしかしたらFPUT〜FCLOSE〜再度のFPUTまでが速すぎて反映される前に空っぽのファイルに書き込んでるのかも。

Module化したらFOpenは自動化できるんだけど、FCloseは自動化できないんだよね。
まあスクリプト終了時にはFCloseしなくても問題ないと思うけど・・・

MODULE Log
 DIM FID
 PROCEDURE Log()
  // 自動的に呼ばれる
  FID = FOPEN〜
 FEND
ENDMODULE

僕の場合はDOSコマンドで吐き出してるけど、カレントディレクトリがWindowsのシステムになるんだっけ。
ちゃんとディレクトリ指定しないといけない。
GET_UWSC_DIR はUWSC本体の場所だからあんまりよくないんだけど。
あと、使っちゃいけない文字列があるんで置き換えとか必要。
text = Replace(text, ">", ">")
text = Replace(text, "&", "&")
DOSCmd("echo " + G_TIME_YY4 + "/" + G_TIME_MM2 + "/" + G_TIME_DD2 + " " + G_TIME_HH2 + ":" + G_TIME_NN2 + ":" + G_TIME_SS2 + "<#TAB>" + text + ">> <#DBL>" + GET_UWSC_DIR + "\" + LogFileName + "<#DBL>")

DOSコマンド実効例
> echo 2010/10/14 08:17:31 テキスト>> "c:\protram files\uwsc\log.txt"
845 [sage] 2010/10/15(金) 21:30:43 :/cSljJiS0

返答ありがとうございます。
貴方の書かれたDOSCMDを用いた方法では望んだ効果が得られました。
しかし、モジュール化やクラス化も良くわかっておりませんし
DOSコマンドも同様ですが適当にいじって覚えて生きたいと思います。

>もしかしたらFPUT〜FCLOSE〜再度のFPUTまでが速すぎて反映される前に空っぽのファイルに書き込んでるのかも。
途中にsleepを入れても結果としては変わりません。FOPEN-FPUT-FCLOSEを行うと
以前書いてあったものは上書きされて消されてしまうようです。
名無しさん@お腹いっぱい。 [sage] 2010/10/15(金) 21:37:24 :OFi1ZnFI0

> 途中にsleepを入れても結果としては変わりません。FOPEN-FPUT-FCLOSEを行うと
> 以前書いてあったものは上書きされて消されてしまうようです。

> F2ID = FOPEN(FILE_NAME, F_WRITE)

当たり前やがなw
これは既存ファイルが無ければ作り、あれば上書きって意味だぜ。
ちゃんとヘルプ読んでるか?

> 戻値 = FOPEN( ファイル名, [オープンモード] )
> 引数
>  ファイル名: テキストファイル名
>  オープンモード: 以下の方法で指定
>    F_READ        // 読み専用モード(デフォルト) SJIS、UTF8、UTF16に対応
>    F_WRITE      // 書き専用モード(既にファイルがあれば前の情報は消去)
                           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>               (UNICODEがある場合に UTF8、無い場合にはSJISになる)
>    F_READ or F_WRITE // 読み書き両用指定
                   ~~~~~~~~~~~~~~~~~~~~
名無しさん@お腹いっぱい。 [sage] 2010/10/15(金) 21:47:24 :OFi1ZnFI0
ちなみに上のdoscmdの奴はわざわざUWSCで時刻取得せんでも

doscmd("echo %date% %time%<#TAB>" 〜
とかやれば済むと思うが。
845 [sage] 2010/10/15(金) 21:49:02 :/cSljJiS0

( ゚Д゚)・・・
申し訳ございません…
読んでいたつもりだったのですが…

大事なところは読み飛ばしていた or 解釈ミスをしていたようです…
と、とりあえず、おかげでDOSコマンドを使わずとも
求めていた動作ができるようになりました。
ありがとうございました。
PROCEDURE log(mozi)
print mozi
//文字列をカレントディレクトリにあるログ.TEXTに収納する。
FILE_NAME = "ログ.TEXT" //ファイルの名前
PUBLIC F2ID
F2ID = FOPEN(FILE_NAME,F_READ or F_WRITE)
GETTIME()
YY = G_TIME_YY4
MM = G_TIME_MM2
DD = G_TIME_DD2
HH = G_TIME_HH2
NN = G_TIME_NN2
SS = G_TIME_SS2
時刻 = YY+"/"+MM+"/"+DD+" "+HH+":"+NN+":"+SS
FPUT(F2ID,時刻+" "+mozi)
FCLOSE(F2ID)
FEND

F_READ or F_WRITEにすればよかっただけという結果でとても恥ずかしい限りです。
名無しさん@お腹いっぱい。 [sage] 2010/10/16(土) 09:33:28 :bvF2DK/d0

すいません。見落としてました。

> doscmd("echo %date% %time%<#TAB>" 〜
ナンテコッタイ
こんな簡単になるんですね
名無しさん@お腹いっぱい。 [sage] 2010/10/16(土) 12:42:10 :w82/cB5E0
845か?
簡単と言ってもdosの環境変数だからdoscmd内専用で基本的にUWSCでは使えないよ。
date = doscmd("echo %date% %time%")
みたいにでもしない限り…

<#DBL>とか<#CR>とかとは別物だから勘違いしないでね。
名無しさん@お腹いっぱい。 [] 2010/10/17(日) 22:52:50 :7zIh4rNT0
レベル低いけど失礼します
エクセルのオートフィルってどうやるんでしょう?
Excel.Range("B1").Select.AutoFill Destination:=Range("B1:B3")
VBAの見よう見真似のこれじゃダメだったです
名無しさん@お腹いっぱい。 [sage] 2010/10/24(日) 10:50:45 :i+bggReu0
実行中のスクリプトを途中で止めたいときはどうすればいいんですか?
UWSCの停止ボタンは見えてるんですが、マウス、キーボード操作が
スクリプトでコントロールされてクリックできなくなったので、スクリプトが終わる
まで、じっとしてました。
また、HELPはネットワーク越しでは参照できないとのことですが、こういった
基本的な使い方がわかるサイトとかありますか?
名無しさん@お腹いっぱい。 [sage] 2010/10/24(日) 13:03:08 :E1U9/Hvj0
なんでこうヘルプ読まない馬鹿が多いの?
名無しさん@お腹いっぱい。 [sage] 2010/10/24(日) 18:51:09 :6TU6AlOp0

ヘルプファイルをネットワーク越しにコピーしないの?
名無しさん@お腹いっぱい。 [sage] 2010/10/24(日) 19:51:18 :mrYvHaWA0

それね、管理者に堂々と「HELP」が参照できませんよ。
って言って大丈夫。
それでも対応が遅かったら、「uwsc.chm」のアクセスブロック
を解除してくださいって迫ったほうがいい。
単純に、停止や中断がしたいなら
中断→Alt+F1、停止→Alt+F2だよ。
お互い社会の底辺だと思うけど、がんばろうな。
名無しさん@お腹いっぱい。 [sage] 2010/10/24(日) 22:34:13 :rW0/trFT0
ヘルプ読みづらすぎるしな
読む気が失せる
でも俺は読むけど
名無しさん@お腹いっぱい。 [sage] 2010/10/25(月) 16:22:11 :vCnsyAkv0
ここで質問したりソースを探してネットを彷徨ったりしたあげく、あとでHELPを見ると必要なことはすべて書いてあったことに気づく。
しかし知らない状態でHELP読んでスラスラスイと分かるヘルプでもないんだよな…
名無しさん@お腹いっぱい。 [sage] 2010/10/25(月) 19:12:39 :MMxN71Tq0

漏れはこの言語ではここはこういう仕様になってるのかとか読めたよ
まーその前から趣味でコンピュータ言語マニアだからだろうけど
ただし実生活とは無関係だったりするw
名無しさん@お腹いっぱい。 [sage] 2010/10/31(日) 05:36:03 :O6d4yfAy0
誰も居ないかもしれませんが質問させて下さい。フリー版使用しています。
Google Chromeで動作中のブラウザゲームを自動化しようとしていましたが、動作の記録を行ってそれを動かしてみると、殆ど動きがない状態です。
中身を見た感じACWとMMVだけなので、フォーカスが移ってから第一クリックまでのマウスの動きまでしか記録されていないような状態だと思われます。
正しく記録するための解決法などありますでしょうか?
名無しさん@お腹いっぱい。 [sage] 2010/10/31(日) 06:16:07 :6UQrt3lz0
単純にマウスの動作を再現できればいいということなら、
メモ帳とかペイント上でイメージしながら操作し、記録する手があります。
記録後、適正な操作対象アプリをACW()で呼び出すように変更します。

何もないと座標が分からないでしょうから、
操作対象をAlt+PrintScreenでキャプチャしてペイントに貼り付け、キャプチャ画像上でシミュレーションします。

さらに、ペイントをキャプチャしてペイントに貼り付け、編集エリアの左上端の座標を求めます。
記録した座標から左上までの座標を差し引けばズレを補正できます。
対象窓の左側と上側を操作する必要がなければ、最初から画像をずらして正しい座標を記録する方法もあり、
こちらの方が再計算が不要なのでお奨めです。
名無しさん@お腹いっぱい。 [sage] 2010/10/31(日) 06:28:34 :O6d4yfAy0
ある程度想像してはいましたけど、そういう方法も有効でしたか。
少し手間がかかりそうなので、時間があるときにやってみます。ありがとうございました。
名無しさん@お腹いっぱい。 [sage] 2010/11/05(金) 07:17:31 :iemZMwqV0
CLKITEM(id, "●●", CLK_ACC)はどうやってクリック対象を選んでいるのでしょうか。
同じようなボタンでも押せるボタンと押せないボタンがあって困っております。
ご存じの方教えてください。
名無しさん@お腹いっぱい。 [sage] 2010/11/06(土) 00:16:19 :igHQsvQM0
特定の座標を四つランダムに選択したいんですけどどうしたらいいですか

zahyou1 = BTN(LEFT, CLICK, 100, 100)
zahyou2 = BTN(LEFT, CLICK, 200, 100)
zahyou3 = BTN(LEFT, CLICK, 100, 200)
zahyou4 = BTN(LEFT, CLICK, 200, 200)

とやったとして4つの変数をランダムに選択するにはどうしたらいいのかわかりません
random()は数字しか受け付けないみたいでもうどうしたらいいのか
名無しさん@お腹いっぱい。 [sage] 2010/11/06(土) 00:34:14 :HVxNMhti0
質問失礼致します

拾い物を編集しようと思うのですが

PUBLIC key,keyold,keyon,keyoff,item
key=0;keyold=0;keyon=0;keyoff=0
while True

if GETKEYSTATE(VK_F12) then exit
IFB PEEKCOLOR(512, 384) = $0000FF
KBD(VK_Ctrl,DOWN)
ELSEIF PEEKCOLOR(512, 384) <> $0000FF
KBD(VK_Ctrl,UP)
endif
keySet()
SLEEP(0.01)
wend

Procedure keySet()
DIM keych; keyold = key; key = GETKEYSTATE(VK_LSHIFT)
keych = key XOR keyold; keyon = key AND keych; keyoff = keyold AND keych
Fend

座標地点の色が赤($0000FF)になった時に
Ctrlが入力されるようになってますが
座標地点の色が赤($0000FF)になった時に
Ctrlの後にRも入力されるようにするにはどうすればいいのでしょうか
Ctrl,down の後に r,down を追加すると
座標地点の色が赤でないときもRを入力し続けてしまいました
名無しさん@お腹いっぱい。 [sage] 2010/11/06(土) 03:09:05 :lDkYAyjO0

変数を配列化してランダムな数字を配列の添え字にするとか
eval(zahyou + (random(3)+1)) として変数名を文字列連結して文字列演算するとかあるけど

> zahyou1 = BTN(LEFT, CLICK, 100, 100)

これはbtn()の結果を格納するだけの話だね。
そういう処理をしますよっていう関数ポインタとはならない。


> 座標地点の色が赤でないときもRを入力し続けてしまいました
ちょっとよく分からない症状だけど、押しっぱなしになってるんだろうから、UPをしないとだめだよ。
あと、それぞれのキーは、クリックに23ミリ秒〜50ミリ秒くらいかかるから、
それくらいは時間をかけるようにしないと。
間にsleep(0.023)を入れるか、kbd(vk_r, up, 23)にするとか。
あと、文字キーは基本的にdown, upじゃなく、click(デフォルト)にするべき。
名無しさん@お腹いっぱい。 [sage] 2010/11/06(土) 08:00:21 :HVxNMhti0

クリックにしてみると常にCtrlを入力し続けてしまいました
座標地点の色が赤になったときに1回だけ〜を実行するという形は
どのようにすればいいのでしょうか?
名無しさん@お腹いっぱい。 [sage] 2010/11/06(土) 11:37:39 :Tbb3g0aB0
UWSCで処理したデータをグラフ(棒グラフ)で表示させたいのですが、どういうやり方がいいでしょうか?
エクセルにデータを渡してグラフを描画する方法ですかね?
名無しさん@お腹いっぱい。 [sage] 2010/11/06(土) 12:26:18 :igHQsvQM0

今は理解出来ないのでeval、文字列連結、文字列演算を勉強してきます
関数の格納は出来ないんですね・・・これから気をつけます
知るべきところがハッキリしてやる気が出ました
ありがとうございます
名無しさん@お腹いっぱい。 [sage] 2010/11/06(土) 14:45:45 :lDkYAyjO0

ああ、ずっと赤なんですね。
previous って変数に前回の状態を保存しておきましょう。
で、IFB PEEKCOLOR(512, 384) = $0000FF の結果をfRedに代入

dim previous = false

while true
 fRed = (PEEKCOLOR(512, 384) = $0000FF) // UWSC特有の式で、判定結果の代入ができる。
 // fRedはtrue, またはfalse
 
 IFB fRed and ! previous // previousがfalse(ひっくり返してtrue)でかつfRedがtrue、つまり、赤に変わったときに実行。
  kbd()
 ENDIF
 
 previous = fRed //今回の判定結果を保存して持ち越し
 sleep()
wend


エクセル必要でしょう。
ちょっとの量ならエクセル起動して貼り付けでいいけど、量が多いならテキストファイル(.csv)に保存してエクセルで開いて処理が確実。
でも、いっそのことエクセルだけで処理した方が・・・・
名無しさん@お腹いっぱい。 [sage] 2010/11/06(土) 19:52:38 :HVxNMhti0

説明下手ですみません

やりたい事を要約すると
座標地点が赤になった時にだけCtrl→R という順番に入力してほしいのです

この方法で試してみます
ありがとうございます
名無しさん@お腹いっぱい。 [sage] 2010/11/06(土) 22:54:07 :Xv6Qw2yH0

n = RANDOM(100)
ifb n > 75 then
zahyou1 = BTN(LEFT, CLICK, 100, 100)
elseif n > 50 then
zahyou2 = BTN(LEFT, CLICK, 200, 100)
elseif n > 25 then
zahyou3 = BTN(LEFT, CLICK, 100, 200)
else
zahyou4 = BTN(LEFT, CLICK, 200, 200)
endif

こんなんでどう
名無しさん@お腹いっぱい。 [sage] 2010/11/06(土) 23:03:42 :Xv6Qw2yH0
おっと余計な部分消し忘れてた

n = RANDOM(100)
ifb n > 75 then
 BTN(LEFT, CLICK, 100, 100)
elseif n > 50 then
 BTN(LEFT, CLICK, 200, 100)
elseif n > 25 then
 BTN(LEFT, CLICK, 100, 200)
else
 BTN(LEFT, CLICK, 200, 200)
endif
名無しさん@お腹いっぱい。 [sage] 2010/11/06(土) 23:45:33 :7pv/Sudp0
select random(4)
case 0
 BTN(LEFT, CLICK, 100, 100)
case 1
 BTN(LEFT, CLICK, 200, 100)
case 2
 BTN(LEFT, CLICK, 100, 200)
case 3
 BTN(LEFT, CLICK, 200, 200)
selend
名無しさん@お腹いっぱい。 [] 2010/11/07(日) 06:50:41 :Nw0dCZsn0
よろしくお願い致します。
IEで画面にxxxというテキスト表示があったらAボタンをsubmit、
yyyという表示があったらBボタンをsubmit、
どちらも無かったら出てくるまで待機、
ということをやりたいのですがどのように書けばよいでしょうか?
名無しさん@お腹いっぱい。 [sage] 2010/11/07(日) 14:01:41 :+yBRecM10
あるキー(ここではF12とします)でマクロのon/offをするにはどうすればいいのでしょうか
offはわかるのですが・・・
名無しさん@お腹いっぱい。 [sage] 2010/11/07(日) 15:27:14 :1BalqPFN0

while true
 ifb "xxx" がある
  IE.document."Aボタン".submit()
  break
 endif
 ifb "yyy" がある
  IE.document."Bボタン".submit()
  break
 endif
 sleep(1)
wend


Alt+F1
名無しさん@お腹いっぱい。 [sage] 2010/11/07(日) 17:20:11 :+yBRecM10

それだと開始してくれないんです
名無しさん@お腹いっぱい。 [sage] 2010/11/07(日) 22:51:53 :+yBRecM10
特定のキーを押した時に
特定のスクリプトを読み込みたい場合は
どうすればいいのでしょうか
名無しさん@お腹いっぱい。 [sage] 2010/11/08(月) 02:09:57 :hTOjsACe0

キーを監視してるようなソフト、例えばゲームなんかが表にいると動かないかもね。


自分で読み込めばいいよ。
他の.uwsファイルをCALLできるんだから。

ただ、複数の.uwsファイルに分割しても、一つの名前空間だから、同じ名前の変数とか関数があるとぶつかるから、
呼び出されることを前提に作らないといけないけど。
名無しさん@お腹いっぱい。 [sage] 2010/11/08(月) 02:56:18 :qO79VfOi0

callでスクリプトを呼ぶのはわかるのですが
「特定のキーを押した時に読み込む」という動作はどのようにすればいいのかわかりません><
名無しさん@お腹いっぱい。 [sage] 2010/11/08(月) 03:40:14 :hTOjsACe0

while true
 if GetKeyState(VK_F1) then call SUB1.uws
 sleep(0.2)
wend
名無しさん@お腹いっぱい。 [sage] 2010/11/08(月) 03:42:46 :hTOjsACe0
訂正

while true
 if GetKeyState(VK_F1) then call("SUB1.uws")
 sleep(0.2)
wend
名無しさん@お腹いっぱい。 [sage] 2010/11/08(月) 13:25:08 :8MxeZehM0
Callはスクリプト読込み時に一括読込みじゃなかった?
関数作ってやらないと意味ないような…
名無しさん@お腹いっぱい。 [sage] 2010/11/08(月) 16:47:49 :qO79VfOi0

関数:CALLがありません とエラー表示が出ます

PUBLIC key,keyold,keyon,keyoff,item
key=0;keyold=0;keyon=0;keyoff=0
while True

if GETKEYSTATE(VK_F12) then exit
IFB PEEKCOLOR(512, 384) = $0000FF
KBD(VK_Ctrl,DOWN)
ELSEIF PEEKCOLOR(512, 384) <> $0000FF
KBD(VK_Ctrl,UP)
endif
keySet()
SLEEP(0.00000000000000000000000000001)
wend

Procedure keySet()
DIM keych; keyold = key; key = GETKEYSTATE(VK_LSHIFT)
keych = key XOR keyold; keyon = key AND keych; keyoff = keyold AND keych
Fend

に特定のキーを押した際にスクリプトAを呼び出して
スクリプトAでも同じキーを押してこのスクリプトを呼び出したいのですが・・・
名無しさん@お腹いっぱい。 [sage] 2010/11/08(月) 17:52:45 :hTOjsACe0

callの使い方間違ってた。
詳しくはヘルプ見てね。
名無しさん@お腹いっぱい。 [sage] 2010/11/08(月) 23:51:22 :qO79VfOi0
ヘルプ見てもわからないので質問したのですが・・・;
名無しさん@お腹いっぱい。 [sage] 2010/11/09(火) 01:08:11 :fbjnpoTx0

キーワードでCALLを検索してサンプルを表示すると出てくるけど
.\っていうのはカレントフォルダって意味で、省略可能だよ。
つまり、でよかったんだ。

は、このスレか過去スレ検索したらそういうのがあったのでそうだったかと。自分では使わないので。


ヘルプに載ってるサンプル
// For - Next
For x = 0 to 600
  MMV(x, 200)       // マウスムーブ
  If (x mod 100) = 0 then Call .\TEST.uws  // 100ドット毎にTEST.uws の実行
  Sleep(0.1)
Next
名無しさん@お腹いっぱい。 [sage] 2010/11/09(火) 01:41:59 :Q2Oub2Y80

のどこに入れればいいのだろうか・・・
名無しさん@お腹いっぱい。 [sage] 2010/11/09(火) 03:33:28 :fbjnpoTx0

while true
 call スクリプトA.uws
 sleep(1)
 call スクリプトB.uws
 sleep(1)
wend


--スクリプトA.uws--
while true
 if GetKeyState(VK_F1) then exit
 sleep(0.1)
wend

--スクリプトB.uws--
while true
 if GetKeyState(VK_F1) then exit
 sleep(0.1)
wend


if GetKeyState(VK_F1) then
のあとに同じキーでまた別の処理をするんなら、
thenの中でsleep(1)相当の時間をかけること。
なぜなら、押して、離すまでに何度も繰り返し呼ばれるから。
,875 を参照。
名無しさん@お腹いっぱい。 [sage] 2010/11/09(火) 11:30:16 :AMrro9jH0
UWSCでcallってincludeみたいな使い方しかしたことないけど。
冒頭で常用関数ばかり書いたスクリプトをcallして使うっていう。

なんで関数じゃまずいのかわからん。

> SLEEP(0.00000000000000000000000000001)

sleepの最小値0.01だろ。
名無しさん@お腹いっぱい。 [sage] 2010/11/09(火) 11:34:40 :AMrro9jH0
> に特定のキーを押した際にスクリプトAを呼び出して
> スクリプトAでも同じキーを押してこのスクリプトを呼び出したいのですが・・・

「このスクリプト」ってどっちの事だろう…
再帰処理するということ?
名無しさん@お腹いっぱい。 [sage] 2010/11/09(火) 16:43:14 :Q2Oub2Y80

そうですね
スクリプトA(メイン)からスクリプトB(Aに再帰するためだけのもの)

単純に言うとショートカットキーがアクティブウィンドウで効かないので
一時停止と再生をスクリプトでやってしまおう ということです


sleepは最小値知らなかったときにとりあえず入れたものなので
修正しておきます
名無しさん@お腹いっぱい。 [] 2010/11/10(水) 04:09:04 :yv8Muard0

遅くなってすいません。
やってみます。ありがとう。
名無しさん@お腹いっぱい。 [] 2010/11/10(水) 06:50:02 :yv8Muard0
gmailのページならログインボタン、googleのページなら検索ボタンを押すようにしたいと思っています。
さんに頂いたアドバイスを参考に以下のように書いてみたのですが、何も起こらずに終了してしまいます。
どこを直したらいいでしょうか。。

IE = GetActiveOLEObj("InternetExplorer.Application", "")
BUN = IE.document.body.innertext()
while true
 ifb Pos("Gmail へようこそ", BUN)>0
  CLKITEM(IE, "ログイン", CLK_ACC)
  break
 endif
 ifb Pos("Google", BUN)>0
SENDSTR(IE, "検索文字", 4, True, True)
  CLKITEM(IE, "Google 検索", CLK_ACC)
  break
 endif
 sleep(1)
wend
名無しさん@お腹いっぱい。 [sage] 2010/11/10(水) 12:44:25 :1hu+w+cF0
結局のところコミュニティの質も含めてAutoHotKeyとuwscとどっちが上なの?
名無しさん@お腹いっぱい。 [sage] 2010/11/10(水) 20:15:58 :Zpd3K/yu0

AHKとUWSCは基本的に違う用途
まーAHKは機能が多いからよっぽど時間かければカバーできる部分もあるんだろうけど
変態文法と日本語環境での変なバグを乗り越えてまでやりたくないw
名無しさん@お腹いっぱい。 [sage] 2010/11/10(水) 20:19:17 :Rdc8+qiQ0
ahkでuwscスクリプトを呼ぶ、なんてことをしているのは私だけか。
uwscにはホットキー機能がないからな。
名無しさん@お腹いっぱい。 [sage] 2010/11/10(水) 20:26:39 :1X5LGNxJ0
俺はuwscでwsh呼ぶ使い方が多い。
拡張子uwsだけど中身ほとんどvbsみたいなスクリプトとか。

ahkはほんの触り位しか知らんけど、改めてあの文法
覚えるくらいならC#で書いたほうが楽な気がする。
名無しさん@お腹いっぱい。 [sage] 2010/11/10(水) 21:07:08 :4bo+JUyz0

詳しく教えて頂けませんか?
名無しさん@お腹いっぱい。 [sage] 2010/11/10(水) 22:53:25 :hDxLIlUB0

自分もそうしてたw
でも最近はそれ用途はkeyhacに変更した。
名無しさん@お腹いっぱい。 [sage] 2010/11/11(木) 00:31:30 :ume6B63k0

戻値 = CLKITEM( ID, アイテム名, [種別, チェックOn/Off, 番号] ) 
引数  ID: Windowを識別するID

SENDSTR( ID, 文字列, [番号, 送信モードフラグ, ACC指定] )
引数  ID: Windowを識別するID


戻値 = CREATEOLEOBJ( COMオブジェクト名 )
戻値  COMオブジェクト

ID = HNDToID(IE.HWND)


戻値 = IELINK( IE, リンク表示文字, [番号] )
引数  IE: IEオブジェクト

戻値 = IESETDATA( IE, 値, Name, [Value, 番号] )
引数
  IE: IEオブジェクト
  値: 設定する値
  Name: 値取得するエレメントのName

IESetData( IE, text, "MESSAGE" )
名無しさん@お腹いっぱい。 [sage] 2010/11/11(木) 07:01:21 :sp5IHBpE0
入場処理()
sleep(5)
//スキル使用()

内部処理()
終了処理()

a =a + 1
b =b + 1

NEXT

マクロの一部ですが、入場処理とかの()内はなにを入れればいいんでしょうか?
数字だと「入場処理がありません」とでます;
名無しさん@お腹いっぱい。 [sage] 2010/11/11(木) 12:15:59 :JCeskPrN0
procedure や function が無いという落ちなら殺す
名無しさん@お腹いっぱい。 [sage] 2010/11/11(木) 13:17:39 :sp5IHBpE0
すいません、どこに入れればいいでしょうか?
名無しさん@お腹いっぱい。 [sage] 2010/11/11(木) 19:51:54 :ume6B63k0

UWSCを起動して右クリックしてHelp
目次タブとキーワードタブとあるから、キーワードタブを開いてprocedureをコピペ
名無しさん@お腹いっぱい。 [sage] 2010/11/11(木) 22:00:10 :IcQEp+1n0
ブラウザで連投する用途でuswcを使っていますが、
最新版にしたら頻繁に強制終了してしまうので
旧版を使いたいのですが、我慢します。
名無しさん@お腹いっぱい。 [sage] 2010/11/11(木) 22:30:07 :sp5IHBpE0

Webページへのナビゲーションは取り消されましたってでます…
名無しさん@お腹いっぱい。 [sage] 2010/11/12(金) 07:30:59 :0yVQIMxW0

じゃあ右クリックじゃなくてuwsc.chmをダブルクリック
名無しさん@お腹いっぱい。 [sage] 2010/11/12(金) 12:58:57 :imlUm0KV0

それもと同じになります;;
名無しさん@お腹いっぱい。 [sage] 2010/11/12(金) 14:39:51 :Ocur2Gdo0

これ試した?
ttp://www.newtone.co.jp/chm.html
名無しさん@お腹いっぱい。 [sage] 2010/11/12(金) 15:17:26 :imlUm0KV0

ありがとうございます!それを試したら表示されました
初心者なもんで・・・すいません・・・
名無しさん@お腹いっぱい。 [] 2010/11/12(金) 16:56:46 :Ud3rgxfh0

ありがとうございます。
プログラムとか始めてなのでよく分かりませんが
一つ一つ勉強しながらやってみようと思います。
名無しさん@お腹いっぱい。 [] 2010/11/14(日) 00:22:23 :v5nFXMg60
もし画面上に特定の色が表示されたらそこをクリックという動作はどういうプログラムになりますか?
名無しさん@お腹いっぱい。 [sage] 2010/11/14(日) 00:59:33 :JBB/Uzyj0




検索すること覚えてくださいね。
ログの検索は専用ブラウザ使うと楽ですよ。
普通のブラウザの場合は「全部読む」で1〜最新まで開いてページ内検索とか、Google。
名無しさん@お腹いっぱい。 [sage] 2010/11/14(日) 02:10:20 :rFeDZJnW0

中級プログラマー気取って
自分で答えられない回答でるとコレ
名無しさん@お腹いっぱい。 [sage] 2010/11/14(日) 03:11:59 :JBB/Uzyj0
 =  ですよ
名無しさん@お腹いっぱい。 [sage] 2010/11/14(日) 03:41:12 :rFeDZJnW0
さて、実際にあれで動くのだろうか
名無しさん@お腹いっぱい。 [sage] 2010/11/14(日) 04:48:32 :JBB/Uzyj0
動くわけねーけどそこまでしらね。

に僕が作った色判定スクリプトがあるから、参考にすればいいだろ。

グレーチェックはUWSC使いはじめにHP・MPのメータ用に作ったんだけどなかなか使いでがあるんですよ。
つまり、初心者向けで実用的ってことです。
名無しさん@お腹いっぱい。 [sage] 2010/11/14(日) 09:41:53 :PTom3hN90

遅くなりましたが
思い通りの処理が出来るようになりました
ありがとうございます!


evalの説明読んだりしましたがもう少し理解するのに時間かかりそうです
今からevalを使った適当なマクロを組んでみます
名無しさん@お腹いっぱい。 [sage] 2010/11/14(日) 17:10:45 :v5nFXMg60
みなさんマクロ用画像の抽出ソフトは何を使っていますか?
名無しさん@お腹いっぱい。 [sage] 2010/11/14(日) 17:46:47 :JBB/Uzyj0
Alt+PrintScreen + ペイント = 最高!
名無しさん@お腹いっぱい。 [sage] 2010/11/14(日) 21:27:14 :v5nFXMg60
それだと余計な部分が入る
名無しさん@お腹いっぱい。 [sage] 2010/11/14(日) 21:56:31 :3jovHq030
余計な部分は切り取るなりすればおk。
ペイントでの正しい切り取り方法知らんが、
画像全選択&移動と、画像の淵移動でのサイズ変更で大体対応できる。
名無しさん@お腹いっぱい。 [sage] 2010/11/15(月) 09:03:32 :zcY2phNY0
ペイントはスポイトで吸い取ったRGB(BGR)が調べられるから好き。

でも、もっと便利なフリーソフトが腐るほどあるから、
そっちを使った方が利口なんだよね(^^;
名無しさん@お腹いっぱい。 [sage] 2010/11/15(月) 14:36:23 :QfCC9AhY0
スポイト的なのなら
ヘルプに載ってた例をちょっと変えたの使ってる

OPTION EXPLICIT

DIM c = PEEKCOLOR(G_MOUSE_X, G_MOUSE_Y)
DIM r = getred(c)
DIM g = getgreen(c)
DIM b = getblue(c)

PRINT _
  "R: " + r + "  G: " + g + "  B: " + b + _
  "<#CR>BGR: " + c + " = #" + fmthex(c, 6) +  _
  "<#CR>RGB: #" + fmthex(r, 2) + fmthex(g, 2) + fmthex(b, 2)


FUNCTION getred(bgr)
  RESULT = bgr AND $FF
FEND

FUNCTION getgreen(bgr)
  RESULT = (bgr AND $FF00) / $100
FEND

FUNCTION getblue(bgr)
  RESULT = (bgr AND $FF0000) / $10000
FEND

FUNCTION fmthex(num, col)
  RESULT = CHGMOJ(FORMAT(num, col, -1), " ", "0")
FEND
名無しさん@お腹いっぱい。 [sage] 2010/11/15(月) 16:01:20 :BWJO4qar0
そういうことをするならからあげというツールがあってだな…

車輪の再発明は要らんのよ
名無しさん@お腹いっぱい。 [sage] 2010/11/16(火) 17:03:28 :AiUy3iFP0
結局何のツールがいいの?
名無しさん@お腹いっぱい。 [sage] 2010/11/16(火) 17:35:02 :BDl54lG00
最初コレ使おうと思ったけどjsで十分だった
flashとかの操作だったらコッチの方が良いのかも?
903 [sage] 2010/11/16(火) 17:37:48 :MlhI4BWN0

遅レスでスマヌ

たとえば AHKスクリプト aa.ahk
UWSC.exe
UWSCスクリプト bb.uws

を同じフォルダに入れておいて

aa.ahkの中に、

#2:: Run, %A_ScriptDir%\UWSC.exe %A_ScriptDir%\bb.uws
   return

と書いてaa.ahkを実行。

Win+2 を押すと bb.uws が実行される

(#がwinキー、%A_ScriptDir%はスクリプト自身のあるディレクトリの意味)

同じような記述をたくさん書けば
好きなショートカットキーでuwscスクリプトが実行されるahkスクリプトになる
名無しさん@お腹いっぱい。 [sage] 2010/11/16(火) 20:47:43 :UAF8SisA0

ありがとうございます
まとめページを見つけたので参考にして頑張ってみます!
名無しさん@お腹いっぱい。 [] 2010/11/19(金) 23:07:51 :4B4u2CSz0
repeat

kbd(vk_a, down)
sleep(30)
kbd(vk_a, up)

sleep(270)

until false

これってどういう動作をするスクリプトですか?
名無しさん@お腹いっぱい。 [sage] 2010/11/20(土) 00:25:03 :tbUyv64C0
ちきゅうがばくはつするすくりぷとです
名無しさん@お腹いっぱい。 [sage] 2010/11/20(土) 00:34:58 :AMJdysgh0
こんなすくりぷとにまじになってどうするの
名無しさん@お腹いっぱい。 [sage] 2010/11/20(土) 19:03:18 :ETr0zHeM0

むしろ宇宙全体が再ビッグバンするすくりぷと
名無しさん@お腹いっぱい。 [sage] 2010/11/21(日) 02:13:47 :hWcXAALZ0
こんなソフトありませんかスレで質問したら
ttp://hibari.2ch.net/test/read.cgi/software/1289906989/143n

UWSCを使うというヒントをいただいたので
ttp://hibari.2ch.net/test/read.cgi/software/1289906989/147-148n

書いてみました。
需要があるかどうかはわかりませんが、
コミュニティへの還元ということで晒します。

スクリプトを実行させているPCの回線からだと書き込めないので、
別PCで書き写して携帯データ通信回線から書き込んでます。
そのためスペルミスなどあるかもしれません。
941 [sage] 2010/11/21(日) 02:14:31 :hWcXAALZ0
hashtbl handle_hash

while true
  num_win = GETALLWIN()
  for i = 0 to num_win - 1
    window_id = ALL_WIN_ID[i]
    ifb STATUS(window_id, ST_VISIBLE) then
      handle = IDTOHND(window_id)
      ifb !handle_hash[handle, HASH_EXISTS] then
        ifb STATUS(window_id, ST_X) = 0 and STATUS(window_id, ST_Y) = 0 and _
          STATUS(window_id, ST_CLX) = 0 and STATUS(window_id, ST_CLY) = 0 and _
          STATUS(window_id, ST_WIDTH) = STATUS(window_id, ST_CLWIDTH) and _
          STATUS(window_id, ST_HEIGHT) = STATUS(window_id, ST_CLHEIGHT) then
          // フルスクリーン
          handle_hash[handle] = 1
          continue
        endif

        x = STATUS(window_id, ST_X)
        if x >= -10 then ACW(window_id, x - 1920, STATUS(window_id, ST_Y)
        handle_hash[handle] = 1
      endif
    endif
  next
  sleep(0.1)
wend
941 [sage] 2010/11/21(日) 02:15:16 :hWcXAALZ0
機能
・ウィンドウが最初に表示されたときにメインモニタにある場合はサブモニタに強制移動
・手動でサブモニタからメインモニタに移動されたウィンドウに対して強制移動は発動しない
・フルスクリーンで起動されたウィンドウに対しても強制移動は発動しない

想定環境
・メインモニタ(1920x1080)が右、サブモニタ(1920x1200)が左

その他
・「if x >= 0 then」じゃなくて「if x >= -10 then」なのは特殊なウィンドウ形状のために
 メインモニタの画面端に表示されたときにx座標がマイナスになるものがあったため
名無しさん@お腹いっぱい。 [sage] 2010/11/22(月) 11:54:04 :eiG6XB7v0
簡略化について教えてください。

for i =・・・・
 ・・・・
next

上記のような違う処理が複数ある場合、簡略化してAとかBとかにして
処理できないでしょうか?また、Aを3回とかBを5回とかも指定したいです。

名無しさん@お腹いっぱい。 [sage] 2010/11/22(月) 12:00:45 :Ecc6NuIp0
別なファイルにまとめておいて、callで呼び出して実行とか使えないかな?
手間は一緒かもしれないけど見栄えはいいかも。
名無しさん@お腹いっぱい。 [sage] 2010/11/22(月) 12:07:00 :eiG6XB7v0

早速レスありがとうございます。
それも考えましたが、回数とかを変更するときに大変に
なりそうなので諦めました。

for・・・ってのを関数に入れることはできないのかな?
1行だったら関数でできるのを見つけたのですが。
名無しさん@お腹いっぱい。 [sage] 2010/11/22(月) 14:05:45 :iBxfFzoX0
意味がよくわからんが

abc(3)

function abc(n)
 for i=1 to n
  hogehoge
 next
fend

とかいうこと?
名無しさん@お腹いっぱい。 [sage] 2010/11/22(月) 14:06:40 :iBxfFzoX0
function じゃなくて procedure だった
名無しさん@お腹いっぱい。 [sage] 2010/11/22(月) 14:55:57 :KsBT7+D30
作者の方、アスキー・キャラクター・コードを、読み書きする、関数を、採用してください
名無しさん@お腹いっぱい。 [sage] 2010/11/22(月) 15:59:36 :nk6gvEaWP
読み書きするって何に対して?
文字操作やウィンドウ操作の関数を使えばコード単位での読み書きなんて
よく使われる関数なので普通に実装されていると思うけど

今ある関数で出来ない、難しいと勘違いしているだけでは?
恐らく具体的にやりたい事を書けば解決する話だと思う
名無しさん@お腹いっぱい。 [sage] 2010/11/22(月) 17:03:14 :eiG6XB7v0

これについてkwsk

forで処理するのが5種類ぐらいあってそれを
ABCDEと割り当て実行するというものです。

Aを2回やったら次はBを1回、その次はCを4回と
いった具合です。

forというのを書いていくと長くなるし処理内容を変更するときも
大変ですよね?なので簡単にトップ当たりに5種類の処理を
書いてそれを実行できたらと思ってるのですが。
名無しさん@お腹いっぱい。 [sage] 2010/11/23(火) 15:37:28 :/0WN9Zrr0
同じ事を回数を変えてやりたいってならわかるが、
それぞれ違うことをやりたいなら一々書かにゃ。
名無しさん@お腹いっぱい。 [] 2010/11/24(水) 07:47:54 :QkfCopmS0
YOUTUBEの広告を自動で閉じたいんだけど、動画再生がカクカクになってしまいます。
アドバイスよろしくです。これってそんなに重い処理なんだろうか。。

While True
 CHKIMG("広告Xボタン.bmp")
 BTN(LEFT,CLICK,G_IMG_X+5,G_IMG_Y+5)
 SLEEP(0.5) //0.5秒待つ
Wend
名無しさん@お腹いっぱい。 [sage] 2010/11/24(水) 13:49:06 :glff+6JO0
chkimgは走査する領域が広くなればなるほど重くなる罠
名無しさん@お腹いっぱい。 [sage] 2010/11/24(水) 14:55:39 :qgNUBVyA0

uwscとかと関係ないがフォックスの場合アドオンを入れるだけで
広告はブロックできるよ。
名無しさん@お腹いっぱい。 [sage] 2010/11/24(水) 15:34:49 :glff+6JO0
ていうかYoutubeに閉じなきゃいけないような広告出てくるか?
ニコとかの間違いじゃないのか。
名無しさん@お腹いっぱい。 [sage] 2010/11/24(水) 19:43:43 :e5J3laEg0
windows vista 以降で半透明窓枠使ってると chkimg は糞重くなるよ
名無しさん@お腹いっぱい。 [] 2010/11/25(木) 00:35:01 :oT/KFntN0
 そうなんだ。。ウィンドウ固定して領域絞ってみようかなぁ。。

 右上の広告を消すアドオンは知ってるけど、動画の下からせり上がってくるのが消したいんですよー。

 動画の下部を隠すように出てくるのがあるんだ。まじウゼーっす。

 幸いXPです。


みんなありがとう。アドバイスを参考にいろいろやってみまっさ。
名無しさん@お腹いっぱい。 [sage] 2010/11/25(木) 15:56:57 :3blHwgJn0
peekcolorしか使ってないスクリプトが、Aeroをオフにしたら糞早くなって噴いたゎwww
名無しさん@お腹いっぱい。 [sage] 2010/11/27(土) 07:21:49 :e/9NxkXa0
知り合いに.uwsファイル形式をもらい実行したんですけど同じとこをずっとクリックしてるだけで動きません
管理者として実行や画像認識のための画像ファイルを自分のPC用に入れ替えたりもしてみたのですがうまくいかないです
7とXPで試しました
人からもらったのだとうまく機能しなかったりするのでしょうか?
名無しさん@お腹いっぱい。 [sage] 2010/11/27(土) 08:08:40 :zF9fFOKo0
何をどうするスクリプトなのか解らないとどうしようもないぞ。同じ所クリックするだけのスクリプトかもしれんしww
そうでなければ画面領域や(アプリの操作なら)対象アプリケーションが実行されてるかとか、ウィンドウ位置合ってるかとか。
(ACWでウィンドウ位置指定して実行するような奴だったら多分位置のずれはないだろうけど)
その人との動作環境に違いがあると、同じ座標をクリックしてても期待した結果にならないはず。見当違いのところクリックするわけだし。

ただ画像認証は使ったことないんで何とも。予期しない場所が画像認証に引っかかってずっとクリックしてるとか?
名無しさん@お腹いっぱい。 [sage] 2010/11/27(土) 08:56:39 :SX3OwNym0
画像のファイルパスが違うとかじゃないの
名無しさん@お腹いっぱい。 [sage] 2010/11/27(土) 21:28:11 :RH5NmCZQ0
まずその知り合いに相談すべきでは
名無しさん@お腹いっぱい。 [sage] 2010/11/28(日) 12:45:55 :4auo9pHo0
画像認証はわからんが他のならXPから7に移行して使ってるが
普通に使えてます。

名無しさん@お腹いっぱい。 [sage] 2010/11/28(日) 16:06:59 :c85PHurT0
16進数を表す文字列を10進数の数値に変換しようと思って、

function 16to10(#16)
//16進数を表す2文字の文字列を、対応する10進数を表す1-3桁の数値に変換して
//その値を返す関数。

//1の位について処理する。
SELECT COPY(#16, 2, 1)
CASE "0" #10 = 0
CASE "1" #10 = 1
CASE "2" #10 = 2
CASE "3" #10 = 3
...

のような関数を書いたのですが、引数に文字列を渡して使おうとすると
式がおかしい or 型があってない
とエラーメッセージが表示されて使えません。なぜでしょうか?
名無しさん@お腹いっぱい。 [sage] 2010/11/28(日) 18:33:19 :sk8OWc3z0

 // Select Selend 文
 SELECT 式
  CASE 式       // 数値でも文字でも変数でもOK
    処理
  [CASE 式]
    処理
  [DEFAULT]      // デフォルト
    処理
 SELEND

エラーの行数をよく読め
名無しさん@お腹いっぱい。 [sage] 2010/11/28(日) 18:57:57 :c85PHurT0


ありがとうございます。
レスを待っている間に、(これが必要かどうかわかりませんが)関数名および
引数・変数の名前を#や数字が含まれないものに変えて、
CASE 式 とその後の命令との間で改行するようにしたら動きました。出直してきます。
名無しさん@お腹いっぱい。 [sage] 2010/11/29(月) 03:20:04 :RgEapnRb0
そんなしょうもない事しなくてもevalかvalで終了

str = "AB"
msgbox(eval("$"+str))
msgbox(val("$"+str))
名無しさん@お腹いっぱい。 [] 2010/11/29(月) 18:26:47 :+CsrBh+v0
UWSC使えるネトゲって何がある?
名無しさん@お腹いっぱい。 [sage] 2010/11/29(月) 19:38:41 :WQV0io/h0
私が今やってるMaster of Epicだと使える
名無しさん@お腹いっぱい。 [sage] 2010/11/29(月) 20:16:29 :cebh/I3t0
スクリプトを実行していなくとも、起動しているだけでSDGOでは弾かれる。
名無しさん@お腹いっぱい。 [sage] 2010/11/29(月) 20:39:05 :GDrb4iNe0
回避もせずに使えるわけなかろ
名無しさん@お腹いっぱい。 [sage] 2010/11/29(月) 23:37:31 :TpwG7RO7O
東大ブログ第3章
『東京大学文科一類法学部3年のブログ。』
とりあえず主要メンバーと準メンバー(笑)の紹介しときますか。

・篠崎蘭…我らがリーダーにして才色兼備の女帝蘭様、人を優しく見下すクセはもはや直らない、基本的には優しいが表面的にはキツイ(笑

・加藤達人…明朗快活のスポーツマン、バスケの県選抜に選ばれた微妙な過去栄光を長々と話す、チャラくないと言い張るが十分チャラい

・渡志相太…がり勉(笑、ブレーンのポジションに置かれているがイマイチ(爆、4年生なのに蘭さんと多胡くんにはなぜか敬語

・藤茜…典型的お嬢様、おしとやかだが根性は凄い、漢字がめちゃくちゃ得意(当然一級)な辞書役

こっから準メンバーと言わせてもらってる人達

・多胡雄二朗…頭脳明晰にして多才、オマケにイケメンという完全無欠の俊英だが変人(爆、我らが最強の助っ人であり影のブレーン、蘭さんと対等に話せる唯一の男、学校には滅多にこない(笑

・細野晋太郎…もう一人の助っ人、加藤くんとやたら仲が良い、「東大に入ったのは蘭さんに会う為です」が口癖、多胡くん同様学校にはあまり来ない
名無しさん@お腹いっぱい。 [sage] 2010/11/30(火) 13:53:43 :lFnnr2ds0
現在、とあるゲームの自動化を目指してるんですが。
アクティブウィンドウにそのゲーム指定して、クリックさせたりカーソル移動させようとすると出来ません。原因はなんでしょうか?

ちなみにWindowsのフォルダ操作や、ファイルの操作。その他、ゲーム以外のものには普通に操作が可能です。
あと、クリックは出来ませんが、ゲーム画面の画像を認識するのだけは出来るみたいです。
どなたか回答おねがいします。
>>974 [sage] 2010/11/30(火) 14:02:19 :lFnnr2ds0
すまん、全然板読んでなかった。出直してくる。というか、疑問に関しては自己解決。
名無しさん@お腹いっぱい。 [sage] 2010/11/30(火) 14:07:38 :+8Rq3S9/0
自己解決しないで教えてくれよ
名無しさん@お腹いっぱい。 [] 2010/12/01(水) 00:34:49 :p5iLxner0
よろしくお願いします。
以下のコードをできるだけシンプルにまとめたいんですが、どう書いたらいいですか?
たぶん連想配列というものを使うというところまでは判ったんですが

IE.navigate("ttp://www.AAA.co.jp")
IESetData(IE,"111","word")
IESetData(IE,True,"submit")

IE.navigate("ttp://www.BBB.co.jp")
IESetData(IE,"222","word")
IESetData(IE,True,"submit")

IE.navigate("ttp://www.CCC.co.jp")
IESetData(IE,"333","word")
IESetData(IE,True,"submit")

・・・
名無しさん@お腹いっぱい。 [sage] 2010/12/01(水) 01:54:07 :lVOMPweM0
ガナサレラをサイベージしたいのですが
ガナサルトをフックした際に、カンベスとコリジョンが発生してしまいます。
最終的にはフラクトすれば問題ないのですが、どういった処理手順で行えばいいでしょうか。
978 [sage] 2010/12/01(水) 02:52:52 :lVOMPweM0
すみません誤爆でした
名無しさん@お腹いっぱい。 [sage] 2010/12/01(水) 08:13:04 :yYIPCO9O0

連想配列は使ったことが無いので多次元配列で書いてみた。試してないので変なミスをしてるかも…

web数 = 3 - 1 //webが増えたらココを増やす
date数 = 2 - 1 //dateが増えたらココを増やす

DIM X[web数][date数]=_
 "ttp://www.AAA.co.jp","111",_ //1行で初期値代入すると分かりにくいので「_」で改行
 "ttp://www.BBB.co.jp","222",_
 "ttp://www.CCC.co.jp","333"  //最後のデータは「,_」を付けない

for t = 0 to web数 step 1
 IE.Navigate(X[t][0])
 BusyWait(IE)

 IESetData(IE,X[t][1],"word")
 IESetData(IE,True,"submit")
next

Procedure BusyWait(ie)
Sleep(0.5) // Wait
Const TIME_OUT = 90
tm = Gettime()
repeat
Sleep(0.2)
ifb Gettime() - tm > TIME_OUT
MsgBox("Time Out:BusyWait")
ExitExit
endif
until (! ie.busy) and (ie.readyState=4)
Sleep(0.5)
Fend
名無しさん@お腹いっぱい。 [sage] 2010/12/01(水) 13:32:29 :xkS94fUY0
画像認識のことなんですが、

WHILE TRUE
IF CHKIMGの行がくるまで終わらないのですか?
名無しさん@お腹いっぱい。 [sage] 2010/12/01(水) 13:43:30 :QKy20F6n0
UWSCでは、マクロAを実行→画像認識→マクロBを実行→マクロAを実行→画像認識・・・ というふうに繰り返す操作は可能ですか?
名無しさん@お腹いっぱい。 [sage] 2010/12/01(水) 14:13:19 ://bmsPiR0
不可能はないです
名無しさん@お腹いっぱい。 [sage] 2010/12/01(水) 15:14:58 :QKy20F6n0

ありがとうございます。まとめますと、
画像監視しながらマクロAを実行→マクロAを実行中に画像発見→マクロBを実行→マクロB実行終了→マクロ自体終了
で、UWSCの回数設定で何回でも設定できるようにしたいです。
ソースとしては、

//ここから開始
while true
動作(マクロAのコード)
ifb chking("A.bmp")
動作(マクロBのコード)
wend
//ここまでで終了

こんな感じでしょうか?何か間違っている気がしますが、訂正があったらよろしくお願いします。
名無しさん@お腹いっぱい。 [sage] 2010/12/01(水) 17:32:10 :QKy20F6n0
もっとシンプルにこんな感じでいいんですかね?

//ここから開始
not ifb chking("A.bmp")
動作(マクロAのコード)
then
(マクロBのコード)
//ここまでで終了

"A.bmp"はマクロBを実行するときに使う画像です。
細かい構文はあっているかよく分かりませんが、だいたいこんなマクロですか?
どうか添削よろしくお願いします。連レス失礼しました。
名無しさん@お腹いっぱい。 [sage] 2010/12/01(水) 19:02:01 :5ELZ0ZVH0

アルゴリズムの記述には構文の正しさが命だと思う。
トリッキーに正しい事をやりたいのか、トリッキーで間違っているのか…それがわからない。

// IF のブロック文 IFB ENDIF
 IFB 式 [THEN]
   真
 [ELSEIF 式 [THEN]]
   :
 [ELSE]
   偽
 ENDIF

UWSCは改行はきちんとせねばならない。
名無しさん@お腹いっぱい。 [sage] 2010/12/01(水) 19:04:37 :QKy20F6n0
実は私はID:iYsBGIJR0 なんですけど、もう少し改良してみました。

//ここから開始
while true
while ifb chking(!("A.bmp"))
(ピラミッドマクロA)
then
(ピラミッドマクロB)
endif
//ここまでで終了

否定の式 ! を入れてみました。ピラミッドはまず画像監視しつつ、(ピラミッドマクロA)で14分間攻撃します。
そこで成功しても失敗しても同じMAPに行くんですね。そのMAPの画像を認識して、NPCに話しかけてMAPの外へ出る
(ピラミッドマクロB)を使用します。これで外のスタート地点に出てマクロを終了します。最初に設定した回数分マクロが
実行されます。(ピラミッドマクロA)は14分間分の長ったらしいコードで、(ピラミッドマクロB)は1分くらいの短いコードです。

ソースはこれで合っているでしょうか?
名無しさん@お腹いっぱい。 [sage] 2010/12/01(水) 19:12:54 :QKy20F6n0

すみませんリロードせずに書き込んでしまいました。

トリッキーに間違ってしまいました。普通に正攻法で書きたいです。
少し考えてみますね。
名無しさん@お腹いっぱい。 [sage] 2010/12/01(水) 19:46:18 :QKy20F6n0
こうなりました。thenとelseの使い方が間違ってましたね。

while true

ifb chking(!("A.bmp"))

then
(ピラミッドマクロA) //ピラミッドマクロAのコード

else
(ピラミッドマクロB) //ピラミッドマクロBのコード
  endif

wend

ここで疑問なのは、CHKIMG文に ! は使えるのかということと、CHKIMG文は常に監視しているのかということです。
常に監視しているわけではないなら、(ピラミッドマクロA) 実行中にCHKIMG文は使えないからです。
というかIf文みたいにCHKIMG文は使えるのでしょうか?

名無しさん@お腹いっぱい。 [sage] 2010/12/01(水) 20:07:45 :QKy20F6n0
流れ図にしてみました。

@画像はあるか? Y→ピラミッドマクロB実行→終了
    N↓
(ピラミッドマクロA) 実行
     ↓
@に戻る

この流れ図だと、(ピラミッドマクロA) 実行中にピラミッドで負けた場合、最終MAPに行った後も(ピラミッドマクロA)を実行し続けます。
これだと仮にピラミッド開始1分で負けた場合、13分が無駄になります。これだと現状と変わりません。
画像があるかどうか(ピラミッドマクロA) 実行中でも常に監視する場合は、流れ図と構文はどうなるのでしょうか。
名無しさん@お腹いっぱい。 [sage] 2010/12/01(水) 20:23:16 :5ELZ0ZVH0

現状を変えたければ、ピラミッドマクロAに負けたかの逐一チェックでも入れてみればいい。
…やりようはほかにいくらでもあると思うがね。

的確な答えは出せるはずも無いのだが
最低限ヘルプの、スクリプト、の項目は通読しておいたほうがいい。
今回だと、スクリプト構文、の段に助けになるようなことが書いてあるはず…余計混乱するとは思うが。
名無しさん@お腹いっぱい。 [sage] 2010/12/01(水) 20:30:33 :5ELZ0ZVH0

>CHKIMG文に ! は使えるのかということと、
通常、true,false 以外には論理否定を使えない。戻り値で考えろ。

>CHKIMG文は常に監視しているのかということです。
1スレッドはひとつづつしか構文を実行していかない
名無しさん@お腹いっぱい。 [sage] 2010/12/01(水) 20:35:01 :QKy20F6n0

なるほど。「@画像はあるか?」を「(ピラミッドマクロA) 実行」 にいくつか入れておけば対処できますね。
ピラミッドのゲームは少しでも移動や攻撃してなかったりすると負けてしまうんですが、画像認識は結構時間かかりますか。
とりあえず、これでやってみようと思います。
>最低限ヘルプの、スクリプト、の項目は通読しておいたほうがいい。
UWSCのヘルプですね。読んでおきます。

どうもありがとうございました。また報告するかもしれないんでよろしくお願いします。
名無しさん@お腹いっぱい。 [sage] 2010/12/01(水) 20:58:52 :QKy20F6n0

! は使えないんですね。流れ図としては


(ピラミッドマクロA) //ピラミッドマクロAのコードの一部
画像はあるか? Y→ピラミッドマクロB実行→終了 
N↓
(ピラミッドマクロA) //ピラミッドマクロAのコードの一部
画像はあるか? Y→ピラミッドマクロB実行→終了
N↓
(ピラミッドマクロA) //ピラミッドマクロAのコードの一部
画像はあるか? Y→ピラミッドマクロB実行→終了

これの繰り返しですね。


実際の構文はこうでしょうか。
(ピラミッドマクロAの一部) //ピラミッドマクロAのコードの一部
 ifb chking("A.bmp")
  (ピラミッドマクロB) //ピラミッドマクロBのコード
  exit
 endif
(ピラミッドマクロAの一部) //ピラミッドマクロAのコードの一部

繰り返し

これでやってみます。
名無しさん@お腹いっぱい。 [] 2010/12/02(木) 11:51:13 :ItLPl43S0

ありがとうございます。
こんな書き方もあるんですね。
やってみます!
名無しさん@お腹いっぱい。 [sage] 2010/12/03(金) 02:10:59 :hPoAig7j0
次スレは?
名無しさん@お腹いっぱい。 [sage] 2010/12/03(金) 12:36:02 :W92a0hyv0
自動化ツールuwsc使いよ集まれ6
ttp://hibari.2ch.net/test/read.cgi/software/1291347103/

たてたよ
名無しさん@お腹いっぱい。 [sage] 2010/12/03(金) 21:30:23 :4g0fDCjf0
998
名無しさん@お腹いっぱい。 [sage] 2010/12/03(金) 21:31:14 :AEqcI9Lr0
999ならkdcの受付と結婚
名無しさん@お腹いっぱい。 [sage] 2010/12/03(金) 21:31:57 :AEqcI9Lr0
1000ならkdcの受付と結婚
1001 [] Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

勢い5万以上のスレをメールでお知らせするサービス、実施中!!
憧れボディをGETしたい!その夢、ボニックで!

2ch勢いランキング アーカイブ ソフトウェア板ランキング

凡例:

レス番

100 (赤) → 2つ以上レスが付いている
100 (紫) → 1つ以上レスが付いている

名前

名無しさん (青) → sage のレス
名無しさん (緑) → age のレス

ID

ID:xxxxxxx (赤) → 発言が3つ以上のID
ID:xxxxxxx (青) → 発言が2つ以上のID

このページは2ch勢いランキングが作成したアーカイブです。削除についてはこちら