UWSC 掲示板

[HOME] [削除] [検索] [過去ログ] [管理人用]

新規投稿

お名前
URL
題 名
本 文
文字色
削除キー
題名は質問内容を表したものにして下さい("こんにちは"等のあいさつを入れない)
ネットゲーム関係の質問はご遠慮下さい


[質問と要望]doscmd関数で powershell.exe 起動 眠たい詩人
[質問]
下3行は3行とも、ファイルに出力されスクリプトが終了します。(期待どおりの動作)
exec("powershell.exe -Command <#dbl>$PSVersionTable | Out-File tmp1.txt<#dbl>",TRUE)
exec("powershell.exe -Command <#dbl>$PSVersionTable | Out-File tmp2.txt<#dbl>")
doscmd("powershell.exe -Command <#dbl>$PSVersionTable | Out-File tmp3.txt<#dbl>",TRUE)

ですが、下を行うと、スクリプトが終了しません。これは仕様でしょうか。(ファイルへ出力は行われます。)
doscmd("powershell.exe -Command <#dbl>$PSVersionTable | Out-File tmp4.txt<#dbl>")

[要望]
powershell.exe の起動結果を(一時ファイルを介さずに)UWSCで受け取れると便利です。追加機能としてご検討いただけると助かります。
(例)
str1=doscmd("powershell.exe -Command $PSVersionTable")

[環境]Windows XP Professional Sp3 | PowerShell 2.0
です。
DATE:2010/6/15(Tue) 23:11 No.3097


RE:[質問と要望]doscmd関数で umiumi

>ですが、下を行うと、スクリプトが終了しません。
対処できるようであれば、対処します。

>powershell.exe の起動結果を(一時ファイルを介さずに)UWSCで受け取れると便利です。
考慮しときます。
DATE:2010/6/16(Wed) 22:53


RE:[質問と要望]doscmd関数で 眠たい詩人

恐縮です。気長に待ちます。
DATE:2010/6/17(Thu) 00:48


RE:[質問と要望]doscmd関数で 眠たい詩人

http://www3.bigcosmic.com/board/s/board.cgi?id=umiumi&mode=all&no=3160
> UWSC Ver4.6b
> PowerShellを呼び出す POWERSHELL関数を付けた

ありがとうございます。
↓こんなことができると便利だと思っていました。期待どおりにできました。感謝です。

// ↓DspIeObjProperty.uws
OPTION DEFAULTFONT="MS ゴシック"
strURL1="http://www.google.co.jp/"
strPsCom=trim(powershell(chgmoj(BLK_PS_IE,"#strURLPs#",strURL1)))
msgbox(strPsCom)

textblock BLK_PS_IE
$objIe=New-Object -com InternetExplorer.Application
$objIe.Navigate("#strURLPs#")
do{ Start-Sleep -m 500 } until ($True -ne $objIe.Busy -and 4 -eq $objIe.ReadyState)
$objIe
$objIe.Quit()
endtextblock
// ↑DspIeObjProperty.uws
DATE:2010/8/1(Sun) 09:22


HMAC-SHA1 と Base64 Outliner
APIとやりとりをするスクリプトを書いています。(Twitter OAuth認証)
ここで、HMAC-SHA1とBase64にする必要がありますが。
この部分がどうしてよいのか、見当が付かない状態です。

できれば、XP以降のWindows全般で動作するようにしたいと思っていますが。
何かアドバイスをいただければ幸いです。
DATE:2010/6/25(Fri) 20:34 No.3106 WEB


RE:HMAC-SHA1 umiumi

要:Windows XP SP3 以降かも?
CAPIUtil = CreateOLEObj("CAPICOM.Utilities")
HashedData = CreateOLEObj("CAPICOM.HashedData")
print CAPIUtil.Base64Encode(str)
HashedData.Algorithm = 0 // SHA1
HashedData.Hash(str)
print HashedData.Value
DATE:2010/6/25(Fri) 23:19


HMAC-SHA1 と Base64 Outliner

umiumiさん
ありがとうございます。
さっそく試して見ます。
DATE:2010/6/26(Sat) 05:07 WEB


