20200
UWSC 仮 掲示板
投稿時に「証明書が不正です」と出る場合には、JavaScriptをオンにしてください
動作不具合での質問の場合には環境(OS,IEのバージョン等)の表記もしてください
タイトルは質問内容を表したものにしてください
ネットゲーム関係の質問はご遠慮ください

UWSC掲示板 が復活することを祈り、それまでの繋ぎとして。
SearchRocketbbs(掲示板DL検索)

Name
Subject
Color
Cookie / Pass
(No Subject) / while文
while文でAかBの画像を認識するまでsleepさせ、どちらかを認識し、AだったらAの画像をクリックした後、Bの画像が出るのでそれをクリック、BだったらBの画像をクリックするようにしたいのですが、どのようにすればいいのかわかりません。どなたか教えて頂けませんか。
No.455 2019/06/11(Tue) 16:29:52

画像認識による条件待機、クリック / Rayna
>>455 while文 さん

 どの部分がわからないかがわかりにくいので具体的に書くことをおすすめします
 書きかけのコードを一緒に書くと回答側もわかりやすいと思います
 考えられそうな疑問点挙げておきます

 While文の動作がわからない
  → 2, 3個前の質問もしくはヘルプに書いています
 どんな関数を使えばいいかわからない
  → ChkImg, Btn, Sleep あたりを使います
 関数の使い方がわからない
  → ヘルプに詳しく書いてます
 ヘルプ見たけどわからない
  → 具体的にお願いします
 設計がわからない
  → こんな感じで設計すると言っているような動作をします

  While TRUE
   IfB 画像Bが見つかった場合の条件式 Then
    「画像Bが見つかった場合の条件式」で見つかった座標をクリック
    Break
   ElseIf 画像Aが見つかった場合の条件式 Then
    「画像Aが見つかった場合の条件式」で見つかった座標をクリック
   EndIf
   負荷軽減
  WEnd

No.457 2019/06/12(Wed) 10:41:26
(No Subject) / kiii
お知恵をお借りしたいです。

以下のようなドロップダウンリストから項目cccを選択するようにしたいのですが
以下のように"IESetData"分を使用し選択しようとしても、思ったような動作がしません。

アドバイスをいただけないでしょうか?

<select name="mode">
<option value="a0">aaa</option>
<option value="b1">bbb</option>
<option value="c3">ccc</option>
</select>

IESetData(IE,"c3","mode","",)

No.453 2019/06/06(Thu) 11:48:47

Re: / satocha
目的のリストが最初のselectなら

getoleitem(ie.document.getElementsByTagName("select"))
all_ole_item[0].selectedindex=2

二番目のselectならall_ole_item[1]に。以下同様。

この例ではリストの3番目をクリックしていますが、もし、value値「c3」で指定したいなら、
for option in getoleitem(ie.document.getElementsByTagName("option"))
 if option.getAttribute("value") = "c3"
   option.setAttribute("selected",true)
   break
 endif
next

No.454 2019/06/06(Thu) 12:42:06
(No Subject) / ai
UWSC作業を行う際、マウスが砂時計の間待機させたかったので、
IFB GETKEYSTATE(MUSCUR(16))
SLEEP(1)
ENDIF
以下作業
のような式を作ったのですが、思ったように待機してくれません。
解決策をお教え願います。

No.442 2019/06/01(Sat) 15:28:18

Re: マウスカーソル種別による条件待機 / Rayna
>>442 ai さん

 まず
  GetKeyState: 指定されたキーが押されたか判定する関数
  IfB-EndIf: 条件で分岐する制御文
  MusCur: 現在のマウスカーソルの種別を返す関数
 なので GetKeyState は不要です

 16 というのは 恐らく
  CUR_WAIT (16)    // 砂時計カーソル
 のことだと思うのですが
 それはMusCur関数 が返す マウスカーソルの種別 にあたります
 ヘルプの式でいうと戻値に相当します
 なので現在のマウスカーソルが砂時計かどうかを判定する式は
  MusCur()=CUR_WAIT // MusCur()=16 でも可
 になります(後から見たときわかりやすいので定数を使うことをおすすめします)

 If文 は条件で分岐させる制御文であって
 ループさせることは出来ません
 この場合 While-WEnd文 か Repeat-Until文 を使います
  While-WEnd : 先評価、式が TRUE の場合繰り返し
  Repeat-Until: 後評価、式が FALSE の場合繰り返し
 場合によって使い分けてください

 ヘルプに結構詳しく書いてあるので見てみてください

 以下サンプル

