【マクロ】 UWSC Part4 【シェアウェア化】
ファイルを検索して実際に有るスクリプトのファイル名を取得すればいいだろう。
しかしいちいち日付なんかつけなきゃ済む事だろ。
>>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
そういうのは現バージョンのファイル名は固定にして
バックアップしたフォルダのほうだけ日付つけりゃいいだけじゃん。
いろんなソフトみたって、実行ファイル自体のファイル名に
バージョンやら入ってる事なんて無いだろ…常識で考えろ
それじゃ日付変わったら確実に動かないな。
お前の質問に全てyesになる根拠はどうみてもゼロだろ。
日付とればいいだけのことなのに
どうしても日付はつけたままにしておきたいというのなら
>>947の言うとおり、GETDIRで存在するファイル名取得すればいいだけ
952 :
945:2008/10/25(土) 21:14:29 ID:QrnfltsL0
どうもみなさんありがとうございます。
GETDIRを使えばたしかにいけそうですね。
バージョン管理は普通のファイル(エクセルやワード)の場合は「○○○_1025」でやっていて問題なく、
人に提出するときにも便利だった(むしろ日付なりバージョンの記載が求められる)ので良かったんですが
ソフトなどの場合は、不都合でますね・・・。
>>949 さんの言うとおり変更発生したあとに付けるというやり方に倣いたいと思います。
UWSCのスクリプトをUWSC自身のランチャー以外から実行すると、
"STOPFORM(FALSE)"を記述しても非表示のウインドウが作成されて
フォーカスを奪い、実行直前のアクティブウインドウを取得できず困っています。
非表示のウインドウが作成されないようにする方法は無いのでしょうか。
すみません、間違えました。
ウインドウを作成しないなんて無理に決まっています。
ウインドウがフォーカスを奪わないようにする方法です。
解決できそうな方法は、
ランチャーをUWSCで作って、CALLするときにアクティブウィンドウを取得しておくとか。
あと、.uwsの関連付けのときにUWSC.exeの呼び出し方法を記述しているはずだけど
UWSC本体を非表示にするオプションを付けて起動するとか。
exeへのショートカットにはウィンドウの大きさを指定するあったと思うけど関連付けで非表示は、できたっけなあ・・・?
>>954 起動時に表示で起動されてるかもしれないから難しいよ。
起動後に非表示にしてもフォーカスは奪った後だろうし。
>>956 たとえば以下のようにしてもアクティブウインドウのタイトルは"Test.uws"です。
Set Shell=CreateObject("WScript.Shell")
Shell.Run "C:\Uwsc\UWSC.exe C:\Uwsc\Uws\Test.uws", 0, false
>>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といったキーカスタマイズソフト(=常時キーを監視するソフト)から??特定のキーを
押したときに、スクリプトを呼び出すようにする。??上記のキーカスタマイズソフトには、
キーを押した時点の??ウィンドウ名やアプリ名、クラス名を取得できる機能があるので??
自分の作ったスクリプトに、引数としてその値を渡すことが出来る。
>>958 窓使いの憂鬱はMeなので使えません。
ノドカに関してはわかりませんえした。
AHKについても調べましたが、AHKのスクリプトを書けるのなら
そもそもUWSCを使って処理する必要がなくなってしまいます。
UWSC単独では解決できないようなのであきらめます。
ありがとうございました。
(でも、どうして非表示のウインドウがフォーカスを奪ったりするんだろう)
透明ウィンドウが出現してフォーカスを持っていくんなら、
Alt+EscかAlt+Tabで入れ替えてやればいいかもしれない。
自分自身がアクティブじゃないときにやっちゃいけないから、自分自身がアクティブかを確認しないと。
でも自分がアクティブになってるかどうかって、どのウィンドウで確認すればいいんだろ?
とりあえずアクティブウィンドウを取って、
自分自身に関係するの全部と比較か。
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で取れた。
>>961 大変ご親切にありがとうございました。
こちらの環境でも正常に動作しました。
ですが、先にも書きましたようにAHKを使うのであればなにも
UWSCを使わなくても、処理自体をAHKにやらせれば済む話なので意味がありません。
私は自分が知らないだけで、ウインドウがフォーカスを奪わないようにする方法が
あるのではないかと思い質問した次第です。
失礼な物言いをお詫びいたします。
>>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("")
>>963 960さんでしょうか、961さんでしょうか?
確かにほぼ100%取得可能です。
望んでいた物とは違いますが、処理するプロセスを手直しすれば
実用になると思います。
本当ににありがとうございました。
965 :
名無しさん@お腹いっぱい。:2008/11/07(金) 01:05:03 ID:8LGBQYpD0
>>964 例えば、どんな用途で使う予定だったの?他の人の参考になるかもしれないんでよかったら教えてください。
こちらでお伺いしてよいかもわかりませんのですれ違いなら申し訳ありません。
UWSCとvirtualPCを併用しておりますが、仮想PC内でUWSCでマクロを起動します。
そこで、親機に戻ると操作も止まってしまうのですが、
いわゆる仮想PC内(裏で)マクロを実行し続けることは可能でしょうか?
>>966 > 親機に戻ると操作も止まってしまう
なんでだろうね。
VMwareでは、仮想PC内のマクロは親とは無関係に単独で動くんだけど。
VirtualPCで非アクティブ時に止まるような設定にしてるんじゃないの
>>967-968 すばやい回答ありがとうございます。
VP上のオプションから見てみましたが、パフォーマンスのところの非アクティブ時に一時停止するは
チェックが入ってませんでした。
UWSCでマウスを動かす操作を保持しつつ、→ALTでホストに復帰してるんですが、どうもUWSCだけが止まってるよう
なかんじです
VPC→ホストに切り替え時にUWSCの動作を保持というのは皆様、問題なくできているのでしょうか?
stopボタン押下時のイベントハンドラって書けますか?
やりたいこととしては、マクロ開始時にロードしたdllが
プロセス展開してるのでcloseする処理を入れたいのですが><
調べてもよくわからなかったので質問させていただきます。
とある文字列をクリップボードにコピーして、その中から特定の文字列を抜き出したいのです。
例えば abcdifg ID:123456 abcdefg をクリップボードにコピーします。
この文字列の中からID:の横の123456だけを抽出してクリップボードに戻すという事をしたいです。
ただ、ID:の文字以外の文字は毎回違うのでどうすればいいのか教えていただけませんか?
>>971 SENDSTR( 0, BETWEENSTR( GETSTR( 0 ), "ID:", " ", ), , TRUE, )
無理かな
973 :
名無しさん@お腹いっぱい。:2008/11/22(土) 18:23:53 ID:ObZbScyR0
>>971 検索に正規表現を使ってもいいし、
Between()でID:から改行までを取り出し、それをreplaceで置き換えてもいいし
でも、人間の操作をチカンするのって嫌いなんだよね。
昔MSチャットで自分のメアド交換しようとしているのに、自動的にストーカーのメアドに置換されてて、
メールを送ってもらってもストーカー経由でしか連絡取れず、
当時連絡を取り合った相手は次々に殺されていったよ。
だからスパイウェアっぽいやつは全部嫌い
>>971 UWSCの仕様がよくわかってない私が答えるのもなんなんだけど
クリップボード内での展開ってのがミソですね
ということはUWSC自体が正規表現を扱えるのかがポイントだと思う
私も同じようなことを模索した経験があるんですけど
結局、私は急いでいたので解答待ちをしないで
正規表現の使えるエディターを自動操作して間に合ったんだけど
クリップボード内での展開でUWSC自身が正規表現を使えるか私も興味あります
解答レスじゃなくてスマソ^^;
あんまり関係ないんじゃない?
正規表現だったら1行で表せるけど
使えないから数行使いました。程度でしょ
クリップボードの文字列を取り出して置き換えるだけの話だし
>>976 何が関係ないの?
検索するのに正規表現つかわない?
ていうかUWSCで正規表現使えるかが知りたいので
関係ないといわれてもお前のレスのほうが関係ないよってかんじかな
こんなやつ、つい最近も別スレでみたな…分かりやすい
どうでもいい会話が好きなようだ
UWSCで正規表現が使えるのかそれだけ教えてくれってことわかんないのかよ
空気の読めない奴だ
お前のレスはいらないので
>>971に詳しく説明してあげればいいよ
といってもお前の会話能力で
>>971が理解できるように伝わるのかは疑問だがなw
出かけるのでレスいらないよ
んじゃな
>>975 あなたの言う、「クリップボード内での展開」ってどういう意味?どういうのを想像してるの?
ミソとか言われてもさっぱり想像できない。
クリップボード内の文字列を、取り出し->置換->格納じゃなくて
直接、置換できるような想像してるの?
置換する手段に正規表現を使うかどうかなんてどうでもいい
関係大有りさ
正規表現で無いと取り出せない文字はどうすんの
私の場合まさにそれだったんだ
それでUWSCスレや本家サイトに質問しても頓珍漢な解答ばかりで全く進まなかった
結局、テキストにしてエディターでやれば簡単だったってこと
テキストエディター使わなくてもいいかどうかを聞いてたの
つまりクリップボード内で全て完結できますかってこと
もしできるのであればサンプル欲しいね
本当にできるのか検証しないとね
プログラム関係の解答者は自己満足の嘘つきオナニー解答者が多いからな。
以前質問したときはあなた居なかったんだね
サンプルよろしくね
マジででかけるのでレスできないからヨロ
クリップボード内ってどういう事かと思ったらそう言うことですか。
正規表現で表現できるのに
プログラム的に表現できないなんてことはないですよ。
元質問者の方は正規表現なんて関係ない話なのでこれで終わりにしますけどね
つまらんことでスレ伸びすぎ
トークン取り出せば委員だろ?
もっと低レベルの関数で十分。
下手にregexp使う必要など無い。
986 :
名無しさん@お腹いっぱい。:2008/11/23(日) 10:37:09 ID:6RUEQI4a0
WHILE TRUE 文で、特定の画像がなければそれまでのループを一時停止して、
他の動作をする。
こういうのを作りたいんですがどうやってループとめるんでしょうか?
987 :
名無しさん@お腹いっぱい。:2008/11/23(日) 10:45:50 ID:wxFyQTZV0
別処理がuwsc内なら、別処理を関数化する。
別処理がuwsc外なら、sleepさせる。
正規表現ならCreateOleObject("VBScript.RegExp")でええんちゃうのかしら
あ、CreateOleObjectって関数はないね
CreateOleObjだった
しばらく触ってなかったから書き方忘れてたけど
今書いて試してみたらCreateOleObj("VBScript.RegExp")で置換できたよ
>>985のリンクに書いてあるね、見逃してたよ
何度も書き込んでゴメンネ、ゴメンネ(´・ω・`)
uwscのbotで食いつなぐとか終わってんなw
むしろそれだけで食いつなげる現状に圧倒されるww
シナ人boterとか家が建てられるらしいしな
家を建てるまではいかない日本人でもそれなりにいい小遣いになるはずだ
アイテム課金が増えた今は儲かるのかよく分からんけど
UWSCのスレや掲示板見てたら
色判別して何かしたい…って質問があったら
10件中、7,8件はネトゲ、残りの1,2件は株、で残りその他って感じだもんな…