[ 掲示板に戻る ]

過去ログ閲覧モード

javascriptのボタンをクリックする方法 / クッキー
こんにちは
UWSCで作業を自動化するスクリプトを作成中です。
当方javascriptがわからず、またプログラミングはUWSCが初めてという状況です。
RECIEでマクロ記録したjavascriptのボタンを押す場所で、ボタンが押せないので解決方法を教えていただけますでしょうか?

■発生している問題・エラーメッセージ
下記REC IEで記録したスクリプトを再生すると、ボタンを押さず画面が止まってしまう。
//*********UWSCのソースコードここから*********
IELink(IE,"id=set-domain") // javascript:submitForm('domain', 'register');
BusyWait(IE)
//*********UWSCのソースコードここまで*********

//*********おしたいボタンの個所のHTML********

<form name="frm" method="post" class="PD-T-5">
<input type="hidden" name="token" value="71cc47d13829911bd9564038c5ed2aca22ba54c5" />
<div id="submit-form">
<a href="javascript:submitForm('domain', 'register');" id="set-domain">
<img src="domain/img/btn_doma_set.gif" alt="独自ドメイン設定" width="103" height="21" /></a>
<a href="javascript:removeAllDomain();" id="remove-domain"><img src="domain/img/btn_doma_del_dis.gif" alt="ドメイン解除" width="103" height="21" /></a>
</div>
</form>
//*********おしたいボタンの個所のHTMLここまで********
上記のalt=”独自ドメイン設定”というボタンを押したいのです。



WEBで検索しながら下記のスクリプトを書いてみたのですが、みたのですが、どうもうまく動きません。
【やってみたこと1】
imgtags = IE.document.getElementsByTagName("img")
for i = 0 to imgtags.length - 1
if imgtags.item(i).alt = "独自ドメイン設定" then
imgtags.item(i).click()
BusyWait(IE)
break
endif
next
【やってみたこと2】
imgtags = IE.document.getElementsById("set-domain")
imgtags.click()
BusyWait(IE)
break
next



どのようにしたらボタンをクリックできるようになるかご教授いただけないでしょうか?
よろしくお願いいたします。

No.4608 2017/10/30(Mon) 17:53:11

Re: javascriptのボタンをクリックする方法 / satocha
それ、ボタンじゃないですよね。一見ボタンに見えるのかもしれませんが
ただの画像で、imgタグにonclick属性もなさそう(どこか別のところで設定している可能性はあります)なので、その画像をクリックしても何も起きないようになっているようです。

そこを押すと次画面に遷移するように見えるのはその親要素の<a>タグの働きのようです。
<a href="javascript:submitForm('domain', 'register');" id="set-domain">

なので、スクリプトのIEオブジェクト変数名が「IE」だとして
IE.navigate("javascript:submitForm('domain', 'register');")
で次画面に進むはずです。

上のやり方はちょっと乱暴だと思うなら、
きちんとボタン(のようにみえる画像ではなくその親要素であるAタグ)をクリックする
のもありかも。
IE.document.getElementById("set-domain").click()

まずはUWSCでもJavascriptでもなくて、HTMLタグをおさらいしたらいいと思います。

No.4611 2017/10/30(Mon) 20:23:55

Re: javascriptのボタンをクリックする方法 / クッキー
satocha様
アドバイスありがとうございます!

>IE.navigate("javascript:submitForm('domain', 'register');")
ページ飛ぶことができました。

HTMLの勉強ももう一度しっかりおさらいしてみます。

No.4643 2017/11/01(Wed) 15:01:23
PDFをマウスで改ページさせるスプリクト / age
PDFを全体画面表示し、マウスの右クリックで改ページを行う
ため以下のような簡単なスプリクトを作成しました。

fukidasi("スプリクト実行中です。")

while -1
if GETKEYSTATE(VK_LBUTTON)=true then KBD(VK_DOWN,CLICK,1200)
if GETKEYSTATE(VK_RBUTTON)=true then break
wend

fukidasi("スプリクトを終了します。")
sleep(1)

上記のものですと、改ページが2ページ単位で行われるので、
その対処法に困っています。

お手数ですが、ご助言を頂けると幸いです。
宜しくお願いします。

No.4604 2017/10/29(Sun) 20:28:56

Re: PDFをマウスで改ページさせるスプリクト / Liners
// 単にタイミングだけの気もするが、一応試行錯誤してみた。
// Win10のリーダーでテスト。待ち時間を割り振り、
// 負荷を下げつつ反応を上げてみた。

fukidasi("スクリプト実行中です。")

while !GETKEYSTATE(VK_RBUTTON)
  sleep(0.2)
  if !GETKEYSTATE(VK_LBUTTON) then continue
  KBD(VK_DOWN,CLICK)
  sleep(1.0)
  GETKEYSTATE(VK_LBUTTON) // バッファを捨てる
wend

fukidasi("スクリプトを終了します。")
sleep(1)

No.4605 2017/10/30(Mon) 04:14:39

Re: PDFをマウスで改ページさせるスプリクト / age
ご回答ありがとうございました。

ご掲示頂いたスプリクトは、着眼点が違うな・・・と感じています。
そこでいくつか質問させてください。
GETKEYSTATEの関数は、入力があるまでスプリクトを待機するのでしょうか?
if文の行でスプリクトの実行が待機しないと、次行のキーボード操作に入ると思います。
待機せずにwhileループ内を回っている考えていたので、ご掲示の考え方ができませんでした。

又、今後 右クリックで前ページへ戻るようにしたいのですが、右クリックを押すと
ポップアップメニューが表示されます。
このポップアップメニューを一時的に出さないように、スプリクトでコントロールは
できるのでしょうか?

No.4642 2017/11/01(Wed) 14:45:43
javascriptのボタンでHidden情報を取得し画面遷移する方法 / クッキー
こんにちは

REC IEがjavascriptのボタンリンクで遷移するページに飛ばず、RECIEでスクリプトの記録ができないのでやり方を教えていただけますでしょうか?

【REC IEで記録ができた最初のページのJavascriptのボタン】
<input name="domain_status" type="radio" id="radio3" value="3" checked="checked" onClick="Form_ac(' 3')" />
<td><input name="main_domain[3]" type="text" id="maindomain3" value="fjfjfjsjf.com" maxlength="64" /></td>
<input name="mode" id="mode" type="hidden" value="check" />
<a href="javascript:void(0)" onClick="Form_send('form_add','','');"><img src="images/b_mnext.gif" width="111" height="38" border="0" /></a>


こちらの情報を取り込んだボタンを押す動作はRECIEで記録すると下記のようになります。
//IE.Navigate("https://users.extrem.jp/manage/domain_add.php",0,"",Encode("domain_status=3&main_domain%5B3%5D=fjfjfjsjf.com&mode=check",CODE_BYTEARRAY),"Referer: https://users.extrem.jp/manage/domain_add.php<#CR>Content-Type: application/x-www-form-urlencoded<#CR>")


ボタンを押して次のページに飛ぶと、
下記の同じアドレスのままで、
https://users.extrem.jp/manage/domain_add.php
画面表示内容の情報が変わっております。
しかし、RECIEでは最初のボタンを押す動作を記録後画面遷移しなかったので次のページのスクリプトが記録できませんでした。
HTMLで要素の検証を、似た感じで情報を入れてみたのですが、
うまくいきません。


【確認ボタンがうまく押せないページの情報】
<input name="path" type="hidden" value="fjfjfjsjf_com" />
<input name="path_select" type="hidden" value="2" />
<input name="domain_status" type="hidden" value="3" />
<input name="mode" type="hidden" value="confirm" />
<input name="sub_domain[3]" type="hidden" value=""/>
<input name="main_domain[3]" type="hidden" value="fjfjfjsjf.com"/>
<a href="javascript:void(0)" onClick="Form_send('formmake','*****ドメインの追加*****\n\nこの内容で「fjfjfjsjf.com」を設定します。\n設定完了までに少し時間がかかりますのでOKをクリックしてからそのままお待ちください。','1')"><img src="images/b_mdo.gif" width="111" height="38" border="0" /></a>
</form>


手動でやるとこのjavascriptリンクが入っている確認ボタンを押すと、OKボタンを押すポップアップが出現、OKを押すと、ドメイン登録中という読み込みが始まり、読み込みが終わるとドメイン登録完了しましたというページが表示されます。


//****ボタンを押すために作成してみたUWSCスクリプト*****
IE.Navigate("https://users.extrem.jp/manage/domain_add.php","*****ドメインの追加*****\n\nこの内容で「fjfjfjsjf.com」を設定します。\n設定完了までに少し時間がかかりますのでOKをクリックしてからそのままお待ちください。","1",Encode("path=fjfjfjsjf_com&path_select=2&domain_status=3&sub_domain%5B3%5D=0&main_domain%5B3%5D=fjfjfjsjf_com&mode=cofirm",CODE_BYTEARRAY),"Referer: https://users.extrem.jp/manage/domain_add.php<#CR>Content-Type: application/x-www-form-urlencoded<#CR>")
BusyWait()


上記スクリプトがうまく動かず、ドメイン登録されないのです。

もし解決方法がわかればご教授ください。

よろしくお願いいたします。

No.4641 2017/11/01(Wed) 14:43:50
javascriptのボタンをクリックする方法とENCODEの場所で変数を使う方法 / クッキー
こんにちは
UWSCとプログラミング自体が初心者のものです。
ドメイン登録の自動化をしたいと思っております。

REC IEで下記のようなドメイン登録のリンクを取得しました。


IESetData(IE,True,"domain_status","3") // RADIO
IESetData(IE,"fjfjfjsjf.com","main_domain[3]") // TEXT
IE.Navigate("https://users.aaa.jp/manage/domain_add.php",0,"",Encode("domain_status=3&main_domain%5B3%5D=fjfjfjsjf.com&mode=check",CODE_BYTEARRAY),"Referer: https://users.aaa.jp/manage/domain_add.php<#CR>Content-Type: application/x-www-form-urlencoded<#CR>")
BusyWait()

上記のIE.NAVIGATEのリンクをクリックすると次の画面に遷移するはずなのですが、メイン名に変数を利用すると画面遷移しません。
上記の「fjfjfjsjf.com」という場所を変数にして処理をしたいのです。

//*********ドメイン名を変数にしたスクリプトここから**********
DOMEIN = fjfjfjsjf.com
IESetData(IE,True,"domain_status","3") // RADIO
IESetData(IE,"DOMAIN","main_domain[3]") // TEXT
IE.Navigate("https://users.aaa.jp/manage/domain_add.php",0,"",Encode("domain_status=3&main_domain%5B3%5D=" +DOMAIN+"&mode=check",CODE_BYTEARRAY),"Referer: https://users.aaa.jp/manage/domain_add.php<#CR>Content-Type: application/x-www-form-urlencoded<#CR>")
BusyWait()

//*********ドメイン名を変数にしたスクリプトここまで**********

IE.NAVIGATEのEncodeの場所で、変数にしたドメイン名を+で文字連結してつなげたのですが、
リンククリックするとIESetDataの場所(IESetData(IE,"DOMAIN","main_domain[3]") DOMAINという文字が入ってしまい、画面が遷移しません。


//*********クリックしたいボタンのHTMLは下記です。**********
<input name="mode" id="mode" type="hidden" value="check" />
<a href="javascript:void(0)" onClick="Form_send('form_add','','');"><img src="images/b_mnext.gif" width="111" height="38" border="0" /></a>

//*********クリックしたいボタンのHTMLここまで**********



UWSCではどのように記述すればよいのでしょうか?
ご教授いただければ幸いです。
どうぞよろしくお願いいたします。

No.4607 2017/10/30(Mon) 17:44:14

Re: javascriptのボタンをクリックする方法とENCODEの場所で変数を使う方法 / satocha
まずはケアレスミス
スペルの誤りとか引用符抜けを直してから動かすといいと思います
>DOMEIN = fjfjfjsjf.com

No.4615 2017/10/30(Mon) 21:09:37

Re: javascriptのボタンをクリックする方法とENCODEの場所で変数を使う方法 / クッキー
>まずはケアレスミス
>スペルの誤りとか引用符抜けを直してから動かすといいと思います
>>DOMEIN = fjfjfjsjf.com

確かに!スペルミスしておりました。。。。
上手く動きました。
ありがとうございます。

No.4640 2017/11/01(Wed) 14:09:50
配列サイズの調整関数について / さやか
配列サイズを最初に大きく宣言したものをforでデータをいれていき、余分なサイズ分を削除する関数を利用したのですが、次元すうが合いませんと表示されます。何か良い方法はないでしょうか?

(メイン)

CALL C:\Users\Desktop\共通化.uws
dim 配列1[20]

for i = 0 to 10
配列1[i]=i
next

配列1=COMMON.hai_sizeawaseru(配列1)
print "配列1サイズは"+resize(配列1)//配列サイズを10にしたい
---------------------
下記は、classファイルに入力。

function hai_sizeawaseru(配列1[])
b=join(配列1,"<#CR>",true)

a1=split(b,"<#CR>")//a1の配列変数作成、現在入っているデータサイズを得る為
result=resize(配列1,resize(a1))//aの配列変数を現在のデータ配列サイズresize(a1)に変更
fend

No.4624 2017/10/31(Tue) 10:33:09

Re: 配列サイズの調整関数について / しろまさ
resize(配列1,resize(a1)) の戻値は配列の上限値。配列ではない。

配列を戻したい場合は参照引数を使用する。
function hai_sizeawaseru(var 配列1[])

No.4627 2017/10/31(Tue) 11:16:49

Re: 配列サイズの調整関数について / さやか
メインでprocedureを書いた場合だとちゃんと配列1サイズは10が出力される。なぜ、COMMON.hai_sizeawaseru(配列1)がうまくいかないのでしょうか?
---------------------


CALL C:\Users\aruke\Desktop\ショットカット構文一覧\00_共通化.uws
dim 配列1[20]

for i = 0 to 10
配列1[i]=i
next

hai_sizeawaseru(配列1)
print "配列1サイズは"+resize(配列1)


procedure hai_sizeawaseru(var 配列1[])
b=join(配列1,"<#CR>",true)

a1=split(b,"<#CR>")//a1の配列1作成、現在入っているデータサイズを得る為
resize(配列1,resize(a1))//aの配列変数を現在のデータ配列サイズresize(a1)に変更

fend
---------------------
×
CALL C:\Users\Desktop共通化.uws
dim 配列1[20]

for i = 0 to 10
配列1[i]=i
next

COMMON.hai_sizeawaseru(配列1)
print "配列1サイズは"+resize(配列1)

//次元数が合いません。b=join(配列1,"<#CR>",true)と表示される。
---------------------
共通化.uws

procedure hai_sizeawaseru(var 配列1[])
b=join(配列1,"<#CR>",true)

a1=split(b,"<#CR>")//a1の配列1作成、現在入っているデータサイズを得る為
resize(配列1,resize(a1))//aの配列変数を現在のデータ配列サイズresize(a1)に変更
fend
---------------------

No.4630 2017/10/31(Tue) 18:43:55

Re: 配列サイズの調整関数について / しろまさ
// 不明ですね。こちらでは正しく表示されます。
// 今までの話の流れで、どこかのPublic消し忘れてるとかありません?

dim 配列1[20]

for i = 0 to 10
配列1[i]=i
next

COMMON.hai_sizeawaseru(配列1)
print "配列1サイズは"+resize(配列1)

//次元数が合いません。b=join(配列1,"<#CR>",true)と表示される。
Module COMMON
procedure hai_sizeawaseru(var 配列1[])
b=join(配列1,"<#CR>",true)

a1=split(b,"<#CR>")//a1の配列1作成、現在入っているデータサイズを得る為
resize(配列1,resize(a1))//aの配列変数を現在のデータ配列サイズresize(a1)に変更
fend
EndModule

No.4631 2017/10/31(Tue) 20:11:02

Re: 配列サイズの調整関数について / さやか
しろまさ様、返信ありがとうございます。
共通化.uws内に色々な関数を入力しているのですが、下記を修正したら解決しました。
procedure hai_sizeawaseru(var 配列1[])前にも色々関数が入力されていて、変数名をbやa1で安易に決めて入力していたのでこれが影響していたようです。
共通化.uws内の変数名とかも慎重に決める必要があると認識できたのですが、皆様は変数名はどのように決めていますか?
パスは、path、ファイル名はfileとかガチガチに決めて使用されていますか?

b=join(配列1,"<#CR>",true)→b_naiyou=join(配列1,"<#CR>",true) //変数名を変更

a1=split(b_naiyou,"<#CR>")//→a1hai=split(b_naiyou,"<#CR>") //変数名を変更

No.4632 2017/10/31(Tue) 21:53:25

Re: 配列サイズの調整関数について / しろまさ
私もそういう問題に苦しんだので、あまりメイングローバルは使わなくしたのです^^

それこそ好みの世界ですが、最近のマイルールは
 dn_ ディレクトリ名
 fn_ ファイル名
 dp_ ディレクトリパス
 fp_ ファイルパス
 up_ uwsパス
 ep_ Exeパス
 a_ 引数
 o_ オブジェクト
 el_ エレメント
 s_ 文字列
 n_ 数字
等々、頭に種類 _ より下は識別できる略名を付けてます。

更にModule内変数は上記に加え頭に _ を付けてます(しゅんさんのマネ)

No.4634 2017/11/01(Wed) 08:25:52

Re: 配列サイズの調整関数について / さやか
スクリプトを書く時に変数って面倒なので,aとか1文字で書いてしまうくせがあるので、しろまさ様のマイルール参考にさせて頂きます。ありがとうございました。
No.4636 2017/11/01(Wed) 10:43:16
HTML形式のファイル表示からinnerTextで文字を取り出す方法 / リキュール
以下の方法でHTMLのページは表示されますがエラーとなります。

IE = CreateOLEObj("InternetExplorer.Application")
IE.Visible = True
IE.Navigate("C:\Users\user\Desktop\test.html")
Sleep(2)
data = IE.document.body.innerText //comエラー
print data

以下はtest.htmlの内容です。
<HTML>
<HEAD>
</HEAD>
<BODY>
<table>
<tr>
<td>
<a>AAA<a/>
<td/>
<tr/>
<table/>
</BODY>
</HTML>

No.4616 2017/10/30(Mon) 22:26:53

Re: HTML形式のファイル表示からinnerTextで文字を取り出す方法 / stuncloud
こちらで試したところ特に問題ないのですが、なんでしょうね
ときに
> <a>AAA<a/>
> <td/>
> <tr/>
> <table/>

の閉じタグおかしいです
後ろにスラッシュつけると意味が変わってしまう

No.4623 2017/10/31(Tue) 10:17:13

Re: HTML形式のファイル表示からinnerTextで文字を取り出す方法 / リキュール
stuncloud さん、お世話になります。
単純な記載間違いがありましたので以下に変更しました。
> <a>AAA<a/> → <a>AAA</a>
> <td/> → </td>
> <tr/> → </tr>
> <table/> → </table>

しかしエラーが出ます。Windoew7,IE11,uwsc Pro Ver 5.3.0.2 です。
data = IE.document.body.innerText //com Error:例外エラーが発生しました。

No.4626 2017/10/31(Tue) 10:57:36

Re: HTML形式のファイル表示からinnerTextで文字を取り出す方法 / stuncloud
Windows 10では大丈夫だったのでWindows 7環境を準備して試してみたら再現しました
エラー発生箇所でどうもIEと切り離されてるような感じです (quit()とかメソッド実行してみるとそのようなエラーが出る)
なので

try
 dummy = IE.document // エラーならIE取り直し
except
 IE = getactiveoleobj("InternetExplorer.Application")
endtry

のようにしてエラーになる場合のみgetactiveoleobj()することでその場しのぎにはなります

No.4628 2017/10/31(Tue) 12:31:59

Re: HTML形式のファイル表示からinnerTextで文字を取り出す方法 / リキュール
stuncloud さん、お世話になります。

動作しました!!
悩んでいた問題が解決し、先に進めそうです。
ありがとうございました。

No.4629 2017/10/31(Tue) 15:46:15
call、execを使う時の判断基準 / 荒鷲
call、execって両方ともファイルを呼び出して使用するとは思うのですが、いまいち使い分けが分かりません。call C:\User\Desktop\a(b[0],b[1],b[2])引数で配列をparamに渡しています。execは、メイン処理したスクリプトとを切り離して単独で使用するようにしています。メインで使用した変数やpublicとも切り離したい場合にexecを利用するという使い方で会っていますか?

exec("<#DBL>" + GET_UWSC_DIR + "\uwsc.exe<#DBL> <#DBL>" + 変数パス + "<#DBL>")

No.4617 2017/10/30(Mon) 22:49:53

Re: call、execを使う時の判断基準 / しろまさ
まず callはuws限定 execは他プログラムも起動できる ですよね?

で、execでuwsを起動するメリットは「プロセスを別にできること」です。
uwscのBox関数と並行処理をしたいときや、切り離したプロセスを単独終了させたいときなど。
メインPublicを多用するならそれと切り離したいというのもありかもしれませんね。

例えばランチャーからuwsを起動するなんてのも、
別プロセスにしないとメイン処理が停止するので都合悪いですよね。

No.4621 2017/10/31(Tue) 09:10:45

Re: call、execを使う時の判断基準 / 荒鷲
しろまさ様、返信ありがとうございます。

>>execは他プログラムも起動できる
たしかに他プログラムも起動できるっていうのがありますね。
これを忘れていました。


>>プロセスを別にできること
メインで利用した変数を全てリセットするイメージで私もexecを利用しています。

No.4625 2017/10/31(Tue) 10:41:22
配列サイズを大きい方に合わせる条件式について / さやか
配列サイズが5と3という配列があり、条件式で配列変数のaとbのサイズが違ったら、大きい方に合わせる処理の条件式の書き方が分かりません。何か良い方法ないでしょうか?resizeでできるような気がするんですが。
a[5]
b[3]

if length(a)<>length(b) then

else

endif

No.4609 2017/10/30(Mon) 20:03:07

Re: 配列サイズを大きい方に合わせる条件式について / さやか
よく考えてみたら下記で考えました。
これで合ってますか?

if length(a)<length(b) then
resize(a,length(b))
else
resize(b,length(a))
endif

No.4612 2017/10/30(Mon) 20:41:05

Re: 配列サイズを大きい方に合わせる条件式について / satocha
?@まずは二つの数を引数として大きい方を返す関数を考えてみましょう。
関数名をlargerとすると
function larger(a,b)
 何かほにゃらら
 result=ほにゃらら
fend

?A次に「resizeでできるような気がするんで」ヘルプのresizeを見ます。ふむふむ、なるほど
// 配列のサイズを変更する
戻値 = RESIZE( 配列変数, [サイズ] )
引数
 配列変数: 配列変数名
 サイズ: 配列の上限値 (多次元配列の場合は一番上の次元に対してのみ)
戻値
 配列の上限値を返す   (配列サイズのみを得る場合に第2引数は省略)

?Bいよいよ、配列の長さをそろえよう。
配列aも配列bも長い方にリサイズしちゃえばいいんじゃない。片方は無駄な工程になるけどプログラミングはむしろラクそうだし。
長い方=larger(length(a),length(b))
RESIZE( a,長い方 )
RESIZE( b,長い方 )
できたぁ!

ってほにゃららがわからない?
ヒント
aとbを比較して大きい方を返す

No.4613 2017/10/30(Mon) 20:52:11

Re: 配列サイズを大きい方に合わせる条件式について / satocha
合ってるかどうかは動かせば分かる(合ってるけど)。
すごい。できるじゃん。
そういうわけで、前の書き込みは無視しておいてください。

No.4614 2017/10/30(Mon) 20:56:11

Re: 配列サイズを大きい方に合わせる条件式について / さやか
satocha、返信ありがとうございます。

検証しました、RESIZEで考えた方が良いですね。

dim a[3],b[5]

print "1,aの配列変数サイズは"+resize(a)
print "2,bの配列変数サイズは"+resize(b)
if resize(a)<resize(b) then
msgbox(1)
resize(a,resize(b))
else
msgbox(2)
resize(b,resize(a))
endif
// print "aの配列変数サイズは"+length(a)
// print "bの配列変数サイズは"+length(b)

print "1a,aの配列変数サイズは"+resize(a)
print "2a,bの配列変数サイズは"+resize(b)



textblock
1,aの配列変数サイズは3
2,bの配列変数サイズは5
1a,aの配列変数サイズは5
2a,bの配列変数サイズは5
endtextblock

No.4618 2017/10/30(Mon) 23:09:47
sethotkeyでキーボードにある左のSHIFTキーでのみ起動させる方法 / さやか
sethotkeyでキーボードにある左のSHIFTキーと右のSHIFTキー
を制御する事ができるでしょうか?
したい処理が左のSHIFTキーを押すとyuza2の関数を起動させるようにしたいです。
何か良い方法ないでしょうか?

sethotkey(VK_SHIFT, MOD_SHIFT, "yuza2")

No.4601 2017/10/27(Fri) 13:48:29

Re: sethotkeyでキーボードにある左のSHIFTキーでのみ起動させる方法 / さやか
追記)

仮想KEYコードリファレンスでVK_RSHIFTで試してみましたがうまくいきません。
下記のように書きました。
sethotkey(VK_RSHIFT, MOD_SHIFT, "yuza2")

No.4602 2017/10/27(Fri) 14:29:41

Re: sethotkeyでキーボードにある左のSHIFTキーでのみ起動させる方法 / stuncloud
たぶんsethotkeyだとVK_LSHIFT、VK_RSHIFTが取れないです
なのでVK_SHIFTで呼ばれた関数内でgetkeystateするしかないかな、と

sethotkey(VK_SHIFT, MOD_SHIFT, "shift")

procedure shift()
 select TRUE
  case getkeystate(VK_LSHIFT)
   msgbox("左SHIFT")
  case getkeystate(VK_RSHIFT)
   msgbox("右SHIFT")
 selend
fend

No.4603 2017/10/27(Fri) 15:54:36

Re: sethotkeyでキーボードにある左のSHIFTキーでのみ起動させる方法 / さやか
stuncloud様、selectで書くとは思いつきませんでした。これは便利ですね。
ありがとうございました。
while true
 select TRUE
  case getkeystate(VK_ALT)

  case getkeystate(VK_RSHIFT)

    case getkeystate(VK_F6)
wend

No.4610 2017/10/30(Mon) 20:06:51
2重ループの抜け方かgetElemetsbyNameの共通Name取得方法 / クッキー
こんにちは
UWSCで初めてプログラミングスクリプトを開始させた初心者です。

