自動化ツールuwsc使いよ集まれ5at SOFTWARE
自動化ツールuwsc使いよ集まれ5 - 暇つぶし2ch55:名無しさん@お腹いっぱい。
09/12/18 15:21:16 nijyYsTD0
basicの
go to 文のように

指定行へ飛んで再び命令を実行するコマンドはありますか?

56:名無しさん@お腹いっぱい。
09/12/18 15:26:19 vrRma16p0
>>55
なさそうなので次のようにして代用している
たぶんPROCEDUREとかにした方が簡単だろうけどね

WHILE TRUE
処理(必ず行う処理)
if 条件 then break
処理(条件により飛ばす処理)
WEND

57:名無しさん@お腹いっぱい。
09/12/18 15:39:47 8nryPwZy0
>>56
ありがとうございます
やはり工夫しないと代用はできないようですね

58:名無しさん@お腹いっぱい。
09/12/18 15:49:09 sdiE7QKM0
>>56
そういうbreakの使い方って可読性低いんじゃない?
やるなら
ifb
 (条件により飛ばす処理)
endif
とか処理の範囲を明確にするほうがいいような気がする。

…まぁ、俺はそうしてる、ってだけだけど。

59:名無しさん@お腹いっぱい。
09/12/18 16:19:03 vrRma16p0
>>58
普通ならたぶんifb ~endifだろうね
ただ、何を作ってたか忘れたけどどうしてもifbで出来ないケースにぶち当たってしまい、
苦肉の策で考えてやってみたんだ。それ以来こっちのほうを使っている
思い出そうとしても思い出せないくらいだけど、gotoなくてしばらく苦しんだことだけ覚え
てる
そもそも WHILE TRUEの時点でかなり特殊な使い方をしてるって意識できるループに
なるからね。ループを脱出できるのはbreakしかできないんだ

60:名無しさん@お腹いっぱい。
09/12/18 16:29:12 2K48D2BC0
> ifb OK then
>  ifb OK then
>   ifb OK then
>    OK処理
>   endif
>  endif
> endif
↑では行数が増えた分だけインデントが深くなるので
> while true
>  if NG then break
>  if NG then break
>  if NG then break
>  OK処理
> wend
↑のように書いたりするんです。
でもOKとNGとがループの抜けと共に混じることになるので
↓のように、関数を使うのがベターかな。
> ifb !処理() then // 普通はエラーの場合に条件分岐なので、falseを反転して分岐処理
>  NG後始末
> else
>  OK後処理
> endif
>
> Function 処理()
>  処理 = false // 失敗に備えてエラーをセット
>  if NG then exit
>  if NG then exit
>  if NG then exit
>  OK処理
>  処理 = true // 成功したら成功フラグをセット
> FEND


61:名無しさん@お腹いっぱい。
09/12/18 17:45:48 SLXkS1nI0
ifbよりbreakの方がgotoっぽいからbreak使ってる

62:名無しさん@お腹いっぱい。
09/12/18 18:21:51 dGzexJ6N0
全然素人だからアホな考えかもしれないけど
uwscにgoto処理できる機能を作者さんが付け加えることはできるの?

63:名無しさん@お腹いっぱい。
09/12/18 18:42:22 in2xK9mD0
>>62
goto のように他の行へ移動したいのですが
初歩的な質問ですみません。
VBAでいう goto みたいな命令文はあるのでしょうか?
よろしくお願いします。


DATE:2007/1/17(Wed) 13:26 No.474

RE:goto umiumi


ありません。
#将来的にも付ける気はありません


64:名無しさん@お腹いっぱい。
09/12/18 21:30:11 WhncmQLP0
あったほうが便利なのにね

65:名無しさん@お腹いっぱい。
09/12/18 22:35:34 Rqu21NSB0

goto使っちゃ   負けだと思ってる  個人的にネ



66:名無しさん@お腹いっぱい。
09/12/18 23:42:48 6/ZSokwM0
使い始めでカンタンな動作しかさせないつもりだったんだけど
とあるサイトを sleipnirでバックグラウンドで操作したいんだけど
アクティブウィンドウで動作させる場合は KBDで事足りてるだけどPC占有されちゃうんで
バックグラウンドでやりたい。

id = GETID("Sleipnir")
MOUSEORG(GETCTLHND(id, "Internet Explorer_Server"), 2)
KBD(VK_TAB,CLICK)~
とかやってもうんともいわなくて
SCKEY(id, VK_TAB)  これをやるとウィンドウがアクティブになってしまう。

URLリンク(uenomemo.blog31.fc2.com)
これを参考にしようかと思ったんだけど さっぱり。
pnir = CreateOLEObj("Sleipnir.API")と宣言されてもあとどうしていいかわからない。
誰か教えてください。 

67:名無しさん@お腹いっぱい。
09/12/19 00:05:02 ATzk7yJS0
CLKITEM使えよw

68:名無しさん@お腹いっぱい。
09/12/19 00:05:38 67QaJwyf0
こりゃまた大胆なマルチポストだな…。

