自動化ツールuwsc使いよ集まれ3at SOFTWARE
自動化ツールuwsc使いよ集まれ3 - 暇つぶし2ch829:名無しさん@お腹いっぱい。
09/02/02 14:08:30 pdMh/tE90
doscmd("???.vbs")

830:名無しさん@お腹いっぱい。
09/02/02 14:30:06 yH09tKlS0
>>829
有り難う御座います。
ですが実行されませんでした
フルパスで""も付けたんですが…
OSはvistaなんですが関係無いですよね…

831:名無しさん@お腹いっぱい。
09/02/02 14:49:49 cpjbDFRd0
>>830
ショートカットのプロパティにリンク先っていうのがあるでしょ。
それをコマンドラインに入力したらいいんだけど。

コマンドプロンプトを開いて実行するか、
ファイル名を指定して実行(Vistaにあるかは知らないが)で、実行できるか試してみて。

832:名無しさん@お腹いっぱい。
09/02/02 15:05:20 yH09tKlS0
>>831
有り難う御座います。
先ほどuwscで動かなかったので、
コマンドプロントからも直接やってみましたが、
vbsは実行されてませんでした orz

833:rpaawnaw
09/02/02 15:07:51 2TLMPBOD0
qFqgve <a href="URLリンク(lycvakiqmpbn.com)">lycvakiqmpbn</a>, [url=URLリンク(gxsxjoosngmt.com) [link=URLリンク(ifsiyjjscezd.com) URLリンク(piuboesbpern.com)

834:名無しさん@お腹いっぱい。
09/02/02 15:11:57 pdMh/tE90
>>832
Vistaでも問題なくできるぞ
どんなエラーメッセージが出る?

835:名無しさん@お腹いっぱい。
09/02/02 15:21:46 yH09tKlS0
>>834
いえエラーは出ないんですが、
コマンドプロンプトに(フルパス).vbsをペーストしてEnterを押しても
動いた形跡が無いんですよね・・・
ただbatファイルをウインドウ非表示で実行させるだけの簡単な物なんですが
それとも何か必要な物が欠けているんでしょうか
普通にクリックしたときは動くんですが・・・

836:名無しさん@お腹いっぱい。
09/02/02 15:28:21 PVHBkFFR0
>>835
vbsのほうにメッセージボックスを1行入れてみたら?

837:名無しさん@お腹いっぱい。
09/02/02 15:49:30 yH09tKlS0
>>836
有り難う御座います。
色々調べてみて今、解決出来ました。
お騒がせしました。

838:名無しさん@お腹いっぱい。
09/02/02 19:05:09 Os9uDG+70
できれば、何が原因だったか教えてくれると有り難いとか思ってるのは俺だけかな?
初心者だからどういう時にそうなるのか気になる。

839:名無しさん@お腹いっぱい。
09/02/02 20:36:43 bbkYkSZI0
ブラウザを起動するときに最小化できませんか?
検索では、UWSC.exeのあるフォルダのUWSC.INIをメモ帳で開き、
StopForm=0 を StopForm=1 に変更して保存します。

とあったのですが、iniファイルがなく設定できませんでした。
キーボードからオルトとスペース、Nキーで最小化できるので
キー操作のスクリプトからできることはできるみたいですが
一回、表示されてからの対応になるのでできれば起動時から
できたらいいのですが。

840:名無しさん@お腹いっぱい。
09/02/02 21:07:48 yMTVVraI0
comでxmlhttpを使え。解決する。
他にも色々あるが、まぁ、とりあえず使ってみろ。

841:名無しさん@お腹いっぱい。
09/02/03 03:38:57 eeztqI130
>>839
UWSC.INI の StopForm キーの値は
スクリプト再生中に現れるフォームウィンドウを
表示するかしないかってやつじゃなかった?
最小化でアプリ起動ってのは API 関数の ShellExecute() を使う

HINSTANCE ShellExecute(
    HWND hwnd,  // 親ウィンドウのハンドル
    LPCTSTR lpVerb,  // 操作
    LPCTSTR lpFile,  // 操作対象のファイル
    LPCTSTR lpParameters,  // 操作のパラメータ
    LPCTSTR lpDirectory,  // 既定のディレクトリ
    INT nShowCmd  // 表示状態
);

ブラウザのパスは適宜変更してください

DEF_DLL ShellExecuteA(hwnd, string, string, string, string, int): dword: shell32.dll

CONST SW_SHOWMINIMIZED = 2

IFB ShellExecuteA(NULL, "open", "C:\Program Files\Internet Explorer\iexplore.exe", NULL, NULL, SW_SHOWMINIMIZED) < 32 THEN
  MSGBOX("実行に失敗しました")
ENDIF

842:名無しさん@お腹いっぱい。
09/02/03 03:52:05 eeztqI130
>>841
すみません、比較式を間違えました
失敗時は 32 以下の値を返すので、正しくは以下です

IFB ShellExecuteA(NULL, "open", "C:\Program Files\Internet Explorer\iexplore.exe", NULL, NULL, SW_SHOWMINIMIZED) <= 32 THEN
  MSGBOX("実行に失敗しました")
ENDIF

843:名無しさん@お腹いっぱい。
09/02/03 09:29:53 9ClBsfHO0
API 関数とかしりませんでした。

実際やってみたらブラウザは機動できました。
しかし、そこからの動作がされません。
指定のアドレスに移動するにはどうしたらいいのでしょうか?

DEF_DLL ShellExecuteA(hwnd, string, string, string, string, int): dword: shell32.dll
CONST SW_SHOWMINIMIZED = 2

IFB ShellExecuteA(NULL, "open", "C:\Program Files\Internet Explorer\iexplore.exe", NULL, NULL,

SW_SHOWMINIMIZED) <= 32 THEN
MSGBOX("実行に失敗しました")
ENDIF

IE = getactiveoleobj("internetexplorer.application")
IE.Visible = True
IE.Navigate("URL")

上記のような感じでやっています。アドバイスお願いします。



844:名無しさん@お腹いっぱい。
09/02/03 21:49:12 eeztqI130
>>843
起動と同時に URL に移動するには
ShellExecute() の第 4 引数に URL を渡します
なお、ProgID は大文字小文字を区別するので
正しくは『InternetExplorer.Application』です
また、以下のコードでも同じことができます

OPTION EXPLICIT

DIM url = "URLリンク(www.2ch.net)"
DIM ie = CREATEOLEOBJ("InternetExplorer.Application")

CTRLWIN(HNDTOID(ie.HWND), MIN)
ie.Visible = True
ie.Navigate(url)

845:名無しさん@お腹いっぱい。
09/02/04 12:53:58 m6en7Q5I0
uwscでIEを開いた後、そのIEで開いたHP内の文字データなどを
EXCELのセルに代入することはできますでしょうか?


846:名無しさん@お腹いっぱい。
09/02/04 13:05:01 tXqKlnWn0
できます

847:名無しさん@お腹いっぱい。
09/02/04 13:20:25 m6en7Q5I0
ありがとうございます
なんとかやってみます

848:名無しさん@お腹いっぱい。
09/02/04 19:46:29 MfK5WOxL0
>>844
勉強になります。ヘルプみたり過去の質問検索してみましたが、
あまり、APIとかのことが載ってないのね・・・

849:名無しさん@お腹いっぱい。
09/02/04 23:12:09 N1AZKeZ50
>>848
MSDN見たほうが手っ取り早い事が多いからなぁ?

850:名無しさん@お腹いっぱい。
09/02/06 12:59:57 hPEtxwon0
A = "●●"と言った感じのものを20ぐらいあるとしてそれを順に
送信しようと頑張っています。ちなみに一個だけならなんとかなる
のですが、複数だとどうしてもコードがいっぱいになってしまします。


IESetData(IE,A,"kakikaki")
id = getid("internet explorer")
clkitem(id,"ボタン",CLK_ACC,CLK_BACK)
sleep(15)

これが、そのコードなのですが、Aのところに複数の文字を順に設定
できたらと思っています。よろしくおねがいします。

851:名無しさん@お腹いっぱい。
09/02/06 15:36:29 q6mgGLtH0
A[0] = "●●"
A[1] = "○○"

FOR i = 0 TO 20 - 1
 IESetData(IE,A[i],"kakikaki")
 id = getid("internet explorer")
 clkitem(id,"ボタン",CLK_ACC,CLK_BACK)
 sleep(15)
NEXT

これでいいじゃん

852:名無しさん@お腹いっぱい。
09/02/06 16:05:23 BBz1+Wne0
レスどうも。m(_ _)m
実際に実行してみたら下記のようなエラーがでました。

Uスクリプト: 変数: A 配列をオーバーしてます
8行目:A[1] = "●●"

こんなエラーがでます。A[0]は、大丈夫みたいです。
なんでだろう?なにかわかりましたら詳細お願いします。

853:名無しさん@お腹いっぱい。
09/02/06 16:32:11 1eXzPAIO0
dim a[19]= "●●","○○","△△","▲▲",・・・・・(20個記述)

"とりあえず1から10まで聞いとけ"という性格が羨ましいと思うようになったこの頃。('A`)

854:名無しさん@お腹いっぱい。
09/02/06 17:44:09 BBz1+Wne0
うまくいきました。m(_ _)m
なぜ、前にやつはエラーがでたのかしら?
原因が分からない。

855:名無しさん@お腹いっぱい。
09/02/06 18:42:36 q6mgGLtH0
変数の定義、宣言と
変数への値の代入という
二つの違いを理解してないから

856:名無しさん@お腹いっぱい。
09/02/07 03:18:07 vXpPMDOu0
前から疑問だったけど、聞けなかったこと。
>>841のshellexecuteのnShowCmd。msdn等を見ると記述順番は
SW_HIDE, SW_MAXIMIZE, SW_MINIMIZE, SW_SHOW ・・・
で順番違うじゃない? この定数はどこで判別するんでしょ?
どなたか解説してくれないかな…

857:名無しさん@お腹いっぱい。
09/02/07 09:37:19 xlfhJ7RV0
>>856
Windows Platform SDK の WinUser.h で定義されてます
ドキュメントの値は、記号定数名でソートされてるようです

CONST SW_HIDE = 0
CONST SW_MAXIMIZE = 3
CONST SW_MINIMIZE = 6
CONST SW_RESTORE = 9
CONST SW_SHOW = 5
CONST SW_SHOWDEFAULT = 10
CONST SW_SHOWMAXIMIZED = 3
CONST SW_SHOWMINIMIZED = 2
CONST SW_SHOWMINNOACTIVE = 7
CONST SW_SHOWNA = 8
CONST SW_SHOWNOACTIVATE = 4
CONST SW_SHOWNORMAL = 1

858:名無しさん@お腹いっぱい。
09/02/07 11:36:45 l5adthQH0
>>857
回答ありがとう!見つけられました。
これ、目的の記述部分を捜すのは適当な属性値をGrepで捜すくらい
しか思いつかなかったのですが、(ちゃんと順を追ってじゃなく、
あくまでdef_dllのためだけという意味)他に良い方法ありますでしょうか?
重ね重ねで恐縮ですが、もし知恵があれば教えてくださいませ。

859:名無しさん@お腹いっぱい。
09/02/07 20:34:24 TsGY9ahZ0
BMP画像(100x100)からUWSCを使ってRGB値をテキスト出力するにはどうすればよろしいでしょうか?

860:名無しさん@お腹いっぱい。
09/02/08 00:47:32 fB3ojcA60
色情報を取得してそれをファイルに書き出せばいいのではないでしょうか

861:名無しさん@お腹いっぱい。
09/02/08 07:22:53 QoTANPZk0
>>858
大抵の IDE はシンボルの定義部にジャンプする機能があるけど
確認のためだけに起動するのは避けたいので
俺は grep してます

862:858
09/02/08 18:05:42 iaalqOSe0
>>861
ナルホド~。
ひとつ賢くなりました。多謝。

863:名無しさん@お腹いっぱい。
09/02/08 22:31:33 dNKbKAR9O
いくつかの画像のサンプルがあって、指定したウィンドウ内からその画像を書いた順番で探す。
合ったら処理抜け、なかったら次の画像探し
最終的にどれもなかったらまた処理抜けってのをがんばってやろうとしてるんだけどどーすりゃいいのかな
いちいちifbで探してなかったらbreakみたいにやらんとダメ?
もーちょいスマートにやれないかな

864:名無しさん@お腹いっぱい。
09/02/08 23:45:58 vASK790PO
日本語でおk

865:名無しさん@お腹いっぱい。
09/02/08 23:51:13 SXOT3GUb0
例えば test test1 test2 って画像があって
どれかがヒットしたらその画像をクリックってことやらせたい場合
ifb chkimg (test.bmp) = true then
mmv(g_img_x, g_img_y)
sleep(1)
endif
ifb chkimg (test1.bmp) = true then
mmv(g_img_x, g_img_y)
sleep(1)
endif
ifb chkimg (test2.bmp) = true then
mmv(g_img_x, g_img_y)
sleep(1)
else
break
endif
↑よりもスマートってか効率的な書き方があるのかなってこと

866:名無しさん@お腹いっぱい。
09/02/08 23:55:43 3bfozRlh0
ifb chkimg (test.bmp) OR chkimg (test1.bmp) OR chkimg (test2.bmp) then
mmv(g_img_x, g_img_y)
sleep(1)
endif

867:名無しさん@お腹いっぱい。
09/02/09 00:20:04 wdWGM0TOP
日本語でおk
こういう意味?私はスマートという日本語を知りません

DIM bmp[]="test","test1","test2"
for n=0 to length(bmp)-1
  ifb chkimg(bmp[n]+".bmp") = true then
    mmv(g_img_x, g_img_y)
    sleep(1)
    break
  endif
next

868:名無しさん@お腹いっぱい。
09/02/09 00:34:17 fwfzfodA0
867のをかきかえてみると
DIM bmp[5]="Garnet","Star sapphire","Topaz","Spinel","Emerald"
for n=0 to length(bmp)-1
ifb chkimg(".\image\"bmp[n]+".bmp") = true then
mmv(g_img_x, g_img_y)
sleep(1)
break
endif
next
こうなったんだけど式違うって怒鳴られました・・・

869:名無しさん@お腹いっぱい。
09/02/09 12:18:39 wdWGM0TOP
パソコンに同情するわ

870:名無しさん@お腹いっぱい。
09/02/09 16:18:53 5wLvS0Ft0
".\image\"bmp[n]+".bmp" ×
".\image\" + bmp[n] + ".bmp" ○

ちゃんとスペース入れないから間違うんだ

871:名無しさん@お腹いっぱい。
09/02/10 14:57:33 ldVPkdsr0
特定の文字を含むアドレスを抽出しそれを順々に周っていくという
のを作っています。

IE = CREATEOLEOBJ("InternetExplorer.Application")
IE.visible = True
IE.navigate("URLリンク(www.yahoo.co.jp)<)●●[A]", IE.document.links[A].href) > 0
IE2 = GETACTIVEOLEOBJ("InternetExplorer.Application")
IE2.visible = True
IE2.navigate(IE.document.links[A].href)
UNTIL !IE.BUSY AND IE.READYSTATE = 4
ENDIF
NEXT
IE.QUIT

[A]のところは毎回違います。これでやると順々に周ってくれません。
フリーズさえしないもののページを読み込むのが終了せずそのままに
なります。

実行したときには、"URLリンク(www.)●●[A]"←この部分はちゃんとしたアドレス
になっています。


872:名無しさん@お腹いっぱい。
09/02/10 16:02:10 HCMc1CKn0
>>871
>IE2 = GETACTIVEOLEOBJ(

これってIEを起動していないと、オブジェクトIEとオブジェクトIE2は同じものになるよね。
で、元のIEで他のページ開いちゃったら、IE.document.linksが無効になっちゃうんじゃないかな。
というか最初にとったIE.document.links.lengthとページが切り替わったあとのやつとでつじつまが合わなくなってちゃんと動かないはず。
特にUWSCのFOR分は、ループに入ったら回数固定だから、その辺が変動しないようにきっちりやらないと。

873:名無しさん@お腹いっぱい。
09/02/10 16:11:49 ldVPkdsr0
IE = CREATEOLEOBJ("InternetExplorer.Application")
IE.visible = True
IE.navigate("URLリンク(www.yahoo.co.jp)<)", IE.document.links[A].href) > 0
IE2 = CREATEOLEOBJ("InternetExplorer.Application")
IE2.visible = True
IE2.navigate(IE.document.links[A].href)
ENDIF
NEXT
IE.QUIT

これが参考にしたソースなのですが、871は私が色々やってるやつです。
上記のソースだとそれぞれブラウザで開くということになってしまいます。

表示されたページで特定の語句が含まれるアドレスをゲットして
それをもう一つ起動したブラウザで順に巡回するというのでもいいのですが。

874:名無しさん@お腹いっぱい。
09/02/10 16:54:12 HCMc1CKn0
>>873
2つ目をCreateしてれば問題ないけど、
1つ目に上書きするとだめなんですよ。
Getするということは、確率的に1つ目を取得することになります。
他の窓がない場合は100%1つ目の窓を取得します。

どうしても1つ目の窓でやりたければ、
Navigateする前にlinksを全部配列にコピーしておかないと駄目です。

ループすると次々に窓を起動するのでいやだということなら、
ループに入る前にあらかじめ2つ目をCreateしておけばいいんです。

そもそも参考にしたソースは実用的な動作じゃありません。
ただ、Navigateした後に待ちを入れていないので、スクリプトの動作は快適で安定するでしょう。


875:名無しさん@お腹いっぱい。
09/02/10 17:15:37 ldVPkdsr0
とりあえず

>ループに入る前にあらかじめ2つ目をCreateしておけばいいんです。

この手法をお願いします。できれば配列にコピーというのもお願いします。


876:名無しさん@お腹いっぱい。
09/02/10 17:54:36 HCMc1CKn0
>>875
まずは2つ起動

IE = CREATEOLEOBJ("InternetExplorer.Application")
IE.visible = True
IE.navigate("URLリンク(www.yahoo.co.jp)<)●●[A]", IE.document.links[A].href) > 0 Then
  IE2.navigate(IE.document.links[A].href)
  REPEAT
   SLEEP(0.1)
  UNTIL !IE2.BUSY AND IE2.READYSTATE = 4
 ENDIF
NEXT
IE.QUIT
IE2.QUIT


if ~ Then
REPEAT ~ UNTIL
ThenとREPEATが抜けてました
あと、IE2でNavigateしたのに待ちループではIEになってました。
インデント(頭の空白)入れないとそういうところのミスが発見できません。


877:名無しさん@お腹いっぱい。
09/02/10 18:23:31 ldVPkdsr0
正直、わからないです。
質問が悪かったのかしら・・・

1、指定ページに移動
2、特定の文字を含むアドレスをゲット
3、ゲットしたアドレスを順に表示(IE2でも可)

この動作なんだけどなー。うーむ。

878:名無しさん@お腹いっぱい。
09/02/10 18:43:10 HCMc1CKn0
>>875
配列を使うやつ


DIM リンク[]="ダミーデータ"

IE = CREATEOLEOBJ("InternetExplorer.Application")
IE.visible = True
IE.navigate("URLリンク(www.yahoo.co.jp)<)●●[A]", IE.document.links[A].href) > 0 Then
  リンク[length(リンク) - 1] = IE.document.links[A].href
  resize(リンク, length(リンク))
 ENDIF
NEXT

KAISU = length(リンク) - 1 // 配列の最後尾は空欄
FOR A = 0 TO (KAISU - 1)
 IE.navigate(リンク[A])
 REPEAT
  SLEEP(0.1)
 UNTIL !IE.BUSY AND IE.READYSTATE = 4
NEXT
IE.QUIT

879:名無しさん@お腹いっぱい。
09/02/10 18:51:38 HCMc1CKn0
>>878の補足
リンクの選別を最初のループでやってるので、2回目のループは無条件に処理できる。
ループ回数が違っているのも要チェック。
配列がちょっとややこしいやり方だけど、カウンタが2つ以上になってもややこしいのでこういうやり方してます。
リンク[length(リンク) - 1]は、リンクっていう配列の最後尾を意味します。
resize(リンク, length(リンク))は、配列を一つ増やします。
上記2行により、最後尾にデータを追加するたびに配列を増やし、常に最後尾をあけておきます。

ちなみに、最初に配列数を0にしておけばごみがでないように思われますが、
最小配列サイズが1なので、どうしてもごみが入ります。
また、最初の1回で隙間をなくそうとすると、ループの処理がおかしくなります。

>>877
おいおい
1、指定ページに移動  は、IE.Navigateだし
2、特定の文字を含むアドレスをゲット は、
 POS("URLリンク(www.)●●", IE.document.links[A].href) > 0
 の条件を満たすときの IE.document.links[A].href だし
3、ゲットしたアドレスを順に表示(IE2でも可) は、
 ループの中でIE.Navigateですよ

これ以上丁寧に教えるのは無理。
ヘルプとサンプルをじっくり見てください。

1行ずつ実行してみるのもいい手。
僕は実験のファイルが70くらいたまってる。


880:名無しさん@お腹いっぱい。
09/02/10 20:47:55 ldVPkdsr0
お手間をかけます。m(_ _)m
実際に実行してみたのですが、両方駄目でした。

エラーは出ませんが、最初のヤフーページが読み込み中になりそれ以後が進みません。
難しいわぁ~('A`)

881:名無しさん@お腹いっぱい。
09/02/10 21:20:46 HCMc1CKn0
>>880
とりあえずそのままuwsファイルに書き込んで起動したら、IEは自動的に終了した。
読み込み中で止まるって?
IEの設定の問題かな?

>>876のやつの POS("URLリンク(www.)●●", IE.document.links[A].href) を
POS(".html", IE.document.links[A].href) に書き換えたらばんばん開くんですけど。
POS(”www”, IE.document.links[A].href) で試したらファイルのダウンロードが動いてCOMエラーになったけどさ。

IEのバージョンでも違うのかもしれないけど、IE6ではしっかり動きました。
ちなみに僕が使ってるのはちょっと古いバージョン。
4.4.2.4のやつ


882:名無しさん@お腹いっぱい。
09/02/10 23:15:08 d1Cz2CKr0
ちと教えてくれい。
JscriptのSort関数ってUWSCで扱えるかしら?
連想配列のソートを使って凌いでしまったんだけど、
もし使えるようなら、そのうち、ちゃんとw悩んでみようかと思って…。

883:名無しさん@お腹いっぱい。
09/02/11 00:17:02 HuYbgfa/0
>>882
無理じゃね?
そういうCOMオブジェクトがあるとも思えない。
DLLの場合は配列を渡せればいけるかもしれない。

と思ったけど、データベース使えばSortできるっぽいね。
テーブル作るのめんどくさそうだけど。

884:名無しさん@お腹いっぱい。
09/02/11 01:07:21 kWARHqJn0
>>883
レスサンクス。
時間掛けずにヨカッタw

885:名無しさん@お腹いっぱい。
09/02/13 14:30:03 3ZWIkmUk0
com操作から指定の同じ画像が2枚以上あるかどうかのチェックを
するスクリプトを作っています。

<img alt="画像" src="/img/member/status_01.gif?1234414294" />

これがそのソースなのですが、altの画像の個数でもおkです。とにかく2個以上
あったらメッセージボックスで知らせてくれるみたいなのができたらと思っています。

886:名無しさん@お腹いっぱい。
09/02/13 15:36:56 yfzZRrrS0
そうですか

887:名無しさん@お腹いっぱい。
09/02/13 16:29:22 mUOb2ZH60
>>885
一致するやつの個数を数えるだけですよね

888:名無しさん@お腹いっぱい。
09/02/13 16:31:07 3ZWIkmUk0
>>887
画像があるかどうかというのはできると思うのですが、同じ画像が2枚あるかどうか
となるとちょっと私のスキルでは難しいので訊いて見ました。

数を数えなおかつメッセージボックスなどで同じ画像が2つ以上あると知らせてくれる
というものです。

889:名無しさん@お腹いっぱい。
09/02/13 16:39:01 mUOb2ZH60
>>888
cnt = 0
while 全部処理
 ifb 画像一致 then
  cnt = cnt + 1
 eneif
wend
ifb 2 <= cnt then
 MsgBox()
endif


890:名無しさん@お腹いっぱい。
09/02/13 17:35:13 3ZWIkmUk0
メモリが・・・というエラーがでる。
今、他の手法でやってますが、IE.document.body.innerHTMLで
画像で使われてる文字の数というので判断しようとしています。

一つだけの場合、ちゃんとうまくいきました。しかし上記のやつをすこし
変えてやってみましたが駄目でした。

891:名無しさん@お腹いっぱい。
09/02/13 17:43:52 Ro94SGUQ0
情報を小出しにするのはやめてください。
チャットじゃないので整理してまとめてから書き込んでください

892:名無しさん@お腹いっぱい。
09/02/13 18:00:45 3ZWIkmUk0
 str = "UWSC"

 ifb pos(str, IE.document.body.innerHTML) then
 MsgBox("あるよ")
endif

画像でエラーが出るので上記のやつで挑戦してます。
HTMLにUWSCという語句が2つ以上あればメッセージ
ボックスにあるよと表示されるというものです。

ひとつでは成功しています。

893:名無しさん@お腹いっぱい。
09/02/13 18:30:14 mUOb2ZH60
>>892
だから>>889のとおりにやれよと。

str = "UWSC"
cnt = 0
while 全部処理
 ifb pos(str, IE.document.body.innerHTML) then
  cnt = cnt + 1
 eneif
wend
ifb 2 <= cnt then
 MsgBox("あるよ")
else
 MsgBox("ないよ")
endif


894:名無しさん@お腹いっぱい。
09/02/13 18:34:04 3ZWIkmUk0
全部処理についてkwskm(_ _)m

895:名無しさん@お腹いっぱい。
09/02/13 18:40:58 mUOb2ZH60
>>893はミス
str = "UWSC"
ifb pos(str, IE.document.body.innerHTML, 2) then
 MsgBox("あるよ")
eneif

posは個数指定があるからループしなくてよかった。
ループする必要があるのは、前から順に1こずつ検索する場合。


>>894
全部とは、IE.document.body.innerHTMLの1文字目から最後まで処理する条件ってこと。
つまり、ループに入る前に
src = IE.document.body.innerHTML
として文字列を取得し、見つかるたびに読み進めていく。
tokn() を使って1行ずつ処理する場合とか
IEGetSrc( IE, タグ名, [番号] ) で、番号を順に指定して取得する場合とか。

BodyのHTML全部取得してPosで個数まで数えるならループはいらない。


896:名無しさん@お腹いっぱい。
09/02/13 18:44:29 mUOb2ZH60
見落とすかもしれないからもう一度書くけど、
pos()の3番目に2って指定すれば、2個目の位置を調べてくれる。
つまり、2個目があるかないかはPos()一回でわかる。

だからこれだけで完成
str = "UWSC"
ifb pos(str, IE.document.body.innerHTML, 2) then
 MsgBox("あるよ")
eneif


897:名無しさん@お腹いっぱい。
09/02/13 18:45:01 3ZWIkmUk0
詳しい説明どうも。
しかし、みんなどこで勉強してるんですか?
とりあえず、UWSCの掲示板とマクロテクニックという本、
検索などでやってますが、なかなか目的の回答にたどり
つけないことも多く、時間ばかりがかかってしまいます。

このスクリプトだってもう何時間も費やしていますからね・・・

898:名無しさん@お腹いっぱい。
09/02/13 19:03:33 mUOb2ZH60
大事なのは情報の探し方。
探すためのキーワードはマニュアルを順番に読んで探し出す。

UWSCは覚えることは少ないほうだし、ヘルプにまとまっているからヘルプを見る。
基本の使い方はサンプルコードを探す。
で、一つ一つの細かい使い方は、それを確認するためのサンプルコードを自分で書く。
公開されたツールを使うのも手。

あとはテクニックを覚えて応用していく。

if Pos() then  で、存在チェックするというのもテクニックのひとつ。
Pos() は文字列の位置を返すだけだけど、取りうる値が1以上になるのでそういう使い方ができる。
if 文が、0か0以外という判断基準だからできることだけど、
それを知ってればほかの関数でもそういう使い方ができるかどうか判断できるわけ。


899:名無しさん@お腹いっぱい。
09/02/13 19:14:00 6zXjaVj00
俺個人の意見だと、そういう書き方は好きじゃないし人にも勧めないな…



900:名無しさん@お腹いっぱい。
09/02/14 03:00:48 lbAzgdO20
>>897
とりあえずnotepad以外のエディタを用意して文字列ハイライト&F1key(大体のエディタがそうだと思う)
でHelpファイルの項目にジャンプできるようにする。
その後、Helpファイルのサンプル、ネットに挙がっている短目のサンプルをコピペ。
エディタのショートカットKeyからサンプルを実行して結果を見たうえで、関数等を理解。
自分はこんな感じかな?

901:名無しさん@お腹いっぱい。
09/02/14 09:57:37 l4ICTSX40
>>899
でも、
flag = true
if flag = true then
みたいに書くと期待通りの動作にならないですお。

いや、DLLとかの外部プログラムで言うtrueが、自分の処理系でのtrueと一致するとは限らないというべきか。


902:名無しさん@お腹いっぱい。
09/02/14 14:13:39 uUjk6ugC0
>>901
IF flag <> 0 THEN MSGBOX("真") ELSE MSGBOX("偽")

903:名無しさん@お腹いっぱい。
09/02/14 15:31:54 kc2bS8a/0
>>900
私もかれこれ1年ぐらいやってますが、実際に自分でサンプルとかを
やってみるのがいいみたいですね。本の内容とかを理解するより
結果そっちのほうが早かった。

あと、情報量が格段に違うので本はお勧めできない。価格が高いというのもあるけど。
本の内容なんかヘルプの1/100も載ってないしw掲示板での回答のほうが例としても
すぐれてるよね。本は失敗したわぁ~w

904:名無しさん@お腹いっぱい。
09/02/14 15:46:35 w6PpT+IB0
>>901
俺はUWSCなんて一度もさわったことはないが
if flag = trueだと代入してないか?
他の割とよくある言語だと、
flag == trueとか
flag eq trueとか
そもそも条件比較せずに
if flag thenって書き方だと思うが
=が比較にも使えるんだったらすまぬ

905:名無しさん@お腹いっぱい。
09/02/14 20:38:54 +5xZKKxJ0
複数開いてるIEでウィンドウ情報に「ソフトウェア」とか特定の文字が含まれている
ウインドウを閉じたいのですが、選択して閉じることはできますか?

906:名無しさん@お腹いっぱい。
09/02/14 20:42:00 mPJsDYRZ0
>>904
普通に使えるお。
条件式では代入は行われないっス。
唯一Evalの代入で ':=' があるくらいで '==' とかはないっス。
おばかには有難いすw

907:名無しさん@お腹いっぱい。
09/02/14 21:00:49 qfzVhbRR0
>>905
できます

908:名無しさん@お腹いっぱい。
09/02/14 21:08:42 6gNN+jj+0
trueが1、falseが0という前提で
if XXX then YYY を日本語で説明するとXXXが真の場合YYYだけど
内部仕様で0 or not 0 falseじゃなければ真だからって
if POS() thenって書くのはどうかなと言っただけよ
ちゃんと?if POS() > 0 thenと書いた方が分かりやすいじゃんってこと

if flag = trueとかはまた別な話、if POS() = true then と書けと言ってる訳じゃないし
2以上の値が返ってきたら、true(1)ではないんだから。


909:名無しさん@お腹いっぱい。
09/02/14 22:24:08 oEG6WUs+P
なるほど
ヘルプを文字通りに解釈すればIF文は真偽をチェックするのであって
それと0チェックは等価ではないという事か
(実際は0と0以外のチェックだろうけど)

C言語にどっぷり漬かった脳なので>>898が言っているような
書き方のほうが理解しやすく感じてしまった

910:905
09/02/14 22:56:30 +5xZKKxJ0
事故解決しました。

しかし、次の問題が。ソースから
<!-- △△△ -->
複数のアドレス
<!-- ◇◇◇ -->

このようなソースがあった場合、三角から四角までの間にある複数アドレスを
ゲットして一個ずつ開いていくというのはできますか?

ちなみに間になければ似たようなアドレスは開けています。上でも書きましたが
改めてソースを書いときます。
IE = CREATEOLEOBJ("InternetExplorer.Application")
IE.visible = True
IE.navigate("URLリンク(www.yahoo.co.jp)<)", IE.document.links[A].href) > 0
IE2 = CREATEOLEOBJ("InternetExplorer.Application")
IE2.visible = True
IE2.navigate(IE.document.links[A].href)
ENDIF
NEXT
IE.QUIT

上記のソースでページ内にあるアドレスを順に開いていくことはできます。
何かわかりましたらよろしくお願いします。m(_ _)m



911:名無しさん@お腹いっぱい。
09/02/15 00:48:48 48UC/FQI0
>>908
if flag = true とかいう書き方をしてると
if POS() = true というバグを見落とすことになる。
flagにしたって、状態がOn/Offだけとは限らない。
ボタンは白黒が基本だけどグレーだってある。
拡張してグレーを入れるとき、
何も考えずに取得した状態を放り込んでるとバグが発生することになるが、
自分がいじってない場所に影響が出るとは考えにくいし。

なにより、取りうる値をいちいち調べないといけない if flag = true なんか使ってると手間が増えるだけ。

912:名無しさん@お腹いっぱい。
09/02/15 01:18:42 48UC/FQI0
>>910
<!-- △△△ -->と<!-- ◇◇◇ -->を除外ということならシンプルだけど
<!-- △△△ -->と<!-- ◇◇◇ -->の間を処理するというのは、その処理基準が不適切と思われる。
ほかに手がなければしょうがないけど。
① FOR A = 0 TO (KAISU - 1); start = A + 1; next   // <!-- △△△ -->が出るまで空回り
② FOR A = start TO (KAISU - 1); 処理; next   // <!-- ◇◇◇ -->が出るまで処理
①で空回りした回数をstart にセットして、②でstartから再開すればいい。
<!-- △△△ -->が一度も出てこなかった場合、startにKAISUが入るので、多分②は素通りする。

IE = CREATEOLEOBJ("InternetExplorer.Application")
IE.visible = True
IE.navigate("URLリンク(www.yahoo.co.jp)<)", IE.document.links[A].href) then // まだインデントつけてないしThen抜けてるよ。
  IE2 = CREATEOLEOBJ("InternetExplorer.Application")
  IE2.visible = True
  IE2.navigate(IE.document.links[A].href)
 ENDIF
NEXT
IE.QUIT

913:名無しさん@お腹いっぱい。
09/02/15 01:38:43 h4gEwsYs0
ちなみにその考えじゃ永遠に無理。

914:名無しさん@お腹いっぱい。
09/02/15 01:53:42 MQRSTk0U0
こんなことができたらいけるかもと考えました。

1、三角から四角までの文字列をゲット。
2、1の中のアドレスだけゲット。
3、上記のやつでアドレスを一個ずつ巡回。

1は、HTMLで見ると表示されてるやつです。コメントというのかな?


915:名無しさん@お腹いっぱい。
09/02/15 04:44:36 ZJEnRiKf0
>>911
> if flag = true とかいう書き方をしてると
> if POS() = true というバグを見落とすことになる。

バグとか言う以前に、そんな書き方はしない。
思いつく時点でおかしい

なんで、IFの条件文でTrue/FalseのBoolean型をチェックするのに
その条件文の中でわざわざTrue/FalseのBoolean型と比較する必要があるのか
無意味な重複になってる

916:名無しさん@お腹いっぱい。
09/02/15 06:36:23 LdrnYZV60
flag = trueって書き方自体はおかしな事じゃないでしょ
ifの条件式の一部にあってもおかしくはない
ただ、単体で「if flag = true then」と書くと蛇足ということになる
UWSC的にあってるかどうかはわからないけど
「if (flagA = true) AND (flagB = true) then」なんて場合があるわけだし

「if POS() = true then」をPOS() > 0 のつもりで書いているなら
変数にどんな値が入っているか、型とかを考えてない。って話になるし
POS() = 1 のつもりで書いているなら、同じ値だからといって
関係ない定数を使い回すな。という話になる

「if POS() then」がC畑の人の流儀というのは理解してるけど
それを理解してない初心者が、何となく親切心かお節介で付け加えた結果が
「if POS() = true then」ということになってるじゃなかろうか


917:名無しさん@お腹いっぱい。
09/02/15 11:31:41 48UC/FQI0
>>916
>flag = trueって書き方自体はおかしな事じゃないでしょ
処理系にもよりますが、TRUEの値は保障されないので、比較で使うのはおかしい。
実際1という値を持っているしUWSCでは保障してるかもしれないけど、
一般的にそうなのでUWSCでもそういう癖はつけないほうがいいんじゃないかなと。

if (flagA = true) AND (flagB = true) then   × // 成立するのはflagが1か0のときだけ
if (flagA <> false) AND (flagB <> false) then ○ // 全ての値で成立


918:名無しさん@お腹いっぱい。
09/02/15 20:05:10 LdrnYZV60
だから、flag = trueに違和感を感じる人は
boolean型がないC畑の人だけで
boolean型がある言語系の人は何の違和感もないんだって
flagって変数がboolean型なんだな。って思うだけだから

919:名無しさん@お腹いっぱい。
09/02/15 20:30:21 LdrnYZV60
> KAISU = IE.document.links.length
> flag = false
> FOR A = 0 TO (KAISU - 1)
>  IF POS("<!-- △△△ -->", IE.document.links[A].href) THEN flag = ture
>  IF POS("<!-- ◇◇◇ -->", IE.document.links[A].href) THEN flag = false
>
>  IFB flag THEN
>   IFB POS("URLリンク(dailynews.yahoo.co.jp)", IE.document.links[A].href)
>    IE2 = CREATEOLEOBJ("InternetExplorer.Application")
>    IE2.visible = True
>    IE2.navigate(IE.document.links[A].href)
>   ENDIF
>  ENDIF
> NEXT

例えば>>910のサンプルで言ったらこういうことでしょ
flagにはtrueかfalseしか代入してないんだから
trueの値が保障されてないとか、trueかfalse、0か1以外が入ってることなんて考えなくていい
この場合は「IFB flag THEN」を「IFB flag = true THEN」と書いたところで
お節介と言うことにはならない

それをPOS()という戻り値がINTのものに対してPOS() = trueとか書いてしまうと
たまたま1の時だけtrueになってしまうということになる

920:名無しさん@お腹いっぱい。
09/02/15 20:56:45 48UC/FQI0
>>918-919
まあPos()のように0と0以外で判断するのはC言語系の考えとしても、
trueの定義がfalse以外のものとされてるのは、他の多くの言語で共通してるようだけど。

確かにtrueしか代入しないのなら確実に動作しそうだけど
なんかの拍子にごみが入ったとき、trueで比較するとどんな動作をするか分からない。
まあごみが入った時点ではじかれるべきだからむしろtrueと比較すべきかもしれん。
つまりelseなんか使うなって事だ・・・

921:名無しさん@お腹いっぱい。
09/02/15 21:21:15 o+fSWy2v0
型通りに書けばいいだけじゃ?、
flagはboolean型とみなしてコード書いてんだからtrueでいいし、
Pos()はint型だからtrueでの判定はナンセンスってだけ。

922:名無しさん@お腹いっぱい。
09/02/16 06:46:17 EmOr31T+0
For y = 0 to 250

Call ~

Next
POFF(P_SUSPEND2)

と言う感じで外部スクリプトを呼び出して繰り返し作業をさせているのですが
なぜか毎回209回で終わってスタンバイになってます
なにか制限でもあるのでしょうか?

923:名無しさん@お腹いっぱい。
09/02/16 09:09:28 Y25mNBPu0
>>922
変数がかぶっているとか? callをコメントアウトしたらどう?

924:名無しさん@お腹いっぱい。
09/02/16 23:09:04 QUmq6Zuh0
>>922
//主
public i
for i= 1 to 250
  call call2.uws
next

//call2.uws
print i
でテストしてみたけど、制限などないようだよ…(アホだな自分もw)

925:名無しさん@お腹いっぱい。
09/02/16 23:19:50 +qFEC0Zh0
自作関数で戻り値を配列で返すにはどうすればよいのでしょうか?
普通に配列を指定すると怒られます。

926:名無しさん@お腹いっぱい。
09/02/17 01:13:40 shI/FnE+0
>>925
イマイチ質問の意味がわからんけど関数内でResizeしてないんとちゃう?
URLリンク(www.geocities.jp)

927:名無しさん@お腹いっぱい。
09/02/17 03:52:10 X+NUGRkd0
>>925
関数の戻り値に配列って指定できたっけ?
俺は配列変数を参照渡しして、配列の長さを返却するようにしてる

DIM ary[0]
DIM i

FOR i=0 TO hoge(ary, 3)-1
  PRINT "ary["+i+"]: "+ary[i]
NEXT


FUNCTION hoge(VAR a[], n)
  DIM i

  FOR i=0 TO RESIZE(a, n-1)
    a[i] = i
  NEXT
  RESULT = LENGTH(a)
FEND

928:名無しさん@お腹いっぱい。
09/02/17 06:36:49 hsq0Fe2s0
>>925
一言で言えば、無理

929:名無しさん@お腹いっぱい。
09/02/17 12:52:47 zwqJ4YAK0
>>925
俺もそれやろうとしたけどできなかったんで、配列のグローバル変数使ってやりとりしてるな
かっこ悪いけど


930:925
09/02/17 15:04:26 zlTNHss50
うーん、やっぱりできないっぽいですね
関数自体をループさせるか、グローバル変数使うしかないのかな…
ありがとうございました

931:名無しさん@お腹いっぱい。
09/02/17 15:42:00 gznT5Jkz0
>>930
いや、>>927は無視ですか。

関数の引数を定義するときに、var 変数名 と定義してやれば、値の受け渡しができます
同じ変数名ならグローバル変数みたいに使える。
2次元配列とかもできる。
ちょっと配列数と添え字がややこしいけど。

dim a[0]
hoge( a )

FUNCTION hoge( var a[] )
 dim i
 resize(a,10)
 for i = 0 to 9
  a[i] = "x"
 next
FEND

>>927はfor文 でResizeしてるっぽいけどありなのか。


932:名無しさん@お腹いっぱい。
09/02/17 16:19:37 gQhLPPZu0
FOR文自体は、中がループしてるだけで
ループ毎にFOR文の行を処理してる訳じゃないからね。
2行に分けて書くか、1行にまとめて書くかだけの違いで。


933:名無しさん@お腹いっぱい。
09/02/17 16:52:39 gznT5Jkz0
いや、
for i=0 to Max
っていうのは、i とMaxを比較するんじゃないかなと。
そしたらMaxは毎回処理されるんじゃないかなと思ったんだけど
UWSCの場合はForが回数固定でカウンタとか保護されてるから大丈夫なんだろう。
いや、サイズが一緒だから変化がないだけかも。

C言語でいうと
for( i=0; i<Max; i++ )
iやMaxはループ中で変更できちゃうんだよね。
そんで初期化以外は毎回評価、実行されるんだよね。

初期化が入ったとき1回だけなのは当然だけど、終了条件の実行回数は分からない。
だからC言語でループ回数に関数を使うときは
for( i=sizeof(array); i>=0; i-- )
て言う風に初期化子として使う。
いや、そんなことしてなかったな。俺は。
どうせ最適化してくれるだろうと思って。


934:名無しさん@お腹いっぱい。
09/02/17 17:00:23 gznT5Jkz0
// forのテスト。終了条件を関数で指定するとどうなるか。

for i = 0 to test(i)
print "roop" + i
sleep(1)
next

Function test(i)
print "Func" + i
result = 2
FEND

実行結果。終了条件の関数は、カウンタの初期化の後1回だけ呼ばれる。
Func0
roop0
roop1
roop2


935:925
09/02/18 13:34:14 YzuvFpA90
恥ずかしながら>>927の意味がよくわかってませんでした(;´Д`)

>>931
わかりやすい説明ありがとうございます
これは便利ですね!

936:922
09/02/19 18:03:25 LQepcHmb0
ログが最大209行で終わっていたというあほな理由でした
吊ってきます

937:名無しさん@お腹いっぱい。
09/02/19 18:22:19 ac9y3F6q0
(´・ω・`)

938:名無しさん@お腹いっぱい。
09/02/19 20:54:42 UxnJe9qS0
複数行のテキストを入力できるようなインターフェースって作れる?
INPUTだと1行だけだよね

939:名無しさん@お腹いっぱい。
09/02/19 21:04:22 vC1/avge0
フォームでできるよ

940:名無しさん@お腹いっぱい。
09/02/19 21:19:52 UxnJe9qS0
>>939ありがとう

941:名無しさん@お腹いっぱい。
09/02/20 02:33:51 Zfo0EG+70
IEでの動作の途中に、別ウインドウのコマンドプロンプトに文字列を記入するマクロをつくっているのですが、
SENDSTR関数か、SCKEY関数か、どちらの方が安定するものでしょうか?
SENDSTR関数の方がいいような気もするし、
SCKEY関数の方が
コマンドプロンプトのウインドウをアクティブにしなくていい分、
有利な気もするし、、、
ちなみに、CPU負荷が高い状態での動作になります。
どちらがいいでしょうか?

942:名無しさん@お腹いっぱい。
09/02/20 06:24:43 cWHe1c0/0
IEの特定のアドレスが含まれている画像のクリックするスクリプトを組んでいます。
前に、指定の範囲のアドレスを・・・と書いたものです。

他に方法はないかとソースなどをみてみたのですが、画像のアドレスなら前回の
場合と違い数が少なくできそうだなと思いました。

<a href="○○" target="_blank" onClick="return top_ekiden_click_chance('top4', '○○')"><img src="●●"></a></p>

上のソースの●●の部分は、複数あるのですが、POSでゲットして巡回できたらと思っています。
ちなみにリンクの場合上記にも書きましたが下のようになります。

IE = CREATEOLEOBJ("InternetExplorer.Application")
IE.visible = True
IE.navigate("URLリンク(www.yahoo.co.jp)<)", IE.document.links[A].href) > 0
IE2 = CREATEOLEOBJ("InternetExplorer.Application")
IE2.visible = True
IE2.navigate(IE.document.links[A].href)
ENDIF
NEXT
IE.QUIT


943:名無しさん@お腹いっぱい。
09/02/20 11:35:06 mn16sQrP0
>>941
SendSTR()は使えないよ。
ショートカットでのコピペもできない。
右クリックメニューを出して貼り付けは可能。


944:名無しさん@お腹いっぱい。
09/02/21 19:32:30 P+noKJtd0
uwscのエラーウィンドウを消すマクロってありませんか

945:名無しさん@お腹いっぱい。
09/02/21 19:49:38 OlRYAKfW0
>>944
まずはエラーメッセージを抑制するようにしたらいいよ。
OLEなら関連関数の例に書いてあるし、それ以外はUWSC本体の設定にあるか、INIファイル編集するとか。

946:名無しさん@お腹いっぱい。
09/02/21 20:01:51 P+noKJtd0
>>945
具体的にどうすればいいか教えていただけますか


947:名無しさん@お腹いっぱい。
09/02/21 20:10:20 P+noKJtd0
例外エラー対策ならマクロの
最初に
TRY
を入れて

マクロの末尾に
EXCEPT
endtry
あたりいれるのがもっとも簡単なんでしょうか

948:名無しさん@お腹いっぱい。
09/02/22 10:05:02 Rpahjq6x0
>>947
まぁ、UWSCで用意されてるものだしなぁ
例外処理でこれ以上簡単なのはないと思うよ。
…エラーを起こさせないという前提で作ればもっと簡単になるけどねw

あと、全体を無理やり囲うのはどうなん

949:名無しさん@お腹いっぱい。
09/02/22 17:59:07 a3nz7nXd0
特定の文字を判定してそこまでの文字を消すマクロはありますか?

例えば
「あいうえお」と入力してあって
「う」まで消したい、そうすると
「あい」となるようなマクロです。

950:名無しさん@お腹いっぱい。
09/02/22 18:28:16 DuKIHBzQ0
POS COPY CHGMOJ でいいじゃねーの

951:名無しさん@お腹いっぱい。
09/02/22 18:31:19 K0Xm20HXP
string = "あいうえお"
find = "う"

MsgBox(COPY(string, 1, POS(find,string)-1))

いや、違う?
この世界に「愛」だけを残す方法を我々に聞いているのか?

952:名無しさん@お腹いっぱい。
09/02/22 19:08:17 a3nz7nXd0
>>950
初心者なのでよくわかりません

>>951
できれば表計算ソフトで使用したいのですが・・・

953:名無しさん@お腹いっぱい。
09/02/22 19:14:53 mX0F8+M00
>>952
冗談じゃなく、ロジックを正しく説明してくれないとプログラムなんか書けませんから。
日本語から勉強してきてください。


954:名無しさん@お腹いっぱい。
09/02/22 19:16:18 lHLWjdVe0
>>952
その表計算ソフトのスレででも聞けよ…

955:名無しさん@お腹いっぱい。
09/02/22 21:10:11 a3nz7nXd0
>>953
セル内に
1戦1勝0負
10戦5勝5負
1000戦500勝500負



となっているものを負を消して
1戦1勝
10戦5勝
1000戦500勝



としたいのです。
よろしくお願いします。

956:名無しさん@お腹いっぱい。
09/02/22 21:21:24 feS5VAah0
丸投げしたいなら他行ってくれ
スレ違いだ

957:名無しさん@お腹いっぱい。
09/02/22 21:37:49 a3nz7nXd0
>>956
そうですか、自分で努力します。
失礼しました。

958:名無しさん@お腹いっぱい。
09/02/22 22:42:54 K0Xm20HXP
うむ
たとえばExcelの場合だとしよう
A1:A100(A1,A2,・・・A100のセル)にそのデータがあるとすればB1に
=LEFT(A1,FIND("勝",A1))
を入れる。次にB1選択した状態でメニューから
編集-コピーを選択、B2:B100選択した状態で
編集-貼り付けを選択。
さらにB1:B100を選択した状態で
編集-コピーを選択、
C1を選択した状態で、
編集-形式を選択して貼り付け(だったっけ?)-値を選択すると
C1:C100に目的のデータが入力される

UWSCでやれない訳ではないけれど結構大変になる
一般的な表計算ソフトの標準機能でこのような簡単な手段は
用意されているのでそちらを調べたほうがいい



959:名無しさん@お腹いっぱい。
09/02/22 23:27:25 q6eIkfWd0
>>958
反応するなよ。反応されるとそれに対して反応したくなる…
そんなに面倒なことせんでも(ry

960:名無しさん@お腹いっぱい。
09/02/22 23:54:16 a3nz7nXd0
>>958
ありがとうございます。参考になります。

961:名無しさん@お腹いっぱい。
09/02/23 04:11:08 S/nw+oX60
IEが複数開いてたとしてウインドウタイトルに特定の文字が含まれているもの
以外閉じるということはできますか?

例えばタイトルに「自動化ツール」というのがあるとして、その他タイトルに「自動化ツール」
が無かったら閉じるといった感じです。

962:名無しさん@お腹いっぱい。
09/02/23 08:00:29 7fqz0Mlm0
>>961
できます

963:名無しさん@お腹いっぱい。
09/02/23 10:33:55 S/nw+oX60
>>962
死にうせろ

964:名無しさん@お腹いっぱい。
09/02/23 11:15:39 H0niA5cQ0
>>961
簡単だよ

965:名無しさん@お腹いっぱい。
09/02/23 11:42:07 PyFhHQu70
>>961
できます。簡単だから頑張って

966:名無しさん@お腹いっぱい。
09/02/23 16:39:43 8oL82p7A0
>>961
タブブラウザ(FireFox3とか)を使うと、たくさんタブが増えても閉じるボタン一発で閉じれるよ。
ウィンドウをいっぱい開いちゃってもタスクバーで右クリックしてまとめて終了すればいい。
Alt+F4で連続終了させるのが簡単。Alt+TABやAlt+ESCと組み合わせてもいいし。


もしそういうスクリプトを作ったとして、たとえば銀行取引のページが別窓で表示されたときに
同じタイトルだからと言って閉じてしまうと取引が不完全なまま終了しちゃっておかしくなるかも。

あと、UWSCってタイトルでアプリを終了させようとすると、
UWSCってフォルダを開いてるエクスプローラーが閉じられたりUWSC自身が終了したり変なことになる。
そういうヘンなの作ってなにか意味あるの?


967:名無しさん@お腹いっぱい。
09/02/23 21:08:56 WFLH0UN70
それはお前だけじゃね?

968:名無しさん@お腹いっぱい。
09/02/24 00:04:30 3MTrBR1N0
>>961
ウィンドウタイトルに「自動化ツール」が含まれない IE6 を終了

DIM i

FOR i=0 TO GETALLWIN()-1
  IF STATUS(ALL_WIN_ID[i], ST_CLASS) <> "IEFrame" THEN CONTINUE
  IFB !POS("自動化ツール", STATUS(ALL_WIN_ID[i], ST_TITLE)) THEN
    CTRLWIN(ALL_WIN_ID[i], CLOSE)
  ENDIF
NEXT

969:名無しさん@お腹いっぱい。
09/02/24 00:47:30 rOG7rC/gP
私も考えてみたのですがIE7でタブを使っている場合は
どうすればいいんでしょうね

それさえ実現できれば>>961さんの要求を完全に満たせると思うのですが

970:名無しさん@お腹いっぱい。
09/02/24 11:56:45 1GbWnsrA0
chkimg()で透過色指定+形でチェックを同時にできるようにしてほしいのう
画像内の文字に対するgrepみたいなのを作ってるのだけどフォントカラーが変わったら使えなくなってしまう
フォントスタイル自体は固定なので問題ないんだけど

971:名無しさん@お腹いっぱい。
09/02/24 15:42:30 CGjnVP+X0
chkimgX() みたいな関数作って
内部で透過色&形の2重にチェックするぐらいしか思いつかないわー

972:名無しさん@お腹いっぱい。
09/02/24 17:02:53 Jl8nOyx+0
いやそれ画像2枚いりますやんw

973:名無しさん@お腹いっぱい。
09/02/24 20:21:28 7Fr+80aB0
単純な input() や slctbox() ではなく、
リストボックスをいくつか置き、さらにそのリストボックスの値で
ラベルが動的に変化するようなフォームを使いたいのですが、

同じようなことを試みられた方はいらっしゃいますか?
やはり外部DLLを自作するしかないでしょうか。

974:名無しさん@お腹いっぱい。
09/02/24 21:47:44 AV7g6HDD0
>>973
DLLで画面出す気?
プロパティみたいな感じで?
UWSCの有料版で画面作れるらしいけど、
無料がよければ、最近HTAていうの知ったんだけど、
DynamicHTMLで画面作って、結果をクリップボード経由で渡すようなのなら作れると思う。

リストボックスが変更されたら表示を変更。
OKボタンにOnClickイベントとしてクリップボードにセット。
というHTMLを作って拡張子をHTAに変更。
いや、別にHTMLのまんまでもいいんやけど画面まわりうざいし。

あ、いつどうやって終了を知らせるかが問題だな。
・・・


975:名無しさん@お腹いっぱい。
09/02/24 21:51:45 D2y5nC2+0
ajax使用webサイト超めんどー
なんとかなんない?

976:名無しさん@お腹いっぱい。
09/02/24 22:32:36 7Fr+80aB0
>>974
ありがとう、参考になりました。

977:名無しさん@お腹いっぱい。
09/02/25 13:22:51 dj7Ej2fH0
>>968
思うような動作ができました。m(_ _)m


978:名無しさん@お腹いっぱい。
09/02/26 18:52:26 NcOYiIHC0
多重起動禁止はiniファイルを弄ることで簡単にできるようになったのですが
ほかのスクリプトの実行が終わった後に、後のスクリプトを実行できるようにする方法はありませんか?

979:名無しさん@お腹いっぱい。
09/02/26 19:39:33 ncgoh4z50
callで呼び出せば良いんじゃない?

980:名無しさん@お腹いっぱい。
09/02/26 19:40:54 NcOYiIHC0
いや 先に実行したスクリプトが終わった判定はどうすればいいのかなと思いまして

981:名無しさん@お腹いっぱい。
09/02/26 19:41:18 NcOYiIHC0
ああ連続でやればいいんですね

982:名無しさん@お腹いっぱい。
09/02/27 16:52:50 fl1SuMSB0
>>975
FLASH,ActiveX,,JAVAappletなんかよりはよっぽど楽

983:名無しさん@お腹いっぱい。
09/02/28 21:17:11 hQtF23UU0
slctboxの戻値「slct_1」等は出力させると数字のみになるのはなぜなんでしょうか?
select ~selend文で
caseのあとは"slct_"+数字でも数字のみ指定でも正しく動いているようですが

984:名無しさん@お腹いっぱい。
09/02/28 23:33:07 lrDMYjZcP
>>983
一般的に定数は何かしらの数値に割り当てられるのが普通です。
数値にしておくと演算子=,<>等の処理をそのまま流用できるから設計上楽なのです。
それならば文字列として"SLCT_1"として持たせたほうが分かりやすいのでは?とも考えられますが、
小さい情報量にしたほうがexeサイズが小さくて済んだり、計算量が少なくて済むなど
メリットが大きいのです。
ただしSLCT_1が1と出力されるからといってバージョンアップ等で今後変更される可能性があるので
必ず比較する場合は
「IF ret=1 THEN・・・」ではなく
「IF ret=SLCT_1 THEN・・・」とすべきでしょう。

985:983
09/03/01 00:17:23 re5Hkvhc0
なるほどためになりました
サンクス

986:名無しさん@お腹いっぱい。
09/03/01 08:13:50 c3BdarSQ0
<img src="http://~~~/Apos/img/web/10174/106711_1.gif">

リンクに使われている上記のような画像が複数あったとします。
ページ内にある全ての途中まで共通しているURLの画像をゲット
してクリックすることはできますか?

http://~~~/Apos/img/web/10174ここまでが一緒で後は違うアドレスです。

987:名無しさん@お腹いっぱい。
09/03/01 12:17:03 jADlBu/J0
できますよ

988:名無しさん@お腹いっぱい。
09/03/01 17:53:19 b7uK3KHI0
// IEで表示中のページにリンクされているzipへのリンクを取得し、IEDownload()関数でダウンロードする。
while true
 data = IEGetData( IE, "TAG=A", i )
 Src = IEGetSrc( IE, "A", i )
 if !length(Src) then break
 Link = BetweenStr( Src, "href=<#DBL>", "<#DBL>" )
 ifb "zip" = Copy( Link, Pos(".", Link, -1) + 1, Length(Link) - Pos(".", Link, -1) ) Then
  IE.navigate( Link )
  IEDownload( IE )
  break
 Endif
 i = i + 1
wend

Function IEDownload( var IE )
Fend


989:名無しさん@お腹いっぱい。
09/03/01 19:53:07 c3BdarSQ0
>>987
死にうせろ2

990:名無しさん@お腹いっぱい。
09/03/01 20:33:14 q5FcoyWP0
>>989
簡単だよ 自分の頭蓋骨の中をたまには使えよ

991:名無しさん@お腹いっぱい。
09/03/01 21:14:20 b7uK3KHI0
data = IEGetData( IE, "TAG=A", i )
これってAタグならラベル部分、その他ではValueを取り出せるんだけど
ラベルを指定してクリックするのがIELINK()
この後に
IELINK(data)
って入れてもいいんだけど、ダウンロード用ページだと同じラベルでいっぱいファイルがある。
だからUWSCの関数では番号指定とかでもしないとクリックできない。
まあリンクは簡単に取り出せるからIE.Navigate()で開けばいいんだけど

「ファイルのダウンロード」窓がクリックできん・・・
ボタンが反応はしてるんだけどクリックできん。
CtrlWin()でアクティブにしてもアクティブにならない。
以前作ったときはちゃんと動いていたんだけどなあ・・・
画像の保存とかページの保存とかならIEの子ウィンドウとして拾えるけど
ダウンロードは親子関係がないっぽいし。
モーダルとモードレスで親子関係が違ってくるとかなのかな。
いや、つかんでもクリックできないんだよな。

親子両方クリックしたらアクティブになった。なんか裏のやつを子として処理してたのかな。
でもフォーカスが「保存」ボタンには移ってるんだけどなあ・・・
名前をつけて保存ならクリックできるのに。

戦車で野球のボールを投げたら時速327キロか。


992:名無しさん@お腹いっぱい。
09/03/02 00:20:27 OsLHIqg20
RecIE使ってみたけど、ダイアログのクリックは拾ってくれないな。
IELink(IE,"DL002")
BusyWait(IE)

本体で記録してみたけど
ACW(GETID("ファイルのダウンロード","#32770"),422,375,435,243,0)
ScKey()はだめだったけどMouseOrg()で窓に直接Kbd()でならもしかしていけるかも。

だめだった。
しかし、MouseOrg()してKbd()してClkItem()したらいけた。
Kbd()でアクティブ化に成功してるんだろう。


993:名無しさん@お腹いっぱい。
09/03/02 11:20:51 OsLHIqg20
「この種類のファイルであれば常に警告する」のチェックを外せばそのままダウンロードが開始されるんだな・・・
今までやらなかったけどもうこれが一番の解決法か・・・
と思ったけど保存ダイアログが出てこないと思ったら勝手に起動されちゃうんだな。
上書きの警告もないし、キャッシュにしか落ちてないんだろう。
これじゃダウンロードにならない。
URLToFileとかいうのが使えればいいんだけど今やってるところはパスワード制限かかっててアクセスエラーになるからできないし。

>MouseOrg()してKbd()してClkItem()したらいけた。
これについては親子両方に送ればうまくいったが、子だけに送ったらだめだった。
多分他の窓をクリックすることでアクティブ状態が切り替わってうまくいってたんだな。
トップレベルなのに非アクティブなあの状態は何とかならんのか・・・

もしかしたらあの二重の窓の二つ目が開く直前に裏の窓をクリックしてしまうのが問題なのかもしれん。
親窓の方拾ったらスルーして待つかな。


994:名無しさん@お腹いっぱい。
09/03/02 12:25:41 MGuj9EpHO
他人が役立つ日記ならここで大歓迎
環境に依存した再利用性の低い独り言はブログにでも貼ったら?

995:名無しさん@お腹いっぱい。
09/03/02 13:02:26 pSlHrzIi0
次スレたててこい>浪費したやつ

996:名無しさん@お腹いっぱい。
09/03/02 17:11:41 OsLHIqg20
【速報】 全鯖規制ISP一覧 VIPPERのせいですね、わかります
スレリンク(news板)
URLリンク(qb5.2ch.net)

なんか祭りになってたんでスレ立てしてみたんです。
ねws
スレリンク(sec2chd板)

そしたら全サーバーで規制されました。


997:名無しさん@お腹いっぱい。
09/03/02 19:50:06 rP5khwz50
自動化ツールuwsc使いよ集まれ4
スレリンク(software板)

998:名無しさん@お腹いっぱい。
09/03/02 21:30:58 9PDTuTrY0
おつおつ。

999:名無しさん@お腹いっぱい。
09/03/03 02:16:28 0ITm2xmn0
999

1000:名無しさん@お腹いっぱい。
09/03/03 02:27:23 6utcIoKu0
んじゃ1000

1001:1001
Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch