以前質問させていただいた紅茶です。
Memoにスクリプトを書いて実行ボタンを押すと、その通りに動作してくれるような、スクリプト機能を(マクロ?)載せたいと思っているのですが、
実際どのようなソースを書けばいいのか判りません。
実装しようと思っている関数や構文は、
・キーボードの入力
・マウスの移動、クリック
・ウェイト
・変数(出来れば配列)、定数(仮想キーコード)
・forやif文による条件分岐と繰り返し
ぐらいにしようと思っていますので、キーストロークを使う方法でも(変数が使えない)、DMonkeyでも(キーストロークを扱う命令を自分で作らないといけない、無駄にソースが多くなる)上手くいきません・・・
何かいいサンプルは無いでしょうか・・・?
マクロっていうのは、それ自体が新しい言語ですよ。
構文解析して、パーサつくって、実装しなくちゃ。
とてもBBSで答えられる質問内容とは思えません。
つっかさん、レスありがうございます。
やはり、そう簡単に出来るような物ではないですよね・・・
DMonkeyのソースみて独学しようかとも思ったんですけど、
四則演算の解析木の時点で挫折してしまいました。(至極ヘタレですね)
スクリプトではなく、別の方法でやることにしてみます。
一応、解決にしておきます。
こんばんは。ちょっとお久しぶりですm(__)m
さて、つっかさんの言うとおりです。
DMonkeyみたいな既存の組込用スクリプトじゃヤダというのなら、パースして自分で実装しなきゃいけません。
(まあ、DMonkeyがいやならPPAと言う組込用スクリプト言語もありますが、どっちがいいかわかりません。DMonkeyは実装したことないし)
まあ、アドバイスを挙げるなら
まず読み込む前に、改行とタブと、意味のないスペース(判断が難しそうですが)は消した方がよいかもです。
スクリプトの仕様で改行をどうするかによりますが、
どんな仕様にしろ、書き方なんていろいろありますから、その辺は許容できるような仕様が望ましいですね。
定数→数値の変換には、IdentToIntなんて便利なものがありますね。
(応用次第で変数→数値もできるかもしれない)
まあ、膨大な定数を一気にこれ用に直すのはかなり面倒ですけど、
JmEditorとかのキーマクロ(Delphiのじゃ保存できないから使いづらいかも)や、正規表現置き換えを活用して、他のユニットからとってくれば楽でしょう。
(ちなみにうちにWM定数→数値の定数があります。参考程度に見ますか?)
キーボードの入力やら、云々まで組み込むなんて言うのなら、かなり広範囲にわたるスクリプトになりそうですが、
考え方として、STYLENOTEのSNスクリプトなんか、参考になるかもしれませんね。
Delphi本体のToolsAPIをモデルにしてみるのもいい方法かと。
そうそう、日本語プログラミング言語の"ひまわり"って、
確かソースが公開されてましたね(しかもDelphi製)。
雑務処理用言語なだけあって、いろいろそろってるようですので、
参考にしてみるのも、いいかもしれません。
あとは便利どころってことで、
きりいさんが公開している、StrTok,StrRTok関数とかも使えそうですね。
いちいち関数の引数を、StringListに展開しているような暇は、さすがになさそうですし。
以上、アドバイスでした。スクリプト言語をくむってのは、何かと役に立つと思います。がんばってください。
--------------
■ 以下リンクです
JmEditor http://www.hi-ho.ne.jp/jun_miura/jmedit.htm
STYLENOTE http://www.wht.mmtr.or.jp/~riki/style/
ひまわり http://hima.chu.jp/
きりいさんのHP http://member.nifty.ne.jp/kirikiri/
DMonkeyはECMAScript準拠(JavaScriptライク)、PPAは簡易パスカル(Delphiみたい)です。
ほかにも、VBScript, JScriptもありますよ。これはWindows標準のものを使います。
COM化してやれば、VBScriptから自分のアプリを操作できます。
発想の転換ですな。
> アプリがスクリプトを解釈
こっちは難しいですが、
> スクリプトがアプリの用意したAPIを呼び出す
こっちは比較的簡単ですから。
たかみちえさん、にしのさん、レスありがとうございます。
>キーボードの入力やら、云々まで組み込むなんて言うのなら、かなり広範囲に ...
考えている仕様は、上で示した物の他に、
・文字列型無し
・表示はデバッグ程度(txtを吐く)
で、あまり複雑な処理はせずに、キーボードやマウスの操作の簡易マクロ化という感じにしようと思っています。
定数の数もそう多くしようとは思っていませんので、定数辺りは楽かもしれません。
アドバイスを参考にしながら頑張ってみようと思います。
どうもありがとうございました。
ツイート | ![]() |