[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 2chのread.cgiへ]
Update time : 06/01 13:14 / Filesize : 257 KB / Number-of Response : 662
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

自動化ツールuwsc使いよ集まれ5



1 名前:名無しさん@お腹いっぱい。 [2009/12/09(水) 05:27:33 ID:J1DL1P1U0]
Windowsを自動化させるツールUWSC。
www.uwsc.info/

uwsc使いのみなさま、マターリ己のスクリプトを晒しましょ。

48 名前:41 mailto:sage [2009/12/15(火) 06:41:43 ID:vPOWhoxM0]
そうだった、肝心なDOSコマンドのこと書くの忘れてた。ごめん
DOSCMD("taskkill /im conime.exe")
で終了させる方法はもう試してたんだけど、
DOSコマンドを使うとconime.exeが自動起動するから
UWSCでDOSコマンドを使ったときに、起動したconime.exeも一緒にkillできないかなと思って

UWSCだと方法はDOSコマンドしかないみたいだから
DOSコマンドを使うときに一緒にDOSCMD("taskkill /im conime.exe")と書くしかないか

49 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/12/15(火) 15:06:20 ID:9Zmrpz910]
>>41
っ 一口メモ
Conime.exe を起動しないようにする
[HKEY_CURRENT_USER\Console]]
"LoadConIme"=dword:00000000

50 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/12/17(木) 14:08:44 ID:gJ3JtLvf0]
>>41
CTRLWIN() でイけたよ @XP Home SP3

DIM path = "C:\WINDOWS\system32\conime.exe"
DIM i

FOR i=0 TO GETALLWIN()-1
  IFB STATUS(ALL_WIN_ID[i], ST_PATH) = path THEN
    CTRLWIN(ALL_WIN_ID[i], CLOSE)
    BREAK
  ENDIF
NEXT

51 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/12/17(木) 14:18:13 ID:fLsGSbJB0]
>>50
すごいけどやりたくないんじゃないかな。

まあ>>45のこの一文は間違いって分かったけど。
> ちなみにUWSCの関数ではIDでしか制御できないけどIDが取得できないので制御できないね。


52 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/12/17(木) 23:29:02 ID:uV4iSpsO0]
ググっててスクリプトの多重起動禁止で
既に起動している場合自身を終了ってのがあったんだけど

if getid(status(getid(GET_THISUWSC_WIN), st_title),status(getid(get_thisuwsc_win),st_class) > 0 then ExitExit

コピペして起動するとSyntaxErrorって出る
どこが間違ってるの?

53 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/12/17(木) 23:36:50 ID:uV4iSpsO0]
あ、自己解決したかも
)
が一つ足りないんだよね?

54 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/12/18(金) 03:18:11 ID:PR8RGQ0b0]
うん

55 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/12/18(金) 15:21:16 ID:nijyYsTD0]
basicの
go to 文のように

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

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

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



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

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

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

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

60 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/12/18(金) 16:29:12 ID: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 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/12/18(金) 17:45:48 ID:SLXkS1nI0]
ifbよりbreakの方がgotoっぽいからbreak使ってる

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

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


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

RE:goto umiumi


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


64 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/12/18(金) 21:30:11 ID:WhncmQLP0]
あったほうが便利なのにね

65 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/12/18(金) 22:35:34 ID:Rqu21NSB0]

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



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

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

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



67 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/12/19(土) 00:05:02 ID:ATzk7yJS0]
CLKITEM使えよw

68 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/12/19(土) 00:05:38 ID:67QaJwyf0]
こりゃまた大胆なマルチポストだな…。

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

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


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

72 名前:名無しさん@お腹いっぱい。 [2009/12/20(日) 11:24:50 ID:67+0bBGV0]
Operaで動かしたいよー

