[ 掲示板に戻る ]

過去ログ閲覧モード

例外の入れ子 / かき

try
while true
try
// usual shori
// usual shori
// usual shori
ok=true
ifb ok=true then
break
endif
except
try
// special okunote
// special okunote
// special okunote
except
// print damedeshita
endtry
endtry
wend
// print shori finish
except
// print nanika okita
endtry

uwsc例外の入れ子

No.4452 2017/09/22(Fri) 09:26:19

Re: 例外の入れ子 / かき

とbreakの相性が悪いのか なぜか
Range Check errorと出て実行さえできません。
ご教示宜しくお願い致します。

No.4453 2017/09/22(Fri) 09:39:45

Re: 例外の入れ子 / しろまさ
except内にtryブロックが在ると出ますね。

対症療法としてはexcept内のtryブロックを関数化することでしょうか。

umiumiさんの返答をお待ちしたいところです。

No.4454 2017/09/22(Fri) 09:52:52

Re: 例外の入れ子 / umiumi
修正します。
No.4463 2017/09/23(Sat) 22:38:27

Re: 例外の入れ子 / かき
お手数お掛けしてすみません。どうも有り難うございます。
No.4466 2017/09/24(Sun) 10:48:04
GoogleデベロッパーツールのメニューのSourceをクリックする方法 / NER
サイト上でGoogleデベロッパーツールを開いてメニューのSourceをクリックする方法ないでしょうか?

下記がその画像です。
https://gyazo.com/a89724a50c1c6861f04faece0ca9971f

No.4462 2017/09/23(Sat) 14:46:54
FORMATについて / 藍
いつもお世話になります。
FORMATについて教えて下さい。
3桁に桁をそろえようとしていますが
  A="90"
  B=90
  print format(A,3) // 909 と表示
  print format(B,3) // 90と表示
Aが「909」と表示されてしまいます。
ご教授願います。

No.4460 2017/09/23(Sat) 14:06:29

Re: FORMATについて / 藍
すみません。FORMATについて勘違いをしていました。お騒がせしました。
No.4461 2017/09/23(Sat) 14:27:20
かん / かん
マウスが左クリックされたら、特定の位置をクリックして元の位置にカーソルを戻す。ということをしたいのですが、なぜか毎度「クリックして戻る」を2回繰り返してしまいます。なぜでしょうか?

WHILE 1
WHILE 1
IF GETKEYSTATE( VK_LBUTTON ) THEN break
WEND

X=G_MOUSE_X
Y=G_MOUSE_Y

BTN(LEFT,0,200,200,100)
MMV(X,Y,100)
SLEEP(5)
WEND

No.4451 2017/09/22(Fri) 07:22:28

Re: かん / しろまさ
「WEND後に左クリックが押されているので次のGETKEYSTATE()を満たすから」です。

「左クリックが押され続けている間は待機する」処理をWEND後に入れて下さい。

PCは思った以上に速く動いているものです。

No.4455 2017/09/22(Fri) 10:01:13

Re: かん / stuncloud
SLEEP(5)の間に別の操作をしていればいいのだけれど、そうでない場合は最後の操作が「左クリック」になるのでGETKEYSTATE(VK_LBUTTON)がTRUEを返してしまうとかなんかそういう理屈だったような?
以下で回避できます

BTN(LEFT,0,200,200,100)
MMV(X,Y,100)
GETKEYSTATE(VK_LBUTTON) // もう一度呼ぶことでリセット
SLEEP(5)

No.4456 2017/09/22(Fri) 10:05:14

Re: かん / かん
ありがとうございます^^
うまく動作するようになりました

No.4457 2017/09/22(Fri) 12:43:08
InPrivateブラウズで起動したい / ボケチン
UWSCからIEを起動する時に、常時InPrivateブラウズモードで起動することは可能でしょうか。
No.4446 2017/09/20(Wed) 17:18:32

Re: InPrivateブラウズで起動したい / stuncloud
// -privateを付けてiexploreを叩く
exec("<#DBL>C:\Program Files\Internet Explorer\iexplore.exe<#DBL> -private")

// ShellExecuteならフルパス書かなくていい
with createoleobj("Shell.Application")
 .ShellExecute("iexplore", "-private")