//| No442.uws |////////////

 //| While-WEnd文 の例
  //|現在のマウスカーソルが CUR_WAIT の間 While-WEnd間を繰り返す
  While MusCur()=CUR_WAIT
   SLEEP(1)
  WEnd

 //| Repeat-Until文 の例
  //| Repeat-Until間を実行した後 現在のマウスカーソルが CUR_WAIT 以外であれば 繰り返しを抜ける
  Repeat
   SLEEP(1)
  Until MusCur()<>CUR_WAIT

///////////////////////////

No.443 2019/06/01(Sat) 17:37:18

Re: / ai
>>443 Rayna さん

おかげさまで理想の動作を行うことが出来ました。
ありがとございました。

No.452 2019/06/05(Wed) 09:55:25
ブラウザ文字入 / soon
お世話になります。
このUWSCは、サイトへの文字入力に関して、容易なのは、IE以外であれば、どのブラウザなのでしょうか。
同じ操作で可能と思われたIEで可能な文字入力が、Edgeで反応しません。
WebDriverを利用することで、Edge、Firefox、Chromeで可能であれば、頑張っていこうかと思いますが、開発者、先駆者方々のご意見をお伺いさせてください。

No.450 2019/06/04(Tue) 20:52:58

Re: ブラウザ文字入 / satocha
IEはUWSCに専用の関数・プロシジャが用意されているのでとても扱いやすいです。

Chrome、firefox、EdgeはWebDriverをUWSCから扱えるようにするモジュールをstuncloudさんが書いてくださったので、格段に扱いやすくなりました。この掲示板でWebDriverを検索してみてください。

環境さえ用意できてしまえば、ブラウザの差はあまりないと思います。

No.451 2019/06/04(Tue) 23:43:21
tryでトラップできない配列エラー / satocha
例のクイズに苦闘して、ごにょごにょやっていたら、UWSCの不可解な動きに気づきました。

まずは 検証スクリプト。
−−−−−−−−−−−−−−−−−−−−−−−−−
dim a,b,c
repeat
  try
    //ここで「d[e]」を入力するとtryでトラップできず、変数の未宣言エラーでスクリプトが終わってしまう。
    line=input()
    eval(line)
  except
    msgbox( "trapped<#tab>" + line )
  endtry
until line=""
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

コメントの通りですが、さらに色々調べたところ、配列呼び出しの際、
未定義変数の数がtryのネスト数を上回るとトラップできないようです。

逆に言えば、回避方法はtryのネストを深くすること。次の例は未定義変数3つまではトラップできます。(コメント参照)

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
dim a,b,c
repeat
  try
  try
  try
    //こうすると「d[e],d[e,f]」はOK。「d[e,f,g]」はトラップできずスクリプトが終了する。
    line=input()
    eval(line)
    msgbox( "passed 1<#tab>" + line )
  except
    msgbox( "trapped 1<#tab>" + line )
  endtry
    msgbox( "passed 2<#tab>" + line )
  except
    msgbox( "trapped 2<#tab>" + line )
  endtry
    msgbox( "passed 3<#tab>" + line )
  except
    msgbox( "trapped 3<#tab>" + line )
  endtry
until line=""

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
エラーメッセージは未定義エラーが出てきますが、定義されていなくても宣言されていれば、トラップされます。
なので、最初のスクリプトでも、「a[b]」や「a[b,c]」はトラップできます。
また、エラーメッセージはあたかもexcept節で起きているかのような内容で戸惑います。except節を空にすると、endtryがだめだと言ってきます。