69:名無しさん@お腹いっぱい。
09/12/19 05:47:10 8hxMfkWq0
そのレベルから教えるのは無理なので
まずは3の教則本でも買って勉強してきてください

70:名無しさん@お腹いっぱい。
09/12/20 03:13:13 sezMof5L0
>>66
sleipnirで操作する必要性がわからない。
sleipnirって中身IEでしょ?
だから普通にIEを制御すればいいと思うんだけど。


71:66
09/12/20 07:35:14 bLgdGkWj0
67-70とりあえず本は注文しといた。
sleipnirに拘ってはいないんだけど、普段使ってるからなんとなく。
IEと同じだからやることは同じかなと。
ま、まだ出来てないんだけどね。理解するまでもう少し時間かかるかな~

72:名無しさん@お腹いっぱい。
09/12/20 11:24:50 67+0bBGV0
Operaで動かしたいよー

73:メモ
09/12/20 14:12:47 sezMof5L0
OLEEVENT( オブジェクト, インタフェース名, イベント名, Procedure名 )

インタフェース DWebBrowserEvents2
void BeforeNavigate2(java.lang.Object pDisp, com.ms.com.Variant URL, com.ms.com.Variant Flags, com.ms.com.Variant TargetFrameName, com.ms.com.Variant PostData, com.ms.com.Variant Headers, boolean[] Cancel)
void CommandStateChange(int Command, boolean Enable)
void DocumentComplete(java.lang.Object pDisp, com.ms.com.Variant URL)
void DownloadBegin()
void DownloadComplete()
void NavigateComplete2(java.lang.Object pDisp, com.ms.com.Variant URL)
void NewWindow2(java.lang.Object[] ppDisp, boolean[] Cancel)
void OnFullScreen(boolean FullScreen)
void OnMenuBar(boolean MenuBar)
void OnQuit()
void OnStatusBar(boolean StatusBar)
void OnTheaterMode(boolean TheaterMode)
void OnToolBar(boolean ToolBar)
void OnVisible(boolean Visible)
void ProgressChange(int Progress, int ProgressMax)
void PropertyChange(java.lang.String szProperty)
void StatusTextChange(java.lang.String Text)
void TitleChange(java.lang.String Text)

新しいページが開くときに動くには BeforeNavigate2、TitleChange、NewWindow2
開き終わってから動くには NavigateComplete2
イベント処理関数が終了しないとその続きが処理されないので、単純に実行タイミングとして使う場合はスレッド呼び出しをする。
途中で別のページを開く可能性があるので、タイマーで終了する必要があるかも。


74:73
09/12/20 18:36:46 NXkHkjdJ0
このスレは今後オレのメモとして使うからお前ら書き込むなよ。

75:名無しさん@お腹いっぱい。
09/12/20 18:54:23 sezMof5L0
了解

76:名無しさん@お腹いっぱい。
09/12/20 19:15:57 wo2Kl350P
メモは非表示にしたいので名前は「うんこメモ」でよろしく

77:名無しさん@お腹いっぱい。
09/12/20 20:15:15 sezMof5L0
// 待ちループなしのIE制御スクリプト
STOPFORM(true)
PUBLIC gIE2
gIE2 = CreateOLEObj("InternetExplorer.Application")
gIE2.visible = True
gIE = CreateOLEObj("InternetExplorer.Application")
gIE.visible = True
ID = HNDToID(gIE.HWND)
OLEEvent( gIE, "DWebBrowserEvents2", "TitleChange", "TitleChange" )
OLEEvent( gIE, "DWebBrowserEvents2", "BeforeNavigate2", "BeforeNavigate2" )
OLEEvent( gIE, "DWebBrowserEvents2", "NewWindow2", "NewWindow2" )
OLEEvent( gIE, "DWebBrowserEvents2", "OnQuit", "OnQuit" )
sleep(60)
CtrlWin(ID, CLOSE)
Procedure OnQuit()
 exitexit
FEND
Procedure TitleChange() // キャッシュに入ってない場合に2回呼ばれる。そして1回目はページ受信前のタイトル。
 Title = EVENT_PRM[0]
 print "TC " + Title
FEND
Procedure BeforeNavigate2() // 1回のページ操作につき1回呼ばれる。
 IE = EVENT_PRM[0]   // IEオブジェクト
 URL = EVENT_PRM[1]  // 開くURL
 print "BN " + IEGetData( IE, "TAG=title" ) + " " + URL
FEND
Procedure NewWindow2()
 EVENT_PRM[0] = gIE2  // 新しく指定するブラウザオブジェクト(自分自身は指定できない)
 EVENT_PRM[1] = True // Cancel flag
 print "NW"
Fend

78:名無しさん@お腹いっぱい。
09/12/21 12:37:44 9pLp31HK0
>> ID:sezMof5L0
>>74のスレにそんなに顔真っ赤になったのか?
一生懸命メモ貼らなくていいよ。

79:名無しさん@お腹いっぱい。
09/12/21 15:31:16 1MBjkeY90
XPでIE6使ってるけど、”ファイルのダウンロード”ダイアログではバックグラウンドで保存ボタンをクリックできないんだけど
これってダイアログが裏で動くのを却下してるってことなのかな。
いまさらだけど、たまにしか作らないとそういうところで引っかかる。
最初から表にいてもなんかクリックできなくて一旦裏にもって行かないといけなかったり。
結局AACで指定しないといけない。
”名前を付けて保存”ではそんなことなさそうなんだけど。
”名前を付けて保存”の上書き確認とかのメッセージボックスなら自作のGetChldID()ですばやく確実にIDをゲットしてクリックできるんだけどなあ。
>  Until !ClkItem( DlgID, "保存", CLK_BTN or CLK_SHORT or CLK_BACK )
>  Result = !CancelIfOverWrite(DlgID, 20)
> // ID: 名前を付けて保存ダイアログのID
> // false: キャンセルしてない true: キャンセルした
> Function CancelIfOverWrite(ID, TLimit)
>  Result = false
>  print "called CancelIfOverWrite()"
>  Repeat
>   sleep(0.1); TLimit = TLimit - 0.1; if TLimit < 0 then exit
>   if !IDToHnd(ID) then exit
>   CID = GetChldID( ID )
>  Until 0 < CID
>  // 上書き確認メッセージ処理
>  Result = true
>  while true
>   ifb 0 < CID then
>    ClkItem( CID, "いいえ" )
>   Else
>    ClkItem( ID, "キャンセル" )
>   Endif
>   sleep(0.3); TLimit = TLimit - 0.3; if TLimit < 0 then exit
>   if !IDToHnd(ID) then exit
>   CID = GetChldID( ID )
>  wend
> FEND

80:名無しさん@お腹いっぱい。
09/12/21 15:44:52 1MBjkeY90
あと、>>77のBeforeNavigate2でIEオブジェクトをスレッドに渡して処理しようとしても、
IEオブジェクトを使うときにエラーになる。
グローバル変数を使ったりvarで渡したりしてみたけどどーしてもエラーになる。
普通にスレッド実行するときにはvar引数でIEオブジェクトを渡して使えてたんだけど、
BeforeNavigate2でスレッド呼び出ししたらなぜか駄目だ。
結局BeforeNavigate2では開始フラグをセットして、関数呼び出しは普通に待ちループでやった。
まあBeforeNavigate2も何度か呼ばれたりするみたいだしそのほうが2重起動とかなくてよかったみたい。
もしかして2重起動されるのが原因・・なわけないな。ちゃんと選別してたから。


81:名無しさん@お腹いっぱい。
09/12/21 16:01:58 GyHfCZ1l0
独り言お疲れ様です

82:名無しさん@お腹いっぱい。
09/12/21 22:51:55 qrX4Zb5TP
質問ならまだしも独り言口調ってマジムカつく
もっと読んでる人の事を考えてほしい

83:名無しさん@お腹いっぱい。
09/12/22 09:25:16 /egSySEF0
>>82
質問ならまだしも独り言口調ってマジむかつきませんか?
もっと読んでる人のことを考えて欲しいと思っているのですが、貴方の考えはどうでしょう?

84:名無しさん@お腹いっぱい。
09/12/22 11:16:08 Y5j4vTTi0
>>82は釣りだろ。

85:名無しさん@お腹いっぱい。
09/12/25 22:12:23 QQjADlGN0
DOSコマンドの

pushd X:\Temp
del /q *.*
for /D %%f in ( * ) do rmdir /s /q "%%f"

というのをUWSCでやろうとして

DOSCMD("pushd X:\Temp<#CR>del /q *.*<#CR>for /D %%f in ( * ) do rmdir /s /q <#dbl>%%f<#dbl>", false, true)

と書いたけど、ちゃんと動いてくれない
どこが間違ってるの?

86:名無しさん@お腹いっぱい。
09/12/25 22:22:33 PGzvFXxt0
<#CR>で繋げないんだろう。
|使うかバッチファイル作るかすればいいんじゃないかな?

87:名無しさん@お腹いっぱい。
09/12/25 23:15:19 QQjADlGN0
だめだ、俺の知識じゃどうやってもできない
おとなしくバッチファイルにしとくわ

88:名無しさん@お腹いっぱい。
09/12/26 08:32:23 scMOjuw20
>>85
複数のコマンドを連続で実行するなら丸括弧と改行で区切ればいいよ。
普通にコマンドラインで
> ( dir
とだけ入力すれば、More?って聞いてくる。
> )
で閉じるまで実行待ち状態。

パイプも連続実行だけど後のやつが受け取ったものをどう処理するか分からないからね。
しかしなんでループ処理でrmdirしちゃうのかねえ。

89:85
09/12/26 09:25:34 MKs2n1Uw0
動かなかった原因がわかった
UWSCスクリプトでやるときは%が一つ余分になるんだ

>>88
URLリンク(okwave.jp)
俺はここから丸写ししただけ

90:名無しさん@お腹いっぱい。
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 したつもりでも抜けられなかったんで付け加えた行です.
この行に”//"を入れてやったら、やっぱり抜け出せなかったです.


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