ちょっと変わったマニアな作品が集結

マウス操作自動化ソフトたとえばUWSCは
http://www.vector.co.jp/soft/win95/util/se115105 …
実行時に実際にマウスが動くのでマウス操作自動化ソフトの実行時には本人が思うようにマウスを動かせません。マウス操作自動化ソフトを裏画面的に実行させておいて、本人は自由にマウスを使いたいのですがなにかすばらしい方法はないものでしょうか。たとえばマイクロソフトのバーチャルPC2007をつかえば可能になるでしょか?
よろしくお願いします

このQ&Aに関連する最新のQ&A

A 回答 (1件)

目的と対象次第でしょうね。


こうお考えください。
仮想マシン=ネットワーク上の他のマシン(厳密にはそうじゃないけど)

有効と思われる例
仮想マシン内で完結する作業をマウス自動化でやらせておいて実マシンでは別のことをやる場合。
こういった場合ゲストマシンにアプリケーションをインストールしておき、
提示したソフトもゲスト側で動作させる。
ファイルの移動やコピーはネットワークドライブとしてホスト側のドライブを認識させるか、共有ドライブとして設定する。
制限としては仮想マシンのアーキテクチャ能力以上のアプリケーションは動作できません。
具体的には3Dアプリケーションは無理。
文書、表計算(メモリ設定と仕事内容によってフリーズするかも)、ブラウザ閲覧等など。

UWSCを仮想PC内で試してみましたが、サンプルを動かしているあいだ、
マウスはホスト側にキャプチャされどうさが可能でした。
(わかりにくい動画をつけました/苦笑)

    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QUWSCでMOUSEORG関数が上手く処理できません

UWSCでMOUSEORG関数が上手くいきません

ACW(GETID("無題 - メモ帳","Notepad"))
sleep(1)
KBD(VK_A,CLICK,40)

このコードだとメモ帳に入力出来ます。

しかしバックグラウンドでAと打たせるコードで
id=GETID("無題 - メモ帳","Notepad")
mouseorg(id,2)
sleep(1)
KBD(VK_A,CLICK,40)

これだと無反応です。

処理を画像認識に入れ替えたら画像は認識しますがクリック操作などは受け付けない感じです。

コードに問題ありますか?コードに問題がないとすれば環境に問題があって
それが弊害となるケースはあるのでしょうか?

【環境】
OS Windows7 sp1 64bit
使用しているツール UWSC フリーソフト 5.1.1の最新版
セキュリティーソフト ノートン360(試用版)

Aベストアンサー

以下にそのままのコードがあります
http://fluxonix.asia/kannsuu/mouseorg/

Quwscの画像認識に失敗します。

uwsc超初心者です。
genymotionという仮想androidでゲームのボタンをポチポチすることをしたいのですが、画像認識してくれません。

無知な僕ですが頑張って書いてみました。

ACW(GETID("Genymotion for personal use - Google Nexus 7 - 4.3 (800x1280, 213dpi) - 192.168.56.101","QWidget"),522,121,438,676,0)
IFB CHKIMG("1.bmp") // 認識させたい画像ファイルを指定する
// 画像認識に成功した場合の処理をここに書く
MMV(G_IMG_X, G_IMG_Y)
BTN(LEFT,CLICK)
ELSE
// 画像認識に失敗した場合の処理をここに書く
MSGBOX("画像認識に失敗しました。")
ENDIF

これで実行したら「画像認識に失敗しました」と出てきます。
画像形式はbmpです。

だれか助けてください。

Aベストアンサー

WinShotで設定が正しければ(ビットマップで保存・減色しない)、確実にbmpになっているはず。それも使ったことがあるツールですし。保存したものをペイントで開いてみればわかるでしょう。拡張子を変えただけのインチキだったら開けないか、文句を言われるはずなんで。

普通はPrintScreenキーを押して、ペイントに貼り付けて欲しい部分を切り出し、ビットマップで保存するだけです。

どっちの方法でも、減色せず24ビットのビットマップで保存する必要はありますが、やっていることはツールか手作業かの違いだけです。ただし先の回答で貼ったリンク先にも書いてあったと思いますが、画面コピーは色が微妙に変わることがあるようなので、UWSC側でchkimgする時に色の認識幅を設定するか、色情報を無視してやる必要があるかも知れません。UWSCのヘルプでchkimgのところを参照するか、ググってみましょう。

QUWSCでPEEKCOLORを使い指定ウィンドウ内に、指定したカラーコ

UWSCでPEEKCOLORを使い指定ウィンドウ内に、指定したカラーコードがあるかを判別して
そこをクリックさせたいのですが、画像認識の場合

ACW(GETID("xxxxx"),880,0,800,600,0)
CHKIMG("xxxx.bmp",0)
x=G_IMG_X // 画像の座標をxへ代入
y=G_IMG_Y // 画像の座標をyへ代入
BTN(LEFT, CLICK, x+30, y-30, 60)

x=G_IMG_X という命令で指定ウィンドウ内の画像を(x,y)座標に自動で代入してもらえるのですが、PEEKCOLORの場合はどういった書き方をすればいいのでしょうか??

上手く言いたいことが伝わっているか不安ですが、理解できる方宜しくお願いします。

Aベストアンサー

>PEEKCOLORの後にBTN命令入れましたが、指定カラーコード以外の場所でも手当たり次第クリックしてしまってます。

それって、次みたいにしたってことですか?だったら当然そうなります。

ダメな例:
For x=1 to 800
 For y=1 to 600
  If PeekColor(x,y)=探しているカラーコード Then Break 2
  Btn(LEFT,CLICK,x,y)
 Next
Next

良い例1:
For x=1 to 800
 For y=1 to 600
  If PeekColor(x,y)=探しているカラーコード Then Break 2
 Next
Next
Btn(LEFT,CLICK,x,y)


良い例2:
For x=1 to 800
 For y=1 to 600
  Ifb PeekColor(x,y)=探しているカラーコード
   Btn(LEFT,CLICK,x,y)
   Break 2
  EndIf
 Next
Next

QUWSC 画像判定と条件分岐について

UWSC 画像判定と条件分岐について質問です

1.画像Aがあるか判定する
2.画像Aがあれば、画像B又は画像Cをクリックする
3.画像Aなければ、sleepで少し秒数を開けてから1からやり直す
以降繰り返し

というプログラムを書きたいのですが、画面上の画像を判定して画像AがあるときだけB,Cをクリック
させる方法がよくわかりません。
加えてBを判定してクリック、Cを判定してクリックというのは
ifb部分を二つ使い別々に扱えば書けるのですが、 elseなど用いて一ブロックのifb-endifでの
表し方もよくわからないので合わせてそちらも教えていただきたいです

御回答よろしくお願いします

Aベストアンサー

> 加えてBを判定してクリック、Cを判定してクリックというのは

それは、画像BとCがどちらも存在するので両方ともクリックしておくと言うことか、それともBがなければCをクリックするのか、どっちでしょう?前者の場合はELSEは使わない(って言うか使えない)ので、IFを二つ並べるしか方法はないです。なぜなら、IFB~ELSE~ENDIFの形にすると、最初のIFBの条件を満たした場合はELSE以下は実行されず、ENDIFに抜けてしまいます。

と言うことを踏まえて書くと、次のような感じでしょうか。

While True
  Ifb ChkImg("画像A")
    Sleep(適当な待ち時間を入れる。待つ必要がなければこのSleep自体が不要)
    Ifb ChkImg("画像B")
      //画像Bをクリック。ただし見つけた座標より若干内側にしないと空振りの
      //危険があるので、+2している。この値は適当に調整のこと
      Btn(Left,Click,G_IMG_X+2,G_IMG_Y+2,20)
      //この後続けて画像Cもチェックしたい場合は、次のContinueを消す
      Continue
    EndIf
    If ChkImg("画像C") Then Btn(Left,Click,G_IMG_X+2,G_IMG_Y+2,20)
  EndIf
  Sleep(適当な待ち時間を入れる。)
Wend

ちなみにIFB~ELSE~ENDIFの書き方は、特に悩むことはなくて…

Ifb 条件
  条件成立時の処理
Else
  条件不成立時の処理
EndIf

の形になります。Elseの後でさらに条件判定をしたければ、ElseIfとするか、あるいはElseの下にさらにIfあるいはIfbを書きます。次のような感じで。

Ifb 条件A
  条件A成立時の処理
Else
  Ifb 条件A不成立時のさらなる条件B
    条件B成立時の処理
  EndIf
EndIf

> 加えてBを判定してクリック、Cを判定してクリックというのは

それは、画像BとCがどちらも存在するので両方ともクリックしておくと言うことか、それともBがなければCをクリックするのか、どっちでしょう?前者の場合はELSEは使わない(って言うか使えない)ので、IFを二つ並べるしか方法はないです。なぜなら、IFB~ELSE~ENDIFの形にすると、最初のIFBの条件を満たした場合はELSE以下は実行されず、ENDIFに抜けてしまいます。

と言うことを踏まえて書くと、次のような感じでしょうか。

While True
  Ifb Ch...続きを読む

QUWSC画像認識で座標の位置がずれてしまいます。

ifb CHKIMG( "XXX", -1, 0, 0, 0, 0, -1,  )
x=G_IMG_X // 画像の座標をxへ代入
y=G_IMG_Y // 画像の座標をyへ代入
endif

パソコンを変えた途端にこの症状は発生しました。

x,yの変数をメッセージボックスで出しているのですが、実際の画像と異なった座標を指定していまいます。

他の座標ツールとは座標が異なっているのです。

画像をクリックしてみても、実際の画像の位置とは違う場所をクリックしてしまいます。



画像の座標は一番左上が表示されることは存じております。

グラフィックボードを実装しています。OSのバージョンは8.1です。
原因は何が考えられるでしょうか。ご教授お願いいたします。

Aベストアンサー

まず最初に関数の使い方がおかしいです。
戻値 = CHKIMG( [画像名, 透過色/色無視, x1, y1, x2, y2, 番号, 色幅] )

>ifb CHKIMG( "XXX", -1, 0, 0, 0, 0, -1,  )

正しく書くなら
ifb CHKIMG( "XXX", -1, 0, 0, 0, 0, -1 )
もっと言えば、x2,y2の範囲を指定すべきです。
指定する座標は絶対値です。


画面全体から指定した画像が無いか調査する
CHKIMG( "XXX", -1, 0, 0, G_SCREEN_W, G_SCREEN_H, -1 )


ただし、画面全体からでは動作が結構重くなります。

以下のようなスクリプトで予め画像の座標の確認をしてから調整しておくと動作が軽快になります


// 左クリックしたマウス位置を表示
Ifb GETKEYSTATE( VK_LBUTTON ) = TRUE THEN
MSGBOX ("マウスX座標" + G_MOUSE_X + " マウスY座標" + G_MOUSE_Y)
Endif


認識させる画像の大きさにも依存しますが、多少のずれを考慮し
大体の場所±100くらいを画像の検索範囲として設定するといいかもしれません。

まず最初に関数の使い方がおかしいです。
戻値 = CHKIMG( [画像名, 透過色/色無視, x1, y1, x2, y2, 番号, 色幅] )

>ifb CHKIMG( "XXX", -1, 0, 0, 0, 0, -1,  )

正しく書くなら
ifb CHKIMG( "XXX", -1, 0, 0, 0, 0, -1 )
もっと言えば、x2,y2の範囲を指定すべきです。
指定する座標は絶対値です。


画面全体から指定した画像が無いか調査する
CHKIMG( "XXX", -1, 0, 0, G_SCREEN_W, G_SCREEN_H, -1 )


ただし、画面全体からでは動作が結構重くなります。

以下のようなスクリプト...続きを読む

Quwsc画像認識のあいまい判定について

uwscのCHKIMG関数にて画像を判定したマクロを組むことは出来たのですが、1ドットでも変化があると同じ画像として判定されません。

しかし調べてみると、あるブログにはuwscで画像のあいまい判定が可能と書いてありました。
もしかしたらほかに情報が出てこない以上、失礼ですがそのブログの人の勘違いという可能性もありますが、検索して出来た以上気になります。これは可能なのでしょうか?可能なのでしたら方法を教えていただけませんか?

あと今回のことにはあまり関係ありませんが、uwscのヘルプが目次で項目をクリックしているのですが表示されません。開き方が間違っているんでしょうか?

Aベストアンサー

>しかし調べてみると、あるブログにはuwscで画像のあいまい判定が可能と書いてありました。

どうやら有志の方がCHKIMGXという拡張関数を作成されているようですよ。
調べてみてください。

QUWSCの終了の仕方

UWSCの終了の仕方

仕事でUWSCのマクロソフトを使っています。
一箇所の部分だけ素早くクリックをループさせるマクロをしていますが、
アプリケーションを開いて使うため、ALT+1などを押しても終了することなく
アプリケーション側のALT+1の動作があるので困っています。
ただただマウスを動かして終了しようとしても、どうすることもできなくて、
結局はログオフにしてしまいました。

UWSCを好きなときに一時停止、もしくは強制終了をすることは可能でしょうか?
やり方を教えて下さい。もし、プログラムなどで終了させる方法がありましたら
初心者でも分かるように教えて頂ければ幸いです。

Aベストアンサー

ループしているマクロの中に以下の一文を書いてください
If GetKeyState(Vk_Esc) Then Break

Escキーを押すとループから抜けます。

Q仮想環境でさくさくう動かすのに必要なスペック

こんどデスクトップPCを買おうと思っております。
その際以下のような用途で用いようと思っております。

・OSはWindows7
・メモリは4GB~
・HDDは外付けデバイスが余っているので容量はすくなくともOK
・仮想環境(virtual box)で実験のためWebサーバやファイルサーバのlinuxサーバを2つ程度立てる。
その際、ホストOSのwindos7も普通に使う分にはサクサク動いて欲しい。

最後の条件に必要なCPUはどのくらいの性能が要求されるでしょうか?
特にホストOSでは画像編集などの重たい処理は行いません。

たとえば、http://kakaku.com/pc/desktop-pc/ma_0/p1001/のページならどの程度のCPUがよいでしょうか?Athlon II X2 Dual-Core 260などを一応考えていますが。

アドバイスよろしくお願いします。

Aベストアンサー

まぁ仮想なので余り期待せずという事前提でネックを解消していくというのが正しいかと

速度求めるならintelならsandy以降でvt対応
メモリーは本体OSが4G仮想が4G使うと考えたら8G以上

この基準満たすとcpuはある程度もう切り分けされるので
後は諸事情に合わせるだけとかになりますよ。
vtだと下位は全滅ですしsandy以降となるとその世代のミドルからハイの数製品だけ対応だと思いますので
かと言って世代が全部近いのでパワー差が広い訳では無いので元々重い仮想での使用だと
どれを使っても、ものすごい差が現れる訳では無いはずですから。

もし圧倒的な差が有るかも知れないって部分がvtですので
そこを揃えてしまうとcpuの能力差って事になりますがそれも世代が近いので差が狭い。

ただamdとintelでのなるとミドルとハイ位の差が有るので
そもそもそれなりの差自体を抱えているかと思います。
現世代では無いですけど価格でも性能でもci7 2600にしといた方がいいと思うんですが

ただ元々仮想は重いので予算けちりたいからamdだと言うなら別にamdでも構わないと思います。
vt両方対応している2600なら速度も価格も実質安いんでは無いかと言うだけの話なので

athlon II X2 Dual-Core 260だとそもそもパワー足りないのでは?
三世代ぐらい前のパワーでしょう・・・それしか買えないというならまぁ諦めるかその近辺でvt対応探す位が限界かと。

まぁ仮想なので余り期待せずという事前提でネックを解消していくというのが正しいかと

速度求めるならintelならsandy以降でvt対応
メモリーは本体OSが4G仮想が4G使うと考えたら8G以上

この基準満たすとcpuはある程度もう切り分けされるので
後は諸事情に合わせるだけとかになりますよ。
vtだと下位は全滅ですしsandy以降となるとその世代のミドルからハイの数製品だけ対応だと思いますので
かと言って世代が全部近いのでパワー差が広い訳では無いので元々重い仮想での使用だと
どれを使っても、ものすごい差が現...続きを読む

QUWSC 非アクティブウィンドウへのキー入力

こんにちは。「MapleStory」というゲームで非アクティブ状態でもキー情報が入力されるようにしたいのですが・・・ネットでいろいろ調べたところここまでたどり着きました。

while true

if GETKEYSTATE(VK_ESC) then exit //ESCで終了

id = GETID("MapleStory","MapleStoryClass")
ifb (ID < 0)
MSGBOX("ウィンドウが見つかりません")
exitexit //見つからなければ終了
endif

hwnd = GETCTLHND(id, "MapleStoryClass")
MOUSEORG(hwnd, 2)
KBD(VK_A,DOWN,200)

wend

↑のように書けば非アクティブでもAが入力されると思ったのですが、アクティブ状態でしか入力してくれません。
どのようにしたら良いのでしょうか?どなたかご教授お願いします。ちなみに調べたところクラスはMapleStoryClassの1つだけのようでした。

Aベストアンサー

そのやり方には、重大な欠陥が二つあります。

1)
MOUSEORG関数は、座標原点を移動させるだけであって、アクティブウィンドウを切り替えたりイベントの送り先を切り替えたりする機能は持たない

2)
KBD関数が発生するキー操作イベントは必ず、アクティブウィンドウに対してのみ送信され、バックグラウンドのウィンドウにはどうやっても行かない。これはBTN関数も同様

キー入力の送り先を指定するときはKBD関数じゃなくて、SCKEY関数を使いましょう。これなら送り先のウィンドウIDを指定できます。とりあえずこんな感じ?

//hwnd = GETCTLHND(id, "MapleStoryClass")
//MOUSEORG(hwnd, 2)
SCKEY(id,VK_A)


人気Q&Aランキング