twitterにUWSCでログインする

最近では、アフィリエイトにもtwitterを活用することが多くなったようです。
そこで、UWSCでもtwitterを活用できるログインスクリプトを作成しました。

簡単かと思いきや

PRO版のrec機能では、別ページへリダイレクトされてしまいうまくいきません。
ということで、ソースを確認します。

inputフォームのnameは、
session[username_or_email]
session[password]です。
しかし、これをそのままIESetDataに設定してもログインフォームにセットされません。

そこでさらにソースをよく見ると、
該当するフォームは2番目だということが分かります。

次にsubmitボタン。 ソースを確認すると、

<button type="submit" class="submit btn primary-btn flex-table-btn js-submit" tabindex=4>

IESETDATAで使えるIDがありません。
TAG=buttonで試してもなかなかうまく行きません。

ということで、そんな時は泥臭くオブジェクトからフォームを操作します。
IE.document.forms[0].submit() から当たっていくと、
IE.document.forms[3].submit()で動作が確認できます。

これらを踏まえると、以下のようなスクリプトになります。

IE = CreateOLEObj("InternetExplorer.Application")
IE.Visible = True
IE.Navigate("https://twitter.com/")
BusyWait(IE)
 
BusyWait(IE)
IESetData(IE,"ID","session[username_or_email]",,2) // 要編集
IESetData(IE,"パスワード","session[password]",,2) // 要編集
IE.document.forms[3].submit()

BusyWait(IE)
// IE.Quit // IE終了
//------
Procedure BusyWait(ie)
  Sleep(0.5)  // Wait
  Const TIME_OUT = 90
  tm = Gettime()
  repeat
    Sleep(0.2)
    ifb Gettime() - tm > TIME_OUT
      MsgBox("Time Out:BusyWait")
      ExitExit
    endif
  until (! ie.busy) and (ie.readyState=4)
  Sleep(0.5)
Fend

出来てしまえば、簡単ですがHTMLソースから解析していくのは、
なかなか骨の折れる作業です。
http://canal22.org/advance/
などをチェックして上手にスクリプトを作成していきましょう。

タグ

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

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

XLSHEET

シートの追加/削除
戻値 = XLSHEET( Excel, Sheet名, [削除フラグ] )
引数
Excel
Excel(またはOOoのCalc)のCOMオブジェクト
Sheet名
追加/削除するシート名
削除フラグ
FALSE: シート追加 (デフォルト)
TRUE: シート削除

※OOoのCalcとは・・・Open Office.org 統合オフィスソフトの表計算ソフトCalcを指しています

戻値
TRUE
正常
FALSE
処理不能

EXCELのシートの追加や削除

この関数はPro版のみ使用可能です。
XLOPENでCOMを生成して、シートを指定して制御が可能になります。

下記のように立ち上げたEXCELファイルにシートを3つ追加、削除してみます。

EXCELシートの追加

EXCELシートを追加した状態

DIM SHEET[2] = "UWSC","KOBA","YASHI"


Excel = XLOPEN(,True) //ファイルオープン

MSGBOX("シートの追加します")

FOR KAISU = 0 TO 2
	SHEETNAME = SHEET[KAISU]
	PRINT SHEETNAME + "追加"
	XLSHEET(Excel,SHEETNAME,FALSE)
	MSGBOX(" OK ")
NEXT

MSGBOX("追加したシートを削除をします")

FOR KAISU = 0 TO 2
	SHEETNAME = SHEET[KAISU]
	PRINT SHEETNAME + "削除"
	XLSHEET(Excel,SHEETNAME,TRUE)
	MSGBOX(" OK ")
NEXT

タグ

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

カテゴリー:関数一覧

DICTATE

DICTATE

音声の取得
戻値 = DICTATE(拾得待ちフラグ)

・引数
  拾得待ちフラグ:
    TRUE: 入力があるまで待つ(デフォルト)
    FALSE: 待たず直近の入力を返す
・戻値
  拾得音声文字

タグ

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

カテゴリー:関数一覧

RECOSTATE

RECOSTATE

音声認識の開始/停止
RECOSTATE(開始フラグ, [単語登録, 単語登録, ...] )

・開始フラグ:
   TRUE・・・音声認識開始
   FALSE・・・音声認識停止
・単語登録・・・認識させたい単語を第2引数以降に記述(配列変数で与える事も可)

タグ

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

カテゴリー:関数一覧

SPEAK

SPEAK

音声合成
SPEAK( 発声文字, [平行処理フラグ, 中断フラグ] )

・発声文字・・・発音させたい文字列
・平行処理フラグ
   FALSE・・・発声終了まで待つ(デフォルト)
   TRUE・・・終了を待たずに平行処理
・中断フラグ
   FALSE・・・発声中の音があれば終了まで待つ(デフォルト)
   TRUE・・・発声中の音がある時はその音は中断する

SPEAK("I was from France")

タグ

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

カテゴリー:関数一覧

DEF_DLL

DEF_DLL

DLL(API等)の関数を使用

DEF_DLL 関数名(型, 型, …): 戻り型: DLL名
int
long
bool
uint
hwnd
string
Wstring
float
double
word
dword
byte
char
pchar
Wchar
pWchar
boolean
longlong
Extended
SafeArray

・64bitのDLLは呼び出し不可
・参照引数(値変更あり)の場合はVar 宣言が必要
※関数名( var double, var int )
  ・構造体:型を { } に展開して記述
※関数名( double, {int, int, int} )
・配列の場合は型に [] を付記
※関数名( double[], int[] )
(※)int=long= bool(4byte)
(※)dword=uint=hwnd
(※)char=boolean(1byte)
(※)ヌルポインタを渡す時は NULL定数を使用