作者さんに連絡つくなら対応してほしいところですが、予防的に対応するしかないでしょうね。

No.444 2019/06/01(Sat) 19:55:50

Re: tryでトラップできない配列エラー / Rayna
>>444 satocha さん

 配列のときだけ...
 関数でExceptされないの厄介だなーとか考えてたら
 組込関数のEvalをラップすることで回避できました

 ですが
 関数内にてEvalで代入するときは 関数内のローカル変数から順番に定義するので
 関数内に変数が定義されていない場合
 メインルーチンのローカル変数に代入されず、関数内のローカル変数として定義されます

 回避策としてグローバル変数を使うことで関数外の変数に代入することができます
 (できれば使いたくないですが。。。)

//| No444.uws |/////////////////////|
 Dim a, b, c, i="d[e]", dim_test
 Public pub_test
 Repeat
  Try
   i = Input("?", i)
   Eval2(i)
  Except
   MsgBox("trapped? "+i)
  EndTry
 Until i=EMPTY


 Eval2Test("dim_test:=123456789")
 Print "dim_test="+Eval("dim_test")+" Out Func"
 Eval2Test("pub_test:=123456789")
 Print "pub_test="+Eval("pub_test")+" Out Func"

 Function Eval2(sStatement)
  RESULT=Eval(sStatement)
 FEnd

 Function Eval2Test(sStatement)
  Dim sVarName=Split(sStatement, ":=")[0]
  RESULT=Eval(sStatement)
  Print sVarName+"="+Eval(sVarName)+" In Func"
 FEnd
////////////////////////////////////

No.447 2019/06/02(Sun) 20:44:24

Re: tryでトラップできない配列エラー / satocha
>>Raynaさん
参照渡しにすることで変数のスコープは解決できそうですが、今度は引数の数が固定されてしまいます。一般的な解決策は難しい。

for s in split(statements,"<#CR>")
  a=4
  try
    eval2( s, a )
    msgbox("a="+a)
  except
    msgbox("Error! at "+s)
  endtry
next
textblock statements
arg1:=3
arg1:=b[c]
arg1=2
endtextblock

function  eval2(str,var arg1)
  result=eval(str)
fend

No.449 2019/06/03(Mon) 11:51:06
(No Subject) / YMK
バックグラウンドで動作するプログラムがあり、
動作を一旦止めたいところでmsgboxを使用しています。

このmsgbox をマウスクリックだけで消えるようにして、
Enterキーで消さない方法はありますか?

今は、例えば文章を書いている時に、いきなりmsgboxが現れて
文章で使ったEnterを、msgboxが横取りしてプログラムが続行してしまう事があるのです。

msgboxをアクティブにしなければ良いかと思い、以下のプログラムで回避しようと思いましたが、上手くいきませんでした。

THREAD 非アクティブ
SLEEP(2)
msgbox("一旦停止中です")


PROCEDURE 非アクティブ
idm = GETID("UWSC - 1111-~1.uws", "TUmsgDlg_uwsc", -1)
CTRLWIN(idm,TOPNOACTV)
fend


よろしくお願いします。

No.445 2019/06/02(Sun) 17:49:22

Re: MsgBoxをEnterキーで消さない方法 / Rayna
>>445 YMK さん

 UI変わりますけどSlctBox使うのが一番簡単です(Ex1)
 SetHotKeyでキーボードの入力を乗っ取ることもできます(Ex2, Ex3)

//| No445.uws |//////////////////////////////////
 //| Ex1 SlctBox の選択肢を省略して使う
  SlctBox(0, 0, "一旦停止中です")

 //| Ex2 指定のVKを無効 (MsgBox以外も含む)
  SetHotKey(VK_RETURN, EMPTY, "DisableKey")
   MsgBox("一旦停止中です")
  SetHotKey(VK_RETURN)

 //| Ex3 指定のVKを無効 (MsgBoxのみ)
  SetHotKey(VK_RETURN, EMPTY, "DisableMsgBoxKey")
   MsgBox("一旦停止中です")
  SetHotKey(VK_RETURN)

 Procedure DisableKey; FEnd
 Procedure DisableMsgBoxKey
  If Status(GetId(GET_ACTIVE_WIN), ST_CLASS)<>"TUmsgDlg_uwsc" Then Kbd(HOTKEY_VK)
 FEnd
