自動化ツールuwsc使いよ集まれ5at SOFTWARE
自動化ツールuwsc使いよ集まれ5 - 暇つぶし2ch90:名無しさん@お腹いっぱい。
09/12/27 19:25:42 Y9u003Cq0
UWSCではっていうか、
VIDタグに流し込まれたHTMLって普通にDOMアクセスできないですよね。
だけどHTMLソースコードをテキストで構造解析するのはちょっと大変。
そこで、DIVタグのIDさえ取れればその配下のエレメントを処理できる関数を書いてみました。
判定関数をEVALでCALLすることで汎用的に使えます。
まだ動かしてはいないんだけど、一応EVALが関数を実行してオブジェクトを返せることは確認しました。

>// DOMアクセスで再帰的に配下のエレメントをたどる。
>// EVALの結果がemptyでなくなったらやめて結果として返す。
>Function SrchDomTree( elm, func )
> result = empty
> // 先に直接の子ノードを調べる
> for i = 0 to elm.childNodes.length
>  ret = eval(func)
>  ifb ret then
>   result = ret
>   exit
>  endif
> next
> // 孫ノードに入っていく
> for i = 0 to elm.childNodes.length - 1
>  ifb elm.childNodes[i].childNodes.length then
>   ret = SrchDomTree( elm.childNodes[i], func )
>   ifb ret then
>    result = ret
>    exit
>   endif
>  endif
> next
>Fend

91:名無しさん@お腹いっぱい。
09/12/27 19:42:39 Y9u003Cq0
おっと。引数を追加する仕組みを忘れてました。
eval(func)のところは
eval( func + "(" + elm.childNodes[i] + env +")" )
呼び出しは
SrchDomTree( elm, "func", ", 引数2, 引数3" )
って感じになるかな?

判定関数はこんな感じ。
>// エレメントのouterHTMLを取ってAタグならIMG srcに"video_download.gif"があるか調べ、
>// あればouterHTMLからリンクアドレスを取得
>Function GetFLVLink(elm)
> result = empty
> str = elm.outerHTML
> ifb 1 = Pos( "<A", str ) then
>  ifb Pos( "video_download.gif", BetweenStr( str, "src=<#DBL>", "<#DBL>" ) ) then
>   result = BetweenStr( str, "href=<#DBL>", "<#DBL>" )
>  endif
> endif
>Fend
>
>// 指定されたリンク文字を持つリンクアドレスを取得
>Function GetKWDLink( elm, keyword )
> result = empty
> str = elm.outerHTML
> ifb 1 = Pos( "<A", str ) then
>  ifb Pos( keyword, elm.innerHTML ) then
>   result = BetweenStr( str, "href=<#DBL>", "<#DBL>" )
>  endif
> endif
>Fend

92:名無しさん@お腹いっぱい。
09/12/27 23:50:29 KdIVRt980
ieをアクティブにした状態で以下を実行してみたのですがcom_error例外が発生しました
となってしまします
というか2行目以降でieを使うとエラーになります
解説サイトなど探してもあっさり進んでしまうのですが…何か足りませんか?
よろしくお願いします

ie = CreateOLEObj("InternetExplorer.Application")
SENDSTR(0, IE.document.title)

93:名無しさん@お腹いっぱい。
09/12/28 00:21:27 GHkoEhmr0
>>92
変数や関数は大文字小文字を区別します。
ieはオブジェクトを受け取ってるけど、IEはオブジェクトを持ってないからエラーになります。
あと、document.titleのtitleもTitleと、大文字小文字を区別するのでエラーになるでしょう。
documentの方は割りと融通が利くようですが。

あと、IEオブジェクトなどはユーザーが閉じると無効になり、使えばエラーになります。
そういうのはそういうものとして使うか、終了を検知してスクリプトを適切に処理するかのどっちかになります。
ID = HNDToID(IE.HWND)
と、IDを取っておいて
ifb ! IDToHnd(ID) then
 // IDと元のIEオブジェクトは無効
 exit
endif
とやれば、com_error例外にならずに終了を判定できます。
IDToHnd()は終了検知に便利なのでお勧めです。

ちなみにウィンドウハンドルのゼロはデスクトップを意味するので、本来は数値で有効無効を判定できるものではないと思います。


94:名無しさん@お腹いっぱい。
09/12/28 01:24:44 8NfAzOMC0
win7では使用できますか?

95:名無しさん@お腹いっぱい。
09/12/30 11:24:56 3SgEgPry0
>>94
多分使えますよ。
でもいろいろ気をつけることはあるようです。
URLリンク(www.uwsc.info)


96:名無しさん@お腹いっぱい。
09/12/30 11:45:30 3SgEgPry0
OLEEVENTを使っていてどーもクラッシュしまくるので、前後にsleep()を入れてみたら少し改善したようだ。

右クリックメニューをポップアップウィンドウとして検出しようとしたけど、
GetWindow( IDToHnd(ID), GW_ENABLEDPOPUP ) で取得できるのはダイアログ・ツールチップのほか、サブメニューだけっぽいね。
1個目のメニューは右クリックメニューですらポップアップじゃないらしい。
GetID( "", "#32768" )でいけるって本家の過去ログに書いてあったんだけど、やっぱそれが現実的だった。
メニューは簡単に閉じるから名前なし親子関係なしでも案外正しく取れるもんだ。
ただ、クリックできない病気のためにうまくいかない。

しかし、サブメニューの操作が必要なときはその方法ではIDが取得できないだろう。
サブメニュー用のID取得関数がたまたまできたので次レスに投稿する。
ちなみに、親子関係はメインウィンドウの子ということになる。
間違っても親メニューの子ではないので注意が必要。
いや、もしかすると親メニューの子であり、メインメニューの孫だったりするかもしれないが。

GetIDでやっているような、タイマーと永久ループの指定可能な関数にしてみたんだが、
それをfor文でやれるかなと思ったけど、回数を決定できる条件じゃないとだめだった。
具体的には、step0で永久ループにしようと思ったんですが、実行時に警告が出ました。
浮動小数点演算ではやってはいけない、ちょうど0になったときだけ終了という条件にすることでシンプルにできました。
ちゃんと動くかは試してないけど、まあ大丈夫でしょう。

ちなみに、動作確認などのテストコードに番号を振ってるんですが、そのfor文が108番でした。
間は結構飛び飛びだけど、年末にその番号にあたったんでなんだか縁起がいいかもです。


97:名無しさん@お腹いっぱい。
09/12/30 11:57:01 3SgEgPry0
// サブメニューのIDを取得する。
// TLimit=-1 : 永久待ち
// TLimit=0 : 1回のみ
// 戻り値 0 : 該当なし -1:ダイアログ表示 その他:サブメニューのID
Function WaitSubMenuPopup( ID, TLimit = -1 )
 def_dll GetWindow(hWnd,long):long:user32.dll
 Public GW_ENABLEDPOPUP = 6   // ポップアップウィンドウ
 result = 0
 H = IDToHnd(ID)
 Repeat
  sleep(0.01)
  if 0 < TLimit then TLimit = TLimit - 0.01
  retH = GetWindow( H, GW_ENABLEDPOPUP )
  if ! retH then continue
  retID = HndToID(retH)
  Select Status(retID, ST_CLASS)
   case "#32768"  // メニュー
    result = retID
    exit
   case "#32770"  // ダイアログが表示されたらエラー中断
    result = -1
    exit
  Selend
 Until ! TLimit
Fend

98:名無しさん@お腹いっぱい。
09/12/31 18:28:22 Z8Iw0iCS0
FOR文の使い方について教えてください。
以下のように書くと10から20までの数字が画面に表示されます。

FOR i = 10 TO 20 STEP 1
    FUKIDASI( i)
    SLEEP( 1)
NEXT

ところが各数字を10分の1にすると1から1.9までの数字しか表示されません。

FOR i = 1.0 TO 2.0 STEP 0.1
    FUKIDASI( i)
    SLEEP( 1)
NEXT

これはどうしてなのでしょうか?

99:名無しさん@お腹いっぱい。
09/12/31 19:15:53 8NQ2XvCh0
STEP 0.2だと2が表示されるな。
挙動がようわからん…
何か0.124と0.125の間あたりで切り替わるようだが…
とりあえず
FOR i = 10 TO 20
//   多用するならj = i / 10とかして使う
    FUKIDASI( i/10)
    SLEEP( 1)
NEXT
とかするのが無難そうね。

100:名無しさん@お腹いっぱい。
09/12/31 22:41:43 WvG0KKdQP
>>98
誤差の影響です。
コンピュータはすべて2進法で計算していますが、
この2進法では0.1という数字を「正確に」扱う事が出来ないのが原因です。

これは私たちの身の回りにもよくある話です。
私たちが普段使っている10進法では「1/9」を小数で表現すると
0.1111・・・ですよね。
1/9を9個足せばもちろん1です。
しかし
0.111111111111111111と途中で数字を切り捨てて計算を続けたらどうでしょうか?
これを9個足しても
0.999999999999999999にしかならず、決して1にはなりませんね。

もちろん工夫をする事によってこの問題を回避する方法を持っている
計算プログラムも存在していますが、難しい処理が必要になるため
プログラムの価格が高価であったり計算する時間が長くなったりします。
uwscのようなプログラムでは一般的に誤差を持っています。

誤差を極力減らすためには>>99さんがおっしゃるように
なるべく整数のまま計算をするのが最も効果的な方法といえます。

101:名無しさん@お腹いっぱい。
10/01/01 00:05:54 zRjPwPJp0
>>100
お前、頭いいな。
どこ大学出よ?

102:名無しさん@お腹いっぱい。
10/01/01 01:08:17 SeLmUNNh0
この場合は誤差はないと思いますけど。

原因は多分、0.0を0と計算できないこと・・・
いや、やっぱり誤差かな?
回数を計算するときにUWSC内部で
(2.0-1.0)/0.1とかやってるんだろう。

10進数の0.1は、2進数で・・・
URLリンク(www.infonet.co.jp)
> ところで、10進数の 0.1 は、2進数では正確に表すことができず、 その近似値は 0.00011001100110011001100 … になります。

てことは・・やべ>>97は無限ループだ。
全て100倍して整数値で計算しないと。
んでもって確実に整数値にするためにINT()とか使わないと。


103: 【末吉】   【1885円】
10/01/01 01:51:39 SeLmUNNh0
!omikuji !dama

104: 【ぴょん吉】 【605円】
10/01/01 01:56:44 JMt2GOx60
てすと

105:名無しさん@お腹いっぱい。
10/01/01 10:05:06 SeLmUNNh0
> Until !CEIL(TLimit)
>>97は判定をこーするだけでいいな。
複数条件だと論理演算がふつーにはできんからややこしくなるし。
!!(条件1) and !!(条件2)でも通るかもしれんけど。


106:98
10/01/01 11:48:35 pAk0r2E30
>>99-100

回答ありがとう。なるほど。

小数点以下を多めに表示させるとこうなりました。

FOR i = 1.0 TO 2.1 STEP 0.1
    FUKIDASI( FORMAT( i, 19, 17))
    SLEEP( 1)
NEXT

1.00000000000000000
1.10000000000000009
1.19999999999999996
1.30000000000000004
1.39999999999999991
1.50000000000000000
1.60000000000000009
1.69999999999999996
1.80000000000000004
1.89999999999999991
2.00000000000000000

0.1を正確に表せないとはいえ、誤差が拡大しないように調整されてるのかな。
回数が狂うのは>>102の言うように実行回数計算を別途やっていてその時点で誤差が出てるんですかね。

107:98
10/01/01 16:45:33 wjuaj82V0
小数の問題っていろんなところに出るんだなぁ。
ROUND関数って小数点以下を四捨五入する関数なんだと思うけど
入れる数字によってはおかしくなる。

FUKIDASI( ROUND( 12.5))
SLEEP( 1)

108: 【大吉】   【313円】
10/01/01 18:36:08 h6GpVGPr0
FUKIDASI( hoge(12.5))
SLEEP(1)

Function hoge(num)
 num = num + 0.5
 num = int(num)
 Result = num
Fend
これだとまともに動くなw
中でどんなことやってるんだろうか…

109:名無しさん@お腹いっぱい。
10/01/01 21:30:04 RTODHS/O0 BE:4155991698-2BP(0)
恐らくヘルプにも四捨五入とは書かれておらず「丸める」とあるはずです。
>>107の挙動を見る限り一般的に使用されている「偶数丸め」をそのまま採用しているかと。

偶数丸めというのは12.5のように12と13の中間の値を取る場合は
偶数側の値に切り捨てを行う処理方法です。13.5であれば切り上げて14とします。

round(14.5)も14になるはずですよ。

110:名無しさん@お腹いっぱい。
10/01/03 10:53:27 r0VUyURQ0
>>90の修正
文字列をEVALに渡す場合、ダブルクォーテーションを付加しないと変数扱いになる。
数値を渡す場合は不要なので、SrchDomTreeを呼ぶときに付加しておいたほうがいいっぽい。
// SrchDomTree( "func", IE.document.getElementById("my_footer"), "<#DBL>文字列<#DBL>", "123" )

// Function SrchDomTree( func, elm, env1 = 0, env2 = 0, env3 = 0, env4 = 0 )
//  result = empty
//  // 先に直接の子ノードを調べる
//  for i = 0 to elm.childNodes.length - 1
//   ret = eval( func + "(" + "elm.childNodes[i]" + "," + env1 + "," + env2 + "," + env3 + "," + env4 +")" )
//   ifb !IsEmpty(ret) then
//    result = ret
//    exit
//   endif
//  next
//  // 孫ノードに入っていく
//  for i = 0 to elm.childNodes.length - 1
//   ret = SrchDomTree( func, elm.childNodes[i], env1, env2, env3, env4 )
//   ifb !IsEmpty(ret) then
//    result = ret
//    exit
//   endif
//  next
// Fend

おまけ
// ifb 3 = elm.childNodes[i].nodeType then // テキスト
//  elm.childNodes[i].nodeValue // テキストデータ


111:名無しさん@お腹いっぱい。
10/01/05 14:59:27 WsNY715b0
softalk使って日本語しゃべらせたいんだけど、素人過ぎてショートカット乱立させてクリックさせるのが限界です・・・。

上品な立ち振る舞いで話させるには、どうプログラムしたら良いですかね?


112:名無しさん@お腹いっぱい。
10/01/05 16:22:04 deSK2IBq0
>>111
doscmd or exec と softalk の引数指定

113:名無しさん@お腹いっぱい。
10/01/05 20:02:55 idKMoxPT0
ヘルプすべて印刷して一読すると良いよ
それが面倒臭いならテンプレの本買え

114:名無しさん@お腹いっぱい。
10/01/05 23:22:45 WsNY715b0
>>112-113
ありがとよ。かなりスマートになった。


exe名入れるときにメモ帳は"notepad"でいいのに、
softalk指定するときはアドレス入れないといけないのは何でなんだ?

プログラムの基礎の質問なんだと思うが...

115:名無しさん@お腹いっぱい。
10/01/06 00:07:16 12AIG4f80
そのディレクトリにパスが通っているかという話。
環境変数のPATHにそのディレクトリを登録すれば(=パスを通せば)行ける。
詳しくはググるよろし。

116:名無しさん@お腹いっぱい。
10/01/06 03:48:14 j0L+SVeO0
ECMAScript みたいに
関数自体を変数に代入する方法ないかな?
変数を () 付きで実行することで
その変数に代入された関数を実行するようにしたい


117:名無しさん@お腹いっぱい。
10/01/06 03:57:32 j0L+SVeO0
あ、evalあるのね
これでできそうです
お騒がせしました

118: ◆fdAnbU5Z6U
10/01/06 07:29:33 EasGK5JXP
少しだけ相手してやんよww
若いだろ?至りってやつだな


119:名無しさん@お腹いっぱい。
10/01/06 10:00:09 jv+N909k0
>>118
じゃあこれデバッグしてください。
URLリンク(karimofu.org)
ダウンロードパス:saymove

120:名無しさん@お腹いっぱい。
10/01/06 10:01:35 jv+N909k0
ていうか1月6日に閉鎖ですか。
これから先自作スクリプトはどこにうpすればいいのか。


121: ◆fdAnbU5Z6U
10/01/06 11:44:36 EasGK5JXP
キモイホモだなぁ!おまえブサメンでキモブサだろ?少しだけ相手してやんよww
若いだろ?至りってやつだな

122:98
10/01/08 14:59:40 VCRefa1D0
>>109
その通りですね・・・偶数丸めというのを知らなかったので。
お騒がせしてすみませんでした。

123:名無しさん@お腹いっぱい。
10/01/15 20:16:22 3e5Ape4g0
長文で失礼します。
最近uwscを勉強しはじめました。
uwsc本を参考に連番のIDでサイトにログインするように作ってみました。
一応出来たのですが、ID001からID030までを連続で入れることが出来ないため()
1~9用マクロと10~30用マクロに分けて使っています。
もっとシンプルにしたり、1~30までの連番を1つのマクロに統一する方法はありますでしょうか?
おそらく初歩的なことなのでしょうが質問お願いします。
_________________________________________
例)ログインIDは "id001"~"id030"
  パスワードは ps
>SUUJI = 1
>FOR A = 1 TO 30

>KBD(VK_i)
>KBD(VK_d)
>KBD(VK_0)
>SENDSTR(,SUUJI)
>SUUJI = SUUJI +1
>KBD(VK_TAB)
>KBD(VK_p)
>KBD(VK_s)
>KBD(VK_TAB)
>KBD(VK_ENTER)
id入力の所を、
1~9用マクロは、KBD(VK_i) KBD(VK_d) KBD(VK_0) KBD(VK_0)
10~30用マクロはKBD(VK_i) KBD(VK_d) KBD(VK_0)
にして使っています。

一本化するにはどのように直せば良いでしょうか?

124:名無しさん@お腹いっぱい。
10/01/15 22:54:28 zUTDSHGw0
>>123
IESetDataを使おう。
Formatで0埋めは出来ないようだから、
z = "0"
zz = "00"
とかして、

for i = 1 to 30
ifb i < 10
hoge = zz + i //数値と文字列足すと文字列として足してくれる
else
hoge = z + i
endif
IESetData(IEID,hoge,"ID")
IESetData(IEID,"ps","PASS")
~~
next
とか、そんな感じ。
RecIEで出力させて見れば解ると思うよ。

125:名無しさん@お腹いっぱい。
10/01/15 22:55:55 zUTDSHGw0
インデント入らなかった、スマソ
for i = 1 to 30
 ifb i < 10
  hoge = zz + i //数値と文字列足すと文字列として足してくれる
 else
  hoge = z + i
 endif
 IESetData(IEID,hoge,"ID")
 IESetData(IEID,"ps","PASS")
~~
next

126:名無しさん@お腹いっぱい。
10/01/16 13:15:51 ZYqbg1Ld0
自動ログインスクリプトを作成してみたのだが、サーバーエラーが出た場合の回避方がわかりません。
ifを使う事はわかったのだが、ピッタシに来る例文が探しても見つからないのです。
自力で色々試すもうまく行かず・・・どなたかご教授下さいませ。
以下スクリプト

//IEを開いてページ表示
IE = CREATEOLEOBJ("InternetExplorer.Application")
IE.visible = True
IE.navigate("http://×××××")
//5秒停止
sleep(5)
//接続表示待ち
while True
if (! ie.busy) and (ie.readyState=4) then Break
sleep(0.1)
wend
id = GETID("Internet Explorer")
//ログインID入力
IESETDATA( IE, "●●●●", "id" )
IESETDATA( IE, "※※※※", "pass" )
CLKITEM(id,"ログイン", CLK_ACC or CLK_MUSMOVE)
//5秒停止
sleep(5)
//接続表示待ち
while True
if (! ie.busy) and (ie.readyState=4) then Break
sleep(0.1)
wend

この下にもし「サーバーエラー」が出た場合は再度http://×××××に戻って
再度ログインID入力を再実行したいのだが・・・

127:名無しさん@お腹いっぱい。
10/01/16 16:16:24 hORuBIiX0
>>126
URLリンク(www3.bigcosmic.com)
IE = CREATEOLEOBJ("InternetExplorer.Application") ←これはループの外
IE.visible = True
> while true
>  受信処理(>>126のスクリプトのうち最初の2行を除く部分)
>  if 0 = Pos("サーバーが混み合っています", str) then break
>  // 受信エラー
>  sleep(60)
> wend
> // 正常に受信


128:名無しさん@お腹いっぱい。
10/01/16 20:08:00 L+sAYtsZQ
わたくし初心者でちょっと困っているのですが
FAQにある
「負荷が高い時に ウィンドウのオープンをスクリプトが待ち切れず・・・」
の答えとしての↓
スクリプト内のGETID関数に第3引数(待ち時間指定)を付けて下さい。
GETID("xxxx", "xxxx", -1)  // -1:画面が出るまで待つ

同様に括弧内に-1をつけても思うように実行されません(待ってくれないのですが)
どなたかご教授お願いしますorz

129:名無しさん@お腹いっぱい。
10/01/16 20:20:02 hORuBIiX0
>>128
ウィンドウが出現しても、そのコントロールの配置に時間がかかる場合があります。
その場合、ウィンドウは存在しているからIDは取得できますが、コントロールがないので操作に失敗します。
コントロールを利用可能になっているか確かめる必要があります。

ウィンドウが出現していることを確認するには、Statusでタイトル名などを取得したらいいですよ。
本当にGetIDに失敗していたら取得したIDは-1になっているはずなので、その時点ではじくこともできるでしょう。


130:名無しさん@お腹いっぱい。
10/01/16 20:21:01 U6EzK14SP
待ってくれないって事は戻り値は-1なの?
別ウィンドウのを取得してるんじゃね?

131:名無しさん@お腹いっぱい。
10/01/17 01:11:03 SVOvo/dN0
数字を文字列として扱うにはどうすればいいでしょうか?
intA = 10
intB = intA * 2 //20
Print intA + intB //"1020"と表示したい
文字列結合子と演算子が同じ"+"なので、不可能なのでしょうか?

132:名無しさん@お腹いっぱい。
10/01/17 02:22:14 2D/YPlQ90
>>131
// フォーマット
戻値 = FORMAT( 数値, 幅, [小数点桁 or 16進指定] )
引数
  数値: 数値 もしくは文字
  幅: 出力される文字数 (数値より指定幅が大きい時は左側をスペースにて補完)
     数値ではなく文字が指定された場合は その文字で幅分を埋める
  小数点桁 or 16進指定: 表示する小数点桁数、 また -1が指定された場合は16進数表記にする
戻値
  フォーマットされた文字列

133:123
10/01/17 06:07:26 rLsFwGWi0
>>124

数字の所はIFで処理するといいのですね、なるほどです。
昨日から直す作業をしてるのですがまだ動いてないので(IESetData関数がない、と言われてしまう…)もう少し練習をしてみます^^
試しに使っていたのでフリー版を利用していたのですが、RecIEの機能を調べていたらとても便利そうですね。
とても参考になりました。
ありがとうございました。


134:名無しさん@お腹いっぱい。
10/01/17 10:06:50 mb/jokyZ0
>>131
print "" + intA + intB
もしくは
print intA + "" + intB

print intA + intB + "" はNG

135:名無しさん@お腹いっぱい。
10/01/17 10:26:16 gXklMUNy0
//スペースにて補完→0にて補完へ変更…それだけ(^^;

for i = 1 to 30
  hoge = ChgMoj( Format( i, 3 ), " ", 0 )
next

136:名無しさん@お腹いっぱい。
10/01/17 13:01:39 SVOvo/dN0
>>132,134,135 レスありです。
>>132
その関数は知っているのですが、実は16進数で合体させるため、Formatを多用する以外に方法があるかどうかの確認でした。
説明不足でわざわざコピペしていただいてありがとうございました。
>>134
この方法がスクリプトを後で見返したときに一番単純で理解しやすそうですね。
昔VBでVal関数を知らなかったときに文字列に+0して数列に変換していた方法を思い出しましたw

137:名無しさん@お腹いっぱい。
10/01/19 20:29:01 E18f84ud0
UWSCProを使用しています。
一度exe化したものを、再び.uwsに戻す事は可能でしょうか?
戻せないにしても、exeの物の中のスクリプトを表示する事は出来るのでしょうか?

138:名無しさん@お腹いっぱい。
10/01/19 21:29:37 dm9R5tz30
>>137
たぶんバイナリエディタで開くと最後にくっついてるんじゃね?

139:名無しさん@お腹いっぱい。
10/01/19 21:37:14 /h2JRfae0
>>137
Pro版のEXE化について質問です。
まだ購入していないのですが、EXE化時にスクリプトをコンパイルしていないとの書き込みがありました。

URLリンク(www3.bigcosmic.com)

この時には、生のスクリプトがEXEに連結されるだけですか?
そうである場合、暗号化後のスクリプトをEXE化の元に指定することもできますか?

EXE化後に、EXEをエディタで見たらそのままスクリプトが見えてしまわないかと気になったもので。。。

宜しくお願いします。

DATE:2007/3/25(Sun) 15:04 No.628


RE:EXE化時のスクリプト内容 umiumi


暗号化して取り込んでいますので、自分で変換作業をしておく必要はありません。


140:137
10/01/20 01:35:54 +aeXo+8F0
>>138139
バイナリエディタで見てみましたが私には分かりませんでした。
掲示板のQ&Aの回答を見る感じだと、一度exe化してしまったら戻すことは出来ないということで合ってますでしょうか?
暗号化を解く方法があるのであれば別でしょうが…

141:名無しさん@お腹いっぱい。
10/01/20 22:41:47 ip1Zjd0h0
WINDOWS 7でIE8を使用しております。
とある図書館にログインして自分の借りている図書および予約の図書を確認するスクリプトを作っております。
しかし、IDとパスワードは入力さるのですが、「ログイン」のボタンがど~~~しても押してくれません。

大変すみませんが、教えていただけないでしょうか?

次のように実装しております。

ie = CreateOLEObj("InternetExplorer.Application")
ie.Visible = True
id = GETID("Internet Explorer")


ie.navigate("URLリンク(lib.city.shinagawa.tokyo.jp)")


while True // 接続表示待ち
if (! ie.busy) and (ie.readyState=4) then Break
sleep(0.1)
wend

id = GETID("Internet Explorer")

//ログインID入力
IESETDATA( IE, "123456789", "ryno" )
IESETDATA( IE, "9876", "passwd" )


CLKITEM(id,"ログイン", CLK_ACC)




142:名無しさん@お腹いっぱい。
10/01/20 23:02:51 8bN4FDNJ0
>>141
本家掲示板にIDとパスワードが書いてあるんでログインスクリプト動かしてみたけど
被害者が襲撃に来た(マジで)
うちの地元の警察は個人情報をリークして権力者等に直接襲撃許可を出す悪い癖があるんだ。

親切に教えてやろうと思った奴を罠にかけるのが狙いかもしれないので触らずに削除依頼出すべし。


143:名無しさん@お腹いっぱい。
10/01/20 23:13:48 9xULNIKf0
>>141
ie.navigate("javascript:onClick(this.execCGI(1));")

144:名無しさん@お腹いっぱい。
10/01/20 23:32:14 8bN4FDNJ0
>>141
ソース見ると<input type="button" value="ログイン" onClick="execCGI(1)">
名前もIDもないので"ログイン"の文字をクリックするか、itemsを順番に見ていくしかないな。
execCGI(1)って関数実行してるからこれを呼び出せればそれでもいいかも。

ClkItemを使う場合、IDのとり方が悪い。
× id = GETID("Internet Explorer")
○ ID = HNDToID(IE.HWND)

そして、「ログイン」という文字はタイトルバーにもあるので、もしかするとこちらをクリックするかもしれない。
番号に2を入れてみるとうまくいくかも。
> CLKITEM(id,"ログイン", CLK_ACC, true, 2)

>>143
おお。その手があったか。
しかしOnClickは余計じゃないか?
> ie.navigate("javascript:this.execCGI(1);")


145:141
10/01/21 00:41:19 BYisD/DI0
>>143 様、
>>144 様、

う、動いたぁ!ログインボタンが押せたよぉ!

こんなに早いレスがもらえるなんて、感謝感激です。

>>142
何を言ってるんだかよくわからんかった。


146:名無しさん@お腹いっぱい。
10/01/21 04:34:42 el+zjomK0
IESetData(IE,True,"","ログイン")
この場合↑を使うとすると引数入れる方法ある?

147:名無しさん@お腹いっぱい。
10/01/21 09:17:09 prTvVb6F0
>>141
いまさらだけど、

ie.document.forms(0).elements(6).value = "ryno" //利用ナンバー
ie.document.forms(0).elements(7).value = "passwd" //パスワード
ie.document.forms(0).elements(8).click //ログインボタンを押す

こっちのほうが安定してるよ。たぶん。

こいつを使って調べた↓
URLリンク(nem.symphonic-net.com)

148:名無しさん@お腹いっぱい。
10/01/21 10:50:10 qBCWT2U/0
>>147
141じゃないけど親切な人や

149:名無しさん@お腹いっぱい。
10/01/21 12:50:21 UbXqB2Oa0
>>147
おーすげー
でもItemsはころころ変わる可能性があるからな。
やっぱり名前が使えるところは名前を使って
ログインボタンだけループでまわすべきだろう。

まあログインページの変更はあまり頻繁には起きないけども。


150:名無しさん@お腹いっぱい。
10/01/21 12:54:41 UbXqB2Oa0
>>146
// Web上(IE)に値を設定
戻値 = IESETDATA( IE, 値, Name, [Value, 番号] )

IE,    IE,
値,   True,
Name, "",
[Value, "ログイン"
番号] ) ほらここ空いてる


151:名無しさん@お腹いっぱい。
10/01/22 23:14:18 5GAs0GCP0
>>149
名前を使いたいなら

ie.document.all.tags("input").ryno.value = "なんたらかんたら"
ie.document.all.tags("input").passwd.value = "うんたらかんがら"

または

ie.document.forms(0).elements("ryno").value = "なんたら"
ie.document.forms(0).elements("passwd").value = "うんたら"

でおk。

152:141
10/01/23 00:13:09 ER0elP5I0
再度質問に来たんですけど、さらなるレスが付いていてビックリでございます。

いただいたレスを再度学習してから、また質問に来ることにします。

本当に、ありがとうございます。



153:名無しさん@お腹いっぱい。
10/01/27 09:06:38 bTNIzlWA0
UWSCで、関数の中で他の関数を使用することって可能ですか?

154:名無しさん@お腹いっぱい。
10/01/27 09:19:46 bTNIzlWA0
すいません、ちょっと勘違いしてました
↑は忘れてください・・・

155:名無しさん@お腹いっぱい。
10/01/28 01:46:50 vVvESZ+G0
シェア版を試しにインスコしようとすると、トロイとしてはじかれる。なにこれ?

156:名無しさん@お腹いっぱい。
10/01/28 01:53:42 khCmP7150
>>155
なんだろうね。
OSとかウィルスソフトとか現象とかを本家掲示板に報告した方がいいんじゃね?


157:名無しさん@お腹いっぱい。
10/01/29 11:44:21 PN5QGmYZ0
IEのイベント使ってたらUWSCがメモリ不足やらランダムに型が違うとか
DLLでアクセス違反とかでまくりで訳が分からんかったけど、
BeforeNavigate2をNavigateComplete2に変更したらぱったりエラーも出なくなったよ。

以前NewWindow2でキャンセルフラグ立ててなくて同様にエラーが出まくってたんだけど、
BeforeNavigate2も同様にキャンセルフラグを処理しなきゃいけなくて、
もしかしたらフラグを間違ってセットしてたのかもしれない。
NavigateComplete2ならフラグがないからどっちセットするかで悩まなくて言いし、
なによりBeforeNavigate2のイベント発生時点ではIEオブジェクトとかプロパティが無効になってて
待ちループですらエラーになる状態で、回避するのに苦労したんだけど、そういう処理も必要なくなった。

っていうか、イベントの使い方を間違っていたのかも。


158:名無しさん@お腹いっぱい。
10/01/31 21:49:27 QYiiO/FR0
んでスクリプトは一応完成したけどどーも無用の物を作っちゃったらしくて評判が悪かった。
だからこんなのつくりました的なものを紹介だけしときますね。

自動ダウンロードスクリプト公開中
URLリンク(www1.axfc.net)

7-zip32.dllで圧縮メソッドがBzip2で圧縮してたから
Windows標準では解凍できないようです。

動画ページに直リンがあったりするけど、てきとーな日本語入れてあったりするので使える保証がなく、
直リンにnavigateするとなぜかバイナリファイルをブラウザで開いたりするサイトが多くてやっぱり使える保証がなく、
かといってftpでダウンロードするAPIではいつ終わるとも知れず、
結局自分でリンク貼って右クリでダウンロードするしかなくて、
だけど万が一もあるので入力禁止措置も取ってないのでちょっとマウス持ってるとすぐ止まる。

スレッドで5秒後に確実に解除すればよさそうなんだけど
メインループが終了したときはスレッドも巻き添え食っちゃうから確実ではないし。
いや、スクリプトが終われば復帰できるのかな?

んで、動画サイトが2次サイトだから画質が悪くなっちゃってるのが多くて
ダウンロードしてももったいなかったりする。


159:名無しさん@お腹いっぱい。
10/01/31 23:47:43 Q/Gu8X0B0
>>158
っ国語力とプログラミング力の関係 解説編
URLリンク(jibun.atmarkit.co.jp)

160:名無しさん@お腹いっぱい。
10/02/01 00:52:02 2o/R36uY0
RecIEを起動させて
記録→アドレス入力→ok
でサイトに飛ぼうとすると

Racie
L20が存在しません

ってダイアログが出てきて先に進めないんだけど同じ症状出たことある人いる?
4.4cからだったと思うけどアップデートしたら途端に動かなくなった

161:名無しさん@お腹いっぱい。
10/02/01 00:55:45 Zow1+JjM0
>>159
ああ、日本語って難しいね。
短く区切って書くと、悪口で埋め尽くされてしまっていたから
無理やりでもつないでしまう癖がついちゃったんだ。

これでも学生時代は国語はほぼ満点でやってきたんだけどね。
敬語だけはいまいち理解できんかったけど。
敬語ってややこしいのに授業時間が少なすぎ。
正しい敬語を使う環境が身近にないから、練習すればするほどおかしくなっていく。(福岡県の筑豊出身)
これでも親は地元企業の課長~次長だったりする。

今度は短く区切りすぎ?

162:名無しさん@お腹いっぱい。
10/02/01 01:03:42 Zow1+JjM0
>>160
有料の機能だし本家で聞いたほうがいいと思うよ。
OSとIEと、UWSCの問題なかったバージョンとかも必要だと思う。
差し支えなければそのアドレスもね。
ところで、RacieじゃなくてRecieだよね?


163:名無しさん@お腹いっぱい。
10/02/01 01:26:10 Zow1+JjM0
>>159
そういえば俺の後輩のやる気のないプログラマは
「俺文系なのにプログラマやらされてるんです。
 文系だからさっぱり分かりません。」ってゆってた。
「ああそう。」としか答えようがないっつーの。

164:名無しさん@お腹いっぱい。
10/02/01 18:20:46 WMRBoQc30
頭悪そうだなお前

165:名無しさん@お腹いっぱい。
10/02/05 18:13:12 hEkLWXs20
HTMLソースを取得して差異があればmsgboxが出る程度の
簡易webチェッカーのようなものを作ろうと思ってるのですが
窓を非アクティブのままwebを更新する(戻るとか進むとかも)方法を教えて下さい

IE.Navigate(IE.LocationURL) や IE.Navigate(URL) も試したのですが
↓のようなサイトでは思うように更新後のソースが取得できませんでした
URLリンク(www7.big.or.jp)

仕方ないので今は窓を開いて
CTRLWIN(id, ACTIVATE)
KBD(VK_F5)
とか
CLKITEM(id, "更新", CLK_ACC)
で更新してるのですが、非アクティブで実行する方法を教えて下さい

166:名無しさん@お腹いっぱい。
10/02/05 20:04:44 MmS/cyj/0
winhttpかmsxml2を使う

167:名無しさん@お腹いっぱい。
10/02/05 20:09:56 vxp7+xcP0
>>165
navigateしたあとちゃんと待ちループまわさないと駄目です。
また、nabigateが動き出す前に待ちループに入ってしまうと素通りしてしまうので、
それまでは待ちループに入らないようにする必要もあります。

例1)
IE.Navigate(url)
sleep(3)
REPEAT; sleep(0.1); UNTIL !IE.busy AND IE.readystate = 4

例2)
timeout = 3
IE.Navigate(url)
while !IE.busy AND IE.readystate = 4
 sleep(0.1); timeout = timeout - 0.1
 if timeout < 0 then break
wend
REPEAT; sleep(0.1); UNTIL !IE.busy AND IE.readystate = 4

例2の場合はtimeoutがないと、一瞬で表示が完了した場合に永久ループになります。

navigateの他にRefreshがあり、こちらは引数がいらないので手軽です。
中止    Stop
更新    Refresh
前に進む GoForward
戻る    GoBack

Stopはページが不完全になるので、DOMアクセスでCOMエラーが発生します。
これはStop→Refreshとした場合でも起こるので注意が必要。

WebBrowserコントロールでタブブラウザを作る(.netですが一部ソースは参考になると思います。)
URLリンク(codezine.jp)

168:名無しさん@お腹いっぱい。
10/02/05 20:57:44 hEkLWXs20
>>166
レスありがとうございます
一応 CreateOLEObj("MSXML2.XMLhttp") も試していたのですが
思うような結果が得られず四苦八苦していたのでした

>>167
レス感謝です
>nabigateが動き出す前に待ちループに入ってしまうと素通り
になっていたようでした

結果的には IE.Refresh() で期待通りの結果が得られました
今から進む、戻るも試してきます
ありがとうございました

169:名無しさん@お腹いっぱい。
10/02/06 14:30:56 bC6Cwg/o0
文字列A xxxxx 文字列B

ある文章の中で、特定の文字列AとBに挟まれた「xxxxx」という文字列を抜き出すにはどうするのが
スマートですかね? アドバイスください。

170:名無しさん@お腹いっぱい。
10/02/06 14:50:08 IY8b0Hns0
>>169
文字列にもよるけど、
とりあえずBETWEENSTRていうのがある。
戻値 = BETWEENSTR( 文字列, 文字列A, 文字列B, [n個目, 数え方フラグ] )

ところで、 ;っていうのはどういう理由で入れてたんですか?


171:名無しさん@お腹いっぱい。
10/02/06 14:52:23 IY8b0Hns0
訂正
;の部分は
& # 1 6 0 ;

172:名無しさん@お腹いっぱい。
10/02/06 15:20:55 MuLbdSUi0
>>168追記
GoForward も GoBack も順調に動きました
改めまして感謝です

>>171
自分(PC専ブラ)には見えませんが、&#160はhtmlの半角空白みたいです