タグ

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

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

TRY-ENDTRY

TRY-FINALLY-ENDTRY

例外処理をする
TRY
  処理1
[EXCEPT]
  処理2
[FINALLY]
  処理3
ENDTRY

・TRY・・・処理1には例外が発生する可能性のある処理を記述
・EXCEPT・・・処理2には例外が発生した場合の処理を記述(FINALLYとの同時記述は不可)
・FINALLY・・・処理3は例外が発生する、しないにかかわらず必ず実行される処理を記述(EXCEPTとの同時記述は不可)
・ENDTRY・・・例外処理の終了

例外とはエラーのこと

例えば、値を初期化していない変数を出力しようとした場合、
UWSCではエラーとなってしまいます。
他にも、ある数値を0で割ろうとした場合(ゼロ除算)、
同様にエラーが発生します。
このようにプログラム中は予期しないエラーが発生するケースが
多々あります。
TRY-ENDTRYはそのような可能性のある箇所に記述することで
例外発生時の処理を記述することができ、
プログラムを異常終了することなく
継続させることができます。

VAL = INPUT("1以上の数値を入れてください※と指示しても0やら文字列やらを入力する人はいる","あああああああ")
//エラーが発生する可能性があるので例外処理を記述
TRY
  PRINT 100 / VAL
EXCEPT
 //例外が発生した場合
 MSGBOX("正しい値が入力されていないようです")
ENDTRY

例外発生時の情報も取得可能

TRY_ERRMSGにはエラーの情報が
TRY_ERRLINEにはエラー発生した行数が格納されています。
下記のようにして出力してみましょう。

この投稿の続きを読む »

タグ

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

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

TEXTBLOCK-ENDTEXTBLOCK

TEXTBLOCK-ENDTEXTBLOCK

TEXTBLOCK 変数名
・・・・・・・・
・・・・・・・・
ENDTEXTBLOCK

・複数行にわたる文字列を変数に格納します

特殊文字を入れなくても改行を反映

TEXTBLOCK-ENDTEXTBLOCKを使うことにより
特殊文字の改行を記述しなくても、
改行を変数に挿入できます。

PRINT HELLOTEXT
TEXTBLOCK HELLOTEXT
こ
ん
に
ち
は
ENDTEXTBLOCK

OPTION SPECIALCHAR

ちなみにOPTION指定を指定するとTEXTBLOCKの特殊文字は変換されなくなります。
下記のようになります。

この投稿の続きを読む »

タグ

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

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

WITH-ENDWITH

WITH-ENDWITH

モジュール、クラス、COMオブジェクトの表記などのドット構文にて指定部分を省略して表記できる
WITH ドット構文共通部
.変数 = < 値>
.関数()
ENDWITH

・ドット構文共通部・・・ドットで区切られた部分の省略したい箇所
・変数・・・ドットを付けて変数を記述することで呼び出し可能
・関数・・・ドットを付けて関数を記述することで呼び出し可能

何度も同じ表記をするのは面倒くさい時に

上級者編で述べているCOMオブジェクトなどはドットで区切られた構文を多様します。
理解が進むと、段々感じてくると思いますが、
記述内容の繰り返しが多く出てきます。
まとめて同じドット以下に処理をしたい場合はWITH-ENDWITHを使いましょう。
以下、簡単な使い方です。

IE = CREATEOLEOBJ("InternetExplorer.Application")
IE.visible = True
IE.navigate("http://www.yahoo.co.jp")
REPEAT
 SLEEP(0.1)
UNTIL !IE.busy AND IE.readyState = 4

WITH IE.document
  .TITLE = "やっほー"
ENDWITH

必要に応じて使おう

上の例ですと、ブラウザがアクセスしたページのタイトルだけ変えています。
こういう場合は大した威力は発揮できませんが、
数が多い場合には是非とも活用して下さい。
次に、MODULE-ENDMODULE、CLASS-ENDCLASSで説明した
サンプルスクリプトを WITH-ENDWITHで呼び出してみましょう。
以下のようになります。

この投稿の続きを読む »

タグ

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

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

XLACTIVATE

Excel シートの選択
戻値 = XLACTIVATE( Excel, Sheet名, [Book名] )
引数
Excel
ExcelのCOMオブジェクト
Sheet名
アクティブにするシート名(順番での指定も可)
Book名
アクティブにするブック名
戻値
TRUE
正常
FALSE
処理不能

EXCELのシートを変更する

この関数はPro版のみ使用可能です。
XLOPENでCOMを生成して、シートを指定して制御が可能になります。

UWSC XLACTIVATE EXCELサンプルファイル

EXCELサンプルファイル

EXCELファイルはこのようなイメージです。
拡大して確認してみてください。
以下のサクリプトで、シートが順次変更していきます。

スクリプト

PATH	= "C:\\TEST.xls"
Excel	= XLOPEN(PATH)
Excel.application.displayalerts = false

MSGBOX("シート名を確認してください<#CR>シートを変更します")

SHEETNAME = "animal"
SS = XLACTIVATE( Excel,SHEETNAME)

IFB SS = 1
	PRINT SHEETNAME
ENDIF

MSGBOX("シート名を確認してください<#CR>シートを変更します")

SHEETNAME = "Sheet1"
SS = XLACTIVATE( Excel,SHEETNAME)

IFB SS = 1
	PRINT SHEETNAME
ENDIF

MSGBOX("シート名を確認してください<#CR>シートを変更します")

SHEETNAME = "Sheet2"
SS = XLACTIVATE( Excel,SHEETNAME)

IFB SS = 1
	PRINT SHEETNAME
ENDIF

MSGBOX("終了します")

タグ

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

カテゴリー:関数一覧

このページの先頭へ