/////////////////////////////////////////////////

No.446 2019/06/02(Sun) 19:34:55

Re: / YMK
有り難うございます。

その後、スペースキー(変換)でもmsgboxを押してしまう事があったので、

SetHotKey(VK_SPACE, EMPTY, "DisableMsgBoxKey")

を追加して、無事安定動作しました。

No.448 2019/06/02(Sun) 22:49:09
exe化した場合のログウィンドウ内のフォント / トリビア
.uwsで実行時のログウィンドウ内のフォントはUWSC.INIの変更で実現することはわかっていますが、exe化した場合のログウィンドウ内のフォント指定はどのようにすれば良いのでしょうか。
No.437 2019/05/31(Fri) 16:40:18

Re: exe化した場合のログウィンドウ内のフォント / Rayna
>>437 トリビア さん

 UWSC.ini の LogFontのことですね

 //| GET_APPDATA_DIR+"\UWSC\UWSC.ini" |//
 [SET]
  ...
 LogFont=,
 DefaultFont=,
  ...
 ////////////////////////////////////////

 DefaultFont の設定がここで出来るなら...と思い
 隠しオプションみたいなのを期待して
  Option LogFont="MS ゴシック,20"
 とかやってみましたが普通にSyntaxErrorでだめでした
 [追記※1] なので恐らくexe化後のそういう設定はないです

 憶測ですがPrint制御文はデバッグ出力としての使用を想定していたのではないかと
 だからexe化後のフォント変更は考慮してなかった...?とか考えてしまいました

---
[追記]

 ※1
  ごめんなさい
  すっかり見落としてました
  [追記※2] Uws2Exeの「iniファイルを作らない(I)」のチェックを外すと

  スクリプト名.exeのカレントディレクトリの
  スクリプト名.ini から UWSC.iniみたいに LogFontを設定できます

 ※2
  トリビア さんの返信を見て
  「iniファイルを作らない(I)」関係ないかもと思って検証してみたら関係無かったです

  自分でスクリプト名.ini を作成すればそこから
   [SET]
   LogFont=
  を読みに行くみたいです

  自動で出来るiniファイルに固執してました、お恥ずかしい

No.439 2019/06/01(Sat) 08:36:11

Re: exe化した場合のログウィンドウ内のフォント / トリビア
Raynaさん

ありがとうございます。同名のiniファイルに[SET]LogFontを指定すれば
変更できることを確認しました。助かりました。



> >>437 トリビア さん
>
>  UWSC.ini の LogFontのことですね
>
>  //| GET_APPDATA_DIR+"\UWSC\UWSC.ini" |//
>  [SET]
>   ...
>  LogFont=,
>  DefaultFont=,
>   ...
>  ////////////////////////////////////////
>
>  DefaultFont の設定がここで出来るなら...と思い
>  隠しオプションみたいなのを期待して
>   Option LogFont="MS ゴシック,20"
>  とかやってみましたが普通にSyntaxErrorでだめでした
>  [※追記] なので恐らくexe化後のそういう設定はないです
>
>  憶測ですがPrint制御文はデバッグ出力としての使用を想定していたのではないかと
>  だからexe化後のフォント変更は考慮してなかった...?とか考えてしまいました
>
> ---
> [追記]
>
>  ごめんなさい
>  すっかり見落としてました
>  Uws2Exeの「iniファイルを作らない(I)」のチェックを外すと
>
>  スクリプト名.exeのカレントディレクトリの
>  スクリプト名.ini から UWSC.iniみたいに LogFontを設定できます

No.441 2019/06/01(Sat) 11:05:21
クイズ / Rayna
 少しハマったのでそれを題材に問題作ってみました
 掲示板の趣旨とずれますが過去にも何件かあったようなのでいいかなと
 興味あればやってみてください

