GETFORMDATA

フォームより値取得
戻値 = GETFORMDATA( Name, [Value])
引数
Name
オブジェクトのName
Value
Nameが共通の場合に Valueを指定する
selectタグにて表示文字ではなく Value値を取得したい場合には FOM_GETVALUE を指定する
戻値
取得の値
(押されたSubmit属性のボタンが指定された場合は一度だけ TRUE(1)を返す)

フォームを使って入力支援をする

sample11のようなWEBフォーム画面へ、
UWSCのフォーム画面(図1)を利用して入力していくスクリプトを作成します。

図1:生成する入力フォーム
UWSC 入力フォーム

考え方は、

UWSCフォーム生成

UWSCフォーム画面から値を取得

ページ指定して、その値を入力する

となります。

スクリプト

// OKBtn ボタンが押されたら各入力値を取得する
ifb CREATEFORM("GETFORMDATA_SCRIPT.html", "GETFORMDATA_SCRIPT", False,, 300, 300, 600, 400) = "OKBtn"
	FRUITS	= GETFORMDATA("Text1")
	ANIMAL	= GETFORMDATA("Radio1")
	SPORTS	= GETFORMDATA("Radio2")
	AGE		= GETFORMDATA("Select1")
else
	print "キャンセル"
endif

IE = CreateOLEObj("InternetExplorer.Application")
IE.Visible = True
IE.Navigate("http://canal22.org/sample11/")
BusyWait(IE)
IESetData(IE,FRUITS,"fruits")
IESetData(IE,ANIMAL,"animal")
IESetData(IE,SPORTS,"sports")
IESetData(IE,AGE,"age")

print "入力が完了しました"

//------
Procedure BusyWait(ie)
 repeat
	Sleep(0.2)
 until (! ie.busy) and (ie.readyState=4)
Fend

解説

実際に動かした結果は、
下のように(図2)値が入力されるかと思います。

図2:入力結果
GETFORMDATA 入力結果

入力支援に特化するなら、
テキスト入力欄は不要ですが、サンプルになると思い使用しました。

このように入力する項目が限定されている場合などは、
非常に重宝するかと思います。

また、今回は取得データを変数へ格納して、
入力データとして利用しましたが、
取得データをテキストに残すこともスクリプト次第で可能なので、
色々試すとUWSCで出来ることが増えるかと思います。

タグ

2012年8月25日 | コメントは受け付けていません。 |

カテゴリー:関数一覧

組込み定数

組み込み定数

予め定数として組み込まれている定数
宣言は不要

TRUE・・・True、1も同義
FALSE・・・False、0も同義
NULL・・・ヌルポインタ
EMPTY・・・値の無い状態を示す
NOTHING・・・オブジェクトの無い状態を示す

定数のため変更はできず、かつ宣言済

上記の定数は
既に宣言されているため、再宣言や変更はできません。
スクリプトを書く際にも、上記の定数は表記するだけで、
決まった値を取得できます。

PRINT TRUE //True、1も同義
PRINT FALSE //False、0も同義
PRINT NULL //ヌルポインタ
PRINT EMPTY //値の無い状態を示す
PRINT NOTHING //オブジェクトの無い状態を示す

NULL、EMPTY、NOTHINGの違いは?

TRUE/FALSEは出力される値が違うので
一目瞭然ですが、それ以外のNULL、EMPTY、NOTHINGは
パッと見、違いが良く分かりません。
一行で説明すると・・・
・NULL・・・ヌルポインタ
・EMPTY・・・値が無い状態
・NOTHING・・・オブジェクトが無い状態
となります。
それでは、次の質問に正確に回答できるでしょうか。
もし出来たらかなりUWSCに精通していることになります。
・NULL、EMPTY、NOTHINGは”"や0と等価でしょうか( = で比較するとTrueになるか)
・NULLとEMPTYとNOTHINGはそれぞれ等価でしょうか( = で比較するとTrueになるか)
・NULLとEMPTYとNOTHINGをそれぞれ単体で出力するとどのようになるでしょうか
・NULLとEMPTYとNOTHINGを加算に使うとどうなるでしょうか
・NULLとEMPTYとNOTHINGの文字列の長さ(LENGTH関数の返り値)はいくつでしょうか
以下のスクリプトで検証してみましょう。

