謎の人です。こんにちわ。
大変ごぶさたしております。みなさん、Super Drag Extension でいろんなものを Drag したり Drop したりしてますか?
Super Drag Extension 0.2.5 では、UserAction Extension を使うことでユーザースクリプトを実行可能になりました! これで、より一層オレオレスクリプトを使いやすくなり、私も何か楽しいことができないかと色々考え中ですよ。
今日は、ずいぶん前に告知した「Sleipnir.pm」について。
Perl から Sleipnir.API をちょっとだけ気軽に使うための方法として考え始め、
ドキュメントだけ先に出しときます。多分こんな感じになる。。。と思いますよ。
から早幾月。待っていてくださるコアな方のために、動くものを公開。
忘れてたわけじゃないですよ。
以下、導入方法。
- ActivePerl をインストール
- 本エントリ末尾のコードを、「Sleipnir.pm」の名前で保存
- <ActivePerl インストール場所>¥lib¥Sleipnir.pm として保存してください。ActivePerl が C:¥Perl にインストールされている場合は、C:¥Perl¥lib¥Sleipnir.pm です
- <Sleipnir インストール場所>¥resources¥languages¥default¥english¥ScriptEngine.ini
に一行追記pl=PerlScript
ドキュメント通りに動いてて、面白みがないですが、よろしければどうぞ
ちょっと間が開きましたので、おさらい & 今後の予定も合わせて。
- UserAction スクリプトは、いろんな言語で書けますよ
- もちろん Perl でも書けますよ
- 書けるけど、もうちょっとだけ楽に書きたいですよ
- まずはドキュメントだけ準備しましたよ
- Sleinir.pm 初公開 <= 今ここ
- たくさんの人が Perl で UserAction を書き始める
- Sleipnir.pm が、いろんな人の手でどんどん拡張される
- Windows に Perl/Ruby 標準搭載
- UserAction Extension 、世界にはばたく
- 謎の人に取材殺到
忘れてたわけじゃないですよ。
ありがとうございました。
- 【関連記事】
<br /> #<br /> # $Id: Sleipnir.pm,v 1.1 2007/12/11 01:18:15 nazonohito Exp $<br /> #<br /> package Sleipnir;</p> <p>use strict;<br /> use warnings;</p> <p>our $VERSION = sprintf "%d.%03d", q$Revision: 1.1 $ =~ /(\d+)/g;</p> <p>use Win32::OLE;</p> <p>sub AUTOLOAD {<br /> my $self = shift;<br /> my $method = our $AUTOLOAD;</p> <p> $method =~ s|.*::||o;<br /> $method eq 'DESTROY' and return;</p> <p> ref $self && $method<br /> or die 'Undefined attribute or method ', $method, ' called on Sleipnir.API';</p> <p> return $self->{api}->$method(@_);<br /> }</p> <p>sub new {<br /> my $class = shift;<br /> my $package = ref $class || $class;<br /> my $self = bless{}, $package;</p> <p> $self->_init();</p> <p> return $self;<br /> }</p> <p>sub _init {<br /> my $self = shift;<br /> $self->{api} = new Win32::OLE('Sleipnir.API');<br /> return $self;<br /> }</p> <p>sub id {<br /> my $self = shift;<br /> return $self->{api}->GetDocumentID($self->{api}->ActiveIndex);<br /> }</p> <p>sub document {<br /> my $self = shift;<br /> my $id = shift || $self->id;<br /> $self->{document} = $self->{api}->GetDocumentObject($id);<br /> $self->{document};<br /> }</p> <p>sub window {<br /> my $self = shift;<br /> my $id = shift || $self->id;<br /> $self->{window} = $self->{api}->GetWindowObject($id);<br /> $self->{window};<br /> }</p> <p>sub event {<br /> my $self = shift;<br /> $self->{event} = $self->window->event;<br /> $self->{event};<br /> }</p> <p>sub get_charset {<br /> my $self = shift;</p> <p> my $charset = '';<br /> my $nodelists = $self->document->getElementsByTagName('META');<br /> for my $i ( 0 .. $nodelists->length -1 ) {<br /> if ( $nodelists->item($i)->getAttribute('content') =~ m|charset=([^\s;]+)| ) {<br /> $charset = $1;<br /> last;<br /> }<br /> }<br /> return $charset;<br /> }</p> <p>###<br /> #</p> <p>sub _load_module {<br /> my $self = shift;<br /> my $module = shift;</p> <p> unless ( exists $INC{$module} ) {<br /> (my $m = $module.'.pm') =~ s/::/\//g;<br /> require $m or die $!;<br /> }<br /> }</p> <p>#<br /> ###</p> <p>1;<br /> __END__<br />