endwith

sleep(1) // ちょっと待ってからgetactiveoleobjしないとCOMエラーになる
ie = getactiveoleobj("InternetExplorer.Application", "InPrivate")

No.4447 2017/09/20(Wed) 17:41:32

Re: InPrivateブラウズで起動したい / ボケチン
stuncloud様

確かに、Sleep(1)がないとCOMエラーになります。
何回か試して正常に稼働します、有り難うございました。

No.4450 2017/09/21(Thu) 10:11:01
「GetActiveOleeObjが変2」を読んで / sen
「GetActiveOleeObjが変2」を読んで、これだ!と思い、質問を指せて頂きます。

会社のソフトをクリックすると加工したexcelで表示され、加工したいのですが、
Excelを表示させるまでと、Excelを加工するところに分けて作り
それぞれは、うまくいくのですが合わせるとうまくいかなかったりします。
対策として?@?A?B?Cで凌いでいたのですが、完全ではありません。
会社で作ったものなので、AddToMru:=trueを追加を欲しいとも言えず、困っています。
何卒、ご教授願います。


対策
?@
SLEEP(1)
?A
id = GETID("Book1.xlsx - Excel", "XLMAIN", -1)
?B
fエクセル待ち()
PROCEDURE fエクセル待ち()
REPEAT
COM_ERR_IGN  //COMエラー無視
Excel = GETACTIVEOLEOBJ("Excel.Application")
COM_ERR_RET  //エラー処理復帰
UNTIL !COM_ERR_FLG //COMエラーなくなるまで繰り返し
fend
?C
エクセルを閉じる()
PROCEDURE エクセルを閉じる()
TRY
Excel = GETACTIVEOLEOBJ("Excel.Application")
XLCLOSE(Excel)
except
endtry
fend


CALL エクセル定数.uws

EXEC("D:\参照.exe")
id = GETID("参照", "ThunderRT6FormDC", -1)
SLEEP(0.1)
CLKITEM(id, "受注残クロス集計", CLK_BTN)
CLKITEM(id, "選択", CLK_BTN)
id = GETID("Ex3_Zion", "#32770", -1)
SLEEP(0.1)
CLKITEM(id, "OK", CLK_BTN)
id = GETID("参照", "ThunderRT6FormDC", -1)
CLKITEM(id, "終了", CLK_BTN)
Excel = GETACTIVEOLEOBJ("Excel.Application")

With Excel.ActiveSheet
    .Columns("A:A").ColumnWidth = 11 //←ここで、引っかかります。最初は動いた時もあります。
    .Columns("B:BA").ColumnWidth = 10
    For i = 0 To 11
  .Rows(7 + i * 3).Insert
  .Rows(7 + i * 3).NumberFormatLocal = "#,###" //カンマ付の書式
        .Cells(7 + i * 3, 2) = "累計"
        .Cells(7 + i * 3, 3) = .Cells(5 + i * 3, 3) + .Cells(6 + i * 3, 3)
        .Cells(7 + i * 3, 2).Interior.Color = 65535
        .Cells(7 + i * 3, 3).Interior.Color = 65535
        For p = 0 To 24
            .Cells(7 + i * 3, 4 + p) = .Cells(5 + i * 3, 4 + p) + .Cells(6 + i * 3, 4 + p) + .Cells(7 + i * 3, 3 + p)
            .Cells(7 + i * 3, 4 + p).Interior.Color = 65535
        Next
        .Range(.Cells(5 + i * 3, 1), .Cells(7 + i * 3, 1)).Merge
    Next
    .Rows("1:50").RowHeight = 21
    dim 翌月,削除 = 0
    FOR i = 1 to 50
  翌月 = .Cells(4,i).value
 ifb copy(翌月,6,3) = "/02" then
  削除 = i
 endif
    next
 ifb 削除 > 0 then
  for p = 削除 to 100
    .Columns(削除).Delete
     next
    endif
    
    .PageSetup.PaperSize = xlPaperA3
    .PageSetup.Orientation = xlLandscape
    .PageSetup.PrintArea = ""
    .PageSetup.TopMargin = 5
    .PageSetup.BottomMargin = 5
    .PageSetup.LeftMargin = 5
    .PageSetup.RightMargin = 5
    .PageSetup.PrintTitleColumns = "$A:$A"
    .Range("C5").Select
    Excel.ActiveWindow.FreezePanes = True