この投稿の続きを読む »

タグ

2012年8月24日 | コメントは受け付けていません。 |

カテゴリー:構文・制御文

行結合

行結合

_(アンダーバー)

・_(アンダーバー)を行末につけることで次行を結合して処理を行います

基本は1処理1行だけど・・・

UWSCは基本1処理1行です。
例えばA = 1 + 1を表現する際に
A
=
1
+
1
と書いてもエラーになります。
表現したい場合は_(アンダーバー)で、行結合をします。

A _
= _
1 _
+ _
1
PRINT A

行結合の用途は?

例えばIFの条件式が長くなり、見た目がよくないと感じたとします。
そういう場合はただ改行しても、思うように動作しないので
行結合を試みます。
下記のようになります。

この投稿の続きを読む »

タグ

2012年8月21日 | コメントは受け付けていません。 |

カテゴリー:構文・制御文

コメント

コメント

行末までをコメントとします
// コメント

・//以降は行末までをコメントとする

コメント以降は処理されなくなります

スクリプトにメモを残したい、処理はしたくないけど、
記述は消したくない。
そういう箇所はコメントとしましょう

//コメントなので実行されない
PRINT "Hello"
//PRINT "コメントなので実行されない"
A = 14 // + 20  としてもコメント以降は実行されない
PRINT A

スクリプトをメンテナンスするには必須

簡易なスクリプトならコメントは不要かもしれませんが、
複数の人間でメンテナンスする場合は、
スクリプトにコメントを付記したほうがよいでしょう。

また、コメントの書き方もある程度は統一するのがベターです。
変数にはその説明、処理にはその概要、ヘッダには製作者やバージョン、
スクリプトの概要や日付などを入れると、
それらしくなりますね。下記のようになります。

この投稿の続きを読む »

タグ

2012年8月19日 | コメントは受け付けていません。 |

カテゴリー:構文・制御文

CREATEFORM

フォーム画面生成

戻値 = CREATEFORM( HTMLファイル, タイトル, [平行処理フラグ, オプション指定, 幅, 高さ, X, Y] )

引数

HTMLファイル: フォームとして表示するHTMLファイルパス

タイトル: 表示するタイトル

平行処理フラグ

  • FALSE
    Submit属性のボタンが押されるまで処理を返さない (デフォルト)
  • TRUE
    待たない

オプション指定: (複数指定可)

  • FOM_NOICON
    クローズボタンを出さない
  • FOM_MINIMIZE
    最小化ボタンを表示する
  • FOM_MAXIMIZE
    最大化ボタンを表示する
  • FOM_NOHIDE
    Submit属性のボタンが押されても画面を消さない
  • FOM_NOSUBMIT
    Submit属性のボタンが押されても Submitに割り当てられた処理をしない
  • FOM_NORESIZE
    ウィンドウのサイズ変更不可
  • FOM_NOLUNA
    表示をルナ(XP)風にはしない
  • FOM_BROWSER
    ターゲット名解決のため、コントロールを最上位レベルのブラウザとする
  • FOM_NOFLOATEXCEPT
    浮動小数点例外を無効にする

幅, 高さ
サイズ

X, Y
位置
戻値

平行処理フラグ=FALSE: 押されたボタンの Name
平行処理フラグ=TRUE:  フォームの COMオブジェクト

オプションやサイズ、位置を試してみる

HELPにある
CREATEFORM(“TEST.html”, “タイトル”, False, 0, 500, 320)
のサイズ・位置の関係がイマイチ分からないので、
色々なパターンを試して、結果を見せたいと思います。