//| Question.uws |//////////////////////
TextBlock Q

 [問題]
  ? を入力してループを抜け、@の MsgBox を表示してください  
  ([Cancel] Or [X] で中止)

 ───────────────────────── 

  Option Explicit
  Dim v
  While v=v
   Try
    Eval("?")
   Except
    MsgBox(TRY_ERRMSG+"<#CR>"+TRY_ERRLINE)
   EndTry
  WEnd
  MsgBox("正解です") // ・・・@

EndTextBlock
Option Explicit
Dim v, i

While v=v
 Try
  If i<>EMPTY Then SlctBox(0, 1, S+"不正解です"+S)
  i = Input(Q, i)
  If i=EMPTY Then Canceled
  Eval(i)
 Except
  MsgBox(TRY_ERRMSG+"<#CR>"+TRY_ERRLINE)
 EndTry
WEnd
MsgBox(S+"正解です"+S) // ・・・@

//////////////////////////////
Const S = Format(" ", $F)

TextBlock
Procedure Canceled()
 Dim m=S+"中止しますか?"+S, bS=BTN_ABORT Or BTN_RETRY, bE=BTN_ABORT Or BTN_CANCEL
 If MsgBox(m, bS) And bE Then ExitExit
FEnd
EndTextBlock

//| 追記(回答つき) |//////////
Procedure Canceled()
 Dim m1=S+"中止しますか?"+S, bS1=Split("再試行 回答 中止")
 Dim m2=S+"回答を見ますか?"+S, bS2=BTN_YES Or BTN_NO, bT2=BTN_YES
 Dim m3=S+"h"+"ttp://codepad.org/AKqlWve0"+S, bS3=BTN_OK

 Select SlctBox(SLCT_BTN Or SLCT_STR, 0, m1, bS1)
 Case "再試行"; Exit
 Case "回答" ; If MsgBox(m2, bS2)=bT2 Then MsgBox(m3, bS3, -1, -1, 0, TRUE) Else Exit
 SelEnd
 ExitExit
FEnd

////////////////////////////////////////

No.434 2019/05/31(Fri) 06:43:10

Re: クイズ / satocha
ただギブアップするのは悔しいので…。

powershell("ps uwsc|kill;'msgbox("+chr(34)+s+"正解です"+s+chr(34)+")'>tmp.uws;"+Get_UWSC_DIR+"\uwsc tmp.uws")

を入れたら、ループを抜けて「世界です」の表示も出ました。

たぶん、こんなインチキはだめでしょうけど。

No.435 2019/05/31(Fri) 13:14:16

Re: クイズ / stuncloud
んんん〜!わかんないですね!

true:=false しても v=v がfalseになるわけではないし
以下考えてたことなんかを書いてみる
机上の空論がそのままどうにもならなかった感じです

・v=vが正しく評価されなくなるような値をvに代入
 そんな値があるのだろうか…
・スペース開けずに「v=v」表記なので実はこのまま変数になる
 v=v:=false とかやってみた、意味ない
 ただしイコールがいっぱいあるとevalは変な挙動するので別の不安が生じる
・右辺のvと左辺のvに別の値を代入
 さすがに何を言ってるのかわからんレベル
・v=v は関係なくてeval()でbreakめいたことができる可能性
 当然文は評価できないのでbreakって書くだけではダメ
 式だけどbreakを実行する方法…?

しばらく考えてみたいと思います…

それはそうと、evalって定義済みの変数にしか値を代入できない気がしてたんですが
代入式で任意の名前の変数作れるんですね、いつからこうなってたのかな?

No.436 2019/05/31(Fri) 13:54:15