EndWith

Excel.ActiveSheet.PrintOut()
XLCLOSE(Excel,TRUE)

No.4448 2017/09/20(Wed) 23:36:03

Re: 「GetActiveOleeObjが変2」を読んで / しろまさ
範囲の取得に時間が掛かった記憶があるので、
 A:A ではなく A1:A1
 B:BA ではなく B1:BA1
と指定してはいかがですか? 

.Columns() ではなく .Range() だと A1だけでも指定できた・・・はず。

No.4449 2017/09/21(Thu) 08:48:33
FirefoxでBodyを変数に入れる方法 / あほ
IEの場合は、xxx=IEGETSRC(IE, "BODY") として、HtmlのBodyを変数に入れることができますが、
FirefoxでBodyを変数に入れるには、どのようにしたらBodyを変数に入れることができるのでしょうか?
Firefoxで「右クリック」→「ページのソースを表示」とすると別タブが開いてしまいます。
宜しくお願い致します。

No.4439 2017/09/18(Mon) 11:38:41

Re: FirefoxでBodyを変数に入れる方法 / satocha
seleniumbasicを使えば、firefox,chrome,Edgeなどいろいろ動かせると思います。
http://florentbr.github.io/SeleniumBasic/
UWSCからの利用法については、当掲示板の師匠衆のどなたかがブログに書かれていたような記憶が…。

外部ツールを使わずにということなら、少し強引ですが下のようなやり方もあります。ffのウインドウを取得する関数は手抜きで、手作業でアクティブにしてねというつくりですので、適宜改良してください。エラー処理もしていないので、何回かやらないとbodyの取得ができないかもしれません。firefoxのアドレスバーをいじっていますが、元には戻していません。

foxid=getFoxId()
js=replace( JsSource, "<#CR>", "" )
js="(function(){" + js + "})()"
limit=gettime() + 10
sendJsToFox( foxid, js )
repeat
 succeeded =false
 subwin     =getid("SubWindow - Mozilla Firefox","MozillaWindowClass")
 if status( subwin, st_isid )
  succeeded =true
  break
 endif
 if gettime() > limit
  break
 endif
until false
if succeeded
 ctrlwin( subwin, activate )
 kbd( vk_ctrl, down )
 kbd( vk_a )
 kbd( vk_c )
 kbd( vk_ctrl, up )
 ctrlwin( subwin, close )
 
 body ="bodyが取れました<#cr><#cr>" + getstr(0)
 print body
 sleep(1)
else
 msgbox( "失敗" )
endif
ctrlwin( foxid, activate )
kbd( vk_alt, down )
kbd( vk_d )
kbd( vk_alt, up )
kbd( vk_back )
exitexit
textblock JsSource
var bh=document.body.outerHTML;
bh=bh.replace(/</g,'<');
bh=bh.replace(/>/g,'>');
var w=window.open( '','dmy', 'height=600,width=600' );
w.document.write( '<pre>' );
w.document.write( bh );
w.document.write( '</pre>' );
w.document.title='SubWindow';
endtextblock

function getFoxId()
 fukidasi( "3秒以内にFireFoxをクリックしてアクティブにしてください" )
 sleep(3)
 fukidasi("")
 result=getid( Get_Active_Win )
fend

procedure sendJsToFox( foxid, jsStr )
 ctrlwin( foxid, activate )
 kbd( vk_alt, down )
 kbd( vk_d )
 kbd( vk_alt, up )
 typestr( "javascript" )
 sendstr( foxid, ":" + jsStr )
 typestr( "#" )
fend

procedure typeStr( str, speed=5 )   //$でシフトを押しながら、#でリターン、
 len = length( str )
 const aaa = asc("a") - asc("A")
 flag = false

 for i = 1 to len
  t = copy( str, i, 1 )
  code = asc( t )

  if asc("A") <= code and code <= asc("Z")
   flag = true
  endif
  
  if asc("a") <= code AND code <= asc("z")
   code = code - aaa
  endif

  select code
   case asc("/")
    code = VK_OEM_2
   case asc("'")
    flag = true
    code = VK_7
   case asc(" ")
    code = VK_SPACE
   case asc(".")
    code = VK_OEM_PERIOD
   case asc(",")
    code = VK_OEM_COMMA
   case asc("-")
    code = VK_OEM_MINUS
   case asc("#")
    code = VK_RETURN
   case asc("_")
    flag = true
    code = VK_OEM_5
   case asc("$")
    flag = true
    Continue
   case asc("↑")
    code = VK_UP
   case asc("↓")
    code = VK_DOWN
   case asc("→")
    code = VK_RIGHT
   case asc("←")
    code = VK_LEFT
  selend

  if flag = true
   KBD(VK_SHIFT,DOWN,speed)
  endif
  KBD(code,CLICK, RANDOM(speed)+2)
  if flag = true
   KBD(VK_SHIFT,UP,speed)
  endif
  
  flag = false
 next
fend

No.4441 2017/09/19(Tue) 06:25:18

Re: FirefoxでBodyを変数に入れる方法 / あほ
satocha様
どうも有り難うございます。
キーボードによる手法しかないようですね、師匠様たちのブログも探してみたいと思います。
有り難うございました。

No.4444 2017/09/19(Tue) 17:13:29

Re: FirefoxでBodyを変数に入れる方法 / satocha
この掲示板の仕様なのかどうか。ソースが化けていました。

bh=bh.replace(/</g,'<');
と次の行
bh=bh.replace(/>/g,'>');
のシングルクオートで囲った部分は不等号ではなく、それぞれ「&lt;」「&gt;」を半角にした文字列です。

No.4445 2017/09/20(Wed) 07:01:26
標準出力について / Y.Sum
【前提】
[abc.uws]のファイルの中身
a = 1 + 2

【質問】
コマンドプロンプトから
C:\> abc.uws
を実行し、標準出力として変数"a"の結果"3"を吐き出す、といった事は可能でしょうか?

No.4425 2017/09/15(Fri) 13:23:37

Re: 標準出力について / stuncloud
やってみました

======================
def_dll AttachConsole(dword):bool:Kernel32.dll
const ATTACH_PARENT_PROCESS = -1
def_dll FreeConsole():bool:kernel32
def_dll GetStdHandle(dword):dword:kernel32.dll
const STD_OUTPUT_HANDLE = -11
def_dll WriteConsoleA(dword, string, dword, var dword, dword):bool:kernel32

// コンソールにアタッチ
if ! AttachConsole(ATTACH_PARENT_PROCESS) then
 // コンソール上で実行されてなければ抜ける
 exit
endif

// 標準出力ハンドルを取得
hStdOut = GetStdHandle(STD_OUTPUT_HANDLE)

text = "標準出力します"
dim size
WriteConsoleA(hStdOut, text, lengthb(text), size, 0)

FreeConsole() // コンソールからデタッチ
======================


出力は一応できたんですけど、
------------------
C:\>stdout.uws

C:\>標準出力します
------------------
みたいな感じでプロンプトが出た後に文字が出力されてしまいますね
どうしたらいいのかな

No.4427 2017/09/15(Fri) 14:24:35

Re: 標準出力について / stuncloud
> どうしたらいいのかな
プロセスの終了を待ってくれないためにそうなってるようなので

--cmd-------------
C:>start /wait stdout.uws
標準出力します
C:>
------------------

--PowerShell------
PS> start .\stdout.uws -Wait
標準出力します
PS>
------------------

というようにstartで呼んでwaitを付けて実行側に待ってもらえば期待通りになるのはわかりましたが
……そういうことではなく!
スクリプト側から終わるまで待ってねと言う方法はないのかな…

No.4428 2017/09/15(Fri) 14:48:08

Re: 標準出力について / Y.Sum
有難う御座います。
実は何がしたいかといいますと、リモート端末上のuwsファイルを""リモート端末上で""実行し、
その出力結果を""ローカル端末上で表示する"" ということでした。
【最終的にやりたい事】
a = DOSCMD("WMIC /NODE:<remoteIP> /user:<user> /password:<pass> process call create "start /wait/stdout.uws" ")
MSGBOX(a)

上記でお教え頂いたことを、全てローカル端末上でテストしてみようと思いまして、
a = DOSCMD("start /wait/stdout.uws")
MSGBOX(a)

としてみたのですが、DOSCMDの標準出力としては取得できませんでした。

そもそも発想がおかしいのかな・・・?

No.4429 2017/09/15(Fri) 15:25:12

Re: 標準出力について / Y.Sum
↑少し誤記がありました。
誤) start /wait/stdout.uws
正) start /wait stdout.uws

ちなみに
 start /wait stdout.uws
自体は正しく表示されています。
 a = DOSCMD("start /wait stdout.uws")
が上手くいきません。。。

No.4430 2017/09/15(Fri) 15:28:51

Re: 標準出力について / Y.Sum
少し切り分けしてみました
C:\> start /wait stdout.uws >> out.txt
も同じく、ファイルの中身が空でした。
う〜ん。。。

No.4431 2017/09/15(Fri) 16:12:40

Re: 標準出力について / stuncloud
なる…ほど…?
> 実は何がしたいかといいますと、リモート端末上のuwsファイルを""リモート端末上で""実行し、
> その出力結果を""ローカル端末上で表示する"" ということでした。
> 【最終的にやりたい事】
> a = DOSCMD("WMIC /NODE:<remoteIP> /user:<user> /password:<pass> process call create "start /wait/stdout.uws" ")
> MSGBOX(a)

WMICで実行したプロセスの標準出力がそのままWMICの出力になるとは思えないのでどのみちダメそうな気がします
リモートのスクリプトがexitexitで終了コードを出せばあるいは、という気がしないでもないですがWMICで実行したプロセスの終了コード取れるのかな?
WMIならCOMでやるという手もありますが、終了コードが取れるかとかも試したことないのでちょっとわかんないです

ローカルで実行したスクリプトとリモートスクリプトが情報のやり取りをする手段を別に用意するのが現実的かなぁ
という気がします

No.4432 2017/09/15(Fri) 17:00:02

Re: 標準出力について / Y.Sum
なるほど。。。
押してだめなら引いてみろでは無いですが、少し別の手法も検討してみます。
本当いつも有難う御座います。

No.4434 2017/09/15(Fri) 20:29:23

Re: 標準出力について / satocha
これって、stuncloudさんのこれ
https://github.com/stuncloud/PoshUWSC
でいけそうな気がするのですが。

powershellならリモートとのやり取りも簡単そうだし、少し手を入れればダイレクトにリモートのUWSCの出力をHTTP経由で受け取れそうです。

思いつきだけなので、的外れなら放置してください。

No.4436 2017/09/16(Sat) 07:11:22

Re: 標準出力について / Y.Sum
>satochaさん
ありがとうございます。参考にしてみます。

No.4443 2017/09/19(Tue) 09:42:52
GETACTIVEOLEOBJでIEの2つタブの内の1つを制御する方法 / よっさん
IEで1つのウインドウで2つのタブが開いています。タイトルAは固定、タイトルBは変動する。
下記のスクリプトを起動した時にアクテイブな最後に開いたタブが取得されます。
例えば、IE = GETACTIVEOLEOBJ("タイトルB - Internet Explorer")で起動してもアクテイブなタイトルAのタブのタイトルが取得されます。
GETACTIVEOLEOBJは、タブの制御まではできないのでしょうか?

IE = GETACTIVEOLEOBJ("Internet Explorer")
nID = hndtoid(IE.hwnd)
print status(nID, ST_TITLE)

固定
 id=getid("タイトルA - Internet Explorer","IEFrame")

記事タイトルによって変動
 id1=getid("タイトルB - Internet Explorer","IEFrame")


// 既に起動中のCOMオブジェクトに対してのアクセス
戻値 = GETACTIVEOLEOBJ( COMオブジェクト名, [タイトル, 順番] )
引数
 COMオブジェクト名: COMオブジェクト名
 タイトル: 複数時にタイトルで区別(一部でOK)
       Excel, Access, Wordの場合はファイル名を指定  ※IE,Office以外では無効
 順番: IEにてタイトルが同じ時に区別 (デフォルトは最新(一番最後に起動)のもの)

No.4437 2017/09/16(Sat) 12:55:20

Re: GETACTIVEOLEOBJでIEの2つタブの内の1つを制御する方法 / しろまさ
指定タイトル = "タイトルB"
IE = GetActiveOleObj("InternetExplorer.Application", 指定タイトル)

で取れますが、hndtoid(IE.hwnd)ではアクティブなものになりますので、
DOMから直接読めばいいと思われます。

nID = hndtoid(IE.hwnd)
MsgBox( status(nID, ST_TITLE) + "<#CR>" + IE.document.title )

どんな操作をしたいかによりますが、大抵はDOM操作で事足ります。

No.4438 2017/09/18(Mon) 08:29:54

Re: GETACTIVEOLEOBJでIEの2つタブの内の1つを制御する方法 / よっさん
しろまさ様、返信ありがとうございます。
DOMから直接読みこむとは、IE.document.title を使うという事でしょうか?
status(nID, ST_TITLE) は、nIDのタイトル名を取得、IE.document.titleは IE = GetActiveOleObj("InternetExplorer.Application")でつかんだIEのタイトルを取得という事で宜しいでしょうか?
したい処理は、IEのウィンドウを閉じる処理です。

No.4440 2017/09/18(Mon) 22:14:50

Re: GETACTIVEOLEOBJでIEの2つタブの内の1つを制御する方法 / しろまさ
経験上の理解で正確かどうかは解りませんが、
.hwnd はタブ別のハンドルを示してるわけではなさそうです。

タブを閉じるのは以下を参考(ExecWBによる)
http://www3.rocketbbs.com/13/bbs.cgi?id=umiumi&mode=pickup&no=3987

何がどうなど細かいことは .hwnd や nID を表示して変化を目視することで理解が深まりますよ。
聞いた答えは忘れます。考えた結論は忘れません。ニューロンはそういう奴です。

No.4442 2017/09/19(Tue) 08:46:30
SLCTBOXとAcwのX位置Y位置について / chu
UWSC Ver.4.5 あたり以降(記憶が正確ではありません)からみられる現象ですが、
SLCTBOXとAcwで同じ値のX位置、Y位置を指定しても同位置になりません。
また、SLCTBOXでは、Acwでは出来る画面右下にぴったりつける配置ができません。
実験用に下記スクリプトを作りましたが、SLCTBOXとAcwが同じ座標にもかかわらず、
動いてしまうのはなぜでしょう。
長年解明できず、ずっとモヤモヤしてます。どなたかご教示ください。

Public ID_SLCTBOX
Public x = 1716 //環境に合わせ任意の値を指定
Public y = 934 // x,yが大きいほど違いが顕著
Dim menu[] = "A", "B" ,"C"

Thread Move_SLCTBOX()
SLCTBOX(SLCT_cmb ,  0,  x, y, , menu )
// ( 種 別 , timeout, x, y, [メッセージ], 項 目)

Procedure Move_SLCTBOX
ID_SLCTBOX = GetID("", "TUslctBox_uwsc", 0)
Sleep(3)
Acw(ID_SLCTBOX, x, y)
Fend


環境
Windows 10
解像度 1920 X 1080
UWSC Pro 5.3.0.2

No.4421 2017/09/13(Wed) 12:24:30

Re: SLCTBOXとAcwのX位置Y位置について / umiumi
Windows10 からフレーム構造が変わり、そのままでは見た目でズレ(3ドット)が出るようになりました。
自作ウィンドウ(INPUT/MSGBOX/SLCTBOX/CREATEFORM)では、手抜きでその対処をしていませんでした。
対処します。

No.4433 2017/09/15(Fri) 20:25:40

Re: SLCTBOXとAcwのX位置Y位置について / chu
umiumi さま
umiumiさまより直々に回答頂き恐縮です。
位置ずれの原因が分かりすっきりしました。
ありがとうございます。

No.4435 2017/09/16(Sat) 00:02:02
全1170件 [ ページ : << 1 ... 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ... 117 >> ]