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

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
UWSCのOSごとによるバグについて / ゆぐゆぐ
WIN7で作ったuwsファイルをWIN8やWIN10のPCで使うと必ず座標のズレが発生するのですが、UWSC有償版でEXE化したものであれば別OSでも正常に稼動するものでしょうか?
No.3076 2016/10/27(Thu) 16:37:09

Re: UWSCのOSごとによるバグについて / 俄プログラマー
EXE化しても同じだと思われます。
気になるのなら試用版でお試しください。

そして質問の具体性に欠けます。
何がどんな時にずれるのかが書かれていない事には
これ以上の回答は得られないでしょう。

No.3077 2016/10/27(Thu) 18:05:55

Re: UWSCのOSごとによるバグについて / しゅん
一応、補足です。
UWSCは最新版でしょうか?
最新版にすると、直っているものもあるかもしれません。

No.3078 2016/10/28(Fri) 08:58:54

Re: UWSCのOSごとによるバグについて / ゆぐゆぐ
例えばなんですが
BTN(LEFT,CLICK,273,31,219)
ってだけでも座標が検討違いの位置をクリックするんですよね。
(WIN10での機体ごとでバラバラの座標をクリックするわけではなく、見当違いの同じ位置をクリックする)

ちなみに試用版も試したけどやはりダメでした。

No.3079 2016/10/28(Fri) 16:07:57

Re: UWSCのOSごとによるバグについて / stuncloud
Windows 10の設定でシステム-ディスプレイにある「テキスト、アプリ、その他の項目のサイズを変更する」が100%以外になってるとか?

画面の拡大率(という呼び方でいいのかな?)は過去に色々対応されてた気がしますけどぜんぜん詳細把握してなくて実際はどうなのかわかりませんけど

No.3080 2016/10/28(Fri) 17:04:09

Re: UWSCのOSごとによるバグについて / MM
検証スクリプトを貼る必要があると思われます
(現象が再現する限りにおいて出来るだけ最短に編集したもの)

No.3093 2016/10/30(Sun) 10:58:14
スクリプト自身のパス / satocha
スクリプト自身のパスを取得するにはどうしたらいいのでしょうか。

標準的なやり方が分からず、これまで、Get_Cur_DirとGet_UWSC_Nameの合成で代用していました。
ところが、スクリプトをwine環境で動かす必要があり調べたところ、Get_Cur_Dirがスクリプトのあるフォルダではなく、スクリプトを起動した時のフォルダを指してしまうためうまくいきません。

例えばルートフォルダでUWSCを起動すると、スクリプトの場所にかかわらず、Get_Cur_DirはZ:\になります。

変数名からいうと、こちらのほうが本来の動きなのかもしれませんが、スクリプトのパス取得には使えません。

スクリプト自身のパスを取得する標準的な手法を知っている方はご教示ください。

UWSC ver 5.2.3
os=Linux localhost.localdomain 4.7.9-200.fc24.x86_64 #1 SMP Thu Oct 20 14:26:16 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
wine ver =wine-1.9.20 (Staging)

No.3081 2016/10/29(Sat) 03:53:31

Re: スクリプト自身のパス / satocha
補足です
wineでの実行については、uwsc.exeを直接起動するのではなく、下のスクリプトを経由することで、所期の目的を果たせています。
ただ、2971以下のスレッドのような手順でカレントディレクトリは動いてしまうため、Get_Cur_Dir
ではないスクリプトパスの取得方法を知りたいので質問しました。

uwsh.sh

#!/bin/sh
scriptpath=$1
cd "${scriptpath%/*}"
wine /home/satoocha/'VirtualBox VMs'/share/uwsc523/UWSC.exe "$1"

No.3083 2016/10/29(Sat) 13:08:28

Re: スクリプト自身のパス / stuncloud
少なくともUWSCの特殊変数ではないです
> Get_Cur_DirとGet_UWSC_Nameの合成で代用していました。
とするのが常套手段です

スクリプトの実行者はスクリプトがどこにあるかわかっているはずなので、そのパスをスクリプトに渡してPARAM_STR[]で取得するというのが最も単純な手かとは思います
苦肉の策すぎますかね

あとは status(getid(GET_THISUWSC_WIN), ST_PROCESS) で自身のPIDが取得出来ますので、自身のプロセス実行時のコマンドラインからuwsc.exeに渡されたパスが取得できるのではないかと思います
wineで実行してるとなるとそのあたりどうなってるのかわからないのでできる保証はないですけど

ま、そもそもの話ですがサポートされた動作環境ではない以上出来ないことがあってもある程度は諦めるということも必要ですよね

No.3084 2016/10/29(Sat) 14:46:49

Re: スクリプト自身のパス / satocha
stuncloudさま

>status(getid(GET_THISUWSC_WIN), ST_PROCESS) で自身のPIDが取得出来ます
大きなヒントありがとうございます。おかげで、
pid=status(getid(GET_THISUWSC_WIN), ST_PROCESS)
CommandLine=powershell( "gwmi win32_process|?{$_.ProcessId -eq "+pid+"}|%{$_.CommandLine}" )
exepath=Get_Uwsc_Dir+"\uwsc.exe "
scriptpath=replace(CommandLine,exepath,"")
とやることで、スクリプトパスが得られました。これなら、途中でカレントディレクトリが変更されてもOKです。
問題はwine環境にpowershellをインストールできていないことです。
wineから動かすときは先述のシェルスクリプトを使うことにします。

No.3085 2016/10/29(Sat) 15:38:11

Re: スクリプト自身のパス / stuncloud
WMIならPowerShell()関数を使う必要もないですよ

pid = status(getid(GET_THISUWSC_WIN), ST_PROCESS)

with createoleobj("WbemScripting.SWbemLocator")
 with .ConnectServer
  q = .ExecQuery("SELECT CommandLine FROM Win32_Process WHERE ProcessId = " + pid)
  getoleitem(q)
  msgbox(ALL_OLE_ITEM[0].CommandLine)
 endwith
endwith

No.3088 2016/10/29(Sat) 22:41:00

Re: スクリプト自身のパス / satocha
stuncloudさま

ありがとうございました
下の方法で、wineでもwindowsでもカレントディレクトリとは無関係にスクリプトのパスが得られました。
pid = status(getid(GET_THISUWSC_WIN), ST_PROCESS)
commandline=""
with createoleobj("WbemScripting.SWbemLocator")
 with .ConnectServer
  q = .ExecQuery("SELECT CommandLine FROM Win32_Process WHERE ProcessId = " + pid)
  getoleitem(q)
  commandline=ALL_OLE_ITEM[0].CommandLine
 endwith
endwith

exepath=Get_Uwsc_Dir+"\uwsc.exe "
//wineではCommandLineがなぜか二重引用符付きで出力されるので外しておく
CommandLine=replace(CommandLine,"<#dbl>","")
scriptpath=replace(CommandLine,exepath,"")

No.3090 2016/10/30(Sun) 06:29:54


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


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