[ 掲示板に戻る ]

過去ログ閲覧モード

SLCTBOXの戻り値について / ヘッドロココ
SLCTBOXでccccの3番目選択したらaの戻り値が4になるんですが、これは3になるのが正しいのではないでしょうか?

a=SLCTBOX(SLCT_BTN,10,"どれか選んでね","AAAA","BBBB","CCCC")
print a
SELECT a
 CASE SLCT_1
  FUKIDASI("1番目が選ばれました")
 CASE SLCT_2
  FUKIDASI("2番目が選ばれました")
 CASE SLCT_3
  FUKIDASI("3番目が選ばれました")
 CASE 0
  FUKIDASI("タイムアウトしました")
SELEND
Sleep(3)
FUKIDASI()

No.4685 2017/11/08(Wed) 23:13:02

Re: SLCTBOXの戻り値について / しろまさ
複数チェック対応でビットが返るのがデフォルトです。
連番が欲しいなら SLCT_BTN OR SLCT_NUM ですね。

No.4686 2017/11/08(Wed) 23:39:44

Re: SLCTBOXの戻り値について / ヘッドロココ
しろまさ回答ありがとうございます。理解できました。
No.4688 2017/11/10(Fri) 09:47:36
windows10 CHKIMG の動作 / 蒙古
こんにちは。
同じような症状になっている方がいましたら、教えて頂きたいです。

UWSC Pro Ver5.3.0.2
を使用しておりまして、

開発のOSは、windows7で開発をしております。


CHKIMGを使用しており、
windows7ですと、問題なく認識ができます。

しかし、
同じスクリプトをexe化し、
windows10環境のパソコンの方に渡して使用して頂くと、
画像が認識されません。

当然、各パソコンで画像が違うため、
そのwindows10のパソコンで、
SAVEIMG関数を使い、ビットマップ形式で保存し、加工しています。

また、CHKIMGのオプションで、
IMG_MSK_BGR4
を使っていますし、

座標も、0,0,2000,2000 のように、
画面範囲限界まで行っております。

他のwindow7環境ですと問題ないのですが、
windows10環境ですと同じスクリプトが動きません・・・。

何かwindows10独特のセキュリティとかがかかっているのでしょうか?

同じ症状になって解決した方がいらっしゃったら、
ぜひ教えて頂きたいです。

よろしくお願いします。

No.4664 2017/11/03(Fri) 05:31:07

Re: windows10 CHKIMG の動作 / Demzel
こんにちは。

私は半年前あたりにwindows7からwindows10へと移行しましたので、両方の環境で
CHKIMGを確認しております。
現在はWindows10上にてUWSC Ver5.3.0.2を使用しております。

私の場合、ChromeにてCHKIMGをバックグラウンドで利用しようとすると、Windows7
で問題なく動いていたものが、Windows10にて全く認識されなくなってしまいました。

具体的には、MOUSEORG(ID, MORG_DIRECT, MORG_BACK)とした場合、画面がアクティブ
であろうが他の画面に隠れていようが全く認識しません。
MORG_BACK以外の他の引数は問題なく動作します。
また、ハンドル値を使っても同様の結果となりました。

この点に留意しておけば、Windows7の頃の記述で問題なく動作します。

この問題の解決方法をずっと探していましたが、結局見つけることができず
バックグラウンド動作は諦めました。
他のブラウザなどでは動作するかもしれませんが、現状はバックグラウンド動作は
不安定であり、動いたらラッキーと思うくらいがいいかもしれません。

No.4683 2017/11/08(Wed) 19:28:55
VMwareのバックグラウンド操作 / Noir
VMware Workstation 12 Proで起動した仮想マシンに対して、MOUSEORG関数を利用してバックグラウンド操作を行いたいのですが、うまくいきません。

環境
Windows10 Pro x64
VMware Workstation 10 Pro 12.5.7
UWSC Pro 5.3.0.2
ゲストマシン:Windows8.1 x64

現在、
wid=getid("仮想マシン名")
mouseorg(wid,2,morg_back)
で、バックグラウンド入力をしようとしたのですが、CHKIMGはおろかKBD,BTNも動作しません。
どなたか、対応方法をご存知のかたがいらっしゃれば、ご教示ください。