ドメインをサーバーに登録するという作業を自動化したいと思っております。

下記のようなHTMLがあり、テキストボックスのValueが空欄であれば1回だけドメインを入れたいです。
<INPUT TYPE="text" SIZE="30" NAME="mydomain1" VALUE="aaaa.com">
<INPUT TYPE="text" SIZE="30" NAME="mydomain2" VALUE="bbb.com">
<INPUT TYPE="text" SIZE="30" NAME="mydomain3" VALUE="">
<INPUT TYPE="text" SIZE="30" NAME="mydomain4" VALUE="">
空欄部分に文字を入れたら、サブミットボタンをおします。

テキストボックスへのINPUTはmydomainは最大9999まで入力可能で入力フォームの空欄が下に続いています。

mydomainの部分が連番なので、下記のようなスクリプトを作成しました。
しかし、この書き方だと最初に発見した空欄にドメインを入力した後にまた次の空欄を探しに行って、9999までこの処理を続けてしまいます。
空欄を発見し1回ドメインを1回入力しSUBMITボタンをしたら、この処理を終わりにしたいのですが、外側のFor ループの抜け方がわかりません。
どのように記述すればよいでしょうか?

もしくはmydomainを含むName属性をgetelementbynameで取得するという記述ができれば外側のfor i = 0 to 9999のループがいらなくなると思うのですが、そのやり方もわかりません。

何か良いやり方をご教授いただければ幸いです。
宜しくお願いいたします。

//*******作成したスクリプト**************
for i = 0 to 9999
i=0
NAME = "mydomain" + i
inputclasses = IE.document.getElementsByName(NAME)

for i = 0 to inputclasses.length - 1
NAME = "mydomain" + i
inputclasses = IE.document.getElementsByName(NAME)

if inputclasses.item(i).value = "" then
inputclasses.item(i).value ="abbbb.com" //ドメイを記入
IESetData(IE,True,"domain2") // SUBMIT ドメイン設定クリックする
break
Endif
next
next

//*******作成したスクリプト終わり**************

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