[ 掲示板に戻る ]

過去ログ閲覧モード

saveimgでアクリル板画像も保存したい / kb
こんばんは
「アクリル板(acryl Borard)」という動作中のソフトの上から絵を書けるフリーソフトを使っています
アクリル板を使った画面全体保存を手動でキーボードからプリントスクリーンを使うとアクリル板で描いたものを含めて全画面保存出来ました
しかしながら、UWSCのsaveimgで以下のように保存すると、画面は保存出来るのですが、アクリル板のツールバーや描いたものが何故か写りません。
どのようにすれば良いかお願いします。
path = "C:\aaa.jpg"
saveimg(path, 0)  //←ダメでした
saveimg(path, 0,,,,,, 100) //←ダメでした

当方、OS:XP UWSCPRO:5.1

No.815 2015/02/09(Mon) 00:58:04
テキストボックスの入力可能かの確認 / o.t
いつもお世話になっております。
先日、UMSC Proを購入しました初心者ですが、
テキストボックスが入力可能かの確認とテキストボックスへのフォーカス移動は、
どのようにしたら良いでしょうか?
よろしくお願いいたします。

No.803 2015/02/07(Sat) 18:14:39

Re: テキストボックスの入力可能かの確認 / routa
実際に入れてみて確認してみてはどうですか。
場合により第5引数はtrueにしてください。
フォーカスだけの移動なら空文字を入れれば良いと思います。
for x = 1 to 10
sendstr(id, x, x, true, false)
next

No.810 2015/02/08(Sun) 15:53:14
要望 (CHKIMGで探す画像名種類拡大) / 藤原 修
要望です。
画像を元にボタン化している画面がありITEM指定が困難です。そのため、その画面の画像の位置を求めてクリックしたいと考えていますが、CHKIMGで指定できる画像の種類が、BMP形式だけとなっています。このBMP形式以外も拡張していただくわけにはいかないでしょうか。今回、gif形式が検索できればと考えています。

No.778 2015/02/03(Tue) 11:55:51

Re: 要望 (CHKIMGで探す画像名種類拡大) /
BMPのみで十分です。
No.800 2015/02/07(Sat) 02:10:50
EXCEL メソッドの引数の指定について / horowasan
こんばんは,よろしくお願いします。
例を示してお伺いしたいと思います。

EXCEL = CREATEOLEOBJ("Excel.Application")
EXCEL.visible = True
EXCEL.workbooks.open(FileName:=FName, UpdateLinks:=3)

上記の3行目は,既存のファイルを開いて,そのときリンクを更新するという指定です。
問題無く動作します。
ここでひとつ疑問ですが,本来EXCEL VBAでは、メソッドの引数は,括弧で括らずに,下のように
示すことが,HELPに出ています。つまりこういう形です。

EXCEL.workbooks.open FileName:=FName, UpdateLinks:=3

メソッドの引数を指定するときには,UWSCでは,括弧で括らなければならない仕様になっているのでしょうか。ひとつ確認させて下さい。よろしくお願いいたします。

もう1つ,質問があります。1行目の
EXCEL = CREATEOLEOBJ("Excel.Application")
とあるので,EXCELというのは,エクセルVBAで言うところの,Applicationオブジェクト変数であると考えてよろしいのでしょうか?
もしよろしいとしたら,Applicationオブジェクトのメンバーであるメソッドやプロパティが使えると考えてよろしいのでしょうか?前の質問でも述べたとおり,引数に括弧が必要だったりして,若干のUWSC仕様というのがありそうですが・・・。
例えば,Applicationオブジェクトに,Worksheetsプロパティがありますが,VBAのHELPには次のようなコードが載っています。

Worksheets("Sheet1").Move After:=Worksheets("Sheet2")

これを,UWSCに応用すれば,

EXCEL.Worksheets("Sheet1").Move After:=Worksheets("Sheet2")

とすれば,"Sheet1"シートが"Sheet2"シートの後ろに移動しそうですが,これは,SyntaxErrorになります。これは想定内です。引数に括弧がないのですから,そこで,

EXCEL.Worksheets("Sheet1").Move(After:=Worksheets("Sheet2"))

としてみると,「関数WORKSHEETSがありません。」とエラーメッセージが出ます。
当方,初心者ですので,認識不足が言わせたものとお許し願いたいです。しかし,現在私の頭の中は???という感じになっています。どうか,教えて下さい。よろしくお願いいたします。

No.787 2015/02/06(Fri) 01:12:49

Re: EXCEL メソッドの引数の指定について / しろまさ
>括弧で括らなければならない仕様になっているのでしょうか
です。

> Applicationオブジェクト
です。

> EXCEL.Worksheets("Sheet1").Move(After:=Worksheets("Sheet2"))
EXCEL.Worksheets("Sheet1").Move(After:=EXCEL.Worksheets("Sheet2"))

省略は出来ません。省略したい場合はWithを使用して.をつけます。
With EXCEL
  .Worksheets("Sheet1").Move(After:= .Worksheets("Sheet2"))
EndWith

ちょっとしたサンプル↓
http://siromasa.digi2.jp/uwsc/u_term/ExcelApplication.html

No.791 2015/02/06(Fri) 13:12:50

Re: EXCEL メソッドの引数の指定について / horowasan
しろまさ さん
ありがとうございました。
すっきりしました。またよろしくお願いします。
本当にありがとうございました。

No.799 2015/02/06(Fri) 21:02:05
画像ボタンクリック時の操作不可状態について / みみ
FXの自動売買ツール作成中なのですが、決済時の処理で困っています。

以下の仕様でUWSCで操作させているのですが、?Bの操作をすると操作が不可な状態となります。
?@購入済みのポジションをクリック。
?A出てきた入力フォーマットにOCO注文情報を入力。
?B入力フォーマットの画像ボタンをクリック。
OCO注文:2つの注文を同時に出しておいて、どちらかが成立したら、どちらかをキャンセルする注文

?BのクリックをIESETDATA、BTN、IE.documentのclick()操作で試しましたがどれも操作が不可な状態となります。ただ、?@を実際にマウスでクリックしたあとに?A、?Bと実行するとうまく動くといった状態です。原因がわからないため、調査方法や解決策の案などあれば教えてください。

No.783 2015/02/04(Wed) 14:01:35

Re: 画像ボタンクリック時の操作不可状態について / みみ
原因わかりました。
<Html>の"onclick"で呼ばれる<Javascript>関数の他に"onmouseover"で呼ばれる<Javascript>の関数がいて、その関数内で生成されるものを"onclick"で呼ばれる<Javascript>関数が参照していたためです。
すでに他の事例を参考にして解決しました。

No.796 2015/02/06(Fri) 15:00:58
slctboxをthreadで動かす / ミルシュカ
slctboxを使ってメインのスクリプトの動作を制御しようと思っています。
具体敵にはslctboxをthreadで動かして、そこから入力された変数でメインのスクリプトの処理を変更したいと言う感じです。
ところがthreadで動かしているのにslctboxが現われている間はメインのスクリプトの処理も中断してしまいます。
これはslctboxの仕様なんでしょうか?
何か回避方法とかはないでしょうか?

No.776 2015/02/02(Mon) 05:56:02

Re: slctboxをthreadで動かす / routa
別プロセスで実行する方法です。
--- slctbox.uws ---
exitexit SLCTBOX(SLCT_BTN, 0, "タイトル", "あ", "い", "う")
-------------------
SLCTBOXを記述した上記一行のファイルを作成して,別プロセスで呼び出します。
ret = exec(GET_UWSC_DIR+"\uwsc.exe "+GET_CUR_DIR+"\slctbox.uws", True)

No.780 2015/02/04(Wed) 00:34:37

Re: slctboxをthreadで動かす / ミルシュカ
routaさんありがとうございます。
ちょっと試してみたんですが、これだと結局slctbox.uwsを呼び出してslctboxの項目を選択するまでメインのスクリプトが止まってしまいますよね?
メインのスクリプトは動かしたままslctboxの入力を利用したいんです。

No.781 2015/02/04(Wed) 06:13:32

Re: slctboxをthreadで動かす / koi
考え方の問題だけではないかと思います
その動かし続けたいメイン  というのをスレッドにして
止まってしまうSLCTBOXの方をメインに書いてはダメなのでしょうか?

No.782 2015/02/04(Wed) 07:56:51

Re: slctboxをthreadで動かす / routa
スレッドから呼び出して下さい。
No.785 2015/02/04(Wed) 18:17:23

Re: slctboxをthreadで動かす / satocha
ユーザからの入力を受け取ることができるmsgbox、popupmenu、slctboxのいずれもメーンルーチンが止まってしまいますね。ただ、通常は止まっても問題ないケースが大半でしょう。表示はfukidasi、ユーザー入力はgetkeystateで代用する手もあります。

uwsc内部関数をあきらめてほかを探していたら、slctboxではなくpopupmenuではありますが、しゅんさんがpowershellを使ったポップアップメニューを公開されておられました(http://d.hatena.ne.jp/junjun777/20150121/powershell_popupmenu#seemore)。これを使ったところうまく同時実行できました。powershell側のコードを少しいじれば、セレクトボックスにもなりそうです。

あと、スレッドからメーンルーチンに情報を渡すのは意外に難しいと思います。共有メモリなどでググってください。下のサンプルはメーンルーチンでカウントアップする一方、ポップアップメニューでユーザーの入力をリアルタイムで受け取っています。aを選べばスクリプトが停止します。
////////メーン始まり
i=0
thread popuploop()
while true
  fukidasi( i )
  sleep( 0.3 )
  i=i+1
wend
/////////メーン終わり
function popuploop()
  while true
    pscmd =_popup + "<#cr>Show-PopupMenu 'a,b,c' -x 100 -y 100"
    result =trim( powershell( pscmd ) )
    if result ="a" then exitexit
    msgbox(result)
 wend
fend
textblock _popup
ここには上記アドレスにあるShow-PopupMenu関数の定義をそのままコピペしてください。
endtextblock

No.792 2015/02/06(Fri) 13:18:37

Re: slctboxをthreadで動かす / satocha
上記スクリプトでも、uwsc内部のmsgboxを使っているため、ユーザーの選択結果表示中はメーンルーチンが止まります。これに対応するには、wscript.echoなどで代用してください。
No.795 2015/02/06(Fri) 13:35:00
ウィンドウ名によって操作を変えたい / ざろん
前回はとてもお世話になりました。
やっと少し分かってきた状態です。
(高度な記録にすればだいぶ手間が省けるというのも最近しりました…)

初歩的なことかもしれませんが、教えて下さい。
ウィンドウ名によって操作を変えたいと思っています。

例として、ウィンドウ名が
テストA [00.00.00.00] だった場合には、Aを実行。
テストB [00.00.00.01] だった場合には、Bを実行
テストC [00.00.00.02] だった場合には、Cを実行 したいです。

この場合、どうやれば良いのでしょうか?
ウィンドウが無かった場合には「-1」が戻ると聞いたことがあるため
そのように組んでみましたが私が書くと、
とても見難いプログラムになってしまいます…。


id = GETID("テストA [00.00.00.00]", "", -1)
If id<>-1 then
Aを実行
Else
id = GETID("テストB [00.00.00.01]", "", -1)
If id<>-1 then
Bを実行
Else
id = GETID("テストC [00.00.00.01]", "", -1)
If id<>-1 then
Cを実行
Else
Msgbox "ウィンドウはありませんでした"
End if
End if

どなたか知恵をお貸し下さい!
よろしくお願いいたしますorz

No.789 2015/02/06(Fri) 10:47:29

Re: ウィンドウ名によって操作を変えたい / stuncloud
// 対象ウィンドウのうちいずれか一つしか表示されないのであれば
select status(getid("テスト"), ST_TITLE)
 case "テストA [00.00.00.00]"
  // Aを実行
 case "テストB [00.00.00.01]"
  // Bを実行
 case "テストC [00.00.00.02]"
  // Cを実行
 default
  msgbox("対象外ウィンドウです<#CR>やり直して下さい")
  exit
selend

// 対象ウィンドウが複数表示され、それぞれに対して処理を行いたいなら
for id in getallwin()
 select status(id, ST_TITLE)
  case "テストA [00.00.00.00]"
   // Aを実行
  case "テストB [00.00.00.01]"
   // Bを実行
  case "テストC [00.00.00.02]"
   // Cを実行
  default
   // 何もしない
 selend
next

どちらか都合に合う方でやってみてください

No.790 2015/02/06(Fri) 12:26:13

Re: ウィンドウ名によって操作を変えたい / ざろん
stuncloud様、回答ありがとうございます!

いずれか1つしか表示されないような仕組みとなっていることを
説明し忘れておりました。申し訳ありません。

両方のパターンを書いてくださりありがとうございます!

ウィンドウの名前にテストが含むんだったら…という分岐でしょうか?
私の長いプログラムがこんな短くわかりやすくなるなんて
凄いです…ありがとうございます!とても助かりました!もっと勉強します^^

No.794 2015/02/06(Fri) 13:30:01
IEのテキストボックスのフォーカス「|」について / つちねこさん
タイトルの件についてフォーカス「|」を外す方法を教えてください。

IE = GETACTIVEOLEOBJ( COMオブジェクト名, タイトル )
IESETDATA( IE, 値, テキストボックスのName )
⇒ ここまでの処理でテキストボックスにフォーカス「|」がある状態となります。
ここからテキストボックスのフォーカス「|」のみを外すための命令がわかりません。
ご存じの方いましたらご教示ください。

以上です。

No.763 2015/01/29(Thu) 03:29:09

Re: IEのテキストボックスのフォーカス「|」について / koi
勘違いしてるのかもしれませんが
それは入力のためのマウスカーソル表示なのでは?
(つまり入力可能なテキストboxにフォーカス移せば表示されるのが当たり前)

逆に何も表示されなければテキストboxにフォーカスが移って
入力可能状態(入力待ち)であることの判断が付きませんけど・・・
(その意味ではフォーカス移してカーソル消すという意味が分かりません)

何故カーソルを消したいのかがよくわかりませんが
WindowsAPIの ShowCursor関数をコールすれば消すことは可能だったはずです

ただし1回コールすれば消えるといった関数ではありません
http://blog.goo.ne.jp/masaki_goo_2006/e/54190d48419d313fd14131cbbb8bd36e
が参考になるでしょう

No.764 2015/01/29(Thu) 14:21:15

Re: IEのテキストボックスのフォーカス「|」について / つちねこさん
koiさん、ありがとうございました。

>何故カーソルを消したいのかがよくわかりませんが

→起きている現象から問題を疑った内容だったのですが、検討違いでした。
別の要因が原因でしたので問題解決です。

No.788 2015/02/06(Fri) 02:33:11
Excelのデータを元に、アプリを操作したい / ざろん
前回はお世話になりました。まだまだ勉強中です。
会社のアプリを自動化できたらと思い質問させていただきます。

Excelにあるデータをもとに、アプリを操作したいと思っています。

例として、
初期画面 フォームA
詳細内容 フォームB
があります。

フォームAに「AND」「OR」ボタンがあるので、

【AND】←フォームA
『レジストリ』←以下フォームB
「000.000.000.000を○○××」
「フォルダ内容は○○」
「××○○」
『一致』
「「追加」」
【OR】←フォームA
『レジストリ』←以下フォームB
「000.000.000.000を○○××」
「フォルダ内容は○○」
「××○○」
『異なる』
「「追加」」
【AND】←フォームA
『INIファイル』←以下フォームB
「○○××」
「○○」
「××」
「○×」
『一致』
「「追加」」

このように、ExcelのAセルに記載されていた場合に
【】はフォームAのボタン
『』はコンボボックス
「」はテキストボックス
「「 」」はボタンになっています。

Excelに入力した内容をもとに、
自動で操作するようにできるのでしょうか?

(Excelは2003です)

参考サイト、参考情報等あればお願いします!
現在はサンプルを見て回ってるところです。

No.762 2015/01/28(Wed) 10:58:59

Re: Excelのデータを元に、アプリを操作したい / Liners
会社のアプリなので自動化できるかは、不明。一般的に動作する可能性は高い。
検証できないアプリの説明をされても無駄ですし、何が出来ないのかが不明。

それより、最小限の動くサンプルで検討するのが手っ取り早いでしょう。

★Excel A列
『開く』
「test」
『開く』
「追加テキスト」
『上書き保存』


// UWSC Excelのリストによるメモ帳操作例 [予めtest.txtを作成しておく]

Excel = GETACTIVEOLEOBJ("EXCEL.Application")
sckey(getid("","XLMAIN"), vk_esc) // 編集モード解除
Cells = Excel.ActiveSheet.Range("A1").CurrentRegion.Value //範囲の値を取得 Cellsは2次元配列でA2はCells[2][1]
id = exec("notepad")

for i = 1 to length(Cells)
  str = trim(Cells[i][1])
  cmd = copy(str, 1, 1)
  pra = copy(str, 2, length(str) -2)
  select cmd
    case "『"
      clkitem(GETID(GET_ACTIVE_WIN), pra)
    case "「"
      sendstr(GETID(GET_ACTIVE_WIN), pra)
  selend
next

No.769 2015/01/30(Fri) 02:51:36

Re: Excelのデータを元に、アプリを操作したい / ざろん
Liners様、回答ありがとうございます。
申し訳ありません、色々と説明不足でした。
また、サンプルプログラムありがとうございます。
実際に動作するか確認し、プログラムを理解します。
(VBS、VBA等やったことあるので、なんとなくは分かります)

サンプルの
// マウスカーソル下のウィンドウのタイトルとクラス名を表示  #n14
While True
id = GETID(GET_FROMPOINT_WIN) // マウスカーソル下のウィンドウ
if id = GETID(GET_BALLOON_WIN) then Continue // 吹き出し自体は無視
moji = STATUS(id, ST_TITLE) + " , " + STATUS(id, ST_CLASS)
Balloon(moji, G_MOUSE_X+8, G_MOUSE_Y, 3)
Sleep(0.2)
Wend

を利用して、ウィンドウ名等は取得しようと思うのですが、
ボタン名などは取得できるのでしょうか?

アプリケーションソフトの見た目は、Excelのユーザーフォームのような感じです。

とても初歩的な質問かもしれず、申し訳ないのですが
回答いただけると嬉しいです。

No.770 2015/01/30(Fri) 17:03:07

Re: Excelのデータを元に、アプリを操作したい / Liners
ん?別の質問? #n14ではボタン名は取得できません。
通常は表示されているのがアイテム名ですが…

No.771 2015/01/30(Fri) 17:41:07

Re: Excelのデータを元に、アプリを操作したい / ざろん
ありがとうございます!返信遅れて申し訳ありません。
だいぶ上手く動作するようになって来ました!
ただ1点だけ上手く動かないところがあるので
その点だけ改めて質問させていただきたいと思います。

とても助かりました、ありがとうございます^^

No.779 2015/02/03(Tue) 13:35:28
COM_ERR_FLG の数値について / ミリアム
質問です。

COM_ERR_FLG にどのように TRUE や FALSE が設定されるのか調べていたのですが、よくわからなくなってきました…

COM_ERR_FLG に FALSE が設定されている時に
MsgBox(COM_ERR_FLG)
とすると 0 が表示されますが、TRUE のときはなぜか -1 が表示されます。
なぜなのでしょうか?

TRUE は 1 だと思っていたのですが、1 ではない時もあるのでしょうか?

----------------------------------------------------------------

IE = CreateOLEObj("InternetExplorer.Application")

MsgBox(COM_ERR_FLG) // 0

COM_ERR_IGN
IE.Quit
IE.Quit // 既にQuitされているのでエラーになる
COM_ERR_RET


MsgBox(COM_ERR_FLG) // -1
MsgBox(TRUE)       // 1

MsgBox(COM_ERR_FLG = TRUE) // 1
MsgBox(COM_ERR_FLG = -1)   // 1
MsgBox(TRUE = -1)         // 0

No.773 2015/01/31(Sat) 19:17:27

Re: COM_ERR_FLG の数値について / koi
>TRUE は 1 だと思っていたのですが、1 ではない時もあるのでしょうか?

TRUE/FALSEの定義についてだけの話をすれば その認識は間違っています
(言語やOS/環境などで異なる場合があります)

FASLEは0という認識でいいかと思いますが
TRUEはFALSEではない値ということで1以外にもー1が使われてることがありますので
論理値を数値扱いする場合は注意が必要になるでしょう

以下参考
http://www.officetanaka.net/excel/function/tips/tips59.htm

No.775 2015/02/01(Sun) 21:59:49

Re: COM_ERR_FLG の数値について / ミリアム
回答ありがとうございます!
TRUEだからといって、1であるとは限らないんですね。

勉強になりました!ありがとうございました!

No.777 2015/02/02(Mon) 23:34:06
全1170件 [ ページ : << 1 ... 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 ... 117 >> ]