Re: クイズ / Rayna
>>435 satocha さん

 回答ありがとうございます!
 流石のPowerShellですね

 自分の環境だと
  powershell("ps uwsc|kill;'msgbox("+chr(34)+s+"正解です"+s+chr(34)+")'>tmp.uws;start '"+Get_UWSC_DIR+"\uwsc' tmp.uws")
 で動作しました

 ドライブ直下とかだと問題ないですけど
 特定フォルダだと PowerShellのルートディレクトリに tmp.uws が作成されたので
 「tmpファイル何処...?」ってなってました、笑
 (恐らくパスに ) ( ] [ , 等が含まれていたため)

 でも@のMsgBoxではないので残念ながら不正解とさせて頂きます

---

>>436 stuncloud さん
 参加ありがとうございます!

 >>しばらく考えてみたいと思います…
  いいとこ来てますね
  引き続き頑張ってください!

 >>代入式で任意の名前の変数作れるんですね、いつからこうなってたのかな?
  Explicit 指定してても定義しちゃうEval怖いですね
  手持ちのFree版のみですが試してみました
  4.321(4.3b), 4.7, 4.93(4.9c), 5.302
   Option Explicit
   Eval("v:=0")
   MsgBox(GET_UWSC_VER+"<#CR>"+Eval("v"))
  全部0を返したので、もしかすると相当前に変わったのかもしれません

---

 回答が出るか落ち着いたら追記で回答載せますね
 私の回答の最小Eval, 文字数は 1Eval、12文字です

---
 [回答]
  http://codepad.org/AKqlWve0

No.438 2019/05/31(Fri) 21:02:24
(No Subject) / おりと
urlを開いてInternet Explorerにpagedownキーを送信するだけなのですが、うまくいきません。教えて頂けるでしょうか。


IE = CREATEOLEOBJ("InternetExplorer.Application")
IE_ID = HNDtoID(IE.hwnd)
IE.visible = True
IE.navigate("https://xxxx.com/xxxx/")
REPEAT
//0.1秒待つ
SLEEP(0.1)
UNTIL !IE.busy AND IE.readyState = 4

SCKEY(IE_ID, VK_NEXT)

No.431 2019/05/28(Tue) 14:42:42

Re: / stuncloud
一度手でPageDownを押した後だと
> SCKEY(IE_ID, VK_NEXT)
がうまくいく…場合もありますね
なんでこんなことになっているのだろう
試しにF5を送ってみたらちゃんとリロードされるんですけどね
ちょっとよくわからないです

代替案

キー送信ではない方法で1ページ分のスクロールを実現させます
以下はhtmlがスクロールする場合

with IE.document.documentElement
 .scrollTop = .scrollTop + .clientHeight
endwith

スクロールするのがbodyならIE.document.documentElementではなくIE.document.bodyになります

No.432 2019/05/28(Tue) 16:14:47

Re: / Rayna
>>431 おりと さん

 http://www3.rocketbbs.com/601/bbs.cgi?id=siromasa
 で試してみましたが正常に動作しました
 ページ固有の問題とかかも...
 他のサイトや別アプローチを試してみてはいかがでしょう

 何通りかPageDown及びスクロールの別アプローチ書いてみました

//| No431.uws |////////////////////////////////////////

IE = CREATEOLEOBJ("InternetExplorer.Application")
IE_ID = HNDtoID(IE.hwnd)
IE.visible = True
IE.navigate("https://xxxx.com/xxxx/")
REPEAT
//0.1秒待つ
SLEEP(0.1)
UNTIL !IE.busy AND IE.readyState = 4

//| MouseOrg で Kbd を使う例
 MouseOrg(IE_ID, MORG_DIRECT)
  Kbd(VK_NEXT)
 MouseOrg(0)

//| javascript で操作する例
 Dim oScr, pxMoveX=0, pxMoveY=500
 //| pxを相対指定
  oScr = IE.document.createElement("script")
  oScr.innerHTML = "window.onload = scrollBy("+pxMoveX+", "+pxMoveY+");"
  IE.document.body.appendChild(oScr)
  oScr = NOTHING
 //| pxを絶対指定
  oScr = IE.document.createElement("script")
  oScr.innerHTML = "window.onload = scrollTo("+pxMoveX+", "+pxMoveY+");"
  IE.document.body.appendChild(oScr)
  oScr = NOTHING