BetweenStrの話題があったので自分も更に質問です
HTMLソースの
111~
222~
333yyy のような文字列から 333 を抜きたい場合
BetweenStr(略, "xxx", "yyy", n) //yyyの前の文字を抜きたい
xxxとnの部分に何を入れれば良いのかが分かりません
宜しければ参考までに教えて下さい

173:名無しさん@お腹いっぱい。
10/02/06 15:30:15 MuLbdSUi0
説明が不十分だと思ったので>>172追記
正確には
111~~<br>
222~~<br>
333yyy
という文字列で、"<br>", "yyy", 1 とか設定しても
222~333まで抜き出してしまってうまくいかないのです

今は
変数1=(略, "<br>", "yy", 1)
変数2=(変数1, "<br>", "y", 1)
と複数段階に分けて書いてるのですが、これが簡潔に書けるなら知りたいな、と
宜しくお願い致します

174:名無しさん@お腹いっぱい。
10/02/06 15:47:36 IY8b0Hns0
>>173
( マイナス値で指定すると後ろからサーチ)
BetweenStr(略, "<br>", "yy", -1)
これは試してみました?

> これが簡潔に書けるなら
手順が複雑にはなりますが、正規表現ライブラリを使えば
行頭(^)+不特定文字列(.*)+”yyy”で表現できる場合があります。
<br>のあとに改行コードが入っているならですが。

スクリプトをすっきりさせたいと言うことなら、自作関数に置き換えるとかでもいいと思います。


175:名無しさん@お腹いっぱい。
10/02/06 17:07:22 MuLbdSUi0
>>174
マイナス値を使っても一発で目的の文字列に到着しないんです
一行で簡単に書ければ....と思ったのですが、諦めます

正規表現は、自分にはまだ早すぎる(理解できてない)ので
もう少し勉強してから挑戦してみようと思います
ありがとうございました

176:名無しさん@お腹いっぱい。
10/02/06 17:42:47 bC6Cwg/o0
>>170
これは便利ですね。簡単にできました。どうも有り難うございました。

177:名無しさん@お腹いっぱい。
10/02/06 20:30:18 IY8b0Hns0
>>175
どうせならTOKEN使った関数を自作した方がスマートですよ。
こんな感じで。動かしてないので動作は保障できませんが。
function GetStrForward( kword )
 result = ""
 while true
  str = token( "<#CR>", str, true )
  if ! length( str ) then break // trueを外していると、途中で抜ける場合がある
  if ! pos( kword, str ) then continue
  // キーワードが見つかった場合、その前方の文字列を返す。
  result = copy( str, 1, pos( kword, str ) - 1 )
  exit
 wend
fend

BetweenStrを何度か実行するのって、長いソースだとそーとー実行時間の無駄だと思うんです。
だから、キーワードを含む行をまず見つけて、その1行から切り出す方法を考えた方がいいかなと。
tokenの区切りが文字列で指定可能ならもーちょっと使えるんですけど・・・

HTMLの場合はDOMを駆使するともっと効率的にアクセスできる場合もあるから、
先にDOMで絞り込めないかを考えた方がいいかもしれません。
確実に抽出できるならHTML全体からとった方が短くかけるかもしれませんけど。


178:名無しさん@お腹いっぱい。
10/02/06 21:25:28 MuLbdSUi0
>>177
あ、ありがとうございます
例まで書いていただいて非常に嬉しいのですがハードル高いっす
残念ながらtoken、function、DOMやらの文字が何一つ理解できません
精進して出直してきます、でも有り難う

179:名無しさん@お腹いっぱい。
10/02/11 02:46:55 yrYtb4hB0
失礼します。

キー同時押しのスクプリトご存知の方おしえていただけませんか
よろしくお願いします

180:名無しさん@お腹いっぱい。
10/02/11 11:48:29 KutBFNeQ0
kbd(vk_shift,down)
kbd(vk_1,down,30)
kbd(vk_1,up,30)
kbd(vk_esc,up)


181:名無しさん@お腹いっぱい。
10/02/11 11:52:43 KutBFNeQ0
なんかちょっとしくってた

182:名無しさん@お腹いっぱい。
10/02/12 04:04:08 9YYIHyOz0
>>179
// ショートカットキーの実行
SCKEY( ID, キー, [キー, キー, キー, ...] )



183:名無しさん@お腹いっぱい。
10/02/13 01:06:22 gvQMSvHV0
>>180
>>182
お返事ありがとうございます。
参考にさせていただきます。

184:名無しさん@お腹いっぱい。
10/02/13 02:00:24 qgx2boSW0
失礼いたします。

uwscにて実行したいことがあります。
画面上に出ている英数字画像の入力をしたいのですが
うまく入力してくれません。

12桁の英数字が表示され、左の英数字から順番に入力して欲しいのですが、
UWSファイルに書き込んだ通りの順番で入力してしまいます。
UWSファイルには1,2,・・・~8,9,0,A,B,・・・~Y,Zの順番で書き込んでおります。
「8 B A Z 9 0 Z Y A B C D」と入力したいのに、
「8 9 0 A A B B C D Y Z Z」と入力してしまいます。

助言だけでも聞けたらと思いレスいたしました。
宜しければお力添えをお願いいたします。

185:名無しさん@お腹いっぱい。
10/02/13 02:02:19 qgx2boSW0
sage忘れまして申し訳ないです。
久しぶりの2chでの書き込みですっかり忘れてました。

そして連レス申し訳ありません。

186:名無しさん@お腹いっぱい。
10/02/13 04:38:30 eUy/fvfx0
>>184
ループをこんな風にしてるんでしょ?
例1)
DIM data="ABCDEFG"

for i = 1 to length(data)
 copy(data, i , 1) ←この文字があるかどうか探している
 KBD() ←見つかったらすぐ入力
nest

文字の判定はやっぱり↑みたいにしないといけないけど
文字が見つかったらその座標を記録していくべきでしょ。
で、座標のX成分でソートして小さい方から入力する。

DIM KEYCAR[8] ←これに見つかった文字の文字コードをセット
DIM KEYX[8] ←これに見つかった文字の座標をセット

文字が一通りスキャンできたらKEYXとKEYCARを並べ替え、
KEYXの小さいものからKEYCARを入力していく。

ソートは件数も少ないし、バブルソートがシンプルでいいと思いますよ。


