【UWSC】の部品化はCLASS化して呼び出す

目次

UWSCで連続処理を行うジョブを実行するにはCLASS化して呼び出す

adono

この記事を読めば【UWSC】で外部モジュールから
共通部品を呼び出すことが出来るよぉ~
これで、連続したバッチ処理もUWSCで書けるようになるね ❣

一つのプログラムを作成し、共通化部品をサブプログラムにして呼び出すといった標準化の作成方法は
昔からあるが、多少その言語に慣れてからでないと、何を書いているのか?言っているのか?

自分の知識から紐解こうとするので、その知識が逆に邪魔をして手を止める原因になるといったことは
特に、珍しいことではない。

私は、現役時代から「先ずは動けばいいんでしょ!」

という考えで、自分の今ある知識でプログラムを組んで、壁に当たったら調べる。といったやり方をしてきた。

このやり方は少人数でスピードを出すには的確な方法だが、多人数でシステムを組む場合には
プログラム仕様の標準化に時間が掛かるので、私のような人間がパッケージ開発とか汎用ソフトの開発チーム
に入ると、、、デバッグ時間増大の可能性が大きく

システムトータルの納品時間が結果的に多く掛かってしまう!

という弊害もある。

【WordPress】のMysqlを自動セーブするUWSCモジュールを作成する

このブログのレンタルサーバーはロリポップであり、phpMyAdminを手動で起動しデータベースをセーブ
しなければいけない仕様なのである。

月額¥330-払えば、自動保存してくれるんだけどねぇ~
このブログで毎月レンタルサーバー費用ぐらい稼いでくれれば、さっさと払うんだけどねぇ~😏

UWSCでテストプログラム作成したら、案外楽しくプログラミング出来たので、今WordPressで作成している分
(枠だけのモノもあるけど…)4つほど連続処理してバッチ処理するモジュールを作成した次第だ。

その過程で今回、UWSCのCLASS化(部品化)をしてみたので、記載しておく。

ACW(GETID("phpMyAdmin - Google Chrome","Chrome_WidgetWin_1"),-1,-8,1922,1041,0)
ID=GETID("phpMyAdmin","chrome")
PATH="C:\XXXXXXXXXX\uwsc5302\Lolipop\img24\"
Timer=0.5
CTRLWIN(ID,max)
sleep(timer)
//TextBlockのデータを配列初期値として代入
GAZOU = SPLIT( 画像 , "<#CR>")

//ここからphpMyAdmin
		sleep(timer)
		SENDSTR(0, "ユーザ名") //クリップボードに文字を送る
		sleep(Timer*2)

		// 文字列検索し該当文字列ならばオレンジ色
		ifb keyboard_cpy() = 1 then
			ifb CHKIMG(PATH + GAZOU[0]+".bmp") then
					x=G_IMG_X +10      // 画像の座標をxへ代入
					y=G_IMG_Y +35  // 画像の座標をyへ代入
					sleep(Timer)
					BTN(LEFT, CLICK, x, y)	//目的位置をクリック
					sleep(Timer)
			else
				exit
            endif
		endif

		IF GETKEYSTATE(TGL_IME) then KBD(VK_KANJI, CLICK)
		KBD(VK_TAB,CLICK,40)
		KBD(VK_DELETE,CLICK,40)
		KBD(VK_SHIFT,DOWN,40)
		KBD(VK_TAB,CLICK,0)
		KBD(VK_SHIFT,UP,40)
		KBD(VK_DELETE,CLICK,40)
		sleep(timer)
		//ユーザー名
    SENDSTR(0, "xxx") //クリップボードに文字を送る
~省略
		//ここからパスワード
		KBD(VK_TAB,CLICK,40)
    SENDSTR(0, "yyy") //クリップボードに文字を送る
~省略

		sleep(timer)

//phpMyAdmin データベース選択-実行
    ifb CHKIMG(PATH + GAZOU[4]+".bmp") then
					x=G_IMG_X // 画像の座標をxへ代入
					y=G_IMG_Y // 画像の座標をyへ代入
					sleep(Timer)
					BTN(LEFT, CLICK, x, y)	//確認画像をクリック
					sleep(Timer)
		else
			exit
		endif
		sleep(1.5)
//phpMyAdmin エクスポート
    ifb CHKIMG(PATH + GAZOU[5]+".bmp") then
					x=G_IMG_X // 画像の座標をxへ代入
					y=G_IMG_Y // 画像の座標をyへ代入
					sleep(Timer)
					BTN(LEFT, CLICK, x, y)	//確認画像をクリック
					sleep(Timer)
		else
			exit
		endif
		sleep(1.5)
//phpMyAdmin エクスポート実行
        ifb CHKIMG(PATH + GAZOU[6]+".bmp") then
					x=G_IMG_X // 画像の座標をxへ代入
					y=G_IMG_Y // 画像の座標をyへ代入
					sleep(Timer)
					BTN(LEFT, CLICK, x, y)	//確認画像をクリック
					sleep(Timer)
		else
			exit
		endif
exit

TextBlock 画像
selore01
dbsv01
dbsv02
dbsv03
dbsv04
dbsv05
dbsv06
dbsv07
EndTextBlock

Function keyboard_cpy()
  Result = 0
		timer=0.5
    KBD(VK_CTRL,DOWN)
		KBD(VK_F,DOWN)
		sleep(Timer)
		KBD(VK_CTRL,UP)
		KBD(VK_F,UP)
		sleep(Timer)
		KBD(VK_CTRL,DOWN)
		KBD(VK_V,DOWN)
		sleep(Timer)
		KBD(VK_CTRL,UP)
		KBD(VK_V,UP)
		sleep(Timer)
	Result = 1	
Fend

※上記プログラムはこのままでは動作致しません!

このプログラム中の

  • ユーザー名
  • パスワード

を4つ分作成し、連続処理するUWSCを作成する。

メッセージボックスに”Ok”と”CANCEL”で必要分4つのモジュールを実行!

//Wordpress Mysqlを自動セーブ
msg=MSGBOX("WordPress Mysql-save", BTN_OK OR BTN_CANCEL)

IF (msg=BTN_CANCEL)  THEN exit

call sql1.uws
call sql2.uws
call sql3.uws
call sql4.uws
exit

ここで良い感じで、エラーが出る!多重定義エラーらしい!

TextBlock 画像
selore01
dbsv01
dbsv02
dbsv03
dbsv04
dbsv05
dbsv06
dbsv07
EndTextBlock

Function keyboard_cpy()
  Result = 0
		timer=0.5
    KBD(VK_CTRL,DOWN)
		KBD(VK_F,DOWN)
		sleep(Timer)
		KBD(VK_CTRL,UP)
		KBD(VK_F,UP)
		sleep(Timer)
		KBD(VK_CTRL,DOWN)
		KBD(VK_V,DOWN)
		sleep(Timer)
		KBD(VK_CTRL,UP)
		KBD(VK_V,UP)
		sleep(Timer)
	Result = 1	
Fend

この命令が4つあるので、多重定義ということらしい。

ここでFunction,Procedure呼出しとかで、色々ググったわけだよw

Function,ProcedureともほぼExcel同様の使い方ができるみたい。
私は後で関数利用しやすいように無理やりResult値を入れて、全てFunction作成している。

これを4つのUWSC [sql1,sql2,sql3,sql4] で共通で使えるように書き換える必要がある。

UWSCでどのモジュールからでも呼び出すようにCLASS記述する

CLASS COMMONPROC
Function keyboard_cpy()
    Result = 0
		timer=0.5
    KBD(VK_CTRL,DOWN)
		KBD(VK_F,DOWN)
		sleep(Timer)
		KBD(VK_CTRL,UP)
		KBD(VK_F,UP)
		sleep(Timer)
		KBD(VK_CTRL,DOWN)
		KBD(VK_V,DOWN)
		sleep(Timer)
		KBD(VK_CTRL,UP)
		KBD(VK_V,UP)
		sleep(Timer)
	Result = 1	
Fend

TextBlock 画像
selore01
dbsv01
dbsv02
dbsv03
dbsv04
dbsv05
dbsv06
dbsv07
EndTextBlock

ENDCLASS

CLASS-ENDCLASSで綴じるだけ~( 一一)

ただ呼出し方が分からん!

どうするねん。。。Excelで他ブックとか呼出すのに”!”とか”.”で繋ぐのかな?

と思ったので、とりあえず試してみると、”.”で繋ぐと動いたよwウケるw

UWSCで外部モジュールからアクセスできるように準備する

  1. 共通部品を [CLASS-ENDCLASS] もしくは [MODULE-ENDMODULE] で綴じる
  2. 綴じた [CLASS-ENDCLASS] に名前を付ける [CLASS COMMONPROC-ENDCLASS]
  3. [CLASS COMMONPROC-ENDCLASS] をCOMMON.uwsという名前で保存する

UWSCで外部モジュールからアクセスする方法

  1. CALL COMMON.UWS //共通クラスの呼出しを宣言する
  2. 呼ぶ出す側は、[名前.変数名] に変数名を変更するだけ
    • [COMMONPROC.画像]
    • [COMMONPROC.keyboard_cpy()]
  3. 同一フォルダーに格納する

