07/02/22 19:31:02 M9z6MPve0
いろいろ遊べる使えるスクリプト言語 MortScript のスレ立てました
スクリプティングのtipsやhelpなど、
「英語マニュアルがわからない」という人も
謙虚に質問しつつ教えてもらいましょう
URLリンク(www.sto-helit.de)
2:いつでもどこでも名無しさん
07/02/22 19:31:59 0
2get
3:いつでもどこでも名無しさん
07/02/22 22:39:51 0
デンマーク製、EmacsCEとお里が同じだね。
unicode(日本語)使えないみたいだし、正規表現無いし、
という点ではちょっと貧弱かなー。
Visual Basic似でとっつきやすいというのはありそうですが。
しかし、おおおっと!!!! RunAt()は熱いね!!
UNIX Timeで指定できるから時間計算が楽だ。
しかも、RunOnPowerOn()、RemoveNotifications()もあるし。
これができるものを探していたよ。>>1 GJ! nscriptmのRunAppAtTimeは
最近のデバイスではうまく動かないみたいだったから。
電源管理機能もあるから、面白いことができそう。
nscriptm
URLリンク(s-k.al.ru)
ざっとマニュアルを見たところ、unicode使えなさそうという点を除いては
なかなかユーティリティ的に使い手がありそう。
RunAt()の実験と合わせていずれブログのネタにさせてもらうよ。
ただ、このスレ3年で100行けばいい方だろうね(笑)。
4:1
07/02/22 23:45:31 M9z6MPve0
>>3
ようこそ!
俺も最近いじり出したんだけど面白いよ
RunAt()つかって、「無線LANに繋がってるかどうか」で
複数メールアカウントの自動巡回の頻度を変えるスクリプトができた
スレ周知と保守を兼ねて、しばらくはageておくれよ
5:いつでもどこでも名無しさん
07/02/23 01:59:30 0
この板のプログラム系のスレの惨状を見れば分かるけど、
無駄なあがきだよ。
それに1年~2年放置してても落ちないし。
落ちるかどうかはageてるかどうかでなくて、
最終書き込みのタイムスタンプで判定されるよ。
ところで喜び勇んでRunAt()を使ってみたけど、サスペンドから起きない。
>The PPC will wake up from standby if necessary.
とあるから、起きてきてもいいはず。
機種はiPAQ h2210。そっちではどう?
■Mort.mscr
# 10秒後にMort2.mscrを実行
RunAt(Timetamp() + 10, "¥My Documents¥Mort2.mscr")
# サスペンド
PowerOff
■Mort2.mscr
PlaySound("¥Windows¥KeyDown.wav")
Message("Time to Up " & TimeStamp())
6:いつでもどこでも名無しさん
07/02/23 02:07:25 0
というか、できているんですかね。機種は何ですか?
正に同じことをやろうとしていた。
サスペンドから起こす
↓
{
ネットワークつなぐ
↓
QMail3巡回かける
↓
メールきてたら何かで知らせる
↓
ネットワーク切断
}
↓
サスペンド
{ から } まではQMail3だけでできるかな。
MortScriptはネットワークの死活判定ができるから、
サスペンド移行もできるなーと皮算用していたんだけど。
7:1
07/02/23 03:54:00 hEPHOGja0
>>5
age/sageの件了解。
こっちはW-ZERO3 WS003SHだけどRunAt()は普通に走るよ
PowerOffからも起きる。
>>5さんのスクリプト自体を試したわけじゃないが、
> RunAt(Timetamp() + 10, "?My Documents?Mort2.mscr")
「Timetamp」はtypoだよね、念のため。
"My Documents" にMortScript.exeも入ってるの?
そうじゃなければ、"Mort2.mscr"は、MortScript.exeの
実行パラメータとして指定しなくちゃいけないはずだよ。
>>6
接続に関して、少なくとも俺の環境では、
MortScriptのConnected()の返事は当てにならないので
RegRead()で該当レジストリの値を読んで判断させてるよ。
参考までに、スクリプトうpしようか?
8:いつでもどこでも名無しさん
07/02/23 16:34:57 0
あなたマカーだね? どうでもいいが。
ZERO3では起きるか。いいなー。
ZERO3が欲しくないがゆえにh2210で頑張っているんだけどな。
WM5以降にしか無いAPIなのかな。
timetamp() => TimeStamp()
はtypo。h2210を前に、Macから書いているという状態。
10秒たった後に電源入れてみると、電源入れた瞬間に
音出てダイアログが表示されるから、RunAtの引数については
大丈夫だと思うんだけど、後でやってみよう。
うpよろしく。
9:いつでもどこでも名無しさん
07/02/23 16:41:36 0
ちなみに、文字列系の関数、日本語も大丈夫だね。
とりあえずShift-JISのテキストを、
バイト単位じゃなくて文字単位で処理してくれる。
ダイアログ系にも日本語表示されるし。
マニュアル見るとUnicodeで書くな! とか書いてあるから、
だめだと思っていたんだけど。
あと、cabでインストールされるテキストのマニュアルが古い!
Split()、Time()使おうとしたら無いとか言われるし。
10:1
07/02/23 18:35:55 hEPHOGja0
>>8
いかにも俺はマカー。なんでわかった?w あ、バックスラッシュか。
そんなことより>>8さんよ!解決した&面白い事がわかったよ
>>5のスクリプトを実際に走らせてみた。
たしかにZERO3でも起きない。おかしい。
そこで、シンプルにこうしてみた。(全角の¥ですまん)
RunAt(TimeStamp() + 10, "¥Windows¥KeyDown.wav")
PowerOff
すると、音が鳴ってからサスペンドすることがわかった。
つまり、「TimeStamp() + 10」が効いてない。
おかしいなー、俺のスクリプトとどこが違うんだろうと考え、
ためしに「TimeStamp() + 60」にしてみた。
すると、60秒後にちゃんと音が鳴って、起きる。
10秒では駄目、60秒はOK。ならば何秒以上ならいいのか?
少なくとも俺の環境では
「TimeStamp() + 11」で、問題なく走った。
「10秒以内のNotification Queueは無視される」ということらしい。
11:いつでもどこでも名無しさん
07/02/23 19:08:08 0
うーん。起きた、というか液晶が付かずに音だけ鳴った。
むしろ好都合のような気がするけど、
何かしらの具合でサスペンドされなかったら、
人知れずバッテリ消費してRAMあぼーんになりそうだ。
正常系ならMortScriptで電源の状態を知ることができるから、
抑制できるはずだけどね。
アプリも起動できた。液晶が付かずに。1さんありがとう。
これで道が開けた感じか。
-gオプションでいけるはず。
URLリンク(q3.snak.org)
MortScriptは話によるとシリアルにもアクセスできるらしいから
位置情報のロギングとかできたりしてね。
> Read/write access to serial (COM) ports
URLリンク(mort.sto-helit.de)
12:1
07/02/23 19:27:28 hEPHOGja0
>>11
うまくいきましたか。よかったよかった。
ZERO3だと液晶も点くな。
いちおう俺のスクリプトうpしといた。
テキストでうpしといたんで、軽く見てみて。
URLリンク(w-zero3.org)
俺はあえてtmail使いたいんで、これが必要だった。
13:いつでもどこでも名無しさん
07/02/24 05:35:49 0
1さんありがとう。1さんのスクリプト、流れ消えるとこじゃなくて、
ちゃんと後に残しておいた方がいいと思うよ。
しかし、ダメだった。
動こうとするものの、h2210のRunAtによる起動後は
シリアルが寝ているらしく、ダイアルアップできない。最悪ハングしてしまう。
自分で自分をRunAt()で呼び出すスクリプトで、
呼び出されてからSleep()で十分にデバイスが起きるまでの時間を設け、
その後にRun()で呼び出す、ということはやっているんだけどね。
一瞬CFスロットのPHSカードのLEDが瞬くのだけど、ダメだ。
この機種固有の問題なんだろうね。デバイスが起きている分には、
# ダブルコーテーション二つはダブルコーテーションのエスケープ表現
Run("¥hoge¥bin¥q3u.exe", "-g ""hogecourse""")
で巡回を始めてくれるんだけどね。
デバイスが起きてるんなら普通に巡回すればいいし(w
おいしいところをZERO3に持っていかれっぱなしでくやしい!
QMail3独自のダイアルアップ方法に問題があるかと思って、
# 有効なコネクション名はConnect("Test", "Test")で分かる
Connect("internet")
でRunAt()からのダイヤルアップを試みてみるも、ダメ。
小型&CF+SD2スロWMマシンの動作確認報告待つ。
場合によっては買い替えてもおk。
14:いつでもどこでも名無しさん
07/02/24 06:35:06 0
どうしてももやもやして、
CASSIOPEIA E-2000を引っぱり出して試してみた。
バッチリ動く。……orz
サスペンドから起きる→QMail3でダイヤルアップ開始→
巡回→切断→OSの消費電力設定でサスペンド
液晶が消えたまんまだったり、シリアルが寝ていたりするh2210と違い、
E-2000ではRunAt()で起きた瞬間に普通に起動する。完璧だ。
ひょっとしたらQMail3のマクロにsystemコマンドとかあるのかな。
だとしたら、巡回終了次第サスペンドというのができるかも。
しかし、いいマシンだがE-2000では巨大過ぎる。
体感h2210の2倍ぐらいある。今更持ち歩けない。
15:1
07/02/24 18:10:59 hlp9tbC/0
>>13
これはしょせん「俺スクリプト」の域を出てないからw
まぁこのスレが多少でも盛り上がって来たら、
スクリプト置き場でも作ろうかね。
デバイスが起きないかぁ。
PowerOn っていうコマンドがあるとよかったのにね。
16:いつでもどこでも名無しさん
07/02/25 01:05:28 0
h2210+CFGPS2でログ取ってみた。
SetComInfoはマニュアルに記載が無いのでフォーラムを見てやってみた。
# CFスロット
p = "Com7:"
# COMポートのセッティング。変数は%でくくると確実
SetComInfo(%p%, 4000, 4800, "None", 8, 1, "None")
# 一応ウェイト。単位はms
Sleep(1000)
# いちいちポート閉じてしまうので、
# PHSカードにコマンド送っても意味無かった
# WriteFile(%p%,ReadFile("¥command.txt"))
res = ""
n = 1
While(n <= 5)
# ReadFileはポート開いて読み出してポート閉じてる
res = res & "^NL^" & ReadFile(%p%,200)
n = n + 1
EndWhile
# ReadFileのオーバーロード。
# 変数resにファイル%p%から全読みしたストリームを代入
# ReadFile(%p%, res)
# ログをファイルに保存
WriteFile("¥gps-log.txt", res)
Message("Done")
本当はPHSの位置情報を取得しようとしたんだけど、
いちいちWriteFile()、ReadFile()はポート閉じてしまうので、
一方的にデータ送ってくるGPSみたいなのしか相手にできないみたい。
17:1
07/02/25 03:22:39 kXTvnaDI0
>>16
ふぇ~ 俺スキル無いからよくわからんよw
関係ないけど、今日わかったこと覚え書き。
TimeFormat()はv4.0RC4ではうまく働かない
要RC9
18:1
07/02/25 03:25:15 0
>>17 自レス
FormatTime()のまちがいね
19:いつでもどこでも名無しさん
07/02/25 04:47:27 0
PHSカードから位置情報を読み出す場合は、
コマンド送って応答待ってコマンド送って応答待ってという
双方向のやりとりが必要だけど、
ReadFile、WriteFileでCOMポート開いても、
片道で終わってしまうからダメということです。
20:いつでもどこでも名無しさん
07/02/25 05:16:50 0
フォーラムをながめているとh4150を使っている外人が、
RunAt()に絡んでDisplayOn.exeという自作らしきアプリを使っている
事例に当たった。恐らくh4150でもh2210と同じような感じなんだろう。
URLリンク(www.ppc-welt.info)
……とよく見ると、その下の方でRC8にそれが取り入れられて、
ToggleDisplay()という関数が追加されていることが分かった。
RC4が最新だと思っていた。RC9とともに配布されているマニュアルを見ると、
確かに記載されている。ということで、
ToggleDisplay(1)
を入れたら、何とh2210でもサスペンドから起きて液晶が点灯。
しかし、ダイヤルアップでハングしてしまう。
できることもあるけど、不安定。やっぱりだめ臭いな……。
21:1
07/02/25 22:09:53 kXTvnaDI0
ToggleDisplay()は見落としてたや。
素人考えかも知らんが
エWindowsエrnaapp.exe -e"(アカウント名)"
で強引にダイアルアップするのもだめなのかな…?
もっとも、これだとメールアプリ巡回コマンド出した時点で
connmgr.exeがエラーメッセージを吐くだろうから
それは別に何とかしなくちゃいけないだろうけど。
22:1
07/02/25 22:14:03 0
しまった。。。
¥Windows¥rnaapp.exe -e"(アカウント名)"
23:いつでもどこでも名無しさん
07/02/26 12:46:38 0
1さんありがとう。rnaappは知っていたよ。
ハングアップした理由が分かった。
QMail3をSDに入れていたことだった。
そんなこと分かっていたはずなんだけどね。
最近Linux Zaurusばかり使っていたので忘れていたよ。
RAMに入れ直したら快調!
やりたかったことがやりたかった機種でできるようになった。
Vibrate()でLEDの色を変えることができているから
これで振動モーターを動かせないかな。
ボタン型の振動モーターの買い置きがあるので。
トランジスタ、逆起電力防止用ダイオード、
電流制限用抵抗ぐらいでできそうなものだけど。
24:1
07/02/26 18:14:46 Bn6brWRj0
>>23
> QMail3をSDに入れていた
・・・不具合の原因ってのは
意外にそんなことだったりするよねーw
ともあれ、よかったよかった。
> これで振動モーターを動かせないかな。
それじゃMotorScriptじゃんw
25:いつでもどこでも名無しさん
07/02/27 03:43:58 0
ほっほっほ。
今日はサブルーチンについて調査。
サブルーチン定義の基本形。
Sub subname
#lines
EndSub
引数、返り値無し。
変数はすべてグローバルなので、重複に注意しつつ必要な引数は変数で渡す。
全部参照渡しだと思えばおk?
定義はすべての主処理の後にする。
さもないと、MortScriptはサブルーチン定義を見つけた時点で
実行を止めてしまう。主処理の前にサブルーチン定義をしてしまうと、
何も実行されない。前半主処理、後半サブルーチン定義とする。
定義したサブルーチン呼び出し方法。
Call("subname")
要ダブルコーテーション。これのみによって呼び出せると考えた方がいいみたい。
26:いつでもどこでも名無しさん
07/02/27 03:55:30 0
MortScript全体に言えるけど、変数への値の代入は、
Var = "value"
とできるけど、変数の参照は
「Var」でできる場合と「%Var%」でないとできない場合がまちまち。
できない場合の代表例は、
Repeat %Var%
#lines
EndRepeat
Message(%Var%)
特にRepeatの方は要注意。これを「Repeat Var」と書くと
無限ループの出来上がり。
以上、4.0 RC10で試した結果。
つーか、整合性の取れていないドキュメントをどうにかしてくれ。
WiKiとかにまとめといてくれって感じ。ちょっと前のバージョンとも
相当違うみたいで、変革期ゆえしょうがないのかもしれないけど。
27:いつでもどこでも名無しさん
07/02/27 04:07:22 0
COMMAND.txtの
x = GetClipText()
が動かないと思ったら、
GetClipText(x)
になってるみたい。どうも、PDF版のマニュアルの信頼度が一番高いみたい。
恐らく一番マトモなドキュメント(しかし鵜呑みにしてはいけない)
URLリンク(mort.sto-helit.de)
↓古いサイト(古いのをつかまされるので注意)
URLリンク(www.sto-helit.de)
↓新しいサイト(こっちが事実上の公式サイトか)
URLリンク(mort.sto-helit.de)
MortScriptのサンプルスクリプト溜
URLリンク(forum.xda-developers.com)
28:いつでもどこでも名無しさん
07/02/27 04:37:00 0
Repeat Var
#instruction(s)
End Repeat
だとダメで、
Repeat(Var)
#instruction(s)
End Repeat
だと大丈夫なのね。
29:1
07/02/27 05:46:02 PBiFTIO10
>>25
そうみたいね。
俺は>>12のスクリプトのメールアカウント巡回プロセスで
最初サブルーチン使ってたんだけど
あんまり意味無いみたいだったんで、最終的につるっと書いちゃった。
>>26-28
全体的に()で括る方向になってるみたいね。
俺は今RC9入れてるが、Message( Var )で問題あった経験は無いよ。
URLリンク(mort.sto-helit.de)<) を一応>>1には載せといたんだけど
公共的に、現時点ではこのリンク↓を貼っとくのがいちばんいいのかな。
URLリンク(mort.sto-helit.de)
30:いつでもどこでも名無しさん
07/02/27 14:20:57 0
URLリンク(www.sto-helit.de)
の方は、最初見たとき萎えた。
むしろ、釣りなのかと。
Message()もカッコがあれば%無くて大丈夫だね。
勢いで書いている。
スクリプトはほぼ書けたけど、
カードスロットの状態判定が難しいな。
今のままではカードが刺さってなくても巡回しようとしてしまう。
HKCUのStateってWM2003には無くて、
状態の取得が難しいのではないかと。
しかし、そのStateって凄くいいなあ。
動的に値を変えるレジストリか。
UNIXの/proc/みたいで格好いい。
31:1
07/02/27 18:58:52 PBiFTIO10
>>30
レジストリ探すのは苦労するよね。
電界強度を動的に格納してるキー
HKCU¥Software¥Sharp¥ShPhoneLib¥RFStrength
を見つけたときは嬉しかったw
ところで、レジストリや実行中プロセスを探すのにはこれ↓が便利
Task Manager v2.7
URLリンク(www.pocketpcfreeware.com)
32:いつでもどこでも名無しさん
07/02/27 20:46:47 0
これは凄いね。MortScriptのスクリプティングに全面的に役立つ。
レジストリの検索ができる。TREを速攻でアンインストール。
ウインドウハンドルが分かるので、
ウインドウメッセージを送るタイプのスクリプトを書いてみよう。
Notificationのエントリの確認、掃除までできて、
今のテーマにうってつけ。
ブログに書いたんだけど、このNotificationの掃除
をするアプリのことを書こうと思って探せなくて
困っていたところだった。これを紹介することにしよう。
WM2003ではちょっと画面が変だけど、許容範囲。
1さんありがとう。
33:1
07/02/28 01:37:53 tRIkJZD50
強力だよねこれ。
知ってるかとも思ったけど、役に立ってよかったです。
関係ないけど、PPCを鳩時計にするスクリプト↓書いたw
34:1
07/02/28 01:39:45 tRIkJZD50
#CuckooClock.mscr#####################
#MortScript 4.0 RC9
#このファイルはMortScriptと同じフォルダに入っているので
thisFile = SystemPath( "ScriptPath" ) ¥ SystemPath( "ScriptName" ) & SystemPath( "ScriptExt" )
#鳩時計の音は URLリンク(www.wavsource.com) でゲット
#Layer III エンコードのこのwavは、W-ZERO3では
#そのままでは鳴らなかったので、PCMエンコードに変換済み
Snd = "¥My Documents¥My Sound¥cuckoo_clock1_x.wav"
#テスト時のnotification queueが溜らないように
RemoveNotifications( thisFile )
t = TimeStamp()
#Unix Time Stampは閏秒を考慮しないそうなので簡単
RunAt( t + 3600 - (t MOD 3600), thisFile )
#FormatTime( "h" )は12時間表記で「時」を返す
#ひと桁時の時は「04」といった文字列を返すが
#Repeat()はそのままで「4」と認識してくれる
Repeat( FormatTime( "h", t ) )
PlaySound( Snd )
EndRepeat
#End of Script#########################
35:いつでもどこでも名無しさん
07/02/28 05:51:41 0
イイネ!! 一応ブログ貼っとく。
URLリンク(moyashi.air-nifty.com)
URLリンク(moyashi.air-nifty.com)
36:1
07/03/01 01:36:18 ybKLhOhl0
>>35
ほほう
面倒くさがりの俺とちがって
ちゃんと他人の利用も考えてエラー処理などもしておられますなぁ。
ウィンドウタイトルだけじゃなく、クラス名でも指定できたらいいのにね。
あと、俺が欲しいコマンドは
フォルダの中のファイル名をリスト値で返す
GetFiles( folder )みたいなやつ
これがあったら、Operaブラウザのキャッシュフォルダ覗かせて
現在閲覧中ページのソースコード表示させたり
画像に名前付けて保存したりできるだろうに。
37:いつでもどこでも名無しさん
07/03/01 07:05:49 0
鳩時計には負けん
URLリンク(moyashi.air-nifty.com)
MortScriptのイテレータはあなどれんよ。
> ForEach variable in files ( search expression )
> ForEach variable in directories ( search expression )
確かに案外Window関連の関数が貧弱で弱った。
このウインドウのこのコントロールを直撃したい、というのができないね。
あと、ダイヤルアップ切断した後の確認ダイアログのOKボタンがなぜか押せない。
RC10が公式版に昇格してるようです。
ところで1さんはAppleScriptやるんでしょ。僕も結構書きます。
機種板で暴れているのを確認。
TigerのSystem Eventsはかなりパワーアップしてて、
嫌いだったGUI Scriptingを最近見直してます。
38:1
07/03/01 20:14:48 ybKLhOhl0
>>37
音声読み上げですか
新着送信元メールアドレスを抽出するのは大変そうだな
GetClipText(s_clip) は、新しい文法で書くと
s_clip = ClipText() だね
> MortScriptのイテレータはあなどれんよ。
なるほど。ちょっと力技っぽくなりそうだけど、出来そうだね
あとでやってみます。
AppleScript 書きますよ 昔は日本語版言語もあったよね
「アプリケーション "Finder" について
x を y にする」みたいなw
訳あってまだOS9.2なので、最近のは知りませんが。。。
機種板めっかっちゃったw 暴れてないよw
…暴れてたかなぁ?
39:1
07/03/02 00:34:45 KxLaQlKE0
意外にシンプルに出来た。
URLリンク(w-zero3.org)
40:いつでもどこでも名無しさん
07/03/02 01:51:50 0
1さん乙です。できましたね。
自分的にはやはり暴れていた認定。
AppleScriptは日本語のときに手を付けて一度挫折。
挫折というか、意義が見い出せなかった。
Mac OS Xになってから書けるようになったよ。
RC10になって同時にマニュアルが更新されていたので、
ちょっとながめてみると、BigMessage()という
関数を発見。なかなか使い手がありそう。
BigMessage(ReadFile(\
"\Program Files\MortScript\FliteFile.mscr"),\
"ソースコード")
pieでコマンドラインからJavaScriptを実行できることを発見。
Run("iexplore.exe", "javascript:alert(1+1);")
しかし、URLエンコードされて渡るので、全然だめだ。
全体をeval(unscape())で囲ったら?
と思ったけど、ダブルコーテーションがエスケープされるので無理。
Windows Mobile用のNetFront3.1は、
「javascript:」を解釈してくんない。
つまらんのう。ZaurusのNetFrontはできるのに。
Operaはどうですか。
41:1
07/03/02 04:13:32 KxLaQlKE0
>>40
moyashiさんサンクスw
AppleScriptは処理が重いけど、
それこそNetscapeと組み合わせて
ちょっとイケナイことに使ったりしてたなぁ。w
RC10はまだ入れてないや。BigMessage()は、スクロールバー付きのメッセージウィンドウかな。
Input ダイアログにdefault valueが設定できるって書いてあるね。
俺の環境では、PIE自体がJavaScriptをまともに扱えない
NetFrontは入れて無いし、Operaでやってみた。
Run("¥Program Files¥Opera¥opera.exe", "javascript:alert(1+1);")
ネットに繋がってる状態では、「警告!2」って出たよ
でも、繋がってない時には無駄に電話掛けに行っちゃう。
ローカルでの使い出はあんまり無さそう。
「POSTメソッドのみ有効なFormにクリップボードから一発送信」
みたいな使い方は出来そうだけど。
42:いつでもどこでも名無しさん
07/03/02 17:39:55 0
ここではコテハンはやめておくんなまし。
僕もこないだSafariをブン回していけないことをしてみたけど、
ちょっと不安定で一晩たつと止まっててダメだったからRubyにした。
GETメソッドなら、通常の引数でいけるしな。
URLエンコードは別途手当てしないといけないけど。
お、Operaいけそう?
Run("▼Program Files▼Opera▼opera.exe", "javascript:var a=""test"";alert(a);")
これではどう? 案外
window.scrollTo(0,0);
window.scrollTo(0,10000);
みたいな一言JavaScriptでも(動けば)便利ですよ。
こういうのが動くんならW-ZERO3考えてもいいなー。
43:1
07/03/02 21:20:04 KxLaQlKE0
>>42
> Run("▼Program Files▼Opera▼opera.exe", "javascript:var a=""test"";alert(a);")
それもいけるよ。document.write()も出来る。
だが、言い忘れたんだけど、Operaは常に新しいタブを開いてJavaScriptを実行するので、
> window.scrollTo(0,0);
> window.scrollTo(0,10000);
既に開かれてるタブを操作するのが無理っぽい
考えてみたら、これじゃフォーム入力も無理だよね
そもそも、JSでタブをコントロールするのって、どうやるのか(できるのか)知らないw
44:いつでもどこでも名無しさん
07/03/03 02:56:19 0
うーん残念。
タブっつってもjsから見たらwindow扱いでしょう。
既にあるwindowのリファレンスってDOMたどったりして取れるのかね。
セキュリティ的にできなさそうだけど。できるわけないよなぁ。
それができたらAjaxで気取られること無く、
他のウインドウのValueとか抜いてXHRでどんどんゲットできちゃう(w
今度Zaurus用のOperaでやってみよう。
45:1
07/03/03 05:53:25 /lknZ+Mu0
Opera Mobileにはページ内検索機能がないので
>>39のスクリプトを応用して
指定の文字列を強調したページ再表示するスクリプトを書こうとしたけど
Splitのseparatorが1文字しか駄目ということで、挫折。。。
Length( <string> )も無いからFind()にも広がりが無いし。。。
まぁ、仮に複数文字列をseparatorに指定できたとしても
htmlタグ中の文字列をomit出来ないので(≒正規表現が使えないので)
もともと無理っぽいんだけどね。。。
46:いつでもどこでも名無しさん
07/03/03 09:25:48 0
Length()あるよー。22P
URLリンク(mort.sto-helit.de)
ForEach variable in charsOf ( string )
という文字列を1字ずつスキャンするイテレータもあるから、
根性があればできるような気がする。
最短一致! 最短一致! とかハッスルしながら手動正規表現。
インデックス出したらSubStr()で消す文字の前後で三つに分けて結合。
そういう用途にはnScript/nScriptmがいいね。
もっとnScript/nScriptmは使われていいと思う。
2++のプラグインに使われているけど。
むかーし書いたなあ、そういえば。
ただ、何でも正規表現でやろうとすると落ちちゃうんだよね。
PC用の2++プラグインSDK、PC用2++では動くのに、
実機だと落ちるということがあって難儀した。
47:1
07/03/03 14:18:41 /lknZ+Mu0
>>46
ほんとだ。Length()あるね。。。サンクス
そりゃあるよなぁ。なんで無いと思ったんだろう。。。
酒飲みながらやってるとこういうことになるw
48:1
07/03/03 15:41:30 0
わかったぞ!
前に落としたRC9のマニュアルにはLength()無かったんだ。
常に最新のドキュメントを詳細に読まないとだめだなw
49:いつでもどこでも名無しさん
07/03/03 16:28:02 0
僕もRC10が出たときにマニュアルも更新されたんだー、と見てて、
Length()あったんだ? あった。あったっけ? 無かった?
無かったろ? ……ま、いいや。と思っていたので即答できました。
Acrobatでテキスト書き出ししてDiff取ってみようかなと思ってマス。
2P増えているんだよね。
50:1
07/03/04 04:15:56 bf9kpYKV0
中の人って、けっこう大雑把なドイツ人だよねw
まぁ俺も他人のこと言えないけど
検索スクリプト、たぶん出来たと思う
URLリンク(w-zero3.org)
htmlタグの中か外かを判断するのに
最初 ForEach <v> in charsOf ( <string> ) 使ったら
ものすごい時間かかるので
ReverseFind()使ってみた
たいしたものじゃないわりに結構苦労したw
51:1
07/03/04 04:25:30 0
いっぽうロシア人は
nScriptを使った
52:いつでもどこでも名無しさん
07/03/04 05:14:54 0
乙です。正規表現の無い処理系でテキスト処理したくねえ……。
AppleScriptではSplitとかReplaceとかSubstrとか毎回書いちゃってたりしますが。
そのうちSortもソラで書けるようになろう。
CeGCCでコンパイルしたqkc置いときますね。
つ[URLリンク(moyashi.air-nifty.com)
……べ、別にあんたのためにコンパイルしたわけじゃないんだからねっ!
pathToFile = "\path\to\filePath"
Run("\path\to\qkc.exe", "-s " & pathToFile)
-s to Shift-JIS
-e to EUC
-j to JIS
qkcはパイプやリダイレクトを使わずに済む代わりにunicodeに対応してない。
本当ならnkfを貼りたかったんだけど、動作が変だ。
Runではパイプとかリダイレクト無効だろうし。
nScriptもunicode対応してなくて、時代を感じる。
ほっほう!! みたいな構文があってリスペクトしているので、
ぜひnakkaさんにはnScriptmのフィーチャーまで取り込んで、
リニューアルをお願いしたいところ。
53:1
07/03/04 16:51:17 0
>>52
俺もAppleScriptでは慣れてるはずなんだけど
ここのところはPerl頭になっててたいへん…w
ツンデレthanks!
早速試させてもらったのですが…何も起きません。
解凍したcegcc.dllとcegccthrd.dllをWindowsフォルダに入れて
qkc.exeはProgram Filesに入れてありますが
スクリプト走らせても
ファイルマネジャー上でqkc.exeをダブルクリックしても何も起きない。。。
エラーも出ません。
54:いつでもどこでも名無しさん
07/03/04 16:55:00 0
何この良スレは・・・
55:1
07/03/04 17:25:14 0
>>54
おいでやす
56:いつでもどこでも名無しさん
07/03/04 18:24:02 0
PocketConsoleを入れない限りは、画面上で何も起きなくておk。
逆を言えば、「qkc(またはいずれかの構成ファイル)が見つかりません。」
と出ないなら動いている証左だが。
URLリンク(www.bluishcoder.co.nz)
-sオプション付けててShift-JISのソースを処理してるなら、
Shift-JIS to Shift-JISだから何も起きなくて当たり前。
一回-eオプションでテキストをEUC-JPにしてみてPocketWordとかで開いて、
バケバケになってるのを確認して、再度-sで変換とか。
1さんがそんなマヌケなことするわけないよなあ。
空白を含むパスに処理するファイルがある場合、クオートしないといけない
かもしれない。もしくは、空白を含むパスを回避する必要が……。
とりあえず、処理するファイルをルートに置いてやってみてください。
WMにはカレントパスという概念が無いそうで、
パスは全部ルートからの絶対パスで指定する必要があります。
世のZERO3勢の勢いを見ていると、
何か買っとかないと乗り遅れた気分になる……。
57:いつでもどこでも名無しさん
07/03/04 18:25:36 0
EM・ONE買っとけ♪
58:1
07/03/04 19:03:16 0
>>56
eucで書いたtxtファイルを作って試してたんだけど、
> 空白を含むパスに処理するファイルがある場合、クオートしないといけない
それでした。。。; すみません&ありがとう
Filepath = """\My Documents\text-euc.txt"""
Run("\Program Files\qkc.exe", "-s " & Filepath)
これ↑でばっちりsjisに変換されてました。thx again.
ZERO3(俺のは無印)はまぁ、「PDA+無線LANカード+モデムカード」と考えれば
めっちゃ安いからねー
値段を考えないなら、WM5(6)機であればZERO3じゃなくてもいいとは思うけど。
59:1
07/03/05 00:13:42 0
>>50のスクリプトを一応日本語検索対応にしてみた
Sjis_file = (ファイルパス)を設定しておいて
最新キャッシュファイル選んだ時点でSjis_fileとしてコピー
RunWait( "\Program Files\qkc.exe", "-s """ & Sjis_file & """" )
#Run()でやったら、qkcの変換が終わる前に処理し始めて出力ファイルがぐしゃぐしゃに。
これを読み込んで、検索。
metaタグのcharsetも変えなくちゃいけないけど
コードをきれいに置き換えるプロセスが面倒なので
charset=euc-jp"> → charset=shift_jis"> こうするんじゃなく
charset=euc-jp"> → charset=shift_jis" euc-jp"> にして誤魔化すことにしたw
#Whileループの直前
csIdx = Find( ToLower( aStr ), ToLower( "charset=" ))
If( csIdx )
preStr = SubStr( aStr, 1, csIdx - 1 + Length( "charset=" ))
postStr = SubStr( aStr, csIdx + Length( "charset=" ))
WriteFile( Found_file, preStr & "shift_jis"" ", 1)
aStr = postStr
Idx = Idx - Length( preStr )
EndIf
60:いつでもどこでも名無しさん
07/03/05 00:48:50 0
乙です。
Debian JPにあったsed-jaも置いといた。
まー、nScriptでいいわけだが。
ファイル書き出しはcmd.exeのリダイレクトを利用する必要があるので、
cmd.exe(PocketConsole)がインストールされてないとダメ。
あと、Shift_JISとEUC-JPでないとダメみたい。JISだと化けた。
パイプはうまく動かなかったので、事前にRunWaitにてqkcでコード変換しておく必要あり。
PocketConsoleは公式版でなく、
URLリンク(www.bluishcoder.co.nz)
にあるrarファイルに含まれているのでないとダメなのかもしれん。
PocketGCCのころに作られたものみたい。
URLリンク(moyashi.air-nifty.com)
Run("\windows\cmd.exe", "/c \sed.exe -e 's/euc-jp/shift_jis/g' \org.txt > \temp.txt")
61:1
07/03/05 03:21:06 0
>>60
いつも貰ってばかりですいませんなぁw
でも、う~ん。。。
rarファイルが解凍できないや。
普通のcmd.exeが落ちて無いかとおもってぐぐってみたが、
母艦が必要なのしか見つからなかった。
まぁ、MortScriptスレとしては
正規表現使っちゃったらおしまいみたいな感じもするのでw
まさしく「nScriptでいいわけだが」てことだろうから
sedのお世話にはならずにやっていこうかとも思いますw
62:いつでもどこでも名無しさん
07/03/05 14:04:44 0
URLリンク(forum.xda-developers.com)
63:1
07/03/05 19:44:42 1Z5aMo2C0
>>62
そのフォーラムよりもこのスレのほうが
たぶん複雑なことにチャレンジしているぞw
ところで、俺はCQっていう入力支援アプリを使ってるんだけど
URLリンク(homepage2.nifty.com)
CQ用のMortScriptコマンド集(RC10)をうp。
URLリンク(w-zero3.org)
内容をCQのキーワードファイルにコピペして使って下さい
端末単体でスクリプティングするのに便利
64:1
07/03/06 05:27:58 0
しかし、そろそろw-zero3.orgのうpろーだ使うのが
苦しくなってきたな。
どっかに良いうpろーだないかなー?
65:いつでもどこでも名無しさん
07/03/06 05:33:41 0
イイネ!
今日はRubyとPHPをいじくっているのでMortScriptは休憩。
RubyはPHSから位置情報取得>マップ表示orメール作成というやつ(Zaurus用)
現在地の緯度経度入りのURL作成まではチョロいもんだが、NetFrontに渡すと
その瞬間SIGSTOPをくらって(?)止まってしまい困っている。
fgすると戻ってくるけど。
66:いつでもどこでも名無しさん
07/03/06 15:00:28 0
MortScriptでうpろだをつくるとか
67:1
07/03/07 00:47:15 0
>>65
リナザウですか。
Windows(DOS)もLinuxみたいに、-hでパラメータ一覧が出たらいいのに
と常々思ってるんだが
あるいはMacソフトウェアのAppleScript用Dictionaryみたいなものとか
ディベロッパーキットとか落とさないと駄目なのかな。
なにせマカーなんで、不案内な部分が多いよ。
>>66
それはあれだな、
テレビのリモコンで電話をかけるぐらい難しいなw
68:いつでもどこでも名無しさん
07/03/07 01:07:38 0
そっかorz
69:いつでもどこでも名無しさん
07/03/07 05:16:55 0
引数を取るプログラム少ないんでは。
まじめなプログラムはヘルプに書いてあるよ。
その代わり、OLEサーバ(OLEオートメーションサーバ)実装のプログラムは、
(表現が正しいか分からない。つまり、OLEクライアントからCreateObject()で
利用できるプログラム)自分自身に関する情報をオブジェクト自身に保持している。
それらの情報はオブジェクトブラウザを使うと見ることができるよ。
身近なところでは、ExcelのVBエディタに付いているオブジェクトブラウザとか。
OLEサーバになるプログラムはかなり多いと思われる。オブジェクトブラウザで
見てみると、多過ぎて何だか分からないぐらい。
OLEの世界に拓けたポテンシャルを目の当たりにすると、
Windowsに対する認識を改めるかも。
例えば、
URLリンク(www.hi-ho.ne.jp)
こういうのを使うと、
Excelを含むいろーんな処理系からbasp21の機能を利用することができる。
AppleScriptのOSAXみたいなもんだね。自分自身の中にDictionaryを持っている。
70:1
07/03/07 17:12:45 0
>>69
なるほどー。
いや、Windows PCでのプログラミングとかVBマクロとかでは
Macよりいろいろ出来て融通が効くんだろうなぁ、
っていうイメージは持ってるよ。
WM機単体上でのスクリプティングで、
たとえばこないだのtmail.exeの "-service" "-sync" とかを知るのに苦労したから。
"-to" とか "-subject" "-body"とかは、ぐぐればすぐ見つかるんだけど
少なくともMicroSoft製のexeのパラメータだけでもいいから
一覧にまとまってればスクリプト作り易いのにな、と思って。
71:いつでもどこでも名無しさん
07/03/07 20:23:05 0
うーん、そういうのは知らないね。
いや、あればググって出てくるっしょ。
72:1
07/03/07 22:13:08 Ne0E1r5t0
だねぇ。
文字列マッチ/置換をregexp感覚で行う
(あくまでも「感覚」w)ライブラリスクリプト書いたw
バグがあったらごめん。
for MortScript 4.0 RC10
URLリンク(home.att.ne.jp)
73:いつでもどこでも名無しさん
07/03/08 00:52:07 0
根性あるね!!
その美学分かる。
74:いつでもどこでも名無しさん
07/03/08 02:07:10 0
Sigmarion IIIでもMortScript動いた。
strings MortScript.exe > ~/mortscript.txt
でテキスト抜いて依存してるdll調べた。
ちょっと変なとこあるけど、核心であるRunAt()、TimeStamp()は動いた。
Sigmarion IIIは普通に起きてきたよ。
こういう環境が最初からあれば、もっとH/PCは活躍したはずなのに……。
そういえば、Win32でもServiceだったかタスクスケジューラにタスクを登録すると、
定期的にサスペンドから起きて何かするってできたよな。
以前やったことがあるが、できたんだかどうだったか忘れてしまった。
75:いつでもどこでも名無しさん
07/03/08 06:31:22 0
Sigmarion III、jornada720でもMortScript動いた。
URLリンク(moyashi.air-nifty.com)
76:1
07/03/08 19:22:12 5I6UOWTj0
まぁ一度作っておけばあとが楽だしね。
こういうめんどくさいルーティーンもけっこう高速に処理するね。
string コマンドに詳しくはないけど、
MortScript.exeファイルを強引にテキストエディタで開くと、
いちばん下の方に
COREDLL.dllAYGSHELL.dllcellcore.dllCEShell.DLLmfcce300.dll
ole32.dlltoolhelp.dllWININET.dll
LoadLibraryWGetProcAddressACacheSyncCLSIDFromStringProcess32
NextInternetOpenW
ていう文字列が見えるね
それにしても、いろんな機種持ってるなぁw
77:1
07/03/08 21:18:24 0
RC11入れてみた
作者コメントどおり、BigMessage()の
ワードラップされない不具合が改善されてるね
78:いつでもどこでも名無しさん
07/03/09 05:37:13 0
テキストエディタで開けば見えるけど、美学ってもんがね……。
っていうか、ホーミンさんのExecutabilty Check toolで、依存dllのチェック、
依存しているdllのファイル名の変更が可能、とご本人からコメントをいただいてしまった。
MortScript.exeをExecutabilty Check toolで書き換えてしまうわけです。
すると、Pocket PC用のmfcce300.dllをmfcce300p.dllなどとリネームして
H/PC用のmfcce300.dllと共存可能とのことです。
そういえば、昔何かで使ったような気がした! ホーミンさんには頭が上がりません。
いろいろ持っているよー。まあ、好きだからね。
RC11は入れるだけ入れて内容はチェックしてなかった。
ということで、ダイアログ進行は続く。
79:いつでもどこでも名無しさん
07/03/09 12:14:27 0
ため語と敬語が混ざってるな
80:いつでもどこでも名無しさん
07/03/09 12:49:55 0
間違い。
×mfcce300.dllをmfcce300p.dllなどと
○mfcce300.dllをmfcce30p.dllなどと
バイナリ書き換えなので、文字数が変わるとマズいよね。
ホーミンさん本人はちゃんと下記のように書かれていたです。
(常体敬体混在)
81:1
07/03/09 19:11:01 0
>>78
美学は大事だよね。
まぁ俺の場合は「持たざる者の工夫」程度のものだけどw
ホーミンさん降臨ですか。
Mortさんもそうだが、フリーウェア開発者さん達には本当に感謝です。
お客さん来ないねーw
機種板ZERO3ソフト関連スレの流れを見つつ
誘導かけようかとも思ってる
82:いつでもどこでも名無しさん
07/03/09 19:35:45 0
ホーミンさん降臨してないよ
83:いつでもどこでも名無しさん
07/03/09 21:01:02 0
以前から、WindowsでAHKとかLLなスクリプト言語ばかり弄って
遊んでましたが、最近、W-ZERO3[es]購入しまして、このスレ見てPDAにも
AHKみたいな言語があったのかと喜んでおります。
それで質問があるのですが、開発環境ってどうしてますか。スクリプト
書くのはPC上ですか、それともPDA上ですか。WM5エミュレータとか使って
テストするのでしょうか。PDAでスクリプト書くのは厳しい感じですが。
84:1
07/03/09 22:50:33 0
お客さんきたーーーーw
>>82
>>78さんのブログ上に降臨、って意味です。
>>83
俺はマカー with ZERO3 (003SH) なんで、長いものはMacで書いて
FTPでZERO3に送って、動作確認しつつ単体上で手直し。
短いものは最初から単体上で書いてます。
>>63でうpしたCQ用コマンド集を使ってるので、けっこう楽です。
[es]だと画面が若干小さいから、単体上だとやり辛いかもね。
85:いつでもどこでも名無しさん
07/03/09 22:56:03 0
>>78さんのブログについてkwsk!!
86:いつでもどこでも名無しさん
07/03/10 06:48:39 0
>>83
敬体に統一。僕はh2210上で高速タッピングしてます。
デバイス上でないと動かない関数が結構あるので、母艦で書きたければ、
母艦で書いて、それをスムーズにデバイス上で実行する手立てを模索すべきかと。
cecopy.exeという、ActiveSync中のデバイスにコマンドラインからコピーする
ツールを使うとかなり便利です。
Meadow / Emacs上で編集中のファイルをデバイスにコピーする関数を書いてみました。
Cygwin入りの環境なので、パスのデリミタが怪しいのですが、僕の環境では以下は動きました。
適当にglobal-set-keyすれば、キー一発でデバイスにファイルをコピーできます。
デリミタは / でおながいします。
Emacsに限らず、マクロ付いているエディタならできるかと思いますが。
(defun cecopy(to)
""
(interactive "scopy to: ")
(let ((f (buffer-file-name)))
(if (and f (file-exists-p f))
(progn
(if (not (string-match "/$" to))
(setq to (concat to "/")))
(if (eq (shell-command
(concat
"d:/cygwin/bin/cecopy.exe \""
f "\" \"" to (buffer-name) "\"")) 0)
(message "cecopy OK.")
(message "cecopy failed.")
))
))
)
87:いつでもどこでも名無しさん
07/03/10 07:21:57 0
Mac OS XだとMissingSync for Windows Mobileという製品を使うとデバイスを
マウントできるので、普通にEmacs等からデバイス上のファイルを編集できます。
Windowsの場合はマウントできないので、Rainerさんのftpdをインストールし
て、EmacsのTramp / ange-ftpからデバイス上のファイルを直接編集ってこと
ができると思います。(FtpSvrではコマンドが非互換だからかダメでした)
URLリンク(www.rainer-keuchel.de)
PCで動くMortScriptが同梱されているので、PC非対応の関数を使ったスクリプト
を書くのでない限りは、PC上で書けますよ。
x86Emulator用のバイナリは無いので、エミュレータを使う手は使えないと思います。
>>85 MortScriptをH/PCで動かす記事を書いたときに、ホーミンさんに補足していただいた、
というだけの話です。
88:1
07/03/10 18:26:42 0MfJOW/10
俺はいつもhtmlとかcgiとか用にBBEditというテキストエディタ使ってて
URLリンク(www.barebones.com)
これにはFTP鯖上のファイルを直接開いたり新規/上書き保存したりできるので
ZERO3でFtpSvr走らせといて、Mac上のBBEditで開いて書いてコマンド+sで完了。
とはいえ、俺も実際にはソファーに寝そべりながら
ZERO3上でタッピングしてることが多いなw
89:1
07/03/10 18:48:27 0
で、ZERO3上で書く時は多重起動可能なJUsquid使ってて、
このエディタは、現在開いてるファイル名をWindowタイトルとしてくれるので、
「現在編集中のスクリプトを走らせるスクリプト」をソフトキーに割り当てておくと便利。
#RunThisMscr.mscr################
this = "RunThisMscr.mscr"
#スクリプト編集中じゃないときに立ち上げたいアプリを指定。たとえば…
altApp = "\Program Files\Opera\opera.exe"
#アクティヴなウィンドウ名を取得
aW = ActiveWindow()
#自分で自分を走らせると無限ループしちゃうので
If( aW eq this )
Message( sNam[1] & " I can't run myself!", "Error!" )
Exit
EndIf
#もしウィンドウ名(=ファイル名)の拡張子が.mscrなら
Split( aW, ".", 0, sNam )
If( sNam[2] eq "mscr" )
#俺は全部の.mscrファイルをMortScriptフォルダに入れているので
Run( SystemPath( "ScriptPath" ) \ aW )
Else
#編集中じゃないときは別のアプリを立ち上げる
Run( altApp )
EndIf
#End of script###############
当然エディタで上書き保存後じゃないとだめだけど
ソフトキー一発でテストできる。
90:1
07/03/10 18:53:22 0
あ、まちがえた。。。
Message( sNam[1] & " I can't run myself!", "Error!" )
の「sNam[1] & 」は意味無いんで削除してください。
連投すまそ。
91:いつでもどこでも名無しさん
07/03/11 06:13:28 0
よく考えたらWin母艦でスクリプト書きなら、
ActiveSync同期対象フォルダで
スクリプト書けばいい話でしたね。
Emacsならメジャーモード作って
after-save-buffer-hookかなんかにadd-hookして、
保存したらcecopy()を実行などとすれば、
よりリジッドな使用感を作り出せますが。
僕はGSFinder+TQ内蔵エディタを使ってます。
拡張子を関連づけしなくても編集開始しやすく、
保存ボタンが下にあって使いやすいからです。
PWZ3は使う機会が無いですね。
「Windowタイトルにファイル名ネタ」先にやられてしまった……。
92:いつでもどこでも名無しさん
07/03/11 20:24:59 0
powertoysの中にcecopyが入ってたのね。知らなかった。
あと、rapistartっつーPCからPDAのプログラムを実行する
プログラムも入ってた。
この二つがあればスクリプト作りがかなりラクになるな。
93:1
07/03/12 01:28:30 RdgPFHJJ0
>>91
> 「Windowタイトルにファイル名ネタ」先にやられてしまった……。
なんかネタあったら紹介してくださいよ。
今日は.iniファイル読み書きテストを兼ねて
>>34の鳩時計におやすみモード(鳴かない時間帯)を設定するスクリプト
URLリンク(home.att.ne.jp)
鳩時計スクリプト(改)おやすみモード対応版
URLリンク(home.att.ne.jp)
94:いつでもどこでも名無しさん
07/03/12 06:05:38 0
RubyでPHSから位置情報取得、ブラウザで地図表示というのはとりあえずやり
切ったので(@Zaurus)、次なるテーマ。
ノートPCでも定期的にサスペンドから起きる→なんかする→サスペンドというのが
できたので、それにかかずらわってます。
ちなみに、MortScriptのマニュアルがR11にアップデートされてました。
次なるMortScriptは、コマンドラインから使えるSNTPクライアントがあったの
で、それ関連でしょう。実行させるプログラムが違うだけで、やることは
QMAIL3と同じですが(w
QMAIL3はカードが差さってないとダイヤルアップを実行しなかったけど、今度
こそカード検出が問題になるかな。
95:いつでもどこでも名無しさん
07/03/13 02:29:02 0
4.0がRCから正式版になってます。
96:1
07/03/13 02:30:19 VXFI70Dj0
機種固有のレジストリ探索が始まりそうですな。
こちらは、祝日をOutlook予定表に追加するスクリプト計画中
SendKeys()で日本語も送れることを確認。
副産物として、FormatTime()の逆で
年月日からUnixtimeを計算するライブラリスクリプトが出来ました。
URLリンク(home.att.ne.jp)
97:いつでもどこでも名無しさん
07/03/13 03:44:28 0
うるう年とか面倒そうだと思ったですが、意外にシンプルに済んでますね。
POOMが使えればGUI Scriptingしないで済むんですけどね。
町田さんのtestpimは読み出しだけでしたか。
URLリンク(megadriver.yi.org)
これは凄いですぞ。PIEのJavaScriptでContactを新規登録。
URLリンク(www.devbuzz.com)
スケジュールも作成可能だと思われます。
98:いつでもどこでも名無しさん
07/03/13 12:47:44 0
PocketMappleの倍率バーを操作するスクリプトを書いているのですが、ColorAt で色コードがうまく取れません。
1:MouseClick(460,80)
2:Message(ColorAt(460,80))
3:Message(ColorAt(460,120))
4:MouseClick(460,120)
5:Message(ColorAt(460,80))
2/3/5で表示されるコードが同じなのですが、見た目は 460,80 の位置と 460,120 の位置では違うのです。
気になるのが、MouseClickを行った後、ActiveWindowが空白を返してくる事です。
おそらく子ウィンドウがアクティブになっているのだと思いますが、もしかするとColorAtは子ウィンドウの座標を指定していることになるのでしょうか。
99:いつでもどこでも名無しさん
07/03/13 14:58:03 0
僕もDisconnect()の後に表示されるダイアログのOKボタンを押す処理を
書こうとして断念したことがあります。
何か、それと関係した問題であるような気がします。
100:いつでもどこでも名無しさん
07/03/13 16:36:13 0
壱百
101:1
07/03/13 19:14:21 VXFI70Dj0
>>98
Pocket Mapple入れてませんし、
「子ウィンドウ」がどんなものなのかわからないのですが、
ColorAt( x, y )は、アクティヴなウィンドウがどれかに関わらず、
スクリーン上の指定の座標のカラーコードを返すはずですが。。。
例えば、Today画面を表示した状態で、
「新しいネットワークが検出されました」の小さいウィンドウをアクティブにしていても
ColorAt( 480, 80 )が返すのは(背景の)Today画面の右上部の色コードでした。
ColorAt( 475, y )でも試してみました?
>>99
ZERO3ではDisconnectするとダイアログが現れずにただ切れるので
こちらも試せませんでした。。。
>>100行ったなぁ。めでたい。
102:1
07/03/13 21:26:25 VXFI70Dj0
>>97
う~ん、そういうオブジェクト指定のスクリプティングが出来たらいいんだけど
引数では日付指定の新規予定入力画面表示までしかできないみたい。
というわけで、入力はひたすらキーストロークを送る方式の
祝日追加スクリプトできたw
URLリンク(home.att.ne.jp)
URLリンク(home.att.ne.jp)
まぁ、少なくとも年に1回しか走らせないスクリプトだからいいやw
103:98
07/03/13 21:39:58 0
>>101
再度試してみるとうまくいきました。なぜいかなかったのかは不明^^;
で、追加の質問w
スクリプトに引数はつけれるのでしょうか。
また、画面の横幅、高さは取得できるのでしょうか。
104:いつでもどこでも名無しさん
07/03/13 23:43:14 0
>>102
MortScriptにNew("予定")っていうのがありますが、
日付指定までできる引数の方がいいですね。
PocketOutlook.Applicationの方は
「Appointments」オブジェクトをいじるようです。
ちょっと興味があるので時間あったらやってみます。
MortScriptからhtml作ってRun()する感じになるんですかね。
どうやらActiveX Objectを使って、
JavaScriptからファイルアクセスまでできるみたいで、
MortScriptの出番が無いかもしれませんが。
引数->マニュアル6P
画面->マニュアル52P
URLリンク(mort.sto-helit.de)
105:1
07/03/14 00:24:12 YJdvxy6f0
>>103
引数は、MortScript.exeに対して
"\fullpath\to\hoge.mscr" /wait=n variable="moge"
という形式で渡すことになってます。
画面サイズを直接取得する関数は無いです。
が、画面サイズをこえるx, y でColorAt( x, y )すると"-1"を返すことを利用して
以下のスクリプトで有効最大座標を強引に取得することは可能。
3秒ぐらいかかりますがw
#################
x = 200
While ( ColorAt( x, 0 ) >= 0 )
x = x + 1
EndWhile
x = x - 1
y = 200
While ( ColorAt( x, y ) >= 0 )
y = y+ 1
EndWhile
y = y - 1
Message( x & "x" & y )
#End of script#########
106:1
07/03/14 02:25:54 0
>>104
ZERO3はActiveX非対応だそうで
URLリンク(www.omnisoft.com)
を開いても、「Pocket PCのセキュリティ」云々ではじかれるんですよ。。。
まぁ「誰でも気軽に使える」仕様の事勿れ安全主義なんだろうけど。
107:98
07/03/14 09:55:26 0
パラメータ、うまくいかない・・・
Message(Hoge) って内容のファイル \My Document\test.mscr を作って、それのショートカットを作成
ショートカットのリンク先に "\My Document\test.mscr" Hoge=""bar"" で良いんですよね?
/wait はresumeの為みたいだし・・・
日本語で解説してるとこないかな^^;
108:98
07/03/14 11:10:03 0
>>107
自己解決しました。
パラメータ渡す場合は、実行ファイルの引数としてスクリプトファイルとパラメータを列挙しないといけないのね。
前の例だと
"Program Files\MortScript\MortScript.exe" "\My Document\test.mscr" Hoge="bar"
で表示できました。
109:1
07/03/14 15:19:29 0
>>108
>>105で「引数は、MortScript.exeに対して…渡す」と
書いたのは、そういうことです。
「英語マニュアルのここがわからない」と質問してもらえれば
できるかぎり説明しますよ。
110:98
07/03/14 15:30:14 0
>>109
とりあえず、自分がやりたいことはできました^^
VGA/qVGA portrait/landscapeの自動判別させたかったのですが、PocketMapple がVGA対応アプリなので
esVGAモードでもqvgaにならないので断念。タイトルバーの高さでも見れば判別できるのかな?
無駄は多いのですが、せっかく作ったので公開
URLリンク(w-zero3.org)
これと、mapptap/SortInchKey の組み合わせで(ポケットマップルの)表示倍率の変更がキーで出来ます
111:いつでもどこでも名無しさん
07/03/14 17:03:27 0
マニュアルP27にある
x = ActiveWindow()
でactive windowのタイトルを取得できますよ。
また、P49にある、
x = ActiveProcess()
active processのprogram nameを取得できますよ。
Pocket Mappleにフォーカスしたものであれば、それで判定するのも手かと。
112:98
07/03/14 17:10:35 0
>>111
>>98の下のほうでも書いてますが、PocketMappleの縮尺変更部分をタップした後 ActiveWindow() をやると、空白文字列が帰ってくるんですよ。
地図の方をタップするとちゃんと取れるようになるんですけどね。
ActiveProcessの方は見てなかったな。試してみますね。
113:1
07/03/14 19:15:18 0
>>110
細かい事ですが
#if(SubStr(Act,0,13) ne "PocketMappleD")
これは本当は
if(SubStr(Act,1,13) ne "PocketMappleD")
が正解ですな。
"0" でも "1" と同様に働くようですが。
114:いつでもどこでも名無しさん
07/03/14 20:42:08 0
MortScriptは0ベースじゃなくて1ベースなんですよね。
ちょっと気持ち悪いですが、処理系によってまちまちだから、
いいんですけど。
115:1
07/03/15 00:03:40 0
arrayの要素も[1]からだしね。
定義の仕方もちょっと特徴的だと思って、こういうスレタイにしてみたんです。
array[0]を定義する事もできるけど
ForEach x in array() などでは無視される、と。
116:いつでもどこでも名無しさん
07/03/16 18:38:42 0
仲間発見 (・∀・)人(・∀・) よろしくです。
MortScript今日知って、使ってみようかとマニュアル読み始めたところ。
zero3[es]です。qmail3とかMortScriptとかのマニュアルを読んでハァハァしてます。
117:1
07/03/16 20:23:59 u/XXolhc0
>>116
おいでやす
たぶんバグ発見。
SubStr( string, negative number )
(マニュアル p22の下のほう)をやろうとしたときに、
lengthを指定しないと、stringの全てを返しちゃう模様。
e.i.
x = SubStr( "asdf", -3 )
→ x = "asdf"
x = SubStr( "asdf", -3, 3 )
→ x = "sdf"
俺の環境だけじゃないよね?みんなはどうかな?
118:いつでもどこでも名無しさん
07/03/16 21:42:46 0
>>117
たぶん仕様だと思う。
第2引数が1以下の時は1とみなして、そこから第3引数の文字数、省略時は全て
SubStr("abcde",3) -> "cde"
119:いつでもどこでも名無しさん
07/03/16 21:44:31 0
>>118
マイナスだと後ろからと書いてあるのか・・・^^; マニュアル見てなかったw
120:1
07/03/16 22:14:51 0
>>118-119
もちつけw
これやっぱバグだよね?
Mortさんに報告したほうがいいかなぁ?
121:1
07/03/17 02:04:15 rbBfRtXW0
それはともかく、
ReadFile( url )が可能なことを利用して
2ちゃんの指定スレの新着レスを知らせるスクリプトできた。
スクリプトコード
URLリンク(home.att.ne.jp)
.iniファイルテンプレート
URLリンク(home.att.ne.jp)
>>12のメールアカウント巡回スクリプトに組み込んで使ってみてる。
人の少ないこのスレなどを登録しとくと特に便利w
122:いつでもどこでも名無しさん
07/03/17 11:24:48 0
コマンド一覧の日本語版ないかな
123:いつでもどこでも名無しさん
07/03/17 16:25:50 0
無い
124:いつでもどこでも名無しさん
07/03/17 16:37:15 0
読むような英語なんて書いてないぞ。
125:いつでもどこでも名無しさん
07/03/17 17:10:10 0
マニュアルの話じゃねーの?
126:いつでもどこでも名無しさん
07/03/17 20:23:25 0
constant: 定数
variable: 変数
array: 配列
expression: 式
assignment: 代入
parameter: 引数
operator: 演算子
command: コマンド
function: 函数
string: 文字列
numeric: 数
これだけ知ってればけっこう読めるんじゃね?
127:1
07/03/18 21:40:56 l9CkZoZI0
>>121の、2ちゃんの指定スレの新着レスを知らせるスクリプト修正
1000とかdat落ちだとエラーが出るのを修正、対応してみた。
URLリンク(home.att.ne.jp)
128:1
07/03/21 01:50:57 ybD9/3CZ0
人いないなぁ。
しょうがないから、マニュアルでも訳すか。
とりあえず6ページまで
URLリンク(home.att.ne.jp)
129:いつでもどこでも名無しさん
07/03/23 14:54:25 0
>>128
乙。
マジで嬉しい
130:1
07/03/24 02:15:27 0
>>129
がんばるよ。
今日まででとりあえず18ページまで行った。
全部終わるころにv4.1が出ても泣かないw
131:1
07/03/24 05:09:31 bIutk8/70
あと、「2ちゃんの指定スレの新着レスを知らせるスクリプト」
最新レスの中に全角「:」が含まれていると「1000」扱いしてしまう
不具合を修正しました。
#そりゃそーだよなぁ。我ながら馬鹿っすw
スクリプトコード
URLリンク(home.att.ne.jp)
.iniファイルテンプレート
URLリンク(home.att.ne.jp)
指定スレのスレタイ及び>>1の内容に含まれている全角「:」の数を自分で数えて、
.iniファイル内の「offset=」に設定して下さい。
MortScriptにはregexが無いので、現時点でこれ以上は無理っぽい。
132:いつでもどこでも名無しさん
07/03/24 13:03:46 0
>>130
実は俺もwkwkしながら見てる。
ガンガレ。
133:1
07/03/24 18:12:52 0
>>132
そう言ってもらえるとやる気出て来るわぁw
ググってみたら、いくつかのブログでも早速紹介してくれてるみたいで。
ブロガーさん達もありがとう
134:1
07/03/27 05:33:38 0
「2ちゃんの指定スレの新着レスを知らせるスクリプト」
鯖落ちとかなんかの原因で繋がらなかった時に
エラーを吐いて途中で終了し
iniファイルの該当セクションが消去される不具合を修正しました。
URLリンク(home.att.ne.jp)
マニュアルは33ページまで行った。
まだ半分か。。。
訳よりも、コードを綺麗に表示するのがめんどい。。。
135:いつでもどこでも名無しさん
07/03/27 18:04:39 0
pdf見てたけど、IniRead はあるのに、IniWrite は無いのね
ReadFile/WriteFile使って自前でやらないとダメかな?
136:1
07/03/28 00:37:42 LBg4B1Jp0
>>135
そうなんだよね。
>>134のスクリプトでも、INIファイルの書き込みはWriteFileでやってる。
IniWriteは4.1での採用が計画されているようです。
URLリンク(www.sto-helit.de)
137:いつでもどこでも名無しさん
07/04/03 11:21:41 0
和訳完了、もうすぐですね。がんばってください。
何も出来ませんが、応援してます
138:1
07/04/03 23:37:44 0
>>137
ありがとー;;
今日はぜんぜんできなかったけど
明日がんばりますw
139:1
07/04/05 05:23:36 Hx710DqX0
マニュアル和訳できました。
URLリンク(home.att.ne.jp)
細かいことでもいいので、誤植とかまちがいとか見つけたら
おしえてください。
140:いつでもどこでも名無しさん
07/04/05 14:05:37 0
おおおこれは乙
141:いつでもどこでも名無しさん
07/04/05 14:37:00 0
>>139
乙。
せっかく作ったんだから、MortScript作者さんに連絡してみたら?
自分の作ったモノがローカライズされているってことは、結構喜ぶとおもうよ。
つか、もうフォーラムとかで報告してるのかしら...
142:いつでもどこでも名無しさん
07/04/05 16:56:01 EB1P5emd0
>>139
激しく乙!なんとtop画像まで付いてるじゃないかww
ありがたく頂戴させていただきます。
143:1
07/04/05 18:23:57 0
>>140-142
いやぁどもども。
>>141
そうだね。
フォーラムにはバグリポートを1件してあって
返答があったらその流れで報告しようかと思ってたんだけど
今のところヌルーされてるw
そのうち何かの形で報告しとくよ。
144:いつでもどこでも名無しさん
07/04/06 13:56:13 0
厨ですんませんが>>1のサイト行っても
mortscriptのインストーラが見つからないんでつが
どこにあるの?
145:いつでもどこでも名無しさん
07/04/06 14:13:41 1ot+xHyb0
>>144
ブラウザのユーザエージェントがモバイルだと
変なページに飛ばされるみたいだね。
UAがPCの状態で、↓ここからどうぞ。
URLリンク(www.sto-helit.de)
146:いつでもどこでも名無しさん
07/04/06 15:31:00 ImxNiJdQ0
>>145
トンです
147:1
07/04/06 20:16:26 0
それもマニュアルに書いとこーっと。
148:いつでもどこでも名無しさん
07/04/08 16:19:51 0
zero3ソフトスレから流れてきました。
まだ2Hしかやってないですが、
これ色々出来そうでいいですね!
早速このスレとか、exampleとかを参考にgsffinderの支援スクリプト考えてるんですが、
そもそも「ファイル」とかのメニューをmortscriptから開くにはどうすれば良いですか?
MouseClickを「ファイル」の座標辺りに飛ばすしかないですかね?
149:1
07/04/08 16:37:48 rJKQQl6D0
>>148
いらっしゃ~い
> MouseClickを「ファイル」の座標辺りに飛ばすしかないですかね?
そうですねぇ。
こればっかりは、アプリが起動パラメータで制御させてくれないと
どうしようもないですからねぇ…。
GSFinderに指定出来るパラメータは
俺の知る限り、起動時に開くディレクトリぐらいだから。
150:いつでもどこでも名無しさん
07/04/08 17:20:06 0
>>149
うお即レスすまんす。
取りあえずMouseClickで凌ぎます。
面倒な操作(音量,明るさ,ネット接続)のマクロが
揃ってるなんて・・・と、なにから試そうか悩みますわw
151:いつでもどこでも名無しさん
07/04/09 08:01:42 0
色々やってみました。
zero3(es)の場合SetVolumeは0~6みたいですね。
ただ0にすると「OFF」になっちゃって、
以降のSetVolumeが何故か無視されてしまう・・・。
Setbacklightはバッテリ駆動時が何故か無視されてるっぽい・・・?
AC電源時と同じ数値範囲じゃないかもしれないが今のところ不明。
Connectは引き数パターンが3つあるけど、引き数無し型は「couldn't establish~ 」とでてエラー。
引き数2つ型は実行してみてビックリ!「センタ名称設定」
「社内ネットワーク設定」などのエントリから選ばせる模様で、
「CLUB AIR EDGE」とかの指定は無理っぽい・・・?
どうもAPIの不整合の壁が厚い模様・・・orz
es限定の話題でスマソ
152:1
07/04/09 15:39:07 EKP6Jkug0
>>151
003SHだと、SetVolumeは0 ~ 255ですよ。
25以下1以上にすると「オン、音量ゼロ」
0にするとたしかに「オフ」になるけど、
その後の再設定も問題なくできる。
それ以外は003SHでも似たような感じ。
アカウント名による接続は無理ですね。
ConnMgr.exeが仕切ってるからかな。
ちなみに、Connect( "センタ名称設定" )とかで繋ぐと、
スクリプトが終了した時点で接続を切ってしまうので、
Connect →何かする→接続を切る
っていうスクリプトにならざるを得ない感じ。
接続関連では、アプリにやらせる方針のほうが可能性は高まりそう。
153:いつでもどこでも名無しさん
07/04/09 17:58:40 0
>>152
失礼しました!
6迄の数値範囲を取るのはSetBacklightの方でした!
また、正しくは1~6の模様。
0基準はSetVolumeの方です(混同してました)、
そっちは003SH同様に0~255が正。
また、SetVolumeは標準のボリュームで確認してたのですが、
mortでSetVolume呼び出し後暫くは前の値を持ってるみたいで、
それで勘違いしてたみたいです。結論ですが、
esでもSetVolumeはちゃんと機能してますorz
これからはもちっと確認してからカキコしますorz
154:1
07/04/09 20:09:06 0
>>153
かんちがいも過疎スレのにぎわい
ってことで、どんまいw
155:いつでもどこでも名無しさん
07/04/09 20:26:56 0
完成したスプリクトを発表するスレとか
こんなスプリクトを要望するスレとかないですか?
156:1
07/04/09 20:37:02 0
>>155
ここでいいと思いますよ
ただ、うpろーだは各自探してきてねw
要望もあっていいと思うけど、
機種や使用アプリが人それぞれだから
自分でスクリプト書く上でのヒント、
みたいな感じなら応えられると思うよ。
157:いつでもどこでも名無しさん
07/04/09 21:15:13 0
毎日AM6:00に \Windows\hoge.exe を実行
ってのは出来るのでしょうか。
zero3es上で、Windowsでのタスクスケジューラ
的なことがしたいのです。
158:1
07/04/09 21:42:39 0
>>157
出来ますよ。
TimeStamp() と RunAt() を使って。
>>34の鳩時計スクリプトwの応用で。
まず翌日6:00 am に自分を起動させ、
起動するごとに翌日の6時にNotification Queueを登録する方針でいけるはず。
テストで実行するとNotification Queueがどんどん溜ってしまうので、
冒頭で必ず RemoveNotifications( thisFile ) しておくといいよ。
159:いつでもどこでも名無しさん
07/04/09 22:03:55 0
素晴らしい
160:157
07/04/09 23:16:05 0
ありがとうございます。
しかし…よく分かりませんでした(-_-;)
thisFile = SystemPath( "ScriptPath" ) \ SystemPath( "ScriptName" ) & SystemPath( "ScriptExt" )
Snd = "\Windows\Alarm0.wav"
RemoveNotifications( thisFile )
t = TimeStamp()
RunAt( t + 86400 - (t MOD 86400), thisFile )
Repeat( FormatTime( "06:00:00", t ) )
Playsound( Snd )
EndRepeat
これを実行したところ、直後にAlarm0.wavが
6回鳴りました。私には敷居が山のように高いです。
アホな箇所を指摘して頂けると幸いです。
161:1
07/04/10 00:12:49 b+uixvyf0
>>160
ええっとですね、まず
> RunAt( t + 86400 - (t MOD 86400), thisFile )
これだと「深夜0時にこのスクリプトを走らせる」ってことになるから、
午前6時だと
RunAt( t + 86400 - (t MOD 86400) + 6*3600, thisFile )
にしますよね。
n時にn回Repeatするのは鳩時計だからでw、「午前6時に音を1回鳴らしたい」なら
Playsound( Snd )
だけでいいわけ。実際にはここが、Run( "\Windows\hoge.exe" )
に置き換わるわけですよね。
手動で起動しても、もちろん6時と同じプロセスが実行される。
それが嫌な場合は、If()条件分岐で回避します。
このスクリプトではFormatTime()を使う必要はないけど、
FormatTime()の使い方については、マニュアルをもういちど
読みなおしてみて。
162:157
07/04/10 01:16:35 0
>>161
ご説明のおかげで少し分かってきました。
まだ試行錯誤中ですがなんとかいけそうです。
ご丁寧に教えて頂き、ありがとうございます(^-^)
163:1
07/04/10 01:58:15 0
>>162
よかったです。これを手始めにして、
「午前6時台以外に起動された時は、
次回の起動時刻を再設定するダイアログを表示する」とか
「そのInputダイアログに前回設定値をデフォルト表示する」とか
使い易くする工夫をしながら、覚えていくと楽しいよ。
164:1
07/04/10 21:26:59 b+uixvyf0
「2ちゃんの指定スレの新着レスを知らせるスクリプト」
人大杉の場合に1000 or dat落ち扱いしてしまう不具合を修正しました
URLリンク(home.att.ne.jp)
iniテンプレートに変更点はありませんが一応。
URLリンク(home.att.ne.jp)
165:いつでもどこでも名無しさん
07/04/10 23:07:30 0
これかなり実用ですね!
新着無しかわかるようにShowWaitCursorが
一発あった方がいいかも。
まあスクリプトだから自分で入れればすむ話だけどね
これってURLの末行、l1じゃないとダメですか?
166:1
07/04/11 00:20:07 0
>>165
どもども。
ShowWaitCursorは最初入れてたんだけど、
俺はこれをメール自動巡回スクリプトに組み込んで使ってるんで、
別アプリで作業中にウェイトカーソルが出てくるとうざくて
やめました。
最新レス番号の位置を、全角「:」を探して判断してるので
URLの行末はl1(>>1と最新レスだけが表示される状態)じゃないとだめです。
167:1
07/04/11 05:39:27 hEvq0wUz0
機種板ZERO3質問スレを見ていて面白いなと思ったので
書いてみました。
W-ZERO3 WS003SH/004SHでクリップボード上に
コピーされた番号に電話をかけるスクリプト
URLリンク(w-zero3.org)
168:いつでもどこでも名無しさん
07/04/11 20:05:14 0
>>167
zero3の聖域「denwa.exe」に
スクリプトで挑む気概に感動
169:1
07/04/11 22:03:01 0
>>168
いやいや気概なんてものじゃないけど
聖域だったのかw
たしかにDenwa.exeはアプリ開発にはクローズドな感じだね
スクリプトの強みかな。
やってみてわかったことは
SendCtrlKey() はa-z 以外ではエラーを吐きます。
170:1
07/04/12 01:24:21 EwYhBlYl0
質問スレの人のアイディアで、質問スレの人が作った
「W-ZERO3でクリップボード上にコピーされた番号に
電話をかけるスクリプト」の改変版がうpされています。
URLリンク(w-zero3.org)
shcprog.exeが使えるの知らなかった。
ずいぶんシンプルになって
俺のアイディアで残ったのは全角→半角変換の部分のみw
171:いつでもどこでも名無しさん
07/04/12 21:10:17 0
まあ乙です
172:いつでもどこでも名無しさん
07/04/14 12:10:37 0
毎朝指定時間に聴く日経とかダウンロードして目覚まし代わりに再生・・・
なんてのも出来そうだね。ちょっとやってみよう。
173:1
07/04/14 12:40:40 0
>>171
どもども
>>172
報告待つ
174:いつでもどこでも名無しさん
07/04/14 14:53:31 0
>>173
鳩時計を参考にさせてもらってます。
ネット関連の知識はまったく無いのでdownload()ってやるだけでファイルが落ちてくるなんて本当に便利。
RunAt()の年指定は4桁じゃないと駄目みたいですね。
175:1
07/04/15 04:48:48 0
>>174
鳩時計意外に役立ってるのかw
ReadFile( url ) が可能なことからも
MortScriptはシンプルなWEBブラウザとしても使えるんだよね
ちなみにユーザエージェントはちゃんとMortScriptを吐きます。
> RunAt()の年指定は4桁じゃないと駄目みたいですね。
そうでしたか。Unixtime指定しか使ったことないから
知らなかったや。
176:172
07/04/15 10:29:05 0
和訳マニュアルなんですが、
7.7.4 文字列とパスの連結
の事例、改行位置がずれているようです。
和訳マニュアル、本当に助かってます。
177:いつでもどこでも名無しさん
07/04/16 09:50:07 0
ちとやりたいことがあって、チャレンジしようかと思ってましたが、
公式HPがつながらないんですが...(もちろんPCから接続)
移転したんですかね?
178:1
07/04/16 16:58:38 0
>>176
ほんとだ サンクス
直しました
>>177
ほんとだね
PingやTracertは通るから
メンテ中か何かでしょうか
179:172
07/04/17 21:45:11 0
マニュアル修正おつかれさまでした。
ポッドキャストをダウンロード&目覚まし代わりに再生、作成中です。
zero3[es]なんですが、通話終了ボタン長押しで電源を落とした場合に対する
RunAt()みたいな関数は無いかな…。
携帯電話の目覚まし感覚で、寝る前に電源を落として
(夜中に着信させないため)
朝になってから電源オン&ポッドキャストをダウンロードさせたいのです。
寝る前は「通話終了ボタン長押し」でなく「システム音量0にする」で対処するか…。
180:1
07/04/18 00:09:43 0
>>179
電源長押しOFFで状態でスクリプトが走ったら
電源長押しの意味ないからなぁ…
単に着信をOFFにするだけなら、
SetWSIMアプリを使ってW-SIM自体をOFFにするとか
どうでしょう?
181:いつでもどこでも名無しさん
07/04/18 21:14:26 sxWGPAnS0
はじめまして、使い始めて一日ですが、
マニュアル要訳、ありがたくとてもお世話になってます。
以下のところBNF表記がテレコになってます。
9.6.7 ウィンドウが存在するまで待機する(WaitFor)
WaitForActive( ウィンドウタイトル, 秒 )
9.6.8 ウィンドウがアクティブになるまで待機する(WaitForActive)
WaitFor( ウィンドウタイトル, 秒 )
182:いつでもどこでも名無しさん
07/04/19 12:55:24 0
和訳マニュアルを見ながら初プログラミングしています。
CreateShortcutで躓いています。
"\Program Files\hoge.exe" -A
というショートカットを作るのがうまくいきません
"\Program Files\hoge.exe"&" "-A
ではエラー
"\Program Files\hoge.exe"&" "&-A
では
"\Program Files\hoge.exe -A"
となってしまいます。
正しい記述方法をご教示いただけますか。
183:いつでもどこでも名無しさん
07/04/19 13:55:35 0
>>182
"""\Program Files\hoge.exe"" -A"
かな?
"~"内で " を使うには "" と2個続けて書く必要があったはず
184:183
07/04/19 13:56:10 0
ぎゃー勘違い
185:いつでもどこでも名無しさん
07/04/19 14:20:58 nsWwoHi90
"C:\"\Program Files\hoge.exe" -A"
となりますね
186:いつでもどこでも名無しさん
07/04/19 14:34:17 0
>>183
合ってるよ。WM5エミュで確認済み。
187:1
07/04/19 14:52:24 0
うぉ、珍しくレスが伸びてるw
>>181
ほんまや。。。サンクス
直しました
>>182
>>183さんの言うとおり。
おかげでマニュアル9.11.7の
「例:」の式のケツの「)」が無かったのにも気付いたw
188:いつでもどこでも名無しさん
07/04/19 15:25:42 0
ありがとうございます。
ずっとパソでやっていてうまく行かなかったのですが、WM5上で動かしてうまく行きました。
189:いつでもどこでも名無しさん
07/04/21 19:16:16 0
condexecの様にウインドウタイトルは存在するけど
実際にはウインドウが存在しないプログラムが実行されているかどうかって
調べられませんか?
WndExists("[Test]")
等と記述しても必ず0しか返って来ないんですよ
実際にウインドウが存在するtmailの様な奴は
WndExists("070--------")
でちゃんと調べられるんですが…
なんか八方塞っぽい*o_ _)oバタッ
ProcExists("condexec.exe")
で一見調べられるような気もするけど
どのセクションが実行されていても反応するから使えないし…
良い方法ありません?
190:1
07/04/22 00:15:13 0
>>189
condexecでは試してないんですが
たとえばDenwa.exeには"電話 "(ケツに半角スペースつき)という
タイトルの隠れウィンドウがあって
電話アプリを立ち上げていなくても
WndExists("電話 ") はちゃんと1を返すんですが。
ウィンドウタイトル文字列が [ ] で囲まれてるの?
191:いつでもどこでも名無しさん
07/04/22 06:07:06 0
着信した時何かのソフトが立ち上がるんですかね?
もしそれを検地出来れば着信時のみシステム音量を復帰できる気がするのですが
192:いつでもどこでも名無しさん
07/04/22 07:51:19 0
>>190
そうです
[]で囲まれてます
execifやcondexecからウインドウタイトル指定できちんと認識しているので
その辺は問題ありません
PQz_TASKLISTでも確認してます
今の所お茶を濁して処理させてます
>>191
Denwa.exeが最前面に出るはずだから
それで組んでみては?
今回初めて組んでみましたけど
色々出来る反面癖強いですね~
今まで問題なかった奴がmscrから呼び出して使ったら
ウエイトを増やさないと電話が死んだりしてて
物凄く悩んだりしました
デバグって楽しいw
193:いつでもどこでも名無しさん
07/04/22 17:54:02 0
次の様なソースを組みました
X = FileCreateTime("test.txt")
A = (TimeStamp() / 60 / 60) MOD 24
B = (TimeStamp() / 60) MOD 60
C = TimeStamp() MOD 60
D = (X / 60 / 60) MOD 24
E = (X / 60) MOD 60
F = X MOD 60
Message(FormatTime( "H:i:s" ) & "^NL^" & A & ":" & B & ":" & C & "^NL^" & D & ":" & E & ":" & F)
これで表示されるのは様は時間なんですが
FormatTime()と変数A~Cは期待通りに現在時刻を表示してくれますが
変数D~F…つまりタイムスタンプなのですが
実際のタイムスタンプより9時間遅い時間になってるんですよ
これってバグになるのかな?
それとも正常動作?
9時間といえば世界標準時との時間差…ですよね
194:1
07/04/23 01:43:13 0
>>192
そうかぁ
condexec使ってないので解決策はわかんないっす。。。
でもスクリプトと格闘してる時間って
日常の嫌なこと忘れるよねーw
>>193
それはバグというよりも
WMのファイル作成日時が標準時で格納されてるからじゃないかな
そうじゃないと、海外に出張してタイムゾーンを変更した時、
日本で作ったファイルの作成日時が未来になっちゃったりするし
File = "test.txt"
#新規ファイルを作る
WriteFile( File, "test" )
Sleep( 100 )
Message( TimeStamp() - FileCreateTime( File ) )
#→約32400を表示
195:いつでもどこでも名無しさん
07/04/23 14:05:08 0
ちょっと教えてください
ActiveProcessとSwitchCaseを使って全面のアプリによって処理を変えるスクリプトを書いているんですが
x = ActiveProcess()
Switch(x)
Case(pimg.exe)
Message(x)
Case(fexplore.exe)
Message(x)
EndSwitch
これをPictures&Videosが前面の時に実行するとpimg.exeというポップアップが2回出ます。
何故でしょうか。
これを実行すると
196:いつでもどこでも名無しさん
07/04/23 14:59:29 0
W-ZERO3[es]With_ATOK、AtokChanger、ChgSuisokuの動作をしてくれるスクリプト誰か書いてくれませんか?
挑戦したけど私の技量では無理だったぽ
ATOKの入力モード(あ→A_→1)
"HKCU", "Software\Sharp\PhoneStatus", "Status22"
DWORDで0が全角ひらがな以後増える
一度うまく動くようになった気がしたんだけどいつのまにか横画面時にうまく動かなくなってしまった
推測変換のON/OFF?
"HKCU", "Software\JustSystem\ATOKM\UI", "ConjeValid"
0がOFF?1がON?っぽいような気がするんだけど変えてもきちんと反映しない
他にもなにか変更しないといけないのかな?
ATOKのON/OFFはわかりませんでした。
197:1
07/04/23 16:54:52 0
>>195
文字列は""で囲まないと。
Case( "pimg.exe" )
Case(pimg.exe)
#命令1
Case(fexplore.exe)
#命令2
↑これだと、両方のケースともtrue(=0ではない)と判断されて
命令1も2も順に実行される
>>196
esじゃないしATOKもないから
俺は無理だ。。。
198:いつでもどこでも名無しさん
07/04/23 18:26:51 0
>>197
なるほど。ありがとうございます。
試しに
x = ActiveProcess()
Switch(x)
Case("pimg.exe")
Message(x)
Case("fexplore.exe")
Message(x)
EndSwitch
としてみたのですが、やはり2回メッセージが表示されてしまいます。
199:1
07/04/23 19:37:55 0
>>198
ごめん。これを忘れてたw
8.3 値による分岐(Switch)
…
・数の比較だけが利用可能です。
200:1
07/04/23 19:53:54 0
ひとつの方法として
こうすればできる。
procArray[ "pimg.exe" ] = 1
procArray[ "fexplore.exe" ] = 2
x = ActiveProcess()
Switch( procArray[ x ] )
Case( 1 )
Message(x)
Case( 2 )
Message(x)
EndSwitch
201:いつでもどこでも名無しさん
07/04/23 22:25:44 0
ファイルの読み込みってテキスト文だけしかできないんですね~
UKTenkiのデータ読み込ませようとしたら
ファイルの頭の方にお天気データのバイナリが入っているもんだから
正しく読み込みできなくて悲しかったよ
あ~UKTenkiの自動更新scriptが中途半端に(ノ_・、)シクシク
202:いつでもどこでも名無しさん
07/04/23 22:55:41 0
>>200
なるほど。これで何とかいけそうです。
ありがとうございます。
簡単に文字を比較できる関数があれば便利ですが、こういう方法で出来るというのも面白いですね。
203:1
07/04/24 01:04:53 0
>>201
UKTenki使ってないけど
Download()じゃだめなん?
>>202
>>200のやり方は
Switch()の仕組みを理解するのに良いと思って。
あと、普通のIf()風に、こうもできるよ
x = ActiveProcess()
Switch( 1 )
Case( x eq "pimg.exe" )
Message( x )
Case( x eq "fexplore.exe" )
Message( x )
EndSwitch
204:いつでもどこでも名無しさん
07/04/24 03:36:35 0
高速化サービスonだと2chカキコできないから、
on/offを自動化する手抜きスクリプト作って快適。
こーいうの簡単にできるからいいねー
205:いつでもどこでも名無しさん
07/04/24 03:40:07 0
あ、スマソzero3での話です。
206:いつでもどこでも名無しさん
07/04/24 20:06:43 0
>>203
Today画面に表示できないし
もしバイナリが弄れるのなら逆にmscrでUKTenkiのデータ作って
もっと細かい地域のとかできたりって考えたりw
ま~やりたいことはUKTenkiが拾ってきた詳細データを
ViewTextで表示させたいだけなんだけどね
それこそDownloadで拾ってきたものを編集して貼り付けろって話だけどw
でもそれだと見た目が可愛くないから嫌っw
207:1
07/04/26 22:11:02 0
JavaScriptもAppleScriptも
バイナリは弄れないからなぁ…
208:いつでもどこでも名無しさん
07/04/29 00:00:20 0
htmlをダウンロードしたのですがどうしても日本語が文字化けしてしまい
上手くダウンロードできません
文字コードの問題?
サイトはgooのお天気です
文字化けしなければrlTodayにお天気情報が表示できるのに
209:いつでもどこでも名無しさん
07/04/29 00:17:02 P
そうですか。
210:1
07/04/29 01:05:37 0
>>208
gooのお天気のリンク貼ってくれてないからわからないけど
まず、マニュアルにあるとおりUnicodeは使えないよ。
それ以外の文字コード変換は
>>52さんが貼ってくれたqkcが使える。
211:いつでもどこでも名無しさん
07/04/29 03:25:18 0
>>210
お~
情報有難う御座います
ってかmscr導入前にざっと読んでた時は
「コレはなんだろう?」程度にスルーしてました
お陰で文字列処理できるようになりました
後はレジストリに情報書き込んでrlTodayに表示させるだけですっ
212:いつでもどこでも名無しさん
07/04/29 20:11:13 0
rlTodayを利用してお天気情報をTodayに表示するスクリプト作りました
URLリンク(w-zero3.org)
…どんなもんでしょ
スクリーンショットも入ってます
213:1
07/04/30 03:11:08 0
>>212
rlToday使ってないから試せないけど乙。
なかなかの大作ですなw
文字列パターンマッチの苦手なMortScriptなわけだけど
根性でやってますな。俺と同じでw
214:いつでもどこでも名無しさん
07/04/30 10:19:46 0
>>213
そうなんですか?
逆にあちし自身がパターンマッチの知識を知らないから
特にそんな事意識もせずにやれましたよ^^;
根性でやっていることには変わりませんが
ベースとなる知識は違うようですね
で 他のHPでふと思ったのですが
mscrもBtoC(Basic to C コンパイラ)の様に
インタプリタ形式から実行形式に変換できるといいなぁなんて思ったり
将来的に出来るようになると良いですね
…趣向が変わっちゃうかな
215:いつでもどこでも名無しさん
07/04/30 11:20:18 0
そう言えば>>52のqkcはファイル名に2バイト文字が使えないみたいですね
変換できなかったよ
216:1
07/05/01 01:12:59 0
>>214
正規表現が使えないから
文字列処理は苦労する、つー話。
217:いつでもどこでも名無しさん
07/05/01 17:50:50 0
FormatTimeを使えば、
任意のUNIXタイムスタンプから時刻を取得出来るけど、
その逆は出来ませんか?
PHPのmktimeみたく、
時、分、秒、月、日、年を指定してUNIXタイムスタンプを生成する感じの。
自分で計算するしかないのかな。。
218:1
07/05/01 18:50:26 0
>>217
つ >>96
これに時分秒を自分で足して下さいw
219:172
07/05/01 22:30:35 0
休みなんでじっくり取り組んでみました。
ポッドキャストをダウンロードするスクリプトと
目覚ましスクリプトを分けて作ってます。
アップしてみましたがなんかまだまだ駄目でした。がんばって使えるようにします。
Notification Queueに何が溜まってるかは
URLリンク(bdriven.blog46.fc2.com)
のソフトで出来そうですが、MortScriptだけで出来ないかな…。
>>217
おんなじこと考えてた…。と思ったら>>96にあったのね。
220:1
07/05/02 04:10:24 0
>>219
Notification Queueの掃除は
>>31のやつでもできるよ
221:172
07/05/02 09:15:16 0
>>220
おお!ありがとうございます。
なんか動作がおかしいようなので、アップしたのは消しました。恥ずかしい…。
大きいファイル(5MBとか)をDownload()で落とすと固まります。
固まった後リセット以外に復旧方法が無い…。
ダウンローダーに頼んだほうが無難かもしれません。
222:172
07/05/02 10:06:31 0
Notification Queueにどんどん溜まってました…。反省。
RunAt()ではスクリプトに引数を渡すためにMortScript.exeとalarm.mscrを指定していたのに
RemoveNotifications()ではalarm.mscrだけ指定してました。
TaskManagerはなぜかツールバーのアイコンが表示されませんでしたが、
一番左が更新だと分かり何とか使えてます。
223:いつでもどこでも名無しさん
07/05/03 01:04:09 0
rlTodayのスキンファイル編集用スクリプト書いてみた
URLリンク(w-zero3.org)
正規表現を知らないあちしにとっては
mscrはどの辺が文字列操作苦手なんだろうという結果にw
それでもせめて大文字小文字区別なく検索できる方法もあると
よかったなぁと思う
224:いつでもどこでも名無しさん
07/05/04 05:02:28 0
>>223
早速便利に使わせて頂いてます!
それぞれのパーツを一括で移動できるの、すごい楽!
でも、ちょっとしたバグ発見したよ。
xy座標の数字を変えると、カレンダーの幅まで変わっちゃうんだよね。
カレンダーの幅、 rasterx="" rastery=""で指定するからさ。
そこらへん直してくれたら嬉しい。
225:たけたけ
07/05/04 14:23:47 hmChsLvY0
>>224
あーなるほど
それは盲点でした
というか作った本人実家に帰省中だからまったく使ってなかったりします^^;
判定を"x="から" x="に変えればよさげかな
自宅に戻ったら修正しておきます
とりあえず276,522,528行目の"x=","y="をそれぞれ" x="," y="にすればよさげです
…多分w
というよりあの説明でちゃんと利用できる人がいてびっくりw
226:たけたけ
07/05/04 14:52:36 hmChsLvY0
つうか今見たらReadmeの説明間違えてる…
"<--/section-->""<--section/-->"じゃなくて
"<!--/section-->""<!--section/-->"でしたね^^;
それも直さないとだ
間違った説明でもなお利用できるとは…更にびっくり
227:224
07/05/06 12:06:18 0
>>たけたけ
レスに従ってスクリプト修正して使ってみました。
とりあえずダイジョブそう。さんくす!
お天気スクリプトも使わせてもらってます。
んで、これはバグじゃないんだけど、今日の天気がちゃんと
表示されないから直接goo見てみたら、
「雨 時々 止む」
だったw 止むってwww
ちょっとググってみたら、gooの天気表示はtenki.jpの表記に
従ってるみたいで、これが一覧。
URLリンク(www.tenki.jp)
とりあえず、止む=くもりに差し替えるようにしてしのいだけど、
めちゃくちゃ種類あるよw
228:たけたけ
07/05/06 13:05:48 0
>>227
へ~そんなに種類あるんだ~
どれどれ…見てみますか
…閲覧中…
ナニー!?∑(;゚□゚)yヾ ポロッ
((((_ _|||))))ドヨーン
後でこのHPからテーブル作成するスクリプト作成してアップします
o( _ _ )o~† パタッ
ついでに画像もDLして再利用できるようにしておきます
そうすれば画像ファイル用意しなくて済むしw
同梱じゃなくて各自が個人利用目的で再利用するなら問題無いっしょ
う~
rlTodayEditorのバグ修正よりこっち先にやらにゃあ
とりあえず他のバグも含めた修正版仮アップしておくか…
報告有難う
229:たけたけ
07/05/06 14:41:33 0
つう訳でコード吸い出して見たけど思ったほど多くないや
最初「450?!300種以上あるって事か?」とか思ったけど
実際には122種類だった
お天気情報表示の方は割りと大きな改変にならざるを得ないので
夜になりそう--;
つうかスキン修正もあるのか
レジストリもどうにかせにゃ
うう…次のお天気情報更新までには上げたいな
P.S.「くもり海上海岸は霧か霧雨」とかあるしw
230:1
07/05/06 16:46:47 0
乙です。
今なんとなくgooお天気のページのHTMLソース眺めてたんだけど
各天気マークの画像の名前
img src="/weather/img/s/big/100.gif"
の3桁の番号が、>>227の天気コードと一致してるみたいだね
てことはこの番号だけ読み出してkeyにしたりして…
外野の発言スマソw
231:たけたけ
07/05/06 17:28:35 0
>>230
いえいえ外野だなんてそんな
助言有難うございます
うん 考えることは同じようですねw
テーブルの内容を
お天気コード,コードに対応するお天気の内容,アイコン番号
という風にしてありますので
後は指摘されたイメージの名前から検索するというものになっています
232:たけたけ
07/05/06 17:34:24 0
って言うかとんでもないバグ発見したのを書きに来たんだっけ
rlTodayEditorで入子状態のセクションをコピーすると
同名セクションが出来上がっちゃうバグがあるんですよ
(*-゛-)ウーン・・
後で修正しなきゃ
一応お天気のスクリプトは完成したんだけど
サンプルスキンファイルの方が追い付いてないよ
*o_ _)oバタッ
233:たけたけ
07/05/06 17:55:39 0
なんかすげ~連投しているような気が…
Choiceの項目数の上限って49itemかな?
それ以上表示されないような気がするんですけど
234:1
07/05/06 18:42:29 0
>>233
そうみたいだね
ただこれはシステムダイアログ流用してるみたいだから
システムの上限かも知れん。
配列はもちろんそれ以上格納できる。
#code
i = 1
Repeat( 100 )
array[i] = i
i = i + 1
EndRepeat
x = Choice( "", "", "", "", array)
#→49まで表示
Message( array[100] )
#→"100"を表示
235:たけたけ
07/05/06 23:13:27 0
>>227
アップしました~
疲れた~~~~~~~(;_ _)O パタ...
何が疲れたってスクリプトよりスキン修正が疲れたよ
rlTodayEditorのバグもぼろぼろ出てくるし--;
そんな訳で今までのスキンが使えなくなってしまいました
多少の修正が必要です
また利用する画像ファイルもめっちゃ増えましたw
詳しくはReadme.txt参照の事