秀丸メール、Hidemaru Explorerとの連携にNo.06080
DarkMark さん 09/04/01 14:29
 
何年ぶりかの投稿です。
DarkMarkです。

WebベースのメールサーバーのHTMLを解析して、
文字列を取り出し、
それをメールで転送しようと考えています。

1.Hidemaru Explorerのマクロに関して
まず、Hidemaru Explorerで、Webベースのメールサーバーに
アクセスする際に、フォームの入力をするのですが、
これをマクロでやらせる方法がわかりません。
何か参考になるものはありますでしょうか。
(手動でIDを入力してからのログインや、
IEとWSHを使った自動ログインには成功しています。)

2.秀丸メール
次に受け取ったテキストを秀丸で加工することは
できると思っているので、そのデータを
秀丸メールで送信するためのマクロを作れば、
目的のことはできるかと考えています。
この送信の方法がMacroのヘルプからは見つける
ことができませんでした。
参考になる資料はありますか?

3.秀丸を終了しても、マクロを終了させない方法
定期的な読み出しをしたいので、PCを起動させたら、
秀丸の状態にかかわらず、一定期間でWebのメールサーバーへ
新着メールを確認しに行くようにさせたいのですが、
秀丸の状態にかかわらずにマクロを起動させることは
可能でしょうか?
(たぶん、常駐秀丸の状態をキープさせておけば
よいのでしょうけど。)

[ ]
RE:06080 秀丸メール、Hidemaru ExplorerNo.06081
Iranoan さん 09/04/01 14:58
 
 DarkMark さん今日は、Iranoan です。
 解る範囲でお答えします。(間違いが含まれているかもしれません(^^;)

> 1.Hidemaru Explorerのマクロに関して
> まず、Hidemaru Explorerで、Webベースのメールサーバーに
> アクセスする際に、フォームの入力をするのですが、
 多分これは出来ないと思います。
 そう考えた理由は、秀丸エディタにはフォームを操作する文などは用意され
ていませんし、Hidemaru Explorer にもマクロから操作可能な DLL 関数は用
意されてなさそうだからです。
 例外として、
> IEとWSHを使った自動ログインには成功しています。)
ということなので、この WSH スクリプトをマクロから実行すれば出来るかも
しれません。

> 2.秀丸メール
<snip>
> この送信の方法がMacroのヘルプからは見つける
> ことができませんでした。
 どのヘルプを見たのでしょう?
 秀丸メールのマクロ・ヘルプ (TkInfo.chm) に、幾つか送信関係の DLL 関
数が載っています。dllfunc(), dllfuncstr() 関数の使い方がわかれば、あと
は簡単かと。
 ##不明な点は、別途 http://www.maruo.co.jp/turukame/2/ 辺りで聞くと良
いかも。

> 3.秀丸を終了しても、マクロを終了させない方法
 当然御存知のことと思いますが、厳密な意味では無理です。「OS を起動し
ないで、アプリケーションを使えませんか?」と同じことなので(^^)。
> (たぶん、常駐秀丸の状態をキープさせておけば
> よいのでしょうけど。)
 文面から察すると、秀丸のウィンドウを隠しておければ良いのでしょうか?
それなら、起動オプション h を使うか、showwindow 文を使えば良いと思いま
す。

[ ]
RE:06080 秀丸メール、Hidemaru ExplorerNo.06082
きいろいまふらあ さん 09/04/01 15:32
 
こんにちは。きいろいまふらあと申します。

>この送信の方法がMacroのヘルプからは見つける
>ことができませんでした。

秀丸「メール」のマクロヘルプで「送受信関係」のところに色々あります。

>秀丸の状態にかかわらずにマクロを起動させることは
>可能でしょうか?
>(たぶん、常駐秀丸の状態をキープさせておけば
>よいのでしょうけど。)

直球の回答としては、Windowsのタスクスケジューラ(あるいは同等のソフトウ
ェア)を使って、WSHのスクリプトなり秀丸エディタ(のマクロ)なり秀丸メー
ル(のマクロ)なりを呼び出すことができると思います。