73 名前:メモ mailto:sage [2009/12/20(日) 14:12:47 ID: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 mailto:sage [2009/12/20(日) 18:36:46 ID:NXkHkjdJ0]
このスレは今後オレのメモとして使うからお前ら書き込むなよ。

75 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/12/20(日) 18:54:23 ID:sezMof5L0]
了解

76 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/12/20(日) 19:15:57 ID:wo2Kl350P]
メモは非表示にしたいので名前は「うんこメモ」でよろしく



77 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/12/20(日) 20:15:15 ID: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 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/12/21(月) 12:37:44 ID:9pLp31HK0]
>> ID:sezMof5L0
>>74のスレにそんなに顔真っ赤になったのか?
一生懸命メモ貼らなくていいよ。

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


81 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/12/21(月) 16:01:58 ID:GyHfCZ1l0]
独り言お疲れ様です

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

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

84 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/12/22(火) 11:16:08 ID:Y5j4vTTi0]
>>82は釣りだろ。

85 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/12/25(金) 22:12:23 ID: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 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/12/25(金) 22:22:33 ID:PGzvFXxt0]
<#CR>で繋げないんだろう。
|使うかバッチファイル作るかすればいいんじゃないかな?



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

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

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

89 名前:85 mailto:sage [2009/12/26(土) 09:25:34 ID:MKs2n1Uw0]
動かなかった原因がわかった
UWSCスクリプトでやるときは%が一つ余分になるんだ

>>88
okwave.jp/qa4178416.html
俺はここから丸写ししただけ

90 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/12/27(日) 19:25:42 ID: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 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/12/27(日) 19:42:39 ID: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 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/12/27(日) 23:50:29 ID:KdIVRt980]
ieをアクティブにした状態で以下を実行してみたのですがcom_error例外が発生しました
となってしまします
というか2行目以降でieを使うとエラーになります
解説サイトなど探してもあっさり進んでしまうのですが…何か足りませんか?
よろしくお願いします

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

93 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/12/28(月) 00:21:27 ID: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 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/12/28(月) 01:24:44 ID:8NfAzOMC0]
win7では使用できますか?

95 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/12/30(水) 11:24:56 ID:3SgEgPry0]
>>94
多分使えますよ。
でもいろいろ気をつけることはあるようです。
ttp://www.uwsc.info/faq.html


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

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

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

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

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




97 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/12/30(水) 11:57:01 ID: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 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/12/31(木) 18:28:22 ID: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 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/12/31(木) 19:15:53 ID:8NQ2XvCh0]
STEP 0.2だと2が表示されるな。
挙動がようわからん…
何か0.124と0.125の間あたりで切り替わるようだが…
とりあえず
FOR i = 10 TO 20
//   多用するならj = i / 10とかして使う
    FUKIDASI( i/10)
    SLEEP( 1)
NEXT
とかするのが無難そうね。

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

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

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

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

101 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/01(金) 00:05:54 ID:zRjPwPJp0]
>>100
お前、頭いいな。
どこ大学出よ?

102 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/01(金) 01:08:17 ID:SeLmUNNh0]
この場合は誤差はないと思いますけど。

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

10進数の0.1は、2進数で・・・
ttp://www.infonet.co.jp/ueyama/ip/semi_cnd/abacus.html
> ところで、10進数の 0.1 は、2進数では正確に表すことができず、 その近似値は 0.00011001100110011001100 … になります。

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


103 名前: 【末吉】   【1885円】 mailto:sage [2010/01/01(金) 01:51:39 ID:SeLmUNNh0]
!omikuji !dama

104 名前: 【ぴょん吉】 【605円】 mailto:sage [2010/01/01(金) 01:56:44 ID:JMt2GOx60]
てすと

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


