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

CREATEFORM FOM_FORM2 Xボタン / まるぱ
毎日UWSC使っていて重宝しています、ありがとうございます。

フォーム画面2つめ、こちらのXボタンが効かないですが、これは仕様でしょうか?
このボタンをクリックしてフォーム画面を非表示にする方法はありますでしょうか。
アドバイスよろしくお願いいたします。

No.3311 2016/12/20(Tue) 10:44:54

Re: CREATEFORM FOM_FORM2 Xボタン / stuncloud
再現できません
こちらではふたつめのフォームも×ボタンで閉じられます

No.3313 2016/12/20(Tue) 12:26:53

Re: CREATEFORM FOM_FORM2 Xボタン / まるぱ
stuncloudさん、ありがとうございます。

オプション指定で「+FOM_FORMHIDE」にしていたのが原因でした。(- -;

失礼しました

No.3316 2016/12/20(Tue) 20:57:04

Re: CREATEFORM FOM_FORM2 Xボタン / まるぱ
FOM_FORMHIDE このオプション「フォームを非表示状態で起動する」ですが、
これをCTRLWIN(XXX,SHOW)で表示すると、
Xボタン押しても消えませんね。

これはXボタン押したら消えるようになるのが希望です。

No.3317 2016/12/20(Tue) 21:16:11

Re: CREATEFORM FOM_FORM2 Xボタン / stuncloud
> FOM_FORMHIDE このオプション「フォームを非表示状態で起動する」ですが、
> これをCTRLWIN(XXX,SHOW)で表示すると、
> Xボタン押しても消えませんね。

なるほど、閉じなくなりました
なにか回避できる手段ないかなと頑張ってみましたがちょっと手に負えなさそう
フォーム内に閉じるボタンを作るくらいですかねぇ…
umiumiさんに対応してもらうのが良さそうですね

No.3318 2016/12/21(Wed) 10:55:30

Re: CREATEFORM FOM_FORM2 Xボタン / まるぱ
stuncloudさん、症状の確認ありがとうございます。

>フォーム内に閉じるボタンを作る
はい、今はそのようにしています。

umiumiさん、次回のバージョンアップで対応をしていただけたら、助かります。m(- -)m

No.3319 2016/12/21(Wed) 21:25:32

Re: CREATEFORM FOM_FORM2 Xボタン / umiumi
確認しました。
修正します。

No.3320 2016/12/21(Wed) 23:29:42
教えて下さい。エクセルの画面が最大化にならないのです((+_+)) / ジャスミン
UWSCを使い始めたばかりの初心者です。
業務を簡素化するためのプログラム作成を頼まれておりますがうまくいかないので
教えてもらえると助かります。

一部抜粋ですが、以下のようにエクセルのファイルを開いてマクロを実行するのに画面を最大化して見やすくしたいのですが、"CTRLWIN,MAX"が反応してくれません。
どのようにしたらよろしいのでしょうか?
簡単な質問なのだろうと思うと申し訳ないのですが、教えていただけたら助かります。

EXCEL = XLOPEN("C:\Users\USER\AppData\Roaming\Microsoft\Excel\XLSTART\PERSONAL.xlsb")
EXCEL = XLOPEN("C:\Users\USER\Desktop\Test.xlsx")
id = GETID("c:\Users\USER\Desktop\Test.xlsx")
IFB STATUS(id, ST_ICON)
CTRLWIN(id,NORMAL)
ENDIF
//msgbox("最大化しましょう")
IFB !STATUS(id,ST_ACTIVE)
CTRLWIN(id, MAX)
ENDIF
EXCEL.Run("PERSONAL.XLSB!Macro2")

No.3312 2016/12/20(Tue) 11:00:14

Re: 教えて下さい。エクセルの画面が最大化にならないのです((+_+)) / stuncloud
> id = GETID("c:\Users\USER\Desktop\Test.xlsx")
おそらくこの部分でidが取れていません (-1 になっていると思われる)
msgbox(id) として確かめてみてください

id = GETID("Test.xlsx")
のようにファイル名だけで部分一致させるか
id = hndtoid(EXCEL.hwnd)
としてウィンドウハンドルをidに変換する

No.3314 2016/12/20(Tue) 13:43:03

Re: 教えて下さい。エクセルの画面が最大化にならないのです((+_+)) / ジャスミン
stuncloud 様

早速のご回答ありがとうございます♪
指示してくださった通りに直したらできました!!!
あんなに悩んでいたのにあっという間に解決できて感激しました!!
すごいです♪
感謝です♪
ありがとうございました(*^-^*)

No.3315 2016/12/20(Tue) 14:09:53
教えてください / c.o
設定で、『毎日、6時から16時まで7分間隔で実行』がわからいです。
よろしくお願い致します。

No.3309 2016/12/19(Mon) 21:14:57

Re: 教えてください / 俄プログラマー
ヘルプファイルの使い方、スケジュール設定、式による設定より
6 <= HH AND HH <= 16 AND YMDNN mod 7 = 0

No.3310 2016/12/19(Mon) 21:43:13
uwsファイルを指定の場所にtextファイルで作成したい / タカハシ
textblockの入れたuwsファイルをSPLITで配列に入れて、forinでfopen、fgetを利用しuwsファイルのデータを読込、新規textファイルに指定したパスに作成をしたいのですがうまくいきません。下記のようなエラーがでます。

can't be written in 中断しますか?になります。

textblock name
C:\Users\aruke\Desktop\UWS\テキスト1.uws
C:\Users\aruke\Desktop\UWS\テキスト2.uws
C:\Users\aruke\Desktop\UWS\検索\テキスト3.uws
endtextblock


testa=SPLIT( name,"<#CR>")


for i in testa
yomi=fopen(i, F_READ)
yomi1=fget(yomi,F_ALLTEXT)
fclose(yomi)

sinki=fopen(, F_write)
fput(sinki, yomi1)

fclose(sinki)
next

No.3276 2016/12/12(Mon) 11:19:07

Re: uwsファイルを指定の場所にtextファイルで作成したい / 俄プログラマー
新規ファイルをどの場所に何の名前で保存するのかな?
それが答えです。

No.3277 2016/12/12(Mon) 11:49:22

Re: uwsファイルを指定の場所にtextファイルで作成したい / miles
> うまくいきません。下記のようなエラーがでます。
> can't be written in 中断しますか?になります。


1)エラーを見て、うまくいかないところを捜します。
2)「書き込みできません」ということで、ファイル書き込みの所を見ます。

No.3278 2016/12/12(Mon) 12:04:28

Re: uwsファイルを指定の場所にtextファイルで作成したい / stuncloud
> sinki=fopen(, F_write)
他の方も言われてますがパス指定してなきゃ書き込めませんよね
あと、やりたいことはつまりファイルのコピーですよね
doscmdでcopyすればいいのでは?
> textファイルで作成したい
なのでそのときに拡張子を.txtにしてやれば良い

No.3279 2016/12/12(Mon) 12:20:29

Re: uwsファイルを指定の場所にtextファイルで作成したい / タカハシ
俄プログラマー様、返信ありがとうございます。
下記のコードで試してみましたが、指定したパスにファイルの作成はできましたが、tes1=fget(tes, F_ALLTEXT)で取得したデータが新規作成したファイルに反映されません。どこが間違っているのでしょうか?

textblock name
C:\Users\aruke\Desktop\UWS\テキスト1
C:\Users\aruke\Desktop\UWS\テキスト2
C:\Users\aruke\Desktop\UWS\検索\テキスト3
endtextblock

textblock name1
テキスト1.uws
テキスト2.uws
テキスト3.uws
endtextblock


test3 = ""
test4 = "C:\Users\aruke\Dropbox\" //パスをしっかり確認する事

testa=SPLIT( name,"<#CR>")
testa1=SPLIT( name1,"<#CR>")

for i in testa
if i = ""
 gettime()
 i="無題"+g_time_yy4+g_time_mm2+g_time_dd2+g_time_hh2+g_time_nn2+g_time_ss2
else
 i=replace( i, " ", "_" )
i=replace( i, "|", "_" )
i=replace( i, "/", "_" )
endif

for y = 0 to length(testa1)-1
FNAME=test3+test4+testa1[y]+".txt" //test4の"/.txt"は使わない


DOSCMD("echo %DATE% %TIME% > " + FNAME)
//ファイルをオープン

tes=fopen(FNAME, F_READ)
tes1=fget(tes, F_ALLTEXT)
FCLOSE(tes)
ID = FOPEN(,F_READ or F_WRITE)
fput(ID, tes1)
FCLOSE(ID)


next
next

No.3280 2016/12/12(Mon) 14:29:39

Re: uwsファイルを指定の場所にtextファイルで作成したい / タカハシ
miles様、返信ありがとうございます。

パスの指定は無事できましたが、tes1=fget(tes, F_ALLTEXT)のデータが新規作成ファイルに反映されません。

No.3281 2016/12/12(Mon) 14:34:09

Re: uwsファイルを指定の場所にtextファイルで作成したい / タカハシ
stuncloud様、返信ありがとうございます。
doscmdでcopyで調べてみます。

No.3282 2016/12/12(Mon) 14:52:02

Re: uwsファイルを指定の場所にtextファイルで作成したい / タカハシ
上記のコードの一つの部分を修正です。

[修正前の分]
textblock name
C:\Users\aruke\Desktop\UWS\テキスト1
C:\Users\aruke\Desktop\UWS\テキスト2
C:\Users\aruke\Desktop\UWS\検索\テキスト3
endtextblock

[修正後の分]
textblock name
C:\Users\aruke\Desktop\UWS\テキスト1.uws
C:\Users\aruke\Desktop\UWS\テキスト2.uws
C:\Users\aruke\Desktop\UWS\検索\テキスト3.uws
endtextblock

No.3283 2016/12/12(Mon) 15:03:12

Re: uwsファイルを指定の場所にtextファイルで作成したい / 俄プログラマー
吹き出しでもプリントでも見える形で確認することをお勧めします。
データはしっかり呼び出せているのか等の確認ができますよ。
原因を探る技術を付けましょう。

No.3284 2016/12/12(Mon) 15:06:24

Re: uwsファイルを指定の場所にtextファイルで作成したい / タカハシ
stuncloud様、DOSCMDで試してみましたが、下記のエラーが出ます。
式がおかしいor型が合っていない
DOSCMD("copy" i test4)

[コード]
textblock name
C:\Users\aruke\Desktop\UWS\テキスト1.uws
C:\Users\aruke\Desktop\UWS\テキスト2.uws
C:\Users\aruke\Desktop\UWS\検索\テキスト3.uws
endtextblock

test4 = "C:\Users\aruke\Dropbox\" //パスをしっかり確認する事

//戻値 = DOSCMD( コマンド, [同期フラグ, 画面表示] )
testa=SPLIT( name,"<#CR>")

for i in testa
DOSCMD("copy" i test4)
next

No.3285 2016/12/12(Mon) 15:21:00

Re: uwsファイルを指定の場所にtextファイルで作成したい / mocco
バックアップ目的でファイルコピーしてくれるようなフリーソフトあります
私はそれを使っています。便利です。

No.3287 2016/12/12(Mon) 15:51:20

Re: uwsファイルを指定の場所にtextファイルで作成したい / stuncloud
> 式がおかしいor型が合っていない
> DOSCMD("copy" i test4)

エラー内容の通りです、式が正しくありません
ヒント:文字列の連結は + を使う

質問される前にもう少しエラー文が何を言わんとしてるか考えてみましょう
UWSCのエラー文は簡素で情報が不十分な面はありますが、とは言え的はずれなことが書かれているわけではありません
これは俄プログラマーさんのおっしゃっている
> 原因を探る技術を付けましょう。
にもつながります
プログラムを書く上でとても大切なことです

No.3288 2016/12/12(Mon) 16:39:50

Re: uwsファイルを指定の場所にtextファイルで作成したい / miles
> tes1=fget(tes, F_ALLTEXT)のデータが新規作成ファイルに反映されません。
> ID = FOPEN(,F_READ or F_WRITE)

新規作成ファイル名がないのでファイルオープンエラーですよ。
(確かに、F_READ or F_WRITEのとき、なぜか戻値がエラーにならず、ファイルIDが返ってきますが...)

No.3290 2016/12/12(Mon) 17:31:49

Re: uwsファイルを指定の場所にtextファイルで作成したい / しろまさ
milesさん、それは昔Linersさんが紹介してたNULL書込の動作ですよ。
メモリ上でオープンして読み書きできるんですよね。(と関係ない横槍を入れる奴^^)

ID = FOPEN(,F_READ or F_WRITE)
  fput(ID, 123)
  fput(ID, 234)
  msgbox(fget(ID, 2))
FCLOSE(ID)

No.3291 2016/12/12(Mon) 18:25:09

Re: uwsファイルを指定の場所にtextファイルで作成したい / miles
しろまささん、ご指摘ありがとうございます。
知りませんでした。 勉強になります。(横槍、縦槍、OKですよ!レスの中では)
省略なしで
ID = FOPEN(NULL,F_READ or F_WRITE)
ということですね。

タカハシさん、ファイルオープンエラーではなく、
ファイル名がないので前記の通り、NULL書込になります。(さりげなく訂正)

ID = FOPEN(新規ファイル名,F_READ or F_WRITE)
でファイルオープンしてから
fput(ID, tes1)
で書き込んでください。

No.3292 2016/12/13(Tue) 09:00:16

Re: uwsファイルを指定の場所にtextファイルで作成したい / タカハシ
俄プログラマー様、返信ありがとうございます。
原因を探る技術を身につけるようにします。

No.3299 2016/12/13(Tue) 22:23:38

Re: uwsファイルを指定の場所にtextファイルで作成したい / タカハシ
stuncloud様、返信ありがとうございます。
文字列の連結は +でやってみましたがコピーできませんでした。
下記のコードでやってみました。

test4 = "C:\Users\aruke\Dropbox\新しいテキストドキュメント.txt" //パスをしっかり確認する事

//戻値 = DOSCMD( コマンド, [同期フラグ, 画面表示] )
testa=SPLIT( name,"<#CR>")

for i in testa
DOSCMD("copy"+ i + test4)
next

No.3300 2016/12/13(Tue) 22:31:19

Re: uwsファイルを指定の場所にtextファイルで作成したい / タカハシ
miles様、返信ありがとうございます。配列やfor文がからんでくるとなかなか難しいですね。
No.3301 2016/12/13(Tue) 22:34:29

Re: uwsファイルを指定の場所にtextファイルで作成したい / 俄プログラマー
printを使って確認されましたか?
思い通りの動作になっているか目で確かめられますよ
また目的の動作を全て作って考えると間違っている箇所が解りづらいです。
最小単位で動作テストを繰り返すと良いです。
以下確認の例です。明らかに動作がおかしいのが目で確認する事ができます。
先のプログラムの一部を下記のように変更してみてください。printの部分を追加するだけです。

DOSCMD("echo %DATE% %TIME% > " + FNAME)
//ファイルをオープン

tes=fopen(FNAME, F_READ)
tes1=fget(tes, F_ALLTEXT)

//printを使い確認
print "----------------------------------------------------------"
print "i="+i
print "y="+y
print "tes1="+tes1
print FNAME
print "----------------------------------------------------------"
print ""

FCLOSE(tes)
ID = FOPEN(,F_READ or F_WRITE)
fput(ID, tes1)
FCLOSE(ID)

No.3303 2016/12/14(Wed) 03:33:00

Re: uwsファイルを指定の場所にtextファイルで作成したい / stuncloud
> 文字列の連結は +でやってみましたがコピーできませんでした。
> DOSCMD("copy"+ i + test4)


俄プログラマーさんも書かれてますがね、一旦DOSCMDをやる前に
print "copy"+ i + test4
としてみれば何が悪いかは一目瞭然ですよ…?

ここまでくるとすごいな…
自分で原因を追求する気はないのかしら

で、ですね
きっとあとでまた聞かれるだろうから先に答えておきますね
ファイルパスに半角スペースが含まれる場合にDOSCMDが成功しないんですよ
そういうときはパスを "<#DBL>" で括る必要がありますからね
だからパスが入る変数である i と test4 は

"<#DBL>" + i + "<#DBL>"
"<#DBL>" + test4 + "<#DBL>"

としてやるのが安全です
ちなみにこれはUWSCがどうこうという話ではないのでここで聞かれても困る系の質問に該当します

以下蛇足

僕がDOSCMDを使うときの半スペ忘れ防止対策を書いときますね
dim cmd[] = command, arg1, arg2
doscmd(join(cmd))
コマンドとそれに渡す値を順番に配列に突っ込んどいて半スペでjoinして実行します
いちいち + " " + なんて書く煩わしさからも開放されるので楽でいいですよ

No.3304 2016/12/14(Wed) 12:00:43

Re: uwsファイルを指定の場所にtextファイルで作成したい / タカハシ
俄プログラマー様、何度も回答頂きありがとうございます。
print分で一度一つ一つ確認していきます。
もう少し自分で考えてから質問するようにします。
反省しています。

No.3305 2016/12/14(Wed) 12:35:55

Re: uwsファイルを指定の場所にtextファイルで作成したい / タカハシ
stuncloud様、何度も回答頂き感謝しています。
これからは、printでしっかり確認してから質問するようにします。
<#DBL>で括るのは、知らなかったです。
自分のダメさ加減を反省しています。

No.3306 2016/12/14(Wed) 12:41:43

Re: uwsファイルを指定の場所にtextファイルで作成したい / 俄プログラマー
処理が速い場合は途中にメッセージボックスを入れたり、
GETKEYSTATEでキーが押されるまで中断させたりするとより確認が容易になります。

//GETKEYSTATEを使った中断の例
fukidasi("PrintScreenキーで再開")
repeat
sleep(1)
until GETKEYSTATE(VK_SNAPSHOT)

「実行してみて動かない!→聞いてみよう!」ではなく
動かない!→どこが悪いか探る or 過去ログ検索 or ネットで検索→それでも解決しない場合聞いてみる
デバッグの力も身に付いて良い経験になると思います。

No.3308 2016/12/14(Wed) 19:10:42
IESetDataで「 」つきがクリックできません / くり坊
よろしくお願いいたします。

<input type="button" onClick="hoge();" value=" ほげ ">

上記のボタンをクリックしたいのですがIESetDataでは「 」を識別しないのかクリックできません。
どのようにすればクリック可能でしょうか?

No.3294 2016/12/13(Tue) 15:14:56

Re: IESetDataで「 」つきがクリックできません / くり坊
上記valueの中身および「」の中身ですが先頭に半角文字で「&nbsp;」が書かれています。
こちらでは半角スペースに変換されてしまっております。

No.3295 2016/12/13(Tue) 15:19:46

Re: IESetDataで「 」つきがクリックできません / satocha
関数hoge()のつくり次第ですが、私ならまずは
ie.navigate("javascript:hoge()")
を試してみます。
関数hoge()がクリックした要素を見ている場合は上記では機能しないので、同様にjavascriptで"ほげ"にマッチするinput ボタン要素を探し、click()かな。

No.3296 2016/12/13(Tue) 16:06:06

Re: IESetDataで「 」つきがクリックできません / stuncloud
// idもnameもなかったらquerySelector
ie.document.querySelector("input[onclick=<#DBL>hoge();<#DBL>]").click()

// iesetdataならこれでクリックできました
iesetdata(ie, TRUE, "tag=input", n) // nは何個目のinput要素かの番号、上から数えて3つ目なら3を入れる

No.3297 2016/12/13(Tue) 18:18:13

Re: IESetDataで「 」つきがクリックできません / くり坊
お二方のいずれの方法でもクリックが成功いたしました。
感謝いたします。ありがとうございました。

No.3307 2016/12/14(Wed) 15:03:30
DOSCMDでコピー、変数利用の仕方 / タカハシ
DOSCMDでコピーしたいのですが、DOSCMD内でtest4の変数は認識されません。
普通にC:\Users\aruke\Dropbox\新しいテキストドキュメント.txtで指定するとちゃんとコピーできます。DOSCMDで変数利用する方法ないでしょうか?

test4 = "C:\Users\aruke\Dropbox\新しいテキストドキュメント.txt" //パスをしっかり確認する事


DOSCMD("copy C:\Users\aruke\Desktop\UWS\エクセル出力2.uws"+test4)

No.3298 2016/12/13(Tue) 22:08:02

Re: DOSCMDでコピー、変数利用の仕方 / K.Nagatani
まさか?エクセル出力2.uwsの後に半角スペースが無かったとか?Copyの後に半角スペースは確認出来ますがuwsの後に半角スペースが確認できませんので‼念のため‼
No.3302 2016/12/13(Tue) 23:22:55
RecIEのフレームが下がらない / モッチー
Win 8.1でRecIE(2.1.2.0)を使用していますが、一度ブラウザの下にあるフレームを結構上まであげたのですが、その後 フレームの太さが変わり、さがらなくなってしまいました。
再インストールしかないでしょうか?

No.3259 2016/12/05(Mon) 21:40:45

Re: RecIEのフレームが下がらない / Nagatani
昔私が質問したumiumiさんの回答です。
「どうしてもサイズが変更できないのであれば
 RecIEを終了した状態で、RecIE.INI を削除してください 」
「RecIE.INI」のバックアップを取って自己責任でお願いします。

No.3261 2016/12/05(Mon) 22:04:25

Re: RecIEのフレームが下がらない / モッチー
ありがとうございます。
No.3275 2016/12/10(Sat) 16:14:51
アプリが実行中かどうかの判断方法について 2 / にゃんこ
前回、アプリが実行中かどうかの判断をCPUの使用率で行う方法を教えていただきました。

Dim pid = Status(GetID(" - Internet Explorer"), ST_PROCESS)
Ifb pid > 0
  with CreateOleObj("WbemScripting.SWbemLocator")
    with .ConnectServer
      GetOleItem( .ExecQuery("SELECT * FROM Win32_PerfFormattedData_PerfProc_Process WHERE IDProcess = " + pid) )
      MsgBox(ALL_OLE_ITEM[0].PercentProcessorTime)
    endwith
  endwith
EndIf

これをディスクの使用率に変えたいのですがどうすればいいでしょうか?

No.3266 2016/12/06(Tue) 13:19:29

Re: アプリが実行中かどうかの判断方法について 2 / stuncloud
この手のWindowsの情報を取得する、というのはだいたいWMIでできますね
今回のも「WMI ディスク使用率」で検索すればサンプルも出てくると思います
UWSC以外が出てくるかもですが、どういったWQL(ExecQueryの引数に渡すクエリ文)を渡すかは使う言語は関係なく同じなので参考になります
で、実際に検索してみるとどうやら Win32_LogicalDisk クラスで必要な情報が得られそうなことがわかります
すると以下のようになります

with createoleobj("WbemScripting.SWbemLocator")
 with .ConnectServer
  col = .ExecQuery("SELECT Name,FreeSpace,Size FROM Win32_LogicalDisk") // Win32_LogicalDisk からName,FreeSpace,Sizeの値を返してね、というWQL文
 endwith
endwith

for disk in getoleitem(col) // ディスクの数分情報が含まれているので、ループで処理
 if disk.Size > 0 then // サイズが得られないもの(空のCDドライブとか)は無視する
  print disk.Name + " ドライブのディスク使用率は " + GetDiskUsage(disk) + "%です"
 endif
next

function GetDiskUsage(disk)
 usage = (disk.Size - disk.FreeSpace) / disk.Size * 100
 result = round(usage, -2)
fend

どういう作業をされているかはわかりませんが、WMIの使い方を覚えられるとできることの幅がぐんと広がると思いますよ

No.3270 2016/12/07(Wed) 13:44:35

Re: アプリが実行中かどうかの判断方法について 2 / にゃんこ
申し訳ありません。

ディスクの使用率ではなくディスクの速度でした。
タスクマネージャーのプロセスのディスクで○MB/秒の事です。
CPUの使用率では0%になっていて、アプリが実行中かどうかの判断が難しかったので、
ディスクの速度で判断しようと考えました。

PercentProcessorTimeの記述あたりを変更すればいいのかなと思って
PercentProcessorTimeで検索してみたのですが、引っかかりませんでした。

よろしくお願いします。

No.3271 2016/12/07(Wed) 18:22:50

Re: アプリが実行中かどうかの判断方法について 2 / stuncloud
なら IOWriteBytesPersec じゃないですかね
もう一度 Win32_PerfFormattedData_PerfProc_Process で検索してどのようなプロパティがあるかよく調べてみてください

No.3272 2016/12/07(Wed) 18:43:21

Re: アプリが実行中かどうかの判断方法について 2 / しろまさ
私は microsoft の WMICodeCreator を使って調べています。便利ですよ。
No.3273 2016/12/09(Fri) 09:11:53

Re: アプリが実行中かどうかの判断方法について 2 / stuncloud
> WMICodeCreator
おお、僕も以前は使ってました
最近は専らPowerShellですね

No.3274 2016/12/09(Fri) 09:46:13
SetHotkeyについて / kati

下記のようなプログラムを実行してます。
(slctboxの2番目を押すまでは停止しないプログラム)
slctboxの1番目と"alt+a"を押下した時に、同じ処理を実行させていますが、
slectboxを押した時は、msgboxを返答するまで処理が停止するので、
連続で実行されませんが、
"alt+a"を押下した場合、押した分処理が実行されてしまいます。
(msgboxが"alt+a"を押した分出てしまう。)
"alt+a"を押下した時も、先に押した"alt+a"の処理が終わるまで
待ってほしいのですが、方法ありますか?


SetHotkey(VK_A,MOD_ALT,"aaa")
aaa

Procedure aaa
Dim HOTKEY_VK,HOTKEY_MOD,select_choice,loopEnd
Repeat

Ifb (HOTKEY_MOD=MOD_ALT) And (HOTKEY_VK=VK_A) Then
loopEnd = "end"
select_choice = 1
EndIf

Ifb select_choice = ""
select_choice = SlctBox(SLCT_BTN + SLCT_NUM,0,0,0,, _
1,2)
EndIf

Ifb select_choice = 1 Then
loopEnd = "end"
EndIf

msgbox(select_choice)

select_choice = ""

Until loopEnd = "end"

FEnd
/*

No.3262 2016/12/06(Tue) 00:01:00

Re: SetHotkeyについて / miles
ホットキー処理中は、ホットキーを解除しておけば、いいのではないですか?
1)ホットキー処理開始時、ホットキーの解除をする。
2)ホットキー処理終了時、ホットキーを再設定する。

下記の部分は、Repeatの前のほうがいいと思いますよ。
Ifb (HOTKEY_MOD=MOD_ALT) And (HOTKEY_VK=VK_A) Then
loopEnd = "end"
select_choice = 1
EndIf

No.3267 2016/12/06(Tue) 15:08:42

Re: SetHotkeyについて / kati
miles様
なるほど。一回解除するという事は思いつきませんでした。
後、インデントが無く分かりにくいプログラムを見ていただき、
ありがとうございました。
(テキストで記入して記載しており、貼り付けて送信したらインデントが消えてました。)

No.3269 2016/12/06(Tue) 23:52:45
IE11で複数タブが開けない / shell_初心者
現在、Windows10、IE11の環境で複数タブを開く簡単なUWSファイルを作成してテストしているのですが、3つ目のタブ表示で必ずエラーになり進めません。

記述としては
IE = CREATEOLEOBJ("InternetExplorer.Application")
IE.visible = True
IE.navigate2("http://myserver01/hogehoge1.htm")
IE.navigate2("http://myserver01/hogehoge2.htm", $800)
         ・
         ・
IE.navigate2("http://myserver01/hogehoge6.htm", $800)

と至ってシンプルな物ですが、デバッグでは、4行目のIE.navgate2で「そのインターフェースは認識されません」
通常に起動させても5行目で「例外が発生しました」のCOMエラーが出て、最大でも2画面(タブ)しか表示されない状態です。

何か調査・解決する方法をご存知でしたらご教示願いたく存じます。

UWSC Ver5.2.3
windouws10
IE11

ちなみに、IE9のVISTA環境でUWSC Ver4.8c1では問題なく動作しました

No.3233 2016/12/01(Thu) 21:34:22

Re: IE11で複数タブが開けない / miles
これでどうですか?

IE = CREATEOLEOBJ("InternetExplorer.Application")
IE.visible = True
IE.navigate2("")   // エラー回避のために追加
BusyWait(IE)    // 更新待ち処理
IE.navigate2("http://myserver01/hogehoge1.htm")
BusyWait(IE)    // 更新待ち処理
IE.navigate2("http://myserver01/hogehoge2.htm", $800)
BusyWait(IE)    // 更新待ち処理

// IE11にて画面更新後に操作(COM)ができない  #N45
//  IE11 では一度アクティブ状態にする必要があります。
//  ので画面更新の後に IEに対して WM_ACTIVATE を送り操作可能にします。
  DEF_DLL SendMessageA(Hwnd, Long, Long, Dword): bool: user32
  CONST WM_ACTIVATE = $06
  Procedure BusyWait(ie)   // 更新待ち処理
   repeat
    Sleep(0.2)
   until (! ie.busy) and (ie.readyState=4)
   SendMessageA(ie.Hwnd, WM_ACTIVATE, 0, 0) // 更新直後に WM_ACTIVATEを送る事によりバックグランドでも操作可となる
  Fend

No.3256 2016/12/05(Mon) 16:34:04

Re: IE11で複数タブが開けない / shell_初心者
mile様、ご回答ありがとうございます。busywaitも記述してみましたが、repeat文で例外エラーが出てきました。
結論としてexe作成ツールでexe化した上で「管理者として実行」する事で解決致しました。
一般アカウントによる、フォルダ参照制限か更新制限がそもそもの原因になっていた模様です。
しかし、IEのタブにサイトを追加するだけのUWSで、「アプリの更新」ダイアログが出てくるのはなんか納得いきませんでした。

No.3268 2016/12/06(Tue) 18:47:14


 過去ログ(〜2016/10/02)・検索ツール


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