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

procedure内で配列ファイルの内容を取得してfor文で回し、指定のファイルに書込 / ジンギスカン
配列ファイルに東京<#CR>名古屋<#CR>大阪とあります。
procedure内で配列ファイルの内容を取得してfor文で回し、指定のファイルに書込をしたいのですが、1つ目の東京がすべて書込になってしまいます。下記のようなコードでスレッドを利用しています。


THREAD ExecuteC()


FOR y = 1 TO 8 STEP 2

path=url1+y+url2
Dim IE = COMMON.cre3(path)


文字列全体=IE.document.body.innerhtml

IE.quit
gettime()
現在の日付=G_TIME_YY+"/"+G_TIME_MM+"/"+G_TIME_DD

Public regvb=CREATEOLEOBJ("VBScript.RegExp")

//書込ファイル
fid1="C:\Users\aruke\Desktop\偶数.html"

file1 = FOPEN(fid1, F_READ or F_WRITE8)

Pattern="パターン名"

Matches=regvb_Execute(文字列全体, Pattern)

for i = 0 to Matches.count-1
FPUT(file1, res[count]+":"+Matches.Item(i).SubMatches(0))
next

FCLOSE(file1)
count=count+2
next

file1 = FOPEN(fid1, F_READ or F_WRITE8)
moji=fget(file1,-2)
moji = REPLACE(moji, "<#CR>", "")
fput(file1,moji,F_ALLTEXT)
fclose(file1)


procedure ExecuteC()

path="C:\Users\Desktop\配列ファイル"


fid = FOPEN(path,F_READ or F_WRITE)
list = FGET(fid,F_LINECOUNT) //---ファイル内の行数を返す
Dim アカウント[list] //---配列の宣言
count=1
for i = 0 to list-1
 アカウント[i] = FGET(fid,count) //---配列:アカウントに挿入
count=count+1
next
FCLOSE(fid)
res = slice(アカウント, 0, length(アカウント)-1)

FOR i = 3 TO 8 STEP 2 //357

path=url1+i

TRY
   IE1 = CREATEOLEOBJ("InternetExplorer.Application")
  EXCEPT
   EXEC("C:\Program Files\Internet Explorer\iexplore.exe")
   IE1 = GETACTIVEOLEOBJ("InternetExplorer.Application")
  ENDTRY
IE1.visible = true

IE1.navigate(path)

SLEEP(0.5)
ClkItem(GetID("Windows", "#32770", 1), "OK")
ClkItem(GetID("Windows", "#32770", 1), "このページから移動")
ClkItem(GetID("Windows", "#32770", 1), "プログラムを終了します")
ClkItem(GetID("Windows", "#32770", 1), "プログラムを再起動します")
ClkItem(GetID("ページからのメッセージ", "#32770", 1), "OK")
ClkItem(GetID("ページからのメッセージ", "#32770", 1), "このページから移動")
ClkItem(GetID("ページからのメッセージ", "#32770", 1), "プログラムを終了します")
ClkItem(GetID("ページからのメッセージ", "#32770", 1), "プログラムを再起動します")
CONST TIME_OUT = 60
tm = Gettime()
REPEAT
SLEEP(1)
ifb Gettime() - tm > TIME_OUT
break
endif
UNTIL (! IE1.BUSY) AND (IE1.READYSTATE=4)
SLEEP(0.5)


文字列全体=IE1.document.body.innerhtml


Public regvb=CREATEOLEOBJ("VBScript.RegExp")

//書込ファイル
fid11="C:\Users\aruke\Desktop\奇数.html"


file11 = FOPEN(fid11, F_READ or F_WRITE8)

Pattern="Pattern名"

Matches=regvb_Execute(文字列全体, Pattern)

count1=1

for i = 0 to Matches.count-1
FPUT(file11, res[count1]+":"+Matches.Item(i).SubMatches(0))
next

FCLOSE(file11)

count1=count1+2

NEXT     
fclose(file11)
fend

//正規表現
Function regvb_Execute(str, Pattern, IgnoreCase=TRUE, Global=TRUE)
regvb.IgnoreCase=IgnoreCase
regvb.Global=Global
regvb.Pattern=Pattern
Matches=regvb.Execute(str)
Result=Matches
Fend

No.3822 2017/05/01(Mon) 12:05:29
(No Subject) / しんじ
fileID = FOPEN("sample.txt", F_READ)
str = FGET(fileID, 1)
KBD(VK_ + str)
str2 = FGET(fileID, 2)
KBD(VK_ + str2)
str3 = FGET(fileID, 3)
KBD(VK_ + str3)
str4 = FGET(fileID, 4)
KBD(VK_ + str4)
str5 = FGET(fileID, 5)
KBD(VK_ + str5)
FCLOSE(fileID)

TXT内容
H
E
L
L
O

原理的にはこのようなことをしたいのですが
どうすればいいかわかりません
よろしければご回答よろしくお願いします
コピペではなくKBDのようなクリックでお願いします

No.3816 2017/04/28(Fri) 21:05:42

Re: / 俄プログラマー
SLEEP(3) //必要に応じて

fileID = FOPEN("sample.txt", F_READ)
for i = 1 to FGET(fileID, -1)
 KBD(ASC(FGET(fileID,i)))
next
FCLOSE(fileID)

No.3817 2017/04/29(Sat) 02:04:41

Re: / しんじ
俄プログラマー様
ありがとうございます
私の願った通りの動きでした

No.3819 2017/04/29(Sat) 17:36:31
ポップアップが閉じれません。 / まりも
使用環境はwin10
IE11.106614393
を使用してIEでUWSCマクロを作っているのですが、
よくあるconfirmのポップアップが閉じれなくて困っています。

PROを使用していてデバッガを使っているのですが、
ポップアップが出ると固まります。

ポップアップは「Web ページからのメッセージ」で#32770の
よくあるやつなのです。

登録ボタンのようなものを押すと、確認としてポップアップが出るのですが、
UWSCがボタンを押した後、固まり。

実際のポップアップを押すと再度動きはじめます。

ポップアップのjavascriptは以下の内容でした。
function fnConfirm() {
var msg = "この内容で登録しても宜しいでしょうか?\n";
if(window.confirm(msg)){
return true;
}
return false;
}

UWSC抜粋
PRINT "check"
IESETDATA( IE,1,"subm")
PRINT "check2"

IESETDATA( IE,1,"subm")
でUWSCが固まり、画面のポップアップのキャンセルを押すと
PRINT "check02"が確認できます。

どのように対応できるか、お教えいただけませんでしょうか。
よろしくお願いいたします。

No.3812 2017/04/28(Fri) 13:44:58

Re: ポップアップが閉じれません。 / routa
FAQを見ましょう。
IEの操作(COM)にて、ダイアログが出ると動作が停止する  #N25

No.3815 2017/04/28(Fri) 20:09:55

Re: ポップアップが閉じれません。 / まりも
見落としていました。

早速ためしたところ問題なく動きました。

ありがとうございました。

No.3818 2017/04/29(Sat) 10:42:52
処理の分岐 / じぇす
画像Lを認識、1分間その画像を認識できれば処理A、1分以内に消えたら処理Bに移るようにするにはどのように書けばいいのでしょうか?
No.3810 2017/04/28(Fri) 06:28:40

Re: 処理の分岐 / しゅん
e=GETTIME()+60;WHILE (GETTIME()<e)*CHKIMG("画像L.bmp");WEND;MSGBOX("処理"+CHR(65+!CHKIMG("画像L.bmp")))


// すみません、上記は冗談です。
// 通常は、下のように書きます。
// 基本、自分で書いたスクリプトのない回答には答えない主義ですが、ちょっといたずらしたくなったもので、、、

DIM et = GETTIME() + 60
DIM ok = TRUE

WHILE (GETTIME() < et) AND ok
  ok = CHKIMG("画像L.bmp")
  SLEEP(1)
WEND

IFB ok THEN
  MSGBOX("処理A")
ELSE
  MSGBOX("処理B")
ENDIF

No.3811 2017/04/28(Fri) 12:05:53

Re: 処理の分岐 / じぇす
なるほど、ありがとうございます!
参考にして使います!

No.3813 2017/04/28(Fri) 13:56:22
自動実行(?) / ナベコウ
UWSC本体を閉じていても、FAIL not found となり、ファイル名の場所が記されるエラーメッセージが出てきますがそれが連続で5回も出てきて邪魔で仕方ありません。改善法お願いします…
No.3808 2017/04/27(Thu) 23:06:06

Re: 自動実行(?) / ナベコウ
すみませんやっぱり大丈夫です
No.3809 2017/04/27(Thu) 23:07:16
GETTIMEとIFBについて / ゲン
IFBを使い現在時刻が例えば7時なら実行しそうでない場合は実行しない
というものを作りたいのですがうまくいきません
GETTIME()
time = "" + G_TIME_HH2 + ":" + G_TIME_NN2
IFB (ここが不明)
MSGBOX("7時です")

ELSE

MSGBOX("7時ではありません")

ENDIF

指定時刻と現在時刻との比較の仕方がわかりません
よろしければ教えてくださいよろしくお願いします

No.3804 2017/04/26(Wed) 19:14:56

Re: GETTIMEとIFBについて / ゲン
比較時刻は複数存在する場合です
No.3805 2017/04/26(Wed) 19:24:22

Re: GETTIMEとIFBについて / koi
確認してません

他の部分の 処理内容によっては
その判定が何回も繰り返されて問題になる
とか言った話が出る可能性は考えられますが

ifB (time="07:00")   で判断できませんか?

No.3806 2017/04/26(Wed) 21:27:05

Re: GETTIMEとIFBについて / ゲン
なるほどありがとうございます
思った通りの操作ができました

No.3807 2017/04/27(Thu) 01:38:54
【実現可能確認】exe形式で配布したモジュールについて / たなかたろう
こんにちは。

以下のことが実現可能かどうか教えていただけますか?

・月初めに(1日)ライセンスパスワードを聞かれ、
合致していれば継続して使え、合致していなければそのモジュールは使用できなくなる

・上記が可能であれば、ライセンス管理はネットワークを通じて認証が可能か
(確認がローカルだけではないか)

よろしくお願いします

No.3798 2017/04/25(Tue) 16:53:45

Re: 【実現可能確認】exe形式で配布したモジュールについて / stuncloud
どちらも可能でしょう

ただ、実装方法については回答者側としても迂闊なことを言えない類のものなので、ここでは回答を得られないと思ったほうが良いでしょう
一筋縄ではいかないでしょうががんばってくださいね!

No.3799 2017/04/25(Tue) 17:41:30

Re: 【実現可能確認】exe形式で配布したモジュールについて / たなかたろう
実現可能かだけ知りたかったので、大丈夫です。

ご回答ありがとうございます。

No.3803 2017/04/26(Wed) 10:26:56
DIVで作成されたフォーム上のコントロールを制御する方法 / POM
ログイン状態でTwitterのタイムラインを見ると投稿時間が表示されています。
その投稿時間をクリックすると同一画面上にポップアップウィンドウっぽいものが開き、
返信をツイートなどと表示さます。

その「返信をツイート」をマウスでクリックすると表示内容が変わり、
返信用のテキストボックスが表示され文字入力が可能になったり、
写真添付や、返信ボタンをクリックできるようになります。

IE = CREATEOLEOBJ("InternetExplorer.Application")
で作成されたIEオブジェクトで、
上記の各操作を、IEオブジェクトで実現する良い方法はないでしょうか?

これまでに試したことは、Pro版のWeb記録からの再生では制御できず、
スクリプト上で、
IE.Document.Forms(xx).Item(xx).Value="hoge"
とセットした所、ポップアップフォーム上のテキスト入力エリアに
セットした文字列が表示されていましたが、入力可能な文字数の表示が減少しなかったため、
IE.Document.Forms(xx).Item(xx).fireEvent(xxx)としても変化はありませんでした。
xxxはonKeyClick,onLoad,onClick,onSelect,onKeyPressを試しましたがエラーになるか、
通っても変化がないかのどちらかでした。

おそらく fireEvent("xxxx") で、JavaScriptのイベントを強制的に発火させれば良いのかもしれませんが、
"xxxx" の部分の調べ方がわかりません。


IE.Document.Forms(xx).Item(xx).ValueでセットしてIE.Document.Forms(xx).Submitで「えいやっ!」程度の知識で、最近のweb事情に関して知識不足なのは痛感しています。
「〜の本を読め」等のご意見でも構いません。
解決に繋がる良い案がありましたらご教授頂けるとありがたいです。

No.3791 2017/04/24(Mon) 17:03:06

追記: / POM
色々長々と書いていますが、要約すると

CSSで書かれたポップアップウィンドウ上のコントロールっぽいものを
UWSCでアレコレしたいと言うことです。

Twitter API叩いて投稿等したいというソッチ系ではないです。

No.3792 2017/04/24(Mon) 17:20:56

Re: DIVで作成されたフォーム上のコントロールを制御する方法 / stuncloud
DOM操作を覚えたほうが良さそうですね
エレメントの操作にしても
> Document.Forms(xx).Item(xx)
でやるのは悪手すぎます
getElement(s)By***系のメソッドやquerySelector(All)を使いましょう
あとはF12の開発者ツールの使い方を覚えれば、実際にコードを書く前にブラウザ上でDOM操作を試せるので、まずはそこでいじり倒すのが良いでしょう
fireEventだとかは…一旦忘れましょう

No.3794 2017/04/24(Mon) 18:45:34

Re: DIVで作成されたフォーム上のコントロールを制御する方法 / stuncloud
ちょっと時間できたので見てみました

「返信をツイート」の部分
見えてる部分はcontenteditableなdivですが、formで送られる実体はtextareaのようです
(div部分に書き込まれた文字がtextareaにも書かれる)
で、そのtextareaに書き込んでform.submit()すれば終わりかな、と思ったけどそううまくは行かず

その後いろいろやってみます
が、やっぱりtwitterくらいになるとDOMいじるのは相当骨が折れますね
しかしUWSCです、UWSCらしく解決できました

イベント発火関連は素の操作でできるならそれをするに限るので、例えばsckeyを使うのが実は楽だったりします
今回もそれで行きます
ツイートのポップアップが開かれている状態だとします

// idを取得しておく
id = hndtoid(ie.hwnd)

// できるとこまでDOM操作、先ずはポップアップ部分のformを得る
form = ie.document.querySelector(".t1-form.tweet-form.is-reply")
// contenteditableなdivをfocus()すると書き込めるようになる
form.querySelector(".tweet-box.rich-editor").focus()

// クリップボードに文字列を格納
sendstr(0, "てすと")
// 書込み可能な場所がフォーカスされてるのでそのまま貼り付け
sckey(id, VK_CTRL, VK_V)
// 貼り付け操作でボタンが有効になるので、そのまま送信
sckey(id, VK_CTRL, VK_RETURN)

No.3796 2017/04/25(Tue) 16:39:29

Re: DIVで作成されたフォーム上のコントロールを制御する方法 / POM
stuncloud様

>textareaに書き込んでform.submit()すれば
最近こういうのが多いですよね。
見た目(CSSで作られたコントロール)と実際のコントロール(レガシーコントロール要素)が違うという・・・

なにはともあれ、ご教授いただいた内容を1つ1つ確認してみます。
ありがとうございました。

No.3802 2017/04/26(Wed) 10:07:12
FUKIDASI Thread procedureの使い方が分かりません / 基礎から学ぶ人
まず噴出しですが
procedure
for i = 1 to 10
   Fukidasi("スレッド " + i,3,10,"MS明朝",$FF0000,$00FF00,0)
   Sleep(1)
next

これを実行すると画面の左側に背景が黄色の長い棒が出てきて伸びたり縮んだりする様な映像が出てきます
スレッドという文字も全く表示されなければ、背景の色も緑に指定してるはずなのに何故か黄色になっています


次にヘルプにあったスクリプトなのですが
// スレッドとメインにてカウント
Thread カウント()           // スレッドは噴出しにてカウント
print "メイン"
cnt = "1, 2, 3, 4, 5, 6, 7, 8, 9, 10"
for i = 1 to 10
  print Token(", ", cnt, True)    // メインはPRINTにてカウント
  Sleep(1)
next

procedure カウント()
  for i = 1 to 10
    Fukidasi("スレッド " + i)
    Sleep(1)
  next
fend

Thread 関数名 ()    procedure〜fend
この二つですがThreadというのは要するに2つの処理を平行してやる(3つ以上は不可能?)作業だと思うんですが
このThreadを置く(書く)位置なのですが
上記のスクリプトではスクリプトの一番上に置いてますが
何故

// スレッドとメインにてカウント
print "メイン"
cnt = "1, 2, 3, 4, 5, 6, 7, 8, 9, 10"
for i = 1 to 10
  print Token(", ", cnt, True)    // メインはPRINTにてカウント
  Sleep(1)
next

Thread カウント()           // スレッドは噴出しにてカウント

procedure カウント()
  for i = 1 to 10
    Fukidasi("スレッド " + i)
    Sleep(1)
  next
fend


上記のような最初のfor~nextの後じゃ全く機能しないのでしょうか?


最後にprocedureですが
procedureは()~fendまでが一つのまとまりになってますが
上記のスクリプトでは何故procedureを使ってるんですか?
procedureを使わずに

for i = 1 to 10
    Fukidasi("スレッド " + i)
    Sleep(1)
  next

このように記述して同じように平行に処理されないのは何故でしょうか?

No.3787 2017/04/24(Mon) 10:27:48

Re: FUKIDASI Thread procedureの使い方が分かりません / 基礎から学ぶ人
念の為に質問させて頂くのですが
上記のような言語の使い方で既に躓いています。
一応2時間位色々考え、あれこれ試して理解できるよう努力はしたつもりですが
理解できませんでした
ヘルプに書かれてる内容を全て理解しようとしたら
一応自分なりに調べたり、考えたり、試したりはしますが
恐らくこの先、この様な基礎的な質問を400,500回位するかもしれません
この掲示板にはそういう書き込みをしても大丈夫でしょうか?

No.3788 2017/04/24(Mon) 10:34:30

Re: FUKIDASI Thread procedureの使い方が分かりません / 俄プログラマー
Fukidasi("スレッド " + i,3,10,"MS明朝",$FF0000,$00FF00,0)

//フォントサイズ指定のカンマ抜け
Fukidasi("スレッド " + i,3,10,,"MS明朝",$FF0000,$00FF00,0)


中略

>上記のような最初のfor~nextの後じゃ全く機能しないのでしょうか?

メインスレッドが終了してしまうとスレッド処理中でも全体終了となります。
メインスレッドが終了しないようSLELEPを入れる、フラグを立てるなどして終了しないように工夫する必要があります。

No.3789 2017/04/24(Mon) 11:59:27
助けてください / ゲン
SELECT SLCTBOX(SLCT_BTN,0,"処理を選択して下さい","処理1","処理2","処理3")
CASE SLCT_1
MSGBOX("処理1が選択されました")
CASE SLCT_2
MSGBOX("処理2が選択されました")
CASE SLCT_3
MSGBOX("処理3が選択されました")
DEFAULT
MSGBOX("エラー")
SELEND
上記のものを選択が終わった後もまた選択を続けたいです
×が押された時のみ終了をしたいです
文は間違っていますがやりたいことはこうです
while true
SELECT SLCTBOX(SLCT_BTN,0,"処理を選択して下さい","処理1","処理2","処理3")
CASE SLCT_1
MSGBOX("処理1が選択されました")
wend
CASE SLCT_2
MSGBOX("処理2が選択されました")
wend
CASE SLCT_3
MSGBOX("処理3が選択されました")
wend
DEFAULT
MSGBOX("エラー")
SELEND

No.3784 2017/04/23(Sun) 14:53:56

Re: 助けてください / 俄プログラマー
//breakを使います。

while true
 SELECT SLCTBOX(SLCT_BTN,0,"処理を選択して下さい","処理1","処理2","処理3")
  CASE SLCT_1
   MSGBOX("処理1が選択されました")
  CASE SLCT_2
   MSGBOX("処理2が選択されました")
  CASE SLCT_3
   MSGBOX("処理3が選択されました")
  DEFAULT
   MSGBOX("エラー")
   break //Xを押したときにここでwhileを抜ける
 SELEND
wend

No.3785 2017/04/23(Sun) 16:09:24

Re: 助けてください / ゲン
>>俄プログラマーさん
無事思い通りにできました。本当にありがとうございましたm(_ _"m)
たったの一行で解決する問題だったのですね..
本当にありがとうございました。またよろしくお願いします!

No.3786 2017/04/23(Sun) 16:21:49


 過去ログ(〜2017/03/22)・検索ツール


以下のフォームに記事No.と投稿時のパスワードを入力すれば
投稿後に記事の編集や削除が行えます。
199/200件 [ ページ : << 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ... 20 >> | 過去ログ ]