SpiderMonkey 学習:js-ctypes 入門

2017-03-10 :  PCクリニック
Python、C言語、Perl、グルコサミン、Firefox
前(2017-03-08)の記事「JavaScript:SpiderMonkey で行く」で、
SpiderMonkey 1.8.5 が入手できた。

SpiderMonkey 1.8.5」には、
  ・・・・・
  ・・・・・
  New JavaScript language features
  ・・・・・
  SpiderMonkey 1.8.5 also ships with js-ctypes,
   a foreign-function interface for privileged JavaScript.
  ・・・・・
  ・・・・・
とある。
即ち、Google 翻訳 で、
  SpiderMonkey 1.8.5には、特権付きJavaScript用の
  外部関数インターフェイスであるjs-ctypesも付属しています。

これは、
3年前(2014-05-12)の記事「Python 学習:インタプリタの拡張?」で書いている、
Python の“ctypes”モジュール
や、
昨年(2016-01-12)の記事「Lua 学習:FFI Library」で書いている、
LuaJIT の“FFI”ライブラリ
に相当するもの?


早速、
Standard OS Libraries」ページにある、
最初のサンプルコード:
  This example was created on Windows XP SP2.
  It is a full working example; just copy & paste it to try it out.
この27行をコピー&ペーストして起動してみた。


エラー発生

1行目の:
  Components.utils.import("resource://gre/modules/ctypes.jsm");
24、25行目:
  Components.utils.reportError(ret);
  Components.utils.reportError(point);


どうする?

1行目はコメントアウト(=削除)

24、25行目は、
  print( ret )
  print( point )
に変更した。

これで、正常に動作した。

本家から入手したものじゃないので、こうなるのか???

でも、<紙>にとっては、こっちの方が使い勝手が良い。


---------------

ランダムに動作確認

1.コマンド起動時の引数は?
   arguments 配列で受ける

2.インポートは?
   load( 'hoge.js' ); とかで読み込まれる

2.スリープ関数は?
   sleep(5) とか、秒単位で指定する

3.現在時刻は?
   dateNow() 13桁+小数点以下3桁

4.キーボード入力待ちは?
   var s = readline(); とかで

5.プログラム終了は?
   quit();

※ thisFilename() はエラーとなった。


最後に、
少しはまともな?コード:
// ---------- ファイルのサイズ取得 -----
var c_Rd = parseInt( "80000000", 16 );
var libK = ctypes.open( "KERNEL32.dll" );
var CreateFile = libK.declare( 'CreateFileA', ctypes.winapi_abi, ctypes.int32_t,
ctypes.char.ptr, ctypes.uint32_t, ctypes.int32_t, ctypes.int32_t,
ctypes.int32_t, ctypes.int32_t, ctypes.int32_t );

var fp = CreateFile( 'zzz.txt', c_Rd, 0, 0, 3, 128, 0 );
print( fp ); // 確認の為

var getfsz = libK.declare( 'GetFileSize', ctypes.winapi_abi, ctypes.int32_t,
ctypes.int32_t, ctypes.int32_t );
var ss = getfsz( fp, 0 ); // 第2引数は学習不足
print( ss ); // 正しく得られた(サイズが4GB未満のファイル)

libK.close();
var str = readline();
こんな感じで行ける?


本日はここまで。


SpiderMonkey ( JavaScript / js-ctypes ) 学習は続く。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


170209
関連記事
スポンサーサイト

コメントの投稿

管理者にだけ表示を許可する

おきてがみ/blogram
blogram投票ボタン



おきてがみ

最新記事
カレンダー
02 | 2017/03 | 03
- - - 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 -
月別アーカイブ
カテゴリ
最新コメント
検索フォーム
リンク
プロフィール

<紙>

Author:<紙>
ようこそ。
「パソコンヲタクの雑記帳」
もろもろなことを綴っています。
パソコン ヲタクってねくら?
画像は kami でなく kani です。

カウンター(fc2、i2i) /Google Analytics


i2i(from 2010-08-24)
Total =
Today  =  
Yesterday=
アンチエイジング

Google Analytics
ブックマーク