[ 掲示板に戻る ]

過去ログ閲覧モード

マウスカーソルの下ではなく、TAB等で移動したカーソル下の文字の取得 / AMG
お手数かけますが、何か方法はありますでしょうか?

スクロールバーの付いている画面があって、目的の枠に移動するには、マウスでスクロールさせる必要があるのですが、件数などによって、スクロールさせる距離が変わってきて目的の位置にうまく合わせられません。TABキーで回数などを記憶したり、回数分のTAB操作で目的の枠には簡単に移動できますので、TAB等で移動した先のカーソル位置の枠内の文字の取得を実現するには、どうしたら?よいでしょうか?よろしくお願いいたします。

No.3133 2016/11/07(Mon) 19:50:22

Re: マウスカーソルの下ではなく、TAB等で移動したカーソル下の文字の取得 / stuncloud
できないことはないと思いますが、操作対象アプリケーションによって最適解が異なるんじゃないかと思います
Webページの話だったらIEを使えば簡単にできるんじゃないかな?
そうじゃない場合は頑張ればできる可能性があります、何を頑張るかはそのアプリケーション次第なんですが

とりあえず思いついたのは、選択箇所がコピーできる可能性に賭けて以下を実行する

sckey(id, VK_CTRL, VK_C)
print getstr(0)

Ctrl-Cでコピーしてその内容をクリップボードからgetstr(0)で得るというやり方

No.3134 2016/11/08(Tue) 10:20:39

Re: マウスカーソルの下ではなく、TAB等で移動したカーソル下の文字の取得 / AMG
そうですか。もう少し考えてみます。ありがとうございました。
No.3135 2016/11/10(Thu) 20:18:41
CHKIMGの異常検出について / koi
サンプル画像(一週間有効)
http://fast-uploader.com/file/7034041443728/
パスワード  uwsc

テストスクリプト
WHILE TRUE
PRINT GETTIME() _
+ " " + CHKIMG(GET_CUR_DIR + "\Lv75.bmp") _
+ " " + CHKIMG(GET_CUR_DIR + "\Lv75.bmp",1) _
+ " " + CHKIMG(GET_CUR_DIR + "\Lv75.bmp",1,,,,,-1) _
+ " " + CHKIMG(GET_CUR_DIR + "\Lv75.bmp",1,,,,,-1,IMG_MSK_BGR1)
WEND

環境 Win10 64ビット バージョン 1607
   uwsc Ver5.2.3
   使用プログラム  Gimp2(以下Gimp)

上記環境にてサンプル画像をGimpで開き
表示の拡大率を上げていくと1000%を超えたところから
異常な検出が始まります
  拡大率上げると1個2個見つかるとか言ったレベルではなく
   300個以上の検出が行われます

ちなみにWin標準のペイントでは800%までしか
拡大できないため?現象が発生しません
(その他のツールでは未確認)

固有の問題・バグ を含め原因がわからず困っています

No.3128 2016/11/07(Mon) 11:48:33

Re: CHKIMGの異常検出について / しゅん
異常ではないと思います。

画像は、40*14ですね。
ただ、外周1ピクセルは黒なので、実質38*12です。
黒とオレンジの二値かと思います。

第二引数で、1:左上を指定しているため、黒部分は無視されます。
無視なので、、、オレンジでも良い、ということです。
すなわち単純に言って、38*12のオレンジのバーがあるとヒットします。
39*12のオレンジのバーがあると、バーの始点と1ピクセルずれの二点でヒットするのです。

Lや7や5は横長な部分があります。
1200%拡大になると、1ピクセルが12*12になるかと思います。
横に何ピクセルか並ぶと、、、おわかりかと思います。


やりがちな誤りかと思います。
ただ、バグとか異常とか言う単語は感じが悪いのでなるべく使用を避け、とことん自分を疑ってから使うと良いと思います。
(「300以上検出してしまうのですが、何が悪いか教えてください」とかが良かったですね。)

#私も一度、白い文字を背景色無視でCHKIMGして、ブラウザー起動してたら大量に検出しました。
#で、(x座標,y座標)にこの文字ない!どこだよ。スクリーンショットとって拡大、ここ、、、
#白いよ、、、、、、そうだよ、あったよ、、、私が間違ってたよ、ってやりました!
#背景色無視には注意が必要です。

No.3129 2016/11/07(Mon) 17:58:44

Re: CHKIMGの異常検出について / koi
しゅん様

始め理解できなかったのですがちょっと考えていたら
書かれている説明で納得しました

元画像自体も小さいため
確かに拡大していくとL/7/5 等の横線部分で検出することになりますね
そこまで気が回りませんでした

ありがとうございました

No.3132 2016/11/07(Mon) 18:57:21
INPUTで指定して画像を探す / カエル6号
お世話になります。
INPUTに画像の名前を入力してその画像を探そうとしたんですがうまくいきません。
例えば 山 という画像を探すとき以下のコードだと"山".bmpになってしまいます。

DIM A = INPUT("画像選択")
DIM B = "<#DBL>" + A + "<#DBL>"
IF CHKIMG(B,0) THEN print "OK"

解決方法がありましたらよろしくお願いします。

No.3126 2016/11/05(Sat) 12:50:44

Re: INPUTで指定して画像を探す / カエル6号
自己解決しました
No.3127 2016/11/05(Sat) 13:30:26
Dosコマンドでスペースを含むファイルを処理したい / リキュール
ファイル1、ファイル2は変数です。
ファイル1には「○○ ○○○.txt」のようにスペースがあり、ファイル2には「○○○○○.txt」のようにスペースを削除したものです。
通常、スペースを含む場合は<#DBL>を使用すれば良いようなのですが、ファイル名が変数の場合、どうすればよいのでしょうか。

DosCmd("Ren " + ファイル1 + " " + ファイル2)

No.3122 2016/11/04(Fri) 21:19:21

Re: Dosコマンドでスペースを含むファイルを処理したい / 俄プログラマー
<#DBL>も文字列と考えたときの文字列の結合と同じで、こんな感じです。
(今回質問の通りとしてファイル2のスペース含みは考慮せず)

DosCmd("Ren " + "<#DBL>" + ファイル1 + "<#DBL> " + ファイル2)

No.3124 2016/11/05(Sat) 11:03:02

Re: Dosコマンドでスペースを含むファイルを処理したい / リキュール
俄プログラマー さん、お世話になります。
思いどおりの処理が出来ました。
<#DBL>を使用すればよいことは分かっていましたが、具体的な使用例が分かりませんでした。
ありがとうございました。

No.3125 2016/11/05(Sat) 11:20:29
画像のスクリーンキャプチャについて / myuu
やりたいこと:特定のウィンドウをKBD関数を用い、[Fn]+[Alt]+[PrintScreen]にて画像として保存する。

課題:uwscには[Fn]キーが無い

※saveimg関数は、今回は使用できません。メインPCからUWSCを操作し、リモートデスクトップにキーを送ることで画像をとりたいためです。
 [VK_SNAPSHOT]を最悪使おうと思いますが、これですと、リモートデスクトップの画面全体がキャプチャされて、いらない部分まで移ってしまいます。


なかなか制約が多い質問で申し訳ありません。どなたか、助けて頂けますと幸いです。

No.3091 2016/10/30(Sun) 10:42:09

Re: 画像のスクリーンキャプチャについて / MM
EasyShotのようなキャプチャツールを間にかます
…とかの方法はまた、セキュリティで制限されてるだの何だの
条件後出しで否定されるんでしょうかね?

No.3092 2016/10/30(Sun) 10:46:30

Re: 画像のスクリーンキャプチャについて / myuu
>MM様
こんなに早く回答頂けて大変ありがたいです。
そのようなソフトもあるのですね![VK_SNAPSHOT]よりはよさそうです。
もし、他に手法がなければそれを試したいと思います。

No.3096 2016/10/30(Sun) 11:58:47

Re: 画像のスクリーンキャプチャについて / satocha
リモート環境では確かめていませんがこんなのはどうでしゅか

powershell("[void] [Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms');[Windows.Forms.SendKeys]::SendWait(<#dbl>%{PRTSC}<#dbl>)")

sckey(exec("mspaint"),vk_ctrl,vk_v)

No.3100 2016/10/31(Mon) 03:16:02

Re: 画像のスクリーンキャプチャについて / satocha
>どうでしゅか   って恥ずかしい。
先のスクリプトはWin10で確かめていたのですが、職場のWin7では動かずやりなおし。
---------------------------------------------------------------------------------------
id=getid("取りたいウインドウ")
with CreateOleObj( "WScript.Shell" )
 .Run( "powershell [void] [Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms');[Windows.Forms.SendKeys]::SendWait('%{PRTSC}')", 0 )
endwith
ctrlwin(id,activate)
sleep(0.5) //このウエイトは必須
sckey(exec("mspaint"),vk_ctrl,vk_v)

No.3104 2016/11/01(Tue) 10:16:06

Re: 画像のスクリーンキャプチャについて / しゅん
> 課題:uwscには[Fn]キーが無い
いらないからかと思います。
SCKEYでVK_ALT,VK_SNAPSHOTすればOKかと思います。

No.3109 2016/11/02(Wed) 17:48:58

Re: 画像のスクリーンキャプチャについて / satocha
しゅん様
>SCKEYでVK_ALT,VK_SNAPSHOTすればOKかと思います。
これで撮れれば一番ラクなんですが、環境によるのかもしれませんが、どういうわけか、ALTと併用すると記憶できません。
kbd(vk_alt,down)
kbd(vk_snapshot)
kbd(vk_alt,up)
とかも記録できません。

No.3113 2016/11/03(Thu) 14:46:59

Re: 画像のスクリーンキャプチャについて / しゅん
satochaさん、環境はなんでしょうか?
少なくとも、手元のWindows 7 pro(x86) 標準リモートデスクトップでは、リモートデスクトップを最大化(ctrlwinではダメだった、、、のでBTNで)させれば、問題なかったです。

ま、いずれにしても、Fnキーは仮想キーコードの割り当てがなかったはずなので、押す必要のないキーです。

No.3117 2016/11/04(Fri) 08:56:07

Re: 画像のスクリーンキャプチャについて / myuu
>satocha様
shell系は使用したことが無く、私にとって初技術です。
勉強して試してみます!

>しゅん様
確かにそれで出来れば一発で解決です!(前に試したような試してないような・・)
ちょっと今時間がなく試せないのですが、時間できた時にやってみます。

お二方、丁寧に回答頂き誠にありがとうございます。
まずはご教授頂きました方法を試してみます。

No.3123 2016/11/05(Sat) 08:25:03
ExcelのA1セルが空白かどうかを判定するスクリプト / タカハシ
ExcelのA1セルが空白かどうかを判定するスクリプトを起動すると式がおかしいとエラー表示になってしまいます。どこが間違っているのでしょうか?
EXCEL = CREATEOLEOBJ("Excel.Application")
EXCEL.visible = True
Excel.WorkBooks.Open(FileName :="C:\Users\aruke\Desktop\tesuto.csv")

If EXCEL.Range("A1").value = " "Then msgbox("空白です")
else
msgbox("入力済み")
endif

No.3115 2016/11/03(Thu) 22:26:12

Re: ExcelのA1セルが空白かどうかを判定するスクリプト / 俄プログラマー
その場合エラー行番号が出るはずです。
その行を確認すると良いですよ。

No.3116 2016/11/03(Thu) 23:09:21

Re: ExcelのA1セルが空白かどうかを判定するスクリプト / リキュール
以下でどうでしょうか?
If → Ifb に変更する
Thenの前に半角スペースを入れて別行とする
なお、空白は "" で " " は半角スペースなので、意味が違うと思うのですが

Ifb EXCEL.Range["A1"].value = " " Then
msgbox("空白です")
else
msgbox("入力済み")
endif

No.3118 2016/11/04(Fri) 12:06:22

Re: ExcelのA1セルが空白かどうかを判定するスクリプト / タカハシ
俄プログラマー様、行を確認でしたね失礼しました。
No.3120 2016/11/04(Fri) 19:20:43

Re: ExcelのA1セルが空白かどうかを判定するスクリプト / タカハシ
リキュール様、そのコードでできました。ありがとうございます。

>>Thenの前に半角スペースを入れて別行
これでした。

もっとUWSC道を精進していこうと思います。

No.3121 2016/11/04(Fri) 19:24:12
配列をSLCTBOXのボタンに入れcallを起動させる方法 / タカハシ
ヘルプを見ると「UWSファイル名の割り当てに変数を使用する事はできません」とあります。
下記のコードはできないとは分かったのですが、CALLで配列に入れたモノを選択して起動させる良い方法はないでしょうか?

DIM path[2]
path[0] = "C:\Users\aruke\Desktop\UWS\エクセル出力新.uws"
path[1] = "C:\Users\aruke\Desktop\UWS\10サイト接続.uws"
path[2] = "C:\Users\aruke\Desktop\UWS\Excel配列.uws"
tes=SLCTBOX(SLCT_BTN OR SLCT_STR,0,"会社",path)
CALL tes

No.3107 2016/11/02(Wed) 13:30:49

Re: 配列をSLCTBOXのボタンに入れcallを起動させる方法 / stuncloud
callじゃなきゃいけない理由がないのであれば、execで

exec("<#DBL>" + GET_UWSC_DIR + "\uwsc.exe<#DBL> <#DBL>" + tes + "<#DBL>")

No.3108 2016/11/02(Wed) 13:57:37

Re: 配列をSLCTBOXのボタンに入れcallを起動させる方法 / しゅん
stuncloudさんの方法がおすすめです。
DOSCMDを使っても良いかもしれません。
ただ、SELECTで分岐する、という手もあります。
http://d.hatena.ne.jp/junjun777/20161102/uwsc_call


DIM path[2]
path[0] = "test00.uws"
path[1] = "test01.uws"
path[2] = "test02.uws"
SELECT SLCTBOX(SLCT_BTN OR SLCT_STR,0,"会社",path)
CASE path[0]
  CALL "test00.uws"
CASE path[1]
  CALL "test01.uws"
CASE path[2]
  CALL "test02.uws"
SELEND

No.3110 2016/11/02(Wed) 17:50:41

Re: 配列をSLCTBOXのボタンに入れcallを起動させる方法 / タカハシ
stuncloud様、回答ありがとうございます。execでできたんですね、思いつきませんでした。
まだまだ私、修行が足りないようです。GET_UWSC_DIRのパスの意味は分かっているんですが、
UWSファイルをC:\Program Files (x86)\UWSCの中で管理した方が良いのでしょうか?私は、C:\Program Files (x86)\UWSCとはまったく違う所に、ファルダー作成してUWSファイルを置いています。

No.3111 2016/11/02(Wed) 21:29:03

Re: 配列をSLCTBOXのボタンに入れcallを起動させる方法 / タカハシ
しゅん様、回答ありがとうございます。SLCTBOXでやるとpath[0] = "test00.uws"、test00.uwsにSLCTBOXで表示させたい文字列を表示できるので選択する時に分かりやすいです。
http://d.hatena.ne.jp/junjun777/20161102/uwsc_call見させて頂きました。色々な方法でCALLの使い方が掲載されていてすごく勉強になります。こちらのブログブックマークしてちょこちょこ見させて頂きます。

No.3112 2016/11/02(Wed) 21:40:22

Re: 配列をSLCTBOXのボタンに入れcallを起動させる方法 / stuncloud
> UWSファイルをC:\Program Files (x86)\UWSCの中で管理した方が良いのでしょうか?
いいえ、UWSファイルはお好きなところへ置いてくださって大丈夫ですよ

> exec("<#DBL>" + GET_UWSC_DIR + "\uwsc.exe<#DBL> <#DBL>" + tes + "<#DBL>")
の引数の意味なんですが、変数を展開すると例えばこうなります

exec("<#DBL>C:\Program Files (x86)\uwsc.exe<#DBL> <#DBL>C:\Users\aruke\Desktop\UWS\エクセル出力新.uws<#DBL>")

execで動かすためにはまずuwsc.exeで動かすということを教えてやらないといけないため、最初にuwsc.exeのフルパスを渡します
そのためのGET_UWSC_DIRですね
そのあとUWSファイルのパスを記述しますが、これがuwsc.exeに対してどのスクリプトを実行しろという指示になっています
この後半部分でUWSファイルのフルパスを指定すればいいので、UWSファイルはどのフォルダに置いてあっても大丈夫というわけです

No.3114 2016/11/03(Thu) 15:06:03

Re: 配列をSLCTBOXのボタンに入れcallを起動させる方法 / タカハシ
stuncloud様、詳細な説明ありがとうございます。そのような使い方でexecを使えるなんて知らなかったです。無事そのスクリプトで使えました。また一つ勉強になりました、感謝致します。
No.3119 2016/11/04(Fri) 19:15:24
指定フォルダ内クリア / トロン
指定フォルダ内のデータを全て消したいと考えています。

ファイル指定だと正常に動くのですが
DOSCMD("del C:\あああ\AAA.html")

フォルダ指定だと動かないです。
DOSCMD("del C:\あああ\")

C:\あああ\の中身を全て消すにはどのようにすればいいでしょうか。※中にサブフォルダはありません。
ちなみにC:\あああ\のフォルダ自体は残したいと考えています。

No.3102 2016/10/31(Mon) 16:47:27

Re: 指定フォルダ内クリア / しき
//ワイルドカード文字を使います
DOSCMD("del /q C:\あああ\*.*")

//参考URL
>コマンドプロンプト del - [ファイルを削除する]
http://www.k-tanaka.net/cmd/del.php

No.3103 2016/10/31(Mon) 17:06:57

Re: 指定フォルダ内クリア / トロン
ありがとうございます!!
No.3105 2016/11/01(Tue) 19:39:33
UWSCでEXCELの複数シートを選択する方法 / Daichi
はじめまして。

タイトルの通りですが、UWSCでExcelの複数シートを選択する方法をご教示いただけませんでしょうか。

実現したいことは、Excelで任意のシートを複数選択し、PDFエクスポートしたいです。
XLACTIVATE関数 or EXCELCOMオブジェクトを利用する方法どちらでも構いません。

VBAでは下記コードで複数シートの選択を実現できますが、
UWSCに移植すると"変数:SHEET_NAME 次元数が合いません"と表示されます。

アドバイスいただけると幸いです。
よろしくお願いいたします。

[VBA]
Worksheets(Array("Sheet1", "Sheet2", "Sheet3")).Select
[UWSC]
Dim SHEET_NAME[2] = "Sheet1", "Sheet2", "Sheet3"
Excel.Worksheets(SHEET_NAME).Select
//Excel.Worrkseets.Select //全シート選択時に利用
//*ExcelオブジェクトはCREATEOLEOBJ("Excel.Application")で生成済


【環境】
Windows7Pro x64
UWSC Ver5.0.3.0

No.3098 2016/10/30(Sun) 22:49:13

Re: UWSCでEXCELの複数シートを選択する方法 / Daichi
自己解決しました。

.SelectのReplaceオプションを利用するとできました。
Excel.WorkSheets("Sheet1").select(replace:=false)

お騒がせしました。

No.3099 2016/10/30(Sun) 23:11:13

Re: UWSCでEXCELの複数シートを選択する方法 / しき
//引数がVBArray(SafeArray)になるようにすればよい
Dim SHEET_NAME[2] = "Sheet1", "Sheet2", "Sheet3"
Excel.Worksheets(slice(SHEET_NAME)).Select()

No.3101 2016/10/31(Mon) 13:15:50
ソフトをタスクバーからアクティブにする方法 / Japanzer
//win10Home バージョン1607
//UWSC ver.5.230

//ペイントを最小化している状態で下記のスクリプトを実行しましたが、ペイントはアクティブになりません。確か以前はこれでアクティブになったと記憶しています。
//msgboxは1が返ってくるのでクリック自体はできていると思うのですが…

msgbox(CLKITEM(GETID("ペイント"), "ペイント", CLK_SHORT))

//ctrlwin(GETID("ペイント"), show)でアクティブにできますが、この方法は使いたくありません。
//実はペイントではなく別のソフトをタスクバーからアクティブにするのが狙いなのですが、そのソフトにはctrlwin()が効かないので。

//なにか、他にタスクバーからアクティブになるような方法はありませんでしょうか。

No.3086 2016/10/29(Sat) 19:44:01

Re: ソフトをタスクバーからアクティブにする方法 / 俄プログラマー
ACW(GETID("ペイント"),0,0)

これでは左上にウインドウが移動してしまうので
事前にSTATUSを使って座標を覚えておくと良いでしょう。

No.3087 2016/10/29(Sat) 20:12:52

Re: ソフトをタスクバーからアクティブにする方法 / Japanzer
ご教授ありがとうございました。
こんな方法は思いもよりませんでした。

No.3089 2016/10/29(Sat) 22:58:30

Re: ソフトをタスクバーからアクティブにする方法 / MM
ACW(GETID("ペイント"))
ではどうですか

No.3094 2016/10/30(Sun) 11:08:23

Re: ソフトをタスクバーからアクティブにする方法 / Japanzer
ACW(GETID("ペイント"))だと、元の位置に表示されますね。
どうもありがとうございました。

No.3095 2016/10/30(Sun) 11:21:24

Re: ソフトをタスクバーからアクティブにする方法 / 俄プログラマー
ACW(GETID("ペイント"))
だとこちらの環境では最小化のままなんですよ。
Japanzerさんが動けば問題ないので良いのですが。
win10Pro 1607
UWSC 5.230

No.3097 2016/10/30(Sun) 20:14:37
全796件 [ ページ : << 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ... 80 >> ]