
謎の人です。こんにちわ。
大変ごぶさたしております。みなさん、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 />









