【array[1] = 】MortScript at MOBILE
[2ch|▼Menu]
1:1
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はカードが差さってないとダイヤルアップを実行しなかったけど、今度
こそカード検出が問題になるかな。


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

5394日前に更新/359 KB
担当:undef