No.4666 2017/11/04(Sat) 16:15:03

Re: VMwareのバックグラウンド操作 / satocha
wid=getid("仮想マシン名")でウインドウIDがきちんと取れていないのでは?
VMwareを持っていないのでどんなウインドウタイトルになるか分からないため、こうすればいいとはお知らせできませんが。

強引にやるなら、全ウインドウを取得して、そのタイトルに仮想マシン名が含まれていればそれがウインドウIDだと見做す手もあります。
VMachineName="仮想マシン名"
wid=-1
for id in GetAllWin()
 if pos(VMachineName,status(id,st_title))
  wid=id
  break
 endif
next
//このあとwidを使って操作

No.4668 2017/11/04(Sat) 22:22:18

Re: VMwareのバックグラウンド操作 / Noir
返信ありがとうございます。

後だしで申し訳ありませんが、
acw関数でウィンドウIDが取れていることは確認しました。
アイテム名からハンドル取得も試しましたが、把握可能なアイテム名でもうまくいきませんでした。

No.4669 2017/11/04(Sat) 23:16:25

Re: VMwareのバックグラウンド操作 / PAC
仮想マシンの中でUWSCを動かせば良いのでは?
No.4670 2017/11/05(Sun) 11:10:10

Re: VMwareのバックグラウンド操作 / Noir
返信ありがとうございます。

Hostでuwscを使用している理由は主に2点あり、
VM内で動かしているソフトウェアが仮想キー入力を受け付けない仕様のようなのでVM外から動かしたい、ということと、
多数(現在12台)からの同時アクセスに対する負荷試験も兼ねており、10~100ms程度の同時性を持った制御をVM内で(ネットワーク経由で)行う術を持ち合わせていないことが理由です。

この2点が解消されればVM内で実行するのですが、特に後者のほうは、当方がネットワーク関連に特に無知であるため、困難です。

No.4672 2017/11/06(Mon) 17:32:39

Re: VMwareのバックグラウンド操作 / stuncloud
vw = getid(" - VMWare WorkStation")
id = -1
hVMUIView = getctlhnd(vw, "VMUIView")
hAtlAxWin90 = getctlhnd(hndtoid(hVMUIView), "AtlAxWin90")
for _id in getallwin(hndtoid(hAtlAxWin90))
 if pos("ATL:", status(_id, ST_CLASS)) then
  id = _id
  break
 endif
next

これで変数idに今開いているタブのコンソール部分のidが入ります (-1だったら失敗です)
このあとだいたい画面の真ん中あたりをbtn()でクリックしてからsckey()によるキー送信を行う、ということをしています
真ん中あたりをクリック、は操作を仮想マシン側に移すためです (なのでCtrl+GでもOK
ログオン画面などコピペができない箇所で任意の文字列を送るというような使い方がメインです
ので、マウス操作やmouseorgeでのバックグラウンド操作に関してはできるかどうかわかりません
上記のコードでidが取れたら試してみてください

No.4681 2017/11/08(Wed) 10:41:25
ユーザーアカウント制御でのクリック / にゃんこ
ユーザーアカウント制御の"次のプログラムにこのコンピューターへの変更を許可しますか?"の画面で、文字列Yの入力をする方法はありますか?
よろしくお願いします。

No.4680 2017/11/08(Wed) 08:22:50
MSGBOXでのESCキー / stomy
MSGBOXでのESCキーでYESを押してしまうのをやめてほしい。
No.4673 2017/11/07(Tue) 10:56:16

Re: MSGBOXでのESCキー / satocha
「ESCキーでYESを押してしまう」ことはありません。押される(という言い方でいいかどうか分かりませんが)のは、キャンセルボタンです。確認スクリプトは次の通り。

//確認スクリプト開始
hashtbl button_str
buttons =split( "btn_ok btn_yes btn_no btn_cancel btn_abort btn_ignore btn_retry" )
all_buttons=0
for button in buttons
 all_buttons =all_buttons + eval( button )
 button_str[ eval( button ) ] =button
next
button  =msgbox("ボタンを押すかエスキープキーを押してください", all_buttons )
msgbox( "あなたが押したボタンは" + button_str[ button ] + "ですね" )
//スクリプト終了

ESCキーでメッセージボックスが閉じられるのがいやなら、こんな書き方でどうぞ。
repeat
 button=msgbox(string)
until button<>btn_cancel

※ESCキーとキャンセルボタンの弁別はどうするんだっけ。どなたかお願いします。

No.4675 2017/11/07(Tue) 12:45:52

Re: MSGBOXでのESCキー / satocha
弁別は意外に簡単でした
string="escキーを押してみよ"
repeat
 EscOn=false
 button=msgbox(string, btn_ok + btn_cancel)
 if getKeyState(vk_esc) then EscOn=true
until button<>btn_cancel or !EscOn

No.4676 2017/11/07(Tue) 13:01:29

Re: MSGBOXでのESCキー / stomy
BTN_CANCELを付けていないのに、ESCキーで来てしまうのですね。
なるほど。

No.4679 2017/11/07(Tue) 18:14:16
管理者として実行するとCOM ERROR / にゃんこ
TEST.UWSに作成し(中身 EXCEL = GETACTIVEOLEOBJ("Excel.Application"))

バッチファイルを作成し(中身 C:\UWSC\UWSC.EXE C:\UWSC\TEST.UWS)

これのショートカットで実行するとエラーは出ませんが、

管理者として実行するにチェックをいれてショートカットで実行すると
COM_ERROR:操作を利用できませんとエラーが出ます

対応方法を教えてください。
よろしくお願いします。

No.4665 2017/11/04(Sat) 14:57:16

Re: 管理者として実行するとCOM ERROR / satocha
外しているかもしれませんが、エクセルを管理者モードで起動していないのではないでしょうか。
No.4667 2017/11/04(Sat) 22:12:50

Re: 管理者として実行するとCOM ERROR / にゃんこ
管理者モードで動作できました。
ありがとうございました。
お礼遅くなり申し訳ありません。

No.4671 2017/11/06(Mon) 11:12:26
ログウィンドウの表示内容をクリアしたい / K-1
print文でログウィンドウが開き文字列が表示されますが、
この表示文字列をクリアすることはできないでしょうか。
ウィンドウはそのままで、表示内容だけクリアです。

No.4656 2017/11/02(Thu) 13:45:16

Re: ログウィンドウの表示内容をクリアしたい / stuncloud
// print窓を空文字で上書きします
sendstr(getid(GET_LOGPRINT_WIN), EMPTY, 1, TRUE)

No.4658 2017/11/02(Thu) 15:34:21

Re: ログウィンドウの表示内容をクリアしたい / K-1
できました。ありがとうございます。
No.4663 2017/11/02(Thu) 21:49:38
配列に空白文字列があれば0を入力させる方法 / さやか
aファイルに3つデータ、1行ずつ入力されている。
配列サイズは7、配列[6]の場合、4行目からはすべて0を入力
した状態でする方法ないでしょうか?SETCLEARだと配列内は全て0で埋め尽くさます。SHIFTARRAYはデータシフトさせるだけですし、何かよい方法ないでしょうか?

aファイル
15
48
45
空行
空行
空行
空行
---------------------
希望の処理
15
48
45
0
0
0
0
---------------------

No.4639 2017/11/01(Wed) 11:50:07

Re: 配列に空白文字列があれば0を入力させる方法 / しゅん
上手くいかないスクリプトの例がないため、何をやりたいのかイマイチわかりません。
FOPENでファイルを開いて1行毎に処理しているのなら、IF文で空行か判断して、空行なら0を、それ以外なら読み込んだ値を入れれば良いのではないでしょうか。

もし、ファイル側が配列文だけないことを想定しているのであれば、最初にsetclearして全部0にしてからファイルの読込処理をすれば良いかと思います。

No.4662 2017/11/02(Thu) 16:13:30
publicを使う時の判断基準 / さやか
procedure内でpublicを使うパターンやメイン上でpublicを使うパターン、別のuwsファイルでCLASS内にユーザー関数内でpublicを使っているパターン等色々考えられると思います。

メインで別のuwsファイルのCLASS内のユーザー関数を呼び出して利用する事があるのですが、その際CLASS COMMON内にprocedureやfunction内で配列処理した変数をメインで利用したい場合やCLASS COMMON内のprocedureの1という関数内にさらに別のユーザー関数を利用している場合もあります。

たとえば下記のような感じです。

procedure rinkkaki1(フォルダー名\,会社名1,会社名2)
call C:\Users\aruke\Desktop共通化.uws
yomi1 = COMMON.Read_ALLText(e99)
fend

publicは関数内外で利用する時に宣言するという認識なのですが、みなさんはpublicをどういう判断基準で使われていますでしょうか?

No.4619 2017/10/30(Mon) 23:28:33

Re: publicを使う時の判断基準 / しろまさ
// 主観ですが、基本的に多種のModuleを目的に合わせてCallで組み合わせて使うので
// 誤動作の元になるメイングローバル変数(Public)は使いません(スコープはModule内に押し込めます)

  Call ..\Module_COMMON.uws
// Call ..\Module_API.uws
// Call ..\Module_ADO.uws

Dim pay = Input("金額を入力", 500)
With  COMMON
  Ifb .AddTax(pay)
    MsgBox("[" + pay + "] の税込は [" + .ShowRec() + "]<#CR>※ 税率は " + .pTax + " %")
  Else
    MsgBox("[" + pay + "] 数字を入力して下さい")
  EndIf
EndWith

// ここより別ファイル
Module COMMON
  Public  pTax = 1.08
  Dim rec1
  Function  AddTax(num)
    Ifb Val(num) <> ERR_VALUE
      rec1 = num * pTax
      Result = TRUE
    Else
      Result = FALSE
    EndIf
  FEnd
  Function  ShowRec()
    Result = rec1
  FEnd
EndModule

No.4620 2017/10/31(Tue) 08:55:24

Re: publicを使う時の判断基準 / stuncloud
だいたい賛成ですが、ちょっとしたスクリプト(数十行程度)でスコープ越えなきゃいけない場合があったら面倒なのでpublicを使うことはあります
ちっちゃいスクリプトなら見通しがきくのでそうそう間違えませんしね

そして、かっちりやるときは僕もModuleを使いますがModule内のpublic変数も結局外から値を代入されちゃったりする(つまり普通のpublicと大差ない)ので

print Hoge.piyo // ダメ
print Hoge.GetPiyo() // piyo

module Hoge
 dim piyo = "piyo"
 function GetPiyo()
  result = piyo
 fend
endmodule

こんな感じでdimで宣言しておいて取得用の関数書きますね
もしこの変数の値を変更する必要があるのなら、その為の関数を書きます

値が絶対に変わらないのであればconstを使うのも手です、constもグローバルスコープです

なんでこういうことをするのか、についてはまだ疑問に思われるかもしれません
publicの取り扱いは気をつけてさえいれば大丈夫なんですよね、極論
でもそれを気をつけなくても大丈夫、にするための工夫なんです
あとわざわざ関数にすることで何をやってるか明確にしたいという意図もありますね
長らくメンテしてるスクリプト(だいたい肥大化する)をあとで見返したときに何やってるかわかんないのが一番困るわけで
将来の自分がウカツなことしないように間違いを起こさない設計にしときたいんですよね
自分がいちばんあてにならないので信用したらいかんのだ

# publicの話からそれちゃったんですが、気をつけるべきはpublicだけじゃないのでまぁなんかこんな話に

No.4622 2017/10/31(Tue) 10:04:04

Re: publicを使う時の判断基準 / さやか
しろまさ様、返信ありがとうございます。
Module内のpTaxの数字を変動させたい場合は、Public宣言をする事により、メイン上でCOMMON.pTaxで今回は、1.08→
2.00に変更し、AddTax関数の処理ができるという事ですね。


call C:\Users\Desktop\20171101104554

  COMMON.pTax = 2.00

Dim pay = Input("金額を入力", 500)
With  COMMON
  Ifb .AddTax(pay)
    MsgBox("[" + pay + "] の税込は [" + .ShowRec() + "]<#CR>※ 税率は " + COMMON.pTax + " %")
  Else
    MsgBox("[" + pay + "] 数字を入力して下さい")
  EndIf
EndWith

---------------------
// ここより別ファイルcall C:\Users\Desktop\20171101104554
Module COMMON
  Public  pTax = 1.08
  Dim rec1
  Function  AddTax(num)
    Ifb Val(num) <> ERR_VALUE
      rec1 = num * pTax
      Result = TRUE
    Else
      Result = FALSE
    EndIf
  FEnd
  Function  ShowRec()
    Result = rec1
  FEnd
EndModule

No.4637 2017/11/01(Wed) 10:53:48

Re: publicを使う時の判断基準 / さやか
stuncloud様、返信ありがとうございます。publicについてはなるだけ使わずに関数内を構成した方が良いという認識ができました。まだ、publicを使うかどうかの具体的判断基準は自分の中では明確ではありませんが、また一つ理解は進んだように思います。


call C:\Users\aruke\Desktop\ショットカット構文一覧\00_共通化.uws


// Dim res = COMMON.GetPiyo()
// print res
// パターン1 出力結果 piyoあいう(クラス内の関数の引数のdim宣言有り文字列入力済み)
クラス内にdim宣言した固定した文字列をメインで指定しなくても呼び出せる。

// ---------------------
// a="abc"
// b="xyz"
// Dim res = COMMON.GetPiyo1(a,b)
// print res
// パターン2 出力結果 abcxyz(クラス内の関数の引数のdim宣言有り)
クラス内の処理をメイン上で関数の引数である2つを指定する事により関数内の処理をさせる事ができる。

// ---------------------
a="abc"
b="xyz"
Dim res = COMMON.GetPiyo2(a,b)
print res
// パターン3 出力結果 abcxyz(クラス内の関数の引数のdim宣言無し)

---------------------
共通化.uws

 dim piyo = "piyo"
dim tesuo="あいう"
 function GetPiyo()
  result = piyo+tesuo
 fend
// ---------------------
 dim piyo1,tesuo1
 function GetPiyo1(piyo1,tesuo1)
  result = piyo1+tesuo1
 fend
---------------------
 function GetPiyo2(piyo2,tesuo2)
  result = piyo2+tesuo2
 fend
---------------------

No.4638 2017/11/01(Wed) 11:25:29

Re: publicを使う時の判断基準 / しゅん
個人的には、PUBLICはモジュール内でも使ったら負け。
負けても良い気分の時(ないと面倒な時)だけ使う。
ただ、モジュール内であれば、思ってもない更新は比較的おきにくいので、使う心理障壁は少しだけ低いです。

No.4660 2017/11/02(Thu) 16:09:04
iframe srcのリンクの押し方 / クッキー

下記RECIEで取得したリンクが動かず、ボタンが押せません。

IE.Navigate("javascript:registerDomain('ドメインを設定します。宜しいですか?');")
BusyWait(IE)

手動だと上記のボタンを押すと「OK」を促すPOPUPウインドウが出現します。
しかし、RECIEで取得した先ほどののリンクを再生すると、
ボタンも押せないし、POPアップウインドウ自体も出現しない状態です。。

該当のHTMLは下記だと思うのですが、どのようにUWSCを記述すればよいのでしょうか?
<!-- ytm - /body just before -->
<script type="text/javascript">
(function () {
var tagjs = document.createElement("script");
var s = document.getElementsByTagName("script")[0];
tagjs.async = true;
tagjs.src = "//s.yjtag.jp/tag.js#site=EJZe6pa,oJlB2M3";
s.parentNode.insertBefore(tagjs, s);
}());
</script>
<noscript>
<iframe src="//b.yjtag.jp/iframe?c=EJZe6pa,oJlB2M3" width="1" height="1" frameborder="0" scrolling="no" marginheight="0" marginwidth="0"></iframe>
</noscript>
<!-- /ytm - /body just before -->

No.4644 2017/11/01(Wed) 18:49:02

Re: iframe srcのリンクの押し方 / stuncloud
// 変数iframeにはiframeエレメントを入れておく
iframeDocument = iframe.contentWindow.document

iframeDocumentはiframe内のdocumentなので普段 ie.document に対してやるのと同じようにすればいいです
あと外部ドメインだと操作できなかったと思うけど今回は同じドメインぽいので多分大丈夫

もしかしたら
iframe.contentWindow.registerDomain('ドメインを設定します。宜しいですか?')
で動くかもしれない

No.4648 2017/11/02(Thu) 10:31:42
全1170件 [ ページ : << 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ... 117 >> ]