106 名前:98 mailto:sage [2010/01/01(金) 11:48:35 ID: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 mailto:sage [2010/01/01(金) 16:45:33 ID:wjuaj82V0]
小数の問題っていろんなところに出るんだなぁ。
ROUND関数って小数点以下を四捨五入する関数なんだと思うけど
入れる数字によってはおかしくなる。

FUKIDASI( ROUND( 12.5))
SLEEP( 1)

108 名前: 【大吉】   【313円】 mailto:sage [2010/01/01(金) 18:36:08 ID:h6GpVGPr0]
FUKIDASI( hoge(12.5))
SLEEP(1)

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

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

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

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

110 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/03(日) 10:53:27 ID: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 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/05(火) 14:59:27 ID:WsNY715b0]
softalk使って日本語しゃべらせたいんだけど、素人過ぎてショートカット乱立させてクリックさせるのが限界です・・・。

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


112 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/05(火) 16:22:04 ID:deSK2IBq0]
>>111
doscmd or exec と softalk の引数指定

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

114 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/05(火) 23:22:45 ID:WsNY715b0]
>>112-113
ありがとよ。かなりスマートになった。


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

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

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

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




117 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/06(水) 03:57:32 ID:j0L+SVeO0]
あ、evalあるのね
これでできそうです
お騒がせしました

118 名前: ◆fdAnbU5Z6U mailto:sage [2010/01/06(水) 07:29:33 ID:EasGK5JXP]
少しだけ相手してやんよww
若いだろ?至りってやつだな


119 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/06(水) 10:00:09 ID:jv+N909k0]
>>118
じゃあこれデバッグしてください。
ttp://karimofu.org/dlp/mofu1_7789.zip.php
ダウンロードパス:saymove

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


121 名前: ◆fdAnbU5Z6U mailto:sage [2010/01/06(水) 11:44:36 ID:EasGK5JXP]
キモイホモだなぁ!おまえブサメンでキモブサだろ?少しだけ相手してやんよww
若いだろ?至りってやつだな

122 名前:98 mailto:sage [2010/01/08(金) 14:59:40 ID:VCRefa1D0]
>>109
その通りですね・・・偶数丸めというのを知らなかったので。
お騒がせしてすみませんでした。

123 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/15(金) 20:16:22 ID: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 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/15(金) 22:54:28 ID: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 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/15(金) 22:55:55 ID: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 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/16(土) 13:15:51 ID: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 名前:名無しさん@お腹いっぱい。 [2010/01/16(土) 16:16:24 ID:hORuBIiX0]
>>126
ttp://www3.bigcosmic.com/board/s/board.cgi?id=umiumi&mode=all&no=2800
IE = CREATEOLEOBJ("InternetExplorer.Application") ←これはループの外
IE.visible = True
> while true
>  受信処理(>>126のスクリプトのうち最初の2行を除く部分)
>  if 0 = Pos("サーバーが混み合っています", str) then break
>  // 受信エラー
>  sleep(60)
> wend
> // 正常に受信


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

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

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

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


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

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

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

133 名前:123 mailto:sage [2010/01/17(日) 06:07:26 ID:rLsFwGWi0]
>>124

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


134 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/17(日) 10:06:50 ID:mb/jokyZ0]
>>131
print "" + intA + intB
もしくは
print intA + "" + intB

print intA + intB + "" はNG

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

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

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



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

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

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

www3.bigcosmic.com/board/s/board.cgi?id=umiumi&mode=all&no=617

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

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

宜しくお願いします。

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


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


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


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

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

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

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

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


ie.navigate("https://lib.city.shinagawa.tokyo.jp/cgi-bin/Sopcsryc.sh?p_mode=1&proc=kyj")


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

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


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

144 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/20(水) 23:32:14 ID: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 [2010/01/21(木) 00:41:19 ID:BYisD/DI0]
>>143 様、
>>144 様、

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

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

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


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



147 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/21(木) 09:17:09 ID: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 //ログインボタンを押す

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

こいつを使って調べた↓
nem.symphonic-net.com/uwsct/HTMLStarkNaked.uws.txt

148 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/21(木) 10:50:10 ID:qBCWT2U/0]
>>147
141じゃないけど親切な人や






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<257KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef