[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 05/03 04:31 / Filesize : 344 KB / Number-of Response : 994
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:名無しさん@お腹いっぱい。 [2009/03/02(月) 19:49:20 ID:rP5khwz50]
Windowsを自動化させるツールUWSC。
ttp://www.h7.dion.ne.jp/~umiumi/

uwsc使いのみなさま、マターリ己のスクリプトを晒しましょ。

前スレ
自動化ツールuwsc使いよ集まれ3
pc11.2ch.net/test/read.cgi/software/1176677869/

755 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/27(火) 01:21:29 ID:DQzhoBiL0]
現在あるゲームの自動操作を行わせているのですが、画像判定(chkimg)の箇所が多く、また不安定なため、通信受信内容で判別できるように改良したいのです。
雲をつかむような表現で申し訳ないのですが、どのような関数を参考にするといいのでしょうか?

756 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/27(火) 01:31:38 ID:TiHUFHbO0]
>>755
通信関係の関数は無いです。
無理やりにでもやるとしたら、外部DLL等の読み出しによって行われる事になるでしょうけど…
それはUWSCの範疇ではないと思います。

…でも俺もちょっと知りたい。なんか判ったら教えてw

757 名前:名無しさん@お腹いっぱい。 [2009/10/27(火) 01:42:53 ID:6cas0igo0]
>>755
その通信内容というのがサーバーとの通信って事なら、
暗号解除とかコード解析のためにゲームガード破ってコード解析しないといけないでしょう。

そんで解析した後も、通信を傍受するソフトと暗号解除するソフトは別途必要になると思います。


758 名前:名無しさん@お腹いっぱい。 [2009/10/27(火) 11:14:48 ID:DQzhoBiL0]
>>755です。
たとえば、NESを代表するエミュレーターのバイナリを監視し、値を取得するようなことを
UWSCでは関数としてあるのかな〜とおもってまして。

また雲をつかむような話ですが、ある.exeファイルを監視し、特定のアドレスの値がXXになったらアラームとか。
そんな感じで値を取得できないかなぁとおもいまして。

引き続きご意見、ご助言をおねがいします。

759 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/27(火) 11:17:28 ID:7cHtZVxc0]
>>758
それだったらDLL経由でできる

760 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/27(火) 14:19:32 ID:6cas0igo0]
>>759
> 特定のアドレスの値がXXになったらアラームとか。
これはUWSCでは無理じゃない?

UWSCがイベント受け取って動けるのはCOMのイベントだけでしょ。
COM組むとなるとかなり大変だと思うけど。


761 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/27(火) 14:53:46 ID:7cHtZVxc0]
普通にDLL使えますが・・・

762 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/27(火) 15:30:42 ID:6cas0igo0]
>>761
マジで?
実際試せるそーすプリーズ

763 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/27(火) 15:31:16 ID:ukIubvelP]
一般的なアプリって固定的にメモリ使ってるの?
それにどうやって知りたい情報のアドレスを特定するの?

識者の人、解説よろ



764 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/27(火) 15:35:01 ID:7cHtZVxc0]
>>762
ヘルプくらい読めよ・・・

765 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/27(火) 15:37:51 ID:6cas0igo0]
>>764
ああ、最近Windows7つかっててUWSCのヘルプ開けなかったんだ

// イベント処理の定義
OLEEVENT( オブジェクト, インタフェース名, イベント名, Procedure名 )
引数
   オブジェクト: COMオブジェクト

でも、UWSCのイベントはOLE前提みたいだけど、新しい関数できたの?


766 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/27(火) 15:46:42 ID:7cHtZVxc0]
>>765
<DLL 使用定義>
 // DLL (API等)の関数を使用する事ができるようになります

 DEF_DLL 関数名(型, 型, ...): 戻り型: DLL名
 型: int、long、bool、uint、hwnd、string、Wstring、float、double、word、dword、byte、char、pchar、Wchar、pWchar、boolean、longlong、Extended、SafeArray

 参照引数(値変更あり)の場合は Var 宣言を付ける      関数名( var double, var int )      
 構造体:型を { } にて展開して書く      関数名( double, {int, int, int} ) 
 配列の場合は 型に [] を付ける      関数名( double[], int[] )

 ※int=long= bool(4byte)、dword=uint=hwnd、 char=boolean(1byte)
   ヌルポインタを渡す時は NULL定数を使用して下さい


てきとーなこと言う前に、ちゃんとヘルプ読む癖をつけよう

767 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/27(火) 16:05:19 ID:6cas0igo0]
>>766
それはDLL関数を呼び出す定義だろ?
どーやってDLL関数にUWSCの関数を渡すんだ?

いや、UWSCでループするかDLL関数内でループしてればそういう動作することが出来るのはわかってるけどさ。


まあどっち道値の書き換え監視はループして監視しなきゃいけないわけだからそういう風に作るとして、
DLL内でループすると他のことが出来なくなるからマルチスレッドにしなきゃいけないっていうかイベント処理はどの道マルチスレッドか。

マルチスレッドにしないならUWSCの主処理ループで状態チェックしてそれにあわせて分岐か。
その場合監視項目をまとめて処理する関数呼び出してIDでどれが変更になったか見分けるのがスマートかな。
イベント型で不定期に発生すると他の操作との絡みがあるからやっぱそれしかないか。
この方法の問題点は、監視タイミングがかなり緩慢になって、回復処理が必要になってもなかなか回復しないとか言うデメリットがあるんだよね。

UWSCのマルチスレッドが他のスレッドを一時停止とか終了のコントロールが出来ればイベント型スクリプトを作りやすいんだけどな。


768 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/27(火) 17:47:38 ID:7uDFKqAz0]
改行をどうにかするか、長文をどうにかするk(ry

769 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/27(火) 19:30:51 ID:6cas0igo0]
ごめーん
最近年のせいか知らないけどだらだらしゃべっちゃうんだよねえ。
まるで無責任艦長タイラーみたいにさ。

まだまだ人生残り50年だと思ってたんだけどそろそろ2ちゃんねる引退時かな?

イベントドリブンなスクリプトで検索すると、JavaScriptがいっぱい出て来るねえ
でもローカルで動かすのにJavaScriptじゃしょうがない。
JScriptとかVBSctiptならHTA・・どのみちWebベースか。

schemeとかもそーなのか
LSLって何かと思ったらセカンドライフのスクリプトか


HSPにsetcallbk って関数があるな
これは意外な。

SocketDebuggerってのにLuaスクリプトってのがあるな。
通信データをスクリプトで監視してデバッグできるんだってさ。
これゲームガードに阻まれなければチートに応用できそうだな。


770 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/27(火) 20:34:22 ID:qgi5nNQ40]
まさにKYってこういう人を指すんだろうな
間違いなくあなたの文章は誰も読まない
コピペ荒らしよりも不愉快な存在



771 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/27(火) 20:36:09 ID:6cas0igo0]
KYってもともと石垣島のさんご礁に落書きされたのが発端って知ってる?

772 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/27(火) 20:48:07 ID:dmqDK93Q0]
これはさすがにもう擁護できないウザさだな
>>767辺りでやめときゃ良かったのにわざわざ反感買ってどうすんだ
死ね老害

773 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/27(火) 21:26:14 ID:JjIhm7H6P]
クズスレ



774 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/27(火) 22:00:31 ID:6cas0igo0]
判定関数を使ったイベント登録っぽく使えるモジュール書いてみた。動くかどうかはしらない。

イベントモジュール.初期化()
〜処理〜
イベントモジュール.Quit()

Module イベントモジュール
 DIM QFlag

 Proceduer 初期化()
  this.QFlag = false
  Thread 関数登録()
 Fend

 Proceduer 関数登録()
  while true
   if 判定関数 then イベント関数()
   if this.QFlag then break
   sleep(0.1)
  wend
 Fend

 Proceduer イベント関数()
  //ここでイベント処理
 Fend

 Proceduer Quit()
  QFlag = true
 Fend
EndModule


775 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/27(火) 23:49:58 ID:DQzhoBiL0]
>>755です。
ご意見、ご助言ありがとうございます。

別プロセスのメモリを読み込むサブスクリプト
ttp://park14.wakwak.com/~simizu/cgi-bin/uwscbbs2/cocoqa.cgi?log=31

Vector:Memory.dll
ttp://rd.vector.co.jp/soft/win95/prog/se358509.html

このあたりでなんとかならないかなぁと考え中です。

776 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/28(水) 13:43:40 ID:/Aufm+7p0]
どこまで省略して書いていいのか分からないので、おかしかったらごめんなさい。


while 1
sleep(0.1)
call 1.uws //マウスで特定箇所をクリック
sleep(0.1)
call 2.uws //↑キー10回連打
sleep(0.1)
wend

こんな感じで、一連の動作に20秒かかるものがあったとして、
その動作とは関係なく、10秒ごとにスクリーンショットをとる「a.uws」があるとすると
どう記述すればいいか教えて貰えないでしょうか。

uwscを複数起動させるしかないのかな・・・


777 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/28(水) 13:50:30 ID:wjFSozMw0]
>>776
thread で10秒ごとに処理を実行するスクリプト(while でまわしてsleepでもやれ)を動かせ

778 名前:776 mailto:sage [2009/10/28(水) 14:09:21 ID:/Aufm+7p0]
うぉ。
素早い返答ありがとうございます。
試してみます。


779 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/28(水) 16:13:10 ID:LN396H4A0]
IFで足し算使った方が良くね?
ズレるかもしれんからthread使ってないんだけど全くズレないのか

780 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/28(水) 17:02:27 ID:NfK6OA8p0]
>>779
足し算ってなに?

時間がもっとも正確なのはGetTime()
でもSleep()の方が処理が軽い。
メインループで何回かに一度実行するのがもっとも時間が不安定になるが、
他の処理とかぶらないのでCPU使用時間に対するUWSCの占める時間は安定するし、
操縦も安定して実行できる。

Sleep()した時間を足していく方法もいいけど、
ある程度時間のかかる処理をすると、その分だけ時間がかかる。
確かにSleep時間を取れば汎用的だけど、もっと大雑把に回数でやったほうが、特に初心者にはやりやすい。

もしSleep時間でやるとしたら、こんな風にやるのがシンプルだし処理も軽い。
while true
 for t = 1 to 10 step 0.3 //stepはSleep時間の合計
  処理1
  Sleep(0.1)
  処理2
  Sleep(0.1)
  処理3
  Sleep(0.1)
 next
 キャプチャ処理
wend

細かいことを言えば、Stepが0.3の場合、初期値も0.3なのが普通だけど、
ループ自体に時間もかかるし、Sleep以外の処理でも少し時間がかかるので
初期値1にしたほうがより近い時間になるだろうし、
初心者にも初期値は1で固定したほうが10回のときに1から10だから分かりやすいだろう。

あ、でも、定期的な処理が複数あって時間もまちまちの場合はこのやり方は不向きだな。応用が利かない。

781 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/28(水) 17:11:42 ID:LN396H4A0]
たしざん 【足し算】
二つ以上の数を加えてその合計を出す計算。加え算。寄せ算。加法。加算。

782 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/28(水) 20:12:47 ID:1RRSN1UB0]
アクティブなフォルダに空の「NewFile(1).UWS」を作るようにすることって出来るかな
(1)の部分は既にファイルがあれば(2)(3)〜となるように

ヘルプとか見ながら考えてるんだけど、全然分からない

783 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/28(水) 20:20:54 ID:NfK6OA8p0]
>>782
それはできるけど、作ったファイルをCALLすることは出来ないっぽいよ。

CALLする .uwsファイルは、親をロードしたときにまとめて読み込むみたいだから。




784 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/28(水) 20:21:35 ID:NfK6OA8p0]
あ、SHELLを使って別プロセスで実行することは出来るだろう。

785 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/28(水) 20:24:33 ID:4CuQ5Xji0]
>>782
i = 0
While Fopen("NewFile(" + i + ").UWS",F_EXISTS) //存在チェック Falseが帰るまで続く
Wend
FCLOSE(FOPEN("NewFile(" + i + ").UWS",F_READ or F_WRITE)) //存在しないFileを開いて何も書き込まずに閉じるとそのファイルだけ作成される

こんな感じじゃない?
俺も昔同じような事しようとして、空ファイル作成出来る事を知らずに、DosCmd("prompt > "+Filename,,)とかやってた。

786 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/28(水) 20:34:22 ID:4CuQ5Xji0]
>>785
思いっきり書き忘れた。
Whileループの中でi = i + 1しないとiが0のままやんorz
1〜にするなら最初がi = 1ね。解ると思うけど。

787 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/28(水) 20:51:57 ID:1RRSN1UB0]
>>783
コールは使ったことないから大丈夫だと思う

>>785
ファイルを作るのはできた、ありがとう
やっぱりその辺で出来たんだ
でもこれだとこのファイルがあるフォルダにしか作れないけど
アクティブなフォルダを指定するにはどうしたらいいんだろう?

788 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/28(水) 21:01:51 ID:4CuQ5Xji0]
アクティブなフォルダって言うのは、現在explorerで開いてるフォルダってことかな?
それならbatファイルでも作った方が早い気がするが、UWSCにこだわるなら、
GETITEMとか使ってそのフォルダ位置を特定して、GETDIR使ってファイル名取得して、DOSCMD使ってファイル作成が現実的じゃないかな?
短いコードで示せないし、面倒そうだから頑張ってくれとしか言えないが。。。

789 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/28(水) 21:06:56 ID:1RRSN1UB0]
batファイルでそういうの出来るんだ
batファイルで挫折したからUWSCなら出来るかなと思ってやってたんだけど
batで出来るならそっちで頑張ってみるわ
色々ありがとう

790 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/28(水) 21:20:50 ID:4CuQ5Xji0]
あと使えそうなのは、batにしろUWSCにしろ、そのフォルダ自体を選択して、
送るメニューでSendToフォルダに入れたbatだかUWSCかなんかに送って、その引数から調べるって事かな。
スレチに近くなると思うから、適当にしらべてくれい。

791 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/29(木) 07:32:32 ID:GVyFpQ2YO]
SAVEIMGで保存したBMPを別のPCに移し
CHKIMG関数使い認識させたら
うまく認識してくれません
これは画像を撮ったPCでしか使えないものなんですか?

792 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/29(木) 07:56:16 ID:pwqTC0UdP]
画面の設定で色数が少ない方は減色されてて色は完全一致しなくなる。
また、グラフィックアクセラレーターでいろんな効果をつけたり色味を調整してても同じ。
CHKIMGは基本的に色は完全一致で見るみたいだから、形で見るオプション指定たらいいんじゃないかな。

793 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/29(木) 09:06:11 ID:GVyFpQ2YO]
>>792
回答ありがとう
今は形で見る-1で認識させてるんですが
うまく行かないんですよ



794 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/29(木) 09:08:38 ID:KyrcyRow0]
16bit と 24bit(32bit) ビットマップの比較をしてしまっているってこと?

795 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/29(木) 09:16:51 ID:GVyFpQ2YO]
仮に16bitと24bitで比較してても形で認識なら問題無いのでわ?

796 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/29(木) 09:31:10 ID:KyrcyRow0]
>>795
座標を固定にしてて、タイトルバーの幅とかでズレてるとか

797 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/29(木) 09:56:58 ID:GVyFpQ2YO]
>>796
座標も入れてないんです
CHKIMG(画像名,-1)
このように書いてますが他のPCで認識しません

798 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/04(水) 12:52:41 ID:8Qcx8WSzO]
こんにちは初心者です^^
バックグラウンドで動かす方法を教えてください^^

799 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/04(水) 18:34:29 ID:R5YB3x7J0]
CLKITEM使えばいいと思うよ
これでなーんにも分からないなら死ねばいいと思う

800 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/04(水) 18:47:45 ID:v9XrPJ0LP]
どう考えても釣りだから相手にするだけ無駄

801 名前:名無しさん@お腹いっぱい。 [2009/11/04(水) 19:34:50 ID:V7YiZudu0]
SystemParametersInfo API を使って、レジストリの更新をWindowsに認識させたいのですけど
(壁紙のレジストリを書き換えて、その場で表示が変わるように)
WScript.Shellを使ってのレジストリの書き換えは出来ましたが、更新が出来ません。

調べてみると、SystemParametersInfo、を使えとありましたが
どうにもDEF_DLLの書き方や、そのあとの呼び出し方がわかりません。

DEF_DLL SystemParametersInfoA(Int, Int, String, Int) :Int :User32
Const SPI_SETDESKWALLPAPER = 20
Const SPIF_SENDWININICHANGE = "&H2"
Const SPIF_UPDATEINIFILE = "&H1"
SystemParametersInfoA(SPI_SETDESKWALLPAPER, 0, "c:\01.bmp", SPIF_UPDATEINIFILE or SPIF_SENDWININICHANGE)

今のところ上記ではさっぱり動かないです。
UWSCでのサンプル等があればお教え願えるとありがたいです。

802 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/04(水) 20:37:56 ID:0Yk32EP+P]
>>801
ぐぐれよ
Declare Function SystemParametersInfo Lib "user32" Alias "SystemParametersInfoA" (ByVal uAction As Long, ByVal uParam As Long, ByVal lpvParam As Any, ByVal fuWinIni As Long) As Long ...

int じゃなくてLongな

Const SPIF_SENDWININICHANGE = "&H2"
これ文字列を定義しちゃってるから
数値ならこっち
Const SPIF_SENDWININICHANGE = $2


803 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/05(木) 12:44:49 ID:S5x5Fprv0]
>>802
ありがとうございました。動きました。

intの部分、Webで探すと(自分が参考にしたのはこれ、support.microsoft.com/kb/97142/ja
DwordやらUINTやらいろいろあったんですけど…longにしました。
数値の定義がUWSCでの16進数指定をするべきってのがわかりました。
…当然ですけどVBAとかのサンプルコードを読むときには、VBAの作法を先に理解すべきでした…

判ったのが嬉しかったです。



804 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/05(木) 18:20:19 ID:pU0U6qNS0 BE:642499373-2BP(215)]
ループするごとに+1して
その数字を入力したいんですが、
どのような書き方になりますか?

805 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/05(木) 18:29:15 ID:Uto6/TER0]
えっ

806 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/05(木) 18:43:52 ID:RpK58qujP]
>>804
forで検索

807 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/05(木) 18:57:41 ID:pU0U6qNS0 BE:979047348-2BP(215)]
>>806
ありがとうございました。

808 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/06(金) 13:25:11 ID:7O4EUde5P]
トリップ検索しながら他の事を自動実行して
どれくらいCPU使用率があがっているのか調べようと
「Ctrl」+「Alt」+「Dlete」でタスクマネージャ^をたちあげたら
「Alt」+「F2」でuwscが止まらないです
偶然、自動実行でタスクマネージャーをタスクバーに収納したら治った
もしかしてバグ発見でしょうか?
ちなみにCPU使用率は65%でした
どなたか、うみうみ氏へのバグ報告よろしこ

809 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/06(金) 18:22:43 ID:lSBe5FmK0]
日本語でおk

810 名前:名無しさん@お腹いっぱい。 [2009/11/07(土) 16:08:26 ID:WRnsJZjs0]
ところでuwscって何て読むんだ?
ユーイック?
ユイック?
ウニスク?

絶対に読み間違わない方法として
ユーダブリューエスシーと読む方法があるんだけど
それは味気ないなからいまのところユニックって呼んでるんだけど
なんて読むの。

811 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/07(土) 17:23:48 ID:Sczvtx3b0]
なんだよユニックって
ユーダブリューエスシーでいいじゃん

812 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/07(土) 17:35:53 ID:3R7yiorj0]
格闘ゲームを1フレーム単位で動かしたいけど
>>563-567見てるとuwscはCPUコアを使うから向いてないみたいだ

軽い負荷でマクロを組む方法はなにがあるんだろう?
CやC++とかがいいのかな

813 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/07(土) 17:59:27 ID:v0hn5DQqP]
それマクロじゃないから



814 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/07(土) 18:04:04 ID:MRy0rC3KP]
>>812
1フレーム単位って・・60フレーム/秒だとして15ms以下でコントロールとかどんな言語使っても無理だって。
23msってのはゲームとUWSCの組み合わせで入力を確実にするための時間であって、
それはもしかしたらゲームの方の制約かもしれないんだ。

たとえばメモ帳にすばやく入力はできるけど、スクロールが必要な場所に書き込むととたんに遅くなる。
入力漏れも出てくる。

ゲーム性のための遊びもあるし、ゲーム側の負荷で受け付けられなかったりするんだよ。

まあ、少なくともUWSCのコントロールはハードウェアレベルのコントロールと比較して再現性が低いのは事実。
だから負荷がかかりすぎたり複雑なすばやい処理が必要なら(いわゆるコマンド入力があるなら)、向いてないかもしれない。
ただ、23ミリ秒っていうのは、DOWNからUPまでの時間なので、
← DOWN
↓ DOWN
/ DOWN
23ミリ秒の待ち
← UP
↓ UP
/ UP
てな感じでいける。
DOWN、UPそれぞれにわずかな時間がかかってはいるけど、1ミリ秒とかそんなレベルだと思うよ。
まあC++でやればDOWN3連発でも1ミリ秒もかかったりしないけど。


815 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/07(土) 18:54:33 ID:RDWRX6dr0]
特定のプログラムだけにUWSCを使うことは可能?
最小化してるゲームにUWSCでキーとかマウスを使わせて
なおかつ、普通に他の物も操作したり

816 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/07(土) 19:14:54 ID:MRy0rC3KP]
>>815
ゲームは多分無理。
アプリケーションに直接送信ってオプションがあるからできるものもあるだろうけど、JaneViewですらKBD()コマンドでそのままは動かせなかった。
CLKITEMとか直接コントロールを指定するスクリプトならいいんだけどね。

裏でゲームマクロしたかったら仮想マシンでも作ればいいよ。
VMware Player3.0になってから、無料なのに簡単に仮想マシンが構築できるようになってるから。
つい先日のリリースですよ。

WindowsXPゲストの仮想マシンですらメインメモリ1GBないと実用になりませんが、それはもう問題ない時期でしょう。
あと、仮想マシンにもそれ専用のライセンスが必要です。
MSに問い合わせたらホストのライセンスも取り消されちゃうので注意してくださいね。
僕はホストではちゃんとライセンス守ってるものの、ゲストではAntiWPAで回避してますけど。

XP持ってない人はいないと思うけど、持ってない人はXP-modeのサイトから誰でもダウンロードできます。
もちろん流用するのは違法だし、そのまま流用はできませんが、怪しい場所から入手するのは著作権云々以前に
攻撃ツールが埋め込まれていて知らない間に他人を攻撃してる可能性があるので絶対にやってはダメです。


だいたい仮想マシンとかいろんな構成で何度も入れなおしたりするのにいちいち空くティベー所んとかやってられないですから。


817 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/07(土) 19:15:42 ID:3R7yiorj0]
>>814
どんな言語使っても無理そうですかー
C言語でもだめだってならあきらめるしかないな
uwscは向いてはいないが、かと言ってこれより最適なものもない。って感じなのかな

格闘ゲームってやりこんでいくと1フレーム猶予の攻防がざらにあるんだけど
それを1フレーム単位のボタンON・OFFで検証したくてw
もし高い精度で1フレーム単位で動かせたら、組む時に分かりやすい、
安心感がある、何度も検証をやり直さずに済んで最高なんだけどなあ

818 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/07(土) 19:24:47 ID:MRy0rC3KP]
>>817
大雑把な方法でよければ、一定時間繰り返すっていう手があるよ。

単純に繰り返しを早くしたり遅くしたりしてどれくらいの猶予があれば動くかとか
相手のある操作、組み合わせのある操作の場合は、
それぞれの実行間隔をわずかにずらして、何回ごとに違うアクションになるかとか・・
あ、攻撃を受けたらのけぞったりするからダメか。

一応このずらすやり方っていうのは、ノギスとかで、大雑把な目盛りを組み合わせて精度の高い測定をする方法として一般的なんだよ。


819 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/07(土) 19:31:36 ID:RDWRX6dr0]
>>816
なるほど
よくわかりませんが
単純作業なので窓で開いたままします

ところで

KBD(VK_G,CLICK,203)

のクリックの後にある数字はなんでしょうか?

820 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/07(土) 20:00:00 ID:MRy0rC3KP]
>>819
確か、その処理をするまでの待ち時間ですね。
それは負荷がかかるので僕は省略してます。
かわりに
Sleep(0.203); KBD(VK_G,CLICK)
とかにしてますね。
再現性はKBDで時間を指定したほうが高いでしょうが、0.1ミリ秒とかいう長い時間を待つには向いてないと思うんで。

負荷がかかってるけど入力タイミングがシビアなときにはこんな感じ
KBD(VK_ctrl, DOWN, 5)  // 時間を省略してもいいけど同時入力は処理できない可能性があるので
KBD(VK_shift, DOWN, 5)
Sleep(0.01)  // CtrlとShiftの押し下げ状態を対象に処理させるための待ち。Sleepしてる間UWSCはCPUを開放する。
KBD(VK_X, DOWN, 5)
KBD(VK_Z, DOWN, 5)
Sleep(0.03)  // キーのクリック認識のための待ち。複数のキーだとCLICK2回よりもすばやい。
         // 内側のキーはCLICKにしてSleepを外したほうが処理は確実で無駄がないが、Sleepにしたほうがゲーム側の処理に時間を回せる。
KBD(VK_X, UP, 5) // キーは押した順に離すとそれぞれのキーを押し下げている時間を一定に出来、間のSleepを短く出来る。5msの待ちが入ってるから0.02まで減らしても大丈夫だと思う。
KBD(VK_Z, UP, 5)
Sleep(0.01) // キーは離すときまで油断しない。確実にUPしないと次のCLICKができない。
KBD(VK_ctrl, UP, 5)
KBD(VK_shift, UP, 5)


821 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/07(土) 21:00:20 ID:RDWRX6dr0]
>>820
こんな初歩的な質問まで丁寧に答えていただいて
本当に助かります、じっくりと読ませて頂きます。

822 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/08(日) 16:20:11 ID:FS1xEc4g0]
中二病的発想で申し分けないんだが、
画像検索やって、認識したらターゲットにロックオンサイトが表示されたり、カラーメッシュがかかったりするのって可能?

マウスカーソルが移動するのは無しな、マウスカーソルを移動させるだけなら習得済みだから。

823 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/08(日) 18:17:31 ID:wKqL8NlR0]
>>822
ゲームの描画はDirectXを使っていてリフレッシュレートにあわせてバッファからコピーしている。
DirectXで画面に表示されたものをさらに上書きするのは大変なことだよ。
タスクマネージャの「常に手前に表示」ですら後ろに隠れるんだから。

ゲームハック専用ツールならそういうことも不可能ではないかもしれないが、ちょっと無理だね。

Windows7で窓化して、ゲーム画面と同じ大きさの透明の窓を作ってそこに描画するのが簡単な方法だろう。
透明窓の重ね合わせはWindows7がハードウェアでやってくれるから負荷もかからないし。

一番負荷のかからないのは、ゲームをハックして書き終わったところで表示。
画像認識なんかしないでデータ上の座標を取得して重ね合わせ。

だいたい画像認識なんてのはゲームを動かすより大変な労力がいるんだぜ?
もちろん、戦闘機とか防犯カメラには当たり前についているけど、フレームレートが1秒間に10コマとかそんなもんで、
60fpsにあわせて処理なんてCore i7くらいの性能じゃないと無理。
いや、画像処理をGPGPUにやらせるならセレロンでもいけるか。

普通のGPUはあくまでも描画用回路しかないから無理だが。




824 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/08(日) 22:43:22 ID:N1ZfyY/E0]
変数を使いある変数を別の変数へ変化させる方法

n1 = 0
n2 = 0
n3 = 0
n4 = 0
n5 = 0
という変数を定義した後に
n = "n"
m = 1
nm = n + m
と定義して

m = m + 2

とmに2を加えてやってmの値を3にしnmをn3の状態に変化させ
nm = nm + 3という式を与えると
私としてはn3に3を加えn3=3と
したつもりなのですがnmがnm3になります

mの数値を変化させnmを使いn1〜n5の変数の値を操作したいのですがどうすればいいでしょうか

825 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/08(日) 22:57:52 ID:wKqL8NlR0]
>>824
> n = "n"
これはnを文字列として定義したことになります。
文字列に数値を加えるのは、文字列の連結になります。
”n” + 1  は
”n” & 1  と同じ意味です。

EVALというのを使えば ”n1”という文字列からn1の変数を操作可能ですが。


> mに2を加えてやってmの値を3にし
m = 1
m = m + 2

> nmをn3の状態に変化させ
nm = n3

> nm = nm + 3という式を与えると

> 私としてはn3に3を加えn3=3と
n3 + 3 = 3


・・・よく分からないので表にしてください


826 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/09(月) 00:15:54 ID:wp6IQbGR0]
//>>824 返答ありがとう//
//やりたいこと//
//変数を使って3行目変数n3の値を3にしたい//

//式//
////////////////////////////////////////////////////
n1 = 0
n2 = 0
n3 = 0
n4 = 0
n5 = 0
n ="n"     
m = 1 //コメント1:mを1置く//
m = m + 2 //コメント2:mに2を加える。現在mの値は3。現在nm = n3。//
nm = n + m //コメント3:現在n = nでm = 3なのでnmはn3となる//
nm = nm + 3 //コメント4:左辺のnmはn3なので3行目の左辺と10行目の左辺は同じ値であるということになる為//
        //      nm = nm + 3 ということは n3 = n3 + 3ということになり、//
// 3行目のn3の値0に3を加えたこと((n3 + 3 = 3)ではなく(n3 = n3 + 3)ということ)になる//                                  
print n3
/////////////////////////////////////////////////////
//期待したプリント結果は 3 // 
//実際のプリント結果は 0 //


//これで少しはわかりやすくなったでしょうか//
//変数aを使って変数bの値を変化させる方法の勉強中です//

827 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/09(月) 00:40:40 ID:wp6IQbGR0]
>>825
EVALという機能でいけました。
ありがとう!40時間もかかった><

828 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/09(月) 00:59:20 ID:BZ9g5EYX0]
>print n3
>//実際のプリント結果は 0 //
そりゃ、変数nmには文字列 "n3" が代入されてるけど、
変数n3になんにも代入されてないからねえ。

配列つかえばいいんじゃないの。

dim n[5] = 0, 0, 0, 0, 0
m = 3

n[m] = 3

print n[3]

829 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/09(月) 01:02:55 ID:BZ9g5EYX0]
訂正
なんにも代入されてないから → 0が代入されたままだから

830 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/09(月) 01:24:03 ID:Wg6Yr+FN0]
>>828
今それ書こうと思ったのに!
ってか、確認してないだろw配列も6個宣言してるしw

831 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/09(月) 01:25:34 ID:Wg6Yr+FN0]
こんな感じかな?
dim n[4]=0,0,0,0,0
m = 3
n[m]=n[m]+3
print n[m]

832 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/09(月) 01:43:46 ID:BZ9g5EYX0]
>>829
あ、ほんとだ。
一応テストしたんだけどなあ。
エラー出なかったから気づかなかった。

833 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/09(月) 21:29:27 ID:7/pEhhd4O]
さっきダウンしてUWSCとかスクリプトとか一切わからんのだが
コピペした文章をエクセルで常に特定のセルに張り付ける方法教えくされ
動かすとエクセル側のセルがずれる



834 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/09(月) 22:20:10 ID:reYUu1vL0]
>>833
ダウンしたなら寝てろよ

835 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/10(火) 02:43:35 ID:Ljbgb4FJ0]
>>833
OLEObjectを操作すればおk

836 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/10(火) 04:18:28 ID:KPKoPGpy0]
配列の中にある変数の1つがその配列の中で何番目に大きな数値なのかを知る方法

dim p[10] =0,12,3,13,5,4,7,8,1,12,3,29 という配列があったとする。

p[7] = 8 なのでp[7]はこの配列の中で5番目に大きい数値であるということはわかるけれども
これをuwscで導き出すにはどうしたらいいのでしょうか。

837 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/10(火) 04:37:07 ID:Ljbgb4FJ0]
>>836
まず名前の付け方がダメですね。
pは普通ポインタを意味するので使ってはダメです。
UWSCにポインタはないけど、名前付けの基本ですから。

Nとでもしてください。
dim N[10] は N[0]〜N[10]までの11個の配列ですが、12個指定してるのでエラーです。

最大値の求め方は他の言語のアルゴリズムと同じですから、ぐぐってください。

配列データの処理には、for 〜 next を使うのが基本です。
for i = 0 to 10
 print N[i]
next

【実行結果】
0
12
3
13
5
4
7
8
1
12

838 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/10(火) 07:30:19 ID:JLM+3UwS0]
URLエンコードされた文字列(例%82%a0%82%a2%82%a4%82%a6%82%a8)を
デコードして元の文字列(あいうえお)に戻したいのですが、どうやったら良いのでしょうか。

839 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/10(火) 08:13:59 ID:Ljbgb4FJ0]
>>838
DECODE( "%82%a0%82%a2%82%a4%82%a6%82%a8", CODE_URL )


840 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/10(火) 09:12:00 ID:JLM+3UwS0]
ありゃそんな関数ありましたか。失礼しました。
文字列関連ばかり見てました。

841 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/10(火) 09:30:12 ID:JLM+3UwS0]
喜んだのは束の間、実際の文字列はEUC-JPだった…
さてどうしたものか。

842 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/10(火) 09:53:06 ID:Ljbgb4FJ0]
%82をEUC-JPで書かれてるの?まさかそんなことはないよね。
開いたページの話なら、IEで表示した文字を取得すれば変換されてるよ。

具体的には、IE.Document・・.InnerHTMLはもとのコードかもしれないけど
.InnerTEXTは変換されてるかもしれない。
もしくは、上記はどちらももとの文字コードで、IEGetDataなら変換されてるかもしれない。


843 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/10(火) 10:17:19 ID:JLM+3UwS0]
さっきは安易にshift-jisで例を出してしまいましたが実際はeuc-jpで
%a4%a2%a4%a4%a4%a6%a4%a8%a4%aa = あいうえお
やろうとしてることはwikiからゲットしたページの内部に張ってあるリンクを元の
日本語に変換しようってことなんですが。



844 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/10(火) 11:29:47 ID:Ljbgb4FJ0]
>>843
その文字列をどうやって取得したかですよ。
IEGetDataなら問題ないはずなんですが。

.Valueだったなら、.InnerHTMLとか.InnerTEXTも試してみてください。


ところで、Wikipediaのホームページのソースには charset=utf-8 って書いてあるんですけど。


845 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/10(火) 11:38:56 ID:JLM+3UwS0]
wiki≠Wikipedia
一般のwikiですよ。
uwsc経由でなく、既にローカルに保存したファイルです。
ブラウザで開くこともありません。

846 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/10(火) 11:56:44 ID:JLM+3UwS0]
uwscをテキスト変換に使おうというところから間違っているかもしれないですね。

847 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/10(火) 12:53:16 ID:O2OEndzR0]
>>846
(保存したものを||保存するときに)、UTF8あたりに変換ソフトかませればいいんじゃね?
不恰好かもしれないが、テキストエディタを制御してもいいんだし…UWSCの十八番でしょう。

変換を外部に頼るならnkfのwindows版でも使えるような気がするけどなぁ。

848 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/10(火) 13:19:54 ID:JLM+3UwS0]
そういうファイル全体の文字コードは他のツールで問題ないんですけど…
shift-jisで %a4%a2%a4%a4%a4%a6%a4%a8%a4%aa と書いてある部分を
あいうえお として取得したいのです。
DECODE("%a4%a2%a4%a4%a4%a6%a4%a8%a4%aa",CODE_URL)だと化けて 『、「、、、ヲ、ィ、ェ』になってしまう。

一旦ファイルに書き出して、他の変換ツールでeuc-jp→shift-jis変換して
再度読み込んで取得というのにしようかと考え中です。
スマートじゃないけど、ちゃんと動作するので。

849 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/10(火) 13:42:33 ID:O2OEndzR0]
>>848
前述したnkfのdllを使うことで、外部ファイル経由じゃなくても変換できたぞ

850 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/10(火) 15:17:35 ID:JLM+3UwS0]
>>848は失敗、最後の文字が空白になる文字だとちょん切られてしまいましたorz
>>849
参考までにその方法を教えて頂ければ。
Dll定義はほとんど使ったこと無いんでよくわからんです。
beep鳴らすくらいにしか使ったことがない。

851 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/10(火) 16:33:16 ID:O2OEndzR0]
>>850
自分もよくわからんまま使ってるけどなぁ
十分な領域を確保? UWSCにそんな定義ないよなぁ・・・・とか
nkf は-> www.vector.co.jp/soft/dl/win95/util/se295331.html

//-----------------------------------------
DEF_DLL GetNkfVersion(var string): :nkf32.dll //型名の宣言があってるかはいまだよく判らん
DEF_DLL SetNkfOption(var string):int :nkf32.dll
DEF_DLL NkfConvert(var string, var string): :nkf32.dll

version = "null" // "" だと受け取ってくれない
GetNkfVersion(version)

Str = "%a4%a2%a4%a4%a4%a6%a4%a8%a4%aa"
StrDECODE = DECODE(Str, CODE_URL)
SetNkfOption("s") //S-JISを指定
outStr ="null"
NkfConvert(outStr, StrDECODE)

msgbox(version +"<#CR>元 : " + Str +"<#CR>後 : "+ outStr)

//-------------------------------------------

…あと、BEEP鳴らすの面白いw ありがとう。コードの楽譜どこかに無いかな…

852 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/10(火) 16:56:54 ID:JLM+3UwS0]
>>851
いい感じに行けました。ありがとうございます。

853 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/10(火) 17:38:46 ID:GpcSIMUW0]
マウスカーソルをCHKIMGで画像認識することはできないのですか?
カーソルの状態を判定したいのです。
ゲームで使いたいく、MUSCURはだめそうなので・・



854 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/10(火) 18:08:42 ID:uuf5Ec7A0]
>>853 imagine?

855 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/10(火) 18:20:19 ID:GpcSIMUW0]
別のツールならできるということですか?






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](;´∀`)<344KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef