[ 掲示板に戻る ]

過去ログ閲覧モード

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
途中でプログラムを停止したい / まきす
お世話になっております。

タイマーセットなどして動いたプログラム動作中、
停止ボタンまでポインタを動かそうとしても、
プログラムに従ってポインタが動いてしまいます。
なんとかプログラムの動きの合間に停止ボタンを押すのですが、
なんだか苦労しております。
途中で設定したプログラムを停止する方法は無いでしょうか?

No.3242 2016/12/03(Sat) 17:47:15

Re: 途中でプログラムを停止したい / koi
標準ではALT+F2で終了(停止)ですが終了しませんか?
 −>設定でカスタマイズ可能

どうしてもだめならスクリプト上で
HOTKEY指定してプログラム終了する方法もあるかと

スクリプトでマウス操作してしまうと
マウス操作で終了するのに困難なことは確かです(よくやらかします)

No.3243 2016/12/03(Sat) 19:59:15

Re: 途中でプログラムを停止したい / K.Nagatani
上記Alt+F2でもダメな場合は、REPEATの間隔を開けてみては?
REPEAT
SLEEP(0.2)
UNTIL ••••

No.3244 2016/12/03(Sat) 23:55:32

Re: 途中でプログラムを停止したい / まきす
koi様、K.Nagatani様、ありがとうございました。解決しましたm(_ _)m
No.3265 2016/12/06(Tue) 06:46:43
(No Subject) / SEN
もしかして、二桁ずつ区切って数字を入れ替えて、$を足せば良いのか!
なるほど!satochaさんの結うことが言うことがわかりました。

No.3264 2016/12/06(Tue) 00:29:47
BGR値を探す方法を教えて欲しい。 / SEN
いつもお世話になっております。
BGR色についてですが、ヘルプ以外の色を探しています。眠たい詩人の「fukidasi()関数の文字色と背景色のBGR値を生成(UWSC)」を参考に白と紫が見つかったのですが、中々うまく見つかりません。
一覧表みたいなのが掲載されているホームページがありましたら、助かります
何卒よろしくお願い申し上げます。

DIM Excel = XLOPEN()
DIM 色 = "オレンジ"
DIM BGR = ReadIni("BGR",色,"色.INI")
XLSETDATA(Excel,色+"="+BGR,1,1,,,BGR)

//色.INI
[BGR]
白=$FFFFFF
紫=$800080
青=$FF0000
緑=$00FF00
赤=$0000FF
オレンジ=$80FF
黄=$FFFF

No.3249 2016/12/04(Sun) 18:53:24

Re: BGR値を探す方法を教えて欲しい。 / stuncloud
こないだ書いた記事です

https://stuncloud.wordpress.com/2016/11/04/uwsc_color_picker/

色選択ダイアログで好きな色のBGR値が得られますよ

color = 0
if PickColor(color) then // 引数は参照渡し
 print "$" + replace(format(color, 6, -1), " ", "0") // UWSCで使える $BBGGRR 形式の文字列に変換
else
 print "キャンセルしました"
endif

No.3251 2016/12/05(Mon) 09:55:52

Re: BGR値を探す方法を教えて欲しい。 / stuncloud
すいません、眠たい詩人さんとことやってること一緒でしたね…
No.3252 2016/12/05(Mon) 09:58:30

Re: BGR値を探す方法を教えて欲しい。 / satocha
「html 色名 コード」あたりのキーワードで検索すると
http://www.colordic.org/
などのサイトが引っかかります。
htmlの色コードはRGBの順なので、ひっくり返せばUWSCの色コードとして使えます。
たとえば、上記サイトで「hotpink」は#ff69b4なので
UWSC上の色コードは$b469ffになります。

No.3253 2016/12/05(Mon) 10:19:56

Re: BGR値を探す方法を教えて欲しい。 / SEN
出来ました。ありがとうございました。

satochaの言われている「ひっくり返せば」というのも、stuncloudさんや眠たい詩人さんのコードの中身はさっぱり分かりませんが、これで凄く使える色が増えそうです。


↓こんな感じにさせてもらいました。
WriteIni("BGR",input("色"),"$" + replace(format(color, 6, -1), " ", "0"),"色.INI")

↓見る見るうち使える色が増えそうです。
//色.INI
[BGR]
白=$FFFFFF
紫=$800080
青=$FF0000
緑=$00FF00
赤=$0000FF
オレンジ=$80FF
黄=$FFFF
明るいピンク=$FF00FF
薄い黄色=$80FFFF
よもぎ色=$008080
薄い灰色=$C0C0C0

ps.RGBは結構hpがあるのにBGRのhpは全くありません。
  uwscを使っている方は、不自由してないのかな?
  という疑問はあります。

No.3263 2016/12/06(Tue) 00:24:01
html形式のファイルからタグを削除したい / リキュール
ファイルにhtml形式の文章が入っています。
これを、タグを除いたテキスト文章にしたいです。
正規表現を使えば出来るらしいですが方法が分かりません。
よろしくお願いします。

fid = FOPEN("○○.TXT",F_READ)
BUN = FGET(fid,F_ALLTEXT) //全文読み取り
Pattern="○○○○"
TXT= Replace(BUN,Pattern, "")
print TXT
FCLOSE(fid)

//<("[^"]*"|'[^']*'|[^'">])*> 正規表現

No.3241 2016/12/03(Sat) 14:12:36

Re: html形式のファイルからタグを削除したい / satocha
//<("[^"]*"|'[^']*'|[^'">])*> 正規表現
まで調べたのだけれど、これをUWSCでどうやればいいか分からないということでしょうか。

UWSCで正規表現を使う方法はFAQの「正規表現を利用したい  #N26」を見てください。

ここでは別の方法として、正規表現が使えるpowershellを使ってファイルの読み込みから変換まで一気にやってしまう例を示しておきます。行数も短いので。
textblock pssrc
  gc $$$FILE$$$|%{$_ -replace "<(`"[^`"]*`"|'[^']*'|[^'`">])*>", ""}
endtextblock
TXT  =powershell( replace( pssrc, "$$$FILE$$$", "○○.TXT" ) )
print TXT

No.3246 2016/12/04(Sun) 10:51:05

Re: html形式のファイルからタグを削除したい / リキュール
satocha さん、お世話になります。
powershell を使用する参考例でバッチリ動作しました。(私には魔法のようです)
ありがとうございました。

なお、#N26の方法を調べましたがうまくいきません。
fid = FOPEN("○○.TXT",F_READ)
BUN = FGET(fid,F_ALLTEXT) //全文読み取り
regex = CREATEOLEOBJ("VBScript.RegExp")
regex.Global = True
regex.Pattern = "<#DBL><(`"[^`"]*`"|'[^']*'|[^'`">])*><#DBL>"
//<#DBL>の正しい利用方法をまだ理解できません。(初心者)
print regex.Replace(BUN, "") // 置換
FCLOSE(fid)

No.3247 2016/12/04(Sun) 14:05:42

Re: html形式のファイルからタグを削除したい / stuncloud
正規表現だと面倒なので…

doc = createoleobj("htmlfile")
doc.write(BUN)
print doc.body.innerText

No.3248 2016/12/04(Sun) 16:47:02

Re: html形式のファイルからタグを削除したい / リキュール
stuncloud さん、お世話になります。
innerText を使用する方法に気が付きませんでした。
思いどおりに表示できました。
正規表現は私には難しそうです。
ありがとうございました。

No.3250 2016/12/04(Sun) 19:33:42

Re: html形式のファイルからタグを削除したい / miles
解決済みなので、参考になれば...

> なお、#N26の方法を調べましたがうまくいきません。
ダブルコーテイションがあると一発でできないようです(多分)。
別々にすれば、できるようです。

regex = CREATEOLEOBJ("VBScript.RegExp")
regex.Global = True
regex.Pattern = "<#DBL>"     // "ダブルコーテイションのみ処理
BUN = regex.Replace(BUN, "")   // 置換
regex.Pattern = "<(`[^`]*`|'[^']*'|[^'`>])*>" // "を除いた部分を処理
print regex.Replace(BUN, "")    // 置換

No.3254 2016/12/05(Mon) 11:59:44

Re: html形式のファイルからタグを削除したい / リキュール
miles さん、お世話になります。
正規表現を使用して表示できました。
発想の転換で、いろいろな方法があるのですね。
大変勉強になりました。
ありがとうございました。

No.3260 2016/12/05(Mon) 22:03:45
xlgetdataでA1からA100までテキストがあるセルまで読み込み方法 / アユミ
EXCEL = CREATEOLEOBJ("Excel.Application")
EXCEL.visible = True
Excel.WorkBooks.Open(FileName :="C:\Users\hoge.xlsx")
str1=xlgetdata(excel, "a1:a10", "sheet1")

xlgetdata(excel, "a1:a10", "sheet1")

hoge.xlsxと言うEXCELファイルにa1からa10までテキストと入力されているとします。
このa10が追加入力する事でa11やa12と変動します。これをテキストがあるセルまでセルの位置を取得する方法を探しています。
各セルが空欄かどうかを判断してa1からa100まで、テキストあるセルまでxlgetdataで読み込みをしたいです。

下記のコードが何かヒントになりそうですが、いまいち加工方法が思いつきません。
//下から上に探して最初の空欄がある行番号を返す
function sub_getBlankRowNumber(oSheet, iColumnNumber)
  dim i_bottomRow = oSheet.Rows.Count
  dim o_range   = oSheet.Cells(i_bottomRow, iColumnNumber)
  
  dim xlUp = -4162
  o_range = o_range.End(xlUp)     //Ctrl + ↑ と同じ操作
  
  ifb (empty <> o_range.Value) then  //空欄でなければ
    o_range = o_range.Offset(1, 0)  //一つ下のセル
  endif
  
  result = o_range.Row
fend

No.3255 2016/12/05(Mon) 13:56:41

Re: xlgetdataでA1からA100までテキストがあるセルまで読み込み方法 / Nagatani
Excelの最終行を取得するなら
Uwscだと
 Excel=GETACTIVEOLEOBJ("Excel.Application")
 Excel.Visible = True
 Excel.Sheets["Sheet1"].Select
 LonLast = Excel.Cells(100,"A").End(-4162).Row
 MsgBox(LonLast)

ExcelVBAだと(A列に連続して文字列等の入力がある場合)
 LonRowLast=Cells(1,"A").End(xldown).Row

No.3257 2016/12/05(Mon) 21:09:56

Re: xlgetdataでA1からA100までテキストがあるセルまで読み込み方法 / Nagatani
忘れ物・・・
LonRowLast = Excel.Cells(1, "A").End(-4121).Row(下方向)
LonRowLast = Excel.Cells(100, "A").End(-4162).Row(上方向)
LonColLast = Ws01.Cells(1, "A").End(-4161).Column(右方向)
LonColLast = Ws01.Cells(1, "AA").End(-4159).Column(左方向)

No.3258 2016/12/05(Mon) 21:24:56
他窓にいくときにそこにあった窓が・・・ / にょ
操作を実行している窓が別の窓を操作するとき何故か操作していた窓がついてきてしまいます。
No.3245 2016/12/04(Sun) 00:47:51
uwscのcallについて / ゆあ
callを使って別のフォルダにあるファイルを呼び出した時に
「Not Found〜」という画像がありませんというエラーメッセージが出ますが
対処法はありますか?
フォルダ内には画像は入ってます。
call "C:\●\uwsc48e\フォルダ\ファイル名"という感じです。

No.3238 2016/12/02(Fri) 16:53:11

Re: uwscのcallについて / stuncloud
call で呼べるのは拡張子が .uws のファイルだけです
また、callに渡すパスは .uws の部分を省略しても良いことになっています
なので例えば

call "C:\●\uwsc48e\フォルダ\hoge.jpg"

とすると C:\●\uwsc48e\フォルダ\hoge.jpg.uws を探しに行って File not found になります

No.3239 2016/12/02(Fri) 17:05:21

Re: uwscのcallについて / ゆあ
そうなんですね。
回答ありがとうございます。

No.3240 2016/12/02(Fri) 21:58:59
"(シングルコーテーション)を<#dbl>に変える方法について / タカハシ
"→<#dbl>に置き換えしたいのですができません。何か良い方法はないでしょうか?

textblock name
<a href="https://track.b.com/visit.php?guid" target="_blank" rel="nofollow">テキスト</a><img src="https://track.aaaab.com/lead/968723" width="1" height="1" style="border:none;" />
endtextblock

tes=CHGMOJ( name, """, "<#dbl>" )
print tes

No.3223 2016/12/01(Thu) 13:14:44

Re: "(シングルコーテーション)を<#dbl>に変える方法について / しろまさ
" ←ダブルだと思いますが。

OPTION SPECIALCHAR // 実行時に特殊文字(<#CR><#DBL><#TAB>)の変換をしない

を宣言する。

No.3224 2016/12/01(Thu) 13:58:26

Re: "(シングルコーテーション)を<#dbl>に変える方法について / stuncloud
OPTION SPECIALCHAR を付けてもなんか思った通りにならない…? (UWSC 5.2.3)

OPTION SPECIALCHAR

print replace(name, chr(34), "<#DBL>") // " のまま
print replace(name, "<#DBL>", "<#DBL>") // " のまま
print replace(name, chr(34), "<#DBL" + ">") // <#DBL> になる
print replace(name, "<#DBL>", "<#DBL" + ">") // <#DBL> になる

とりあえず下ふたつのやり方ならなんとかなる?
ちなみに「<#DBL>」が入った文字列がなんで必要になったのでしょう (ちょっと状況が思い浮かばなくて

No.3225 2016/12/01(Thu) 14:11:01

Re: "(シングルコーテーション)を<#dbl>に変える方法について / satocha
option設定はスクリプト全体に影響するので、それを避けたいときは

tes=CHGMOJ( name, "<#dbl>", "<#d"+"bl>" )

これはoption SpecialChar設定なしでいけます。

No.3226 2016/12/01(Thu) 14:51:13

Re: "(シングルコーテーション)を<#dbl>に変える方法について / miles
//textblockなら<特殊文字>を気にしなくて済む。
textblock name1
"
endtextblock
textblock name2
<#dbl>
endtextblock

tes=CHGMOJ( name, name1, name2 )

No.3227 2016/12/01(Thu) 15:03:39

Re: "(シングルコーテーション)を<#dbl>に変える方法について / stuncloud
おお、いろいろあるんですねぇ
あまりこのあたり意識したことがないので勉強になります

No.3228 2016/12/01(Thu) 16:09:18

Re: "(シングルコーテーション)を<#dbl>に変える方法について / タカハシ
しろまさ様、返信ありがとうございます。
OPTION SPECIALCHARがあるとは知らなかったです。もっとヘルプを見ていきます。

No.3229 2016/12/01(Thu) 16:38:45

Re: "(シングルコーテーション)を<#dbl>に変える方法について / タカハシ
stuncloud様、いつもありがとうございます。
上記2つできました、ありがとうございます。記事作成時に広告タグいれたい所に「!!テキスト」と書いておき、
UWSCで一括変換しようと思いまして。広告タグを下記のような形でしたいと思いまして。
"<a href=<#dbl>https://track.b.com/visit.php?guid" target=<#dbl>_blank<#dbl> rel=<#dbl>nofollow<#dbl>>〇〇会社</a><img src=<#dbl>https://track.aaaab.com/lead/968723<#dbl>; width=<#dbl>1<#dbl> height=<#dbl>1<#dbl> style=<#dbl>border:none;<#dbl> />"

No.3230 2016/12/01(Thu) 16:40:13

Re: "(シングルコーテーション)を<#dbl>に変える方法について / タカハシ
satocha様、回答ありがとうございます。

>tes=CHGMOJ( name, "<#dbl>", "<#d"+"bl>" )
無事できました、ありがとうございます。勉強になります。

No.3231 2016/12/01(Thu) 16:41:15

Re: "(シングルコーテーション)を<#dbl>に変える方法について / タカハシ
miles様、回答ありがとうございます。

無事できました。
こんな発想を変えた方法があるんですね。
これを思いつくのが凄いです。

No.3232 2016/12/01(Thu) 16:42:16

Re: "(シングルコーテーション)を<#dbl>に変える方法について / タカハシ
色々回答を頂けた結果、自分の希望の処理が下記でできました。
textblockを使った処理はかなり使いやすいです。
広告タフを配列にいれてCLASS COMMON ENDCLASSでどこでも呼び出して使えるようにできる方法を思いついたのですが、エクセルの各セルに入っている広告タグをXLGETDATAで配列にいれて、その配列をtextblockに入れ込む方法、これはいちいちCOMMON ENDCLASSに書込必要があるので非効率ですし、エクエルから広告タグのセルをXLGETDATAで配列に読込までをCLASS COMMON ENDCLASSで入力しておき、その都度textblockに入れるのがベストかなと。
何か効率的な方法でしょうか?

textblock name
!!テキスト1
endtextblock

textblock name1
<a href="https://track.affiliate-b.com/visi27" t" rel="nofollow">自由テキスト</a><img src="https://track.affiliate-b.com/lead/9684k" width="1" height="1" style="border:none;" />
endtextblock


sendstr(0,CHGMOJ( name, "!!テキスト1", name1 ))

No.3234 2016/12/02(Fri) 12:37:39

Re: "(シングルコーテーション)を<#dbl>に変える方法について / stuncloud
> 何か効率的な方法でしょうか?
いまいち何がやりたいのか伝わってこないのでなんとも言い難いんですが、ただ、なんとなくですがもっと別の楽なアプローチがあるんじゃあないかとは思いますね

>記事作成時に広告タグいれたい所に「!!テキスト」と書いておき、UWSCで一括変換

ということは、対象の記事に「!!テキスト」というプレースホルダが書き込んであるということですよね
その記事はファイルをfopen()して読む等して記事全体がひとつの変数に入ってるという状態なんでしょうか

で、それをexcelから読み出した文字列で置換したい、と
excelで読み出す値はHTMLタグだということですよね?
その読み出したHTMLタグはexcel上ではダブルクォートが書かれているのでそれは <#DBL> に置換したいというのが最初の質問ですよね

でも、だとすると「!!テキスト」をHTMLタグに置換する際にダブルクォートを<#DBL>に置換するという処理は不要なはずなんですよ
(僕が状況が思い浮かばないと言ったのもそういうことで、通常は<#DBL>という文字列が欲しいのなんてUWSCでUWSCのスクリプトを書くとか、めちゃくちゃ限定された状況でしかないはずなんです)

とまぁ、色々気になることとかもあるんですけど、ひとまずダブルクォートを<#DBL>に置換する方法は解決したはずなのでそれ以外のことは別スレッドにされたほうが良いと思います
このままだとどんどん脱線していきそうなので

> CLASS COMMON ENDCLASS
COMMONてなんですかね…?

No.3235 2016/12/02(Fri) 13:52:49

Re: "(シングルコーテーション)を<#dbl>に変える方法について / タカハシ
stuncloud様、いつも回答ありがとうございます。

>記事はファイルをfopen()して読む等
fopen()にする方法もあるんですね。いちいちtextblockに手動で書き込む方法しか思いつきませんでした。

>excelで読み出す値はHTMLタグだということですよね?
HTMLタグです。

>(僕が状況が思い浮かばないと言ったのもそういうことで、通常は<#DBL>という文字列が欲しいのなんてUWSCでUWSCのスクリプトを書くとか、めちゃくちゃ限定された状況でしかないはずなんです
これは、私が変なカン違いしていましたすみません。

>COMMONてなんですかね…?
// 共通クラスの呼び出し クラス名:COMMON.
call C:\Users\aruke\Desktop\ショットカット構文一覧\共通化.uws
Dim res = COMMON.()
上記のクラス名です。

申し訳ないです、別スレッドで質問する事にします。

No.3237 2016/12/02(Fri) 16:47:03
全896件 [ ページ : << 1 ... 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ... 90 >> ]