//| 組み込み関数 Slider系 で操作する例 (遅い)
 Dim sNo=1, sMove=5
 Print GetSlider(IE_ID, 1, SLD_MAX)
 //| PageDownと同等の動作
  SetSlider(IE_ID, GetSlider(IE_ID, sNo, SLD_POS)+GetSlider(IE_ID, sNo, SLD_PAGE), sNo)
 //| スライダーの数値を相対指定
  SetSlider(IE_ID, GetSlider(IE_ID, sNo, SLD_POS)+sMove, sNo)
 //| スライダーの数値を絶対指定
  SetSlider(IE_ID, sMove, sNo)

///////////////////////////////////////////////////////

No.433 2019/05/28(Tue) 16:52:50
ついにこの日が(uwsc.infoがつながらない) / satocha
今、気づいたのですが、これまでいくつかのページが生きていた公式サイトwww.uwsc.info以下の全ページにアクセスできなくなっています。

いつからこうなったのでしょう。

ショックです。

No.425 2019/05/24(Fri) 13:02:14

Re: ついにこの日が(uwsc.infoがつながらない) / stuncloud
そうなんですよね…残念です
5chだと22日の時点でその情報がありましたが、いつ頃からだったのかはわからないですね

No.426 2019/05/24(Fri) 13:20:37

Re: ついにこの日が(uwsc.infoがつながらない) / y
umiumi氏は今は50歳代になるのでしょうか。
一度もお会いしたことはありませんが、こんなに便利なソフトをほとんどボランティアで世に提供してくださった氏に感謝です。

最初にUWSCを知ったのは20代半ばでしたが、各業務システム固有の言語と比べると、低レベル操作の不安定感や速度の遅さばかりに目がゆき、その価値に気付いていませんでした。

私の職場には30種類ぐらいの業務システムがありますが、それらをオートメーションするために、これまではシステムごとに固有のプログラムを書いていました。

バージョンアップなどで仕様が変わると、プログラムの改修が必要になりますが、内部的な変更はベンダーから詳細な情報がもらえないことが多く、動かなくなった原因の特定に時間がかかります。
(特に2〜3年手を入れていなかったプログラムだと、固有の命令やAPIを思い出すのにも時間がかかります)

愚かにも「UWSCは使えない」という先入観を持ってしまったあの日から10数年経ち、あらためて再考すると、すべての業務システムはマウスとキーボードで操作できるように作られているので、UWSCの方がトータルとして学習コストが低く、メンテナンスが楽で、安全で、ワークシェアや引き継ぎも円滑です。
仕様変更があっても、クリック位置やタイミングなど、誰の目にも見えるところだけを、共通の言語を使って直せるので。

こういう利点に、GUIやAIなどを載せて売り出しているのが今はやりのRPAパッケージですが、まだ高価なものが多いですよね。
日本語が使えて廉価なものも徐々に出てくると思いますが、私の職場ではあと5年ぐらいは様子を見ようと思っています。

仮にUWSCの開発が止まったとしても、UWSCは良い意味で「完全に枯れた技術」であり、今もなお、PC業務のオートメーションをスモールスタートする場合の第一選択だと考えています。

あまりUWSCを使ってこなかった私が言うのはあまり説得力がありませんが、もしumiumi氏がここを見ていたら心からお礼が言いたいです。あと、動作が不安定に感じたのは私のコーディングが下手だからでした。誤解していてごめんなさい。

No.430 2019/05/25(Sat) 12:57:16

SearchRocketbbs(掲示板DL検索)

以下のフォームに記事No.と投稿時のパスワードを入力すれば
投稿後に記事の編集や削除が行えます。
82/200件 [ ページ : 1 2 3 4 5 6 7 8 9 >> ]

- HOME - お知らせ(3/8) - 記事検索 - 携帯用URL - フィード - ヘルプ - 環境設定 -

- Skin: Modern v2.0 - Author: ロケットBBS -

Rocket Board Type-X (Free) Rocket BBS