RE:HMAC-SHA1 Outliner

XP SP3でも動かない環境がありますね。
CreateOLEObj("CAPICOM.Utilities")でcomエラーになります。

他のアプローチはありますでしょうか。
DATE:2010/7/11(Sun) 22:55 WEB


RE:HMAC-SHA1 umiumi

無いなら入れる。
http://winofsql.jp/VA003334/asp051105201655.htm
DATE:2010/7/12(Mon) 22:54


RE:HMAC-SHA1 Outliner

了解しました

・フリーウエアとして公開(すでにしているもののバージョンアップ)
・USBメモリでさまざまな環境で実行可能
という前提のものなので、無いなら入れるというのは無理ですね。
ありがとうございました。
DATE:2010/7/13(Tue) 20:37 WEB


参考まで Outliner

CAPICOM.Utilitiesについてどの環境で入るのか
XP・Vista・7と調べてみましたが、入っていませんでした。
各OSで、IE8、アップデートは最新にてテストしました。
ご参考まで
DATE:2010/7/27(Tue) 06:31 WEB


RE:HMAC-SHA1 umiumi

// PowerShellより .Net Frameworkを利用して
str = "abc"
print PowerShell("$instr=<#DBL>" +str+ "<#DBL><#CR>" + netfram)
Exit

TextBlock netfram
$objSHA1 = new-object System.Security.Cryptography.SHA1CryptoServiceProvider
$outstr = $objSHA1.ComputeHash([System.Text.Encoding]::UTF8.GetBytes($instr))
[System.Convert]::ToBase64String($outstr)
EndTextBlock
DATE:2010/8/1(Sun) 02:24


UWSC Ver4.6b umiumi
PowerShellを呼び出す POWERSHELL関数を付けた
FOPEN関数にて既存のUTF16のファイルに読み書き指定をした場合にNGだったのを修正
CHKIMG関数にて複数取得時(ALL_IMG_X,ALL_IMG_Y)の値が x1,y1からの相対座標になっていたのを修正
SENDSTR関数の追加モードにて文字数が多いとオーバーフローを起こす事があるのを修正
STATUS関数のST_BUSYの処理方法を変更した(一部の状況でしか有効でなかった為)
ログ表示のフォントをプロポーショナルから等幅に変更した
DATE:2010/8/1(Sun) 02:17 No.3160


ノンアクティブ時の停止について質問です トン
ウインドウをアクティブにする際
>ACW(GETID("(仮)Window"),0,0,0,0,0)
このような感じでアクティブになりますが

この"(仮)Window"がノンアクティブになった時はUWSCを一時停止や停止などのスクリプトはあったりしますでしょうか

どうぞよろしくお願いしますm(_ _)m
DATE:2010/7/31(Sat) 14:19 No.3159


RE:ノンアクティブ時の停止について質問です しろまさ

IDw = GETID("(仮)Window")
Repeat
  Ifb Status(IDw, ST_ACTIVE)
    Fukidasi("アクティブだぜ!")
  Else
    Fukidasi("停止中。。")
  EndIf
  Sleep(0.2)
Until GetKeyState(VK_ESC) // Escが押されるまで
DATE:2010/7/31(Sat) 15:18 WEB


RE:ノンアクティブ時の停止について質問です トン

しろまささん
ありがとうございます!
>Elseの上に書き足せばokですよね

うまく停止と再生されました有難うございますm(_ _)m
DATE:2010/8/1(Sun) 00:27


COMコンポーネントで起動したIEのタイトル名取得 いえ
UWSC内で特定URLをIEで立ち上げるとき

IE = CREATEOLEOBJ("InternetExplorer.Application")
IE.visible = True
IE.navigate(URL)

のようにして使いますが、
これで立ち上がったIE画面のタイトル名を取得する方法はあるのでしょうか?

Print STATUS(HNDTOID(IE),ST_TITLE)

としてみたのですが、
表示されているタイトル名は取れませんでした。

REPEAT
SLEEP(0.1)
UNTIL !IE.BUSY AND IE.READYSTATE=4

で待ってからやってみても同様で行き詰ってしまいました。
同様のことをされているかたいらっしゃいましたら
宜しくお願い致します
DATE:2010/7/28(Wed) 16:24 No.3152


RE:COMコンポーネントで起動したIEのタイトル名取得 しき

//IE.HWND ウインドウのハンドルを取得
Print STATUS(HNDTOID(IE.HWND),ST_TITLE)
DATE:2010/7/28(Wed) 16:53 WEB


COMコンポーネントで起動したIEのタイトル名取得 いえ

しきさん
早速の返信ありがとうございます。
基本的な考えはあっていたのですが

HNDTOID(IE)のままではなくHNDTOID(IE.HWND)
としなければならなかったのですね

大変助かりました
DATE:2010/7/28(Wed) 17:56


特定IdのIE画面の表示終了待ち いえ

IE = CREATEOLEOBJ("InternetExplorer.Application")
IE.visible = True
IE.navigate(URL)

のようにして表示されたものではなく
UWSCスクリプト起動時には既に別途IEで起動されており、
UWSC側でidの取得はできている(タイトル名から関数で取得)アプリケーション画面があります。

このアプリ画面で"OK"ボタンをクリックすると次のIE画面に遷移するのですが、その終了を待って次にのステップに移るため
お約束の画面読み込み終了まで待つスクリプト

REPEAT
 SLEEP(0.1)
UNTIL !IE.BUSY AND IE.READYSTATE=4

を使用しようと思い、IEの値が取れていないため
idからhwdへの変換関数を使い

IE2=idtohnd(id)
REPEAT
 SLEEP(0.1)
UNTIL !IE2.BUSY AND IE2.READYSTATE=4

のようにして判定されようとしたのですが、comエラーとなってしまいました。

IE = CREATEOLEOBJ("InternetExplorer.Application")
のようにして起動したものでないと、
上記の読み込み待ちテクニックは使えないものなのでしょうか?
それとも、何かが欠けている・・・・???

間違いがありましたら指摘いただければ幸いです。

------------------------------------
なお、サンプルを検索していたところ

// ステータスバーにて表示完了を確認
Procedure 表示完了待ち(id)
Repeat
Sleep(0.4)
Until GETSTR(id, 1, STR_STATIC) = "ページが表示されました"
Sleep(0.2)
Fend

というものがあったのですが、もしかしてこういうやり方でないと
できないものでしょうか。
DATE:2010/7/31(Sat) 17:33


RE:COMコンポーネントで起動したIEのタイトル名取得 しろまさ

後から取得
IE = GetActiveOleObj("InternetExplorer.Application")
DATE:2010/7/31(Sat) 17:51 WEB


COMコンポーネントで起動したIEのタイトル名取得 いえ

しろまささん 早速のご教示ありがとうございます。

ご提示いただいたGetActiveOleObj関数について早速調べてみました。
すると、致命的なカベがありまして
実は同じIEタイトル名のものが2つ存在するため、その判別が難しいのです。
helpには

// 既に起動中のCOMオブジェクトに対してのアクセス
戻値 = GETACTIVEOLEOBJ( COMオブジェクト名, [タイトル, 順番] )
 タイトル: 複数時にタイトルで区別(一部でOK)
 順番: IEにてタイトルが同じ時に区別

と、あるので、
複数同じタイトルが存在したときでも対応できそうなのですが
この順番とは「起動順」でいいのでしょうか?
それならズバリ解決できるのです。
(ヘルプにはそこまで書かれていないのですが・・・・。)

------------------------------------------
もしこの「順番」が順不同であれば、さらに中身を判定することになり
結局はあらかじめわかっているidを使って中身をGetstrやGetitem等で
判別するのと手間が変わらなくなってしまいます。

この方法は現在やっているのですが
STR_ACC_STATICやITM_ACCTXT指定でしか取れない文字のため
レスポンスが大変悪いこともあり、
反応のよい"UNTIL !IE.BUSY AND IE.READYSTATE=4"
の判定方法を使いたかったのです。
DATE:2010/7/31(Sat) 21:34


RE:COMコンポーネントで起動したIEのタイトル名取得 umiumi

>この順番とは「起動順」でいいのでしょうか?
基本的にはそうですが、100%絶対の保証は確認していません。
簡単確実なのは先に起動したIEのタイトルを自分で変えてしまう事。
sleep(0.1)
IE.Document.Title = "先に起動したIE"
DATE:2010/7/31(Sat) 22:41


保護モードについて きむら
windows7 IE8で試用しています。

”保護モードを有効にする”を解除しないと動きませんが、
解除したままですと、あとあと問題は出てこないでしょうか?

セキュリティーとかが心配になってしまうのですが・・。
DATE:2010/7/31(Sat) 12:08 No.3158


RE:保護モードについて 太郎

心配ならファイヤーウォールやセキュリティソフトをシッカリ使うことです。
DATE:2010/7/31(Sat) 18:57


エラーの回避 KRT
IEの連続保存で、以下を試してみました。
保存できない頁の回避を最初に書きましたが、通常頁の処理に対してもかなり遅くなってしまいました。
最初のIF文を除外すると早いのですが、その場合はエラーで止まってしまうので、監視が必要になります。
エラー回避の記述のスマートな方法をお教え頂けませんか?
宜しくお願いします。


IE.navigate(URL)
SCKEY(GETID("Internet Explorer"), VK_ALT, VK_F, VK_A)
sleep(0.1)

IFB GETID("Web ページの保存エラー") > 0
CLKITEM(GETID("Web ページの保存エラー"), "OK")

ELSEIF GETID("Web ページの保存") > 0
CLKITEM(GETID("Web ページの保存"), "デスクトップ")
SCKEY(GETID("Web ページの保存"), VK_ALT, VK_N)
SENDSTR(GETID("Web ページの保存"), FNAME)
SCKEY(GETID("Web ページの保存"), VK_ALT, VK_T)
CLKITEM(GETID("Web ページの保存"), "Web ページ、HTML のみ (*.htm;*.html)")
CLKITEM(GETID("Web ページの保存"), "保存")
SLEEP(0.1)

ELSEIF GETID("コピーを保存") > 0
CLKITEM(GETID("コピーを保存"), "デスクトップ")
SCKEY(GETID("コピーを保存"), VK_ALT, VK_N)
SENDSTR(GETID("コピーを保存"), FNAME)
CLKITEM(GETID("コピーを保存"), "保存")
SLEEP(0.1)

ELSE
y = y + 1
ENDIF


IE.navigate(URL)
SCKEY(GETID("Internet Explorer"), VK_ALT, VK_F, VK_A)
sleep(0.1)

IFB GETID("Web ページの保存エラー") > 0
CLKITEM(GETID("Web ページの保存エラー"), "OK")

ELSEIF GETID("Web ページの保存") > 0
CLKITEM(GETID("Web ページの保存"), "デスクトップ")
SCKEY(GETID("Web ページの保存"), VK_ALT, VK_N)
SENDSTR(GETID("Web ページの保存"), FNAME)
SCKEY(GETID("Web ページの保存"), VK_ALT, VK_T)
CLKITEM(GETID("Web ページの保存"), "Web ページ、HTML のみ (*.htm;*.html)")
CLKITEM(GETID("Web ページの保存"), "保存")
SLEEP(0.1)

ELSEIF GETID("コピーを保存") > 0
CLKITEM(GETID("コピーを保存"), "デスクトップ")
SCKEY(GETID("コピーを保存"), VK_ALT, VK_N)
SENDSTR(GETID("コピーを保存"), FNAME)
CLKITEM(GETID("コピーを保存"), "保存")
SLEEP(0.1)

ELSE
y = y + 1
ENDIF
DATE:2010/7/30(Fri) 17:09 No.3157


RE:エラーの回避 太郎

GETID()関数に待ち時間秒(3番目の引数)を指定したみたら。
0.01とか。
DATE:2010/7/30(Fri) 23:15


RE:エラーの回避 Liners

>エラー回避の記述のスマートな方法をお教え頂けませんか?
スマートな方法の基準は曖昧なので、動作が速く分りやすく比較的短い事とします。

スピードに関しては太郎さんの意見に同意ですが、IEのダイアログ関連は全体に反応が遅くタイミングが掴み辛いでしょう。
また、ELSEIFとGETIDの多用は、構造が分りにくくなると思います。

単純に、ダイアログを待ち、そのタイトルで処理を振り分ければ良いのでは?
DATE:2010/7/31(Sat) 07:09


Frameの中のコントロールの制御 hibi
FrameSetタグをつかい、Frameタグが二つあり、それぞれ別URLを発行して画面を表示しています。
二つの画面は、別ドメインではないので、セキュリティに引っかからないと思っていたのですが、Frameの中のソースを参照しに行こうとするとエラーになります。

やりたいことは、そのフレームの中にある、テキストボックス、セレクトボックス、リストボックス、チェックボックスの制御です。
KBD関数を遣い、タブキー移動で移動し、Setstr関数で文字を送ったりすることで対応しようとしているのですが、それぞれのコントロールに設定されている値の取得も必要で、これだと、値を設定するだけになり、値の取得はできない状態です。

コントロールを明示的に指定して、その値を取得、設定する方法は、何かないでしょうか?

どうぞ、よろしくお願いします。
DATE:2010/7/30(Fri) 06:55 No.3155


RE:Frameの中のコントロールの制御 umiumi

ACC方式
http://www.uwsc.info/sample.html#n35
文字取得はGESTR関数にてSTR_ACC_ を指定
状態取得は POSACC関数を使用

// この掲示板の文字色チェックボックスの状態確認
id = GETID("Internet Explorer", "IEFrame")
ied = HNDtoID(GETCTLHND(id, "Internet Explorer_Server"))
for n = 1 to 11
  if ! ClkItem(ied, "", CLK_ACC or CLK_MUSMOVE, False, n) then break
  print n + POSACC(0, G_MOUSE_X, G_MOUSE_Y, ACC_STATE)
next
DATE:2010/7/31(Sat) 01:19


sleipnirをバックグラウンドで操作したい どら
タイトルの通りなのですが、スレイプニルをバックグラウンドで動作
させるにはどうすればいいんでしょうか?
id = GETID("Sleipnir")
MOUSEORG(GETCTLHND(id, "Internet Explorer_Server"), 2)
これでは動かないのですが…どこが間違っているのでしょうか?
あと、複数のsleipnirに別々の動作をバックグラウンドでさせるには
どうすればいいでしょうか。
DATE:2010/7/27(Tue) 22:26 No.3151


RE:sleipnirをバックグラウンドで操作したい どら

どなたかわかりませんか?
DATE:2010/7/31(Sat) 00:47


Win7でのLockHard atago
お世話になります。

LockHardの動作がWin7で効かないようです。WinXPではOK。
UWSCのバージョンは4.6aです。

以下のスクリプトで、確認しました。
つまり、「5秒間マウス操作ができなくなり、次の5秒間はできる」が繰り返されるはずですが、Win7ではマウス操作ができてしまいます。
確認の程、お願いいたします。

LOCKHARD(TRUE)
SLEEP(5)
LOCKHARD(FALSE)
SLEEP(5)

LOCKHARD(TRUE)
SLEEP(5)
LOCKHARD(FALSE)
SLEEP(5)
DATE:2010/7/30(Fri) 08:23 No.3156


RE:Win7でのLockHard atago

自己レスです。

他の Win7 PCで試したところ、正常に動作しました。

判然としないところはありますが、本件は、とりあえず「取消」とさせてください。

お騒がせしました。
DATE:2010/7/30(Fri) 08:49


RE:Win7でのLockHard umiumi

ヘルプのLOCKHARDの項に表記してますが、LOCKHARD関数は 管理者権限が必要です。
(動作したPCは多分UACがオフ)
DATE:2010/7/31(Sat) 00:29


[次のページ]

 親記事合計:120件


 掲示板検索ツール  UBTrek


Rental:大宇宙 お知らせ(4/6) Base:ACE