上記call sql1.uws~call sql4.uwsをCLASS化し記述変更する

  • 変更1:CALL COMMON.UWS //共通クラスの呼出し
  • 変更2:GAZOU = SPLIT( COMMONPROC.画像 , “<#CR>”)
  • 変更3:ifb COMMONPROC.keyboard_cpy() = 1 then
  • 変更4:文末CLASS化した文字列を削除
ACW(GETID("phpMyAdmin - Google Chrome","Chrome_WidgetWin_1"),-1,-8,1922,1041,0)
ID=GETID("phpMyAdmin","chrome")

//共通クラスの呼出し  //変更1
CALL COMMON.UWS

PATH="C:\XXXXXXXXXX\uwsc5302\Lolipop\img24\"
Timer=0.5
CTRLWIN(ID,max)
sleep(timer)
//TextBlockのデータを配列初期値として代入
GAZOU = SPLIT( COMMONPROC.画像 , "<#CR>")  //変更2

//ここからphpMyAdmin
		sleep(timer)
		SENDSTR(0, "ユーザ名") //クリップボードに文字を送る
		sleep(Timer*2)

		// 文字列検索し該当文字列ならばオレンジ色
		ifb COMMONPROC.keyboard_cpy() = 1 then  //変更3
			ifb CHKIMG(PATH + GAZOU[0]+".bmp") then
					x=G_IMG_X +10      // 画像の座標をxへ代入
					y=G_IMG_Y +35  // 画像の座標をyへ代入
					sleep(Timer)
					BTN(LEFT, CLICK, x, y)	//目的位置をクリック
					sleep(Timer)
			else
				exit
            endif
		endif

		IF GETKEYSTATE(TGL_IME) then KBD(VK_KANJI, CLICK)
		KBD(VK_TAB,CLICK,40)
		KBD(VK_DELETE,CLICK,40)
		KBD(VK_SHIFT,DOWN,40)
		KBD(VK_TAB,CLICK,0)
		KBD(VK_SHIFT,UP,40)
		KBD(VK_DELETE,CLICK,40)
		sleep(timer)
		//ユーザー名
    SENDSTR(0, "xxx") //クリップボードに文字を送る
~省略
		//ここからパスワード
		KBD(VK_TAB,CLICK,40)
    SENDSTR(0, "yyy") //クリップボードに文字を送る
~省略

		sleep(timer)

//phpMyAdmin データベース選択-実行
    ifb CHKIMG(PATH + GAZOU[4]+".bmp") then
					x=G_IMG_X // 画像の座標をxへ代入
					y=G_IMG_Y // 画像の座標をyへ代入
					sleep(Timer)
					BTN(LEFT, CLICK, x, y)	//確認画像をクリック
					sleep(Timer)
		else
			exit
		endif
		sleep(1.5)
//phpMyAdmin エクスポート
    ifb CHKIMG(PATH + GAZOU[5]+".bmp") then
					x=G_IMG_X // 画像の座標をxへ代入
					y=G_IMG_Y // 画像の座標をyへ代入
					sleep(Timer)
					BTN(LEFT, CLICK, x, y)	//確認画像をクリック
					sleep(Timer)
		else
			exit
		endif
		sleep(1.5)
//phpMyAdmin エクスポート実行
        ifb CHKIMG(PATH + GAZOU[6]+".bmp") then
					x=G_IMG_X // 画像の座標をxへ代入
					y=G_IMG_Y // 画像の座標をyへ代入
					sleep(Timer)
					BTN(LEFT, CLICK, x, y)	//確認画像をクリック
					sleep(Timer)
		else
			exit
		endif
exit
//変更4 以下削除

※上記プログラムはこのままでは動作致しません!

phpMyAdmin自動セーブ用使用画像

phpMyAdmin自動セーブ用使用画像

編集後記

これをマスターするとロリポップで業界最安でWordPressを利用するのに唯一の不安点
データベースの保存が自分で出来るようになる。

うまくプログラミング化出来れば全自動で利用ブログのセーブを実行することが出来るが
ブログで収益化に成功すれば月額+330円で自動保存をロリポップ側で利用可能なので
そちらの方が現実的かも知れないね~

私のように、収益化よりもプログラミングが先行している人は一度試してみたら面白いかもしれない。

それでは、またね~😎

この記事を書いた人

マクロで半自動化!GO!GO!!PROGRAMMING
管理人:あどのまつり
馬齢:牡50代(後)✖1

2022.02.01に「馬券人生」の今後が決まる

目次