あるいは、最終的に送信を秀丸メールでなさろうとしているようなので、秀丸
メールを常駐させ、適当なアカウントを定期受信させる設定にしておき、「受信
が一段落したとき」の自動起動マクロで1〜3の処理を実行させる、という手も
あると思います。

あと(なさろうとしていることと全く違ったら申し訳ありませんが)、例えば、
自分宛に(サーバに)届いているメールをチェックして、全部、あるいは条件に
合致する一部のメールの情報(Subjectとか本文とか)を、別のところ(例えば
携帯電話や職場のメールアドレス)に送信(転送)する、というような類の話な
ら、秀丸メールで定期受信して、受信した結果を上述の「受信が一段落したと
き」の自動起動マクロで解析し、送信するってこともできるかもしれないですね
(会議室でもそういう話をたまに見かけるように思います)。

[ ]
RE:06080 秀丸メール、Hidemaru ExplorerNo.06083
パブリッシャー担当 さん 09/04/01 16:01
 

 いつもお世話になっております。

>1.Hidemaru Explorerのマクロに関して
>まず、Hidemaru Explorerで、Webベースのメールサーバーに
>アクセスする際に、フォームの入力をするのですが、
>これをマクロでやらせる方法がわかりません。

 現在ベータテスト中のHidemarnet Explorer Ver4.05β3  から「入力フォーム
自動処理機能」という機能をサポートしていまので可能かもしれません。
 ただし、対象となるフォームがHidemarnet Explorer のテキストブラウザ上で
フォームダイアログを表示して入力を行って正常に処理できると言うことが前提
条件になります。

 詳細につきましては、Hidemarnet Explorer Ver4.05β3付属ヘルプファイルの
「Hidemarnet Explorer の便利な使い方」−「入力フォームの入力を自動で行う
方法」で確認してください。

 簡単なサンプルとして、秀丸エディタ上で選択したテキストをエキサイト翻訳
さんのサイトで翻訳するマクロを掲載させて頂いています。

[ ]
RE:06080 秀丸メール、Hidemaru ExplorerNo.06084
秀丸担当 さん 09/04/01 18:01
 

>3.秀丸を終了しても、マクロを終了させない方法

この点について回答させていただくと、秀丸を終了してもマクロを終了させない、
といったことはできないです。

または、何らかの方法で一定間隔で
hidemaru.exe /xfilaname.mac
を起動するといったことも考えられると思いますが、マクロ実行は全ての秀丸エ
ディタで共通で、アクティブウィンドウが切り替わったりする必要があるので、
秀丸エディタのマクロはバックグラウンドで実行するといったようなことには向
いていないと思います。

[ ]
RE:06083 秀丸メール、Hidemaru ExplorerNo.06085
DarkMark さん 09/04/01 18:26
 
皆さん、早速の回答ありがとうございます。
本来、皆さんにお礼を言う必要があるのですが、
スレッドをまとめる意味で、パブリッシャー担当さんの
コメントに返信します。

1.フォームの入力に関して
最新版のベータならできるようですね。
トライしてみます。

2.送信のマクロ
 秀丸メールのマクロ・ヘルプ (TkInfo.chm) に載っているのですね。確認してみま
す。(すみません、秀丸のヘルプを見ていました。)

3.秀丸を終了しても、マクロを終了させない方法
やはりできないようですね。
自分の書き方が悪くちょっと誤解させたみたいですが、
完全に動作メモリやスレッドを分けて、他の秀丸の操作に
かかわらず独立して動作できればと考えていました。

複数のアプリケーションを連携させるか、
アプリを自分で作ることを考えると、
Webブラウザ、エディタ(文書解析)、メール送信ができる
秀丸シリーズを使えれば便利だと思ったのですが・・・

皆さんに教えていただいた内容で、ちょっとがんばってみます。
成功したら発表させていただきます。

[ ]
RE:06085 秀丸メール、Hidemaru ExplorerNo.06086
DarkMark さん 09/04/01 22:44
 
>1.フォームの入力に関して
>最新版のベータならできるようですね。
>トライしてみます。

