941 :
1:2008/01/12(土) 02:35:44 ID:???0
>>941 ウィンドウ名は固定で「W-ZERO3メール」です。
943 :
1:2008/01/12(土) 06:04:35 ID:???0
>>942 ですよねー
-----------
>>941のまちがい
× CallScriptFunction( "\fullpath\to\MatchRep.mscr", 出力用変数, マッチ検索対象文字列, マッチパターン )
のように呼び出して使って下さい。
○CallScriptFunction( "\fullpath\to\MatchRep41.mscr", 出力用変数, マッチ検索対象文字列, マッチパターン )
のように呼び出して使って下さい。
944 :
いつでもどこでも名無しさん:2008/01/12(土) 10:10:40 ID:ws5bYthu0
1さんいつもありがとう!
>>940 いったん終了させる処理を頭に入れたらどう?(強引)
それか、起動済みの場合はビープ鳴らして終了(ユーザーに終了を促す)するとか。
>>944 強引終了処理入れてみました。
なんとかうまくいっているようです。
#もし立ち上がってたら終了処理
If(WndExists("W-ZERO3メール"))
Close("W-ZERO3メール")
Else
EndIf
Run("\Windows\スタート メニュー\W-ZERO3 メール.lnk"),
WaitForActive("W-ZERO3メール",10000)
#ソフトキーから手書きメール作成を選択
SendSpecial("LeftSoft")
SendSpecial("down")
SendSpecial("cr")
Sleep(2000)
#あて先にメルアド挿入
SetClipText( "xxxxxx@xxxxx" )
SendCtrlKey("v")
この手のスクリプトをUIのエミュレートじゃなくて,直接WM_COMMANDを
投げちゃうっていうのはできないのかな?
PostMessage("W-ZERO3メール", 273, 11135, 0)
# 273がWM_COMMAND
ades持ってないから動作するかは分からないけど.
>>946 何ですかこれは!!!
立ち上がっていようといなかろうと問題なしになりました…。
助言を下さった皆さんありがとうございました。これにて完成ですw
Run("\Windows\スタート メニュー\W-ZERO3 メール.lnk"),
WaitForActive("W-ZERO3メール",10000)
#手書きメール作成画面立ち上げ
PostMessage("W-ZERO3メール", 273, 11135, 0)
#あて先にメルアド挿入
SetClipText( "xxxxxx@xxxxx" )
SendCtrlKey("v")
>>946 同じくMortScriptしか知らない俺も
何ですかこれは、ですね。
もしかしてうまく使えば特定のウィンドゥに
コマンドを投げれるってことですか?
ぜひご教示を!
それと比べたらずいぶんしょぼいネタだけど
「2++」がSendCommandで制御できますね。
SendCommand( "2++", 20013 )
みたいな感じで。
こういうのの一覧とかあればいいなぁ。
ところで1さん、もうすぐ次スレですが
このスレのHTML化とか考えられてます?
すっごい財産なんで何とか残してほしいなぁと。
949 :
1:2008/01/13(日) 06:03:05 ID:???0
9.7.13 さらに高度なコマンド/メッセージを送る(SendCommand, SendMessage, PostMessage)
に関しては、情報さえあればいろいろ使い出があると思うんだけど
なにせmsdnのページがMacで見るとどんなブラウザでもぐしゃぐしゃで。。
なんでああなんだろうね。いじめか。。
>>948 HTML化はわかんないけど、最低でもdatファイルの保存&うpはするつもりです。
テンプレ案などあったらみなさんよろしくお願いします。
以前に、定型メイルのサクサク送信スクリプトについて質問した者です。
結局、常用のW-ZERO3メールの制御がウマくできず、送信のみQMAILを使っています。
run \QMAIL\Q3U.exe, -c "\QMAIL\雛形\住吉町.txt" -q
run \QMAIL\Q3U.exe, -g -q
しかし、W-ZERO3メールと挙動が噛み合わないのか、
ダイアルアップが正常に行われなかったり、送信失敗後に固まったりと、
いまだ「サクサク送信」には至りません。
できればW-ZERO3メールで、hoge 宛に 本文 xxx の定型メイルを作成後、
ただちに送信したいのですが、お知恵を拝借できませんでしょうか。
(
>>940さんもお困りだったとおり、stmail.exe の起動中の制御がウマくできずにいます)
(続き)
Run("\Windows\stmail.exe"),
WaitForActive("W-ZERO3メール",5000)
# 左ソフトキー押下:[メッセージ作成]※
SendSpecial("LeftSoft")
# アドレス入力
SetClipText( "hoge" )
SendCtrlKey("v")
# 本文までフォーカス移動
SendSpecial("down")
SendSpecial("down")
SendSpecial("down")
SendSpecial("down")
SendSpecial("down")
# 本文入力
SetClipText( "xxx" )
SendCtrlKey("v")
# 左ソフトキー押下:[送信]※
SendSpecial("LeftSoft")
※下のパッチにより、左ソフトキーの割り当てを変えています。
ttp://lark-andante.seesaa.net/article/78770806.html PostMessageとか、WM_COMMANDとか、魔法みたいなやつご教示くださいで厨(><)
952 :
いつでもどこでも名無しさん:2008/01/18(金) 10:22:35 ID:Vj1D9RCq0
>>950 nPOPはダメかなぁ
「送信箱」にあるメールを再送または
再編集して送信できるけど。
流れを読まずに、KLChgExec用のスクリプトを貼ってみる。
画面Off系
単純Off
ToggleDisplay(0)
画面Offの後CPU負荷の低い「実行中のプログラム」へ移動
ToggleDisplay(0)
Run( "\windows\ctlpnl.exe" ," cplmain.cpl,4,2 " )
画面Offの後、20秒たっても画面が同じならSuspend
(いきなりSuspendすることでの問題回避。たぶん改良の余地あり)
ToggleDisplay(0)
X = ActiveWindow
Sleep(20000)
y = WndActive( x )
If( y = 1 )
#以下の行は適当なサスペンドアプリを指定
Disconnect
Run("\Program Files\TaskMgr.exe" , "/s")
Else
EndIf
上のコメントの位置がちょいおかしかった。
画面On系
単純On
ToggleDisplay(1)
キーロック設定時に画面Onの後、Todayに移動する問題の対処
x = ActiveWindow()
ToggleDisplay(1)
show( x )
逆に、画面Onの後、必ずTodayに移動
SendWin
SendWin
ToggleDisplay(1)
>>955 >逆に、画面Onの後、必ずTodayに移動
>SendWin
>SendWin
>ToggleDisplay(1)
それだとキーカスタマイズしてた場合
うまくいかない可能性があるから
Show( "Desktop" )
ToggleDisplay(1)
の方がよくね?
957 :
946:2008/01/18(金) 21:44:42 ID:???0
ボケてました.SendCommandなんてあったのね...
> PostMessage("W-ZERO3メール", 273, 11135, 0)
は SendCommand("W-ZERO3メール", 11135) と同じです.
メニューのコマンドIDが知りたい場合は,母艦にexeを持っていって
ResourceHackerで覗くか,DumpRCを使うかが良いと思います
ダイアログ・テキストボックスの練習も兼ねて、URLDL用のDLリスト編集スクリプト。
Elseって省略出来たのか。
機能としてはURLDL.txtの内容をエディットするだけ。
それだけではシンプル過ぎるので、URLDL.exeが存在しなければ起動する機能付き。
起動する度に
http://が行末に付くのは、エディットで改行が出来ないため。
#以下に""で囲ってURLDL.exeとURL.txtのパスを入れて下さい。#
exe = "\Program Files\URLDL\URLDL.exe"
txt = "\Program Files\URLDL\URLDL.txt"
a = ProcExists( "URLDL.EXE" )
If( a = 0 )
b = Question( "起動しますか?" , "URLDL.EXEが存在しません" , "YesNo" )
If( b = 1 )
Run( exe )
EndIf
EndIf
WriteFile( txt , "^NL^
http://" , 1 )
x = ReadFile( txt )
y = Input( "URLを追加・編集できます" , "URL.txt" , 0 , 1 , x )
WriteFile( txt , y , 0 )
>>956 実はTodayのウィンドウ名や実行ファイルが分からずやむなしだったので、
そっちのほうが当然良いです。
Suspendは日常的な使用に合った方法が思いつかない。
Suspendさせたい人はKeyLockSuspender併用か・・・。
で、SleepMessage()を絡めようとしたら変な仕様だったのですが、
どなたか宜しければSleepMessage()を有効に使ったサンプルを教えて下さいな。
なんか俺が連投気味でアレなんですがいいのかどうか。
>>960 x = Input( "秒数をどうぞ" , "n秒後に振動します" , 1,0,"10" )
SleepMessage( x , "カウントダウン中" , "n秒後に振動します" , 1)
Vibrate(200)
動かしてみないと面白さが伝わりにくいんで、動かしてほしいんだが、
これでカウントダウン中にダイアログのボタンを押すとカウントダウンを中止するんだよ。
で、次の行に移動する(・・・)
そこまではまだ当たり前なんだが、カウントダウンを中止した場合、という値を返さない。
IfやSubに分岐できない。あれ?どうすりゃいいんだ?どうしようもないじゃん・・・ていう。
あと、Input()ダイアログでキャンセルすると、変数に""というかNullが格納されるんだな。
>>958の下二行目は
y = Input( "URLを追加・編集できます。キャンセルで全消去" , "URLDL.txt" , 0 , 1 , x )
に修正させて下さい。
たしかに連投気味でアレなんですがいいのかどうかと思ったから聞いてみたんだが
全部当たり前じゃん
関数じゃないものが返り値を返すはずないし
残りレス数も少ないんだから
もういっかいマニュアルをよく読んで
次スレになってから来た方がいいんじゃないかな
あとTodayのウィンドウ名も知らない初心者なんだったら
何をしたいのかもう少し具体的に書いたほうがいいとおもうよ
いや、「面白かった」という話で、「面白いよね?」と言ってるんだが・・・
大体、お前の突っ込みはおかしい。
「タイトルもMortScriptで取得-表示できるだろ。やり方を考えろ低脳。」
と言うなら分かるが、知ってる知らないの問題か?
これはイタい
>>963 いや面白くもないし変でもないよ
変なのはおまえだよって言ってるの
じゃあはっきりこう言えばわかる?
Elseの省略もウィンドウ名の取得方法も知らないおまえは
MortScriptだけじゃなくどんなスクリプトも書いたことがない初心者のくせに
マニュアルも過去ログもろくに読んでないことが見え見えだから
もうすこし謙虚に何をしたいのか具体的に書いて教えを乞うか
もういっかいマニュアルをよく読みつつ
半年ROMってから来た方がいいんじゃないかな
「9.7.6 ウィンドウがアクティブかどうかチェックする(WndActive)
…たとえば、Today画面(タイトルは「Desktop」)がアクティブな時…」
http://home.att.ne.jp/wave/deox_pop/mortscript.html#9.7.6
>>965 わかりました先輩。ご高説痛み入ります。反省しきりです。
では、あらためてお伺いします。
・カウントダウンを中断した場合処理を行わないようにするには?
もう一つは簡単なものを。
・カメラのウィンドウのタイトルは何でしょうか?
#
>>965以外の方は回答しないで下さい。では、お願いします。
>>966 カウントダウン云々じゃなくて、一定秒数経過する以前になにか入力があるか無いかで
処理を変更する分岐がしたいんじゃないの?
俺はマニュアルをよく読んでるから簡単に答えられるけど
>>965じゃないから答えませんw
俺は965だけど
「カメラのウィンドウのタイトル」って表現があいまいで
初心者まるだしのくせに偉そうなゆとりなので答えませんw
みんな優しいな。
希代稀に見る良スレの残りが30ぐらいだというのに
平気で汚す馬鹿
>>966は消えろ
ってはっきり言えばいいのに。
1さんのおかげでMortScriptの裾野が広がったのはとても良いことだとおもいますが、
このスレに限らず、未熟で無知な人の傍若無人な振舞いは目に余ります。
このスレの
>>1に書いてある、
>謙虚に質問しつつ教えてもらいましょう
という一節は、ぜひ次スレのテンプレにも加えてほしいです。
>>969 煙草が切れてたんでカッとなってやった。今では反省している。
そもそもの話は、SleepMessageはどう使うのが良いかってことだったんだが、
・・・喧嘩を売られたんだから仕方無い。
ここで俺が引いたらMortScriptを書いてみよう、掲示板に上げてみようって奴は居なくなる。
そう思ってね。
なら1さんに裁定を仰ぎましょうか。俺は消えるべきか。
>>971 >ここで俺が引いたらMortScriptを書いてみよう、掲示板に上げてみようって奴は居なくなる。
そんなことはたぶんない。あんたが引いても今まで通りだと思う。
それに何か勘違いしてないか?
962は全然喧嘩なんか売ってないぞ。最初に喧嘩腰だったのはあんたの方。
「初心者」って言葉にムカついたのかもしれないが。
あとWindows名を取得するソフトなんかいくらでもある。
そもそもスクリプトで簡単に書けるじゃないか。
Message(ActiveWindow())
みたいなのをどっかのボタンに割り当てておけばいいだけ。
というか962がいうように、もう一回マニュアルを隅から隅まで目を通した方がいい。
973 :
972:2008/01/20(日) 06:30:13 ID:???0
↑いっこ訂正。
Windows名じゃなくてWindow名ね
>>959はしのごの言う前に
>>956にひとことお礼を言うべきだったな
> そっちのほうが当然良いです。
じゃなくてさ。
「知らないんだからしょうがない!」
「自分の思うような機能じゃないものは、変な仕様!」
っていうおまえの態度が問題なんじゃね?
背伸びしてみたい気持ちもわかるが
対等に言い返そうとするのはおまえにはまだ早い。
そいつもキーカスタマイズしてるとSendKeyが通らないとか、
すげぇ大概なこと言ってるぞ。
おまいら大概にしとけよ
>>975 956だが、他は知らないがSortInchKeyでWinキーをカスタマイズしたら
うまく通らない。
978 :
1:2008/01/20(日) 23:28:56 ID:???0
SleepMessage() は
>>561の
「2ちゃんの指定スレに新着レスがあったら知らせるスクリプト」
の通知用として使ってます。
このスクリプトを俺は、定時巡回スクリプトの途中で呼び出して使ってるので、
何秒か経ったら勝手に消えて次へ進んでもらわないと困るので。
さて、俺は「裁定」とかはしません。が、見ていて思ったことを以下に箇条書きにしておきます。
・マニュアルはいっしょうけんめい訳したので、熟読してもらえたら俺はうれしいし、
最大限役に立ててもらえたらうれしい。
・コマンドとして用意したものが「戻り値を返さないから変な仕様」と言われたら、
Mortさんはたぶんかなしい。
・Choice()とは別に、いわば「SleepQuestion()」みたいな、小ボックスの手軽な関数があってもいい、
とは思う。
・みんなが気持ちよく教えたり教わったりできたら、スレを立てた俺はうれしい。
・前にも書いたけど、仕様に対する不満や驚きは、好みや経験値によって人それぞれなので、
ここに書いても必ずしも他人の共感が得られるとは限らない。
今有る機能をよく理解して最大限生かす工夫を発表し合えたら、スレは楽しい。
以上です。
久々に「正しい」と思えるレスを見た。
分かりました。このスレにコードを上げてまずいところを見て貰おうとか、
書くことの考え方を学ぼうと思った自分の間違いです。
でも一つだけ。マニュアルを読んでいない訳が無いですよ。
1さんの訳されたマニュアルはもう何度開いたか分からないです。
読んで、書いて、動かして、ようやく読めてきた所です。
というかマニュアル/リファレンスなしで書けるわけがないです。
このスレの最初の方でUnixTimeが使えるのがいい、と言っていたのも、
当時はなんのこっちゃでしたが今なら分かります。以下、自問自答ですが。
x = Input( "秒数をセットして下さい" , "カウント" , 1 , 0 , "10" )
y = TimeStamp() + x
SleepMessage( x ,"カウント中", "カウント" , 1 )
z = y - Timestamp()
If( z = 0 )
Vibrate(200)
EndIf
これで望みの動作。分岐も仕込めます。
(そのまま通知に使うというのも納得しました。)
ちらちらROMを始めたのが300過ぎくらいで、
最初にここに書いたのが
>>631ですが、そこでは使っても理解していなかったものが、
ようやく機会を得て取り組んで、体系が理解でき、いくらか自由を得た気持ちで、
そろそろ恩返しの一つも出来るかと思ったのですが、残念です。
では、一礼して退くとします。お世話になりました。
・・・なんじゃそら。正直ガックリきた。
あんたは煽られてるとか思ってるのかもしれないけど
実はみんなそれなりに教えてくれてる。
ここの住人は赤ペン先生じゃないんだから
マニュアルを理解していないと思われたから
それを指摘しただけじゃん。
俺は972だけど、Window名の取得について書いたのに一言も触れてない。
あんた学ぼうと思ったとか書いてるけど
教えても何のリアクションも礼もないじゃん。
974のいう通り、何で礼をいわないの?
まぁ礼をいわれるほどのこと書いてるわけじゃないけど
ちょっとでもスクリプトを理解してほしい
知識を共有していきたいと思って書いてるのに。
ひとり合点で完結してるけど、そんなんじゃ誰も教えてくれないよ。
長文スマン。あまりにも悲しくてつい。消えます。
982 :
1:2008/01/21(月) 02:46:17 ID:???0
誰も消えなくていいんじゃね?
>>980 「残念です」と言われると俺も残念なんですが。
あえてあなたへのレスアンカーを付けなかった意味
(=「裁定」でもないし個人に対する否定/肯定でもない。むしろみんなに見てほしい)
を読み取ってほしかった。
「もう来ません」宣言に見えるけど、このスレのログは残すので、いつか読んでもらえると思って書きます。
あなたの
>>980の工夫は、まさしく俺の書いた「今有る機能をよく理解して最大限生かす工夫」
だと思います。現在時刻にカウントダウン秒数を加算して処理することにより、
カウントダウン完了以前にスクリプトが再開したかしないかによって分岐する。
良いアイディアだと思います。そう思ったから、以下を長々書きます。
(つづく)
983 :
1:2008/01/21(月) 02:46:50 ID:???0
とはいえ、
>>954-955を読んだ時点で、あなたが何をしたいのか、よく見えなかったのも事実です。
「KLChgExec」を俺は使っていないので、ググって調べるまで何をするアプリなのかわかりませんでしたし。
>>980を読んだ今はわかります。キーロック解除して20秒操作が無ければサスペンドする、
というのが狙いですね?
俺はこのスレを立てた奴ってだけで、べつにここの「主」でもないし、ここは俺のブログでもない。
だから、全ての質問に俺が答える義務は無い。
でも、質問にはできれば答えたいんですよ(ad[es]持ってないんで最近限界を感じるが)。
俺自身、このスレの最初のほうで、
>>3さんにいろいろ教えてもらったし。
>>1に書いた「いろいろ教えてもらいましょう」は、「まずは俺が」教えてもらいますよ、
という意味だったんです。
たぶんみんな、自分がアドバイス出来ることは極力したい、って思ってると思います。
需要に合ったアイディアをひねり出すのも、スクリプティングの面白さだしね。
だが質問者の狙いがはっきりわからないと、答えられない。
>>962の「何をしたいのかもう少し具体的に」は、そのへんのジレンマの表現だったんじゃないかな?
その前の1行は少々“2ちゃん的”だったかと思うけどねw
「キーロック解除して20秒操作が無ければサスペンドするスクリプトを考えているんだけど」
って書いてもらえれば、俺だけじゃなくみんなから、いろんなアイディアが出たんじゃないか
と思います。
MortScriptのPowerOffも、実は電源ボタン長押しじゃなく、サスペンド相当だし。
Choiceの「タイムアウト」オプションを使う手もあるし。
20秒後ならRunAt()でNotification Queueを登録できるから(
>>10参照)、
サスペンドプロセスを一旦登録しておいて、
SleepMessage後にRemoveNotificationsを仕込むとか(20秒以後なら手後れ)。
俺の想像力が足りなかったと言われればそれまでだけど、
こういったアイディアを提示出来なかったことが残念です。
984 :
1:2008/01/21(月) 02:58:02 ID:???0
ただ残念がっていても生産的じゃないので、
RunAtとRemoveNotificationsを使ったアイディアを貼っときます。
#20秒間、SleepMessageの操作が無ければサスペンドするスクリプト
#
#「PowerOff.mscr」は、「PowerOff」とただ1行書いてあるスクリプト
#このスクリプトと同じフォルダに存在する前提
t = TimeStamp()
proc = SystemPath( "ScriptPath" ) \ "PowerOff.mscr"
RunAt( t + 20, proc )
SleepMessage( 20, "<message>", "<title>", 1 )
RemoveNotifications( proc )
#End of script#############
1さん乙です。
981だが自分の度量の狭さに泣けてくるw てかあなたが1で本当によかった。
980を越えたので1さん、次スレお願いします。
次スレもあなたが1じゃないとダメだ。
986 :
1:2008/01/21(月) 19:53:00 ID:???0
987 :
985:2008/01/21(月) 21:11:59 ID:???0
988 :
1:2008/01/21(月) 21:27:15 ID:???0
>>987 サンクスです!
2ゲットしておきました
いちおつー!すみませんこれからお世話になると思うのではらせて貰いました〜
(*´∀`)
おぉ!!array[2]になってるんだね