「ファイルが別のプログラムで開かれている」ために削除が許可されないように、MS Office アプリケーションが Ruby プログラムから行うようにファイルをロックしたいと考えています。
Ruby標準ライブラリではそれができないようです-私は試したばかりです-そのため、 LockFileEx関数flock()
を呼び出そうとしています。
fd = File.open("locked.file", File::RDWR|File::CREAT, 0644)
fd.write "this file to be locked"
import_array = %w(p i i i i i)
wapi = Win32API.new('kernel32', 'LockFileEx', import_array, "i")
wapi.call(fd, 1, 0, 0, 0, 0)
wapi.call が TypeError 例外「ファイルを文字列に変換できません」で失敗します。
ファイル ハンドルを表すには、import_array の最初の項目として何を使用すればよいですか?
ファイル記述子を String にパックするにはどうすればよいですか? ファイル記述子の構造はどこで取得できますか?
Ruby 1.9.3 を使用しています。