// OKBtn ボタンが押されたら各入力値を表示する
PATH	= "C:\TESTHTML.html"
TITLE	= "タイトル"
KB	= "構文:"

MSGBOX("フォームのOKボタンを押して進んでください")
//①HELPにあるもののPATHとタイトルを変数化
obj = CREATEFORM(PATH,TITLE,FALSE,0, 500, 320)

//②オプションを指定して、幅、高さ、X、Yを指定
obj = CREATEFORM(PATH,TITLE,FALSE,FOM_MAXIMIZE,0,0, 500, 320)

//③二番目の幅を600に
obj = CREATEFORM(PATH,TITLE,FALSE,FOM_MAXIMIZE,600,0, 500, 320)

//④二番目の高さを600に
obj = CREATEFORM(PATH,TITLE,FALSE,FOM_MAXIMIZE,0,600, 500, 320)

//⑤二番目の幅200、高さ600
obj = CREATEFORM(PATH,TITLE,FALSE,FOM_MAXIMIZE,200,600, 500, 320)

//⑥五番目のXを0、Yを0
obj = CREATEFORM(PATH,TITLE,FALSE,FOM_MAXIMIZE,200,600, 0, 0)

//⑦五番目のXを600、Yを600
obj = CREATEFORM(PATH,TITLE,FALSE,FOM_MAXIMIZE,200,600, 600, 600)

//⑧三番目のオプションを複数指定(最大化ボタンと最小化ボタン)
obj = CREATEFORM(PATH,TITLE,FALSE,FOM_MAXIMIZE OR FOM_MINIMIZE,600,0, 500, 320)
複数のオプションの指定は、OR か + で指定できます。
また、これらの結果からサイズに関しては、0の場合デフォルト値が適用されるようです。

タグ

2012年8月17日 | コメントは受け付けていません。 |

カテゴリー:関数一覧

演算子の優先順位

演算子の優先順位

優先順位高

( )         ! *、 /、 MOD +、 - >、 < 、 =、 >=、 < =、 <> AND OR、 XOR

優先順位低

優先順位が高いほうが先に計算される

上の並びを参照すると、
+よりも*のほうが優先度が高く設定されています。
つまり、1 + 10 * 5とあった場合は、
答えは1 + 10 = 11、 11 × 5 =55とはならずに、
10 × 5 = 50、50 + 1 = 51となります。

各説明と共にサンプルを見てみましょう

//ORはどちらかがTRUEならばTRUEを返す、ANDは両方TRUEならばTRUEを返す
//ANDが先に計算されるのでFALSE(=0)が返る
PRINT FALSE AND TRUE OR FALSE

//XORは片方がTRUE、片方がFALSEの時にTRUEを返す、両方TRUEや両方FALSEはFALSEを返す
//ANDが先に計算されるのでTRUE(=1)が返る
PRINT FALSE XOR TRUE AND TRUE

//>、<は大なり小なり、=は等価、>=、<=は以上、以下、<>は不等価
//>が最初に計算されるのでFALSEが返る
PRINT 0.1 > 1 = TRUE

//+は加算、-は減算、*は乗算、/は割り算、MODは剰余算
//*が+や-より優先されるため答えは51
PRINT 1 + 10 * 5

//!は否定、TRUEはFALSEに、FALSEはTRUEになる
//()は最優先
//よって下記はFalseとなる
PRINT !(4 MOD 3 = 1)

分かりにくくなるので()を使用しよう

プログラミングを書いているときに上記の優先順位を気にするよりは
()を使用して、明示的に優先度を表現するほうが推奨されます。
優先順位は誰もが暗記しているわけではないですし、括弧がないと
どこから計算されるかパッと見、分からず、
混乱してしまいます。

PRINT 10 MOD 2 * 3 + 90 / 3 > 89 < = 9 > 6
上記のようにあると、一瞬たじろいでしまいます。
バグがあっても何がどうなればよいのか、
確かめようもありません。

キチンと括弧を付けることで少なくともどういう順番で
計算されるのか想定可能ですし、
設計書があればその仕様通り動作するかも
検証できます。
括弧を付けたスクリプトを見てみましょう。

この投稿の続きを読む »

タグ

2012年8月17日 | コメントは受け付けていません。 |

カテゴリー:構文・制御文

COMオブジェクト操作関連

COMオブジェクト操作関連関数

COMについては上級者編で解説されております。
関数を使用した具体的なCOMオブジェクトの活用例は上級者編をご参照下さい。

CREATEOLEOBJ

COMオブジェクト生成
戻値 = CREATEOLEOBJ( COMオブジェクト名 )
引数
 COMオブジェクトを指定
戻値
 COMオブジェクト
なお、COMからメソッド使用時に引数に値取得がある場合
引数の変数の前にVarを付記


GETACTIVEOLEOBJ

既に起動中のCOMオブジェクトを取得
戻値 = GETACTIVEOLEOBJ(COMオブジェクト名,[タイトル, 順番])
引数
 COMオブジェクトを指定
 タイトル: 複数時にタイトルで区別(部分一致可)
 なお、Excel、Access、Wordの場合はファイル名を指定
 IE、Office以外では無効
 順番: IEのみ有効、タイトルが同じ時に区別
戻値
 COMオブジェクト


GETOLEITEM

コレクションの取得
戻値 = GETOLEITEM( コレクションプロパティ名)
引数
 コレクションプロパティ名:COMオブジェクトのコレクション取得プロパティ名を指定
戻値
 取得したコレクションの数
 取得したコレクションは配列変数の
 ALL_OLE_ITEM[ ]に配列ゼロから格納


OLEEVENT

イベント処理の定義
OLEEVENT( COMオブジェクト, インタフェース名, イベント名, Procedure名)
引数
 COMオブジェクトを指定
 インタフェース名: ディスパッチインタフェース名
 イベント名
 Procedure名:UWSC側Procedure
 Procedure内にてイベントの引数は配列変数EVENT_PRM[ ]に配列ゼロから格納


COM_ERR_IGN-COM_ERR_RET

COMエラーメッセージの抑止
COM_ERR_IGN
 ・・・COM処理・・・
COM_ERR_RET
COM処理中のエラーはCOM_ERR_FLG にTRUEが設定


SAFEARRAY

SAFEARRAY型の作成
戻値 = SAFEARRAY( [下限, 上限])
引数
 下限: 配列の下限を設定
 上限: 配列の上限を設定
戻値
 作成されたSAFEARRAY型を返す


タグ

2012年8月16日 | コメントは受け付けていません。 |

カテゴリー:関数一覧

文字列

文字列

文字列はダブルクォテーション(“)で括ります
“文字列”

・ダブルクォテーションで囲まれた”文字列”が文字列です

文字列の結合は+で行います

改めて文字列の紹介をすると、
まずはダブルクォテーション(“)で括りましょうという事が第一です。
次に、OPTION指定で変更しない限り
比較する場合は、大文字小文字の区別はしません。(ABC=abc)
文字列をつなげる場合は+を使います。
まとめて以下のスクリプトで確かめてみましょう。

//文字列の結合
MOJ1 = "ぐろーばるわーるど"
MOJ2 = " is a word very difficult."
PRINT MOJ1 + MOJ2
//文字列の比較(OPTION指定無し)

MOJ3 = "THIS IS MY CUP"
MOJ4 = "this is my cup"
IFB MOJ3 = MOJ4
 PRINT "↓↓同じ文字です↓↓"
 PRINT MOJ3 + ":" + MOJ4
ENDIF

結合の際は順番を考えよう