自動ログインして、メールのデータを取るところまで着ました。
ただ、Webブラウズモードになっているため、URLを文字列として
とることができません。

Webブラウズモードをソースモードにする方法として、
メニューを開いてソースモードにするマクロを書くことで
対応はできそうですが、そんなことをしなくても、
モードが切り替えられないですか?
(不安定要素を除きたいので)

[ ]
RE:06086 秀丸メール、Hidemaru ExplorerNo.06087
パブリッシャー担当 さん 09/04/02 10:45
 

 いつもお世話になっております。

>Webブラウズモードをソースモードにする方法として、
>メニューを開いてソースモードにするマクロを書くことで
>対応はできそうですが、そんなことをしなくても、
>モードが切り替えられないですか?
>(不安定要素を除きたいので)

 ブラウズモードでなければフォームの自動処理を行うことができませんので難
しいかと思います。
 秀丸エディタの「Hidemarnet Explorer を使う場合の詳細」ダイアログの
「Webブラウズモード」項目の「リンク先を番号で表示して下の方にまとめる」
と言うオプションを使用すれば、テキストブラウザ上の各リンクのURLが下の方
にまとめて表示されるようになりますので利用できるかもしれません。

[ ]
RE:06087 秀丸メール、Hidemaru ExplorerNo.06088
DarkMark さん 09/04/02 11:35
 
回答ありがとうございます。

> 秀丸エディタの「Hidemarnet Explorer を使う場合の詳細」ダイアログの
>「Webブラウズモード」項目の「リンク先を番号で表示して下の方にまとめる」

これでも問題ないのですが、(実際、これでURLのリンクを
とれることがわかりました。)判定処理が難しくなるのです。

番号とURLが固定されていれば問題ないのですが、他のリンクが
最初のほうに書かれていたりすると、番号指定が難しいので、
タグで判断したいと考えています。

ブラウズモードを終了しなくてもよいので、ソースの状態で
文字列の検出等をすることはできませんか?

やりたいのは、

1.フォームの入力後表示される画面を中心に、その画面のタグを
解析して、未読のメールのURLを取得(未読かどうかの判断は、
タグ上に隠されているので、タグを解析する必要がある。)。

2.該当の未読メールを表示して、その内容をコピー。

と言ったもので、ソース表示の状態を継続するわけではありません。

現在は、未読メールのチェックは、未読か既読かのアイコンが
リンクされているので、そのリンク先が未読メールのアイコンで
あれば、そのURLを取得するようにして、ごまかしています。





[ ]
RE:06088 秀丸メール、Hidemaru ExplorerNo.06089
パブリッシャー担当 さん 09/04/03 10:50
 

 いつもお世話になっております。

 一応 Hidemarnet Explorer が管理している一時ファイルには生データがあり
ますので今回の様な用途には合致しているかもしれません。

 一時ファイルは、WindowsのTempディレクトリに作成されています。
 「HET<数字>.tmp」と言うファイル名になっています。
 複数の秀丸エディタでWebページを表示している場合は、Webページを表示して
いる数だけファイルが存在ます。
 同じ場所に「HEU<数字>.tmp」と言うファイルも存在し、こちらは「HET<数字>.
tmp」を取得したURLが格納されています。

 ただし、このファイルはあくまで Hidemarnet Explorer が動作の為にWebペー
ジ取得時に作成しているファイルなので、外部から編集されたりすると、
Hidemarnet Explorer の動作がおかしくなる可能性があります。
 また、Hidemarnet Explorer 側の都合で突然更新されたり削除されたりします
のでファイルの内容や存在を保証することはできません。

[ ]
RE:06088 秀丸メール、Hidemaru ExplorerNo.06090
DarkMark さん 09/04/03 10:53
 
流れで、このスレッドにつづけて投稿しますが、
Hidemaru ExplorerでFormが送信できない場合はどういう
場合でしょうか?

というのも、例のWebメールサーバーにはログインすることは
できるのですが、その他のフォームボタンを押すと、
不明なデータを受け取ったということで、それ以上進まない
ことがわかりました。

メールのデータは直リンク取れるので、そこは問題ないのですが、
読んだメールを削除や転送させようとフォームのボタンを
押してもエラーとなり、当然マクロでも制御できません。

フォームの内容は単純なもので、valueを複数設定して、
最後にSubmitをするというものです。(Submitのボタンによって、
URL上のパラメーターが変化して、処理が実行されるというもの)

URLの制限等があり、正しくデータが渡っていないような気もします。何か制限があ
るのでしょうか?

[ ]
RE:06089 秀丸メール、Hidemaru ExplorerNo.06091
DarkMark さん 09/04/03 10:58
 
お世話になっています。

tmpファイルで確認できることを確認しました。
ただ、今のところURLの取得はLinksリストで
行う形で実装を始めましたので、そちらで考えます。

[ ]
RE:06090 秀丸メール、Hidemaru ExplorerNo.06092
パブリッシャー担当 さん 09/04/03 11:16
 

 いつもお世話になっております。


>流れで、このスレッドにつづけて投稿しますが、
>Hidemaru ExplorerでFormが送信できない場合はどういう
>場合でしょうか?

 JavaScriptを利用しているようなフォームは処理できません。
 その他にもあるかもしれませんが、把握はしていません。
 テキストブラウザ上で手動でフォーム処理を行うことが出来ないフォームは
Hidemarnet Explorerで処理できないフォームとなります。

>フォームの内容は単純なもので、valueを複数設定して、
>最後にSubmitをするというものです。(Submitのボタンによって、
>URL上のパラメーターが変化して、処理が実行されるというもの)

 ボタンを特定してフォーム情報を送信する場合は、データファイルの
「AutoSubmit」に「1」では無くボタン名を指定しなければいけないかもしれま
せん。
<form>
<input type="submit" name="submit1" value="送信ボタン1">
<input type="submit" name="submit2" value="送信ボタン2">
</form>

 の様な場合は、「AutoSubmit="1"」ですと「送信ボタン1」が押されます。
 「送信ボタン2」を押したい場合は「AutoSubmit="submit2"」と指定すると
「送信ボタン2」が押されます。

 試してみてほしいです。

[ ]
RE:06090 秀丸メール、Hidemaru ExplorerNo.06093
パブリッシャー担当 さん 09/04/03 11:22
 

 いつもお世話になっております。

 すいません、よく読んでいませんでした。

>メールのデータは直リンク取れるので、そこは問題ないのですが、
>読んだメールを削除や転送させようとフォームのボタンを
>押してもエラーとなり、当然マクロでも制御できません。

 テキストブラウザ上で手動でも正常に動作しないのであれば、Hidemarnet
Explorer が対応できない形のフォームかと思われます。
 フォームのHTMLタグの部分を "xxxxxxx@maruo.co.jp" 宛にご連絡頂ければ対
応できるかもしれませんがお約束はできません。

[ ]
RE:06092 秀丸メール、Hidemaru ExplorerNo.06094
DarkMark さん 09/04/03 11:26
 
お世話になっています。

> JavaScriptを利用しているようなフォームは処理できません。
> その他にもあるかもしれませんが、把握はしていません。
> テキストブラウザ上で手動でフォーム処理を行うことが出来ないフォームは
>Hidemarnet Explorerで処理できないフォームとなります。

Javascriptは使われておりません。

>「AutoSubmit」に「1」では無くボタン名を指定しなければいけないかもしれま
>せん。
><form>
><input type="submit" name="submit1" value="送信ボタン1">
><input type="submit" name="submit2" value="送信ボタン2">
></form>
>
> の様な場合は、「AutoSubmit="1"」ですと「送信ボタン1」が押されます。
> 「送信ボタン2」を押したい場合は「AutoSubmit="submit2"」と指定すると
>「送信ボタン2」が押されます。

はい、そのようにして、自動送信するマクロは組めています。
ただ、送信後にWebサーバーからエラーを返されてしまいます。
これは、マクロでやっても、手動でやっても同じです。

Webサーバーが有料なのと、サイトに迷惑がかかるかも
しれないので、ここではサイト名の公開やURLの公開は避けますが、
ソースファイルをお渡ししますので、対応できるかどうか、
確認していただくことは可能でしょうか?

[ ]
RE:06093 秀丸メール、Hidemaru ExplorerNo.06095
DarkMark さん 09/04/03 11:27
 
入れ違いでコメントしてしまってすみません。
> フォームのHTMLタグの部分を "xxxxxxx@maruo.co.jp" 宛にご連絡頂ければ対
>応できるかもしれませんがお約束はできません。

それでは添付させていただきますので、時間が空いた時で良いので
確認をお願いします。

[ ]
RE:06095 秀丸メール、Hidemaru ExplorerNo.06096
DarkMark さん 09/04/03 15:51
 
メールでの回答ありがとうございました。

さて、ひとつ確認したいことがあるのですが、
HMNETEX.ERRをみると、エラーが起きた時は、
Retryをしているように思われます。(以前のログから、
1度リトライが入ると認識しております。)

その時のログが、

日時 Retry:https://[表示中のサイトアドレス]:https://[CGI+それに渡すパラメー
ター]
となっているのですが、これは正しいでしょうか?
つまり、表示中のアドレスが余計についてしまっているため、
無効なアドレスと認識されていないでしょうか?

ログの仕様がそうなっているのであれば、違う原因でしょうけど、
ちょっと気になったので。

[ ]
RE:06096 秀丸メール、Hidemaru ExplorerNo.06097
パブリッシャー担当 さん 09/04/03 16:07
 

 いつもお世話になっております。

 Retry時のログ形式はGET時とPOST時で微妙に違いますが、基本的には
「日時 ReTry:[リクエストURL]:[リクエスト元URL]」
と言った形で記録されます。

>日時 Retry:https://[表示中のサイトアドレス]:https://[CGI+それに渡すパラメー
>ター]
>となっているのですが、これは正しいでしょうか?

 表示中のサイトアドレスが前にあるのであれば、間違っていることになります。
 フォーム処理で記録された場合は、前に、FORMタグの ACTIONエレメントに指
定されているURLが記録され、後ろ側に表示しているページのURLが表示されなけ
ればなりません。

[ ]
RE:06097 秀丸メール、Hidemaru ExplorerNo.06098
DarkMark さん 09/04/03 17:03
 
すみません、再度確認しました。

> 表示中のサイトアドレスが前にあるのであれば、間違っていることになります。
> フォーム処理で記録された場合は、前に、FORMタグの ACTIONエレメントに指
>定されているURLが記録され、後ろ側に表示しているページのURLが表示されなけ
>ればなりません。

おっしゃる通りの順番でした。
(現在表示中のアドレスがあとに書かれています。)

さて、その場合、最初に書かれているURLがaction=に指定
されているURLのみということは、正しいValueが送信されて
いない。ということになるのでしょうか?

一概には言えないと思いますが、メールを新規で作ったり、
転送したりするので、本文をURLで送信するとは思えないので、
別の通信をしているとは考えますが、その送信方法が
うまくいかないのだと考えています。

おつきあいいただいてありがとうございます。
コツコツと調査していきますので、何か思いついたらで
良いので、何か分かりましたら、アドバイスお願いします。

[ ]
RE:06098 秀丸メール、Hidemaru ExplorerNo.06101
DarkMark さん 09/04/07 10:17
 
お世話になっています。

目的の内容がWSH(Javascript)でできるようになったので、
Hidemaru Explorerでやる必要はなくなったのですが、
なぜ、Hidemaru Explorerでフォームのボタンが押せなかったのか、
なんとなくわかったので、今後の参考にしていただければと思い、
報告いたします。

問題のフォーム、はSubmitが複数あり、その複数のSubmitも
同じname (=id)で定義されているため、nameでSubmitを
しようと思っても、nameがあらわすポインターは、nameが
格納されている配列のポインターとなっていました。

WSHでも同じことがおきたのですが、Javascriptでは、
name[0]で1番目の要素、name[1]で2番目の要素を指定できたので、
その要素をクリックされたことにすることで回避できました。

Hidemaru Explorerでは、このようなForm(同じnameで複数のボタン
が用意されている)ものに対応できていないと考えます。

この推察が正しいかどうかは、わかりませんが、もしテスト
バージョンを出していただけるならば、確認をします。

ちなみに、やりたかったこととは、2chでも公表したのですが、
iモード.netに自動ログインして、ひたすらメールが来るのを
待って、メールが着たら自動転送で他のメールアドレスに
送るというものです。
(スクリプトは、下記のブログにあげてあります。)
http://darkmark.asablo.jp/blog/2009/04/06/


[ ]
RE:06101 秀丸メール、Hidemaru ExplorerNo.06102
パブリッシャー担当 さん 09/04/07 11:13
 

 いつもお世話になっております。

>問題のフォーム、はSubmitが複数あり、その複数のSubmitも
>同じname (=id)で定義されているため、nameでSubmitを
>しようと思っても、nameがあらわすポインターは、nameが
>格納されている配列のポインターとなっていました。

 確認いたしました。

 これは、現行のシステムではちょっと対応が難しいです。
 対応策を検討してみたいと思います。

 貴重な情報ありがとうございます。

[ ]
RE:06101 秀丸メール、Hidemaru ExplorerNo.06119
パブリッシャー担当 さん 09/04/10 15:51
 

 いつもお世話になっております。

 ご指摘いただいたフォーム関連の不具合について対策を行って Ver4.05β4 と
して公開いたしました。

 フォームの自動処理の「AutoSubmit」の指定につきましては、ボタンの定義順
の番号での指定もできる様にしました。
 AutoSubmit=1 ならこれまで通り1番目のボタンを押した動作となり、
AutoSubmit=2 なら2番目のボタンを押した動作となるようにしました。

 もう必要ないかと思いますが、お時間のあるときにでも確認して頂ければと思
います。

=======================================================================
 有限会社サイトー企画 近藤

 秀シリーズはこちらから :http://hide.maruo.co.jp/
 コミュニテックスはこちら:http://www.maruo.co.jp/

=======================================================================

[ ]
RE:06119 秀丸メール、Hidemaru ExplorerNo.06120
DarkMark さん 09/04/10 18:13
 
対応ありがとうございます。

> AutoSubmit=1 ならこれまで通り1番目のボタンを押した動作となり、
>AutoSubmit=2 なら2番目のボタンを押した動作となるようにしました。

やってみたんですが、うまく動きませんでした。

通常のSubmitがうまくいかない場合でも、Autoの場合、できるのでしょうか?

[ ]
RE:06120 秀丸メール、Hidemaru ExplorerNo.06132
パブリッシャー担当 さん 09/04/13 11:44
 

 いつもお世話になっております。

>やってみたんですが、うまく動きませんでした。
>
>通常のSubmitがうまくいかない場合でも、Autoの場合、できるのでしょうか?

 通常のテキストブラウザ上で動作しないフォームの処理は行えません。

 頂いたHTMLページのソースを利用させていただき、ローカルサーバ上で送信
データを受け取るだけのスクリプトを作成してInternet Explorer と送信情報の
違いをチェックしました。
 β3までは、明らかに違う情報を送信していたのを確認しましたので、β4では、
Internet Explorer がサーバに送信している情報と同じ形で情報をサーバに送信
するように修正しました。

 フォームの自動処理では、「AutoSubmit=1」で一番最初に配置されている
「submit」ボタンを押す仕様で、その他のボタンを押す場合は名前を指定すると
いう仕様でした。
 今回の様に「メール作成」と「宛先追加」に同名の送信ボタンが有る場合は、
最初に見つかったボタンが押されてしまうので、常にメール作成の送信ボタンが
押されてしまい、うまく動作しませんでした。
 β4では、これを設置されているボタンを配置順の番号で指定できるようにし、
「AutoSubmit=1」で、メール作成の送信ボタンを押し、「AutoSubmit=4」で宛先
追加の送信ボタンを押すことができるように修正しました。

 テキストブラウザ上でのフォームの処理もうまく動作しないということであれ
ば、他に何か別の原因があるのかもしれません。

 もう少し調べてみたいと思います。

[ ]