187:名無しさん@お腹いっぱい。
10/02/13 07:59:27 YuKBFn4V0
(´-`).。oO(nest・・・・・)

188:名無しさん@お腹いっぱい。
10/02/13 13:12:06 qgx2boSW0
>>186さんありがとうございます。

>座標のX成分でソートして小さい方から入力する。

>DIM KEYCAR[8] ←これに見つかった文字の文字コードをセット
>DIM KEYX[8] ←これに見つかった文字の座標をセット

>文字が一通りスキャンできたらKEYXとKEYCARを並べ替え、
>KEYXの小さいものからKEYCARを入力していく。
座標のX成分でソートとはどういったことをすればX成分を検出できるのでしょうか?
無知過ぎる私にはやはり早いのでしょうか。。

189:名無しさん@お腹いっぱい。
10/02/13 17:44:34 hcaqZS6v0
uwscを使用してるんですが
[K]キーを押すのではなく[K]キーを押し続けるにはいったいどうすればいいんでしょうか
情報くださいorz

190:名無しさん@お腹いっぱい。
10/02/13 19:03:56 eUy/fvfx0
>>188
もしかしてCHKIMG()を全体にかけてるんですか?
だとしても
>TRUE の場合は見つかった座標を特殊変数 G_IMG_X、 G_IMG_Y に格納
とあるので、G_IMG_XをKEYXの配列に格納していくだけですよ。
他の方法で画像を解析してる場合でも、座標くらい取れるでしょう。

たいていは文字は読みにくいように加工されているからCHKIMG()では対処できないんですけどね。

>>189

> [K]キーを押し続けるには
KBD(VK_K, DOWN)

191:名無しさん@お腹いっぱい。
10/02/13 23:46:03 qgx2boSW0
>>190さん

CHKIMGの構文くらいしか理解出来ていないほどの初心者です、、涙
理解しきれていない部分が多々あるのでなんともいえないのですが、、

やはり>>186の構文で行った方が確実なのでしょうか?
もし宜しければ>>186の内容を分かりやすく説明していただけたらと、涙
本当に初心者過ぎて申し訳ないです。

ここで詳しく説明できないような内容でございましたら、
捨てアド用意しておりますので、そちらでも構いません。
最初はggrksとか書かれるとは思いましたが、
ここまでご親切にお教えしてもらえると嬉しくて仕方ありません><

192:名無しさん@お腹いっぱい。
10/02/14 00:12:51 4sAlpgnt0
>>191
> やはり>>186の構文で行った方が確実なのでしょうか?
いや、chkimgでいいです。
copyで文字列から取り出したのはあんまりいい方法じゃなかったです。
ただ、chkimgしたら座標を取り出さないと並べ替えできませんよと。

本来手動で行うべきところを自動化するのはあんまりよろしくないので
これ以上具体的な解説はやめときます。
ソートとかの部分的な話なら別にいいけど。

僕もユーザー登録とか半自動化したけど、画像読み取りは難しいから
そこだけ入力待ちとかにしてますよ。


193:名無しさん@お腹いっぱい。
10/02/14 00:22:56 XhJVEd4Q0
>>192さんありがとうございます。

ソートとはクリップボードの文字列のソートの事でしょうか?
どういう効果で、どのように使用するのか教えていただいたら光栄です。

194:名無しさん@お腹いっぱい。
10/02/14 00:49:51 4sAlpgnt0
>>193
えーと、そこはぐぐって欲しかったですね。
ソートとは並べ替えのことです。
URLリンク(su10.sgu.ac.jp)

関数化してちゃんとできてるかテストしてから組み込んだ方がいいと思います。


195:名無しさん@お腹いっぱい。
10/02/14 18:50:13 7ySdGB3b0
Aの操作を○回実行した後にBの操作を実行し
最初に戻るという操作はどうしたら出来ますか?

196:名無しさん@お腹いっぱい。
10/02/14 19:20:34 nB/iMQXP0
>>195
While(True)
 For i = 1 To ○
  Aの操作
 Next
 Bの操作
Wend

197:名無しさん@お腹いっぱい。
10/02/15 01:51:46 fbzctM220
UWSC Ver4.6 umiumi
64bit環境での高レベル記録、CPUUSERATE関数の対応
KINDOFOS関数にてOSが64bitかのチェックをできるようにした
STATUS関数にてアプリが64bitかのチェックをできるようにした
VARTYPE 関数にて型変更をできるようにした
ROUND関数にて丸め位置を指定できるようにした
GETSTR関数にてマウス移動オプションを付けた
CHKIMG 関数のヒット数チェックにてヒットした位置情報を配列に格納するようにした
多重のCALL文にてファイルのカレントを識別してなかったのを修正
COM のBoolean型を数値型に変換していたのを修正
設定画面が出ている時にはスケジュールが走らないように修正
Pro版:
CREATEFORM にてIFrameが使われた時にsubmitボタンの処理ができなかったのを修正
UDebug: 64bit環境にて Help->"Folder with .INI"で間違ったフォルダを開くのを修正
DATE:2010/2/14(Sun) 01:29 No.2862

Windows 7 64bit環境での動作について umiumi

32bitアプリに対しては問題ありませんが、64bitアプリに対しては以下の制限があります
  CLKITEM、GETITEM関数の種別にて ツリービュー, リストビュー, タブ指定は無効
 (替わりに ACC指定を利用して下さい)
  GETSLCTLST関数にてツリービュー, リストビューは無効
 POSACC関数にて ACC_API(APIトラップ) 指定は無効
  STATUS関数にて ST_PATH(EXEパス取得) 指定は無効
 64bitの DLLを呼び出す事はできません
また、SOUND 関数にて"BEEP"指定時は PC内部スピーカではなく、通常のサウンド出力になる

198:名無しさん@お腹いっぱい。
10/02/15 02:09:13 DLqX4NXD0
タスクアイコンを右クリックして選択をするにはどうしたらいいですか?

199:名無しさん@お腹いっぱい。
10/02/17 05:35:30 cjyZasPE0
>>198
アイコンの画像をビットマップで保存してchkimgで座標を取ってBTN(RIGHT, Click)かな。

アイコンが動いたり隠れたりするとうまくいかないので他の方法探した方がいいね。
ウィンドウ一覧からID取ってPostMessageとかでメニューを出すみたいな。


200:名無しさん@お腹いっぱい。
10/02/17 06:00:12 cjyZasPE0
エディタの正規表現検索使ったリンクアドレス抽出が便利だったけど別窓に移動するとダメだったので、
UWSCで検索ワードを別窓にコピペするマクロを作ってみた。

サクラエディタでの正規表現の例
<a href="/test/read.cgi/bike(.*)" target="_blank">cache

 .*でリンクアドレスをワイルドカードにしてるくらいだけど、範囲検索に複数キーワードとシフトキーを駆使するよりも簡単だし、
操作手順が少ないのでマクロもシンプルになり、使い回しが効くようになる。

Alt+TABで切り替わるように設定し、検索側窓をアクティブにした状態でAlt+F1をクリックして開始する。
ショートカットキーはSCKEY()が確実だが、多重起動のエディタのIDを適切に取得するのは大変だし、
どの道Alt+TABで切り替えるんならKBD()でいっかと。

// あらかじめ最初の検索位置に飛んでおく。
// 終了はストップボタンで。
stopform(true)
while true
 sleep(0.2 ); KBD(VK_CTRL, DOWN)  // コピー
 sleep(0.01); KBD(VK_C, CLICK)
 sleep(0.01); KBD(VK_CTRL, UP)
 sleep(0.01); KBD(VK_ALT, DOWN)   // 窓切り替え
 sleep(0.01); KBD(VK_TAB, CLICK)
 sleep(0.01); KBD(VK_ALT, UP)
 sleep(0.2 ); KBD(VK_CTRL, DOWN)  // 貼り付け
 sleep(0.01); KBD(VK_V, CLICK)
 sleep(0.01); KBD(VK_CTRL, UP)
 sleep(0.01); KBD(VK_RETURN, CLICK) // 改行
 sleep(0.3 ); KBD(VK_ALT, DOWN)   // 窓切り替え
 sleep(0.01); KBD(VK_TAB, CLICK)
 sleep(0.01); KBD(VK_ALT, UP)
 sleep(0.2 ); KBD(VK_F3, CLICK)   // 次検索
wend

201:名無しさん@お腹いっぱい。
10/02/23 14:54:49 F3gsnxhTP
>>198
TrayCommand 0.06を使うと良いと思うよ

202:名無しさん@お腹いっぱい。
10/02/25 09:04:22 d7sFY4K50
スケジュール機能を使って特定のウィンドウが現れたときに
それを閉じるスクリプトを書きたいんだけど、

wshid = getid("Windows Script Host","#32770")

ifb wshid = -1
 exitexit
else
 wsh2id = getstr(wshid, 1, str_static)
 ifb wsh2id <= "書き込むことが出来ません"
  ctrlwin(wshid, close2)
 endif
endif

「書き込むことが出来ません」の前の文字が変わるから
部分一致で閉じるようにするにはどうすればいいの?

203:名無しさん@お腹いっぱい。
10/02/25 09:43:16 tNdZxzY+P
「特定のウィンドウ」とそうでないウィンドウを
あなた自身はどう見分けてるの?

204:名無しさん@お腹いっぱい。
10/02/25 13:17:48 +bexKkLC0
>>202
if pos( "書き込むことが出来ません", getstr() ) then print 見つかりました

205:名無しさん@お腹いっぱい。
10/02/25 18:01:42 d7sFY4K50
>>204
あ、posっていうのがあったのか
ヘルプ読んでたはずなのに見落としてた
ありがとう

206:名無しさん@お腹いっぱい。
10/02/26 22:10:30 1IEGk7vg0
ver.4.6にしたら、chkimgで範囲チェックエラーがでるようになったよ。

207:名無しさん@お腹いっぱい。
10/03/04 08:28:32 PO6OGpHQ0
VB6とかOfficeのVBAのエディタみたいに入力直後に登録されたキーワードがヒットしたら
強制的に大文字小文字を整形して置換(if→Ifとか)されるような機能を持ったテキストエディタないですか?
大文字小文字を気にして打ち込んでたらだるいしかといってそのままだと見返したときにすごく分かりにくいしで疲れました

208:名無しさん@お腹いっぱい。
10/03/04 08:40:10 2mTNuI0U0
ロケットマウス、久々に新ver出てるのにスレ無いんだね・・・
URLリンク(home.att.ne.jp)

209:名無しさん@お腹いっぱい。
10/03/04 10:10:42 SA9xyQjv0
ロケットマウスは使い物にならない、ゴミ。

210:名無しさん@お腹いっぱい。
10/03/05 06:08:33 +qj40agr0
ロケットマウスは素早くマクロ作れるから便利だよ
でも最新版は高すぎる

211:名無しさん@お腹いっぱい。
10/03/05 10:02:22 qXBK1A2U0
必死宣伝乙。

212:名無しさん@お腹いっぱい。
10/03/05 15:02:28 kdn5jr8z0
>>210
何でこのスレ見てるの?

>>208
スレが欲しければ自分で立てろ。客がつくまで自分で維持しろ。
僕もAT小型限定の話をするとあっち行けと追い出されるし、
スレ立てすると「AT限定や小型限定があるだろ重複だ」とか言われて落とされてたけど、
自分で維持してたらそれなりに人が集まってきたよ。

【運転楽々】原付二種△小型AT限定【経費格安】
スレリンク(bike板)

213:名無しさん@お腹いっぱい。
10/03/05 17:46:16 YqnzvMb+0
>>212
お前が一番ウザイな

214:名無しさん@お腹いっぱい。
10/03/05 17:56:25 lSX1pwuz0
誤爆か

215:名無しさん@お腹いっぱい。
10/03/05 21:44:36 RZfD8bdP0
>>207
秀丸でもxyzzyでもいいけど、自分でマクロ書くしかないんじゃ?

216:名無しさん@お腹いっぱい。
10/03/06 16:35:31 uUmPPbJA0
でも、UWSC専用のエディタって欲しくないか??
色分け程度ならsakura専用であるにはあるが、入力補助や、デバッガ機能付きとか。

そういうオレはterapad使いで、色分けすらないから、記述漏れが探しにくい。
自分で作るのも面倒だし、テキストエディタって何個も入れたくないしな。

専用エディタなら割り切って入れる気になる。

217:名無しさん@お腹いっぱい。
10/03/06 17:54:10 i7mh1+mx0
>>216
無いなら作れよ…

作らないまでも、terapadでもオートコンプリートとかマクロのプラグインあるんじゃね?
色分けだとか、デバッガ起動くらい普通に付けられるんじゃねーの?

218:名無しさん@お腹いっぱい。
10/03/06 17:57:43 YVVc2xU3P
秀丸と秀丸の強調表示、単語補完、マクロ制御で十分すぎる
低機能なエディタを使ってるから汎用エディタって発想に至らないんだろうなー

この人が最初からEmEditorや秀丸あたりを導入していれば「専用エディタ」などと
馬鹿げた悩みなど起こさなかっただろうに、と残念に思う

219:名無しさん@お腹いっぱい。
10/03/06 18:00:27 i7mh1+mx0
エディタ論争に発展しそうですね!
viでいいじゃない…

220:名無しさん@お腹いっぱい。
10/03/06 18:12:50 oDoON3sd0
VXEditorでもいいじゃないか

221:名無しさん@お腹いっぱい。
10/03/06 18:19:56 xpFYgJ560
>>218
こういう異様に高圧的な奴が湧くと荒れる法則
俺はメモ帳で編集してますが

222:名無しさん@お腹いっぱい。
10/03/06 19:07:36 v7GY0UD50
自分で使いたいエディタがあるなら勝手に使えばいいじゃないか。
専用があって、なぜ悪い。

223:名無しさん@お腹いっぱい。
10/03/06 19:40:30 boTq+at40
それはどうかんがえてもEmEditorの独壇場ですね。
無料のエディタなんて所詮無料分の値打ちしかないですよ。
EmEditorさえ入れておけば間違いないです。

224:名無しさん@お腹いっぱい。
10/03/06 21:14:59 LIOXzylY0
ポータブルでも動くエディタがイイと思うがな。UWSCもポータブルで動くしね。
X-Finderも入れれば、相対パスで動かせるし、関連付けもOSと独立して設定できる。
バックアップも楽だし、環境揃えるのも楽。便利だよ。

225:sage
10/03/06 21:27:36 sUf1krysI
質問です
UWSCを途中でやめて、また始めから開始するにはどうしたらいいですか??

226:名無しさん@お腹いっぱい。
10/03/06 21:30:18 sUf1krysI
↑名前間違った

227:名無しさん@お腹いっぱい。
10/03/06 23:37:45 h9shLCdf0
>>225
手動でやると仮定すると、
UWSCを通常起動ならSTOPボタンで止めて再生ボタンで再開。
Alt+F1キーで開始してAlt+F2キーとかで停止とかも出来る。

>>223
> 無料のエディタなんて所詮無料分の値打ちしかないですよ。
そのとおり。
UWSC Proを買って専用エディタを入手すればデバッグまで出来ちゃうからお勧め。


228:名無しさん@お腹いっぱい。
10/03/07 04:54:07 azd9KX7S0
メモ帳最強伝説

229:名無しさん@お腹いっぱい。
10/03/07 11:21:23 fJBc+XukI
>>227
Alt+F2で止めれるんですけど
Alt+F1で再開が出来ません

バージョンが古いと出来ないってありますか?

230:名無しさん@お腹いっぱい。
10/03/07 11:53:33 fsPwSQkP0
>>229
XPなら古いバージョンでもできるけど
7とかなら新しいのじゃないといろいろ動かなかったりするかも。

最新でも動かないなら環境依存。他の何かが邪魔してるんじゃないかな。


231:名無しさん@お腹いっぱい。
10/03/08 14:41:27 LRrJZmuF0
IE7のリンクをクリックした時に出るエラーダイアログを自動で閉じたいんですが

ifb GETID("Windows Internet Explorer","#32770") > -1
  //ダイアログを閉じる処理をする
endif

としてるんですが、このときエラーダイアログがでていないとGETIDでかなり時間を取られます。
エラーダイアログが表示されているかどうかの判定で良い方法はありますか?


232:名無しさん@お腹いっぱい。
10/03/08 15:19:30 8gw+l4vY0
>>231
>>97 で使ってる
> GetWindow( H, GW_ENABLEDPOPUP )

COMは多分止まってるからIEオブジェクトは使えないので、
あらかじめH = IE.HWNDとしてハンドルを保存しておく。
GetWindow()でダイアログが表示されていればハンドルが取得できる。
ただし、ポップアップウィンドウにはサブメニューとかツールチップも含まれるので、
Status()で"#32770"かどうかをチェックする必要がある。

すべてのウィンドウをリストアップするのと違い、自分の子ウィンドウだけを見るAPIを直呼びするので高速。


233:名無しさん@お腹いっぱい。
10/03/08 17:11:16 LRrJZmuF0
>>232
アドバイスありがとうございます。
APIの使い方とかわからない素人で、
>>97のスクリプトを見てもよくわからないのでもう少々詳しく質問させてください。

 def_dll GetWindow(hWnd,long):long:user32.dll   //dllを呼び出せるように宣言
 Public GW_ENABLEDPOPUP = 6   // ポップアップウィンドウ

ここまではわかります。

>あらかじめH = IE.HWNDとしてハンドルを保存しておく。
これはどういう意味でしょうか?


おそらくスクリプトとしては

 ifb GetWindow( H, GW_ENABLEDPOPUP ) > 0
   //ダイアログを閉じる処理をする
 endif


こういう感じになるのですよね?


234:名無しさん@お腹いっぱい。
10/03/08 17:42:07 8gw+l4vY0
>>233
> H = IE.HWND
これはIEオブジェクトを管理するウィンドウのウィンドウハンドルです。
UWSCで言うIDのようなものですが、ウィンドウハンドルと言うのはWindowsのAPIで使うものです。
IDとウィンドウハンドルは「IE.HWND」で検索したら出てきますが、
ID = HNDToID(IE.HWND)
HWND = IDToHND(ID)
と言うように変換できます。

if ! IDToHND(ID) then exit
と言うように、IE窓が終了している場合に中断できるのでIDを保存しておくと便利です。

GetWindow()で使うときも
GetWindow( IDToHND(ID), GW_ENABLEDPOPUP ) とできるので、IDを保存しておいてもいいです。

>  ifb GetWindow( H, GW_ENABLEDPOPUP ) > 0
ハンドルは符号なし整数なので、この比較はしない方がいいでしょう。
負の整数と判断された場合に失敗します。
!が分かりにくいなら0 <> GetWindow() でもいいです。


235:名無しさん@お腹いっぱい。
10/03/08 19:25:04 LRrJZmuF0
>>234
ご丁寧にありがとうございます。
もう少々ググッて勉強してきます。
またよろしくお願いしますm(__)m

236:名無しさん@お腹いっぱい。
10/03/16 15:03:54 HiT6yWWl0
テキスト入力のやり方が分かりません教えてください

237:名無しさん@お腹いっぱい。
10/03/16 21:52:10 cI9JqU5P0
何を聞きたいのか分かりません教えてください

238:名無しさん@お腹いっぱい。
10/03/17 06:51:54 DkHyneUl0
windows7でuwscを通常通り動かす方法ありませんか

239:名無しさん@お腹いっぱい。
10/03/17 07:01:16 8KLxlRw70
UAC切れ

240:名無しさん@お腹いっぱい。
10/03/17 11:05:24 u/flnLmx0
>>238
普通にwin7で使ってます。
しかも64
64アプリを制御できなかったりしますが、ほぼ問題なし
==>IEは32,64両方入ってますから

241:名無しさん@お腹いっぱい。
10/03/17 23:14:19 j5IphMiE0
スクリプト入力補助、3文字ぐらいうったらあとの文字が自動でるようにしたい
んですけど、どうすればいいんですか?CLCLというのは使い方が意味がわからなかったです。

242:名無しさん@お腹いっぱい。
10/03/18 16:58:33 HTSNWkk9P
それをUWSCで作ればいいと思うよ

243:名無しさん@お腹いっぱい。
10/03/18 17:57:55 pleFRDKk0
>>241
xyzzy
+
ac-mode.l (URLリンク(white.s151.xrea.com))
+
uwsc-mode.l (URLリンク(big.tm.land.to))
でできる。

244:名無しさん@お腹いっぱい。
10/03/19 00:16:25 r6TwPwzy0
241です、回答ありがとうございます。そこまで教えられてるのにわからない自分がなさけないです.

uwsc-mode.lはsite-lispフォルダに、uwscはetcフォルダに入れてください。←ここまではわかる
siteinit.lとかに以下の文を追加してください。
; UWSC
(load-library "uwsc-mode")
(push '("\\.uws$" . uwsc-mode) *auto-mode-alist*)
↑意味ワカラン

245:名無しさん@お腹いっぱい。
10/03/19 00:40:50 ZI4R2SXH0
そうですか


246:名無しさん@お腹いっぱい。
10/03/19 01:34:35 rPEvvIJr0
>>244
URLリンク(xyzzy.s53.xrea.com)
あとは気合いと根性で

247:名無しさん@お腹いっぱい。
10/03/19 03:40:08 y7YOOYqA0
釣りじゃ無かったのかよ

248:名無しさん@お腹いっぱい。
10/03/20 18:31:49 B79HWejI0
241です
気合と根性で補完入力できるようになったんですが、そのファイルにしか適用
されないというか、ほかのファイル開いたときはまた補完されなくなっちゃうんですけど
入力して覚え直させないといけないんです。これじゃー意味ないです。

249:名無しさん@お腹いっぱい。
10/03/20 19:02:33 Ajn0jtpj0
あー、そうですか。

250:名無しさん@お腹いっぱい。
10/03/21 23:22:41 FxCOzvKn0

while true
ifb getkeystate(VK_X) then
sleep(0.3)
endif

ifb getkeystate(VK_UP) then
sleep(1)
endif

ifb getkeystate(VK_G) then
KBD(VK_DOWN,DOWN,40)
KBD(VK_DOWN,UP,40)
KBD(VK_DOWN,DOWN,40)
KBD(VK_DOWN,UP,40)
KBD(VK_X,CLICK,10)
sleep(1)
KBD(VK_DELETE,CLICK,100)
endif
KBD(VK_F,CLICK,50)
wend

これだとVK_Gのときに最初の処理がスルーされることが
あります。最初というのはダウンアップとXキーのことです。


しかもそれが大体ですがひとつおきになります。
何が問題なのでしょうか?

251:名無しさん@お腹いっぱい。
10/03/21 23:42:42 9nY7crvD0
>>250
あまりよく読んでないけど、短間隔ループの中でGetKeyで分岐というのはUWSCはムズイよ。
そこまでに押されたKEYを取得だから…
公式の過去ログで良い回答あったと思うけど、探すの面倒だわ。

252:名無しさん@お腹いっぱい。
10/03/22 10:04:04 r9UvCn9t0
>>250
用途がイマイチわからないので答えるのも難しいけど
自動操作系?
それとも入力支援?
自動操作系なら一定の待ち時間を設けるといいかも。
sleepじゃなくてループで。
例えば
while true
 i=0
 Repeat
  ifb getkeystate(VK_X) then
   sleep(0.3)
  endif
  Sleep(1)
  i=i+1
 Until i>3

とか。Xキーの押下状態で処理をする時に押されてないor押そうとしている時の待ち状態を作る感じ?

253:250
10/03/23 00:07:33 l7gIg+dd0
ゲームでアイテムを拾うというのとコマンド入力というので使っています。

連続して使うこともありできれば時間をあまりおかずに使いたいと
考えてましたがやはり短い間隔では取得が難しいみたいですね。

それとパソコンの性能が低いというのも関係あるかも。

>>252
UWSC以外にもゲームパッド用のソフトも使ってるのでXが押されたときの
スリープはそっちのソフト用です。

UPのスリープもコマンド入力時のためのものです。
ずーっとアイテムを拾うようにFキーが連打されるように
なっているのでスリープを設けないと入力できないと
いうことからです。




254:名無しさん@お腹いっぱい。
10/03/24 12:24:59 2ytrfO4cP
ifb getkeystate(VK_X) thenとかが何のためにあるかわからない・・・
これは俺がアホなのか?

255:名無しさん@お腹いっぱい。
10/03/24 15:09:35 HwpEcix70
ハンゲームでファミスタオンラインというゲームをやっているのですが、
このソフトを使ってバックグラウンドで動作させる事は可能でしょうか?

256:名無しさん@お腹いっぱい。
10/03/24 16:10:50 yu0OAHHi0
間違いない

257:名無しさん@お腹いっぱい。
10/03/24 16:47:13 C4V6o9Yd0
外部DLLとかも読み込めるんだから基本不可能なことはないだろ

258:255
10/03/24 17:14:51 HwpEcix70
MOUSEORG で 2 を指定したのですが受け付けてくれないのです。
他に何かやるべき事はあるのでしょうか?

259:名無しさん@お腹いっぱい。
10/03/24 18:13:20 C4V6o9Yd0
ヒント;DirectInput

260:255
10/03/24 18:42:44 HwpEcix70
DirectInputを使用しているアプリはUWSCの送信は受付ないという事でしょうか?
表では動くのですが、裏では動かないです><


261:名無しさん@お腹いっぱい。
10/03/27 09:48:15 2VmSdvyL0
KBDで使用するCLICKとDOWNの違いってなんですか?
CLICKが反応しなくてDOWN/UPに変更した事もあるんですが。

262:名無しさん@お腹いっぱい。
10/03/27 10:03:17 2VmSdvyL0
すいません。補足です。
例えばキーを押しながら別のキーを押したい場合はDOWNだと思うのですよ。
ですが例えば"A"を単打したい場合ってCLICKでもDOWN/UPでもどちらでもいいんですかね?
記録する時どちらも記録されていたので違いがよくわかりませんでした。

263:名無しさん@お腹いっぱい。
10/03/27 12:20:23 GJlX799VP
どっちでもいい
好きな方をつかえばいいと思うよ

264:名無しさん@お腹いっぱい。
10/03/27 12:40:55 HsANWc9NP
>>262
環境によるけど
自分はダウンアップにしてるよ
ハンゲのゲームやってたときに
よく固まってたんですよ
それでダウンダウンダウンダウンって
違う箇所を4回くらいダウンさせて
アップってしたら固まらないようになったです
珍しい事例かもしれないけど
一応お伝えしておきますねw
がんがってください^^

265:名無しさん@お腹いっぱい。
10/03/27 20:09:52 2VmSdvyL0
レスありがとうございました。
なるほど。やっぱり違いはなかったんですね。
>>264
事例ありがとうございます。覚えておきますw

266:名無しさん@お腹いっぱい。
10/03/29 16:50:16 zWqUoN180
UWSCでスクリプトを動かしている間に別の作業をしたいのでMOUSEORGを使ってキーイベントを直接送りたいのですがうまくいきません

// マウス座標を相対座標にする、 またはマウスとキー情報を直接ウィンドウへ送る
MOUSEORG( ID, [基準指定 ] )

例えばnotepadに直接キーイベントを送りたい場合は
MOUSEORG( notepad, [2] )

という書き方でよろしいのでしょうか
ご教授いただけるとうれしいです



267:名無しさん@お腹いっぱい。
10/03/29 21:36:29 xNpZMuTv0
ドラッグしてCtrl+Cでコピーした文章をSendstrで出力したいんですが、
コピーした文章の出力方法がわからないのです。

Sendstrの文字列に当たる部分にはどのように書けばいいのでしょうか?



268:名無しさん@お腹いっぱい。
10/03/29 22:25:27 NFgbt+8v0
>>266
IDはプロセスIDだから、UWSCからnotepadを開くなら開く時の戻り値、
そうでないならGetIDでIDを貰って来なきゃならん。
[基準指定]の[]は省略可を表すだけで、2っていれときゃいいよ。
>>267
何処に出力したいのかは大丈夫?
ファイルに出力するなら、ヘルプのファイル操作関連
起動しているメモ帳やなんかに出力したいならSendStr
画面に表示したいならFukidasiやらPrintやらを使えばいい。
SendStrはヘルプ読めば解ると思うけど、
String=GetStr(0)
SendStr(送り先ID,String)
とすれば、変数Stringにクリップボードの文字列を格納して、それを送り先のIDに送る。
文字列の部分には""で囲った文字列か、文字列を格納した変数名を書けば良い。

269:267
10/03/30 02:35:32 i+J5d4Um0
>>268

ありがとうございました。クリップボードからの取得方法がわからなかったのです。
よく見たらヘルプにも書いてましたね・・・初心者ですいませんm(_ _)m


270:名無しさん@お腹いっぱい。
10/03/30 06:36:51 w9o7uVAy0
どなたか、TaskbarSorterをVista対応に改良してもらえないでしょうか?
一応使えることは使えるようなんですが、使えない機能がいくつかあるので、よろしければお願いします

271:名無しさん@お腹いっぱい。
10/03/30 06:37:53 w9o7uVAy0
すいません、>>270は誤爆です…

272:266
10/03/30 10:20:54 enNRlci80
>>268
返信ありがとうございます
GetIDで取得するIDはClassというものでよろしいのでしょうか?

id = GETID("Notepad")
MOUSEORG(id,2)
~処理~

これでは間違っているのかうまくいきませんでした
よろしければ教えていただけるとうれしいです




273:名無しさん@お腹いっぱい。
10/03/30 10:51:08 nQEKerym0
>>272
Notepadはクラス名はNotepadになるけど、タイトル名は別名かと…

274:名無しさん@お腹いっぱい。
10/03/30 12:21:01 uAc8A7pjP
なにか重大な勘違いをしているようだ

275:名無しさん@お腹いっぱい。
10/03/30 12:24:14 B93d/s/o0
>>272
ウィンドウのタイトルでOK
ヘルプの例にあるように、
id=GetID("メモ帳")
でいいよ。

276:名無しさん@お腹いっぱい。
10/03/30 13:57:27 TB+znm4l0
親切な人が多くて素晴らしいですね

277:266
10/03/30 17:44:58 enNRlci80
ご丁寧に教えていただいてるにも関わらず未だにうまくいきません><
実はLaTaleというオンラインゲームのウィンドウに直接送りたいのですが
ウィンドウのタイトルはLaTale Clientです

id = GetID("LaTale Client")
mouseorg(id,2)
REPEAT
KBD(VK_RIGHT,DOWN,100)
KBD(VK_RIGHT,UP,100)
KBD(VK_RIGHT,DOWN,100)
KBD(VK_RIGHT,UP,500)
KBD(VK_SHIFT,DOWN,100)
KBD(VK_SHIFT,UP,400)
UNTIL FALSE

これではだめでした
どうすればよろしいのでしょうか
よろしくお願いします

278:名無しさん@お腹いっぱい。
10/03/30 20:54:57 B93d/s/o0
なんでREPEAT-UNTILに入れてるの?
条件FALSEにしてるんじゃ意味無いでしょ。
つーかまたゲームのマクロの話かよ…
どうせまたDirectInput使ってるとかだろ
そもそも配布サイトのFAQくらい読んでから来いと…

279:名無しさん@お腹いっぱい。
10/03/31 00:50:17 2kVfTA890
>>277
それをやろうとするとバン対象だよ
ゲーム側で出来ないように工夫してるし。

280:名無しさん@お腹いっぱい。
10/03/31 03:14:21 QDwO3+WbP
そもそもこのスレって暗黙の了解かなんかでチート関連の話題は原則禁止じゃなかったか?

281:名無しさん@お腹いっぱい。
10/03/31 03:40:13 J88r7xmw0
cheatだろうと何だろうと関係ない
UWSCの事なら何でもあり
そもそもUWSCを何に使おうがそれは使い手の勝手
それが気にいらなければレスしなければよい

282:名無しさん@お腹いっぱい。
10/03/31 04:05:03 /r7+U6cH0
質問してる以上、流石にそれはないと思う
というか>>280が言いたいのはこんなスレでチートとかの質問するようなアフォは喋るなって事じゃないの
なんか最近不正行為っぽい質問が多いし
要約すると>>278
不正行為関連の質問は自重すべき

283:名無しさん@お腹いっぱい。
10/03/31 06:08:31 eObzEOzl0
>>281
そうだな。チートだと思われる質問には誰も一切何も答えなければ問題ないな
チートなんか使おうとする奴が質問自重するとは思えないから、答える側が気をつけないとな

284:266
10/03/31 12:00:12 mAVKXcTv0
ハンゲームのファミスタの話が出ていたのでオンラインゲームの話題もいいのかと思っていました;
以降気をつけます。ご迷惑をおかけしました><

285:名無しさん@お腹いっぱい。
10/03/31 12:05:44 wRNvV5G10
でもなんだかんだでこのソフトはチートでの使用が一番多いわけだが・・・

286:名無しさん@お腹いっぱい。
10/03/31 15:12:32 02z0GkxwP
>>285に1票www

287:名無しさん@お腹いっぱい。
10/03/31 17:19:37 db3wAIhw0
なんか変な流れを切るようで悪いんだけど教えてほしい。
既に開いてるIEをF5で更新した時に読み込み完了まで待ちたいんだけど
どうすればいいのかな?
よく見かけるのは

IE = CREATEOLEOBJ("InternetExplorer.Application")
IE.visible = True
IE.navigate("URLリンク(www.yahoo.co.jp)")

REPEAT
 SLEEP(0.1)
UNTIL !IE.BUSY AND IE.readystate = 4

これだけど、これだとブラウザ起動からしちゃうので目的と違うんだよね。
最初に上記でブラウザを起動してから更新の度に
REPEAT
 SLEEP(0.1)
UNTIL !IE.BUSY AND IE.readystate = 4
をすればいいのかな?
できればサイトを開くまでは手動でやりたいんだけど。

288:名無しさん@お腹いっぱい。
10/03/31 17:57:48 zl81UiL50
も少し、ヘルプよんでよ

IE=GETactiveOLEobj

ちなみに F5=IE.refresh

289:名無しさん@お腹いっぱい。
10/03/31 18:45:29 db3wAIhw0
>>288
レスサンクス
ほんとだ、、、書いてあった。。。
ヘルプに書いてあるのに質問しちまって申し訳なかったね。
お蔭様で希望通りの動きができました。
ありがとうm(__)m

290:名無しさん@お腹いっぱい。
10/03/31 20:08:51 vqZHXpqN0
>>289
おいおい、ニダランスレから出て来るなよw

291:名無しさん@お腹いっぱい。
10/03/31 21:03:28 db3wAIhw0
ニダランスレってなんだ?

292:名無しさん@お腹いっぱい。
10/04/01 03:53:25 fwJ098Wi0
何でニダーラン?

293:名無しさん@お腹いっぱい。
10/04/01 04:01:38 S8TPP2lzP
そんなことまで「なんで?」って聞き返してくるのかよ
ここは昔から質問者に「なんで?」「何するの?」「何がしたいの?」
自分の開発のヒント探るために聞くだけ聞いて質問者への回答は無視か罵倒
だから嫌になって来なくなったんだけど
たまたま覗いてみたら相変わらずのウンコ解答者ぶり

質問者さんへ
ここで聞いても無駄だよ
作者のうみうみ氏のサイトで聞いた方が時間はかかるけど正確だ
質問するために少々勉強してからの方がいいが
ここよりまともに回答してくれるよ
俺も以前はよく解答してたんだけど
UWSCというより何か儲けれるツールを作れないか
そのネタ探しに解答者ぶっているだけ
こいつらアホだからここで質問しても無駄だよ

294:名無しさん@お腹いっぱい。
10/04/01 04:27:25 S8TPP2lzP
UWSC覚えるのには時間がかかるよ
なんせ解説本は「Windowsマクロテクニック」という基本中の基本のみの
あまり役立たない本が1冊のみ販売されている
何をしたいかによって習得期間は変わるけど
オンラインゲームでちょっと自動化を作成するのに何ヶ月もかかった
インターネットを通じてしか勉強できないのも原因のひとつだろね
解答者は無報酬で応えているので
生意気だと思えば応えないし応える義務も無い
だから解答者ぶって質問者をイビリ倒すのが趣味って変人も多いよ
ぶっちゃけ奥深く入っていくとUWSCでは間に合わないよ
ゲームだけじゃないよ事務系の仕事を自動化するのも一緒
UWSCがでてすぐに課金ユーザーになって2年ほど夜も寝ないでUWSCばっかし勉強して気づいた事がある
結局間に合わせのUWSCは間に合わせに過ぎない
きちんとしたプログラムを勉強するのが一番近道だよ
それでパールやったけどパールもダメだな
掲示板の解答者がUWSCと同じ種類の人間だらけ
それでジャバスクリプトも勉強したけど
結局スクリプト言語じゃダメだったんだ
初めからC++がいいよ
C++ならなんでもできる
教材もいくらでもあるからね
掲示板でペコペコしながら質問する必要もない
UWSCの2年間全く無駄でした
初心者は初めからC++のほうがいいよ
じっくりやれば俺でも出来るようになった
やりたいことはこれだけだからって簡単にUWSCを勉強しだしたけど
次から次へと課題は出てくるもんだ
それをなんでも解決できるのはC++ですキッパリ
俺、おっさんなんだけど俺でも出来たがんがれ
ここでいつもゴマすりながら質問してた自分が今でも情けないよ
やればできるよ

295:名無しさん@お腹いっぱい。
10/04/01 04:52:02 S8TPP2lzP
俺が一番最初に質問してた頃は1人物凄く親切な方がいてた
大阪に住んでるって言ってたな
それで俺はUWSCの楽しさを教えてもらったんだ
あの方には今でも感謝してるよ
あの方はもうこないみたいだし
今、解答者ぶって質問者にレスしてる連中は
質問者が何をしたいか聞きだすのが目的なんだ
美味しいと思えば自分が先に作ってやろうって魂胆みえみえ
それで質問者へのレスは適当にしておくか
更に罵倒して、その質問者はもう来れなくするか
ヘンテコ解答者っていうか解答者の仮面を付けた基地外だな
UWSCの使い方云々抜かしてるガキが出てきた頃から
大阪に住んでるって言ってた解答者さんは来なくなって
質問者も罵倒されるのが嫌で来なくなった
前スレか前々スレは過疎過ぎてダット落ちしてたみたいだし
UWSCの使い方までご指導頂かなくて結構ですって言いたいんだけど
それを言っちゃー解答もらえないから我慢する
それで「質問者が何をしたいのかわからないので応えようが無い」とかはぐらかされて終了
UWSCとperlの解答者には気をつけた方がいいよ
スクリプト言語なんて役に立たないことが多いし
悪い事いわないからC++かJAVAがいいよ
ゲームに使おうがビジネスに使おうがお前に関係ないだろ>糞解答者

296:名無しさん@お腹いっぱい。
10/04/01 06:04:35 f/9UZXtU0
おいおい、なんのコピペだよこれ

297:名無しさん@お腹いっぱい。
10/04/01 06:11:53 NSxeyl3Z0
不覚にもワロタ

298:名無しさん@お腹いっぱい。
10/04/01 11:07:20 0yWWJhZV0
ID:S8TPP2lzP

なにこのキチガイ

299:名無しさん@お腹いっぱい。
10/04/01 11:14:41 2Up7o9yS0
C++がいいよ

300:名無しさん@お腹いっぱい。
10/04/01 21:46:18 URK6iTyf0
指定時刻に指定ポイントをクリックするスクリプトつくれる?

301:名無しさん@お腹いっぱい。
10/04/01 22:23:08 5xeykHJ2P
余裕で作れる
というか初歩中の初歩

302:名無しさん@お腹いっぱい。
10/04/02 00:28:22 4cLa/HLo0
なんで?って聞くのは別のアプローチから期待された動作をさせた方が、
確実だったり楽だったりすることがあるからだろ…

ジャバスクリプトとかカタカナで書いている所とか、一度も出てこなかったJAVAが一番最後だけ出てくるとか、
自己矛盾か自己批判を孕んでるあたりとか、自動化をやるのにC++なんぞを使うと言い出すあたりの所ですよね、笑うポイントは。

ゲームに使おうがビジネスに使おうがなんて言ってるけど、そもそもオンゲなんかはプロテクトがかかってるのが多いから、
それすら知らないとか、プロテクトをかいくぐる技術も無いのに質問するヤツが多いから回答者が辟易して、ゲーム関係をうざがるんだろーが…
そういうダークな範囲で使いたいなら独学しろと…

303:名無しさん@お腹いっぱい。
10/04/02 05:17:12 /tViDlcK0
お前はなにをいっているんだ

304:名無しさん@お腹いっぱい。
10/04/02 05:28:23 Ue5xH3Cy0
ID:S8TPP2lzPには手を触れないよーに

305:名無しさん@お腹いっぱい。
10/04/02 06:59:15 I68nnadS0
たぶんこいつは本人で自演だろう

306:名無しさん@お腹いっぱい。
10/04/02 09:08:28 +bubi7hm0
大阪に住んでる凄く親切な回答者:ID:S8TPP2lzPがしつこくてうざいからここくるのやめた

307:名無しさん@お腹いっぱい。
10/04/02 13:18:16 fDfu5inU0
>>302
うざい解答者ってお前のことだわ

308:名無しさん@お腹いっぱい。
10/04/08 05:17:27 YpPiuNaU0
001 while
002 //いろいろ計算やら比較をやって
003 条件="おなら"
004 if 条件="ほにゃら" then break
005 print "ほにゃらではない"
006 wend

004行 で breakで ループを抜けたと思ったら、 005行を実行した上で 多重ループを抜けるんで

005 if !( 条件="ほにゃら" ) then print "ほにゃらではなかった"

というような 記述でとりあえずは逃げたんですけど、 こういうもんなんでしょうか?


309:名無しさん@お腹いっぱい。
10/04/08 09:20:05 n8jkUacb0
003 条件="おなら"
て書いてるかられしょ

310:名無しさん@お腹いっぱい。
10/04/08 09:54:44 3BOGl5Ct0
>>308
単純に、3行目のif文を間違えているだけだろう。
「5以上になったらループ抜ける」をやりたいのに「if 5>i then break」と書いちゃってるとか。



311:名無しさん@お腹いっぱい。
10/04/08 09:56:16 3BOGl5Ct0
>>310
符号が逆だった。

「5以上になったらループ抜ける」をやりたいのに「if 5<i then break」と書いちゃってるとか。

312:名無しさん@お腹いっぱい。
10/04/08 13:47:14 nLPIw5SzP
>>308
× 003 条件="おなら"
○ 000 条件="おなら"


313:308:
10/04/08 14:31:05 YpPiuNaU0
>>309-312 ありがとうございます.
やはり ありえないって事のようなので指摘していただいた点を再度調べてみます.
>>312
あ、初期値がUWSCから見えないってことでしょうか。その手の事だとすると実行前に構文チェックに掛かって修理してるような気がするんですが?

314:名無しさん@お腹いっぱい。
10/04/08 15:00:26 nLPIw5SzP
>>313
条件="おなら" は
条件="おなら" であって
条件="ほにゃら" ではない


315:名無しさん@お腹いっぱい。
10/04/08 15:29:50 n8jkUacb0
>>313
初期値っていうかなんというか

みんな言いたいことは、UWSCは間違ってなくて、記述どおり動いてるってこと

316:名無しさん@お腹いっぱい。
10/04/08 15:35:19 9crZpxrL0
>>313
いやちゃんと整理して考えてみ

317:308:
10/04/08 16:24:53 YpPiuNaU0
>>314
すみません.ぐっちゃぐちゃでした.
訂正
000 条件="おなら"
001 while 条件="おなら"
002 //いろいろ計算やら比較をやっった結果
003 条件="ほにゃら"
004 if 条件="ほにゃら" then break
005 print "ほにゃらではない"  →  005 if !( 条件="ほにゃら" ) then print "ほにゃらではない"
006 wend
こうかな? こんな感じで Break条件の 否定条件をつけて逃がしてます.でした.orz
ってか、今作ったのを見直してるんですが、実際作った部分はこうです.
0001 mdelay=0; oldmdelay=mdelay; delaysw=0 //スクリプト冒頭で初期値設定済
0100 optx=7 // POPUPMENU(pp, STATUS(xID, st_x), STATUS( xID, st_y )+STATUS(xID,st_height))
0101 SELECT optx
0102  CASE 7
0103    REPEAT
0104     x= INPUT("Now : "+oldmdelay+" to set new(ms):",mdelay)
0105     IF x= EMPTY THEN BREAK
0106    UNTIL CHKNUM(x)
0107    IFB !(x = EMPTY) THEN
0108      mdelay= x; oldmdelay=mdelay;delaysw=1
0109      PRINT "*Set07. Delay. ms: "+mdelay
0110    ENDIF
0111  CASE 8
0112    PRINT "*Set08. Hi Sensitive Start."
1000 SELEND
1001 sleep(911)

0107 と 0110 が break したつもりでも抜けられなかったんで付け加えた行です.
この行に”//"を入れてやったら、やっぱり抜け出せなかったです.

318:名無しさん@お腹いっぱい。
10/04/08 17:13:56 2KfY3Rs50
>>317
「107と110を付け加えた」のなら
例文と実際のコードのprint位置が違うのだが・・・
「107~110を付け加えた」のなら修正前のコードが欲しいところ。

319:名無しさん@お腹いっぱい。
10/04/08 17:19:01 nLPIw5SzP
>>317
ちょっと待て
0105 のbreakでどこを抜けようとしたって?

0107にはxに数値が入ったときかxが空だったときとなるので
その制御では分岐が確かに必要になる。
そうしないとxを使ったときにエラーになるからね。

それを0105でどうにかしようと思うならifb使ってそこになにやら書くか、
exit、もしくはループを追加してbreak 2 を使う必要がある。

UWSCはBasic系なのでcaseを抜けるbreakはない。
そこで、0105から0110に飛ぶようにしたらどうだろう?
0102  CASE 7
0102.5  while true
0103    REPEAT
0104      x= INPUT("Now : "+oldmdelay+" to set new(ms):",mdelay)
0105 +----  IF x= EMPTY THEN break 2
0106 |   UNTIL CHKNUM(x)
0108 |   mdelay= x; oldmdelay=mdelay;delaysw=1
0109 |   PRINT "*Set07. Delay. ms: "+mdelay
0110 +->wend

ループ条件を変更して0108~0109を次のようにするほうがいいと思う
010x    ifb CHKNUM(x) then
010x      mdelay= x; oldmdelay=mdelay;delaysw=1
010x      PRINT "*Set07. Delay. ms: "+mdelay
010x      break
010x    endif


320:308:
10/04/08 17:27:56 YpPiuNaU0
>>318
すみません. 『break文で 多重ループを抜け出せない』って事があるものなのかって事を 相談したかったんで
条件式の錯誤に気がつかず、また実際のものとずいぶん違うものを提示してしまい迷惑をおかけしました.
最初 書いたときは 107 110行はありませんでしたが 105行の "EMPTY"(CANCEL)入力で BREAKしないので
単純に 107,110行を追加しているのが現状です.

321:308:
10/04/08 18:30:40 YpPiuNaU0
>>319
今 BREAK のヘルプを読んで 顔が熱くなってきました.はずかしい限りです.
0001 mdelay=0; oldmdelay=mdelay; delaysw=0 //スクリプト冒頭で初期値設定済
0100 optx=7 // POPUPMENU(pp, STATUS(xID, st_x), STATUS( xID, st_y )+STATUS(xID,st_height))
0101 SELECT optx
0102  CASE 7
0102.5  while true
0104      x= INPUT("Now : "+oldmdelay+" to set new(ms):",mdelay)
010x    ifb CHKNUM(x) then
010x      mdelay= x; oldmdelay=mdelay;delaysw=1
010x      PRINT "*Set07. Delay. ms: "+mdelay
010x      break
010x    endif
0100   WEND
0111  CASE 8
0112    PRINT "*Set08. Hi Sensitive Start."
1000 SELEND
1001 sleep(911)

こうですね.バッチリきれいに抜け出せました,皆さんどうもありがとうございました.


322:名無しさん@お腹いっぱい。
10/04/11 09:21:19 WP7Ufm9tP
無料版でIE以外のブラウザの操作もできますか?

323:名無しさん@お腹いっぱい。
10/04/11 10:53:36 7t91Tinz0
>>322
基本、無理。

324:名無しさん@お腹いっぱい。
10/04/11 11:09:55 WP7Ufm9tP
そうですか。
このゲーム(待ってクリック、待ってクリックを繰り返すFH)で
自動戦闘を繰り返すマクロ作れたらお願いします

URLリンク(mob-2.com)

325:名無しさん@お腹いっぱい。
10/04/11 11:40:13 L29VjoPvP
了解しました。
20万円くらい用意しといてね。

326:名無しさん@お腹いっぱい。
10/04/11 16:04:40 S762n6IR0
>>324
テンプレくらい読んで書き込めよカス

327:名無しさん@お腹いっぱい。
10/04/11 16:21:34 ikeA/Ag60
ブラザウ動かせない糞ソフト

328:名無しさん@お腹いっぱい。
10/04/11 16:53:32 7t91Tinz0
シベリアにいた頃に作った、ゲームでクリックするだけのマクロをあげとくわ。

太鼓の達人マクロ。
URLリンク(gamezone.gooside.com)
// ( .  )  ピリオドの位置にマウスを合わせて開始するといい。
FUKIDASI("マウスを読み取り位置にあわせてください。<#CR>Ctrlキーをクリックで開始します。")
// VK_CTRL が押されたら開始
Repeat; sleep(0.2); Until GetKeyState(VK_CONTROL)
FUKIDASI("実行中。<#CR>Ctrlキーをクリックで終了します。")

// マウス座標保存
MouseX = G_MOUSE_X
MouseY = G_MOUSE_Y

// キー保存変数
dim previousKey
dim key
dim isYellow = false
dim isPreviousYellow = false

sleep(1)
while true
 isPreviousYellow = isYellow
 isYellow = false
 sleep(0.005)
 // VK_CTRL が押されたら終了
 if GetKeyState(VK_CONTROL) then break

 key = 判定( MouseX, MouseY, previousKey, isPreviousYellow, isYellow )
 if ! key then continue


329:名無しさん@お腹いっぱい。
10/04/11 16:54:06 Ik0GncC3P
 // キーをクリック
 ifb isPreviousYellow then
  ifb isYellow then
   sleep(0.02)
  endif
 endif
 KBD(key)
 // 最後に押したキーを保存
 previousKey = key
 sleep(0.02)
wend

// 戻り値:キーコード
//     処理しない場合、0を返す。
// X: X座標
// Y: Y座標
// key: 最後のキー
// fYellow: 前回のYellow フラグ
// isYellow:今回のYellow フラグ
// 呼び出し回数:呼び出し側は常に省略する。
//        自分を呼ぶときは+1する
function 判定( X, Y, key, fYellow, var isYellow, n = 0 )
 result = 0
 // 色を取得
 color = PEEKCOLOR( X, Y )
 ifb ! fYellow then
  //黄色が出た後はグレーの判定はなし
  if isGray(color) then exit
 endif

330:名無しさん@お腹いっぱい。
10/04/11 16:54:53 7t91Tinz0
 red = color and $FF
 green = (color and $FF00) / $100
 blue = (color and $FF0000) / $10000
 ifb fYellow then
  // 黄色フラグが立っているときは、他のカラー(青、赤)の判定はしない。
  ifb 0 = color then
   // 前回黄色だったら、黒は黄色とみなす。
   isYellow = true
  else
   exit
  endif
 elseif 255 = blue then
  result = VK_M // 青なので「m」
 elseif 255 = green then
  isYellow = true // 黄色
 elseif 255 = red then
  result = VK_Z // 赤なので「z」
 else
  exit
 endif
 ifb isYellow then
  ifb 4 <= n then
   // 黄色で確定 // 黄なのでmとzを交互に
   if key <> VK_M then result = VK_M
   if key <> VK_Z then result = VK_Z
   exit
  endif
  // 規定個数の箇所をチェックする // (黒を除く)グレーがあれば中断
  if ! n then X = X + 35
  result = 判定( X + (n * 5), Y, key, fYellow, isYellow, n + 1 )
 endif
fend

331:名無しさん@お腹いっぱい。
10/04/11 16:55:11 Ik0GncC3P
//////////////////////////////////////////////////////////////////
// グレーチェック
// メーターカラーなどがグレーかどうかを調べる
function isGray( color)
 red = color and $FF
 green = (color and $FF00) / $100
 blue = (color and $FF0000) / $10000
 sum = red + green + blue
 aveH = sum / 3 + 10
 aveL = sum / 3 - 10

 Ifb ( red < aveL ) or ( aveH < red ) Then
   RESULT = false
 elseif ( green < aveL ) or ( aveH < green ) Then
   RESULT = false
 elseif ( blue < aveL ) or ( aveH < blue ) Then
   RESULT = false
 else
  RESULT = true
 endif

Fend

332:名無しさん@お腹いっぱい。
10/04/11 17:07:04 7t91Tinz0
>>328-331

1.スクリプトを起動し、
2.ゲームのページを開いて開始し、
3.( .  ) ←の顔を合わせる丸括弧のピリオドの位置にマウスを合わせ、Ctrlキーで開始する。
  ゲーム中は放置。
4.ゲームが終了したらCtrlキーでマクロを終了する。

マウスで指定した座標の色を監視し、顔が合わさる瞬間にキーを自動クリックするだけだが、
連打する部分を見分けるためにちょっとめんどくさい処理になっている。
顔の種類の判定をそれぞれ色素の一つしか見ずに済むこんなシンプルなゲームでも、
識別して適切な動作をするのにこれだけの長さのコードが必要になる。

グレーチェックの関数は流用でそれ以外の部分を新規に作ったが、
これだけで5時間もかけてる。
UWSCで小さいマップを動き回るマクロをいくつか書いてる僕がそれだけ時間かかるんだから、
実現可能だとしても、ゲームマクロにはそれなりの労力が必要。
ちなみにマップを動き回るマクロは1000行くらい必要になった。


333:名無しさん@お腹いっぱい。
10/04/11 21:45:43 1FTtfnsf0
マウスの感度をよくするにはどうしたらいいものか

334:名無しさん@お腹いっぱい。
10/04/11 22:12:34 oXYAxr2f0
マウスの裏を掃除する

335:名無しさん@お腹いっぱい。
10/04/13 22:18:41 2xzsxj+L0
マウスパッドを敷く

336:名無しさん@お腹いっぱい。
10/04/14 22:23:33 bbwcK6IR0
ここに1個のpdfファイルがあります。
ページ番号はついていません。

自分で簡易製本するためページ番号をつけたいんです。
偶数ページには左下に、奇数ヘージには右下に。

そんなページ番号をpdfファイルに挿入するためにはどうすればいいですか?

337:名無しさん@お腹いっぱい。
10/04/14 22:47:05 pM2mgX640
テンプレくらい読んできてね

338:名無しさん@お腹いっぱい。
10/04/15 02:27:46 Ti8sLQUA0
>>336
ググれ

基本的には印刷時にソフトで自動挿入だよ。
自動と言ってもUWSCとはまったく関係ないけどね。
PDFを直接編集するソフトなら手作業だろうね。


339:名無しさん@お腹いっぱい。
10/04/16 23:21:01 HC5SVg6T0
uwscはPDFの編集はできないよん

340:名無しさん@お腹いっぱい。
10/04/19 21:26:23 1NXVhFap0
俺はエロサイトからダウンロードしてきた大量のエロ動画ファイルのファイル名を
管理するのにuwsc使ってます^q^ノ

341:名無しさん@お腹いっぱい。
10/04/19 21:54:44 XgjI0OYr0
ダウンロードしたファイルの管理か。どうやってんだろ。
俺のSayMoveダウンロードスクリプトはダウンロードはするけどリスト化はしてないんだよな。
ダウンロードに失敗したり、あとで削除とかするからダウンロードソフトみたいに画面作って全部管理しないと意味ない気がするし。

342:名無しさん@お腹いっぱい。
10/04/21 22:53:33 j6JEIgFp0
フリー版でIEの自動操作はできないの?
6,720円(税込)ってたけぇな

343:名無しさん@お腹いっぱい。
10/04/22 01:47:11 BzTJSDhd0
>>342
録画機能は有償版にしかついてないけど、再生は有償無償どちらでもできる。
ただ、開発支援環境もなしに作るのは大変。
あっても大変だし労力の割りにできることは大したことなかったりするけど。

まずはフリー版と、IEを自動操作するソースでも手に入れたら?


344:名無しさん@お腹いっぱい。
10/04/22 18:51:07 1b3KZlwEP
IE自動操作ってそんなに難しかったっけ?
それとも俺が思ってるのとはまた別なのか・・・

345:名無しさん@お腹いっぱい。
10/04/22 22:38:55 BzTJSDhd0
上書き確認のダイアログ処理とかエラーメッセージの対応とか
動的ページの処理とか
結構大変やん?

僕は一度作って改良して使いまわし出来るようになってからはそれほどかからんようにはなったけど、
半年くらいみっちりやらんとちゃんとしたもんは作れん。

いや、単純な操作なら録画・再生程度でそれなりにできるけどね。
フリー版入手よりも、シェア版のお試しを勧めるべきだったか。


んでIEオブジェクトのスレッド間使い回しがなんかバグりまくって動かんしね。
OLEEVENTで受け取ったIEオブジェクトも高確率で使えんし。
どーゆー条件でなら使えるのかよく分からん。


346:名無しさん@お腹いっぱい。
10/04/24 08:10:49 6nk6f6hV0
これってUWSCを動かすファイル?
URLリンク(www.dotup.org)

347:名無しさん@お腹いっぱい。
10/04/24 08:17:59 kCRize2QP
・・・情報提供料としていくらまで出せます?

348:名無しさん@お腹いっぱい。
10/04/24 12:55:57 Xrgo5/kc0
www

349:名無しさん@お腹いっぱい。
10/04/24 17:10:01 ZblMfkgKP
ゲームでキャラの位置を正確にしたいんだけど
何かいい方法ある?
東西南北に敵キャラがいて丁度真中迄移動したいんだけど
微妙にずれていくので教えて下さい
東との距離が近くなれば西との距離が遠くなり
南との距離が近くなれば北との距離が遠くなる
上記のような感じでぴったし真中に合わせられないんですよ
ゲーム内の位置とPCの座標を合致させる方法あれば教えてください
UWSCをゲームに云々のくだらない回答は不要です
答えられないならスルーでいいですから







>>302>>343書き込んだ人は自分へのレス禁止
うざいからお前のレスなんて要らねーから
お前のレス必要ないから返事すんなよ
ていうかお前わかってないのに答えようとするから邪魔なんだ罠
消えろ変人解答者
ここでうざい解答者ってお前のことだわ
別人の振りしてレスすんなよ


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch