【マクロ】 UWSC Part4 【シェアウェア化】

このエントリーをはてなブックマークに追加
947名無しさん@お腹いっぱい。:2008/10/25(土) 19:34:33 ID:KGc2HRUi0
ファイルを検索して実際に有るスクリプトのファイル名を取得すればいいだろう。
しかしいちいち日付なんかつけなきゃ済む事だろ。
948名無しさん@お腹いっぱい。:2008/10/25(土) 19:38:30 ID:HLUKfRFC0
>>945
俺がした質問の答えがすべてyesなら

GETTIME()
EXEC( "C:\パスA\uwsc44c\UWSC.exe C:\パスB\○○○_"+G_TIME_MM2+G_TIME_DD2+".uws", TRUE)

これでできる
949名無しさん@お腹いっぱい。:2008/10/25(土) 19:41:33 ID:gMwmlNqd0
そういうのは現バージョンのファイル名は固定にして
バックアップしたフォルダのほうだけ日付つけりゃいいだけじゃん。

いろんなソフトみたって、実行ファイル自体のファイル名に
バージョンやら入ってる事なんて無いだろ…常識で考えろ
950名無しさん@お腹いっぱい。:2008/10/25(土) 19:42:14 ID:KGc2HRUi0
それじゃ日付変わったら確実に動かないな。
お前の質問に全てyesになる根拠はどうみてもゼロだろ。
951名無しさん@お腹いっぱい。:2008/10/25(土) 19:47:15 ID:mSYkfDb70
日付とればいいだけのことなのに
どうしても日付はつけたままにしておきたいというのなら
>>947の言うとおり、GETDIRで存在するファイル名取得すればいいだけ
952945:2008/10/25(土) 21:14:29 ID:QrnfltsL0
どうもみなさんありがとうございます。
GETDIRを使えばたしかにいけそうですね。

バージョン管理は普通のファイル(エクセルやワード)の場合は「○○○_1025」でやっていて問題なく、
人に提出するときにも便利だった(むしろ日付なりバージョンの記載が求められる)ので良かったんですが
ソフトなどの場合は、不都合でますね・・・。
>>949 さんの言うとおり変更発生したあとに付けるというやり方に倣いたいと思います。
953名無しさん@お腹いっぱい。:2008/11/04(火) 05:48:40 ID:QjtSZc/e0
UWSCのスクリプトをUWSC自身のランチャー以外から実行すると、
"STOPFORM(FALSE)"を記述しても非表示のウインドウが作成されて
フォーカスを奪い、実行直前のアクティブウインドウを取得できず困っています。
非表示のウインドウが作成されないようにする方法は無いのでしょうか。
954名無しさん@お腹いっぱい。:2008/11/04(火) 06:48:47 ID:f4ddwzSy0
すみません、間違えました。
ウインドウを作成しないなんて無理に決まっています。
ウインドウがフォーカスを奪わないようにする方法です。
955名無しさん@お腹いっぱい。:2008/11/04(火) 06:54:05 ID:LlX4Lb5G0
解決できそうな方法は、
ランチャーをUWSCで作って、CALLするときにアクティブウィンドウを取得しておくとか。

あと、.uwsの関連付けのときにUWSC.exeの呼び出し方法を記述しているはずだけど
UWSC本体を非表示にするオプションを付けて起動するとか。
exeへのショートカットにはウィンドウの大きさを指定するあったと思うけど関連付けで非表示は、できたっけなあ・・・?
956名無しさん@お腹いっぱい。:2008/11/04(火) 06:56:01 ID:LlX4Lb5G0
>>954
起動時に表示で起動されてるかもしれないから難しいよ。
起動後に非表示にしてもフォーカスは奪った後だろうし。
957名無しさん@お腹いっぱい。:2008/11/04(火) 07:27:44 ID:f4ddwzSy0
>>956
たとえば以下のようにしてもアクティブウインドウのタイトルは"Test.uws"です。

Set Shell=CreateObject("WScript.Shell")
Shell.Run "C:\Uwsc\UWSC.exe C:\Uwsc\Uws\Test.uws", 0, false
958名無しさん@お腹いっぱい。:2008/11/04(火) 08:59:46 ID:r1JeEX8R0
>>953
こんな方法もあるけど・・・
窓使いの憂鬱、ノドカ、AHKといったキーカスタマイズソフト(=常時キーを監視するソフト)から
特定のキーを押したときに、スクリプトを呼び出すようにする。
上記のキーカスタマイズソフトには、キーを押した時点の
ウィンドウ名やアプリ名、クラス名を取得できる機能があるので
自分の作ったスクリプトに、引数としてその値を渡すことが出来る。
窓使いの中の設定= key M3-N =&ShellExecute("open", "C:\Appli\AppliWindowName.UWS",$WindowTitleName,,ShowNormal)
UWSCのスクリプトAppliWindowName.UWSに、キーを押した時点の 
アクティブだったアプリのフルパスと、ウィンドウ名を引数で渡すという意味。

スクリプトのPARAM_STRで取得できる値は、":"区切りで渡される以下のものになる。
D:\Jane Style\Jane2ch.exe:Jane Doe Style 【ソフトウェア】 - 【マクロ】 UWSC Part4 
【シェアウェア化】:::::::書き込み:>>953??こんな方法もあるけど・・・??窓使いの憂鬱、ノドカ、
AHKといったキーカスタマイズソフト(=常時キーを監視するソフト)から??特定のキーを
押したときに、スクリプトを呼び出すようにする。??上記のキーカスタマイズソフトには、
キーを押した時点の??ウィンドウ名やアプリ名、クラス名を取得できる機能があるので??
自分の作ったスクリプトに、引数としてその値を渡すことが出来る。
959名無しさん@お腹いっぱい。:2008/11/05(水) 05:15:02 ID:feItVUPD0
>>958
窓使いの憂鬱はMeなので使えません。
ノドカに関してはわかりませんえした。
AHKについても調べましたが、AHKのスクリプトを書けるのなら
そもそもUWSCを使って処理する必要がなくなってしまいます。
UWSC単独では解決できないようなのであきらめます。
ありがとうございました。

(でも、どうして非表示のウインドウがフォーカスを奪ったりするんだろう)
960名無しさん@お腹いっぱい。:2008/11/05(水) 09:29:06 ID:uUSyLZGS0
透明ウィンドウが出現してフォーカスを持っていくんなら、
Alt+EscかAlt+Tabで入れ替えてやればいいかもしれない。
自分自身がアクティブじゃないときにやっちゃいけないから、自分自身がアクティブかを確認しないと。
でも自分がアクティブになってるかどうかって、どのウィンドウで確認すればいいんだろ?

とりあえずアクティブウィンドウを取って、
自分自身に関係するの全部と比較か。
961名無しさん@お腹いっぱい。:2008/11/06(木) 00:44:58 ID:NCVccmDS0
AutoHotKeyのZip版で試したら動いたんで参考がわりに。
環境はWindows2000。MEで動くかはわからん。
以下を TestUWSC.ahk として保存。
autohotkey.exeにドロップするか、関連付けて実行。
↓ではUWSC.exeとAHKtest.uwsのフルパスはとりあえずプログラムフォルダーのUWSC。
Windows+Gキーを押すたびに、AHKTest.uwsに、
アクティブウィンドウの"プログラム名" "クラス名" "ウィンドウ名"が渡る。

#g::
WinGet Process,ProcessName,A
WinGetClass, class, A
WinGetTitle, Title, A
Run,"C:\Program Files\uwsc\uwsc.exe" "C:\Program Files\uwsc\AHKTest.uws" "%Process%" "%class%" "%title%"
return


//AHKtest.uwsの中身。↓で引数で受け取って、メッセージボックスで表示
//AHKtest.uws
プログラム名=PARAM_STR[0]
クラス名=PARAM_STR[1]
ウィンドウ名=PARAM_STR[2]
ID=getid(ウィンドウ名,クラス名)
msgbox(ID+"<#CR>"+プログラム名+"<#CR>"+クラス名+"<#CR>"+ウィンドウ名)

// ちなみに、サクラエディタで試したとき、Windows+Gでフォーカスがアクティブから外れ、
//ウィンドウ名が変わる。そのためIDは-1となった。ほかのアプリは1で取れた。

962名無しさん@お腹いっぱい。:2008/11/06(木) 17:54:07 ID:1r3Epgs00
>>961
大変ご親切にありがとうございました。
こちらの環境でも正常に動作しました。
ですが、先にも書きましたようにAHKを使うのであればなにも
UWSCを使わなくても、処理自体をAHKにやらせれば済む話なので意味がありません。
私は自分が知らないだけで、ウインドウがフォーカスを奪わないようにする方法が
あるのではないかと思い質問した次第です。
失礼な物言いをお詫びいたします。
963名無しさん@お腹いっぱい。:2008/11/06(木) 18:33:11 ID:KQG4S5qW0
>>962
一応ですね、奪ったフォーカスを返すことはできました。
最初ストップフォームのIDを取得しますが、Alt+ESCによって元のウィンドウをアクティブにします。
最初から切り替わってはいけないのならこの方法でもだめですが・・
エクスプローラー上でダブクリしたら、一瞬フォーカスを奪われるけど、またエクスプローラーが手前になります。

stopform(false)のとき、GetID(GET_ACTIVE_WIN)の結果はGetID(GET_THISUWSC_WIN)と同じになります。
stopform(true)のとき、GetID(GET_ACTIVE_WIN)の結果はストップフォームのIDとなり、、
Status(ID, ST_CLASS)で確認するしかないようです。

stopform(true)
ID = GetID(GET_ACTIVE_WIN)
print "ID:" + ID
print "hWnd:" + IDToHND(ID)
print "TITLE:" + Status(ID, ST_TITLE)
print "CLASS:" + Status(ID, ST_CLASS)

KBD(VK_Alt, DOWN); sleep(0.02)
KBD(VK_ESC); sleep(0.02)
KBD(VK_Alt, UP); sleep(0.02)

ID = GetID(GET_ACTIVE_WIN)
print "ID:" + ID
print "hWnd:" + IDToHND(ID)
print "TITLE:" + Status(ID, ST_TITLE)
print "CLASS:" + Status(ID, ST_CLASS)

sleep(5)
input("")
964名無しさん@お腹いっぱい。:2008/11/06(木) 19:37:36 ID:E9PDbUBD0
>>963
960さんでしょうか、961さんでしょうか?
確かにほぼ100%取得可能です。
望んでいた物とは違いますが、処理するプロセスを手直しすれば
実用になると思います。
本当ににありがとうございました。
965名無しさん@お腹いっぱい。:2008/11/07(金) 01:05:03 ID:8LGBQYpD0
>>964
例えば、どんな用途で使う予定だったの?他の人の参考になるかもしれないんでよかったら教えてください。
966名無しさん@お腹いっぱい。:2008/11/12(水) 17:15:28 ID:091ontS70
こちらでお伺いしてよいかもわかりませんのですれ違いなら申し訳ありません。

UWSCとvirtualPCを併用しておりますが、仮想PC内でUWSCでマクロを起動します。
そこで、親機に戻ると操作も止まってしまうのですが、
いわゆる仮想PC内(裏で)マクロを実行し続けることは可能でしょうか?
967名無しさん@お腹いっぱい。:2008/11/12(水) 18:18:38 ID:h3ZIBafh0
>>966
> 親機に戻ると操作も止まってしまう

なんでだろうね。
VMwareでは、仮想PC内のマクロは親とは無関係に単独で動くんだけど。
968名無しさん@お腹いっぱい。:2008/11/12(水) 18:55:14 ID:EGySMsKi0
VirtualPCで非アクティブ時に止まるような設定にしてるんじゃないの
969名無しさん@お腹いっぱい。:2008/11/12(水) 19:36:14 ID:091ontS70
>>967-968
すばやい回答ありがとうございます。
VP上のオプションから見てみましたが、パフォーマンスのところの非アクティブ時に一時停止するは
チェックが入ってませんでした。

UWSCでマウスを動かす操作を保持しつつ、→ALTでホストに復帰してるんですが、どうもUWSCだけが止まってるよう
なかんじです

VPC→ホストに切り替え時にUWSCの動作を保持というのは皆様、問題なくできているのでしょうか?
970名無しさん@お腹いっぱい。:2008/11/14(金) 09:48:18 ID:IEeZ1Zss0
stopボタン押下時のイベントハンドラって書けますか?
やりたいこととしては、マクロ開始時にロードしたdllが
プロセス展開してるのでcloseする処理を入れたいのですが><
971名無しさん@お腹いっぱい。:2008/11/22(土) 17:16:06 ID:CeFFXzl10
調べてもよくわからなかったので質問させていただきます。

とある文字列をクリップボードにコピーして、その中から特定の文字列を抜き出したいのです。

例えば abcdifg ID:123456 abcdefg をクリップボードにコピーします。
この文字列の中からID:の横の123456だけを抽出してクリップボードに戻すという事をしたいです。
ただ、ID:の文字以外の文字は毎回違うのでどうすればいいのか教えていただけませんか?
972名無しさん@お腹いっぱい。:2008/11/22(土) 17:30:05 ID:An2r9i5m0
>>971
SENDSTR( 0, BETWEENSTR( GETSTR( 0 ), "ID:", " ", ), , TRUE, )

無理かな
973名無しさん@お腹いっぱい。:2008/11/22(土) 18:23:53 ID:ObZbScyR0
>>971
検索に正規表現を使ってもいいし、
Between()でID:から改行までを取り出し、それをreplaceで置き換えてもいいし

でも、人間の操作をチカンするのって嫌いなんだよね。
昔MSチャットで自分のメアド交換しようとしているのに、自動的にストーカーのメアドに置換されてて、
メールを送ってもらってもストーカー経由でしか連絡取れず、
当時連絡を取り合った相手は次々に殺されていったよ。

だからスパイウェアっぽいやつは全部嫌い
974nZZnQUDwboA:2008/11/22(土) 18:24:57 ID:3jPGEQYg0
975名無しさん@お腹いっぱい。:2008/11/22(土) 18:34:37 ID:y+IWHAJ+0
>>971
UWSCの仕様がよくわかってない私が答えるのもなんなんだけど
クリップボード内での展開ってのがミソですね
ということはUWSC自体が正規表現を扱えるのかがポイントだと思う
私も同じようなことを模索した経験があるんですけど
結局、私は急いでいたので解答待ちをしないで
正規表現の使えるエディターを自動操作して間に合ったんだけど
クリップボード内での展開でUWSC自身が正規表現を使えるか私も興味あります
解答レスじゃなくてスマソ^^;
976名無しさん@お腹いっぱい。:2008/11/22(土) 18:51:18 ID:lFa4wson0
あんまり関係ないんじゃない?
正規表現だったら1行で表せるけど
使えないから数行使いました。程度でしょ

クリップボードの文字列を取り出して置き換えるだけの話だし
977名無しさん@お腹いっぱい。:2008/11/22(土) 18:55:30 ID:y+IWHAJ+0
>>976
何が関係ないの?
検索するのに正規表現つかわない?
ていうかUWSCで正規表現使えるかが知りたいので
関係ないといわれてもお前のレスのほうが関係ないよってかんじかな
978名無しさん@お腹いっぱい。:2008/11/22(土) 19:05:42 ID:wLfEl6LB0
こんなやつ、つい最近も別スレでみたな…分かりやすい
979名無しさん@お腹いっぱい。:2008/11/22(土) 19:09:30 ID:y+IWHAJ+0
どうでもいい会話が好きなようだ
UWSCで正規表現が使えるのかそれだけ教えてくれってことわかんないのかよ
空気の読めない奴だ
お前のレスはいらないので>>971に詳しく説明してあげればいいよ
といってもお前の会話能力で>>971が理解できるように伝わるのかは疑問だがなw
出かけるのでレスいらないよ
んじゃな
980名無しさん@お腹いっぱい。:2008/11/22(土) 19:12:34 ID:xP32C+F+0
>>975
あなたの言う、「クリップボード内での展開」ってどういう意味?どういうのを想像してるの?
ミソとか言われてもさっぱり想像できない。

クリップボード内の文字列を、取り出し->置換->格納じゃなくて
直接、置換できるような想像してるの?

置換する手段に正規表現を使うかどうかなんてどうでもいい
981名無しさん@お腹いっぱい。:2008/11/22(土) 19:20:19 ID:y+IWHAJ+0
関係大有りさ
正規表現で無いと取り出せない文字はどうすんの
私の場合まさにそれだったんだ
それでUWSCスレや本家サイトに質問しても頓珍漢な解答ばかりで全く進まなかった
結局、テキストにしてエディターでやれば簡単だったってこと
テキストエディター使わなくてもいいかどうかを聞いてたの
つまりクリップボード内で全て完結できますかってこと
もしできるのであればサンプル欲しいね
本当にできるのか検証しないとね
プログラム関係の解答者は自己満足の嘘つきオナニー解答者が多いからな。
以前質問したときはあなた居なかったんだね
サンプルよろしくね
マジででかけるのでレスできないからヨロ
982名無しさん@お腹いっぱい。:2008/11/22(土) 19:34:28 ID:xP32C+F+0
クリップボード内ってどういう事かと思ったらそう言うことですか。

正規表現で表現できるのに
プログラム的に表現できないなんてことはないですよ。

元質問者の方は正規表現なんて関係ない話なのでこれで終わりにしますけどね
983名無しさん@お腹いっぱい。:2008/11/22(土) 19:36:25 ID:An2r9i5m0
つまらんことでスレ伸びすぎ
984名無しさん@お腹いっぱい。:2008/11/22(土) 22:26:12 ID:XDMSxlYA0
トークン取り出せば委員だろ?
もっと低レベルの関数で十分。
下手にregexp使う必要など無い。
985名無しさん@お腹いっぱい。:2008/11/22(土) 23:44:35 ID:7V/62W9+0
>>ID:y+IWHAJ+0
ttp://iriyak.adam.ne.jp/wiliki/uwsc.cgi?

なんでこんなことでスレ伸びるんだべ…
986名無しさん@お腹いっぱい。:2008/11/23(日) 10:37:09 ID:6RUEQI4a0
WHILE TRUE 文で、特定の画像がなければそれまでのループを一時停止して、
他の動作をする。
こういうのを作りたいんですがどうやってループとめるんでしょうか?
987名無しさん@お腹いっぱい。:2008/11/23(日) 10:45:50 ID:wxFyQTZV0
別処理がuwsc内なら、別処理を関数化する。
別処理がuwsc外なら、sleepさせる。
988名無しさん@お腹いっぱい。:2008/11/23(日) 11:28:12 ID:ECfq5F6H0
正規表現ならCreateOleObject("VBScript.RegExp")でええんちゃうのかしら
989名無しさん@お腹いっぱい。:2008/11/23(日) 11:29:33 ID:ECfq5F6H0
あ、CreateOleObjectって関数はないね
CreateOleObjだった
990名無しさん@お腹いっぱい。:2008/11/23(日) 11:40:54 ID:ECfq5F6H0
しばらく触ってなかったから書き方忘れてたけど
今書いて試してみたらCreateOleObj("VBScript.RegExp")で置換できたよ
991名無しさん@お腹いっぱい。:2008/11/23(日) 11:45:46 ID:cSsXoXHM0 BE:1249195695-2BP(808)
>>985
http://pc11.2ch.net/test/read.cgi/software/1176677869/452
botでやっと食いつないでる負け組の人が必死だからじゃね?
992名無しさん@お腹いっぱい。:2008/11/23(日) 12:29:39 ID:IJZCysaS0
>>985のリンクに書いてあるね、見逃してたよ
何度も書き込んでゴメンネ、ゴメンネ(´・ω・`)
993名無しさん@お腹いっぱい。:2008/11/23(日) 13:43:59 ID:wxFyQTZV0
uwscのbotで食いつなぐとか終わってんなw
994名無しさん@お腹いっぱい。:2008/11/23(日) 13:45:20 ID:uKblIZr70
むしろそれだけで食いつなげる現状に圧倒されるww
995名無しさん@お腹いっぱい。:2008/11/23(日) 14:55:53 ID:KwNSV0jj0
シナ人boterとか家が建てられるらしいしな
家を建てるまではいかない日本人でもそれなりにいい小遣いになるはずだ
アイテム課金が増えた今は儲かるのかよく分からんけど
996名無しさん@お腹いっぱい。
UWSCのスレや掲示板見てたら
色判別して何かしたい…って質問があったら
10件中、7,8件はネトゲ、残りの1,2件は株、で残りその他って感じだもんな…