1 :
名無しさん@お腹いっぱい。 :
2014/01/09(木) 13:16:00.50 ID:hFz7Kd3R0
Q.シェアウェア版で「L20が存在しません」「L22が存在しません」とエラーが出て一部機能が動作しない A.割れシリアルを使った時に出る、ささやかな割れ対策 Q.購入したのに上記エラーが出る A.ライセンスキーが正しいか確認(ベクターで購入した場合、登録するのは 伝票番号の xxxxxxxxx ではありません) UWSCをアンインストール後、再インストールして正しい17桁のライセンスキーを入力してください。 ●Pro版の追加機能 EXE化ツールが付属しています。(EXE化後は単体での実行が可能であり、ライセンスフリーにて配布できます) IE(Web)用記録ツールが付属しています。(Web上の動作をUWSCのスクリプトとして記録する事ができます) HTMLを利用した画面関数が使えます。 EXCELシート用関数が使えます。(OpenOffice.org/LibreOfficeの表計算(Calc)に対しても可) デバッガが付属しています。 ●質問したい方へ 「○○作れますか?」→ 可能か不可能かを聞いているのなら答えは「作れる」 「○○が作りたい」→ 自分が作れば?並大抵の事ならググれば似たようなスクリプトや知識が見つかる 「○○作って下さい」→ 依頼スレじゃありません。 過去ログを見る、検索する等、自分で出来る事を書き込む前にするように。 自力で作ったのを晒すか、具体的な解らない場所を提示して、改善点や解決策を求めるようにしましょう。 ●スクリプトを晒す上での注意 他人が読みやすいようにインデントを付けるように。解らない人はググレ。 (タブインデントは使えないんだぜ 全角スペース等に 変換しておくべし) 言いたい事に関係無い部分は 〜○○の処理〜 や 処理A 等のようにし、 必要な部分を晒すようにする。 ●他人の書いたスクリプトを安易に実行しないように。 ハードディスクをフォーマットされたりしても、自己責任。
前スレ完走乙 折角なので最近ハマった小ネタを〜 マウス付近にフキダシに情報を表示し続けるscriptを組んでいたのだが 画面外に表示して大きさを調べてから表示位置を調整する必要があったため 負荷が高くて闇雲に呼び出しまくってるとアドレス違反が稀に発生しました 仕方ないのでセマフォを用意すると安定した〜
>>2 Q.Windows7以降でうまく動かない・記録できないetc.
A.管理者権限で実行しているか?最新バージョンか?逆にバージョン下げてやってみたか?
>>2 538 名前:523[sage] 投稿日:2013/10/31(木) 09:22:37.25 ID:Yb7q90j80
私が購入した、シリアルナンバーの入力を誤っていたのですが、偶然にもその数字が通ってしまい、アドバイスを頂いた割れ対策のエラーがでていたようです。
以下、公式からのお返事です。
登録するのは 伝票番号の xxxxxxxxx ではありません。
ベクターより 17桁のライセンスキーが発行されているはずですので
一度 UWSCをアンインストールしてから 再インストールをして
17桁のライセンスキーを入力してください。
たまたま、伝票番号の xxxxxxxxxx が登録処理を通り
その後に 不正キーの扱いになり、機能制限がかかったようです。
大変に失礼いたしました。
こんなミスをする人はなかなかいないと想いますが、L20のエラーを次回のテンプレのL22の次にでもそっと追加をお願いします。
AutoIt使えよ
CHKIMGの代わりにImageSearchってのを使えばいいのは判ったが、 リッチ過ぎるGUI機能と膨大な関数群 ウィンドウを特定するのにIDで指定できないとか 日本語コミュニティに乏しいとか 色々と難アリだな。 SLCTBOXじゃヤダヤダMsgBoxでタイムアウトしたいんだい! とかダダ捏ねてた人はAutoItがいいんじゃないの?
いちおつ
try print "1 / 0 = " + (1 / 0) //0で除算 except print TRY_ERRMSG endtry さすがUWSCです!
>>10 0で除算すると0になるUWSCの仕様だね
>※UWSCではゼロ割算をエラーとはせずにゼロにします
たしかに余計なエラーチェックが必要ないからUWSCの利点かもしれないね
0で割っても0を割っても0になるのはいい所
仕様としてあるんだから問題ない
除算でHELP検索しても仕様ですと書いてあるのは見つからないけどね
あw、割り算でもなく割算で検索すると数学関数の所に書いてあるのかw UWSCらしいです!w
知ってて常識の会話してる中で 知ったかにわかが混ざってたのか、残念だ…
>>7-8 過去スレでずっと名前は出てきてるね。
AHK は書式がかなり違っててとっつきにくかったけど
AutoIt は UWSC とかなり近いね。
これなら簡単に使えそうな気がする。
ttp://www.biboureq.com/mains/65 > require 'win32ole'
> auto = WIN32OLE.new('AutoItX3.Control')
> auto.MouseMove 100, 100 ,40
Ruby から AutoIt を呼び出すコードがこれだけで使えるらしいから
UWSCからも使えそうだ。
UWSC を呼び出して連携はできないから、そういう場面でも使える。
自動操縦ができない言語でもこれ呼び出したら一通りできるからいいね。
VBS(WSH) + AutoItX3.dll が良いらしい。 たしかに、 メインプログラムを正規の言語で記述できるのは大きい。
//<組込み定数> // TRUE // 1 // FALSE // 0 // EMPTY // 値の無い状態を示す PRINT "EMPTY = "+EMPTY // 「EMPTY = 」 PRINT "0+EMPTY= "+(0+EMPTY) // 「EMPTY = 0」 PRINT "(EMPTY = 0) = "+(EMPTY = 0) //??? PRINT "(TRUE = 1) = "+(TRUE = 1) //TRUE PRINT "(FALSE = 0) = "+(FALSE = 0) //TRUE PRINT "(EMPTY = FALSE) = "+(EMPTY = FALSE) //??? e=EMPTY PRINT "e=EMPTY; (e = 0) = "+(e = 0) //???
>>19 書き方が解りにくい
e = EMPTY
PRINT (EMPTY = 0) //FALSE
PRINT (e = 0) //TRUE ←おかしい
PRINT (EMPTY = 0) = (e = 0) //FALSE ←こうなるw
> PRINT (e = 0) イコールって比較でも使うけど 代入でも使うんですよね。 UWSCの場合、代入の結果が表示されているのであって、 比較の結果が表示されているわけではないんだな。 e(変数) に0は代入できるので true だけど EMPTY(定数)に0は代入できないので false なんだな。 C言語の場合は代入した結果は代入元と同じなんで、=でつなげば同じ値を複数に代入できるけど それができるのはC言語の比較が==であって=ではなくて区別ができるからなんだな。
PRINT (0 = e) //TRUE これはどう説明するの?
e = EMPTY ifb EMPTY = 0 print "EMPTY = 0" else print "! (EMPTY = 0)" endif ifb e = 0 print "e = 0" else print "! (e = 0)" endif ifb (EMPTY = 0) = (e = 0) print "(EMPTY = 0) = (e = 0)" else print "! ((EMPTY = 0) = (e = 0))" endif 結果: ! (EMPTY = 0) e = 0 ! ((EMPTY = 0) = (e = 0)) あれ?
e = EMPTY ifb EMPTY = EMPTY print "EMPTY = EMPTY" else print "! (EMPTY = EMPTY)" endif ifb e = EMPTY print "e = EMPTY" else print "! (e = EMPTY)" endif 結果 EMPTY = EMPTY e = EMPTY 0は EMPTYじゃないからか。 print "EMPTY=" + EMPTY 結果 EMPTY= ね。0じゃないんだよ。 変数に代入したときに0にもマッチするってだけ。
しかも EMPTY ≠ "" e=EMPTY e = ""
いつまで他のツールの話する気なんだい? いい加減スレ違いうざいわ
>>26 ありがと。
俺の中でC#+ImageSearch(かOpenCVSharp)+AutoItX3.dllが現実味を帯びてきた。
少し変数に関して整理しましょうか 1.PRINT "EMPTY = "+EMPTY // 「EMPTY = 」 EMPTYは値の無い状態を示す 2.PRINT "0+EMPTY= "+(0+EMPTY) // 「EMPTY = 0」 定数0にEMPTY(値が無い)を足すと0である 3.PRINT "(EMPTY = 0) = "+(EMPTY = 0) //??? EMPTYと定数0は等しいか? False(等しくない) 4.PRINT "(TRUE = 1) = "+(TRUE = 1) //TRUE PRINT "(FALSE = 0) = "+(FALSE = 0) //TRUE TRUEと定数1は等しいか? FALSEと定数0は等しいか? True(等しい) 5.PRINT "(EMPTY = FALSE) = "+(EMPTY = FALSE) //??? ではEMPTYとFALSE(0)は等しいか? False(等しくない) 3と同じ結果 6.e=EMPTY PRINT "e=EMPTY; (e = 0) = "+(e = 0) //??? 変数eにEMPTYを代入後、変数eと定数0は等しいか? True(等しい)… 訳ではなく、たまたまである e=EMPTYで初期化された変数eの型をVARTYPE(e)で調べると戻値(VAR_EMPTY(0)//Empty) これはDIM eで宣言された初期化されてない変数と等しいので 一般的に初期化されてない変数の値は不定なので、e=EMPTYで初期化された際 たまたま0で初期化され、(たまたま)変数eと定数0は等しいと結果になったのですね ただ e=EMPTY; e=VARTYPE(e,VAR_DOUBLE); e=1; e=VARTYPE(e,VAR_EMPTY); print e; print (e = 0) と、やるとTrueになるので0で初期化されるようではあるけど 初期化してない変数の値は不定と考えておいて間違いはないはず(UWSC内部的な動作でたまたま0で初期化されているだけです)
7.e = EMPTY; PRINT (EMPTY = 0) = (e = 0) //FALSE (EMPTY = 0) = False, (e = 0) = True PRINT False = True なので結果は False(等しくない)となります 8.EMPTY ≠ "" これは""=空文字との比較 e=EMPTY; print e="" 変数型VAR_EMPTYの変数eと""(空文字)は、たまたまTrue(等しい) e=""; print e=EMPTY 変数型VAR_BSTRに""(空文字)代入された変数eとEMPTYは、たまたまFalse(等しくない)(内部的にポインタと比較してる?)
まとめると e=EMPTY; PRINT "e=EMPTY; (e = 0) = "+(e = 0) //True(等しい) EMPTYで初期化された変数eと定数0を比較してTrue(等しい)になるのは、たまたまである。です。
e=EMPTY PRINT (0 <> EMPTY) //True PRINT ("" <> EMPTY) //True PRINT (0 = e) //True PRINT ("" = e) //True PRINT (EMPTY = e) //True
for i=1 to 10000 print i next これのループの終了までの時間の測り方を教えて下さい。
>>33 START = GETTIME()
for i=1 to 10000
print i
next
NOW = GETTIME() -START
if お前らの頭 = EMPTY then Reset()
おせーてください。 test1.uws、test2.uws、test3.uwsそれぞれをtest.uwsから以下の通り実行指定します。 test.uws Exec("C:\Program Files\UWSC\UWSC.exe C:\script\test1.uws", True) Exec("C:\Program Files\UWSC\UWSC.exe C:\script\test2.uws", True) Exec("C:\Program Files\UWSC\UWSC.exe C:\script\test3.uws", True) ここでtest1.uwsが何らかの理由でエラーが出た場合、そのエラーダイアログを「OK」しないと次の2、3へ進んでくれません。 もしtest1.uwsでエラーが発生して停止したらそれはそのままとまり、次の2、3を順に起動するようにはどうしたら良いでしょうか?
>>37 call test1.uws
call test2.uws
call test3.uws
>>38 スイマセン…書き忘れていました。
BUSYWAIT:多重定義です
PROCEDURE BUSYWAIT(IE)
上のエラーが出るのでcallは使っていませんでした。
情報不足で申し訳ないですorz
何らかのエラーってのが TRY - FINALLY や TRY - EXCEPT でフック可能なら 例外処理でエラーが出たらエラーが出たなりに正常終了スレばいいのではないかな?
>>39 BUSYWAITは別のファイルに出してCALLすれば多重定義は回避できる。
test1.uws、test2.uws、test3.uws それぞれで使っていても、定義が一つのファイルなら問題ない。
多重定義は同じファイルで2回定義したり
別のファイルで同名で定義してCALLしたときに警告が出る。
同名で内容が微妙に異なる可能性もあるけれど 同じ内容ならこれを気にCALLで呼び合う間柄にするのもいいね でも、エラーの処はフックするなり何らかの対処が必要なのは一緒なのでは?
少なくともバッチで呼ぶのはやめたほうがいい。 いちいちUACのチェックが入るだろ。 まさかUAC無効にしてないよな? 前スレでIEとUWSCをバッチで呼び出すコードを書いたけど あれはああしないと回避できないから仕方なく。
TESTフォルダ内 aa1.txt aa2.txt aa3.txt ... とaa10.txtまでテキストファイルが入っています。 このテキストファイルの名前を bb1.txt bb2.txt bb3.txt という風に一括で変更させる為のコードを教えてください
Flexible Renamer by こんなソフトありませんかスレ
>>45 DOSCMDでrenameコマンド、ワイルドカード指定で
>>47 ありがとうございます。
解決しました!!
AutoItがよかったんでスペック比較してみた。 ついでに他のも。 足し算と関数呼び出しをやった結果。 速い HSP3.31 = JavaScript (chrom) > VBScript >> AutoIt3 > AHK >> UWSC 遅い 動作環境は Windows8.1 64bit。 AutoIt3 と UWSC はそれぞれ一桁ずつ遅かった。 JavaScript は単純ループではHSPに負けるが、関数呼び出しでは速度の低下がなく逆に速かった。 毎回時刻チェックしてるから時刻の扱いで差がついてる可能性もあるかも。 UWSCはやっぱり桁違いに遅いけど GetTime()のループで関数呼び出し1万回/秒ほどあるんで 普通のマクロでは十分なスペックではある。 ただ、大量のデータの処理には向かない。 丸ごと読んで正規表現検索するならどの言語でもだいたい一緒・・・じゃないかな。
はてココにしか書いてないのはなぜなんだぜ?
UWSCの長所は 「低機能」(≒大量の命令群に圧倒されず比較的敷居が低い) 「日本語」(日本語変数、日本語情報が豊富(というか日本でしか使われてない)) だけ。 枯れてるから安定性もあるかといえば、 クローズドで一人で開発してる限界が垣間見える。 XP相当でXPよりサポート期間が後の Windows Server 2003 では 正常なスクリプトで Syntax Error を吐くなどの2000と同じような不具合がある。 ただ商業化に成功してるので更新か途絶えない見込はあるものの、 この調子だとXPサポート終了後は嬉々として対応を放棄し同じ道を歩むだろう…
>>50 15日から調べながらやってゲームしつつやっと完成したんだぜ。
ゲームしながらじゃないとやっとれん。
AHKはスレもあるし勧められてたけど手を出さなかったんだけど
手を出してみたらやっぱりややこしくてとっつきにくかったよ。
UWSCやAutoItを比較するならAHKもないとなと思って頑張った。
たまに常駐した方がいい使い方を聞いてくる人がいるけど
そういうのはAHKが簡単にできるね。
Windowsの終了イベントを拾えるのはスクリプト言語なのにすごいと思った。
UWSCでも sleep(24*60*60) くらいの長時間のスリープすれば常駐できるけど
扱えるイベントがキーボードだけだし。
GetIDの見つかるまで待機とか言うのもなくはないけど。
待機部分をAHKで書いて呼び出す方法もあるけど
そういうのはCOM呼び出しが出来るAutoItの方が使いやすいのは
IEをEXECできるけどCOM呼び出しの方が簡単だというのと同じ。
>>51 日本語情報だけじゃなくて
日本語で関数名や変数名を使えるのはいいよ。
SciTEAutoIt(専用エディタ)は設定すれば日本語入力・表示できるけど
入力補完がなぜか出てきてEnterすると文字化けするのがうざい。
関数名や変数名もアルファベットじゃないといけないし。
JavascriptだかAHKの説明をぐぐってると日本語を変数名っぽくして説明してるのがあったんだけど
ああいうのはかえって誤解を招くよね。
ああ、あと SciTEAutoIt のコメント文ってイタリックなんですよね。 日本語をイタリックにしたら何書いてあるか分からんだろと。 C:\Program Files (x86)\AutoIt3\SciTE\Properties\au3.properties を管理者で起動したメモ帳で開いて style.au3.1=fore:#008000,italics からイタリックを削ったらちゃんと読めるようになったんだけど 設定ファイルのどこにコメント文だとわかる情報があるんだと。 # Comment line style.au3.1=fore:#008000 # Comment block style.au3.2=fore:#008000,italics あ、Comment って Comment 書いてあった。
気に入ったらその言語で楽しんだらいい 気に入ったらそのスレで楽しんでたらいいのに なぜこのスレにしか書いてないの?って安価の答えがゲームってなんだろう
で、これ編集しようとドラッグ&ドロップで開こうとして気が付いたんだけど、
管理者権限でメモ帳開くとドロップできないんだな。
もしかしてUWSCから開いたIEにドロップできなかった理由ってUWSCが管理者権限になってるからかなとか。
試しにIEを管理者権限で起動したらやっぱりドロップ拒否だった。
なるほどな。
・・・やばいじゃん。
管理者権限で起動する話はあるけど
ttp://dobon.net/vb/dotnet/system/asadmin.html Dim psi As New System.Diagnostics.ProcessStartInfo()
psi.Verb = "runas"
ぐぐった
> CreateProcess()ではUACの権限昇格ができない
> ShellExecute() では子プロセスのコマンドラインとして最大2082文字しか指定できず、
> 子プロセスは権限を引き継ぐ
分からん。
バッチファイルで起動すればドロップできたのは
バッチファイルからIEを起動したからじゃなくて
バッチファイルからUWSCを起動したから・・・じゃないな。
だけど、
UWSCのショートカットを管理者に設定してるから
IEを使うコマンドを使う場合はその設定のないショートカットを用意しておけばいいってことかな。
チラシの裏にでも書いとけよ
ココがチラシの裏だよw 気に食わないなら公式掲示板にでも行ってろよ
前も同じ返ししてるキチガイいたよな 同じ奴か?
スレがないなら作ればいい スレチの話をズットされてもこっちも見る気もないしうざいだけ
過去スレ落ちてそのまんまのスレを立てても即死するだけだろ。
仮に残ったとしても俺のスレ立て猶予がなくなる。
1388888888 にスレ立てするのは忘れてたけど狙ってんだから。
AutoIt
ttp://pc12.2ch.net/test/read.cgi/software/1277173327/ > 1 名前:名無しさん@お腹いっぱい。[] 投稿日:2010/06/22(火) 11:22:07 ID:dqr8+Nvh0
UWSCよりいいソフトの話はスレチかもしれないけど
UWSCとの速度比較はどこでやってもいいわけだし
>>56 とかモロに質問がちょくちょくあるUWSCの管理者権限の話だし
>>57 はそれを回避するための話で
スレチどころか重要な話なんだけど。
あっ
1390000000
2014年1月18日 08:06:40
なんてこった。
この時間寝てたよ・・・
次は
1400000000
2014年5月14日 01:53:20
と
1408161254
2014年8月16日 12:54:14
アプリのプルダウンから特定の項目を選ぶ時に、今までは全部画像認証や座標指定を組み合わせて動作させていましたが 稀にうまく動作しない場合があるので他の案を検討しています。 画像認証は精度が落ちますし、座標指定は画像認証より確実ですが、ウィンドウ位置や大きさを変更した際に誤動作の可能性があります。 何かもっと確実な方法は無いでしょうか? uwsc プルダウン で検索してもイマイチ思い通りのページが見つからなかったので 良ければ教えて下さい
>>64 まず、自分が「プルダウン」と呼んでる物の正式名称は何なのかを調べるべき
候補としては「メニュー」「コンボボックス」「ショートカットメニュー」・・・
>>65 回答ありがとうございます。
clkitem も検索でヒットしていたのですが
(自分の知識不足のせいですが)これが自分が求めているものなのかどうかの判断すら付きませんでした。
けれど、すぐに、「clkitemじゃダメなの?」とレスを頂いたので
こういう場合は普通clkitem関数を使えば良いのだろうと判断できました。
なのでclkitemに絞って調べてみたいと思います。
UWSC以外のプログラムは全く経験が無く、当たり前のような事でも自分にはそれが当たり前だと判断付かないんですが
経験すれば慣れますかね…
回答ありがとうございました。
と書いてたらさらにレス貰えてました。
>>66 >>67 ありがとうございます。
なんだか自分が初心者すぎて場違いな感じでスレ汚ししてしまったかもしれません。
皆様すみませんでした。
小学3年生です。 10の倍数を表示するプログラムを作ってるんですが、うまくいきません。 0しか表示できません。なぜでしょうか。for i = 1 to 100 step 10以外で教えて下さい。 hitoketa=0 hutaketa=0 for i = 1 to 100 hitoketa=hitoketa + i if hitoketa=10 then hitoketa=0 and hutaketa=hutaketa+10 print hutaketa next
>>69 hutaketa の表示をやめて、hitoketa を表示させてみればわかる
>>69 × if hitoketa=10 then hitoketa=0 and hutaketa=hutaketa+10
○
ifb hitoketa=10
hitoketa=0
hutaketa=hutaketa+10
endif
それと
>>70
小3って既に割り算やってたっけ
>>70 thx
車輪の再発明をやろうと思ったんだ
暇だったから
でも無理だった
>>73 車輪の再発明とか大げさなんだよ。
誰だって最初は ”Hello! World.”
今やっとLuaのループが動いた。
単純ループなら VBScript と同じだった。
関数呼び出しが速いけどJSやHSPのが速かった。
ただ、時間を os.date("%S") で取ればそうだけど
os.date()(yy/mm/dd hh:mm:ss)で比較するとVBS以下にまで遅くなった。
文字数が増えるとこんなにも遅くなるということか。
そうすると言語ごとにちょっと違う仕様が影響したかもしれないな。
・・・math.floor(os.clock ()) でやったらHSPを超えたぞ。
やっぱり数値だと速いんだな・・・普通は。
ちなみに、DOSコマンドのバッチでやると3桁だった。
速そうに見えるんだけど違うんだなあ。
速い Lua(数値) > HSP3.31 = JavaScript (chrom) > Lua(文字) > VBScript >> AutoIt3 > AHK >> UWSC >>>> DOSコマンド 遅い
基本的に秒数を文字で比較してるけどUWSCはGetTime()だから数値のはずなんだけどあれ?
os.clock ()はアプリに割り当てられたCPU時間だからちょっと有利か。
でも、逆転するほどの差はないはず。
毎日IDをNGに入れるの面倒臭いからコテつけてくれないかな
文字列の検索と取得教えて下さい aaa1 bbb1 ccc1 ddd1 eee1 aaa2 bbb2 ccc2 ddd2 eee2 テキストファイルにaaa〜eeeの情報があり bbb〜dddの部分を取得して別ファイル作りたいのですが posでbbb1を探し出してからddd1までをクリップボードに取得したいのですが どなたか教えて下さい windowsxpsp3 uwsc4.8apro よろしくお願いします
>>76 sendstr(0, betweenstr(fget(fid, F_ALLTEXT), "bbb1<#CR>", "ddd1"))
開始位置 = Pos("bbb1", 文字列) 長さ = Pos("ddd1", 文字列) + length("ddd1") - 開始位置 ) sendstr(0, copy( 文字列, 開始位置, 長さ )
閉じカッコミスった
>>77 〜79さん
betweenという関数使ってみます
お忙しいなかありがとうございました
|`ゝ _//´ |`ゝ / :;/' _//´ /@,;)ゞ / :;/'  ̄ /@,;)ゞ |`ゝ  ̄ _//´ /\___/\ / :;/' / / u ヽ ::: \ /@,;)ゞ |.u(●), 、(●)、 |  ̄ | ,,ノ(、_, )ヽ、,, u | にぼしが追ってくる、 | u ,;‐=‐ヽ .:::::| たすけて \ `ニニ´u .:::/ /`ー‐--‐‐―´´\
お世話になります 読み込むファイルの容量から40ファイルは新規作成するはずなのですが 3ファイル(うち1つは空ファイル)を作ったところでエラー :Can't be written in 中断しますか? はい いいえ が出てきて はい を選択するまで何回でもまた同じエラーが出ます 結果は先に書いた通り空ファイルが一つと二つの書き込み完了ファイルができます いいえ で続行すると別ファイルが二つできます このままでも20回ほど いいえ を押せばその読み込んだファイル分は終了するんですが エラーを無くして完全自動にしたいです どなたかよろしくお願いします tes3x = fopen("c:¥hoge.txt",f_read) tes333 = fget(tes3x,f_alltext) tes333 = replace(tes333,"<img","検索<img") i = 1 while i < 60 tes222 = betweenstr(tes333,"検索","extended",i) doscmd ("type nul > c:¥mytes.txt") nm1 = "c:¥mytes" nm2 = ".txt" id = fopen(nm1 + i + nm2,f_read or f_write) fput(id,tes222) fclose(tes3x) fclose(id) i = i + 1 wend ここまで。 昨年の2ch情報漏洩から2chブラウザがおかしくなり この書き込みはスマホで手入力しました スペルミスあるかもですが わかる方よろしくお願いします
>fclose(tes3x) ループ中で何度も実行してるから悪さしてるんじゃないの?fget()のあとでいいと思うのだが
>>83 >>84 今、pcで他の作業やっているので空き次第試してみます
ありがとうございました
連投すいません
>>83 さん
>>84 さん
まさにそれでした
fclose(id,true)に直しましたら
今、目の前で快適に動作しています
本当にありがとうございました!
そろそろUWSCを卒業してもうちょっと高等な言語を学びたいんだけど、何がオススメ?
C#.NET または VB.NET または JavaScript
自動操作に絞ったらそうだが、 高等な言語を、といったのだから、 より標準的でより万能でより使用人口が多く より良質な情報源があり上等な開発環境のある 言語を探してるんだろ。
UWSCはクローズドでプロプライエタリなソフトなくせに 商売が地道過ぎて開発規模が小さい。 商売がでっかくて成長し続けいずれはgoogleかMicrosoftに 買収される勢いなら安心できるんだが、 ぶっちゃけumiumiさん一人が開発放棄したらそこまでだからな。 そんな先の見えないシステムの習得にあまり時間かけられんだろ。 UWSCは初心者に優しそうな顔しながら実のところ、 MSDNに書いてあることを知ってるプログラマ前提な説明不足だらけだからな。 MSDN読むぐらいなら最初からVB.NETやC#.NETにしとけよ、 その後でUWSC使う分には苦労なかろう。
>>87 が「UWSCから卒業する」「高等な言語を学びたい」というのの意味次第ではなかろうか
つまり
Windowsやソフトを操るのに、UWSCより高度なことをしたい
のか
操るよりも、自前のソフトウェアを作って処理したい
のか
UWSCを凌駕するHyperUWSCを開発したい
のか
手続き型言語や関数型言語などの言語構造を研究したい
のか
あるいはその他
よくわからんがvzのマクロ思い出した
>>90 .net もいいと思うよ。
リッチな開発環境も無料で使えて開発効率もいい。
ただ、ActiveScript だってマイクロソフトが提供していて広く使われている環境で
マイクロソフトの公式情報だけでなく、数多くの解説サイトやサンプルコードが公開されてる。
Windows には標準で Windows Script Host の実行エンジンとして CScript.exe と WScript.exe がついてて
言語として JScript と VBScript が使える。
JScript はおまえも推奨してる JavaScript とほぼ同じで Web でも使えるし、WSH でも使える。
もちろん、本格的にやるならプログラマ需要のある C# や VB.net もいいとは思う。
だけど、本格的にやるならこんなところで聞かないだろ。
UWSC とか抜きで考えれば SmallBasic を勧めたことがある。
ttp://www.slideshare.net/jsakamoto/clrh56-lt でもちょっとググってみたら F# ってのがいいらしい。
【.NET】F#について語れ2【OCAML】
ttp://toro.2ch.net/test/read.cgi/tech/1304185609/ F#本体が20MBだから入れようと思ったら .net Framework を入れろと言われた。
やっぱやめた。
powershell でも試してみるか。
お世話になります。 aaa = aaa - 1 if (aaa > 0) THEN FOR I = 1 TO aaa 命令文A NEXT// aaaが2以上の場合、 aaaより1低い回数だけ命令文Aを実行したいのです。 aaaが1の場合はなにもしないことを目指していますが、 何故か、aaaが1のときでも1度実行されてしまいます。 何処が間違っていると思うのです…。 短い文なので、根本的になにかを勘違いしている気がします。 ご教授頂ければ嬉しく思います。
ifb 〜 endif を使え それと ×「ご教授」 ○「ご教示」
>>95 ifb aaa >= 2
bbb = aaa - 2
for Z = 0 TO bbb
命令文A
NEXT
endif
>>96-97 いけました!
ありがとうございます!
ifとifbの違いがわかりました。
いつかのバージョンからif-endifでもブロックとして 使えるようになってるはずだけど変わらずifb使ってる?
回答しといてアレだけど、実は俺ifとifbの違いを知らない つかほとんどifbしか使ってなくて処理が1つしかない時だけ記述を少なくするためにifを使う感じ THEN も一度も書いたことない ifbじゃなくてifを使わないとダメって状況あるの? 教えてエロい人
ない 完全にコーディングルールとして できればどちらかに統一していた方が可読性が高いよねってだけ 個人的にはケースバイケースで書き方を変えているケースの方が 処理の追加時に影響が出やすいと考えているので 自分がコーディングルールを決めれる時は 1命令でもコメント行が居るケースもあるだろって説得して ブロック文にさせてる
break とかするときはブロックにするより if then の1行で書いた方が見やすいから出来るだけ1行にしてる。
自分はマクロメディアというツールを使っていた時は いつもifだったので そもそもifbというコマンドの存在を知らず、 UWSCでもifを使っていました。 IFはIFなんだから、これでいけるだろーって。 まさか、条件文が2種類(ifとifb)もあるとは… 今回は皆様、ありがとうございました。
ifbなんて過去の遺物をわざわざ使う必要ないよ 今はどんな時でもifでおk
if文を2行以上に渡って書く時はendifで閉じろよって話
なるほど 一応フラグの切り替えとかEXITとかの特定の処理のみifを使って 感覚的にifとifbとの差別化をはかっていたつもりだったけど 確かにチームとかだとみんなが分かり易いように統一したりするほうがいいんだろうね
IFBはENDIFで閉じない限り必ずエラーになるという「長所」がある。 よって一行IF文とブロックIF文を混在させたい場合はIFBにメリットがある。 IFBが過去の遺物と捨て去るほどUWSCは洗練された言語ではないので。
いつ頃からか構文的にはifbもifで記述OKになったけど if 条件 if - then break endif だと見栄えが悪いから ifb 条件 if - then break endif にした方が見やすいから複数行の時はifbで書く癖付けてるが、文句あるか?
FC2ブログをUWSCで投稿できる方おられましたら教えて下さい 投稿タイトルと本文にコピペしたいのですがわかりません 自分がやってダメだったのは下記です SCKEY("ほげほげぬるぽ日記 - FC2 BLOG 管理ページ - Windows Internrt Explorer",IEFrame",VK_CTRL,V) これではエラーになりタイトルにも本文にも書くことができませんでした どなたかわかる方おられましたらよろしくお願いします
SCKEY(GETID("ほげほげぬるぽ日記 - FC2 BLOG 管理ページ - Windows Internrt Explorer",IEFrame"),VK_CTRL,V) じゃなかろか
それと、タイトル欄と本文欄へのフォーカス制御はどうなってるんだ?
>>110 〜111さん
レスありがとうございました
そそ、それなんです
フォーカス合わせてコピペ2回して保存ボタンクリックをしたいんです
uwsc_PROのRecIEで記録すると
コピペしたい部分は下記のようになっていました
IESetData(IE,"タイトルテスト","entry[title]")//TEXT
IESetData(IE,"本文TEST記事","entry[body]")//TEXTAREA
RECIEで記録したソースはコピペできないので使えませんでした
タイトルにフォーカス合わせてコピペ
次に本文にフォーカス合わせてコピペ
やりたいです
どなたかご存知の方おられましたらよろしくお願いします
素の低レベル保存でやればいいんじゃないかな
>>113 レスどもです
カメラ記録は座標とバーチャルキーの記録なのでちょっと…
IEのショートカットキーでそこに合わせるにはタブキー入力60回以上なので
直接貼り付けできないか模索してます
コピペと一言ですましてるけれど 晒しているコードだけだとペーストしかやる気配がないよね 手動でコピー済って事なのかな? コピー済なら GETSTR(0) でクリップボード内の文字列にアクセス出来るよ
コピペってコピー&ペーストの略なんだが それを判ってての説明ならあまりにも説明不足だぞ。 タイトルをコピペしたいというけど コピペはあなたが思いついた手段であって 本当にしたいことはタイトルの文字列を取得したいんだろ? それってクリップボードにコピーするしか手段ないの? htmlってのはテキストファイルだぞ。
ファイル指定して全テキスト取得して それから必要な部分だけ切り出してるんですが これコピーとは言いませんか? あとはペーストですが 窓の指定方法がわかりません 雑談したいなら他のスレでどうぞ 回答者以外にいちいち答えるのが面倒くさい 何回も回答以外の事でレス求めるのは雑談でしょ あいにく雑談する気はない
情報不足過ぎるし、知識不足だし、態度も悪い
どこが雑談だか
情報不足? FC2ブログの投稿する時のタイトルと本文のペースト これでわからないなら回答できないだろ つまり、わからない奴が回答者ぶるのは荒らしと一緒 そこまでして威張りたいのかね やれやれガキばっかりだな
何をやろうとしてるのかもいまいち伝わってこないのでまずは日本語の勉強からしてきましょう というかそもそもこのスレはお前の質問に答えるためにあるわけじゃないぞ?
文章も流れも空気もちゃんと読んでないけど、ヘルプ見れば解決な話?
化けの皮剥がれるw
そりゃわかんないだろ わかる人にしか答えられない質問だ 無理に答えなくていいから。 いつもの流れだ 期待してないからいいけど 回答できない奴が無理矢理答える必要ない そういう人が回答者ぶると余計に混乱する わからないなら答えない 質問を理解してもらう為にひーこらレスしてられるかよ 意味わからない奴は答えられないから説明しても無駄だからしない 回答しても無駄とか言う人は最初から回答しなくていいから。
舌足らずな自分を棚に上げてそれかい
てか IESetData(IE,"タイトルテスト","entry[title]")//TEXT この部分を動作させるとペーストされないのは当たり前なんだけれど そちらの環境だとどうなるの? entry[title] に タイトルテスト って表示されるよね? これは RecIE で script を作成した時に試しに使った文字列じゃない? 単純にこの行までにクリップボード内に文字列が入っているなら IESetData(IE,GETSTR(0),"entry[title]")//TEXT でタイトルテストじゃなくてクリップボード内の文字列になる筈 でもね、これってマジでHELPに書いてあるレベルなのよ もしココで躓いているなら試行錯誤は全くしてないって事なのよ だから皆 entry[title] に タイトルテスト って表示されないケースなんだろうなって思って 情報を知るために逆質問してるのさ
案の定、仕様後出し山盛り案件で 自分がフリーライダーであることに疑問を抱かないモンスターだったな。 もうエサ与えちゃダメだぞw
梯子を外すのも面白いもんだ
スケジュール設定についての質問です。 複数のスケジュールによる行動を記録したのですが、 もし、あるスクリプトが処理中に 別のスクリプトの時刻が来た場合はどうなるのでしょうか? スケジュールの式が (YMDNN MOD 11)= 10 だとして、 本日の20時00分から起動する予定だったとします。 ところが別のスケジュールによるスクリプトが起動していた場合…。 20時00分〜20時00分59秒までに前スクリプトが終わった場合と、 20時01分以降に前スクリプトが終わった場合について教えてくださると嬉しいです。 また、単純に (YMDNN MOD 11)= 10 (YMDNN MOD 9)= 4 など、別々の式で起動時間が被ってしまった場合などはどうなるのでしょうか?
sleepで検証すればいいかと そのうえで結果を添えて「お前らもこうか?」なら釣れる気がするな
フレーム越しのアクセスがセキュリティ対策でブロックされてるのが原因かと思ったら 皆が予想していない位に低レベルな質問だったので、逆に気付けないパターンだったw
スクリプトの書き方によって変わる 並列処理させているかさせていないか
ぶっちゃけ文体が同じなので・・・
>>126 ありがとう
やっとできました自動投稿
クリップボードてGETstr(0)でいけたのか
ヘルプでIEsetの端から端まで読んだけど書いてない
ダメなヘルプだ、全然ヘルプになってない
コピペなんか基本なんだからしっかり説明してもいいくらいだ
クリップボードを変数に入れたら
IEset get(0)のやり方はできない
嘘だと思うなら試してみな
IESet 変数ならいけた
自分は課金者だからダメなところはしっかり批判します
もちろんUWSCは気にいったからお金払った
ヘルプがダメ過ぎる
あのヘルプじゃ基本的な事すらできない
それから好きでブログ書いてる連中はなんでログインまでしか書かないんかね UWSCは簡単だ簡単だって宣伝してベクターのアフィリ目的の責任感の無い連中だ 宣伝する人は多々居てるが UWSCと言うよりプログラミングの初心者の壁 大きな大きな壁だがGoogleで検索しても誰も説明できていない インチキツールはあるみたいだが実際には役に立たない 初心者が挫折していく大きな壁とは IDと窓名の調べ方 わかる人にはわかるんだろうが 初心者にはちんぷんかんぷん Googleしてみてもわずかしか説明ページはなく、しかもインチキばっかり インチキツールまでだしてやがんのw ヘルプ見ても窓名取得はわからない どこが簡単なんだ 簡単簡単なんでも簡単 そういう嘘の釣り針で わずかなアフィリを稼いで情けない奴らだ
そこまで言うのならお前がそういうサイト作れよ
またゆとりか どうでも良いことを大声で
>>135 窓名なら窓に書いてあるだろでっかく。
ttp://technet.microsoft.com/ja-jp/library/hh849832 (v=wps.620).aspx
> このコマンドは、メイン ウィンドウ タイトルを持つすべてのプロセスを取得し、プロセス ID とプロセス名の表形式で表示します。
> get-process | where {$_.mainWindowTitle} | format-table id, name, mainwindowtitle -autosize
>>138 げん玉とか俺もやろうと思ったけどIP固定だから1件(一日0.1円とか)しか登録できなかったからあきらめたんだが。
>>139 お前は自分の世界が、世界の人並みだと思ってるのか
大きな勘違い
そんなサイト普通の人は知らないし
でっかく書いてるってお前が思っても
なにがなんやら、さっぱりからん
ブログ投稿する時に
ログインIDの窓の名前
メールアドレスの窓の名前
パスワードの窓の名前
ログインボタンの名前
ログイン後に
タイトルを入力する窓の名前
本文の名前
カテゴリー選ぶ時のボタンの名前
サフミットする時のボタンの名前
こういうのは世界標準化しないのかね
お前みたいなプログラミングで何かやってやろうって魂胆がある奴しか調べない
手っ取り早く「簡単なuwsc」をやってみるが
見事にアフィリエイターに騙された
結局、窓の名前がわからないからRecIE目当てに有料版を購入するはめになる
お前らプログラミングコジキは嘘つくし
誇大表示多いし卑しい
わずかなお金で嘘を平気でつくようになるとは
いったいどんな育てられ方したらお前みたいになるんだ?
でっかく書いてるはずの窓名で初心者はみんな挫折していく
おかしいなあ
でっかく書いてるのにね
でっかくってどれくらいでっかく書いてるの?
トヨタや任天堂みたいに知名度は無いの?
おかしいなあ初心者は挫折していく。
>>141 公式のサンプル見てわかる人間ならUWSC買わない
「簡単」を信じて買ってみただけ
実はヘルプはわかりにくく、唯一の解説本小林シンヤ氏のウィンドウズマクロテクニックはExcelの自動化などを主に書いてあり
そういうのはVBAのサンプルが大量に出回っているから、はっきり言って
UWSCとマクロテクニック本は「簡単」って言葉で釣ってるだけ
そんなサンプル役に立たない
実際直ぐに役立つなら昨日なんでそれ出さなかったの
それで窓の名前でてきてもなにがなんやらさっぱりわからない
昨日言ったインチキツールのうちの一つだ
そのサンプルがわかりやすいなら釣り師ブロガーはなぜ釣り針にしない
インチキツールだから自分でもわからない
つまり他人に説明できないからだろ
そんな初心者には使えないインチキツールを出してくるとは
お前やっぱり頭お菓子過ぎるw
>>140 > こういうのは世界標準化しないのかね
お前みたいなプログラミングで何かやってやろうって魂胆がある奴がいたずらするから
アカウント登録などではその対策がされているんだが。
ま、俺もUWSCでアカウント登録しまくったけど。
ところで、痴ほう症って原因が分かって薬もできてて効果も実証されてるって昨日か一昨日のテレビで見たよ。 そんで、誰にでも効果があるのが運動することなんだって。 能を刺激するからなんだけどプログラミングしてみるのもいいかもね。 ただ、プログラミングでは ID:EXbpLBm/P みたいに怒りが有頂天に達するから 逆によくない場合もあるんだけど、ストレス耐性がつけば Windows 8 のスタート画面にも耐えられるかもしれない。
>>143 そんな忠告しらねーよ
コジキブロガーは「簡単」を売り文句にUWSCを宣伝するが
簡単でもないよ
簡単とは、今ダウンロードして3分後には使えないと「簡単」なんて言葉使っちゃダメ
ちょっとWEB操作やろうと思えばとんでもなく検索しまくり
「簡単」しか書いていないページが95%
残りの5%の中で自分のやりたい参考があるか調べていく
そもそもUWSCヘルプがダメ過ぎるのが大問題
やりたい事を探す為に恐らく自分の孫くらいのガキにペコペコして
あげくに何十回も見たインチキツールの紹介された
でっかく載ってるってのも嘘で普通の一般人は全く知らない
「じぇじぇじぇ」とか「倍返し」とか「今でしょ」とか
それくらい有名ならないと他人様に「でっかく書いてる」なんて言わない方がいい
いったいお前は何処でどうやって育てられたんだ
わずかなお金で嘘つくのはよくないぞ
コジキが身についてるからわからんかw
コジキアフィリエイターが「簡単簡単」と宣伝するが ちょっとだけやりたい事でも大量に検索しなければならない それがUWSC ヘルプがまともな日本語使ってないからわかりにくい 初心者は公式または2chで質問しないと先に進めない これはヘルプが悪いから。 質問が多い=ヘルプの出来の悪さ 結局、顔も見たことない孫みたいなガキにペコペコしてみるが 回答以外の話ばっかり こいつら本当どんな育ち方したのか? 質問の仕方が悪いとか態度が悪いとか くだらん回答者ぶるくらいなら何も書くなよ 育ちの悪さはレスでわかるね コジキブロガー必死過ぎる 結局、UWSCは謎的な宣伝ばかりが先走り 使ってみたら、他のプログラミングの方が早い なぜか、ちょっとだけの事にとんでもなく労力かかる 主に質問の労力 他のプログラミングでサンプル探した方がよっぽど早くて簡単だな
>>149 俺もテレビはほとんど見ないが
知らないとは
また嘘とハッタリか
テレビ見ない俺も知ってるのにね
それからここはお前みたいなコジキが張り付いてるからダメなんだ
UWSCを潰したいなら張り付いてればいいよ
変わった奴だ
そんな動画の情報はここでやらなくてもいいだろ
それくらい爺いの俺でも知ってる
何を自慢したいのか知らんが
お前は人を不愉快にさせるから
わからないなら回答者ぶるな
糞勘違いレスコジキ
前スレからこのスレの始めにかけてIE窓にドロップできんとか言ってたのは
>>149 の動画の FLVURL って出る奴が
>>149 のツールでダウンロードできないから
自動化しようと思ってのことなんですよ。
ツールが使えれば簡単。
使えない部分をUWSCでやろうとしてんの。
これが正しいUWSCの使い方。
もちろんアドレスを2ちゃんねるに書き込んでリンクをクリックすればダウンロードできるんだけど
ドラッグ&ドロップでできれば簡単でしょ。
ちょっとの手間を節約するために頭をひねってスクリプト書いてんの。
別に書き込んでればいいじゃんと思うかもしれないけど
動画ファイルをJPEGに偽装したのがあって
そういうのはクリックすると専用ブラウザが丸ごとダウンロードしちゃうんで。
いやまあUWSC使わなくてもちょとのHTMLでドラッグ&ドロップでリンクは作れましたよ。
だけどタイトルを入力しないとファイル名がアレなんでそこをUWSCで自動化したいなって。
だけどUWSCでダウンロードしようと思ってもファイルがないとか言われる動画があるんだよね。
やっぱり簡単にはダウンロードさせてくれないのが多い。
ボタンクリックするのもめんどくさいけど
Youtubeとかは一旦移動しないといけないし動画形式がたくさんあるから自動で選択するのに頭を使うからちょっと手を付けてない。
ダウンロード専用アプリでページを表示させる奴があって あれならどこの動画でも保存できるとは思うんだけど あんな大げさな奴は入れたくないんだよね。 裏でアフィサイトを開きまくってるに決まってるから。
さすが末尾P 育ちの悪さがうかがえる
自分のオツムの弱さを人のせいにしちゃダメだよ 文句言うなら親に言いなさい
脳障害失せろ
質問は選ぶ
回答はとんでも回答
でもデカイ顔して回答者ヅラ
キチガイだな
>>152 動画を保存させるソフトはいくらでも売ってるだろ
今はストリーミングやゲームも保存できる
なんでも対応のソフトは無いが
2〜3本ソフト買えばどんな動画でも保存できる
せっこいアフィリしてる奴は金が無くてソフト買えないのか?
大変だねw
キチガイ「キチガイだな」
要領をえない質問ながらもなんとか回答してくれた人に対し 自分の求める答えではなかったからといってとんでも回答と言い放つその態度 何様のつもりだ
>>156 > 動画を保存させるソフトはいくらでも売ってるだろ
情弱自慢かよ
> 今はストリーミングやゲームも保存できる
オンラインゲームを保存して何の意味が?
だいたいツールなら何でもあるみたいに言ってるならなんでUWSCなんか使おうと思ったんだよ。
ブログツールならいくらでもあるだろ。
なくても使ってる人にクレクレメールでも送ったらいいんじゃね?
金払ってくれるんなら喜んでくれるだろ。
>>158 ほらでた回答者ヅラ
お前が回答したのはどれ?
回答もしてないのにこの態度
社会人不適格だな
>>159 自動投稿ツールなんて作者がアップした時点だけで
使えなくなったのばっかり
使える自動投稿なんてねえよ
お前こそ情報弱者丸出し
よくそんなオツムで回答者ヅラできるなw
質問選んで質問者を罵倒するだけだから
誰でも回答者できるかw
情けない奴らだ
社会人不適格の奴「社会人不適格だな」
今時アフィリブログの記事を真に受けて課金しちゃう情弱 「お前こそ情報弱者丸出し」
情けない奴 「情けない奴らだ」
何を勘違いしてるのか知らんがここは質問スレじゃない 「善意」で回答してあげてる奴もいるけどな
だいたい答える義務の無い人間が善意で答えるスレなのに 善意者気取る割には回答しない つーか回答できない内容まで回答しようとして質問者を罵倒する 全然善意じゃないよね ただの罵倒屋だ 回答者ヅラしながら回答しない奴ばっかり たまに質問者が来たら寄ってたかって馬鹿扱い そもそもUWSCのヘルプが悪いからこうなる ヘルプがしっかりしてればここの偽善者も少なくなるのに 回答者ヅラが楽しくてやめれないんだろ インターネット中毒だ 誰かれ構わずターゲットを見つけてレス要求 まともに取り合わなければ豹変して罵倒する ヘルプがわかりにくいからこうなる UWSCより他のプログラミングでサンプル探した方早いし 回答者もこんな威張らない
UWSCの回答者さまー 評判悪いよw なんで威張り散らすの? UWSCの回答者は少ないから上から目線が身についてるからか 他のプログラミングで回答者してくれる方は手に負えない質問までは回答しない だから罵倒なんてありえない ここの質問者さんへ UWSCの習得には多大な労力がいる こんなキチガイ連中をなだめながら回答待ちするくらいなら サンプルの多い言語を始めなさい 絶対にその方が早い!
などと意味不明は供述をしており
ヘルプに文句があるならこんなとこで喚いてないで作者に言えよ
ドッカーン! (⌒⌒⌒) ||| _____ /:::::::::::::::::::::::::\ /:::::::::::::::::::::::::::::::::::\ |:::::::::::|_|_|_|_|_|. ID:EXbpLBm/P |_|_ノ∪ \,) ,,/ ヽ |::( 6 ー─◎─◎ ) |ノ (∵∴∪( o o)∴) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ | < ∵ 3 ∵> < わからないなら回答者ぶるな /\ └ ___ ノ ムッキー!! \_____________________ .\\U ___ノ ヽ \\____) ヽ
>>160 > 自動投稿ツールなんて作者がアップした時点だけで
> 使えなくなったのばっかり
そりゃフリーソフトと違ってサンプルソースって意味合いがあるからね。
Webサイトの仕様が変更されれば使えなくなって放置とか普通。
動かなくなったらご自分で変更ドゾーってことだよ。
>>165 > そもそもUWSCのヘルプが悪いからこうなる
でもググればいくらでも出てくる時代なんで
> 回答者ヅラが楽しくてやめれないんだろ
> インターネット中毒だ
だからさっさと質問しやがれ
> UWSCより他のプログラミングでサンプル探した方早いし
まあそうだな。
> 回答者もこんな威張らない
そもそも無視するしな。
ご覧の通り 回答者ヅラのキチガイ連中は 回答以外のレスに夢中です UWSC習得に物凄い労力が必要なのは こいつらから聞き出すのが大変な労力ってこと サンプルの多い言語を始めたほうがいい 言葉使い? 態度? 何を言い出すんだこいつらw サンプルの多い言語なら そんなの気にしないで勉強できる UWSCは言葉使いや態度が肝心な言語だキチガイのご機嫌取るのは疲れるぞ 初心者は回答をこいつらから聞き出すより サンプルの多い言語始めなさい
ほらまた嘘きたー FC2のタイトル窓名と本文窓名がいくらでも出てきたのか お前の検索ツールは何よ? Google、Yahoo、じゃ出てこないぞ いくらでも出てくるって嘘ばっかりこくなキチガイ お前みたいな嘘つきコジキが回答者ヅラするからダメなんだ つーかお前なんか回答したの? どれよ レス番言ってみ。
>>172 は
>>170 へのレスです
アンカーしてなかった
つまり
>>170 は常習的な嘘つきコジキだ
嘘ばっかり平気で書いてるキチガイ
どこに、FC2のタイトル窓名が出てたの?
いくらでも出てくるとか嘘ばっかり
こいつマジキチガイ
自分の主張の為なら平気で嘘つく奴
>>170 こういう嘘つきがUWSCの回答者ヅラしてる奴の正体だ
質問者を罵倒する為なら平気で嘘つく
こういうキチガイから回答もらおうとするより
他のプログラミングでサンプル探した方が早いし気楽
嘘つきキチガイのご機嫌取りながら
UWSCにしがみつくのは時間の無駄
嘘つきあかん!
サンプルが一番多いのは Javascript。 Javascript のないWebページはほとんどない。 Web系ということで Perl も多いがサーバー向け。 ローカルで多いのは VBAやVBScript。 MS Office のドキュメントについてくる。 機能が少なくてよければ bat ファイル。 全てのWindowsで動いてる。 上記でマウス操作ができるのは VBA+DLLだけ。 PowerShell でも Invoke すれば DLL を利用できるらしいので PowerShell だけで自動操縦ができそうなのでサンプル探し中。 PowerShell は bat や WSH の後継だと思うけど bat の10倍速かった。 UWSCには速度で劣るけど Windows に標準搭載。 UWSCからも呼び出せるからもっとうまく使えるといいなって。
PowerShellは結構いいよね 特に気に入っているのは大量のファイルの整理が強いこと データベース感覚で絞り込みやマッチングが出来る アプリで最終操作を行うためにUWSCに情報を渡す時も結構簡単と重宝してますわ
>>168 UWSCのヘルプには問題あるね
自分はここで事実を書いてるだけ
お前はここの管理者か?
なんでUWSCスレでUWSCの話題がダメなの?
UWSCの不利な事は書かせないつもりなの?
ここはUWSCの宣伝掲示板じゃないぞ!
初心者の皆さん
UWSCは簡単に自動化できるツールと言うのは何回も見たことあると思います
それはアフィリエイターの宣伝ですよ
フリーウェアで有名なサイトの実話を話します
有料版に切り替えると宣伝者にはお金が入るんです
だから初心者には「簡単!簡単!」と説明して無料版をダウンロードさせる
しかし、無料版ではできる事が限られていて
慣れてくるに従い「ID」や「ウィンドウ名」などを変更して使いやすくしたくなります
UWSCは「ID」や「ウィンドウ名」について詳しく説明していません
なぜなら、有料版のRecIEを使えばIDや窓名はわかります
つまり、IDや窓名の取得方法を教えないのが金儲けに繋がるからです
お金儲けと言ってもわずかな金額です
しかしUWSCを宣伝する人にはRECIEこそが頼みの綱
簡単にIDや窓名は教えないです
知りたければ有料版って事です
有料版を買ってみましたがRecIEだけですね納得したのは。
初心者の皆さんはサンプルの多い言語始めなさい
わずかなお金の為に平気で嘘をつく連中に期待しながゴマすりながら
回答待ちするのは神経すり減らしますよ
回答者の多いサンプルの多い言語がいいよ
今、メール自動返信ツールが必要になったから数十万円貸してくれという詐欺があるって テレビで特集やってるような気がする。
初心者の皆さん!
>>177 UWSCを取得する為には、こういうキチガイの
ご機嫌取りながらUWSCの質問をしなければなりません
質問の仕方が悪いとか態度が悪いとか
他のプログラミング言語では考えられないくらい横柄な回答者が多いです
なぜならばUWSCを他人に教示できるレベルの人間は少ないからです
UWSC自体がヘルプが未熟で他のプログラミングをある程度使いこなした方でしか理解できません
こういうキチガイでも他のプログラミング言語では多分、普通に会話できるんでしょう
しかし、UWSCは個人が作り上げた特殊なソフトなので回答者が少ない
必然的に彼らは質問者を選び横柄な態度を取るようになりました
中には回答者のふりをしながら回答はしない
憂さ晴らしの為だけにここを覗いている輩も居てます
こういうキチガイのご機嫌取るのは疲れますよ
サンプルの多い、回答者の多い言語を始めなさい
UWSCはカメラモードで簡単に記録再生できますが
サイトは自動化を嫌いメンテナンスします
そしたらカメラモードはエラーばかりで役に立たなくなり
結局、自分でソース書く事になります
それなら最初からサンプル、回答者の多い言語がいいのでは?
よく考えてみなさい
>憂さ晴らしの為だけにここを覗いている輩も居てます お?自己紹介か?
>>181 ほらまた釣れたキチガイ自己中回答者
こうやって人を小馬鹿にするのが趣味の奴が多いのも問題ですね
先に書いたようにUWSCのヘルプでは初心者には理解できません
それをわかっているからこいつらは横柄な態度を取るんです
こんなキチガイ気分屋のご機嫌取るより他の言語を学んだ方が早いし身になる
回答者のふりをしながら様子見て
手に負えない質問なら消えるんですよ
こいつらは。
学ぶために他人の機嫌を取って質問しなきゃならないと思い込んでるゴミ これがゆとりか
初心者だったら記録で使うだろ スクリプトを書こうってのは初心者とは言わないと思うぞ
>>178 >フリーウェアで有名なサイトの実話を話します
>有料版に切り替えると宣伝者にはお金が入るんです
これはUWSCでは見たこと無いなぁ
ほかのソフトと混同して、憶測で物を書いてはダメだよ
>>183 これがゆとりか
自分の世代は先に書いた
人のレスを読まないのに攻撃だけはするんだね
情けない奴だ
>>184 こいつもゆとり
UWSCのカメラモードでは役に立たなくなりソース書く事になると先に書いた
読まないのに攻撃だけはするんだね
上のキチガイと同じだ
>>185 それはお前が知らないだけじゃないの
誰でも知ってる大手フリーウェアサイト
そこで有料版が売れれば報酬貰える
ソフトによって貰えるパーセントが違う
UWSCのパーセントは知らないが
プロレジ5%シェアレジ3%と書いてある
俺の勘違いかね
なんでそんな自身満々なの?
ウミウミさんかなw
そこで売れたからと言ってウミウミさんに全額入るのかね
もし、ユーザーが払った金、一円も減らずにウミウミさんに入るなら俺の勘違いだな
しかし、3%もしくは5%貰えるとASPと契約してる人はどっから金を貰えるのかね
お前こそ憶測でもの言うな
キチガイは自分のゴミみたいな連投に全て目を通してもらえてるという前提でレスしてるのかw さすがキチガイw
ぶっちゃけアフィリブログの内容を真に受けて信じちゃったり 騙されてネットでファビョリまくってるような情弱おじさんにはインターネッツは無理だよ 顔真っ赤おじさんそろそろ黙ってよ
ぷw 何を書こうが変わらない UWSCのヘルプで初心者は挫折する それがわかってるから回答者のふりしてクソ生意気な態度で質問者を煽る 回答しないのに回答者ヅラしてる奴は居てる 回答しないなら煽るのも無しだろ その辺りがUWSCは特殊なんだな 回答者が少ないから回答者ヅラして好き放題に煽れる つまり回答できない回答者ヅラしたレスコジキ こいつらにゴマすりながら回答待ちするくらいなら サンプルの多い、回答者の多い言語始めた方がよっぽど早い ここは回答者ヅラしたレスコジキだらけ 初心者は質問しない方がいいよ 煽られた上に回答もなしだぞ ここはガキの溜まり場だからな わずかな金の為に平気で嘘つくカスも常駐してるので要注意 平気で嘘つくからなw
嘘つき回答者が目立つUWSCより サンプルの多くて回答者の人数多い言語を始める方が早くて簡単!
レス飛びまくりワロタ お前らいつまでヘルプも理解できない程度の知能のやつの相手してるんだよ
>>186 >誰でも知ってる大手フリーウェアサイトそこで有料版が売れれば報酬貰える
それはVectorの話だね
>有料版に切り替えると宣伝者にはお金が入るんです
勘違いしてるのはここだね
宣伝者にはお金は入らないよ
ちなみに俺は作者の人じゃないよw
UWSCのヘルプが未熟で、 初心者に優しそうな外面していながら 実のところプログラミング初心者お断り それに反感を持つところまでは共感するぞ。 それ自体に反対する者も少なかろう。 だが今、 そのお断り姿勢が、 コイツのようなクレーマーを跳ね除けるのに 成功しているのを見てフクザツな気分だわw 世の中、お前みたいな人格障害者が 沢山いるもんなぁ。
>>192 そりゃ契約しないで宣伝してる人には金は入らない
契約して宣伝してる奴も居るだろ
お前やっぱり知らないでレスしてたんだ
ここは回答者ヅラしたシッタカ君ばかりだなあ
お前の事だよシッタカ君
むかつくならむかつくでいいけど、なんで粘着してるんだろ。
最近の義務教育や高校は過保護なんだなあ
ヘルプをスラスラ理解するには、WindowsAPIでGUIアプリ作れる程度じゃないと厳しいよ そうじゃないとウインドウの種類やクラス名すら分からないだろうし 言語仕様的には、VB/VBA/VBSがある程度使える人が対象かな 細かい説明しなくてもBASIC系言語は既に理解してる人 APIに関してはC言語、COMに関してはWSH、IEに関してはJavaScript それぞれ、かじる程度でも経験ないと…… ぜんぜん初心者向きじゃないのに、なぜか大量に初心者が流れ込んでくるw 原因はブログなのか?
伸びてると思ったら火病っちゃったのか
初心者が来るのは録画機能の所為だと思うわ そこから一つ段階上げ様としてスクリプトに手を出すが基本が全くないからググってコピペの技術だけ覚える それでも動いちゃうのがUWSC そんなこんなで今度は自分がやりたいことを一からスクリプト組もうとして挫折して内容が入ってない頭でこういうとこに来ちゃう
質問の仕方が悪いとか態度が悪いとか 質問者を煽るのはUWSCとパールくらいだろ ともに謳い文句は初心者に優しい パールはServer側の事をやるので職人気質みたいなのが居てるな 全体的に回答者の質は悪い 更に回答者の質が悪いのがこのUWSC パールの連中は答えを持ちながら焦らして遊んでる いざとなればいつでも速攻で回答してくれるレベルの人も多数居てる だがUWSCはタチ悪い 答えを持ってるふりだけして 実は回答者ヅラしてる奴もわかってないんだな なんでこいつは回答しないのに偉そうにしてるのって奴が多い 回答者ヅラしたキチガイレスコジキの巣窟
回答者の質が悪いのでUWSCはオススメできません。 深入りする前にUWSCは捨てて、 もっと良いスクリプトに乗り換えると良いでしょう。 ライセンス料を返金して欲しいなら ココに書いても無駄ですので 支払先と交渉しましょう。 では、さようなら。
マジで半端ねえな 知識をタダで教えて貰えて当然って考えがあるとここまで人間が歪むのか 文化的乞食と名付けよう
いやいや乞食は恵んでもらうために低姿勢になることを忘れない。 乞食をバカにしないで貰いたい。 この場合はさしずめ知のひったくり犯とでも名づけたい。 ってか俺がネトウヨなら絶対アレと決め付けるわw
生活保護の人はみんなこのくらい高飛車だよ
あ、mouse Recorderっていう、ちょっとしたプログラミングも記録もできるソフトがあるよ フリーとシェアがあるしUWSCと近いものがある 言語も独自の命令文で特に事前の知識が要らなかった気がする
>>194 もう一度書くけど、憶測で書いてはダメだよ
EXbpLBm/Pにはむしろ AutoIt3 をお勧めしたいな へんに日本語で質問できる場所があるから他人を頼ろうとする サンプルコードは多いけど英語オンリーだったりすると、自分で解決する癖が身に付く
殺伐としたスレになんとなく自作関数をペタリ UWSCってヘルプだけでも使えないってのは同感だけど 調べる楽しみもあるんだけれどなぁ //ファイル(フォルダ)をごみ箱へ移動 Procedure RecycleBox(inFile) //定数宣言 Const ssfBITBUCKET = 10 //ごみ箱 oFSO = CREATEOLEOBJ("Scripting.FileSystemObject") If oFSO.FileExists(inFile) = False And oFSO.FolderExists(inFile) = False Then Print "指定されたファイル(フォルダ)が有りません" Exit EndIf oSA = CREATEOLEOBJ("Shell.Application") oRB = oSA.Namespace(ssfBITBUCKET) oRB.movehere(inFile) While oFSO.FileExists(inFile) = True Or oFSO.FolderExists(inFile) = True //移動待ち Sleep(0.5) WEnd FEnd
なぜ完了通知や戻り値を
自作だから不都合がない程度でいいのさーってノリ たしか movehere には戻り値ないよね 非同期実行の筈だし なのでカツカツにチューニングする気もないので 実行直後に同期させるためにループしてたりします まぁ、話の種にでもして下さい
>>207 逆に聞きたいんだが
なんで憶測だと断言できるの?
ASPのマーチャントにベクターがあって
その条件見たら
プロレジとシェアがあって
5%と3%だった
ベクターからUWSCもダウンロードできるから
そうなのかなと憶測してたけど
UWSCは紹介しても紹介料貰えないの?
ベクターがマーチャントやってるのは間違いない
UWSCが範囲内かどうかは知らない
ただ、プロレジがいくらシェアレジがいくらとか書いてあったら
UWSCもそうなのかなって思った
UWSCが範囲外って根拠はあるの?
自分が見たマーチャント情報ではUWSCが範囲内なのか範囲外なのかはわからない
そもそもプロレジシェアレジの範囲内範囲外があるのかもわからないから
ひとくくりに紹介料が発生するのかと思った
あなたそこはわかるの?
断言してる根拠は?
>>207 無料版、有料版があるUWSCを紹介して
そのダウンロードした人が有料版にしても紹介料が発生しない根拠はあるの?
はげしく頭悪いな 難癖つけてきたお前に UWSCで紹介料が発生する証拠を挙げる義務があるんだ そうでなければ お前がUWSCを強請りたかって やめて欲しくなったUWSCが 手打ち金を払いたくなると期待していると 思っていない根拠があるの? と返すしか無いわ
>>212 >逆に聞きたいんだが
>なんで憶測だと断言できるの?
>ASPのマーチャントにベクターがあって
>その条件見たら
>プロレジとシェアがあって
>5%と3%だった
>ベクターからUWSCもダウンロードできるから
>そうなのかなと憶測してたけど
自分で憶測してると書いてるよね
あと気になったのは
>>146 >「簡単」しか書いていないページが95%
>残りの5%の中で自分のやりたい参考があるか調べていく
95%、5%という数字はどこから出てきてるの?
この数字は憶測じゃないのかな
>自分が見たマーチャント情報ではUWSCが範囲内なのか範囲外なのかはわからない
>そもそもプロレジシェアレジの範囲内範囲外があるのかもわからないから
>ひとくくりに紹介料が発生するのかと思った
>あなたそこはわかるの?
自分もわからないから少し調べてみた、これだね。
ベクター・アフィリエイトプログラム
http://www.vector.co.jp/affiliate/ で、紹介URL貼っているページがあるのか調べると、確かにあるね。
これは自分が悪かった、実際に紹介料が貰えるのかまでは確認してないけれど、
よく確認せずに
>>192 で「宣伝者にはお金は入らない」と書いてしまい申し訳ない。
// EXbpLBm/Pの言うことにも一理ある。つまりは↓のようなことではないかな? UWSC="difficult" if UWSC="difficult" then UWSCValue="使えない" while UWSC="difficult" A="AKB48" fukidasi(copy(A,3,1)+copy(A,1,2)+copy(A,1,1)+(val(copy(A,4,1))/2)+copy(A,5,1)+UWSCValue) wend
ワロタ
馬鹿は馬鹿でも馬鹿なりの姿勢があるだろ頑張ろうって考えがなく、短絡的に責任転嫁し自分を正当化、 さらに気にくわない都合の悪い一切をインチキなどと悪党呼ばわり。無知を晒すのみならず世間を知らぬ無恥を正義と盲信し、 なんら義務や責任のないスレ民をひと括りにして批判し、俺を救えない、予め救える仕組みを置いてないお前らは無知無能とのたまう。 早い話、彼はきっと「発達障害」なんだろうな。
>>218 発達障害だけでそんな風にはならないよ。
むしろここまで行くのは変な教育受けてるわ。
発達障害がかわいそう。
そもそもAPIだとかCOMだとか、 GUIなど介さず他のプログラムによって 操作されることが出来るようにわざわざ作られてるからな。 それをUWSCで操作しようという発想が「筋が悪い」のだよね。 逆に言えば、 APIやCOMなどインターフェースを外部に公開していないGUIプログラムを どうしても仕方なく無理やりに動かす分にはUWSCは使えるわけだ。 その無理矢理の究極が、画像認識による操作なんだよ。 CreateObjectしてそのメソッドを呼んで操作できるなら、 UWSCである必要が全く無く、ドット書いたらインテリセンスで メソッドの候補が出てきてスペルミスしようがない総合開発環境で書くべきだろ。 あくまで個人の感想ですが。
概ね同感 自分の場合はデフォルトのブラウザがFireFoxってのもあって POSAAC()の使用頻度が鰻登り状態だけど 最終手段としてCHKIMG()があるのはやっぱり良いよね どっちが速いかはPOSAAC()の速度を考えると正直微妙なんだけれど レイアウト変更に強い検索用画像を用意するのもそれなりに面倒なので重宝してます
オブジェクト指向のマクロはないの
staticなclassしか扱えないと考えればuwscでも
227 :
名無しさん@お腹いっぱい。 :2014/01/25(土) 20:12:33.90 ID:LaskbSvT0
頭が悪い俺にこれはかなりきついん 慣れでどうにかなるもんなのか
慣れてたら そりゃどうにかなるさ
慣れっつーか、UWSCはヘルプ見ながら必要な関数並べるだけのパズルで ある程度のことできちゃうから、オンゲーの操作を自動化してーとかなら 修得とか難しく考えなくても、休日半日潰して集中して作ればおk。 覚えなくていいんだ。ヘルプ見ながら当てはめてきゃいいんだ。 何ヶ月後かに久しぶりに自分でソース見ても、コメがなきゃ理解できねー とかそんなんでいいんだよ。
UWSCってスレッド呼び出しした直後の関数内でしかフキダシ(バルーン)表示は保護されないのね 平行して起動した別スレッドのフキダシ表示のために再利用されて最後のしか表示さなくなるのか マウス付近や画面端に『複数の』情報をフキダシ(バルーン)表示する関数作りたいのに地味に面倒くさいな ミューテックスで資源の排他制御は最低限にして関数の階層化は諦めて展開させていくしかないか〜 For i = 25 To 100 Step 25 THREAD Fukidasi_th(i) Sleep(0.1) Next MSGBOX(”おわり”) Procedure Fukidasi_th(x) Fukidasi("hogehoge", x, x) //保護される FukidasiP("hogehoge", x + 100, x + 100)) //保護されない While True Sleep(1) WEnd FEnd Procedure FukidasiP(inStr, x, y) Fukidasi(inStr, x, y) //※この関数を抜けた後、再利用対象になってしまう Sleep(0.5) FEnd
あー 泥臭いけれど関数の階層化は諦めなくてもいいか Fukidasi関数に渡す引数を計算する関数だけ階層化して 表示部分はスレッド直下に持ってくればいけそうな予感が・・・ 試してきます 別の視点で何かあれば意見が貰えると嬉しいです
そのヘルプを見ないといけないところがうざい テキストなのに重すぎるんだよヘルプは
嫌なら使うなゴミ お前みたいなゴミに使ってくれと頼んだ覚えは無い
>>231 俺は「最終的にFUKIDASIを呼び出す関数」を呼び出す時だけTHREADで呼び出してたから気づかなかったよw
そもそも呼び出す時に一々直接THREADで呼び出したら6文字余計で面倒くさいし戻り値も戻らないじゃん?
function myFukidasi(...)
...
thread threadMyFukidasi(...)
...
result=true
fend
チラ裏 吹き出しは各スレッドに1つずつ存在(非表示の状態も含む) 同一スレッド内では、FUKIDASIを複数回呼び出しても、 表示内容・位置・表示状態が変化するのみで、同じ吹き出しが使い回される スレッドが終了すれば吹き出しも消滅する
>>230 を走らせてみたが、
あるスレッド関数内から別の関数を呼ぶと
呼び出し元スレッド外になるのかねぇ?
だとしたら原因不明のバグの温床になるので要注意だね
FA = "" FB = "" FUKIDASI (FA + "<#CR>" + FB)
>>234 目的別に関数を作りたい性格なので
マウス付近にフキダシを作る関数
再帰呼び出しでマウス付近にフキダシを作りづつけて指定時間になると透明度を使って消えていく関数
画面四隅にフキダシを作る関数
とかを作っている最中に気づいたんですよ
フキダシ一つならそれぞれの関数は安定動作するんだけど
上の理由で別スレッドから呼び出すと賞味期限が短すぎてUWSCに再利用されてしまうのです
>>235 自分もその認識でしたがちょっとだけ違うみたいです
Fukidasi_th をループさせるとわかりやすい挙動になりました
>>236 FukidasiP内でプロセス番号やスレッド識別子を表示すると呼び出し元の番号を返してくるんですよね
でも GETID(GET_FUKIDASI_WIN) を表示させるとスレッド番号関係なく再利用されるみたいなんです
なのでフキダシ表示固有の問題と思われます
For i = 25 To 100 Step 25; THREAD Fukidasi_th(i); Sleep(0.1); Next
MSGBOX("おわり")
Procedure Fukidasi_th(x)
tmpStr = ""
For i = 1 To 5
tmpStr = tmpStr + i + "<#CR>"
Fukidasi(tmpStr, x, x); Sleep(0.5) //保護される
FukidasiP(tmpStr, x + 100, x + 100); Sleep(0.5) //保護されない
Next
While True; Sleep(1); WEnd //無限ループ
FEnd
Procedure FukidasiP(inStr, x, y)
Fukidasi(inStr, x, y); Sleep(0.5) //※この関数を抜けた後、再利用対象になる
FEnd
IdToHnd(GetId(GET_BALLOON_WIN)) でウインドウハンドル追ってみたけど変だね サブルーチン側(FukidasiP)では、最も始めに作られた吹き出しのハンドルが常に返ってくる threadで直接起動された関数内では、各スレッドに別々のハンドルが使い回されてる つまり、「サブルーチンを抜けたら」じゃなく、 サブルーチン側ではスレッド固有の吹き出しにはアクセスできてないようだ
あやふやで申し訳ないけれど、thread+fukidasiのウィンドウハンドルに関しては何処かのVerUpのときに アレ?と思った時があったような… まぁ大事にならなかったから自分は流したけれど、もし時間あるようなら少し前のUWSCで試してみてくださいませ
少し訂正 最も始めに作られた吹き出しではなくて、 メイン以外のスレッドで最初に作られた吹き出し
>>241 情報有り難うございます
今日はちと難しいですが後日確認してみます
>>242 確かに!
よく見ると保護されると思ってたフキダシも再利用される仲間に入ってますね
これ面白い(変な)のが Fukidasi_th のループ内の FukidasiP をコメントアウトすると
4つ全て正常に表示されるんですよね
なので変になるトリガーはやっぱり FukidasiP 内の Fukidasi って事なんだと思います
ミッションクリティカルとは言えない満足度部分の話に返答有難うございました
いや〜クリティカルでしょ UWSC自体がミッションクリティカルな用途に向かないってことになって これで商売してる人たちは困るんじゃね? UWSCでスレッドは極力使うべきではない、が結論になるだろうね。 作者本人も嫌々実装してるみたいだしさ。
質問よろしいですか? 画像認識を順番に20個ぐらい一気にやってるのですが、少し時間がかかってしまいます 時間短縮したいところです 画像の大きさは、できるだけ大きい方が判定時間は短いのでしょうか? 例えば、100×100 の範囲内で判別する際に、使用する画像サイズが10×10のものよりも 20×20の方が時間短縮できるのでしょうか? それもと逆に、サイズは小さい方がいいのでしょうか? どなたかお答え頂けると助かります よろしくお願いします<(_ _)>
実測して比べればいい
おっしゃるとおりですね 今自分で、時間計れるプログラム書いてやってみました 結果、大きいものの方が画像認識の時間は短かったです ケースバイケースかもしれませんが、私が簡単にやってみた結果です 自問自答でした お騒がせしました<(_ _)>
大きいほうがいいということはないと思うけど 仮に大きくても小さくても左上の1点で判定できるとすると、 大きいほうが検索範囲が狭くなるので速くなるかも。 同じ大きさの箱に違う大きさの箱を入れると可動範囲が違うという理屈。 検索範囲は絞った方がいいし、 出来るだけ似た色のない部分を選んだ方がいい。
>>248 テスト結果載せてくれてありがとう。
多分大きいと、最初の数ドットでマッチしなかったら、画像の大きさ分飛ばして離れた所から検索再開するんだろうね。
ボイヤー-ムーア文字列検索の画像版みたいな
画像の出る座標が決まっているなら その座標をきちっと出して比較すれば 1回の比較で判定するから速いよ。
画像認証は左上から右下にかけて認証していくから
大きさの他に、x軸y軸の位置によっても時間は変わるね
>>251 さんも言ってるけど、認証の場所が決まってるなら範囲指定したほうが早くなるよ
UWSCって普通にパターンマッチだろ
画像ファイルが16x16と100x100で計測してみた もちろん一致箇所を全て調べあげるモードで 検索範囲が500x500の場合 全く一致しそうにない画面では、100x100の方が約4%速い 一致しそうでしない画面では、100x100の方が約60%遅い 範囲が100x100の場合 どちらも差は1%以下でほぼ同じ
比較回数は画像が大きいほど狭くなり有利に働く。(不一致の条件が同じ場合) (500-16)^2=234256 (500-100)^2=160000 160000/234256≒0.68 検索範囲が小さくなるとキャッシュに入りきるので速くなり、時間的な差は小さくなる。 (大きい画像をキャッシュに読み込むのと、小さい画像を何度も比較するのはCPUから見て大差ない) 500^2*4=1000000≒1M 100^2*4=40000≒40k 16^2*4=1024=1k 4バイト=32ビット(色数) Core i のキャッシュメモリ 1次 32k×2×コアごと 2次 256k×コアごと 3次 3MB、6MB など
つまり、問題は画像の大きさでなく 範囲は絞れるだけ絞っとけってことですね。
検索範囲は絞るべきだけど 画像も小さいほうがいい。 最初のドットで違っていればいいけど 真っ白な画面に周辺部が白い検索画像だと かなりの量で一致するから不一致の判断するまでに結構CPU食うことになる。 一致する色が全然ないとわかっているならいいけど。
作ってみたけど反応遅すぎて使いにくい。 // マウス座標上の色がウィンドウ中にいくつあるか調べる。 // 4096以上あるとUWSCがエラーを出して中断するので4096個目が存在する場合は True を返す。 stopform(true) MOUSEORG(0) 画像名 = "temp.bmp" while true sleep(0.1) ID = GetID(GET_FROMPOINT_WIN) MOUSEORG(ID) gx = G_MOUSE_X; gy = G_MOUSE_Y x = gx - STATUS( ID, ST_X ) y = gy - STATUS( ID, ST_Y ) c = PEEKCOLOR( x, y ) r = c and $FF g = (c and $FF00) / $100 b = (c and $FF0000) / $10000 SaveImg( 画像名, ID, x, y, 1, 1, ) sleep(0.2) num = ChkImg( 画像名, 0, 0, 0, STATUS( ID, ST_WIDTH ) , STATUS( ID, ST_HEIGHT ), 4096 ) ifb num = false num = ChkImg( 画像名, 0, 0, 0, STATUS( ID, ST_WIDTH ) , STATUS( ID, ST_HEIGHT ), -1 ) endif fukidasi("x:" + format(x,4) + " y:" + format(y,4) + " 個数:" + num + " R:" + format(r,3) + " G:" + _ format(g,3) + " B:" + format(b,3) + " タイトル:" + STATUS( ID, ST_TITLE )) wend
>>260 遅いって、もしかしてAeroONでやってるのか?
chkimgやpeekcolor使うときはAero切るのが普通だぞ
>>261 Windows8.1使ってるんだけど
Windows7のようなOFFにするオプションがショートカットのプロパティにない。
Sleep を長くとってるけどそれでもラグがある。
どうもファイルの保存が遅いっぽい。
しばらくしないと正しく検索されない。
マウスを動かして
色は即時正しく拾ってるのに
個数がしばらくしないと合わない。
Windowsの不具合でないんなら
ChkImg がファイル名でキャッシュしているせいで即時反映されないのかも。
ファイル名を毎回変えれば即時反映されるかもしれないけど
それだとWindowsのディスクキャッシュの恩恵を受けれない。
これの場合は画像ファイルである必要はないから
自分で一点一点比較すればいいけど
UWSCのループじゃ遅いから
PowerShell+C#呼び出したらいいかな。
個数を受け取るだけだから簡単だろう。
ファイルに書き出さずにクリップボード使えばいいと思うけどなあ
264 :
262 :2014/01/30(木) 11:43:00.28 ID:fFL6VXlc0
最初、サーチ部分だけを C#の LockBits で書こうと思ったが、PowerShell の呼び出しに2秒以上かかるからあり得ん。
ついでに DOSCMD 測定したら 0.5秒くらいだった。
PowerShell だけでやる場合は Win32API の呼び出しが必要だったけどちょいめんどいしここに書き込んだら文句出るしちょっとパス。
AutoItX を使うと API 部分が簡単になる。具体的には 「Get-AU3WinPos -WinHandle ハンドル」で矩形が取れる。
だけど AutoItX には _WinAPI_WindowFromPoint がないから自前で API を使わないといけない。
PowerShell でクリップボードを使うには STA で起動しないといけないとかでちょっとパス。
メモリマップドファイルは UWSC がバイナリを扱うのが面倒なのでパス。(サンプルコードはあった)
ttp://blogs.gine.jp/taka/archives/1359 UWSC で↑のコードを試したらなんかクリップボードにセットはダメだったんだけど
クリップボードからのゲットだけは出来た。
UWSCでマウス座標+ウィンドウ矩形を取得して クリップボードを経由して PowerShell + C# で画像処理+表示 ならスムーズにいけそうだ。
と言うところまでなんとかいけた。
まあ、引っかかってる部分を PowerShell 、C#、API でやれればいいだけなんだけどよく分からん。
START = GETTIME() の括弧って何ですか? よくサンプル見ると()って書いてあるんですがわからなくて
何曜日 = G_TIME_WW print (何曜日) 金曜なのに俺6が出るんだけど何で?
>>268 G_TIME_WW が6だからだろうな
>>269 いや、それは分かってるんだけど、金曜日なら5じゃないの?って話よ
お前アスペだろw
>>270 お前んちのカレンダーは何曜日から始まってるんだ?
白地がアスペ呼ばわりか。
G_TIME_WW・・・曜日(0:日曜….6:土曜) いやいや、ググっても土曜が6って出てくるよ カレンダーは日曜からでいいんでしょ? だったら金曜は5じゃん
日月火水木金土 _______ 零一二三四五六_値 一二三四五六七_順番 0〜6で土曜日が6なんだから金曜で6が返されるのが疑問なんだけど 説明できる人いる?
端末の日時がおかしいとかだったらモニター叩き割るぞ いややめてよ
>>268 G_TIME_WW変数は、GETTIME関数の実行によって値が設定される
未設定状態の値が6なんでしょ。たぶん
つまりGETTIME関数を呼び出しもせずに参照したからそうなった
>>276 まさか、GETTIME() 使わずにG_TIME_WW だけなんて…?
最初に24時間表記で出てくるのか確かめるために GETTIME() G_TIME_HH で0が出て、次に G_TIME_HH だけで0が出たからそのまま使える気になってHHをWWに変えてたわw
まあ、時々やらかすよね。 特に環境変数だとか特殊変数を参照するだけの他の言語を使ってるとどんどん忘れていく。 だけどそういう言語って参照するたびに違うタイミングで呼び出すから同時に使わないと日付変更線をまたいでしまう。
最にテストしたのが0時台で、正しい値と同じ値が出てきた事 さらに今日が金曜で1だけずれてた事 そのせいで言われるまで、関数を呼んでないっていう単純な見落としに気付かなかったわ
今までは下記のプログラムでアプリを自動化してたのですが、アプリを2つ起動したら誤作動するようになってしまいました 調べてみると、GETIDで取得できるタイトル、クラスが全く同じなのが原因かと思うのですが、まずその点は合っていますか? またその場合だとGETALLWINを使えば回避できるような感じなのですがこのプログラムに付け加えるならどんな感じになるでしょうか。 宜しくお願い致します。 wnd_id = GETID("アプリ名","あいうえお") ifb wnd_id = -1 then MSGBOX("起動していません") exitexit endif MOUSEORG(wnd_id, 2) while TRUE if GETKEYSTATE(VK_ESC) then exit IFb CHKIMG("000.bmp") sleep(1) Kbd(VK_NUMPAD0,CLICK,80) Kbd(VK_1,CLICK,80) sleep(3) endif wend
自動操作するスクリプトの方も複数起動してそれぞれ対応させたいだけなら 起動後に対象ウインドウを選択したら良いと思うよ 左クリックで指定すると問題があるなら GETKEYSTATE を任意のキーに変更して GETID を GET_FROMPOINT_WIN にしてみるのもいいかもね 半自動じゃなくて完全自動化したいなら スクリプト毎にどのウインドウを担当するか連携するコードも必要になるから 正直めんどくさい Repeat GETKEYSTATE(VK_LBUTTON) Repeat Sleep(0.001) Until GETKEYSTATE(VK_LBUTTON) wnd_id = GETID(GET_ACTIVE_WIN) Until !(STATUS(wnd_id, ST_TITLE) = "アプリ名" And STATUS(wnd_id, ST_CLASS) = "あいうえお")
最後のUntilの !() はあったらダメだわw あと ST_TITLE の条件自体が必ずしもアプリ名と一致しないケースもある除外した方がいいかも なので最終行だけ訂正〜 Until STATUS(wnd_id, ST_CLASS) = "あいうえお"
>>283 早速の回答ありがとうございます!
アプリを2個起動させて片方はバックグランドで完全自動化でもう片方は自分で操作しようと思ってます
自動化させたい対象ウィンドウを左クリックで指定は簡単で良いですね!
気になるのは教えて頂いたスクリプトはバックグランドで動いてくれるでしょうか?
いま出先なので帰宅後試してみようと思います
多分ウインドウを指定した後の話をしているんだと思うけれど
>>283 は対象のウインドウを人が指定する必要があるから完全自動化じゃないよ
後はヘルプのその他項目-予約語の下の方に
GETKEYSTATE で使う仮想キーの一覧があるから後は頑張れ
もうちょっと早く
>>267 を見とけばよかった。
動かそうとしたら IMG_FORE がエラーになって動かないんでバージョンチェックしたら2年前の 4.8d を使ってた。
最新版で動かしたら軽かった。
最新版を使っても、Apsaly ってエディタを対象にすると、自分のは Apsaly が再描画しまくってCPU食ってるんだけど
IMG_FORE つきだと静かなもんだ。
これもあってか
>>267 のは軽い。
なんだか自分が馬鹿みたいだ。
ただ、Windows 8.1 で新しいUWSCのヘルプが開けない。
左のツリーは出るけど右の説明が出ない。
やっぱ XP の環境は必要か。
ヘルプ読めと言われてる人はヘルプが開けない環境だったりするのかな。
>>288 そう言えばそういうのありましたね。
入れて再起動したけど現象変わらず。
そう言えばXPのDLLを持ってくる方法があったっけ。
ライセンス違反とか言う話だけど。
>>290 おお
まさにそれでした。
警告出てOKしてるからまさかブロックされてるとか思わなかった。
これは新規の人にはネックだよなー
自分は古いバージョンで見れるから困ってはなかったけど。
ID:07hakmjS0 は、自分の無知未熟を棚に上げて 他人様をアスペ呼ばわりした誤ちについて詫び無しか? そういう奴は永遠に自分の凡ミスが原因のバグを出し続けて改めず成長しない。
>>292 まぁ、良いじゃない。本人恥ずかしくてあれから出てこれないみたいだから…
精進すると良いと思うんだよ。
>何曜日 = G_TIME_WW
>print (何曜日)
>金曜なのに俺6が出るんだけど何で?
に対して
>
>>268 >G_TIME_WW が6だからだろうな
このやり取り見てどう思う?どう見てもアスペだろ
あれ見て268が真面目にレスしてたと思うのならお前もアスペだわ
どうせ、質問レスに対して煽りたいだけの一心でスレに張り付いてるっていう典型的なゴミだろ
ねぇ、お前も本当にあのレス見て
>>268 が真面目にレスしたと思ったの?答えてみろよw
本人がID変えて自演してんのか?と疑っちゃうくらいお前の言ってる事おかしいわ
>>292 >何曜日 = G_TIME_WW
>print (何曜日)
>金曜なのに俺6が出るんだけど何で?
ってのは金曜日の値について質問してる、と通常誰でもわかるだろう書き方をしてあるのに
>>268 が言ってるのはつまり
「右辺が6だから左辺が6なんだろw」
って事で、これで真面目にレスしてると思ったお前は
>>268 以上のアスペかキチガイだろ
大体さ
>>292 の
I>分の無知未熟を棚に上げて
>他人様をアスペ呼ばわりした誤ちについて詫び無しか?
>そういう奴は永遠に自分の凡ミスが原因のバグを出し続けて改めず成長しない。
どこ目線で語ってんだよw
特大ブーメランやめろよ
これこそお前の事だろ、もうこういう奴本当に情けないわ…
そういえばフキダシの件で前バージョンで試してみてらという アドバイスに習って公式HP行ってみたんだけど Ver4.9 までしかないのね 因みに動作の方は残念ながら特に変わりませんでした あと気になったのが Ver4.9a の更新履歴に ・複数スレッドにてBALLOONを出した時 GETID(GET_BALLOON_WIN)が別スレッドのBALLOONを返すのを修正 ってのがあったんだけど この修正内容が最初のフキダシはスレッドを跨って再利用する挙動なのかも? でもフキダシの取り合いは実際問題発生するので対処して欲しいですね
ID:07hakmjS0 のレス一覧には ごめんどころかありがとうもないね この間の発達障害の人か
発達したくても出来ないなら発達「障害」だが 発達する意欲がなく然るべくして発達しないのだから 同情の余地はない。
お前らってありがとうとか言われたくてスレに常駐してるの? ここはUWSCの話をするスレだろ? なんで勝手にスレを私物化して自分ルール作ってんだよw あー発達障害のゴミかwwwww
単にツールの話をするだけのスレなのに なぜか他人に自分ルールを押し付ける自分がどういう人間なのかわかってないんですね〜www んんん?WWWwwwwwwwwwwww
なんで書き込んだ瞬間無意味な煽りレスを受けた俺が 礼を言ったり謝ったりすると思ったの?wwww あー他人と関わりが無いオタクでマニアの人格障害だから仕方ないのかww んんんん〜〜?WWWWWWwwww ゴミばっかwwwww
なんで何も悪い事してない俺が謝るんだよw
でお前ら本当にさ、
>何曜日 = G_TIME_WW
>print (何曜日)
>金曜なのに俺6が出るんだけど何で?
に対して
>
>>268 >G_TIME_WW が6だからだろうな
この
>>269 のレス見てが真面目にレスしてたと思うの?ww
だったら仕方ないわ。アスペの集まりかここww
>何曜日 = G_TIME_WW
>print (何曜日)
>金曜なのに俺6が出るんだけど何で?
に対して
>
>>268 >G_TIME_WW が6だからだろうな
これでアスペだろって指摘した俺を叩くとかあり得ないだろw
頭おかしい奴の集まりかここwww
アスペがアスペレスしてアスペ指摘されたら別のアスペがアスペを庇う図式かwwww アスペがアスペレスしてアスペ指摘されたら別のアスペがアスペを庇う図式かwwww アスペがアスペレスしてアスペ指摘されたら別のアスペがアスペを庇う図式かwwww アスペがアスペレスしてアスペ指摘されたら別のアスペがアスペを庇う図式かwwww アスペがアスペレスしてアスペ指摘されたら別のアスペがアスペを庇う図式かwwww アスペがアスペレスしてアスペ指摘されたら別のアスペがアスペを庇う図式かwwww アスペがアスペレスしてアスペ指摘されたら別のアスペがアスペを庇う図式かwwww
恩を仇で返すのは朝鮮人の魅力のひとつ
下記のスクリプトを動かして、 しばらくするとクリックする位置がずれることがあります。 一度ずれると、以降ずれっぱなしです。 スクリプト動作中は一切マウスキーボード操作してません。 while True BTN( LEFT, CLICK, 500, 100, 0 ) sleep(60) wend 原因わかる方、いますでしょうか。 クリックする場所はブラウザのフラッシュ内の画面で 最初はヌルヌルなんですが、長時間放置するとカクカクします。
抽出 ID:07hakmjS0 (16回) お前にUWSCを使う資格は無い、消えろ
>>308 失礼ですが、ID:07hakmjS0の人ですか?
クリックズレに関しては前スレでいくつか話題があったと記憶してます
超初心者です。質問させてください。無料版のUWSCを使っています コンボボックスのことなんですがそれに入れる配列の要素数に制限ありますか? 100項目くらい入れたいのですが DIM hairetu[100] SLCTBOX(SLCT_CMB,0,"SLCT_CMB",hairetu[])
途中で送信してしまいました 続き やり方が悪いのか30個くらいまでしか表示されません なにかいい方法ありますか?
>>312 ヘルプに
>SLCT_STR // 戻り値を項目名で返す (他の種別に付加して使用)
>SLCT_NUM // 戻り値を位置数で返す (他の種別に付加して使用)
>※ 項目数は最大31まで (SLCT_STR、SLCT_NUM の場合は制限なし)
と書かれてるのでSLCT_STR、SLCT_NUMを付加するといいですよ
SLCTBOX(SLCT_CMB or SLCT_STR,0,"SLCT_CMB",hairetu[])
度々すいません SLCTBOX(SLCT_LST + SLCT_STR,0,"SLCT_LST",hairetu[]) で解決できました。失礼しました 異様に長くなっていまうのが気になりますが
316 :
262 :2014/02/02(日) 01:18:41.78 ID:G2b5w4Yh0
せっかくなんで PowerShell (+C#)だけで書けるかやってみようと思ったら キャプチャが不完全動作するところまでに今日までかかったよ。 C#コード呼び出しとか Win32API 呼び出しとか サンプルはたくさんあるんだけど 構造体データを受け取るにはいろいろな型を使い分けないといけなかった。 自分でどうにもならんから PS スレで質問中
tempの中のファイル名だけではなくフォルダ名も出力するにはどうしたらいいでしょうか? この状態だとフォルダ名は表示されないので… for i=0 to GETDIR("C:\temp","*.dat")-1 print GETDIR_FILES[i] next
print "C:\temp" + "\" + GETDIR_FILES[i]
>>317 ヘルプによると
ファイル指定: ワイルドカード(*, ?) によるファイル名指定
"\" を指定するとディレクトリ名の取得
なので、こっちの(例)を使えば良いのでは?
// D:ドライブのディレクトリ木表示
ディレクトリ("D:", 0)
procedure ディレクトリ(dd, lve)
lve = lve + 1
for i=0 to GETDIR(dd,"\")-1
sps = ""
for s=2 to lve; sps = sps + " "; next
print sps + GETDIR_FILES[i]
ディレクトリ(dd+"\"+GETDIR_FILES[i], lve)
next
fend
そっちのフォルダだったか。 これは恥ずかしい。
それは指定ディレクトリ内のサブディレクトリを探す方法だじぇ〜
質問の意図そもものが親ディレクトリを追加して表示したいなら
>>318 が正しいと思うよ
因みに GETDIR 単体では再帰的に検索す方法は無いので
そういった話なら "\" を使いながら結果の配列を連結していく関数とかが必要になるかな
ってちゃんと再帰呼び出ししてるね おれも恥ずかしいw
>>318-319 迅速な対応有難うございます
なかなかうまくいかなかったのでDosCmdで出力させました
因みにこの出力結果をエクセルに一括入力する方法などはありますでしょうか
現在コードは
print DosCmd("dir <#dbl>C:\tempt\*.*<#dbl> /s /b")
>>323 最初っからEXCEL VBAのDIR関数を使うのは駄目ですかね?
EXCELなんて2000の頃から EXCEL単体でVBAで完全に全自動操作できるのに… 操作の記録・再生・コード自動生成まで出来るのに…
せっかくExcel操作の有償版があるんだからUWSCで完結したいよね ExceVBAで組んどいてUWSCで呼び出せば良い気はするが
EXCELだって幾らでも他ソフトと連携できるし、 あまりにも万能なんでマクロウィルスの問題が発生して マクロ付スプレッドシート開くときは警告が表示されるなんて 苦肉の策が施されるぐらいなんだよね。 まぁUWSCの低レベル関数やウィンドウ操作関数に相当することを VBAでやらせようと思ったら最初の1回は確かに面倒だろうね。 画像判定に関しては、手軽さにおいてUWSCは優秀。 (もっとも、操作相手がEXCELなどのCOM操作出来る物であれば全くの不要だが) 逆に、散々繰り返される質問の、文字列操作、日時判定、ファイル操作、VBAは大得意だからねぇ。 どんだけUWSCと格差あるか判ってないでUWSC選んじゃってるプログラミング初心者、多すぎ。 ちなみにVBAからUWSC呼び出すならUWSCって引数をPARAM[]で受け取れるからね。 (まぁ EXCEL VBA から AutoitX3.dll 呼び出したらUWSC要らずだけど)
自分の練度と環境のポリシーの範囲で好きなのやればいいのさ
そういえばUWSCってショートカットの設定をOFFに出来ないのかね 基本使わないので正直暴発されると困るのでOFFにしたい・・・ INI消しても初期値を上書きするんだよなぁ 仕方ないから暴発しなさそうなキーを登録を登録してるが確実とはいえない安心できん
2014/02/03 UWSC Ver4.9c、 Pro版と Free版をリリースしました。
Ver4.9c の更新履歴ではフキダシに触れてなかったけれど少し触っているのかな? 今まではFirefoxのツールチップとの最前面争いに負けていたんだけどこのバージョンだと勝てる
>>332 .uwsを関連づけたあとはもう本体を起動することなんて
ほとんどなくて気にしたことなかったなぁ。
PowerShell への移植は 32bitで動かさんと WindowFromPoint が使えんと分かってあきらめることにした。 そもそもスクリプトの利点はどんな環境でも動く事なのに スクリプトエンジンが 64bitだと動かないとかじゃしょうがない。 やっぱり餅は餅屋 買春は慰安婦に限るわ。
>RESIZE関数にて SAFEARRAYの値が正しく返せないパターンがあるのを修正 まじかよどんなパターンだったんだよ
if GETKEYSTATE(VK_ESC) then exit id = GETID("EmEditor") mouseorg(getctlhnd(id, "EmEditorView"), 2) While True 〜キー操作(省略)〜 Wend これでEmEditorにキー操作送ってたんだけど、ホットキーで再生/一時停止繰り返してると大元のキーボード入力がバグる(alt,shift押しっぱ状態) ユーザー切り替えでログオン画面まで戻れば回復するけど、なんでそんなことになってるかもわからん んで色々試してみたらmouseorgの一行が問題みたいでこれがなけりゃバグらないんだけど、これがないと裏で仕事してくれない 誰かコピペしか出来ない俺を助けて!
固定キー機能が有効になったんじゃねーの
無限ループ中にキー操作をしているにもかかわらず 再生と一時停止をホットキーに頼っているからじゃね? 一般的にユーザ操作は使っていない資源で行ったほうが安全だよ(このケースだとマウス) それとエディタがアクティブになったら自動的に一時停止した方が良いかもね 裏で仕事させたいならそのほうがトラブル少なくなると思うよ
>>340 固定キー機能はショトカ含めて無効化させてるから違うと思う
>>341 ループに関しては問題無いと思う
mouseorg(getctlhnd(id, "EmEditorView"), 2)を消して試したらループ中でもなんでも症状は現れなかったし
書き方とか順番が悪いんかな
if GETKEYSTATE(VK_ESC) then exitの位置間違ってたけど別に関係なかった 解決してないけど、このEscちゃんと活用して止める時はEsc、開始はショトカで一応やっていくことにした もっと勉強したがええな アドバイスありがとう
サブルーチンとメインルーチン?で同じ変数を使用出来ないんですか? メインで変数を指定する サブに飛ばして数値を入力 って感じがしたいんですが・・・。
すみません。自己解決しました 変数と言うものがあったのですね・・・。
宣言と言うもの でした。
結局出来ませんでした;_; SLCBOXでa-jを選択 aを選択した場合は HENSU=aとしてサブルーチンに飛ばしたいです。 しかし、このままではサブルーチンが変数を読み取らず、 PUBLICを使ってみたら、aを選択してもHENSUはjになってしまいました。 どうにか出来る方法はないものでしょうか 昨日から作り始めたもので素人で申し訳ないです
丸投げせずにそのコード貼ってみたら?
初めて作ったので説明などなくてすいません。 簡略化するとこんな感じなのですが select slctbox(slct_btn,0,"選択","あ","い","う","え","お") case slct_1 public HENSU="あ" sabu case slct_2 public HENSU="い" sabu case slct_3 public HENSU="う" sabu case slct_4 public HENSU="え" sabu case slct_5 public HENSU="お" sabu selend procedure sabu id=exec("notepad") sendstr(id,HENSU) fend これであを選択しても メモ帳にあが貼り付けられるようにしたいです。
select slctbox(slct_btn,0,"選択","あ","い","う","え","お") case slct_1 sabu("あ") case slct_2 sabu("い") 略 selend procedure sabu(HENSU) id=exec("notepad") sendstr(id,HENSU) fend これでいんじゃない
>>350 素早い返答ありがとうございます!!
知識が足りずまだよく理解出来てませんが望み通りの結果になりそうです!
これで続きが作れます
本当にありがとうございました!
ソースの最初で public HENSU してselectの中のpublicを外してもいけると思う
出来ました! 様々な方法があるんですね 理屈が全然分からないですが、続きの作成頑張ってみます 皆様ありがとうございます
まるでUWSCからプログラミング始めちゃった残念な人たちの避難所だなココはw
残念な人で申し訳ないんですが、 アプリの実行中いつでもESCで終了できるようにしたいです。 ALT+F2と同じ動作です。 設定から変更できるのは知っているのですが、マクロに組み込みたいです if GETKEYSTATE(VK_ESC) then exit をすべての行に入れ込むくらいの知識しかないので力を貸してください
SETHOTKEY exitexit
別threadでループさせればいい 詳しくは頑張って調べて
>>356 すいません;;よくわからなかったです><
>>357 こんなのあったんですね!
知識が足りず今ようやく出来ました!
ありがとうございました!
それいい方法だな、当たり前だったんだろうけど。 仮想マシン上で走らせて放置だったから気にしてなかったは
でも有償版のデバッガがスレッドにちゃんと対応していないから デバッグが終了したコードでした方がいいかも
このスレ読むだけでも同じようなこと言われてるのに
IESetDataはIEにデータをセットする方法ですよね これをクロームやfirefoxなどにする場合どういったやり方や関数がありますか? SENDSTRとかになるんでしょうか?
なります。 理由は、COMがないからです。 同様に、MS標準のHTAもCOMがないのでDOMアクセスできません。
画像認識を使って優先順にクリックしたいのですが、初回起動時は問題なくいずれかの画像をクリックするんですが、2回目以降はelse以下を反映し、また初回起動時と同じ動作を繰り返します。 2の画像を探しなければ以下11・6・7・8・9・1の順に検索し、いずれもなければ10をクリックし、また2の検索に戻るというイメージです。 あちこちサイトを見てはいますが明確な答えがない(気付かない)です どなたか教えて下さい 以下、作成した物 ===================== While True sleep(2.5) if (CHKIMG("2.bmp",0)=true) btn(left,click,g_IMG_X,g_IMG_Y) sleep(2.5) elseif (CHKIMG("11.bmp",0)=true) btn(left,click,g_IMG_X,g_IMG_Y) sleep(2.5) elseif (CHKIMG("6.bmp",0)=true) btn(left,click,g_IMG_X,g_IMG_Y) sleep(2.5) elseif (CHKIMG("7.bmp",0)=true) btn(left,click,g_IMG_X,g_IMG_Y) sleep(2.5) 以下優先度順に同配列 else CHKIMG("10.bmp",0) btn(left,click,g_IMG_X,g_IMG_Y) sleep(2.5) endif
dim 順位[7]= 2,11,6,7,8,9,1,10 while true for i= 0 to 6 ifb CHKIMG(順位[i]+".bmp", 0)= true btn(left, click, g_IMG_X, g_IMG_Y) sleep(2.5) continue endif next CHKIMG(順位[7]+".bmp", 0) btn(left, click, g_IMG_X, g_IMG_Y) sleep(2.5) wend
>>364 答えなんてものは存在しない
人それぞれやり易い方法でやるのがプログラミングってもんだぜ
dim img[] = "2.bmp", "11.bmp", "6.bmp", "7.bmp"
while True
Sleep(2.5)
for i=0 to Resize(img)
if ChkImg(img[i]) then break
next
if i > Resize(img) then ChkImg("10.bmp")
Btn(LEFT, CLICK, G_IMG_X, G_IMG_Y)
Sleep(2.5)
wend
ループ用変数をループ外で使うのは好きじゃない
dim imgNums[] = 2,11,6,7,8,9,1 while true for idx=0 to resize(imgNums) if clickImage(imgNums[idx]+".bmp") then continue 2 next clickImage("10.bmp") wend //clickImageぐらい自作しようよ function clickImage(lBmpName) result=false sleep(2.5) if !chkimg(lBmpName) then exit btn(left, click, G_IMG_X, G_IMG_Y) result=true fend
教えてもらって今まで格闘してました どうやら初回画像認識→クリック→画面自動更新となると2回目以降に画像が認識されないみたいです。 画像に問題があるかと思い、個別にチェックしたのですが初回起動時に限っては全て認識出来ていました。 しかしながら一番優先度が低い画像だけはしっかり何時でも認識されるのはなぜ? 結果いまだ完成せずorz
break入れてみたら?
更新後の画面の画像は本当に同じものなのかい?
>>370 画像のチェックっていっても初回と2回目の画像が完全一致するかどうか確認した?
小さい画像なら800%ぐらいに拡大すれば見比べできるけど、そうじゃなきゃ
初回と2回目の画像を別の画像であるものとして保存してChkImgのテストするしかないね。
マウスポインタが乗って、別の画像(影付き等)になってたりとかよくあるよね 昔のわたすの失敗です
>>370 です
解決しました…
文章自体は程度は低いものの間違えてはいませんでした。
ご指摘頂いた通り、画像が視覚的には分からないのですが変わっているようでした。
パターンが数種類用意されているのか、Lvが上がると変わるようでその都度画像保存作業を強いられる感じです
これは自分にはちょっと厳しいです
いい機会なので別の手も勉強してみます。
ご回答下さった皆様ありがとうございました
現在ストップウォッチを作っているのですがコンマ00調度でエンターを押すマクロとかってどう作ればいいですかね?
WindowsはリアルタイムOSじゃないので厳密な精度は期待してはいけないのです
>>376 素直に作るとこんな感じかな
while true
gettime()
ifb G_TIME_ZZ=0
//kbd(VK_RETURN)
break
endif
wend
実際には他のプログラム等々で負荷が掛ってたりしてG_TIME_ZZ=0が取得できないことが多々あるから
ifb G_TIME_ZZ>=999 or G_TIME_ZZ<=3あたりで幅を持たせた方がいい場合があるかも
あとbreakでループを抜けない場合、処理速度の速いPCだとG_TIME_ZZ=0が数回ヒットする
可能性があるからその場合の処理も必要かも
サンプル作ってみたけど、意外と0丁度でいける感じかな Core 2 Duoマシンで裏で動画流してたりすると0.003くらい進む感じ gettime() fukidasi(timer(input("エンターを押したい「分」を入力して下さい",G_TIME_NN+1)),0,0,,,,,$00FF00) sleep(5) exitexit function timer(minute) result="" while true gettime() fukidasi(G_TIME_NN+"."+G_TIME_SS+"."+G_TIME_ZZ,0,0) ifb G_TIME_NN=minute and 0<=G_TIME_ZZ //kbd(VK_RETURN) //コメントアウト result=G_TIME_NN+"分"+G_TIME_SS+"秒"+G_TIME_ZZ+"で押しました" break endif sleep(0.001) wend fend
public gStartSecAndMSec; public gNowSecAndMSec public gFlgTerminateThreadFukidasi=false public gFx=100; public gFy=100 fukidasi("[ENTER]で計測開始", gFx, gFy); waitEnterKey(); fukidasi() gStartSecAndMSec=getNowSecAndMSec() thread threadFukidasiShowNowSecAndMSec(); waitEnterKey(); gFlgTerminateThreadFukidasi=true msgbox(getPastSecAndMSec(gStartSecAndMSec)); exitexit procedure threadFukidasiShowNowSecAndMSec() while !gFlgTerminateThreadFukidasi gNowSecAndMSec=getPastSecAndMSec(gStartSecAndMSec) fukidasi(gNowSecAndMSec, gFx, gFy); sleep(0.2) wend fend procedure waitEnterKey() getkeystate(VK_RETURN) while !getkeystate(VK_RETURN) sleep(0.001) wend fend function getNowSecAndMSec() lStartSec=gettime() result = round(lStartSec + G_TIME_ZZ / 1000, -3) fend function getPastSecAndMSec(lStartSecAndMSec) lStartSec = int(lStartSecAndMSec) lStartMSec = lStartSecAndMSec - lStartSec lNow = gettime() result = round(lNow - lStartSec + (G_TIME_ZZ / 1000) - lStartMSec, -3) fend
改良 public gStartMSec public gFlgTerminateThreadFukidasi=false public gFx=100; public gFy=100 fukidasi("[ENTER]で計測開始", gFx, gFy); waitEnterKey(); fukidasi() gStartMSec=getNowMSec() thread threadFukidasiShowNowMSec(); waitEnterKey(); gFlgTerminateThreadFukidasi=true msgbox(getNowMSec()-gStartMSec); exitexit procedure threadFukidasiShowNowMSec() while !gFlgTerminateThreadFukidasi fukidasi(format((getNowMSec()-gStartMSec)/1000, 7, 3), gFx, gFy); sleep(0.2) wend fend procedure waitEnterKey() getkeystate(VK_RETURN) while !getkeystate(VK_RETURN) sleep(0.001) wend fend function getNowMSec() lStartSec = gettime() result = lStartSec * 1000 + G_TIME_ZZ fend
汚い変数名
>>384 変数名の添削頼むわw
Flgは直したほうがいいんだろうけどIsは違うからDoにするの?
計測後からキー押下までのタイムラグをどう評価してるんだ? 00になってから押下を読んでたらタイミング的にズレてるぞ
>>386 >>383 のこと?msgbox表示時にgetNowMSec()が呼ばれた時点で実際の計測が行われるね。
キー押下はsleep最小単位時間で監視してるから、CPU専有しない限りのベストエフォートな反応だと思うよ。
msgboxに表示するミリ秒を単位変換し忘れてるけど
fukidasiの現在秒表示は別スレッドで行っておりほとんど影響を与えない。
表示更新を人間が認識できる以下のインターバルで行っても無意味なので適当な間隔で表示。
0.15秒のほうが良かったな。
組み込みなんかだと表示処理は計時処理に比べ膨大な処理時間を喰うのでこんな感じ。
あ、gettime()後にG_TIME_ZZの値が更新されて繰り上がって0になるかもって?
G_TIME系の値はgettime()実行時点の値で凍結するでしょ?
じゃないと
>>268 みたいなことは起こらないw
すいません、質問させて下さい! コンボボックスの現在選択されているものによって動作を変えたいです IFBを使うのはわかったんですが、コンボボックスの内容をどうやって取得すればよいのでしょうか・・・。
>>385 せっかくUWSCなんだから変数名はオール漢字でで行けよ、素人かよ
冗長すぎる名前は読みにくい
procedure threadFukidasiShowNowSecAndMSec() procedure 板吹見今秒和秒() こっちのほうがいいだろ、見た目もカッコいいし意味も分かり易い
これは流行る
>>387 別にサンプルを貶める気は無いよ
要求がコンマ00秒「位」にキーを押下で良いのであれば正直どのサンプルでも概ねおkだしね
実際問題としての質問者の実際の意図もコンマ00秒「位」に押下なんだろうし
ただOSの仕組み上精度は保証されないよって質問者に理解して欲しいだけさ
public 開始毛秒大域 public 線程吹出終了指令大域=false public 吹出横位置大域=100; public 吹出縦位置大域=100 fukidasi("[回車鍵]開始測量", 吹出横位置大域, 吹出縦位置大域); 回車鍵入力待(); fukidasi() 開始毛秒大域=現在毛秒取得() thread 線程吹出現在毛秒表示(); 回車鍵入力待(); 線程吹出終了指令大域=true msgbox(秒書式取得(現在毛秒取得()-開始毛秒大域)); exitexit procedure 線程吹出現在毛秒表示() while !線程吹出終了指令大域 fukidasi(format((現在毛秒取得()-開始毛秒大域)/1000, 7, 3), 吹出横位置大域, 吹出縦位置大域); sleep(0.15) wend fend procedure 回車鍵入力待() getkeystate(VK_RETURN) while !getkeystate(VK_RETURN) sleep(0.001) wend fend function 現在毛秒取得() lStartSec = gettime() result = lStartSec * 1000 + G_TIME_ZZ fend function 秒書式取得(毛秒局所) result=format((毛秒局所)/1000, 7, 3) fend
>>378 は条件ミスってるけどね
○
while GetTime() < 目標時間
Sleep(0.001)
wend
// GetTime() = 目標時間 となったタイミングでここに来る。
目標時間は時刻か時間差
str = "2014/02/08 18:18:00"
目標時間 = GetTime(0, str)
目標時間 = GetTime(1 / (24*60*60) ) // 1秒後
>>388 ヘルプ キーワード GETITEM ITM_LIST // リストボックス、コンボボックス
例)
// リストボックスに在る物を全て表示する
id = GetID("Form1")
for i = 0 to GetItem(id, ITM_LIST, 1)-1
print ALL_ITEM_LIST[i]
next
>>393 タダのストップウォッチかと思ってたはwww
>>376 質問者の言うストップウォッチってもしかして、
プログラムがカウントダウンしていって、
コンマ00ちょうどで他のアプリに対してエンターキーを送信するのかw
そりゃタイマーでしょ…orz
>>381 >>395 さんのコードを参考にシンプルな物ができましたよ
str = "2014/02/08 19:15:00" //文字列で日付時間を指定する("YYYYMMDD" or "YYYY/MM/DD" or "YYYY-MM-DD" or "YYYYMMDDHHNNSS" or "YYYY/MM/DD HH:NN:SS")の形式で指定可
stopTime=gettime(0,str)
timer(stopTime)
procedure timer(stopTime)
while !(gettime()>=stopTime)
fukidasi(G_TIME_HH2+"時"+G_TIME_NN2+"分"+G_TIME_SS2+"秒"+G_TIME_ZZ2,0,0) //デバッグ用
sleep(0.001)
wend
//kbd(VK_RETURN) //コメントアウト
fukidasi(G_TIME_HH2+"時"+G_TIME_NN2+"分"+G_TIME_SS2+"秒"+G_TIME_ZZ2,0,0,,,,,$00FF00);sleep(5) //デバッグ用
fend
ただ、
>>393 さんの言う通り本当のピッタリは難しいので、目標くらいに思って下さい
艦これ着任用か!!
そういうシステムなんか。 斧アップローダーもきついときは0.01秒くらいで合わせないとダウンロード出来ないから 作ろうと思ったことがあったけど 作ろうと思ったときには欲しいファイルがなくなっていたと言う。
メモ帳のデータ処理させてるんだけど処理が遅い。 使った処理は下記のものだけで、1行ずつposで文字の一致を調べてから、 ifbで条件一致を調べて単純計算するだけで重複ループなんかも無いんだけどすごく時間がかかる FORNEXT_FOPEN_FCLOSE_,IFBENDIF_POS_FGET 経験上とかでもいいんだけど、こういう処理をすると遅くなるとかってある?
すべてのデータを読み込んでいるとか?
>>401 > FOPEN_FCLOSE
メモ帳?テキストファイルって事か?
> 1行ずつposで文字の一致を調べてから、
UWSCはそもそも遅いんで
丸ごと読み込んで正規表現検索ツールを使えばいいと思うよ。
点滅する画像認識する方法ってありますか? CHKIMGで一番鮮明に表示されたであろうSS撮って保存したけどやっぱ反応しない。 出来ない物なんですか?
点滅でも変わらない部分お画像を探す 点滅のパターンの画像を用意する 点滅するとき、またはその前などに表示される画像などを使う bodyなどのソースを読み込むようにしてファイル名で判別する 他にもあると思うけど初心者でもスクリプト組めるものならこんなかんじかな
repeat untilにsleep(0.1)いれて画像判別には成功したけど次に繋がらないw 難しいな
>>398 これコンマ000で実行できてなかなか良いな
411 :
名無しさん@お腹いっぱい。 :2014/02/10(月) 18:21:42.16 ID:JKQ53Dj70
UWSCを使い始めたのですが、良くわからないので教えてください。 UWSC秒(445371316)などをGETTIME()で取得し、変数に代入して持たせています。 変数が持っているUWSC秒を G_TIME_MM2 + "/" + G_TIME_DD2 + "_" + G_TIME_HH2 + "時" + G_TIME_NN2 + "分" + G_TIME_SS2+ "秒" のようにGETTIMEを使い変換する方法はありますでしょうか? また、無いのであれば、UWSC秒からの日時に変換する方法を教えてください。
FUNCTION getDateTimeStrByGettimeSeconds(lGettimeSeconds) //GETTIME戻値仕様のシリアル値から YYYY/MM/DD HH:NN:SS の書式の日時を返す。 GETTIME(lGettimeSeconds/60/60/24, "2000/01/01 00:00:00") // YYYY/MM/DD HH:NN:SS RESULT = G_TIME_YY4 + "/" + G_TIME_MM2 + "/" + G_TIME_DD2 + " " + G_TIME_HH2 + ":" + G_TIME_NN2 + ":" + G_TIME_SS2 FEND 変数名汚くてごめんね 俺ライブラリからの出品です もっとさっぱりした方法あったら教えてね
413 :
名無しさん@お腹いっぱい。 :2014/02/10(月) 19:01:34.17 ID:JKQ53Dj70
>>412 自作関数が作れるのですね。
書いていただいたソースで動作確認できました。
ありがとうございます。
予めtxtに保存しておいたproxyを一行ずつIEの接続設定に設定googleに接続 接続成功したらtxtの二行目をIEの接続設定にセットしてgoogleに接続っていうマクロなんだけど良い書き方無いですかね txtの中身を配列を使いproxy[i]に格納し DOSCMD("reg add <#DBL>HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings<#DBL> /v ProxyServer /t REG_SZ /d proxy[i] /f") こうやって書いたんですけどIEのアドレス部分がproxy[i]になってしまいます
””で囲んでる範囲だからだろ
言えてる。文字列として書いて時点でテクニック以前の問題。構文からやり直し。
proxyはよくわからんけど 単純に文字列操作の話やったらこうやね DOSCMD("reg add <#DBL>HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings<#DBL> /v ProxyServer /t REG_SZ /d " + proxy[i] + " /f")
色々ぐぐッてみてもわからなかったので質問なのですが UWSCで今開いている1つのテキストファイルから 今開いている1つのエクセルファイルの決まったセル番地にコピーして結合したいという内容でして テキストファイルの内容は 1月31日 2月28日 と2行だけの内容で1月31日をエクセルのA1に2月28日をエクセルのA2にコピーして A1とA2を結合できるような便利なものはないか教えて頂けないでしょうか
>>419 ぐぐってないだろ
もしぐぐって分からないなら諦めろ
だいたい分からない部分を挙げずに丸投げとか
そのまんまズバリのネタなんて無いから やりたいことを分解していって個別に勉強していくといいよ 調べるポイント ・FOPEN を使ったファイルの開き方 ・FGET の使い方(取得行数も少ないから F_ALLTEXT で改行込みで一度に全て取得すると良いと思う) ・SPLIT(fileText, "<#CR>") で行毎に分割して配列に入れて配列の文字でエクセル操作を行う 1〜2は記録では出ない命令だけどヘルプ+ネットで頑張れ どうしても難しいなら 手動でメモ帳でも開いてソレを起点に操作を記録して対応するとか 先ずは出来る範囲でやりくりしてみるといいですよ
>>419 コピーとペーストの違いもわからないって
失礼ですが前に発狂した人じゃないよね
>>420 ぐぐってたのですが調べ方が足りなかったです
>>421 調べるポイントを教えて頂きありがとうございます
教えて頂いた関数を元にぐぐって調べてみます
>>422 2歴は長いですが、ここに書き込んだのは初めてです
A1とA2のセルをmergeCellsしたらA2の内容が失われてA1だけが残るんだが? やりたいことが正確な言葉で表現できない内は検索しても当然ヒットしないし、手段に誤解や方針間違いが多分に含まれてるだろうな。 EXCELの場合はまずUWSCの前に、EXCELのマクロの記録でやりたいことをVBA化したほうが早いぞ。VBAで出来る事を確認したらUWSCにそのオブジェクト操作を移植する これは俺が常用してるマクロで、セルを複数選択した状態で実行すると、選択範囲の複数セルをテキストも含めてマージする。 Sub MergeCellsWithText() Dim areasS As Range; Dim rngS As Range; Set rngS = Selection If rngS Is Nothing Then Exit Sub If rngS.Areas.Count > 1 Then For Each areasS In rngS.Areas Call MergeCellsWithTextToRange(areasS) Next Else Call MergeCellsWithTextToRange(rngS) End If End Sub Private Sub MergeCellsWithTextToRange(rng As Range, Optional strColumnSplitter As String = " ", Optional strRowSplitter As String = vbCrLf) Dim strMergedText As String; Dim c As Integer; Dim r As Integer For r = 1 To rng.Rows.Count If r > 1 Then strMergedText = strMergedText & strRowSplitter End If For c = 1 To rng.Columns.Count If c > 1 Then strMergedText = strMergedText & strColumnSplitter End If strMergedText = strMergedText & Trim(rng.Cells(r, c)) Next Next rng.ClearContents rng.Merge rng.Cells(1, 1) = strMergedText End Sub '行数制限に収めるため便宜上 ; を使ったがVBAではエラー、他一部例外処理も削った
>>424 ソースまで詳しく教えて頂きありがとうございます
VBAからUWSCにそのオブジェクト操作を移植するというのは
試みたことないのでさっそくぐぐって調べてみます
web記録のIEみたいに、ツールバーもお気に入りも表示されない「素のIE」をcreateすることって出来ませんか?
>>427 素の定義にもよるけれど何も表示されないブラウザが欲しいなら
適当なHTMLを作成して拡張子をHTAにして実行してみたら?
HTAだってリンクを踏めば当然ブラウジング出来るわけだし
有料版の >HTMLを利用した画面関数が使えます。 これって具体的にどんなことができるんですか?
1台のPCでUWSC作成して、複数台で共有する事は可能? PC毎にUWSCインスト、入力は台数的に無理。 vectorフリーソフトダウンロードみたいに共有の仕方があれば教えて下され
つか実行するのはフリー版で 開発するのはデバッグ機能のあるプロ版でいいんじゃ? フォーム画面もEXCEL操作関数も使わなくったっていいじゃない。 フォームはSLCTBOXで十分だしEXCELはVBAで十分だからね☆
>>427 ie=createOLEObj("InternetExplorer.Application")
ie.toolBar=false
ie.visible=true
ie.navigate("
http://www.yahoo.co.jp/ ")
repeat;sleep(0.2);until (! ie.busy) and (ie.readyState=4)
ちなみに「素のIE」と言うのがアドオン無しの事なら
IE起動時に-extoffオプションを付けると素のIEで起動できるよ(Flashも使えない)
>>430 HTMLを利用してフォーム画面が生成出来る
具体的に言うとINPUT、SLCTBOXの高度な事が出来る
ヘルプの例を実際に試してみるといいと思うよ
グラフィックドライバ入れ直したら色設定が変わったらしく画像認識してくれなくなったオワタww折角初めて頑張って作ったマクロだったのに一日で終わってしまうとは死にたい
画像全部撮り直しになるんだよな。 変更前と全く同じ設定にすることは可能なんだろうが判りづらい。 アンチエイリアシング機能の結果が異なったり。 最新のは濃淡だけじゃなくて色も変えて滑らかにするらしいからね。 前項前と変更後の画像を800倍とかで見比べてみると判る。 俺はそれを避けるため仮想環境でやってるけど逃げではあるな。
リアルタイムに欲しい画像を取得してそれで判定すれば良いんじゃないか…
欲しい画像がどこに表示されているか判断する材料があるなら そもそも画像認識なんて使わない罠
439 :
名無しさん@お腹いっぱい。 :2014/02/22(土) 06:29:29.79 ID:NFGOD6gk0
馬鹿だな 画像取り込みメニュー作るんだよ その画面来たら「○○の画像」のメニューボタン押したら 必要に応じてメニュー消して、予め決めといた位置、サイズの画像をキャプチャする
そんなことしてるうちに画面遷移しない環境が考えにくいんだけど その画面が来たら自動的にキャプるんじゃだめなのw
441 :
名無しさん@お腹いっぱい。 :2014/02/22(土) 20:28:27.47 ID:G67b/n/l0
その画面が来たことをどうやって知るの? そんなのがあれば画面認識処理が要らねーんだけど?
>>441 知るすべは色々あるだろ
無知の恥さらし乙
全自動スクリプトの実行中で知る術があるなら画像認識する意味ないだろって話と 半自動スクリプトの実行中にユーザ操作で情報保管しようぜって話なんだから すれ違って当然なんだけれど どいつもこいつも主語が足りとらん
てか、画像の取り直しが面倒>画像がどこで表示されるかは何となく分かってるじゃないのかなって。 だとすれば自動的に画像取得するのは難しくないんじゃないかな。
>>444 どの座標で画像が表示されるか判っていれば、
その座標を直接クリックすればいいから画像判定が要らないw
大体の座標で、正しいかどうかわからない画像を撮って、
それを人間の目で判断して
手動で「ここからここまでを判定画像とする」と指定し直す、
これ撮り直しといふ
目的による
@大本のサイトにいくつかのリンクが有り自動で訪れたことのないリンク先に飛ぶ A新しいタブでリンクを開いたら新しいタブを閉じ@のサイトに戻る B@のサイトでF5 CCを行うとリンクの順番がごっちゃになる D@に戻る こういったサイトが有るとき一度踏んだリンクを踏まず踏んでないリンクだけクリックする方法などはありますでしょうか 色々工夫したのですがCで順番がごちゃごちゃになってしまうので
似たケースの時に自分はリンクの履歴を自分でINIに保管する方法で対処したよ 起動中はハッシュテーブルに格納すれば既読チェックもシンプルだし楽だよ
なるほどwその発想が無かったんで
>>439 はCHKIMGで感知して
自分の手でキャプチャボタンを押すのかと思ってたw
自分の手でキャプチャボタンを押すのならUWSCじゃなく
WinShotとか、キャプチャ用のフリーソフトの方が
機能も使い勝手も優れてると思うよ。
新しくPCを買ってWindows8になったんですが、きちんと動作してくれなくなりました。 原因と対処の仕方知ってる人いませんか?
そんな情報しかないんじゃ 前のPCに戻せとしかw
今日ちょっと嵌ったポイントをメモ代わりに貼っておきます〜 BTN関数でホイールスクロールさせると同期してないので注意する事
あのー、長い質問になるんですけど 作業中など、定期的に別ウィンドウをポチポチとクリックし 終わったら再び元のウィンドウをアクティブにするというのを組んだのだけど notepad++とゆうテキストエディタを弄ってる途中だと、マクロ実行後にエディタのメニューが グレーアウトしてしまいます。(ブラウザや、フリーゲームなどだと正常動作。) グレーアウトしたメニューも一応クリックすれば動くなど、そんなに支障ないのだけど 見た目的に直したく思うのです。何が原因なのでしょう。
すいません、こまかいことにこだわるのやめました。 アクティブウィンドウを切り替えるのじゃなくて アクティブにしたいウィンドウの角をクリックする設定にして解決しました。 スレ汚し失礼しました
点滅する画像を認識する為に処理の流れの中で指定時間設定してrepeat until って組む事出来ますか? 上にも同じ様な事書いてあったけど解決されてなかったっぽい while true ifb chkimg("A.bmp",0)=true //Aの画像があったらクリック btn(left,click,G_IMG_X, G_IMG_Y) repeat sleep(0.1) until CHKIMG("B.bmp", 0) or chkimg("C.bmp", 0)=true //0.1秒間隔でBまたはCの画像を認識してあればクリック BTN(LEFT, CLICK, G_IMG_X, G_IMG_Y) sleep(1.5) ifb chkimg("D.bmp",0)=true //repeat untilの条件をクリアしたら画像Dをクリック BTN(LEFT, CLICK, G_IMG_X, G_IMG_Y) wend と、各種サイト参考に組んでみたものの Aをクリックし、BかCが表示されているにも関わらずDをクリックしまたAに戻るという状況 エラーが出ないからどこを直せばいいか… どなたか教えて下さい
サウンドの設定を開いて、一番上のスピーカーを無効化して、 同じスピーカーをすぐに有効にしてサウンドを終了する という操作はできる?
>>455 点滅云々というより
CHKIMG関数を連続で呼んだらダメ
イメージがなければ G_IMG_X の G_IMG_Y の値が -999999 になるので
結果を一旦退避させてループ後に対比した有効な値でクリックするといいよ
clickImageぐらい自作し(ry
>>455 >>457 さんの書いている通りCHKIMG関数を連続で呼んでいるから
until CHKIMG("B.bmp", 0) or chkimg("C.bmp", 0)=true
だと、B.bmp在り、C.bmp無しの場合、特殊変数G_IMG_X、G_IMG_Yが-999999でループを抜けるので
OPTION指定で短絡評価をするとか(他の評価にも影響を与える)
OPTION SHORTCIRCUIT
個々にチェックしてループを抜けるとか
repeat
sleep(0.1)
if chkimg("B.bmp", 0) then break
if chkimg("C.bmp", 0) then break
until false //0.1秒間隔でBまたはCの画像を認識してあればクリック
BTN(LEFT, CLICK, G_IMG_X, G_IMG_Y)
かな
>>451 前のPCはもうないんですよ…
新しいPCにUWSCをいれただけなんで、原因はWindouws8にあると思うですが
使えてる人いるんですかね?
設定等何もいじっていません。
>>460 とりあえず
UWSCのバージョン、free/pro
UWSCのインストールディレクトリ
UWSCの関連付け
一番簡単な動かないスクリプト(GruGru.UWSとか)
そして、どういうふうに期待を裏切るのか
windows8/windows8.1、32bit/64bitのどれ?
ぐらいの情報があれば
エスパーが現れるかもしれない
>>460 前のPCがWindows7とかなら大差ないんだけど
XPとかだったらだいぶ違うかもしれない。
XPからでも変わらないのが管理者権限を必要とする操作で管理者権限でないとかだけど
IEのバージョンが違うから動かないとかもあるし。
パスワードを生成するマクロを組んだのですが、同じ数字が生成されてしまいます 下記のマクロだと全4種類のパスワードの種類があるのですがprintで生成パスワードを見ている際、全種パスワードを生成し終わるとダブり始めます それどころか4種類を出す前にパスワードがダブり始めることもあります パスワードがダブったら知らせるもしくはダブらせない方法などはありますでしょうか? dim password dim chrset = "01" while 1 for i = 1 to 1 password = password + copy(chrset,random(length(chrset))+1,1) next PRINT (password) password = password - password wend
>>463 順番に全部の組み合わせでやれば問題ない。ブルートフォース。
ランダムでやりたければ
出たやつを全部連想配列にぶち込めばいい。
> // キーが存在するか
> 変数[キー, HASH_EXISTS] // キーが存在すればTrueを返す
>>461 バージョンはfree
インストールはダウンロードで解凍してそこで起動しました
関連付け?ちょっとわかりません
記録してそれを動かそうとしたんですが、動かず…
windows8.1、64bit です。
>>462 管理者権限で実行はしています。
IEのバージョンとはなんでしょうか?
まっさらなPCなので、Windows8だと使えないのかと思っているのですが
Windows8でもつかえるのでしょうか?
>>465 動作環境は本家のWebに書いてある
「動かない」って書いてるけどどう動かないのか書かないと・・・
あと、まずは問題点の切り分けをしないとダメよ、記録して再生とかそのあとの話し
>>461 の人も書いてるけどGruGru.UWSの動作は?
それか↓のような簡単なのとかどう?
for i=0 to 10
print i
sleep(1)
next
>>465 記録した.uwsをテキストエディタで開いて確認してみて。空かもしれない
あと
>>5 参照
>>466 ありがとうございます。
動きました…が…
デスクトップ画面では動くようです。
しかし、なぜかIE上では動きませんでした。
>>467 ありがとうございます。
保存しようとしたところ
保存するデータがないと言われ記録できていないようでした。
これはなぜなんでしょう?
470 :
名無しさん@お腹いっぱい。 :2014/02/26(水) 05:29:23.01 ID:n4pLU3xk0
>>470 管理者権限で実行しています。
デスクトップでIEを開いていない状態なら記録出来ましたが
IEを開いた状態だと記録できません。
IEのバージョンのせいというやつでしょうか?
それは多分だけど 既に開いているIEはユーザ権限で UWSCは管理者権限で起動していて その結果 お互いに認識できない状態なんじゃないかな
てか、IEの詳細記録はフリー無理じゃね?
曜日を取得すると数字になってしまうので、下記のコードで数字を文字で表示されるよう書いたのですが この書き方だと行数を食う上に明らか下手くそなコードの気がしますこれをもっと綺麗に短縮して書く方法はないものでしょうか? GETTIME() i = G_TIME_WW if i = 0 then i = "Sun" if i = 1 then i = "Mon" if i = 2 then i = "Tue" if i = 3 then i = "Wed" if i = 4 then i = "Thurs" if i = 5 then i = "Fri" if i = 6 then i = "Sat" PRINT i
DIM week[] = "Sun", "Mon", "Tue", "Wed", "Thurs", "Fri", "Sat" GETTIME() print week[G_TIME_WW]
>>476 配列を使うのですね
有難うございました
質問させていただきます 動作を記録したいのですがマウス移動は要らないのですが余分な時間は記録したいのです 何か良い方法はないでしょうか 通常の低レベル記録だとマウス移動も記録している弊害か徐々に遅れていくので私の使用用途では使い物にならず よくありそうな問題なので調べればわかるだろうと思って検索しても全く分からなかったため 申し訳ないのですが質問させていただきました ご存知の方が居られましたらお教えいただけると幸いです
>>478 自分でスクリプト編集はしてる?記録されたスクリプトのMMVとかBTNとかの関数に
実行までの待機時間を指定するパラメータがある。くわしくはヘルプ参照
>>478 徐々に遅れていくのは Sleep() が間延びするせいでしょう。
記録した時間を編集、集計して
実行するコマンドと待ち時間の表を作って
GetTime() のループで
開始時からの時間差でコマンドを実行するようにすればいいでしょう。
めんどくさいなら精度の高い Sleep()関数を自作ですね。
どちらの方法を取っても、記録と再生で処理時間や待ち時間に狂いが出てくるので
徐々にずれていくとは思います。
ありがとうございます
数分に及ぶ作業なので各所にsleepを仕込んでいくのは結構な手間になるのですが
やること自体は単純なので記録で何とかならないかなと思ったのですがそれだけでは難しそうですね
>>480 さんの方式を検討しつつもう少し考えてみようと思います
ウィンドウ関数低レベルの ms: 実行までの待ち時間 (ミリセカンド)って 具体的にはどのように動作しているんだろうね 最大待ち時間って実装だと 長くすると待機時間が増えるけれど空きイベントを捕まえる余裕が増えるので入力漏れの危険が減る 最低待ち時間って実装だと 指定時間の長短に関係なく空きイベントを捕まえる時間は一定、入力漏れの可能性も一定 Windowsはイベントドリブンモデルだから厳密な動作時間には期待しないロジックを組むってのが個人的なポリシーだから 深く考えた事ないけれど経験的に前者だと思っていたんだけど・・・ ヘルプを見ろって言われてもこの辺の実装の説明は曖昧なんだよね
>>473 IEも管理者権限で開けば大丈夫なんですか?
>>474 えっ
Windows8じゃない時はできました…
>>483 http://www.uwsc.info/faq.html#n30 IEの操作が正しく働かない、IEが2つ起動する(Vista/7/8) #n30
IE上での動作を記録しようとしても記録ができない
IEの保護モードを解除する必要があります。
インターネットオプション -> セキュリティの "保護モードを有効にする" を解除してください
イントラネットを使用の場合には インターネット、イントラネットゾーンの両ゾーンとも解除してみてください
また COM操作にて一部機能がダメな場合は、IEの互換表示をオンにしてみてください
>>480 開始時からの時間差でコマンド
これのコードが知りたい
>>485 GetTime() の戻り値は小数点以下を含まないので合計する。←最初が遅れるので長めに取るべきだった。
あとはオフセット時間と実行するコマンドの配列を参照して時間が来れば順番に実行する。
DIM オフセット時間[] = 0.000, 1.000, 2.000, 3.000, 4.000, 5.000, _
5.001, 5.002, 5.003, 5.004, 5.005, 5.006
DIM コマンド[] = "i + <#DBL> <#DBL> + G_TIME_SS + <#DBL>.<#DBL> + G_TIME_ZZ"
now = GetTime()
開始時 = now + (G_TIME_ZZ / 1000)
for i = 0 to length(オフセット時間) - 1
repeat
Sleep(0.001)
now = GetTime()
until 開始時 + オフセット時間[i] <= now + (G_TIME_ZZ / 1000)
print "時間です。利息が付きます。 " + EVAL(コマンド[0])
next
この方法の問題は、処理に時間がかかった場合に直後の処理とかぶってWindowsとかアプリからキャンセルされることだけど
時間に正確にやらないといけないならこれしかないかな。
しょーもなw
普通に記録して再生すると7秒くらいかかるんだけど、 なんとか1秒以内にできんもんか
7秒の動作を記録したから7秒掛かってるだけじゃないのか
速い部分は一瞬で終わるんだけどね ウィンドウが開くのを待つ処理が余裕を持たせ過ぎている
ウィンドウID取得出来るかどうかチェックするだけだよね
開くのを待つってのがただSleep()で待ってるだけでしたって落ちじゃないよね?
最初はsleep()のせいだと思ってコメントアウトしたけど、ちっとも速くならない id = GETID("スタート", "Button", -1) 第3引数に-1を指定すると開くのを待つけど、それはつまり 開いたのを確認したら即座に次の行に移るという意味だと思うのに、なんか待ってる気がする それとも、見た目は開いてるけど内部的には処理が完了してなくて、 完全に終わるのを待つとこんな動作になるんだろうか
気になるなら比較するコードを書いてみるといいのだ ただGETID関数は全オブジェクトを舐めながら探す処理をしている筈だから オブジェクト数で処理時間は不定になる関数だと思うよ
//////////////////////////////////////////////////////////////////////////////// // MS アクティベーション用 ナンバークリック 2014/03/01 // 使い方 // 準備:スペース区切りでナンバーを入力する // 開始:Ctrl キーをクリックするたびに1グループずつキーが送信される // ※数字のみをクリックし、それ以外は区切り文字として扱います。 public group = 1 public col = 1 public str Fukidasi("Ctrl キーをクリックするたびに1グループずつキーを送信します。") str = input("slui 4 コマンドで表示された インストールID を入力してください") Fukidasi(str) SetHotKey( , MOD_CONTROL, "OnKeyClick" ) // 開始キーを登録 while true // 常駐のため永久ループ sleep(999) wend
//////////////////////////////////////// // クリック Procedure OnKeyClick() print group group = group + 1 while col <= length(str) char = copy(str, col, 1) ifb CHKNUM(char) kbd(ASC(char), DOWN) sleep(0.1) kbd(ASC(char), UP) sleep(0.2) col = col + 1 else break endif wend while col <= length(str) ifb ! CHKNUM(copy(str, col, 1)) col = col + 1 else break endif wend ifb col > length(str) Fukidasi("終了しました") sleep(5) exitexit endif FEnd
昨日の日付を表示する短いコードなのですが gettime() print (G_TIME_DD2 -1) これだと1と表示されてしまいます これを01と表示させるいい方法はないものでしょうか?
>>499 gettime(-1)
print (G_TIME_DD2)
これじゃダメ?
>>500 現在こうなっていまして
メモ帳に今日の日付と昨日の日付を送りたいのですが
GETTIME()に-1をぶっ込むと今日の日付が昨日の日付になってしまうんです
GETTIME()
DIM zzz[] = G_TIME_DD2,(G_TIME_YY + G_TIME_MM2 + (G_TIME_DD2 -1))
FOR i = 0 TO (LENGTH(zzz) - 1)
SENDSTR(メモ帳のID,zzz[i])
next
月跨ぎとか問題起きそうだからgettime(-1)使ったほうがよさそう こんな感じにするとか? GETTIME(-1) yesterday = (G_TIME_YY + G_TIME_MM2 + G_TIME_DD2) GETTIME() DIM zzz[] = G_TIME_DD2,yesterday FOR i = 0 TO (LENGTH(zzz) - 1) SENDSTR(メモ帳のID,zzz[i]) next
>>502 やはり-1用のGETTIMEと通常用のGETTIMEの2種類必要なんですかね?
DOSコマンドあたりも調べたんですが綺麗な方法がなくて困ってたんです
>>503 一応replaceとformat関数を使えば桁合わせは可能だけどどうなんだろう・・・
ちなみに4.7bで配列に直接つっこんだらえらいことになった
replace(format((G_TIME_DD2 -1), 2, 0), " ", "0")
変数やら制御やらの部分はもっといけてる言語でやるので、 windowsとのインターフェース部分だけ切り出したライブラリとかないの
>>503 あれが一番きれいな方法だよ。
便宜上まとめてかいてるが関数にまとめれば
色々な意味で一番スマートでしょ。
月またぎ諸々考慮済みの関数を差し置いて
小手先の文字列操作で車輪の再発明してると
次々と発生する例外ケースに耐えられない
GETTIME(-1) yesterday = (G_TIME_YY + G_TIME_MM2 + G_TIME_DD2) print (yesterday) についてなんですが-1を入れると何故日にちだけ前日日を表示するんでしょうか? 年や月などは20143月とそのままなのに日にちだけいい感じに-1日されるのでしょうか?
>>509 print gettime() - gettime(-1)
結果:86400
1日=24時間=1440分=86400秒
普通は gettime 関数の仕様だからとしか言い様がない 但し、小数点指定で時間を知りたい場合は精度の問題が発生する可能性があるので 関数の戻り値である 2000年1月1日からの秒数 から±して求めた方が楽かも 因みに第2引数で基準日が指定可能なので 少し前のレスで話題になってた関数を2度呼ぶ件はコレで回避したほうが良いかも 要するに2度呼ばれる間に日を跨る可能性が気になるんでしょ? それなら 当日 = GETDATE() //当日のプロパティで行う処理 前日 = GETDATE(-1, G_TIME_YY2+G_TIME_MM2+G_TIME_DD2) //前日のプロパティで行う処理 で、良いと思う
関数名は間違えるわ引数は数値として足されてgdgdだなw スクリプトのみ訂正 GETTIME() Print G_TIME_YY4+"/"+G_TIME_MM2+"/"+G_TIME_DD2 GETTIME(-1, G_TIME_YY4+"/"+G_TIME_MM2+"/"+G_TIME_DD2) Print G_TIME_YY4+"/"+G_TIME_MM2+"/"+G_TIME_DD2
>>484 ありがとうございます
できました!!
本当に助かりました。
>>510 86400秒マイナスするって意味だったんですね
じゃあ、GETTIME(-2)は172800秒マイナスすると
ありがとうございました
この板の過去ログも開放されたね
>>3 のログが読めるようになったのでかなり助かる
BTN(LEFT,CLICK,G_IMG_X,G_IMG_Y,500) と SLEEP(0.5) BTN(LEFT,CLICK,G_IMG_X,G_IMG_Y) って全く同じなんですかね? なんか微妙に挙動が違うような感じがします。 特に短周期ループ内だと、SLEEPを入れた方が反応がいいというか・・・ 気のせいでしょうか?
>>516 >BTN(LEFT,CLICK,G_IMG_X,G_IMG_Y,500)
こっちは500ms待つ間CPUを食うけど
>SLEEP(0.5)
>BTN(LEFT,CLICK,G_IMG_X,G_IMG_Y)
こっちはsleep中CPUを食わないってどっかで見た
リアルタイムで作成される C\ProgramDate\USER\dousa.txt を監視して、所定の動作をさせたい。 つまり、C\ProgramDate\USERにdousa.txtがあるのを確認して、 dousa.txtがあったらtxt本文をチェックして txt本文に A実行 と書かれていたら A.uws を実行。 txt本文に B実行 と書かれていたら B.uws を実行。 txt本文に C実行 と書かれていたら C.uws を実行。 チェックして実行したら、dousa.txtを削除する。 という kannshi.uws なるスクリプトって誰か作れる? この kannshi.uws を指定時間で行うスクリプトや、 A.uws B.uws C.uwsの実行スクリプトは、 何とか自分で作れそうだけど、肝心な監視のスクリプトができない。 誰か助けて、お願いします。
>>518 >つまり、C\ProgramDate\USERにdousa.txtがあるのを確認して、
>dousa.txtがあったらtxt本文をチェックして
>txt本文に A実行 と書かれていたら A.uws を実行。
>txt本文に B実行 と書かれていたら B.uws を実行。
>txt本文に C実行 と書かれていたら C.uws を実行。
>チェックして実行したら、dousa.txtを削除する。
ここまで分かってるのならもうほとんど完成したようなものだろ
逆に何が分からないのかが分からない
丸投げせずに、具体的のどこが分からないのか聞かないと答えてくれる人いねぇぞ
ごめんなさい txtそのものを作るプログラムに追われていて。。。
課題まる投げ依頼に行けよ
ごめんなさい
主婦なので、もう食事準備の時間で
今日も全然進みませんでした
>>521 どちらで聞けばいいですか?
釣れますか?
・txtそのものを作るプログラムは作れる ・動作させたいタイミングはそのプログラムの実行後 そこから導き出される答えは・・・ ・そのプログラムから直接 A.uws 等を実行すればいいんじゃね? 正直ワンクッション必要なケースとは思えない
やっと、少し時間が空きました。
>>524 txt作成は雛形があって、それを参考に作っていますが、
それの作成者に確認したところ、そのソフトでは
txt出力までで、UWSCの起動は不可能との回答をもらいました。
今日はもう時間が取れないので、これで失礼します。
開発制度や開発時間に制約あるのならそれこそ ランサーズとかへ金出して行けばいいのに 24時間コールセンター的な無料サポートスレじゃないぞ?
●質問したい方へ 「○○作れますか?」→ 可能か不可能かを聞いているのなら答えは「作れる」 「○○が作りたい」→ 自分が作れば?並大抵の事ならググれば似たようなスクリプトや知識が見つかる 「○○作って下さい」→ 依頼スレじゃありません。 過去ログを見る、検索する等、自分で出来る事を書き込む前にするように。 自力で作ったのを晒すか、具体的な解らない場所を提示して、改善点や解決策を求めるようにしましょう。
お前らの忍耐力はすさまじいな たった四回の発言で俺は凄まじくイライラしてるんだが 主婦なので、←そんな情報いらないし やっと、少し時間が空きました。←何様だよって感じだし txtそのものを作るプログラムに追われていて。。。 ←色々突っ込みたいけど句点連打が最高にイライラするし 今日はもう時間が取れないので ←また来るのかよって感じだし それに柔らかい言葉で対応するお前らを初めて尊敬した
おはようございます。昨日は、お騒がせしましたが、 FOPEN関数を使って、無事にできました。
Joytokeyやdresskeyにマクロファイル呼び出し機能があればいいと キー設定の制約を見て思う UIボタン化のようなことはプチランチャでできるが
おや? repeat 〜 until って ループ条件未成立でも1回は実行する do 〜 while と同等かと思ってたら 1回も実行しないのかね。 ヘルプに何も書いてないから、いちいちテストスクリプト書かないと遺憾。
え?
いやいや
オレの間違いだった。1回は実行する
535 :
名無しさん@お腹いっぱい。 :2014/03/09(日) 18:13:56.17 ID:zhYEI+T50
皆頭良すぎて俺はもう駄目だ… もう暗号にしか見えない
>>535 俺と一緒にHello world . から始めようぜ。
>>536 できた
msgbox("Hell world.")
>>537 msgbox("Hell word.")
こうだろ?って…すまん
FUKIDASI("Hello wild.") POFF(P_REBOOT) SLEEP(10)
初歩的な質問ですが、こういう式を作りたいのですがELSE行に記述があると表示され動作しませんでした 式:画像ABCを探して処理A、どれも見つからない時処理Bを実行 ifb CHKIMG 画像A then 処理A Else if CHKIMG 画像B then 動作A Else if CHKIMG 画像C then 動作A Else 動作B endif
すいません処理=動作の意味です
ぱっとみ動作Aの前で改行すればいいんじゃ
あELSEとIFの間のスペースがいらないのか
混乱して意図しない動作させる位なら全部にENDIFを付けろ
ブラウザゲームでuwscを使ってるときたまに接続が切れて「接続できませんでした+url」というウィンドウがでてきて作業がとまるから消したいんだけどナニをどう挿入していいかわからないから教えてエロイ人。 PC=windows7 64bit、ブラウザ=safari(windows版)
作った人に聞けば
画像検索で、接続できません〜が出てきたら そのウィンドウを閉じる、×ボタンとかOKボタンとかを クリックするルーチンをいれる。
>>546 msgbox("Hell word.")
から始めろよ。
こういう基本から始めろよ。まず動かして分析せよ。 DIM pushed=0,wid FUKIDASI("まずは電卓がぐるぐる回るのが基本です") WHILE !GETKEYSTATE(VK_ESC) wid = GETID(GET_ACTIVE_WIN) IFB STATUS(wid,ST_CLASS)="#32770" AND POS("Windows タスク マネージャ",STATUS(wid,ST_TITLE))>0 THEN IFB !pushed THEN KBD(VK_CTRL,DOWN) FUKIDASI("Hell word") pushed=1 ENDIF ELSE IFB pushed THEN KBD(VK_CTRL,UP) FUKIDASI("Hell wordは動き出す…") pushed=0 ENDIF ENDIF SLEEP(0.1) WEND。
>>550 おれ、ここに書いてある言葉をヘルプから漁るところから始めてくるわ。
ありがとう。
>>543 原因はLESEIFにスペースがあった事でした
ありがとうございました
ブラウザでずっと延々読み込み中になって常にBUSY状態な時の タイムアウト処理はどうすればいいの?
経過時間が○秒以上なら処理を抜けるようにすればいいだけじゃね
556 :
名無しさん@お腹いっぱい。 :2014/03/12(水) 19:45:39.01 ID:pUl3B2z10
とりあえず組んでみたんだが WHILE TRUE FOR t = 20 TO 100 STEP 2 timgname = """ + "t" + t + ".bmp" + """ IFB CHKIMG(timgname) THEN PRINT G_TIME_YY4 + "/" + G_TIME_MM2 + "/" + G_TIME_DD2 + "/" + G_TIME_HH2 + ":" + G_TIME_NN2 + " " + "現在は" + t + "です" SPEAK("現在は" + t + "です") BREAK ELSE ENDIF NEXT WEND 3行目の変数tが定義されてないってエラーはく。これはどういったことでどうすりゃええの? ちなみに判定したい画像はt20.bmp〜t100.bmp
>>556 """→"<#DBL>"
ヘルプより
<特殊文字>
<#CR> // 改行コードを表す
<#DBL> // "ダブルコーテイションを表す
<#TAB> // タブを表す
間違いました timgname = "t" + t + ".bmp" これだけで良いはず
560 :
名無しさん@お腹いっぱい。 :2014/03/12(水) 22:56:27.00 ID:pUl3B2z10
DIM D[] = 1,2,3 DIM Da[] = D[]*π ってするとD[]は配列だって怒られるんだけど Da[] ってどうやって記述したらいい? 上記の場合は頭の中では DIM Da[] = π,2π,3π ってのをイメージして書きたいんだけどどう書いたらいいのかわかりません。
この自分本位な説明不足感と不遜な態度… いつもの逆ギレ君かな?w
例の発達障害の?やだそれ怖い
マジか…
564 :
名無しさん@お腹いっぱい。 :2014/03/12(水) 23:20:18.38 ID:pUl3B2z10
あ〜説明不足だったかスマンスマン こんな感じのコード書いてみたんだけど、 DIM d[] = 2,3,4,5,6,7,8 PRINT d[0] +" "+ d[1] + " " + d[2] + " " + d[3] + " " + d[4] + " " + d[5] + " " + d[6] FOR n = 0 TO 6 DIM da[n] = CEIL( CEIL( d[n] * 3 ) ) NEXT PRINT da[0] +" "+ da[1] + " " + da[2] + " " + da[3] + " " + da[4] + " " + da[5] + " " + da[6] 2行目は上手く表示される。これは当然なんだけど。 やりたいことは6行目の表示。 3〜5行目をどう書き直したら6行目を素直に表示してもらえるのかと思っての質問です。
//ceilをググったらPHPの切り上げらしいがそれを2重がけ? dim testArray[] = 1, 2, 3, 4, 5, "a", 7, 8, 9 pai = 3.14 calcArray(testArray, pai) print join(testArray, ", ") function calcArray(var array[], num, operator="*") result = true for idx=0 to resize(array) try array[idx] = eval("" + array[idx] + operator + num) except array[idx] = ERR_VALUE result = false endtry next fend
失敗失敗 DIM testArray[] = 1, 2, 3, 4, 5, "a", 7, 8, 9 pai = 3.14 print join(calcArray(testArray, pai), ", ") function calcArray(var array[], num, operator="*") result = true for idx=0 to resize(array) try array[idx] = eval("" + array[idx] + operator + num) except array[idx] = ERR_VALUE result = false endtry next fend
宣言時の代入は定数しか使えませんよ C言語でもそうですよね、言語仕様です。 初期化ルーチンで真っ先に処理するしか無いですね。
568 :
名無しさん@お腹いっぱい。 :2014/03/12(水) 23:38:18.41 ID:pUl3B2z10
大変感謝なのですが・・・・もっとレベルの低いコードをお願いします。 数学的処理がちょっとアレなのはわけありです。 DIM d[] = 2,3,4,5,6,7,8 PRINT d[0] +" "+ d[1] + " " + d[2] + " " + d[3] + " " + d[4] + " " + d[5] + " " + d[6] FOR n = 0 TO 6 DIM da[n] = CEIL( CEIL( d[n] * 3 ) ) PRINT da[n] NEXT //PRINT da[0] +" "+ da[1] + " " + da[2] + " " + da[3] + " " + da[4] + " " + da[5] + " " + da[6] って感じにすると 6 9 12 15 18 21 24 って表示はされる。これじゃログが荒れるので、横書きスマートに収めたいんだわな。 なんとか知恵をお借りできないだろうか?
ああ、ごめん
嘘(
>>568 )書いちゃったっぽい
もう少し検証してまた質問するわ
print join(da, " ")
おし!自己解決したわ! いちよう報告しとくと DIM da[6] = CEIL( CEIL( d[0] * 3 ) ),CEIL( CEIL( d[1] * 3 ) ),CEIL( CEIL( d[2] * 3 ) ),CEIL( CEIL( d[3] * 3 ) ),CEIL( CEIL( d[4] * 3 ) ),CEIL( CEIL( d[5] * 3 ) ),CEIL( CEIL( d[6] * 3 ) ) 力技w
おっと、お礼忘れてた 有難う! また来る
あ〜PUBLICじゃなきゃ演算結果を初期化値に指定できるのか〜 CEILも数学関数として予約語に登録されてるなぁ何の解説もないけどw でも2重CEILの意味は判らんw dim testArray[] = 1, 2, 3, 4, 5, "a", 7, 8, 9 pai = 3.14 calcArray(testArray, pai) print join(testArray, " ") evalArray(testArray, "ceil(ceil(", "*3))") print join(testArray, " ") function calcArray(var array[], num, operator="*") result = evalArray(array, "", operator + num) fend function evalArray(var array[], leftFomula, rightFomula) result = true for idx=0 to resize(array) if array[idx] = ERR_VALUE then continue try array[idx] = eval(leftFomula + array[idx] + rightFomula) except array[idx] = ERR_VALUE result = false endtry next fend
あ、既にCALCARRAYという名前で別機能のスクリプト関数が実装済みだった orz 何故エラーにならん safearrayを使って戻り値が配列になるようにしてみたが、 testArray=evalArray(testArray, …) のような代入が出来ずあまり便利でないので辞めた。
575 :
名無しさん@お腹いっぱい。 :2014/03/14(金) 16:02:37.89 ID:svKCjyAU0
ヘルプのPeekcolor例 // カーソル位置の色を表示 x = G_MOUSE_X; y = G_MOUSE_Y c = PeekColor(x, y) PRINT "赤="+G_赤(c)+",緑="+G_緑(c)+",青="+G_青(c) をもとに WHILE TRUE MOUSEORG(0) x = G_MOUSE_X; y = G_MOUSE_Y c = PeekColor(x, y) PRINT "赤="+G_赤(c)+",緑="+G_緑(c)+",青="+G_青(c) WEND って書いてみたんだが、G_赤(c) G_緑(c) G_青(c) がねぇぞゴルァって怒られた。 ほぼコピペなのに怒られるとか。。。どうしたらいい?
// 以下 関数の下もコピペ 関数の意味ぐらいぐぐって知っておくべき
悪いな・・・なんか呆れられてるなってことはわかるんだが 自動で赤成分設定してくれてはないってことでいいのか? function関数によってあとから設定してるってことなんか? そかそか読めてきたぞ ありがとう
578 :
名無しさん@お腹いっぱい。 :2014/03/14(金) 19:41:36.75 ID:svKCjyAU0
// 以下 関数 function G_赤(c) Result = c and $FF fend function G_緑(c) Result = (c and $FF00) / $100 fend function G_青(c) Result = (c and $FF0000) / $10000 fend ってコードの c = and $FFってのがPEEKCOLORで抽出した色情報を BGR形式からRGB形式に変換してるんだなって感じなのはわかるんだが この時のandってのの役割がわからん どういった処理してるandなの?
and or のandだったか・・・。 集合の概念か。 それでなんで c and $FF ってすると赤成分が抽出されるん? $FFってのが何なのかを聞くべきなんかな?
BGR $FFFFFF B $FF0000 G $00FF00 R $0000FF ←$FFはこれ(赤)な
おう、割とわかった・・・・と思う。 ありがとう
>>580 $数値は16進数
$FFは2進数で11111111
なんだ分かったのか
RGB BGRって 色の並び順のことかああああああああああああああああああああ!? 今知ったわ
集合のANDじゃなくてビット操作・ビットマスクのANDだよ
チンパンに判るように説明してくれw
┏━━━━━━━━━━━┳━━┓ ┃ビット操作・ビットマスク ┃検索┃ ┗━━━━━━━━━━━┻━━┛
フィルタリングしてんだな ろ過して濾しとるってことだな おkわかった
GoogleChromeでFacebookのIDとパスワードを入力するのってどうすればいいですか?
そういう漠然とした質問しか出来無いレベルの方は、 ロボフォームなどの完成品のシェアウェアを買って使ったほうが良いでしょう。 どうしてもスクリプトプログラミングで自作したいのなら、 何故自作する必要があるのか。 具体的にどういう仕様が必要なのか。 説明する所から始めましょう。 あなたが自力で制作できず他の人に頼むなら、 シェアウェア購入費の数倍〜数十倍の依頼料がかかるでしょう。
592 :
名無しさん@お腹いっぱい。 :2014/03/16(日) 00:09:32.29 ID:fPdT0jAL0
カーソルしたの色抽出して、 プリントスクリーン押したら抽出した色をストックしてって 色範囲を求める 的なコード書きたいんだけど、 ストックってどうすりゃいいかな? WHILE TRUE n = 0 IFB GETKEYSTATE(VK_SNAPSHOT) THEN DIM COLOR[n] = PEEKCOLOR(G_MOUSE_X, G_MOUSE_Y) n = n + 1 ENDIF WEND これじゃたぶん間違ってるんだけど キーを押してnがどんどん増えてくときに配列がどんどん増えてくのってどうやったらええのかな?
┏ ┏━┓┏━┓┏┳┓┳━┓ ┏━┓┳ ┳┳━┓┳━┓ ┓ ┃ ┃ ┓┣━┫┃┃┃┣┫ ┃ ┃┃ ┃┣┫ ┣┳┛ ┃ ┗ ┗━┛┻ ┻┻ ┻┻━┛ ┗━┛┗━┛┻━┛┻┗┛ ┛
連想配列使っとけ
最初にいっぱい宣言しとけ
色範囲って? DIM colors[200] isKeyDiff = True idx = 0 isOver1Lap = False eIdx = 0 GETKEYSTATE(VK_SNAPSHOT) WHILE TRUE IFB isKeyDiff AND GETKEYSTATE(VK_SNAPSHOT) THEN isKeyDiff = False colors[idx] = PEEKCOLOR(G_MOUSE_X, G_MOUSE_Y) PRINT getColorWidthStr(colors,eIdx) idx = idx + 1 IFB idx > RESIZE(colors) THEN idx=0 isOver1Lap=True ENDIF IF !isOver1Lap THEN eIdx = idx ELSEIF !isKeyDiff AND !GETKEYSTATE(VK_SNAPSHOT) THEN isKeyDiff = True ENDIF SLEEP(0.05) WEND FUNCTION getColorWidthStr(colors[], idx) cMin = CALCARRAY(colors, CALC_MIN, 0, idx) cMax = CALCARRAY(colors, CALC_MAX, 0, idx) RESULT = "idx="+FORMAT(idx,3)+", color=$"+FORMAT(colors[idx],6,-1)+", MIN=$"+FORMAT(cMin,6,-1)+", MAX=$"+FORMAT(cMax,6,-1) FEND
RESIZE(colors, n)で配列サイズを都度拡張してもいいよ データ構造から言ってオススメはしないけど 連想配列だと元々都度拡張する仕様になってるから、そのほうがいいのかね CALCARRAYつかえるのかな〜?
残念、連想配列だとサイズ気にしなくていいけど CALCARRAY関数にぶち込んでみたら対応してなかった
すげ〜
配列格納あきらめて
大小比較して更新してくだけの
ジョボイの組み終わったんだけど
断然、こっち
>>596 のほうがスマードやな
色範囲というのが最大と最小だけあればいいなら配列に履歴貯める必要もなく都度大小比較したほうが省メモリでスマードだよ
とりあえずの目標地点は 特定の色調ドット群を検知する弱判定器 抽出した色範囲をどう整理したらいいのかってのに今頭悩ましてる
この画像を読み込んで、数値に変換したい i.imgur.com/WOQT1Av.png 0,1,2,,,,9の一桁の各数字をチェックして 座標の下の方から数値を並べなおして、画像の数値を読み取らせようと考えている だけど、数字の1をチェックした場合に9がひっかかってしまったり 0をチェックした際に8が引っかかったりしてしまう CHKIMG("1.BMP",1,0,0,,,-1,IMG_MSK_BGR4) 何かうまい方法あればアドバイス頂けませんか?
>>602 これは無理なパターンです。
背景と混ざってたら基本的には無理。
比較画像に透明色指定を行えば判定できる可能性があるけど、
文字のドット色がアンチエイリアス時に背景色に影響を受けたり、
元画像を縮小処理して表示していて、同じ数値が常に同じ
ドットパターンにならないケースもある。
出来るか出来ないかは単体テストプログラムを書いて
テストしてみるしか無いけど、
無理でないパターンで判定を成功させた経験がないと、
バグなのかやり方が悪いのか元々無理なのかの正確な判断は難しい。
>>601 とりあえずCSVに書き出して、あとはEXCELで好きなだけいじったらいい
chromeのプロファイルを指定して開きたいのですが起動オプションをつけてもうまく起動しません。 サンプルなどありましたら教えて下さい。
自己解決しました、お騒がせしました
DOSCMD("echo コメント > C:\Users\user1\Desktop\コメント.txt") を使ってデスクトップ中に複数のテキストファイルを作成させてるんだが、 これを座標指定して作成することが出来なくて困っている。 そこまでは出来ないのかな?
ファイルアイコンの座標のこと? なぜデスクトップなんかに…
>>608 そうです。ある方の命令で。
綺麗に並んでいないので怒られて。。。
アイコンの自動整列や並び替えで並べればいいんじゃ? 意味不明すぎるな・・・
>>610 そんなことをすれば、
既に並べられているアイコンに影響が出て
もっと怒られます。
やっぱり出来ないんですね。
できあがってからコメント.txtをマウスでつまんでMMVするか デスクトップにはショートカットを綺麗に並べて置いておくか デスクトップの配置を記憶するフリーソフトを探して併用する
何らかの判断基準があって 人で操作可能な事なら出来ないことはないだろ 何がやっぱりなんだ?
"座標指定して作成" が一気に出来ないということです。 その後の操作するのは、当たり前すぎて。。。
当たり前のことをやらないから怒られるんじゃあ
確かに芸が無いが、難しいな。
>>614 WindowsのAPIで出来るかどうかが問題
もしそういうAPIがあれば、それを利用したアプリも存在するだろう。
そしてUWSCは、あなたのいう「その後の操作」を自動化するソフト。
つまりアナタの見当違い。
以下のプログラムを実行すると、下記プログラム中の7行目(*)の時点でG_IMG_Xの値が初期化されてしまっています PUBLICを加えた時点でどうやら変な動作をするようになったのですが、これがダメな理由(このような仕様になっている理由)についてよければ教えて頂けないでしょうか? またこの場合の適切なプログラムの書き方などありましたらアドバイス宜しくお願いします。 If CHKIMG("ss/send_troop.BMP",0,0,0,,,-1,IMG_MSK_BGR6) SOUND("BEEP") print "send_troop_G_IMG_X"+G_IMG_X+","+G_IMG_Y print "send_troop" send_troop_flag=1 (*7行目) PUBLIC send_troop_X=G_IMG_X+30 PUBLIC send_troop_Y=G_IMG_Y PUBLIC flag_min_x=100 PUBLIC flag_max_x=100 PUBLIC flag_min_y=60 print "send_troop_X="+send_troop_X print "send_troop_Y="+send_troop_Y print send_troop_X-flag_min_X+","+(send_troop_X+flag_max_X) print send_troop_Y-flag_min_Y+","+send_troop_Y ...... endif
>>618 これだけだと別に初期化されないけど
どこか別の所でchkimgやってるんじゃない?
>>618 Publicはコードが実行される前に処理されるから
G_IMG_*の初期値がそれぞれの変数に代入されるよ
なので宣言だけ頭でしておいた方がいいね
>>619 ,
>>620 回答ありがとうございます!
PUBLICがつくと前処理されるんですね
アドバイスありがとうございました。
あら?Firefox28.0がAACアクセス出来なくなったかも?
//Aに"該当コメント"があり、かつデスクトップに"X.txt"があったら、 //"動作.uws"を行うように、下記で行うことは出来たのですが、 IFB (POS("該当コメント", A)>0)_ AND FOPEN("C:\Users\user\Desktop\X.txt", F_EXISTS) THEN Call 動作.uws //Aに"該当コメント"があり、かつデスクトップに"X.txt"があり、 //かつデスクトップに"Y1.txt"や"Y2.txt"や"Z.txt"のどれも無ければ、 //"動作.uws"を行うようにしたのです。 つまり、"Y1.txt"や"Y2.txt"や"Z.txt"があった場合だけは、 "動作.uws"をさせなくしたいのですが、どうやっていいのか分かりません。 どうやったら、できるのでしょうか?
OPEN(ファイル名, F_EXISTS) は TRUE(在り)/ FALSE(無し)を返すので !OPEN(ファイル名, F_EXISTS) って感じに論理否定すると TRUE(無し)/ FALSE(在り)となる これで全部 AND で書けるんじゃないか?
>>624 おお、
AND !FOPEN("C:\Users\user\Desktop\Y1.txt", F_EXISTS)
・・・
で書いていけばいいんだな。さっそくやってみるわ。
exitはマクロの終了ですが マクロを最初からやり直すコマンドはないのでしょうか
プログラム 繰り返しで検索
一月に一回ぐらい、ショートカットや予約が消えてしまう(uwsc.iniが初期化されてしまう)のですが、 何が原因なのかわかる方いますか? 現状はuwsc.iniのバックアップを取り、初期化されると上書きしています。
>>629 UWSCを置いている環境が悪い。
クリーンアップ系のツールが定期的に巡回してるとか。
だとしても、消えたことがないからなぁ…
誰かと共有のPCなら諦める。
>>629 当て推量に期待する前に、
まずは、月一回がいつなのかを突き止めれば良いのでは?
Uwsc使えるなら楽勝じゃん?
>>630 クリーンアップは自動で動かしてないし、手動でやった時に消えている事はない。
共有でもない。
>>631 あるプログラムを一日中動かしてるから別のプログラムを動かせない。
>>632 なにそれ、情報出す気もないなら突き止める気もないじゃん。
なぞなぞでも出したつもりならスレ違いだし。
レス書いてくれたから答えたのになぞなぞに見えるの?
>>632 > あるプログラムを一日中動かしてるから別のプログラムを動かせない。
関連付けでスクリプトを直接実行すればいくつでも実行できるよ。
まぁuwscの質問でもないし、スレ違いだろうな
特定のキー(\)をトグルスイッチにして条件が合えばキー入力(今回はF2と左クリック交互の連打)したくてIF文を書いてみたのですが、 「IFB-ENDIF:String型からDouble型へのバリアント型変換はできません」とエラーが返ってきます。 IF KBD(VK_OEM_5,CLICK) THEN While 1 KBD(VK_F2,CLICK,10) BTN(LEFT,CLICK,1) Wend ELSE ENDIF うまく動いたら連打中の文の中に更に最初にスイッチにしたキーを押した場合連打を止める文を書こうと思っていたのですが最初で躓いてしまいました。 IFでなくてもいいので何かいい方法はないでしょうか?お願いします。
>>637 1行目はGETKEYSTATEなんではなかろうか
>>638 素早いレスありがとう。エラーでなくなりました。
While 1
IF GETKEYSTATE(VK_OEM_5,CLICK) THEN
While 1
KBD(VK_F2,CLICK,10)
BTN(LEFT,CLICK,1)
IF GETKEYSTATE(VK_OEM_5,CLICK) THEN
break
ELSE
ENDIF
Wend
ELSE
ENDIF
Wend
こうすることで目標は達成できたみたいなんですが、止めるときのスイッチの入力判定がめちゃくちゃシビアでなかなか止まりません。
もうちょっと勉強してきます。ありがとうございました。
>>640 その辺のフリーソフトは全て試してできる奴できない奴わかってるんだけど、今やってるゲームだとうまく動かないんだ。
で、UWSCの再生ホットキーが1つのボタンにできれば解決するんだけどどうも無理だった。
しかしマウスにG500使ってたからそっちのマクロに再生ショートカットを押せるように設定したら完璧になったという・・w
最初から連打ループだけの文でよかったw
ページにリンクが10個あり一度アクセスしたサイトにアクセスしない方法とかありますか ページを更新するたびに一度アクセスしたサイトもアクセスしてしまうので
連想配列の引数にURLを入れてフラグ立ててけばいいんじゃないのか
644 :
631 :2014/03/28(金) 00:37:05.49 ID:Rt/jGL3Q0
>>632 [あるプログラムを一日中動かしてる]と、なぜ[別のプログラムを動かせない]のでしょうか。
1日中とは、24時間? それとも朝電源ONから夜電源OFFまで?
646 :
名無しさん@お腹いっぱい。 :2014/03/28(金) 03:37:23.59 ID:aCkShUSU0
このソフト凄いね プログラムのプの字も知らなかったけど自分のやりたい動作が出来たよ プログラム組むのって面白いね 素人のくだらない疑問なんだけど、 例えば、2chの専用ブラウザとかだと 文章を入力して送信ボタンを押せば掲示板にレス出来るけど、実際にIEとかのブラウザを起動している訳ではないよね こういったソフトとUWSCの動作の違いって何??
>>647 UWSCはアプリケーションソフトを外から操縦。
または、COMオブジェクトを使う。
専用ブラウザ等は通信にはCOMオブジェクトを使うかもしれんが、
もっと低水準のWindowsAPIやライブラリを使う。
その分、知識も必要。
UWSCもWindowsAPIを呼び出せるが、
ポインタや構造体をサポートしてないのでほとんどの機能は直接扱えない。
ライブラリを使って扱えるようにしたとしても、速度が遅すぎる。
コンパイラ言語とは比較にならない。
UWSCは遅いが、操縦対象の IE や COM オブジェクトはもっと遅いので問題にならない。
キー、マウスエミュレーションにしてもダブルクリックができればだいたいの作業に支障はない。
>>643 それが予めurlが決まってないのでこれだ!!!というurlを配列の要素として書き込めないんです
windows8にしてから思うように動作しないソフトがあり その代わりをUWSCで実現できないかと思い質問させていただきます (以前の動作) ブラウザやテキストエディタ上などで文字列を反転 右ダブルクリックで"アートチップス"を起動 web検索に登録した"Everything"やブラウザで文字列を検索 これを実現するにはまず反転した文字列をsendstrでクリップボードへ というのが必要だと思うんですが、その方法がわかりません どなたかヒントをいただけないでしょうか?よろしくお願いします
_,,...,,_ ,ィ",、_/_,,._, / ' } {" "> | -―・ー{ }}ll-i 〈=========--- 、 、_ _} {_ 、> ` 、._゙ ,\``゙ スイーッ  ̄ ̄
>>652 アートチップスとやらの起動方法を変えればいいだけだと思うが
SCKEY
Ctrl+C
>>654 SCKEY ありがとうございます。
Arttipsだけでなく、他にもいろいろ動かないソフトがあるので
対応をまつより自分でなんとかできないかと思いまして
UWSC初めてなのでうまくいかなかったらまた助言をいただきに来るかもしれませんが
どうもありがとうございました
656 :
652 :2014/03/31(月) 00:19:36.54 ID:jd97SqSy0
たびたびすいません UWSCでは右ダブルクリックを判定できないんでしょうか? 今はショートカットを割り当てて多ボタンマウスでとりあえず運用してます。 あともう一つ、こちらがより問題なんですが ファイラ上でファイル名変更→範囲選択→作ったUWS実行 が機能しません。UWSC自体をバックグランドのまま実行できると もしかしたら可能かもしれませんが、起動オプションにはみあたりませんでした どうかお知恵をお貸しください
ttp://msdn.microsoft.com/en-us/library/windows/desktop/dd375731 (v=vs.85).aspx
0x01 VK_LBUTTON Left mouse button
0x02 VK_RBUTTON Right mouse button
0x03 VK_CANCEL Control-break processing
0x04 VK_MBUTTON Middle mouse button (three-button mouse)
VKにダブルクリックはないので無理かな。
グローバル変数に時刻(ミリ秒まで)を記録して2回目が素早ければダブルクリックと判定するのは普通のやり方。
GETKEYSTATE ではクリックされた正確な時刻は取れないのでイベントで受け取る。
イベント関数はクリックごとに呼ばれる。
// ホットキーの設定
戻値 = SETHOTKEY( キーコード, [修飾子キー, Procedure名] )
普通のアプリケーションソフトなら WM_LBUTTONDBLCLK とかを受け取れる。
ttp://www.geocities.jp/ky_webid/win32c/006.html 2回クリック
WM_LBUTTONDOWN → WM_LBUTTONUP → WM_LBUTTONDOWN → WM_LBUTTONUP
ダブルクリック
WM_LBUTTONDOWN → WM_LBUTTONUP → WM_LBUTTONDBLCLK → WM_LBUTTONUP
658 :
652 :2014/03/31(月) 14:56:37.59 ID:jd97SqSy0
>>657 詳しくありがとうございます。
右ダブルクリックは元々ないんですね
たぶん無理矢理スイッチにはできるんでしょうが
思わぬ不具合がでてきそうなのでこちらはこのまま使うことにします
PUBLIC gIsDblClk=FALSE; PUBLIC isJBOpen=False; THREAD threadJackInTheBox() isKeyDiff=True; isWaiting2ndClk=False; AllowItvlMSec=350 GETKEYSTATE(VK_LBUTTON); PRINT "ダブルクリックしてください" WHILE TRUE IFB isKeyDiff AND GETKEYSTATE(VK_LBUTTON) THEN PRINT "LBUTTON up."; isKeyDiff=False ELSEIF !isKeyDiff AND !GETKEYSTATE(VK_LBUTTON) THEN PRINT "LBUTTON down."; isKeyDiff=True IFB !isWaiting2ndClk THEN PRINT "1st click."; isWaiting2ndClk=True; mSec1stClkStart=getMSec() ELSE PRINT "2nd click." IFB getMSec() <= mSec1stClkStart+AllowItvlMSec THEN PRINT "This is a double-click."; isWaiting2ndClick=False; gIsDblClk=True ELSE PRINT "Too slow as a double-click."; isWaiting2ndClk=True; mSec1stClkStart=getMSec() ENDIF ENDIF ENDIF SLEEP(0.01) WEND
FUNCTION getMSec() Sec=GETTIME(); RESULT=Sec*1000+G_TIME_ZZ FEND PROCEDURE threadJackInTheBox() WHILE True IFB gIsDblClk THEN IFB isJBOpen THEN FUKIDASI("<#CR> <#CR> (_ _) <#CR>−−−", INT(G_SCREEN_W/2), INT(G_SCREEN_H/2)) ELSE FUKIDASI("<#CR> (^o^)<#CR> 爻 <#CR>−−−", INT(G_SCREEN_W/2), INT(G_SCREEN_H/2)) ENDIF isJBOpen = !isJBOpen; gIsDblClk=FALSE ENDIF SLEEP(0.01) WEND FEND
ん〜これだとトリプルクリックが間に合った時に2回ダブルクリックしたことになっちゃうみたいだな…
webページをF5で更新したときに、
特定の文字列が含まれるリンクがでた場合、そのリンクをクリックするようなマクロを作成したいのですが、
例えば
http://www.yahoo.co.jp/のページ内で 、
"utatane"という文字列が含まれるリンクがあった場合に、
そのリンクをクリックするようにしたいのです。
しかし、Firefoxが複数起動しているという前提だとどのように組んでいいのかわからないのです・・・
Firefox個々は全てプロファイルが別れております
ここが最初の大きな問題で、
どのように個々のFirefoxを指定してあげればいいのでしょうか?
IEは使えなくFirefoxのみという前提です。
どうかご教授下さい。
UWSCではなくjavaスクリプトを指定したページで常に実行させることにより解決しました。
SPACEを押すたびにONとOFFが切り替わるソフトを作ったのですが 現在の状態(ON or OFF)を表示する良い方法はないでしょうか
ソフトが作れるならインジケータ実装するだけだし画像用意して組み込んだ方が早いぞ。
有料版ならフォームがベスト 無料版ならフキダシでやりくり
HSPでは出来ない動作だったんですよね・・・。 UWSCの有料版のEXE作成って画像内包出来ないですよね フォームですか 調べてみます ありがとうございます!
フォームはHTMLファイル必須ですか・・・? EXEファイル以外何も置きたくないのですが・・・。
スクリプトの中にhtml書けばいいよ htmlファイルはいらん
すいません、出来たらどう書けば良いのかお教え頂けないでしょうか・・・。 調べてもファイルを読み込みしか出てきません;;
>>670 ヘルプ→CREATEFORM→例)→計算画面
>>671 なるほど。出来たらどう書けば良いのかお教え頂けないでしょうか・・・。
春だねえ
674 :
652 :2014/04/05(土) 01:55:38.92 ID:GEkXFos20
>>659-660 ヒントありがとうございます
自分も頭の中でいろいろ組み立ててみたりはしてたんですが・・・
これ参考に右ダブルクリック挑戦してみます
本当にありがとう
>>672 どう書けばいいか載ってるだろ
見てないのか見たけど分からなかったのかどっちだ?
textblockで囲むだけだぞ
すいません670です。
なんか他の方に返信されてしまってるようですが、ヘルプ見たら出来ました〜!
>>671 さん含め他の方もありがとうございました!
win7でIEと火狐で画像認識をしたのですが それぞれのキャプ画を用意しないと認識しませんでした DTコンポジションのONOFFも確認済みです XP入れてる別PCだとこの問題は起きませんでした ググっても理由や原因は見当たりませんでした 何かご存じないでしょうか
どちらかが勝手に表示を縮小拡大してるとか、 同じ元画像を同じ比率で表示してたとしてもブラウザごとに異なる画像縮小拡大アルゴリズムを採用しているとか、 色々考えられるね。 それぞれの画像を800%ぐらいに拡大比較してみてどう違ってるか見てみたら?
サンプルのCDOを利用したメール送信 #n63 を使ってメールを送信することが出来ましたが メールにファイルを添付することは可能でしょうか? 可能であれば方法をお願い致します。
>>679 CDOオブジェクトの使い方の問題であってUWSCの問題ではない。
CDO.Messageというオブジェクトを生成しているな…
CDO.Messageをググってみる。
ほう、コラボレーション データ オブジェクト というのか。
CDO.Message 添付 でググってみる。
VBSでの添付の仕方が判った。
ここでVBSならば解決だが、どうしてもUWSCでやりたい奇特な方は、
自力でVBSをUWSCに移植するか、UWSCからVBSを実行させるなどの連携を考える必要がある。
VBSからUWSCを実行させてもいいんだよ?w
uwsc単独では出来ないということですね ありがとうございました
俺はメールソフトの自動化で実現してるよ。 ちなみにソフトはThunderbird。
>>681 騙されんなよw
uwscだけでできるからな
>>678 回答ありがとうございます
ブラウザの解像度で、同じブラウザ作成画像でも認識しなくなるとは知りませんでした。
>>685 調べ方まで示されてるのに聞いてばかりで自力で解決しようとする意気が見られない。
UWSCだけでやるならググって出てきたVBSをUWSCに自力で移植すればいい。
その気がないなら「こんなソフトありませんか」で質問するなり製作代行スレにでも行ってくれ
>>684 よく読んで。…が考えられる、というだけ。自分で調べるしかないよw
>>686 すでに自力でやってみたのですが添付ができなかったので質問しました
uwsc単独で特別な方法が要らないのならもう少し自力でやってみます
ありがとうございました
コレクションを回したい時にForeach文が無いのは不便だけど GETOLEITEM関数を経由してALL_OLE_ITEM[ ]配列で回せるしなぁ イベントをフックさせる方法もOLEEVENT関数で可能だし(※今回のケースで必要かどうかは調べてないから知らない) 少なくともCREATEOLEOBJ関数から始まるCOMオブジェクトにアクセスするパターンだけなら VB系で出来てUWSCで出来ないケースは思いつかないや あるの?
そこが問題じゃなくて、ネット上のサンプルがVB系で載っていることが殆どだから、VB系のほうが初心者に優しい、 ってことでしょ。UWSCで自在にオブジェクト扱える人って、他の言語でマスター済の人がUWSCに応用しているのであって、 UWSCを通して身につけた訳じゃないだろうしね。
出来ましたー 記述の問題だったようです 回答してくださった方々ありがとうございました
http://anago.2ch.net/test/read.cgi/software/1393584975/816 単発処理なので F12 で終わるとか書かれても意味がない。
exec でメモ帳を起動した後に Ctrl + C でコピー操作をしているのがおかしい。
アクティブウィンドウの文字列をコピーした後でメモ帳を起動しないと。
それが正常 (?) に動いた場合、メモ帳側を対象にコピー操作してしまう事になる。
UWSC では小文字でも良いかもしれないけど、一般的に定数 (get_frompoint_win 等) は大文字で。
面倒なのでやっていないけど、本当はループで指定されたウィンドウがアクティブになるのを待ってから次の処理をする。
ここまで言ってなんだけど、この処理に UWSC は向いていないと思う。
これならまだ秀丸マクロとかでファイル処理を含めてやった方がスマートかと。
sleep(1.5) // デバッグ用
id = getid(GET_FROMPOINT_WIN)
sckey(id, VK_CTRL, VK_C)
exec("notepad.exe logfile01.txt")
fid = getid("logfile01.txt - メモ帳")
ifb (status(fid, ST_ACTIVE ))
sckey(fid, VK_CTRL, VK_END)
sendstr (fid, "<#CR>追加<#CR>") //追加とか文字いらなければ先頭に「//」を
sckey(fid, VK_CTRL, VK_V)
sendstr (fid, "<#CR>") // 常識的に考えて最後は改行を入れる
endif
>>692 どうもありがとうございます。あっちの820です。
最初はそういう順番で書いたんですが
自分の環境だとクリップボードが""logfile01.txt - メモ帳"
に上書きされてしまったんです。ん〜なんでなのかわからないんですが・・・
それでいろいろ試してちゃんとコピーできるのあの順になったのです。
ただ皆さん動かないと言ってるので、自分の環境がなんか変なのかも
7xQ+4EbH0さんのでやってもコピーちゃんとできてるので
最初にsleep入れると良かったんですね、きっと
アクティブになるの俟つのはstatusですか
この辺り全然知らなかったんでsleepしてました(汗
動かないと言ってた人はこの辺が原因かもしれないですね
SSDとHDDの違いとかでしょうか。
まあまだまだ自分専用で、人の為に書くのは10年早かったです。
どうもありがとうございました
バッチファイルが一番短くてちょっとふいたw まぁ可読性の低い古代魔法言語だから改変が大変だけど
ブラウザゲーのFlashで固まってしまうのですが何か対処法はありますか?Firefoxを使用しています
PCを買い換える
SLEEP(1) PUBLIC id1 = GETID("電卓", "CalcFrame", -1) PUBLIC id2 = STATUS(id1 , ST_ACTIVE) msgbox(id2) 上のコードが正しく実行されません;; PUBLICを外せば問題ないのですが、作ってるソフト上外せません。 最初からアクティブになっていないと 1 が返らないようです。 これはなぜなのか誰か分からないでしょうか・・・。
>>698 ありがとうございます。
すぐ上に書いてありましたね。
これについては解決したのですが、実行すると暫くループしてからUWSCに問題が発生して落ちてしまいます。
この場合はコードが悪いんですかね
>>695 スレッドを駆使してフリーズを判定し、ブラウザ強制終了によるデッドロック解除を行う。
難しいし安定しないよ。
最近uwscを使い始めました ctrl+wでランチメニューが呼び出せるけど、そのままctrlを押したままだと 1や2を押してもメニューが実行できず、一旦ctrlキーから指を離す必要がある これって何か対応策ないですか?
多分無い 個人的にはUWSCを常駐させるとショートカットをOFFに出来ない仕様の方を何とかして欲しい・・・ 拡張子の関連付けで直接起動できるようにすると便利だよ メニュースクリプトを自前で作成するのも良いかも Windows7の小ネタとして 1.メニュースクリプトを自作して以下の様な感じでショートカットを作成 ”UWSCのインストール先\UWSC.exe” "メニュースクリプト.uws" 2.適当なアイコンを設定してタスクバーにピン止め すると左クリックで普通にスクリプトが実行されてメニューが表示される 右クリックするとWindowsの標準機能でuwsc.exeの「最近使ったもの」が表示されるので結構便利だよ
そこに気づくとはやはり・・
RANDOMを使い、出た数値によって行動を変えるツールを作りました。 0で移動しない、1で左 2で右 3で上 4で下に移動です。 これを設定ファイルから上下移動をオフにしたら、その場、左右行動しかしないようにしたんですがどうすればいいのか思いつきません。 三秒ごとに実行したいので、RANDOMで出た数値を無効化することも出来ません。 誰か良い方法を教えて頂けないでしょうか
>>705 ifb 上下運動しない
continue
endif
ミス ランダム取得 上下運動 = ( 上 or 下 ) ifb !上下運動しない and 上下運動 continue endif ランダム運動 sleep(3) 上下運動にフラグが入るような計算をする。
34がでたら-2するとか…あ、これだとその場の確率が下がるな。
continueで上下が出たのみ、ループの先頭に戻してまたランダムを実行するってことですか?
>>709 そうだよ
最初からランダムで不連続な値は作れない。
値変換テーブルを作る方法もあるし
>>708 もいいし
>>705 に限っては範囲を変更する方法もあるけど
やっぱ
>>708 がシンプルでいいかな。
ただ、何をしてるか分かりにくくなるからコメント必要。
>>707 は何をするかがコード中の変数名、関数名、条件式で書いてあるからコメントなくても分かると思う。
あ、つまり、冗長ってことか。
DIMに変数を入れ、あとから使いたいです DIM A[] =hensuuB,hensuuC for i = 1 to 2 A[i] = 5 next msgbox(hensuuB) msgbox(hensuuC) しかしこれではエラーが出るのですが、このような使い方は出来ないのでしょうか
すいません、質問したものの必要有りませんでした おかしな質問してすいませんでした。
>>711 出来ません
「連想配列」というものがあります。ひょっとすると気に入るかもしれません
こういうものです(UWSCのヘルプからコピペ)
A["あ"] = 1
A["う"] = 3
A["え"] = 4
// "う"の値は何?
print "'う' の値は " + A["う"]
// "え"があれば削除
ifb A["え", HASH_EXISTS]
flg = A["え", HASH_REMOVE] // 必要無くとも変数で受ける
endif
有料版のEXE作成のアイコン変更って、一つのiconファイルしか参照できませんか? サイズによってiconを変えたいのですが・・・・。
1つのiconファイルに複数サイズ格納すればいいだけの話だろ。
>>715 できてないのかと思ったら出来てました。
ありがとうございます
別プロセスのメモリを読み取り、書き込みする方法を教えて下さい
メモリエディタとパケットジェネレート欲しいわ(´・ω・`) チートし放題や
現在UWSCをrubyに移植中なんですが、UWSCのinputをrubyで作る場合ってどうすればいいです? inputは入力ボックスにファイルをドラッグ&ドロップでファイルの位置をコードに変換できるところが素晴らしいんですがrubyは無いのでしょうか
rubyistに聞いてくれよwww
メモ帳を開いている状態でメモ帳内の特定箇所のコピーができるマクロってないでしょうか メモ帳の内容は 入荷100 良品70 不良30 出荷50 という内容でコピーしたい箇所は100や70の数字だけを個別でコピーしたいというものです 現在はメモ帳の位置を固定して座標とSCKEYで無理やりコピーしてるのですが たまに少し座標がずれたりするので、キチンとしたマクロを組みたいと思ってます たとえばTEST.txtというテキストファイルを開いている状態で id = GETID("TEST.txt - メモ帳", "Notepad", -1) STR = GETSTR(id, 1) SENDSTR(0, STR) なら全てをコピーしてくれるのですが、それをCOPY、POSという関数で指定できないのです COPY、POSはプログラム内で書かれた文字列を特定箇所を指定してコピーできるのは確認しましたが GETSTRで取得した内容をCOPY、POSで箇所指定できるようなことができますでしょうか
メモ帳なんかに書かず最初からEXCEL使っとけやwww 正規表現使えるテキストエディタで文字と数値の間にタブ文字入れてEXCELに貼り付けりゃ分離できるよ。
sendstrがいらない
そのTEST.txtをuwscで直接読み込めばいいだけだろ
おっ notepad上だと[ctrl]+[←]の英単語境界ジャンプが使えるじゃん。 対象の行で、[end], [ctrl]+[shift]+[←], [ctrl]+[C], GETSTR(0) はいできたw
ん? コピーしてクリップボードに入ってる文字列 strClip = GETSTR(0) strNum = COPY(strClip , POS(strClip, "1", … ってことがやりたいと思われ。
>>721 正規表現ならテキスト全体から
/出荷([0-9]+)/ とかを検索条件にすると
サブマッチとして数字部分が取れる
色々なご回答ありがとうございます すいませんメモ帳から抜粋した数字をエクセルに張り付ける作業をしていて その数字は常に変化して一時的にメモしてるといったものなのです それをあくまでUWSCでなんとかしたくて・・・ なるほど[end], [ctrl]+[shift]+[←], [ctrl]+[C]は参考になりました GETSTR(0)というのは知識不足でまだわからないですが勉強して strClip = GETSTR(0) strNum = COPY(strClip , POS(strClip, "1", … というようなのを取り入れたマクロでコピーできるよう頑張ってみます
フォーマット弄っていいのか分からんけど、 弄っていいんなら、多分、最初から最後まで全部自動化できるよ。 あなたは不要になる。それがUWSC。
//全部持ってきてから加工したほうが楽じゃないかな? TEXTBLOCK inTxt 入荷100 良品70 不良30 出荷50 ENDTEXTBLOCK oRegExp = CreateOLEObj("VBScript.RegExp") oRegExp.Multiline = true //各行で^$が有効になる oRegExp.Global = true //最初にヒットした後も検索を続ける oRegExp.Pattern = "\d+$" //Multilineがtrueなので各行の末尾の数値にヒットする oMatches = oRegExp.Execute(inTxt) outTxt = "" For i = 0 to oMatches.count - 1 outTxt = outTxt + oMatches.item[i] + "<#CR>" Next outTxt = TRIM(outTxt) //最後の改行を削除 SENDSTR(0, outTxt) //結果をクリップボードに入れるならこんな感じ print outTxt
>>730 UWSCで正規表現を使う場合の事前テストプログラムの雛形にも良いですね〜
UWSCでエクセルをオートフィルターで絞り込んで、その後オートフィルターを解除もしくは(すべて選択)をしたいのですが オートフィルターで絞り込むの方は Dim o_XL = GetActiveOleObj("Excel.Application") // エクセルを立ち上げてから実行して下さい。 Dim t_Col = 1 // 1列目で検索 Dim t_Filter = "1" // 1を含む行を抽出 Dim t_Range = "A1:IV65536" // フィルタの対象範囲 With o_XL.ActiveSheet .AutoFilterMode = FALSE // フィルタ解除 .Range(t_Range).AutoFilter(Field := t_Col, Criteria1 := t_Filter) // フィルタ実行 EndWith または EXCEL = Getactiveoleobj("EXCEL.Application") Excel.Worksheets("Sheet1").Range("A1").AutoFilter(Field:=1, Criteria1:="1") みたいなので見つかったのですが解除もしくは(すべて選択)をするのに EXCEL = Getactiveoleobj("EXCEL.Application") Excel.Worksheets("Sheet1").Range("A1").AutoFilter(Field:=1, Criteria1:="すべて選択") みたいなので試してみたのですが無理でしたので 別にマクロ作って id = GETID("Microsoft Excel", "XLMAIN", -1) id = GETID("", "Net UI Tool Window", -1) CLKITEM(id, "(すべて選択)", CLK_TREEVEW or CLK_LEFTCLK) みたいなのでもオートフィルターの解除ができませんでした EXCEL = Getactiveoleobj("EXCEL.Application") Excel.Worksheets("Sheet1").Range("A1").AutoFilter(Field:=1, Criteria1:="?") でCriteria1:="?"の?にすべて選択するみたいな値があるのでしょうか それともまったく別のアプローチがあるのか教えて頂けないでしょうか よろしくお願いします
俺の手元にはEXCEL2000しかないんだが、 「全て表示」コマンドをマクロ記録してみたら、 ActiveSheet.ShowAllData だったよ。
特定の列だけを対象としたい場合、
列2を値5で絞り込むときは
Selection.AutoFilter Field:=2, Criteria1:="5"
列2だけのフィルタを解除するときは、
Selection.AutoFilter Field:=2
となったよ。
そこで「VBA AutoFilter すべて」などとググると、
こんなページが見つかったよ。
http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_autofilter.html VBAの代わりにUWSCをキーワードにしたら、直ぐには出てこないだろうね。
何度も言われてることだけど、UWSCでやろうとすることで、問題をかえって難しくしてるよ。
特にEXCELに関しては、本当にその部分はUWSCでやるのがベストなのか、
よくよく考えなおしたほうがいいよ。
>>733 教えて頂きありがとうございます
EXCEL = Getactiveoleobj("EXCEL.Application")
Excel.ActiveSheet.Range("A1").AutoFilter(Field:=1, Criteria1:="1")
Msgbox("オートフイルター解除")
Excel.ActiveSheet.ShowAllData
みたいなソースで自分のしたいことはできて助かりました
>>734 VBAは難しい感じがして、ちょっと手が出にくいです
あと加工しているエクセルは随時他のPCからデータができるものでマクロは入ってないので
どうしても外部から動作させようとして手軽UWSCになってしまいます
VBAで外部から動かすような知識を覚えれば使ってみようと思います
別のブックにある標準モジュールから他のブックのシートいじれるよ やりたいことをマクロの記録できるんだから EXCEL VBA のほうが簡単だし、 EXCEL VBA が出来て初めて、それをUWSCで使うことも出来るんだよ UWSCでIEやEXCELにこんな事出来ますって書いてる人って、 当然VBだとかCだとかのプログラミング経験を応用してる訳だからね。
>>736 なんか順番がでたらめな感じでプログラミングしてます
Cはまったく知らないですしVBとVBAの違いとかもわからないです
なのでVBかVBAを使ってることすらわからない現状で・・・
記録の仕方とかはわかるのですがそのままうまく自分の求めるソースになってくれなくて・・・
で手軽なUWSCに嵌ってしまったといういきさつです
最初は低レベ記録でゴリ押しで作業してたのですがさすがにそろそろもうちょっと安定したものを
と思いたって色々と低レベ記録で作ったソースを見直しています
VBAでも何かそういうものに目覚めれば頑張ろうと思います
ポリシーの問題でエクセルにマクロ組み込めないケースもあるかもだし一概に否定はしないけれど (そういった環境でUWSCなら良いのか?って話は割愛) とりあえずエクセルで手動操作をマクロ記録してみるって習慣はあったほうが良いかと参考になるよ
INPUTで 16進数で入力したものを、16進数で計算して出力したいです。 入力したものを16進数と判断する方法はありますか?
すいません、上は出来ました。 しかし今度は最後の一文字を把握して、特定の文字に変換する必要が出ました。 最後の一文字(0〜F) 0の場合は5に変換 2の場合は1に変換、と言ったような形です どうにか方法を伝授して下さい
16進数を10進数に変換するだけならval()を使って出来るわけだけど 実際にどうやって解決したかを書いた方がいいよ 文字変換はhashtblで変換の一覧を作って置き換えれば楽じゃないかな
//16進数をUWSC内蔵表記である$〜でやるなら簡単 inTxt = "$A" print CHKNUM(inTxt) outTxt = VAL(inTxt) print outTxt //実行結果 // True // 10 //もしかしてをの$じゃなくて&H〜とかでやりたいのかな? //それなら最初の文字を内部的に置き換えてからチェックすれば良いんじゃないかな?
16進数を10進数にはvalを使い出来ました。 $で問題はなかったです。 しかし最後の文字を特定して変換する方法がいまだよくわかりません・・・。 hashtblで出来るのでしょうか
//こんな感じだよ HASHTBL changeTbl changeTbl["0"] = 5 changeTbl["2"] = 1 //必要に応じて追加 inTxt = "〜0" lastChar = COPY(inTxt, LENGTH(inTxt)) //最後の文字を抽出 PRINT lastChar PRINT changeTbl[lastChar] //ハッシュテーブルの添字に直接入れる //実行結果 // 0 // 5
>>744 返信ありがとうございます!
しかしこれだと、最後の一文字しか出力されないです。
"132456798AB"と入力した時、Bを例えば5などに変換して "13245678A5" と出力して欲しいです・・・。
また、16進数だと判断する $ を数字へ付け加える方法が知りたいです・・・。
流石に応用力つけろ
>>745 あなたのような質問の仕方は典型的に嫌われるよ。
仕様の後出し(自分自身が仕様を把握しきれてない場合も含む)
>>745 丸投げは良くないね
とりあえず中途半端でもいいから自分で作ったものを持ってきてみてよ
>>747 すいません、きちんと質問内容を書き込めていませんでした・・・。
以後気をつけます
>>748 data = input("16進数を入力")
data = val("$"+ data) //10進数に変換
//行いたい計算
//16進数で計算出来ると一番良いがやり方がわからないため10進数で行う
data = data + 2896 //+$B50
data = Format(data, , -1 ) //16進数へ戻す
//最後の文字のみhashtblで変換
//やり方が分からない
textblock a
HASHTBL changeTbl
changeTbl["0"] = 5
changeTbl["2"] = 1
changeTbl["C"] = 9 //必要に応じて追加
lastChar = COPY(data, LENGTH(data)) //最後の文字を抽出
endtextblock
msgbox(data)
一応こんな感じなのですが、
例えば123456ABCと入力したらCをchangetblによって判断した数値に変え、123456AB9にしたいです
一文字抽出→一文字置換→一文字出力 ならば 全文字一つずつ抽出→全文字全文字一つずつ置換→連結して全文字出力 だろ
data = val("$"+ data) //10進数に変換 ↑この行が書けるって事は文字列の連結が理解できている筈 lastChar = COPY(data, LENGTH(data)) //最後の文字を抽出 ↑昨日のこの行が理解できたら文字列の分解が分かる筈 では、最後の文字以外を抽出した結果とハッシュテーブルの添字に直接入れた結果を連結するにはどうしたらいいだろうか? ヒント 戻値 = COPY( 文字列, 開始位置, [コピー文字数] ) ←コピー文字数の方に注目だ 戻値 = LENGTH( 文字列 ) ←この値を少し修正すると使えそうだね 戻値 = ハッシュ配列[添字] ←ハッシュ配列に入れるのを文字列にしたら連結が楽だね
//データ型をしっかり意識して区別、異なるデータに一つの変数を使いまわさないようにする //プリフィックスとして文字列型の変数はstr、数値はnumを頭につけてみる strInputData = input("16進数を入力") numData = val("$"+ strInputData) //数値に変換 numData = numData + $B50 strOutputData = "$" + Format(numData , , -1 )
>>751 出来ました!
答えを教えてくれたほうが簡単なはずなのに、ヒントを出して下さってありがとうございます。
これで少しは自分が成長出来たような気がします。
>>752 こうすると分かりやすくて良いんですね!
今後やっていきたいと思います。
不格好ですが、完成品を載せておきます。
もっと良くなる点などがあれば今後の参考のために教えてもらえると嬉しいです。
inputdata = input("16進数を入力")
//16進数で計算出来ると一番良いがやり方がわからないため10進数で行う
inputdata = val("$"+ inputdata) //10進数に変換
inputdata = inputdata + 2896 //+$B50 //行いたい計算
inputdata = Format(inputdata, , -1 ) //16進数へ戻す
fastchar = COPY(inputdata,0,LENGTH(inputdata)-1) //最後の文字以外を抽出
lastChar = COPY(inputdata, LENGTH(inputdata)) //最後の文字を抽出
lastchar = val("$" + lastchar) //10進数に変換
//hashtblで最後の文字を変換
dim hairetsu1[]="0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"
dim hairetsu2[]="1","2","5","9","7","A","F","D","B","0","3","4","6","C","8","E"
HASHTBL changeTbl
changeTbl[hairetsu1[lastchar]] = hairetsu2[lastchar]
lastchar = format(lastchar , , -1) //16進数に戻す
outputdata = fastchar + "" + changetbl[lastchar] //""で文字列にする
msgbox(outputdata)
行数が制限されてるため、見辛いですがご容赦下さい
スレの皆様には多大な迷惑をかけ、申し訳ありませんでした。
答えてくださった方々、ありがとうとうござました。
とりあえず完成おめ 先ずは動けが正解なのです ただ一つ lastchar = val("$" + lastchar) //10進数に変換 これを使って hairetsu2[lastchar] でアクセスしている時点で変換完了しているので この方法だと HASHTBL changeTbl changeTbl[hairetsu1[lastchar]] = hairetsu2[lastchar] lastchar = format(lastchar , , -1) //16進数に戻す outputdata = fastchar + "" + changetbl[lastchar] //""で文字列にする は不要ですよ outputdata = fastchar + hairetsu2[lastchar] でおkな筈
>>754 おお、使ったことない機能(HASHTBL)だったので混乱してましたが、こう見ると必要ありませんでしたね・・・。
この通りにしたら問題なく動きました!ありがとうございます
あとは
>>752 さんが書いてくださった16進数のままでの計算も試してみます!
>>755 $B50は文字じゃなくて数値。直接足せる。
Formatの戻り値は文字列。足したら文字列連結になる。
UWSCは型を曖昧に扱えるから、
同じ変数に数値を入れたり文字列を入れたりできるが、
プログラミングの作法としては非常に悪い。
作法が悪いというのはバグの温床になるということ。
文字列連結しようとしたら加算結果の数値になっていたり、
逆に足し算しようとしたら文字列連結になってしまったり、
複雑になってくると、そういうバグが起こり得る。
やめといたほうがいいよ。
>>756 >同じ変数に数値を入れたり文字列を入れたりできるが、
perl,javascriptとかのスクリプト言語はだいたい同じ変数に入れることが可能
UWSCガ特別ゆるいわけではない
そのようですね。主流スクリプト言語は殆ど全部ないですね。 ただ、言い方の問題で、変数に型はないけど値にはあるんですね。 UWSCにもVARTYPEという関数があり、単純に数えるだけでも20種類の型があるようですね。 こういうところ、いかにもプログラミング初心者に他言語勧めたくなります。 想定外の型の値が入った場合にバグになる場合は多いので、これらの型を意識し、 変数名で区別するなどの工夫で可読性を上げるべきでしょう。 上記の質問では、質問者が数値と16進表記文字列とを区別できず混乱していますね。 役割が全く違う複数の値に同じ変数を使いまわすことで得られるメリットは実に僅か。 それより、冗長にならない範囲で贅沢に複数の変数を使い、 型や意味のわかる適切な名前をつけることで、コードの可読性を上げるべきでしょう。
言語仕様として許されているのだから絶対ではないが 無料版だとデバッガがないからトラブルの原因になるよねって話だけなら同意 最終的には好きにしたらいいのさ
変数名に型名をつけるコーディングスタイルは嫌い
文字列経由せず出来ますね
// 0 1 2 3 4 5 6 7 8 9 A B C D E F
dim numArrayLastNumChange[] = $1, $2, $5, $9, $7, $A, $F, $D, $B, $0, $3, $4, $6, $C, $8, $E
try
numInput = val("$" + input("16進数を入力"))
except
msgBox("16進数を入力してください($は不要)")
exit
endtry
numCalc = numInput + $B50
print "numCalc = " + format(numCalc,,-1)
lastNum = numCalc AND $F
print "lastNum = " + format(lastNum,,-1)
lantNumChanged = numArrayLastNumChange[lastNum]
print "lantNumChanged = " + format(lantNumChanged,,-1)
numOutput = numCalc - lastNum + lantNumChanged
print "numOutput = " + format(numOutput,,-1)
>>760 デメリット私も調べましたが仕様変更で型が変わった時に変数名全書き換えになりますねw
組込みなんかで低レベルの実装する分には型名付けてもいいと思いますし、
ゆるい型名(文字か数字か日付か程度)はいいと思いますけどね
lantはlastの書き間違い
これさー 非アクティブウィンドウにエンター押すとかの命令はできるけど ウィンドウの指定の位置をクリックは一度アクティブにしないと無理だよね?
エンターが送れるウィンドウなら指定座標クリックも送れるだろ
クリックしたって情報は送れるが 裏のウィンドウの指定座標をクリックは無理だろ
無理なわけないだろw 何言ってんだ?
すまん 単に非アクティブならって話だったな ウィンドウ重なってる時に裏のウィンドウアクティブにしないで 指定座標クリックさせんのかと思ったわ
非アクティブでウィンドウが他のウィンドウに隠れてても指定座標クリックできるだろ xpでも使ってんのか?
クリックするとアクティブになっちゃうことあったけど あれはソフトウェアの問題だったなぁ
BTN命令にウィンドウID指定項がないけど別の使うの?
MOUSEORG ※ 以降のMMV()、BTN()、PEEKCOLOR()、CHKIMG()関数の座標を指定ウィンドウを基準にしたものにする ※ 基準指定にて MORG_DIRECTが指定された場合は KBD()、MMV()、BTN()関数の情報は直接ウィンドウ(オブジェクト)へ送る mouseorg使うのなんて基本中の基本だろ? 隠れてるウィンドウにchkimgしてクリックできるぞ
>>772 ようわからんが俺が無知だっただけのようだ すまんな
ありがとう
>>763 もお礼言っとけよ
実はuwscではつい最近の実装だから割と知られてないのも無理は無い よね?
>>772 chkimgって何か意味あんの?
指定座標クリックするだけなら
一度MOUSEORGすりゃ裏のウィンドウが基準になるんなら単に
BTN(LEFT,0,100,100)とかでいいんでねーの?
隠れてるウインドウのchkimg出来ることと、それに応じてクリック出来るのが重要なんじゃないの
裏でクリックって電卓だとできるんだけど ブラウザだと何故かなんねーんだよな 俺も諦めてる
それは対象アプリ側の問題 ブラウザはスクリプトをリモートで実行して何かを勝手にインストールされないように対策されているアプリ筆頭です
ブラウザはウィンドウ内の処理も特殊なんじゃないかね
そのブラウザのタブのIDじゃなくてウィンドウのIDを指定しちゃってるんじゃ?
>>780 それだ
タブのIDとか指定できるのかよ
要はクライアント領域ってやつか
サイトに複数のIDで同時に入って操作したい。 今はIEとchromeを使い分けたり 仮想PCでやったりしてるんだが、 これをIEだけで実現することってできる?
ブラウザがクッキーを一元管理してる限り出来ないんじゃないかねえ UAの切り替えはあってもクッキー切り替え拡張とか聞いたこと無いしな
いや、検索してみたらあるっぽいな→クッキー切り替え それをUWSで活用できるかどうかは知らん
まじか Aでログイン → 動作 → ログアウト → Bで同様の操作 をループするしかないと思ってたんだが
sandboxie で隔離した環境なら、クッキーも別管理。
SP+メーカーのチェック状態を切り替えるスクリプト作った。
ttp://toro.2ch.net/test/read.cgi/win/1286780370/189 ダイヤログの表示を監視するのって案外反応鈍いな。
回数が少なければいいけど、100回くらい監視するのに毎回何秒も待ってられないんで
ダイヤログが表示された場合とされない場合のフォーカスのズレを利用して
ダイヤログが表示されたかどうかを判断した。
録画でリストのチェック状態を拾ってくれなかったんだけど
それを TAB 移動とスペースキーでやることにしたんで上記の方法を簡単に導入できた。
これで株取引の自動化してる猛者はいないの?
わざわざGUI通して操作してたら大手の超高速株取引アルゴリズムに反応すら出来んだろう
>>791 取引所の建物内にサーバー設置する有料サービスある世界だし
トレードソフトでウィンドウの操作がブロックされてるものって 結構あるのかね? どうもうまくいかなくてさ。
>>793 普通セキュリティくらいはかかってるだろ。
キーとマウスをエミュすれば回避できるんだから UWSC で操作できないって事はない。
ただ、遅いから方法はよく考えないと無駄に終わる。
795 :
793 :2014/05/09(金) 15:36:06.25 ID:zh3kBh0j0
>>794 ウィンドウ右クリックでコンテキストメニューを表示させるまではマウスの
エミュでできたんだけど、メニュー選択の為のクリックが反応しないんだよな・・。
テキストボックスにフォーカスするためのクリックも反応なし。
なぜ??
>>795 メニューは無名の子ウィンドウだったり枠ごとに別のウィンドウだったりだからめんどくさい。
メニュー項目に対応したキーが定義されているなら、メニュー表示操作をしたらキーで操作が簡単。
テキストボックスに無反応か。
時々あるよね。
UWSC の実行アカウントが操作対象のアプリから弾かれてるとか。
797 :
793 :2014/05/09(金) 18:09:14.69 ID:zh3kBh0j0
>>796 メニューのID掴んでアイテム名取得を試みたけど何も取得できなかったし
キーの操作も完全ブロックな感じ。
自分の知識と技術ではここで詰みですわ・・・。
アドバイスありがとう。
WindowsFormsアプリじゃなくてWPFアプリなんじゃないの? UWSCだと操作し難かったはず
バックグラウンド操作とFUKIDASI機能って一緒に使うのは難しいですか?
>>799 FUKIDASI 画面が邪魔にならなければ相性いいよ
DIM str[] = "おはよう", "こんにちは", "こんばんは" i = RANDOM(Length(str)) IESETDATA (IE, str[i],"メッセージ") 上記のコードでランダムに挨拶をieに送りたいのですが 挨拶ではなく012と要素数を送ってしまいます なんとか挨拶を送る方法はないものでしょうか
>>801 挨拶送ってるけど
これ以外の部分で何かおかしいんじゃないの?
803 :
名無しさん@お腹いっぱい。 :2014/05/11(日) 11:30:06.21 ID:yXK7kEq90
VMware PlayerでKBD関数をバックグラウンドで動かしたいんですが、GETIDもアクティブでないと動かないのは何故でしょう?
2014/05/12 UWSC Ver5.0.0、 Pro版と Free版をリリースしました。
あら、このバージョンから強制的にAppDataフォルダにINIとLogを保存する使用になったんだね 勝手に移動してた それ自体は別に良いがログは移動せずに勝手に消すのかよw 本体ログに残してた自分が悪いのかもしれないが ならprint文のデフォルトの出力先が其処にするなよって話です
print文組込みのログに頼らず独自ログにしてて正解だったようだな
>>689 > 配列の要素数分ループする FOR In 構文を付けた
だが断る(バグ恐れて様子見)
数日前からchromeにmouseorgでクリック情報を直接送ってクリックする度に、ウィンドウがアクティブになるようになってしまった 俺だけ?
[Ver5.0.0] センサー情報を返す SENSOR関数を付けた よくわからんけどすごそうだな UWSCがセキュリティや軍事目的で使われる日は遠くないかもしれん 戻値 = SENSOR( 取得項目 ) 引数 取得項目: 以下の定数 SNSR_Biometric_HumanPresense // 人が存在した場合に True SNSR_Biometric_HumanProximity // 人との距離(メートル) SNSR_Electrical_Capacitance // 静電容量(ファラド) SNSR_Electrical_Resistance // 電気抵抗(オーム) SNSR_Electrical_Inductance // 誘導係数(ヘンリー) SNSR_Electrical_Current // 電流(アンペア) SNSR_Electrical_Voltage // 電圧(ボルト) SNSR_Electrical_Power // 電力(ワット) SNSR_Environmental_Temperature // 気温(セ氏) SNSR_Environmental_Pressure // 気圧(バール) SNSR_Environmental_Humidity // 湿度(パーセンテージ) SNSR_Environmental_WindDirection // 風向(度数) SNSR_Environmental_WindSpeed // 風速(メートル毎秒) SNSR_Light_Lux // 照度(ルクス) SNSR_Light_Temperature // 光色温度(ケルビン) SNSR_Mechanical_Force // 力(ニュートン) SNSR_Mechanical_AbsPressure // 絶対圧(パスカル) SNSR_Mechanical_GaugePressure // ゲージ圧(パスカル) SNSR_Mechanical_Weight // 重量(キログラム) SNSR_Motion_AccelerationX, Y, Z // X/Y/Z軸 加速度(ガル) SNSR_Motion_AngleAccelX, Y, Z // X/Y/Z軸 角加速度(度毎秒毎秒) … 戻値 取得したセンサー値
Windowsに標準で付いてるセンサーAPI叩いでるだけやろ
こうなってくるとPC外の物も自動化したくなってくるな 無線LANで動くロボットとかをPCから操作できたら面白そう
IOボード付けたら 20年前級のPLC+モニタくらいの自動機制御は出来るんだろうか
物理デバイス操作となれば無限に夢が広がるね。 アイデア次第でビジネスにもなりそうだし。 目玉焼き作成用のUWSファイルが配布される可能も?
目玉焼き用って落としたUWS使って火事とかになったら大変やなw
>>815 IHヒーター専用とかなんか面倒くさくなりそうな予感
んなあほな ロボットなどの組込みを WindowsのGUI通して自動操作するとかありえんだろ 1ビットのI/O叩くのにどんだけ手間かかるんだ 最新のPLCがどんだけ高性能化したか… μ秒単位のタイマー使ってパルス制御とかUWSCでありえんだろ 簡単にデッドロックで止まりまくるのに
誰がいつ最新PLCと比較したんだ?
20年前はWindowsをサーバー用途とかwwwwwだったから 今から20年後にはWindowsロボットだらけになってるかもね
誰がいつ20年前のWindowsの話してんだ?
同じ動作繰り返してるんだけど約20分おきに、 「UWSCは動作を停止しました。問題が発生したためプログラムが正しく動作しなくなりました」 って表示されて中断されるんだけどどうやったら解決できる? あんまり詳しくないんで具体的に教えてくれるとありがたいっす。
なら19分経ったら 停止して再読み込みして再スタートさせるようにすれば? つか20分でPCの電源管理とかモニタ制御とか掛かってんじゃねーの?
関数を延々とコールし続けててるとか? 何にしろソースくらい晒さないと
>>822 レスありがとう。
停止して再スタートできるようになればベストですね
例みたいなものがあればおしえてください。
>>823 コールを続けると停止するんですか、知らなかったですorz
たぶんそれが原因かなぁ。。
ソースは座標ばっかりなので見る価値ないですw
見る価値があるなしじゃない
20分きっちりってことは スクリーンセーバーが起動して画像認識に失敗してるとかじゃない 外部DLLとか使ってるとアクセス違反は簡単に起きる
価値とかじゃなく原因特定のためには情報が必要って話
乱数の結果を出力させる時に横並びにしたいんですが for i = 1 to 5 print random(5) next ↑こうやると 1 3 2 1 2 みたいに縦並びになってしまうので print random(5)+""+random(5)+""+random(5)+""+random(5)+""+random(5) として横並びにしてるんですがスマートな方法ありませぬか
スマートの定義は人それぞれ 必要な乱数の個数が固定であれば別にそれでいいと思うよ 様々なケースに耐えられる関数を用意しようと 引数とその判定部分を追加して関数化しても 使わなければ死にコードになってしまう 必要になった時に必要なコードを作るのが吉
表示文字列 = "" for i = 1 to 5 表示文字列 = 表示文字列+random(5)+"" next print 表示文字列
831 :
828 :2014/05/17(土) 08:32:16.70 ID:x6XHI1VP0
>>830 なるほどこういう風にできるのですね
ありがとうございました
msg="testScrollMsg.uws"; print msg; lid=getid(GET_LOGPRINT_WIN); mx=STATUS(lid,ST_X)+STATUS(lid,ST_WIDTH)/2; my=STATUS(lid,ST_Y) for i=0 to 9 ml="" for j=0 to 9 if j then ml=ml+", " rdm=random(5); ml=ml+rdm; FUKIDASI(msg+"<#CR>"+ml,mx,my,3,,,,,85); sleep(rdm/10) next msg=scrollMsg(ml,msg,4,true,mx,my,true) next FUNCTION scrollMsg(lPostMsg, lBaseMsg, lMaxLines, lDoFukidasi=FALSE, lFPosX=0, lFPosY=0, lDoPrint=FALSE) lCr = "<#CR>"; IF lBaseMsg = "" THEN lCr = "" RESULT = limitMsgLines(lBaseMsg + lCr + lPostMsg, lMaxLines) IF lDoFukidasi THEN FUKIDASI(RESULT, lFPosX, lFPosY) IF lDoPrint THEN PRINT lPostMsg FEND FUNCTION limitMsgLines(lMsg, lMaxLines) RESULT = lMsg; lCurLines = countString("<#CR>", lMsg) + 1 IFB lCurLines > lMaxLines THEN RESULT = COPY(lMsg, POS("<#CR>", lMsg, lCurLines - lMaxLines) + 2) ENDIF FEND FUNCTION countString(lTargetStr, lSourceStr) RESULT = 0; lCnt = 0; lCurPos = 0; lWorkStr = lSourceStr FOR lI=1 TO LENGTH(lSourceStr) lCurPos = POS(lTargetStr, lWorkStr) IF lCurPos<1 THEN BREAK lCnt = lCnt + 1; lWorkStr = COPY(lWorkStr, lCurPos + LENGTH(lTargetStr)) NEXT RESULT = lCnt FEND
本家が落ちてるのでこっちで先に聞ききます Pro版フォームのフォーム上で右クリックメニューを使いたい。 思いつくのはpopupmenuを使う方法だけど、「選択文字列をコピー」な事は難しいかと思う。 IEコンポーネント関連で何かゴニョゴニョすることで右クリックメニューをカスタム出来ないだろうか
UWSCでフォルダー内にあるcsvファイルをアスタリスクを使って開きたいのですが無理でしょうか そのcsvのファイル名に日付を入れないといけないのでUWSCで開くためにはソースを変更しないといけないんです たとえば id = GETID("Program Manager", "Progman", -1) SLEEP(0.1) CLKITEM(id, "書類データ", CLK_LSTVEW or CLK_LEFTCLK) SLEEP(0.1) id = GETID("書類データ", "CabinetWClass", -1) SLEEP(0.1) CLKITEM(id, "書類*.csv", CLK_LSTVEW or CLK_DBLCLK) //書類1405023.csvなら開くことができます みたいなアスタリスクを使って開けるようなことはできないでしょうか 上記のソースでは開くことはできなかったので、よろしくお願いします。
ヘルプの例より抜粋 // *.datファイル名のみ表示 for i=0 to GETDIR("C:\temp","*.dat")-1 print GETDIR_FILES[i] next
>>835 >>834 です
詳しく教えて頂きありがとうございます。
ヘルプも見たのですがFOPEN関数ばかりに目がいってました。
あとfor i〜nextの使い方も決まった回数を動作させる時しか使ってなかったのですが、こういう使い方もあるのはとても参考になりました。
さっそく明日、使える所はソースを手直しして試してみます。
このツール使い始めたばかりなんだけど RTPVXとかのフリーゲームで仮想KEYでVK_UPとかVK_Zとか入れて使ってみたんだけど あんま反応しなかったりするのは相性悪いとかあるのかな? マウスレコーダーで記録したのはかなり正確に反応してくれる 裏マクロ使いたいから色々試してみたんだけど、mouseorg入れるとまったく反応しなくなるのも訳わからん ブラウザも裏マクロ反応してくれないし誰か助けてほしい、↓ブラウザで画像認識でクリックっていうの試しに作ってみたやつ While !(getkeystate(VK_RSHIFT)) sleep(0.1) wend id=getid(get_active_win) mouseorg(id,2) while true ifb chkimg("検索.bmp",0) btn(left,0,g_img_x,g_img_y) sleep(0) endif if GETKEYSTATE(VK_ESC) then exit wend
バックグラウンドのマクロはVMWareとかでやってるな
840 :
snatch :2014/05/26(月) 21:28:35.41 ID:qcYLKJrL0
バイナリーオプションの自動売買システムを作りたいと思っております。
しかし、IE上の選択ボックスの値が有効になりません。
アドバイス頂けないでしょうか。
【やりたいこと】
http://jp.demo.highlow.net/のページを自動で操作したいです 。
しかし、通貨選択がうまくいきません。
UWSCにて以下のコードを書いたのですが、
画面上はAUDJPYが選択されているのですが、情報が更新されません。
どうしたらいいでしょうか。
iobj=ie.document.getElementByID("assets")
iobj.Value="AUDJPY"
for i = 0 to iobj.length() -1
if iobj.options(i).value ="AUDJPY" then iobj.options(i).selected = true
next
iobj.FireEvent("onChange")
宜しくお願いします。
842 :
snatch :2014/05/26(月) 22:26:27.46 ID:qcYLKJrL0
841さん 申し訳ありませんでした。 どこかで回答頂けるだろうと安易に考えていましたが、マナー違反だったんですね。。 すみません、今後気をつけます。
>>840 のページ見てるけど
IE11で見ると <span id="asset" ってのがあるけど
Chrome で見ると <select id="assets"> ってなってる。
それが原因か分からないけど
iobj=ie.document.getElementByID("assets")
で、エラーになったりならなかったり。
さっぱり分からない。
845 :
snatch :2014/05/26(月) 22:51:28.39 ID:qcYLKJrL0
マルチポストしていた板での質問を取り下げました。大変失礼しました。
846 :
snatch :2014/05/26(月) 23:04:20.29 ID:qcYLKJrL0
ページに特殊なセキュリティでもかけてられているんですかね。
>>847 少なくともchrome 35では無理だねぇ
ありがとうございました
クロムの昔のバージョンを落としたいのにどこも無理で困ってるわ
こんなツールで自動売買とか危険過ぎる……
開発環境って何か工夫してます? エディタでキーワードの色を変える程度しかやってなくて、 正直効率が悪すぎるなあと思ってるんですが
それに加えて 編集中のスクリプトファイルを保存後の実行するボタンとショートカット UWSCのヘルプを表示するボタンとショートカットを設定している位だねぇ
A0 = 1 A1 = 1 A2 = 1 A3 = 1 //〜A20 くらいまで実際はあります for B = 0 TO 3 結合 = "A" + B ifb 結合 > B //ここでA0,A1,A2,A3それぞれの変数の値について調べたい print 結合 + "は"+ B + "よりも大きい" endif next //[A+数字が順番に割り振られている変数]を条件式に一度に掛けられる方法ってありますか? if分を全部書けば一応解決しますが、実際には変数がA20くらいまであって、さらにそれが何種類かあるので簡単に書きたいです。 print の結果は以下でした。[結合]はそもそも変数といて認識されていないっぽい… A0は0よりも大きい A1は1よりも大きい A2は2よりも大きい A3は3よりも大きい
普通は配列を使います
>>856 A[3]
for B = 0 TO 3
if A[B] > 0
print A
endif
next
これで試したらいけそうです。ありがとうございました!!
>>855 プログラム歴2ヶ月のおれですら配列使えよ!って突っ込みそうになったぞw
IEで複数のセッションって、開始はできるけど維持はできないんだな nomargeとInPrivateを知って試してみたがあくまで「セッションを引き継がないで起動する」だけだった IE1でAというユーザでログイン、別セッションでIE2でBというユーザでログイン後 IE1で画面遷移したらBのログイン状態だった。 並列で別々のユーザ操作ってやっぱりできないか…ぬかよろだぜ
仮想マシンでええんじゃね
別々のprofileのfirefoxを三つ起動させているとして それぞれに同じ指示(F5で更新させるなど)を出したいのですが タイトル、クラスがMozilla Firefoxで被っていて一つのブラウザしか動作させることができません。 For i = 0 to GETALLWIN()-1 からどう記述すればいいのでしょうか? 出だしからつまづいています。
ヘルプでGETALLWIN()の例を見て タイトルにFirefox含まれてたら「指示」してやればいいんじゃない?
dim cnt=0, num=2, ID_FIREFOX[num] for i=0 to GETALLWIN()-1 IF POS("Mozilla Firefox",STATUS(ALL_WIN_ID[i], ST_TITLE))>0 ID_FIREFOX[cnt] = ALL_WIN_ID[i] cnt = cnt+1 endif next for i=0 to num SCKEY(ID_FIREFOX[i],VK_F5) next ※テストはしてない
array.pushほしいよねw
前から指摘されてることだが、公式掲示板のシステムが使いづらいと思う 投稿文字にhttpがあると勝手にリンクされるならまだしも スクリプトソース貼った時に<とか>とか特殊文字が勝手にHTML変換されてしまうから 投稿前や投稿後に<を<にしたりhttpをhを全角にしたり、投稿者が修正しなきゃいけないってなんだかなぁ。 個別スレのアクセスURLブクマしたい時もアクセス方式がPOSTだから、GETでURL繋げなきゃならんし board.cgi?id=umiumi&resno=●● その他もろもろ不便なところが多数 やり取りの質が高いだけに惜しい
>>864 System.Collections.ArrayList
CREATEOLEOBJしてUWSC配列をコレクションに転写する自作関数で転写して使うのかな でもだったら要素を連結する自作関数作ったほうが手間が少ない気がするなぁ
前から趣味の効率化でちょくちょく目当てのもの作ってたんだけど この前友人に、こんなの作ってくれ。と言われて、たいした物じゃないから作った その友人から「これって使用言語何?」 と聞かれて答えに窮してしまった スクリプト言語と答えておけばOKですか?
本買おうかなって思ってるんですが内容薄い予感がするんですけどその辺はどうでしょうか? 本を買った方で買ってよかったと思う方はいますか?
友人から聞かれたなら正直にこれ使って作ったって言えばいいんじゃないか、別に金取ったわけじゃないんでしょw
「マクロ」って言うと大抵「へー」って納得する
Windowsサーバー上で動かしたい。 サーバーにログインしてるときはスケジュール通りに動くんだけど、切断するとスケジュールが動かないんです。 Windowsサーバーでは動かすのは無理なんですかね?
非ログインで動作するプログラムはサービス化しないと駄目 普通のプログラムをサービス化するプログラムってのも存在するよ でもスケジュールってのが単純なら Windowsのタスク スケジューラに登録する方が楽かもしれない 但し、どっちにしてもそうやって動作したUWSCスクリプトでは ログイン中の画面コントロールにはアクセス出来ない スクリプトそのものがサービスで動作可能なタイプなのかてのが重要
>>873 やめたほうがいいよ
UWSCのサポートOSにないサーバOS上で動かすと、
その時は動いてもバージョンアップしたらある日突然
今まで普通に使えてたHELPに載ってる普通の関数や制御文が
Syntax error
作者さんが動作確認環境もってないらしい……( ゚д゚)ポカーン
例えば今のところまだXPは使えてるけど、
まだ延長サポートは終了していない Windows Server 2003 は
2013年初旬にアウトになってる。
スクリプト書くのも初めてで、かなり初歩的な質問で悪いんだけど ウィンドウのとある座標の色を読み取るのに a = peekcolor(100,100) とかってとこまではわかったんだ で、この変数aを条件の判定に使ってるんだけど この変数をスクリプト中で常に更新させたい時はどうすればいいのかな? 変数aで条件判定したりするのにいちいちa = peekcolor(100,100)って一行を入れるのがめんどうでさ
別スレッドで一定時間ごとにpeekcolor使う ただ、俺なら必要になる度にpeekcolor書く 毎回必要になるpeekcolorを含んだひとまとめの処理が 関数として切り出せないかも考え直してみるべき
>>877 スレッドとか自作関数とやらの存在を今初めて知ったよ
サンクス これほんっと便利だな
文字数多いのが面倒ってだけならp()みたいな関数書くかもw
IF peekcolor(100,100) THEN FUKIDASI("!")
変数aを判定以外でも使ったり、aを取得した時点での過去の情報が必要なら、変数aは要る。
そうじゃないなら変数aに一旦代入すること自体が無駄。
>>879 が正解。
別スレッドで回した場合、
・判定時点の最新の情報であることが保証されない
・判定結果を広域変数でやりとりしなければならない
・別途、スレッドを止めたり何なりする処理を書かないと、必要なくとも永遠に判定し続けるゾンビスレッドになる
・うまく書けば都度判定よりはCPU負荷を軽減できるかもしれない
YahooメールをIE.document.body.innerhtmlで件名やら取得して色々やってたのにできなくなった 件名、差出人と開いた後に本文も取得したいんだけど誰かいいアイデア教えろください
popのメーラ使うわけにはいかんのか
>>879 言わなくてもわかってそうだけど
書くより読むほうが大切だから
縮めるためだけのオレオレ糖衣はあまりオススメしないなあ
定形部分を省略するための糖衣+適切な関数名なら良くやるよ pはaに対する返しでしょうなw
>>880 とりあえず自作関数で色取得、判定、その後の処理をひとまとめにしてみたら
だいぶスッキリしたよ
色の変数aは判定にしか使わないけど、一旦代入する事が無駄ってのと
「IF peekcolor(100,100) THEN FUKIDASI("!")」 の一行はどういう意味なの?
値を変数に入れるなら、入れた時点での値を再利用しないと入れた意義がないでしょ?
ところが色判定は、つねに最新の情報が欲しい。
前回取得と今回取得との間にaを2回以上参照するのでなければ再利用とは言わない。
でも2回め以降に参照しても最新の値ではない。
>>880 の書き方をすればaという変数が不要になる。
変数が少なければ複雑さが減ってシンプルになりバグが発生しにくくなる。
ただし、その色判定が例えば「処理Aの結果Bになった」ことを判定するものだとする。
変数名aの代わりに,、
処理Aの結果はB = peekcolor(100,100)
IF 処理Aの結果はB THEN FUKIDASI("!")
と書くなら、下手なコメントよりよっぽど有意義。
最悪なのはaなどという名前として無意味な暗号を使うこと。
暗号使うぐらいなら
IF peekcolor(100,100) THEN FUKIDASI("!")
のほうがマシだよね。
>>886 う、うあぁあ・・・やっと意味がわかった
「ここの色は赤だとaに代入します→もしaが赤ならクリックします」
ってのを
「もしここの色が赤ならクリックします」
って事か
変数使うのにこれっぽっちも疑問を抱いてなかったから
1回こっきりの判定でも毎回変数使ってたわ。この辺がセンスの違いって奴なのか・・・
勉強になったよ ありがとう
今はリソースよりも可読性を優先なんで 長い場合にはあえて変数使って分ける場合もあるよね
血バケツ?
yahooメールがバージョンアップしたせいで自動化できなくなったよ。 フォルダは開けるんだけど、メールが開けない…。
色々めんどくさくなったからGメールに乗り換えたな俺は
あちこちからコピペしまくって 「"読み,用語,意味"のCSVファイルを読み取り、一語ずつ デスクトップの隅に表示させるスクリプト」を書きました。 最初はいいのですが、何百回と表示させていると Fukidasi×3の表示されるタイミングが次第にずれてしまいます。 どうすればいいか教えてください。↓こういうのを書きました。 Thread 用語() Thread 意味() For i = 1 to 行数 読み = リスト[i][1] // 1列目、読み FUKIDASI(読み,0,787,0,20,,,$FFFFFF) Sleep(2) FUKIDASI() next procedure 用語() For i = 1 to 行数 用語 = リスト[i][2] // 2列目、用語 FUKIDASI(用語,0,833,0,100,"MS 明朝",,$FFFFFF) Sleep(2) FUKIDASI() next Fend procedure 意味()
メインスレッドと別スレッドで添字を別管理しているからズレるんだよ 単純な方法で同期させたいなら添字をグローバル変数にしてしまうのが一番楽だと思うよ で、添字のカウントアップはメインループに限定してスレッドの方はそれを参照するだけにする
そもそもスレッド必要か?これ
複数のフキダシ表示させたいだけかな? でも縦に並べてるから"<#CR>"で複数行表示すれば 1つのフキダシで妥協できるんじゃね? どうしても複数表示したいなら、 引数をそのままFUKIDASIに丸投げして 純粋にフキダシを表示する「だけ」の関数を作って、 追加で表示秒数を受け取り経過後自動終了するようにし、 それをスレッドで呼び出しゃいいよねぇ そうすりゃ行数ループは1個だけで済むだろ。
>>893-895 ありがとうございます!なにぶんコピペ改変で作ったもので…。
フォントサイズを変えたいのでFUKIDASIを複数表示しています。
アドバイス通りに修正できているでしょうか?300語テストした結果は
大丈夫そうでしたが、2000語以上表示させたいので
おかしなところがあれば教えていただけると嬉しいです。
For i = 1 to 行数 // 行数分
読み = リスト[i][1] // 1列目、読み
用語 = リスト[i][2] // 2列目、用語
意味 = リスト[i][3] // 3列目、意味
Thread cre_fuki(用語,833,100,"MS 明朝")
Thread cre_fuki(意味,985,20,"MS ゴシック")
cre_fuki(読み,787,20,"MS ゴシック")
Sleep(時間)
FUKIDASI()
next
procedure cre_fuki(msg,y,size,ff)
FUKIDASI(msg,0,y,0,size,ff,,$FFFFFF)
Sleep(時間)
FUKIDASI()
Fend
時間も引数に追加すれば汎用性高まるよ そうしておいてフキダシ消滅と全く同じタイミングで次のフキダシを生成せず、 ちょっとだけ消滅を早めたほうが気持ちいいかもしれない
そういえば低スペックのPCだと、 スレッド生成の負荷による遅延が無視できないほどデカイ場合があった。 2000語表示全体としての経過時間が遅れてはならない場合、 スレッドを消滅させず再利用するように工夫が必要になるかもしれない。 そうでなければ問題ないと思う。
>>897-898 時間を引数にしてSleep整理しました。気持ちよくなりました!
負荷による遅延もなんとかしてみたいと思いましたが、
「スレッドを消滅させず再利用する工夫」が検討もつきません。
検索してみても一から十まで質問しないと無理そうな感じだったので、
とりあえずPCの潜在能力を信じて走らせ続けることにしました。
今のところはみなさんのおかげで望み通りの動作をしており、
とても満足です!ありがとうございました!
>>891 おそくなったけどありがと。
俺もそうしたわ。
スマホ、タブレットでuwsc動かしたいなーって思ってたら、 Lenovoでは動かせるって記事を見つけて興奮した。 調べてみたら8インチのやつだったんだけど、 理想はiphoneサイズくらいで動いたらなーと思ってるんだけど、 既にuwsc持ち歩いてる人いたら情報下さい。 液晶ちっちゃくて軽くてuwsc動いたら最高。 家電いってもたぶん、DL駄目だよね?
exe化したものを貰ったのだけど、編集できない?
UWSCでいくつかブラウザゲーム用マクロを作っていたのですが、 前から微妙に気になっていた問題が致命的になってきたのでアドバイスをお願いします。 //開始決定 While flag sleep(1) //exit・・・UWSCを終わる if GETKEYSTATE(VK_ESC) then exit ifb CHKIMG("開始.BMP") // 画像があった sleep(1) BTN(LEFT, CLICK, G_IMG_X, G_IMG_Y) // 左クリック sleep(1) BTN(LEFT, CLICK, G_IMG_X, G_IMG_Y) // ミスクリック対策 //ループ抜け flag = false endif Wend flag = true このように、開始ボタンの画像が出てきたら開始へ行くようにしていますが、 開始ボタンが出た時は100%そこにカーソルが動きます。 問題はクリックされないことがあるということです。 念のためクリックを二重化していても押されずに通過されることがあります。 CLICKコマンドは確実にCLICK出来ない時があるのでしょうか?
端的に言うとあります クリック後の相手を検知できる方法を探して それが検知できるまでクリック処理を抜けない事だと思いますよ 以下は余談 BTNの第5引数のミリ秒は実行待機時間的な事しかヘルプに記入されていませんが この説明が実に曖昧で マウスイベントを送信するためのアイドルイベントを待つ待機時間なのか 単なるウェイトなのか よくわからないんですよね この数値を上げるとマウスイベントの未送信は少なくなるがゼロになるわけではないって感じで 本当によくわかりません
俺はDOWNとUPに分けて間にSLEEP噛ませてるよ それでも相手がブラウザだと相手の気まぐれ次第で失敗する。 (1) まず待機画像を待機してていい画面かどうかチェック。違ったら待機画面に再移動。 (2) 画像を待機。待機ループには絶対必ずSLEEPを噛ませること。暫く待っても画像が見当たらないなら(1) (3) 画像をクリック (4) クリックした結果画面に遷移するのを待機。遷移したら全体のループを抜け次の処理へ。 (5) 暫くしても(1)の画面から変化がなく(4)の画面に遷移しなかったら(3)からやり直し (6) (3)〜(5)を数回繰り返してもダメなら(1)からやり直し (7) (1)〜(6)を数回繰り返してもダメならブラウザ再起動処理して0からやり直し
chromeだと画面の描画が終わった直後にボタンをおしても 反応しないことがある (正確に言うと通信は行われるのに画面は再描画されない) 試しに画像見つけてから3秒ほどスリープさせたあとで ボタンを押すようにプログラム書き換えて、 問題が起きなくなったらそれが原因
>>904 そういえば、第5引数ありましたね。
(何故か画像認識後のBTNクリックには使ったことがなかった・・・)
通常のクリックでは300設定してるので、まずは設定してみます。
>>905 ふむふむ。確かにドラッグ操作で使ってますが、DOWNとUPの組み合わせは失敗を見たことがない気がします。
お二方の言うとおり、確実にいくためには遷移後の画面を確認したらループ抜ける作りにすべきですね。
>>906 なんと・・・
ちょっと現象は理解しきれていませんが、1秒スリープを3秒にすれば、
解決するかもしれないということですね。
>>906 なんかわかった気がします
画像が見つかったらその座標クリック
見つからなければ次のページに
といった処理を作った際に、
何故か、見つけたタイミングより1つ先のページを同座標をクリックする現象があって、
ロジック的には見つけたあとは次のページに進める処理は発生しないのに、
次のページに進めた後で座標クリックしてるようなことがありました
結果、次のページヘ進めたあと1ページウェイトを入れたら、
正しく該当ページで座標クリックしてくれました
腑に落ちないところですが、画像検索の前後にはウェイトを入れたほうがいいのかなと思いました
>>908 画像検索や自動操作をループするときは散々既出だが必ずSLEEP入れる。
入れないとUWSCがCPU時間を専有して操作対象が処理落ちしたりする。
ってか入ってるじゃん その前の処理で入ってなかったのか READY待機とかの手もあるけど 割りと永遠にREADYにならないときがあるから 適当な秒数を決め打ちSLEEPだなぁ
>>910 うーん・・・
幾つか、こういう画像発見したら押すという処理があって、
>>903 のWhileの次のsleepは、画像認識のIF文のためのsleepという認識ではなかったので、
一部の画像認識処理で誤作動が起きていた感じです
今まで、細かく理解せずに適当に書いてきたため、
自分の認識とは違う部分のウェイトが功を奏してる部分があったりしてます
>>910 >割りと永遠にREADYにならないときがあるから
これ最近知ったんだけど、F5押すと先に進む場合あるよね?
だとしたら90秒待機でreadyにならない→f5クリックで
いけないかな?
今度試してみよ。
READYにならなくても支障ないなら更新より中止おすすめw
914 :
名無しさん@お腹いっぱい。 :2014/07/02(水) 20:59:50.72 ID:NpQ34W/h0
UWSCからWEB情報DBの値を読み取る方法ってありますか?
正式に公開されているDBならアクセス方法が明記されている筈だよ
音量ミキサーをいじるスクリプトを書こうと思っています。 やりたいことは、いくつかのアプリのミュートです ・SndVol.exeを起動 ・アプリのアイコンを認識させる ・認識したアイコンの下へマウス移動&クリック 目的のアプリが最初の方だけだとこれでいけそうな気がしますが 沢山立ち上げていると音量ミキサーの下部スライドバーで 移動させて、また認識させて・・・という感じしかないでしょうか? もっとスマートに目的を果たせる手順、考え方などあれば是非ご教示ください
その手のフリーソフトを探す
UWSCを使って、自分自身の仕事を効率化している人は多いと思うけど、 実際にUWSCのスクリプトを顧客に提供している人いますか? いたら手を上げて欲しいです。 いくつか業務効率化の相談をしたいの。
ランサーズでやれw
>>921 ゲームマクロなど実名や公式だと答えてくれない話
実名でコード晒すのが恥ずかしいけど晒す必要のある人
無駄にディスられたいドMな人
923 :
916 :2014/07/04(金) 10:57:00.54 ID:90BKgd+v0
>>917 その手のフリーソフトが自分の調べた限りだとないんですよねぇ
>>923 id = GETID("音量ミキサー")
CLKITEM(id,"ミュート システム音")
CLKITEM(id,"ミュート解除 システム音")
とりあえずこれでクリックは出来るようだけど(Win7)
>>924 おーCHKIMG使わずに取得できるのはとてもうれしいです。
そしてスライドバーも必要なさそうなので、とてもすっきりしますね
どうもありがとうございました
windows7 64bitを使ってます。 xp modeの中でuwscを動かしたいと思っています。 CHKIMGで画像を探して位置情報を取得したところ、画像認識には成功するみたいなのですが、 G_IMG_XとG_IMG_Y の値が両方とも-99999となります。 こういう場合、 1、画像認識は成功しているのですか? 2、正しいG_IMG_XとG_IMG_Y の値を得るにはどうすればいいですか?
928 :
927 :
2014/07/05(土) 04:01:58.85 ID:HvVsRLW/0 -99999じゃなくて-999999 でした。