[ 掲示板に戻る ]

過去ログ閲覧モード

MOUSEORGの第2変数について。 / nanasi
メモ帳を開いた状態で、
MOUSEORG(GETID("■"),1)
//MMV(60,20)
BTN(LEFT,CLICK,60,20)
KBD(VK_A)
このようなスクリプトを実行すると■のクライアント領域から60,20の場所をクリックし、fキーを入力しました。
ここまでは良いのですが、

MOUSEORG(GETID("■"),2)
//MMV(60,20)
BTN(LEFT,CLICK,60,20)
KBD(VK_A)

とすると、ヘルプファイルによると、マウスのクリックを■のクライアント領域の左上を基準に60,20の場所をクリックを送るはずなのですが、特に変化がなかったです。(60,20の場所にはボタンがありそれで判断しています。)

疑問点は、
・クリックを送る(キーetc.も)とはどういうことなのか。
・2回めの動作(mouseorgの第二引数を2にした時)は正しいものなのか。
・クライアント領域を何処にするかはそのプログラムを描いた人の思い通りにできるのか。
です。。。

それと、私一度C++を触って途中で挫折したので、もう少し簡単な言語をご存じの方がいらっしゃいましたら、教えていただきたいです。
使用用途はuwscのようなことがGUI付きでしたいです。。。。

No.1740 2015/09/27(Sun) 18:26:09

追記 / nanasi
環境です。
uwsc:5.1.2.0
Win 7 SP1

No.1741 2015/09/27(Sun) 20:24:12

Re: MOUSEORGの第2変数について。 / nanasi
■の部分は別のアプリケーションでもダメなようです。
Skypeでも同じスクリプトで実行してみましたが、その位置にユーザー情報へのリンクがあるのでそれで判断した所、どうやらクリックされていないようでした。

初めの投稿の訂正:
KBD(VK_A) //2箇所共にKBD(VK_F)の間違いでした。
第二引数を2にした時でFキーの入力も確認されませんでした。 //但し、メモ帳のようなソフトで試したので、クリックされていないからというだけかもしれません。

No.1745 2015/09/28(Mon) 20:26:26

Re: MOUSEORGの第2変数について。 / miles
疑問点に答えることはできないのですが、
MOUSEORGを下記にするとキー入力されます。
(ヘルプファイルの例を参考にした)

MOUSEORG(GETCTLHND(GETID("メモ帳"),"Edit"), 2) // メモ帳のEdit部を指定
//MMV(60,20)
BTN(LEFT,CLICK,60,20)
KBD(VK_A)

No.1746 2015/09/29(Tue) 14:35:07

Re: MOUSEORGの第2変数について。 / nanasi
返信ありがとうございます。
私の環境でも下さったスクリプトが動作しました。

1つ解決して思い立って調べてみたのですが、BTNやKBD関数はMOUSEORG上で(第二引数を2にして)使うとアプリとの相性で動作する時としない時があるというのが一般見解らしいです。

取り敢えず今のところはマウスを使う時だけ自動でアクティブにしてHARDLOCKで誤操作が起きないようにしてやっていく方針です。

またいつかわかったことがあったら宜しくお願いしますm(__)m

No.1749 2015/09/30(Wed) 00:44:35
SBI HYPER / まっする
SBI証券のシステムであるSBI HYPER という発注画面(ソフト)を起動して
HiMacroExでマウス記録、クリック記録等をしようと
思い、動かしてみましたが、マウス記録、クリック記録等が
できなくて困っております。お手数ですがご教授お願い致します。

No.1732 2015/09/26(Sat) 17:06:13

Re: SBI HYPER / routa
ここはUWSCの掲示板ですよ。
No.1734 2015/09/26(Sat) 21:57:57

Re: SBI HYPER / まっする
すいません。HiMacroExではなくUWSCで動きません。
というよりかは操作系のソフトはどれも動きません。
SBI HYPER のシステム上、座標等認識するのは無理なのでしょうかね?
素人ですいません。

No.1737 2015/09/27(Sun) 07:25:02
Windows7における色認識(peekcolor関数) / とんぴー
OS:Win7
使用Ver:5.0.2.0

タイトル通りです。
Windows7にてUWSCのPeekcolor関数を使用したところ正しい色の取得が出来ませんでした。
何か対策等があれば教えていただけないでしょうか。
最新版でも行いましたが取得できませんでした。

No.1731 2015/09/25(Fri) 20:58:23

Re: Windows7における色認識(peekcolor関数) / routa
私が確認するかぎりPeekcolorには問題ありませんね。
どんなアプリに対して,どんなプログラムで確認したのか書きましょうよ。
これでは何にもわからないですよ。

No.1733 2015/09/26(Sat) 21:56:30

Re: Windows7における色認識(peekcolor関数) / えあり
一応、念のために聞きますけど
RGBではなくGBR値で
取得値は10進数なので16進数に戻してやらないと色数分離できませんよ

分かってる上で取得できていないならすみません

No.1736 2015/09/27(Sun) 02:43:21
UWSCの設定、ランチメニューの個別設定について / To
OS:XP
使用Ver.4.9.3.0

UWSCの設定とランチメニューの設定をやらせる仕事毎に個別に設定したいのですVer.512を一度起動したら?設定できなくなり、全てのUWSCで設定、ランチメニューの設定が共有されるようになってしまいました。
解決方法をご存知でしたら教えていただけないでしょうか。

Ver.512を使用したPCに発生? Ver.4.930のみしか使っていないPCでは起きていません。
Ver.4.930を起動しても同フォルダ内のINIファイルの設定を読み込まずに、Ver,512の設定になっている、¥Application Data内のUWSC.INIの設定を読み込むようになっているようです。

UWSCをそのフォルダごとのINI.ファイルを読みこませる方法が分かりません。

No.1724 2015/09/25(Fri) 02:03:06

Re: UWSCの設定、ランチメニューの個別設定について / Nagatani
POFF(P_UWSC_REEXEC)を使って\AppData\Roaming\UWSC\UWSC.INIを都度都度書き換え設定を変更してみては
No.1729 2015/09/25(Fri) 18:55:13

Re: UWSCの設定、ランチメニューの個別設定について / To
すいません事故解決しました。
¥Application DataのUWSCフォルダを削除したら、同フォルダ内の.INIを読み込むようになりました。

No.1730 2015/09/25(Fri) 20:29:59
アクティブフォルダのパス / sato
アクティブフォルダのパスを取得するにはどうすればよろしいでしょうか。
No.1725 2015/09/25(Fri) 10:56:52

Re: アクティブフォルダのパス / stuncloud
// UWSCの作業ディレクトリの話であれば
print GET_CUR_DIR

// Explorerの話であれば
shell = createoleobj("Shell.Application")
for window in shell.Windows
 if pos("\explorer.exe", window.FullName) then
  print replace(replace(window.LocationURL, "file:///", ""), "/", "\")
 endif
next

// アクティブなExplorerという意味であれば
// 上記のforinループ内で
// status(hndtoid(window.hwnd), ST_ACTIVE) が TRUE を返すかどうかで判断出来ます

No.1726 2015/09/25(Fri) 11:57:10

Re: アクティブフォルダのパス / sato
早速の回答ありがとうございます。
開いているすべてのファイルのパスを取得するのですね。
アクティブになっているフォルダのみ取得する方法はあるでしょうか。
アクティブになっているフォルダに新規のファイルを作りたいのですがうまくいかないので
よろしくお願いいたします。

No.1727 2015/09/25(Fri) 14:24:57

Re: アクティブフォルダのパス / sato
すみません。
// アクティブなExplorerという意味であれば
// 上記のforinループ内で
// status(hndtoid(window.hwnd), ST_ACTIVE) が TRUE を返すかどうかで判断出来ます
を見落としておりました。
希望通り取得できました。
助かりました。ありがとうございました。

No.1728 2015/09/25(Fri) 15:22:07
スピードアップを図りたい(vlookupの代わり) / sen
いつもお世話になっております。
再度、fopenでチャレンジしてみました。
100件で10000秒位です。
?@doscmdとfindstr
?A行毎のfputの書き込み
?BBetweenStrを使用してのループの削減
と教えて頂いた事をフルに生かして作成してみたのですが、もう少し早くならないかと思うんです。
御教授いただけませんでしょうか?

最初の時間 = GetTime() * 1000 + Val(G_TIME_ZZ2)
 元ファイル = INPUT("ファイルを指定")
 実績 = fopen(元ファイル, F_READ or F_WRITE)
  データ = fget(実績,1)+","+"業態"
  fput(実績,データ,1)
  for i = 2 TO fget(実績,F_LINECOUNT)
   一行全部 = trim(doscmd("findstr <#dbl><#dbl>" + fget(実績,i,6) + "<#dbl><#dbl> 得意先マスタ.csv"))
   データ = fget(実績,i)+","+ BetweenStr(一行全部,",",,-1)
   fput(実績,データ,i)
   if i = 100 then 百件の時間 = GetTime() * 1000 + Val(G_TIME_ZZ2)
  next
 fclose(実績)
百件の掛かった時間 = (百件の時間 - 最初の時間) / 1000
print 百件の掛かった時間
MsgBox(百件の掛かった時間)

//データ.csv・・・10000行以上
//日,月,CD,年,担当,得意先CD
//20140802,8,8,2014,高田,11111111

//得意先マスタ.csv・・・10000行位
//得意先一覧
//データ作成日:15/08/05
//営業所名,得意先CD,業種
//東京,11111111,木材卸

No.1720 2015/09/22(Tue) 11:38:30

Re: スピードアップを図りたい(vlookupの代わり) / Liners
データ・マスタ共に一万件以上か…そろそろデータベースの出番ですね。
UWSCで頑張るのならスピードの点で少し頭を切り替える必要があります。

まずボトルネックを確定してください。おそらく 一行全部 =〜
次に、最終的にどんなデータにしたいのかを教えてください。

たぶん プログラムからデータ.csvに業種データを追加したいだけ。
ただし、マスタの得意先CDに対応し、結局100件ではなく10000件以上を行いたい。

現状では10000秒*100=約277時間…現実的ではないですね。
少なくとも100倍速以上の超高速スクリプトが必要…昔を思い出します。

一見そんな爆速プログラムは不可能に思えますが、騙されたと思って連想配列を使ってみてください。

得意先マスタ.csvを連想配列に取り込みます。
h[得意先CD]= 業種 の形でいいでしょう。

後は、データ = fget(実績,i)+","+ h[fget(実績,i,6)] で一行全部=〜はいらないでしょう。
ヒントはこのくらいで♪ 是非、何倍速になったか報告してくださいね。

No.1721 2015/09/23(Wed) 00:10:31

Re: スピードアップを図りたい(vlookupの代わり) / sen
作成し直しました。

>>現状では10000秒*100=約277時間…現実的ではないですね。

何時間もは掛からないなと思ってよく見たら、小数点がありました。(^_^)
時間のはかり方も、最後までに修正して計測することにしました。

なんと、55倍!!

結構な期間、excelとaccessとuwscでモヤモヤしていました。
これなら、悩む必要もなく次の夢も膨らみます。
他の方の為にも、「サンプル」に載せて頂きたい気持ちです。
何はともあれ、本当に有り難うございました。


結果
行数:7562行
元 :332.465秒
新 :6.044秒
比較:55倍

hashtbl h
dim 得意先CD
最初の時間 = GetTime() * 1000 + Val(G_TIME_ZZ2)
 元ファイル = INPUT("ファイルを指定")
 実績 = fopen(元ファイル, F_READ or F_WRITE)
  データ = fget(実績,1)+","+"業態"
  fput(実績,データ,1)
  
 id = fopen("得意先マスタ.CSV")
  for s = 4 to fget(id,F_LINECOUNT)
   h[fget(id,s, 2)]= fget(id,s, 14)
  next
  fclose(id)
  for i = 2 TO fget(実績,F_LINECOUNT)
  データ = fget(実績,i)+","+ h[fget(実績,i,6)]
  fput(実績,データ,i)
  next
 fclose(実績)

すべての時間 = GetTime() * 1000 + Val(G_TIME_ZZ2)
すべての掛かった時間 = (すべての時間 - 最初の時間) / 1000

print すべての掛かった時間
MsgBox(すべての掛かった時間)

No.1722 2015/09/23(Wed) 23:00:04
POSACC 関数でエクスプローラー内のソートが遅くなる / rek
POSACC 関数でエクスプローラー内のソートが遅くなる

UWSC をいつも大変便利に使わせていただいております。

UWSC のスクリプト実行中に、望ましくない動作が確認できましたので、ご報告いたします。

エクスプローラーで10個以上程度の子ファイル・フォルダを持つフォルダを開いた状態で POSACC 関数を実行すると、
その後、そのフォルダウインドウ上のカラム名をクリックすることで行われるソートが極端に遅くなります。
この症状は UWSC のスクリプトが終了したあとも継続しますが、表示中のフォルダを切り替えると直ります。
なお、フォルダを切り替えず、単に更新するだけでは直らないようです。

使用中の UWSC のバージョンは Ver 5.1.2 で、OS は Windows 10 Pro 64bit です。

実は、UWSC とは無関係なツールでも同じような症状が確認できておりまして、
UWSC というよりは Microsoft Active Accessibility に問題があるのかもしれません。

皆様から、追加の情報や問題解決のアドバイス等を頂けますと大変嬉しく思います。
どうぞよろしくお願いいたします。

No.1719 2015/09/21(Mon) 15:30:55
vlookupで別ファイルを参照する計算式をExcelに埋め込みたい / sen
いつもお世話になっております。

データベースから立ち上がってきたcsvデータに計算式を埋め込み、
下までコピーして(今のところまだ)、企業体を追加して、csvで上書き保存すると、
良いのではないかと思い作成してみたのですが、値の更新が途中ででてきて消す事ができません。
「a」の位置で止まり、手動でescキーを押すと進みます。

fget等でやっていたのですが、うまく作れず時間が掛かる(データもマスターも一万行以上)のでExcelに戻ってきました。
ただ、できれば手動は残念です。
御教授いただけませんでしょうか?

EXEC("D:\明細.exe")
id = GETID("売上明細検索", "ThunderRT6FormDC", -1)
CLKITEM(id, "実 行", CLK_BTN)
CLKITEM(GETID("SQL処理中", "ThunderRT6FormDC", -1), "はい", CLK_BTN)
CLKITEM(id, "はい", CLK_BTN)
GETID("Microsoft Excel - Nrb0000.CSV", "XLMAIN", -1) //データベースから出力されるのを待つ。
id = GETID("売上明細検索", "ThunderRT6FormDC", -1)
CLKITEM(id, "終 了", CLK_BTN)
Excel = XLOPEN("C:\Windows\Nrb0000.CSV") //起動済みのExcelを捕まえる。
//データがcsv形式で立ち上がります。


THREAD 値の更新を閉じる

XLSETDATA(Excel,"年","AR1")
XLSETDATA(Excel,"=MID(INDIRECT(ADDRESS(ROW(),1)),1,4)*1","AR2")
XLSETDATA(Excel,"月","AS1")
XLSETDATA(Excel,"=MID(INDIRECT(ADDRESS(ROW(),1)),5,2)*1","AS2")
XLSETDATA(Excel,"企業体","AT1")
XLSETDATA(Excel,"=VLOOKUP(INDIRECT(ADDRESS(ROW(),6)),マスタ.csv!B:P,15,FALSE)","AT2")//ここで止まります。・・・a

マスタ = XLOPEN("D:\得意先マスタ.csv",XL_BOOK)

IF MSGBOX("マスターを閉じますか?") THEN XLCLOSE(マスタ,"得意先マスタ.csv")

Procedure 値の更新を閉じる()
 REPEAT
  トップ = GETID(GET_ACTIVE_WIN)
  更新ID = GETID("値の更新", "#32770")//GETID("値の更新")
  ACW(更新ID)
  sleep(1)
  CLKITEM(更新ID, "キャンセル", CLK_BTN)
 UNTIL 更新ID = -1
Fend

No.1713 2015/09/17(Thu) 21:23:13

Re: vlookupで別ファイルを参照する計算式をExcelに埋め込みたい / stuncloud
そもそもcsvファイルを参照先に出来ないんですが、そういうものなんでしょうかね?
csvに書き込む値は参照式ではなくvlookupで取得した値そのものでも構いませんか?
であれば

// D:\得意先マスタ.csv 上でvlookup関数を使用した結果の値を取得する
マスタ = XLOPEN("D:\得意先マスタ.csv",XL_BOOK)
target = "検索値" // ※ 直接入れるなりC:\Windows\Nrb0000.CSVから取得するなりして、検索値を入れてください
range = マスタ.Range("B:P")
value = マスタ.WorksheetFunction.VLOOKUP(target, range, 15, false)

// 取得した値を書き込む
XLSETDATA(Excel, value, "AT2")

といった感じでどうでしょう

No.1715 2015/09/18(Fri) 11:43:02

Re: vlookupで別ファイルを参照する計算式をExcelに埋め込みたい / sen
>>そもそもcsvファイルを参照先に出来ないんですが、そういうものなんでしょうかね?

済みません。違ってました。

csvで上書き保存すると
 ↓
xlsで保存すると

>>csvに書き込む値は参照式ではなくvlookupで取得した値そのものでも構いませんか?

式が望みではあります。(^_^)

csvとcsvなので一度保存して閉じた状態でfputでのやり方をこの掲示板で教えて頂いて、色々とやってみております。

こんなのとか。
FUNCTION f担当抽出(var 得意先cd)
 抽出 = fopen("temp.csv", f_write)
  fput(抽出, trim(doscmd("findstr <#dbl><#dbl>" + 得意先cd + "<#dbl><#dbl> 掛け率.csv")))
 fclose(抽出)
 id = fopen("temp.csv")
  For i = 1 to fget(id,-1)
   ifb 得意先cd = fget(id,i,3) then
    Result = fget(id,i,21) //担当者コード
    break
   endif
  next
 fclose(id)
FEND

ただ、欲しいデータを足すというか、自分がいじくるとどんどん遅くなるのです。(^_^)
そこで、基本的に企業体名とかの項目を足してピポットテーブルで集計するだけなので、計算式をatokの単語登録に入れておいて手作業で、にもどっていました。これが結構待たずにできて結構普通な感じなのです。
そこで上記の形で「値の更新」を閉じるところで引っかかっている次第です。

No.1717 2015/09/20(Sun) 10:00:18

Re: vlookupで別ファイルを参照する計算式をExcelに埋め込みたい / stuncloud
> 「値の更新」を閉じるところで引っかかっている次第です。
ですよね、それが
> そもそもcsvファイルを参照先に出来ない
ということだったのですが…
最初にcsvファイルをxlsxで保存するようにして、参照式はそのxlsxファイルを対象にするといった工夫が必要なのでは?と思っております
外部ファイル参照については完全にExcelの話ですし、僕もそこまで詳しくはないのでこれ以上はちょっと回答しかねます…

No.1718 2015/09/21(Mon) 02:02:41
手動実行のときはOKなのに、スケジュールによる起動の時だけエラーとなる場合 / たつや
ご多用中に恐れ入ります。
当方素人につき、以下、言葉足らずな点などございましたら、ご容赦下さいませ。

・現在、以下の3つのuwscプログラムを使用しております。
?@所定のサイトから、情報をダウンロード。
?A上記?@にてダウンロードした情報から、各種帳票などを生成。
?B上記?Aにて生成した帳票を、メールなどにて外部へ送信。

・スケジュール設定にて、20分の間隔をあけて、上記3つについて、自動実行を致しております。
?@の実行後、20分経過後、?Aを実行。その後20分経過後、?Bを実行。

・しかしながら、以下のようなトラブルが起こっております。

★スケジュールにて自動起動させる場合、2回に1回程度の確率で、?Aの途中で動作がストップしてしまう。
★ただしその後、手動で、?@〜?Bを行う際は、まったく問題なく動作する。

各uwscプログラムのコーディング自体は、外部の者に委託して作成をしてもらっており、
?@〜?Bのプログラムのコード自体には、いくら確認をしても、上記のようなトラブルの要因が見当たらない、という現状とのことです。(※そもそも上記致しましたように、手動で?@〜?Bを動かす限りにおいては、まったく問題なく動作致しますので、コードの問題ではない公算が高いようです)

上記?Aの動作が、複数のエクセルマクロを起動する処理であるため、パソコン本体のメモリ不足が原因かも、と仮定し、メモリの増設も行いましたが、上記の状況に変化はありませんでした。

上記のような状況に関しまして、何らかの対処法等ございましたら、
皆様お忙しいところ大変恐縮ではございますが、ご教授を賜りますと、大変に助かります。

以上、素人の乱文にて、恐れ入りますが、
何卒、よろしくお願いを申し上げます。

失礼致します。

No.1673 2015/09/09(Wed) 11:25:30

Re: 手動実行のときはOKなのに、スケジュールによる起動の時だけエラーとなる場合 / 佐々木
こんにちは。佐々木といいます。

まずは、各プログラムからログを出力するようにしていますか?
原因不明の場合、あたりを”感”でなく実際の停止場所から調べないといけません。

1,2,3のそれぞれのプログラムの主要部分でログを出力するようにさせておき
どの時点で失敗しているのかを追跡してみてください。

全くログが出力されていなければ、そもそも起動できていないとか
1が完全に終了していないので、2が実行できていないとか
色々判断できる情報が出てくると思いますよ。

No.1714 2015/09/18(Fri) 08:30:16

Re: 手動実行のときはOKなのに、スケジュールによる起動の時だけエラーとなる場合 / たつや
佐々木様

ありがとうございます!! 早速ログの出力を行い、エラー箇所の特定を行いましたところ、
エラーの原因が明朗となり、解決することができました!!
素人の知見不足な質問にご丁寧にお答えをお寄せいただき、本当にありがとうございました。
また是非、よろしくお願い致します!助かりました!

No.1716 2015/09/18(Fri) 17:09:32
アプリケーションの強制終了 / よろしくお願いします
いつもご利用させていただいております。

Dim o_XL = CreateOLEObj("Excel.Application")

で作成したExcelで色々やっていると、「Excelは動作を停止しました」となり終了することがあります。この終了を検知する方法はあるのでしょうか?検知できた場合、ログ出力・分岐を行いたいです。

No.1685 2015/09/11(Fri) 17:15:29

Re: アプリケーションの強制終了 / ooo

難しいですね〜

No.1704 2015/09/14(Mon) 21:25:20

Re: アプリケーションの強制終了 / しろまさ
停止すればCOMERRORが起こるでしょうから、
COM_ERR_IGN - COM_ERR_RET や Try - Except - EndTry
などで出来るのでは?(未検証)

No.1709 2015/09/15(Tue) 09:47:59

Re: アプリケーションの強制終了 / 助
他の西都から画像を拝借します
http://hamachan.info/win8/office/crash1.gif

「Excelは動作を停止しました」はこの画像ですよね?
この状態ではエクセルのオブジェクトはまだ生きている状態なので
UWSC側ではTry〜ではキャッチできないのではないでしょうか?

逆にいえば、この画面になったかどうかを判断したいのでは?
方法はわかりかねますが...。

No.1712 2015/09/16(Wed) 16:47:22
全1170件 [ ページ : << 1 ... 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 ... 117 >> ]