例えば下記のようなスクリプトはどういう結果になるでしょうか?
PRINT “14 + 6 = ” + 14 + 6
14 + 6 = 20とはならずに
14 + 6 = 146となってしまいます。
計算の優先順位に差が無い場合
コンピューターは左から計算をします。

なのでまず”14 + 6 = “という文字列に14という文字列が結合され、
続いて”14 + 6 = 14″という文字列に6が結合されてしまうのです。
詳細は演算式の優先順位でご確認できますが、 解決策としては以下のように、明示的に”(“と”)”で計算の優先度を上げることになります。

この投稿の続きを読む »

タグ

2012年8月15日 | コメントは受け付けていません。 |

カテゴリー:構文・制御文

アカウントを自動生成する

アフィリエイトを行おうとするとき、
複数のアカウントを作成しないといけない場合が多々あります。

そんな時、自動でアカウントが作成できたら楽だなぁ~
なんて思うことありませんか?

ということで、自動でアカウントを作成できるスクリプトを解説します。
※もちろん、相手が望んでいないのに、同一サイトでスパム的にアカウントを作成するといった利用は行わないでください。

どんなスクリプトにする?

今回は、
ランダムな8ケタの英数字を1行2つ設定で、 指定回数分ログ表示用ウィンドウに書き出すスクリプトにしましょう。

必要なモノ

この辺を組合わせて作成します。

スクリプト

NUM = INPUT("何個作成しますか?")

FOR A = 1 TO NUM

	ID = ""
	PW = ""
	
    //文字数は8文字
    FOR B = 1 TO 8
       ID = ID + RETURNCHAR()
       PW = PW + RETURNCHAR()
    NEXT

    IDPW = ID + "<#TAB>" + PW
	PRINT IDPW
NEXT

FUNCTION RETURNCHAR()
    LETTER = CHR(97 + RANDOM(26))
    //アルファベットの小文字、数字を出す
    SELECT RANDOM(2)
       CASE 0
           //アルファベットはそのまま
           RESULT = LETTER
       CASE 1
           //数字の場合は0~9をランダムに出す
           RESULT = RANDOM(10)
       DEFAULT
           RESULT = LETTER
    SELEND
FEND

実行すると、ランダムな8ケタの英数字が一瞬で作成できます。

※EXCELにペタっと貼り付けられるように、
IDとPWの間はTABで区切ってます。

タグ

2012年8月14日 | コメントは受け付けていません。 |

カテゴリー:アフィリエイター

PUBLIC

PUBLIC

グローバル変数を宣言します
PUBLIC 変数 = 値

・値・・・グローバル変数として設定する値

どこからでも呼び出せるグローバル変数

例えばFUNCTIONやPROCEDUREなどの自作関数の中にある変数は、
自作関数の中で範囲が閉じられています。
同じ変数名を自作関数の外と、自作関数の中で使っても、
両者は互いに影響を及ぼしません。
しかし、グローバル変数にすると、お互い同じ変数を参照することになり
値が変化します。
具体例として以下のスクリプトを見てみましょう。

//グローバル変数
PUBLIC YGLB ="YES"
//ただの変数
DIM NGLB = "NO"

 PRINT "関数実行前:" + YGLB + ":" + NGLB
 PRINT "(↑宣言時の値)"
 DO()
 PRINT "関数実行後:" + YGLB + ":" + NGLB 
 PRINT "(↑変化が影響しているのはPUBLIC宣言の変数)"

//自作関数
PROCEDURE DO()
 YGLB = "はい"
 NGLB = "いいえ"
 PRINT "自作関数の中:" + YGLB + ":" + NGLB 
 PRINT "(↑関数内の値)"
FEND

DIMのような多次元配列も使えるか

結論から言うと、使えます。
スクリプトは以下のようになります。

この投稿の続きを読む »

タグ

2012年8月13日 | コメントは受け付けていません。 |

カテゴリー:構文・制御文

このページの先頭へ