Tcl/TkでMutexを使った多重起動防止
Tcl単体でやろうとすると、ロックファイルでやりなさいということになるんですけど、その場合Tclの処理系が起動するまでに、別のインスタンスが起動できてしまう可能性があるので、厳密ではないです。たとえば、 run_twice.bat start wish app.tcl start wish app.tcl とかやると、2重起動してしまいます。 プロセスリストを取得して処理する方法もあります...
View ArticleVisual Studio 2010でOpenSSLをビルドする
ここに行けばWindows用のDLLを入手することはできるんですが、 http://www.slproweb.com/products/Win32OpenSSL.html 今回はスタティックライブラリが欲しかったので、自分でビルドしてみました。 ここを参考にしました。 http://shishi.syuriken.jp/openssl.html 使ったプログラム Visual Studio 2010...
View Article暗号化APIを有効にしたSQLite3のTclバインディングをコンパイルする
コンパイルに使用したもの ActiveTcl 8.4.19.5 http://www.activestate.com/activetcl/downloads wxSQLite3(wxsqlite3-2.1.2.zip) http://sourceforge.net/projects/wxcode/files/Components/wxSQLite3/...
View ArticleAssocQueryString
AssocQueryStringを使って拡張子に関連付けられた実行ファイルパスを取得するサンプル。 本当はTclで使うからFfidlとかでやりたかったけど、難しかったのでCのコンソールアプリケーションにしました。 勉強のため無駄にUNICODE対応にしています。 使い方は、 assoc_query_string.exe...
View Articleipconfigを呼ばないでMACアドレスのリストを取得する
TclからNICのMACアドレスのリストを取得する場合、ipconfig/allの出力から取り出してたけど、Windowsのバージョンやロケールによって出力が変わるものを使うのはどうも気に食わんかったので、ちゃんとそれ用のWindows APIを使いたいと思っていた。 今回twapiを使えばできることが分かったので、メモしておく。 package require twapi proc...
View Articleコマンドライン版Everythingを使ってSubversionのワーキングコピーフォルダをリストアップする
最近TortoiseSVNが1.7になって、既存のワーキングコピーを初めて操作するときに自動的に管理ファイルをアップデートするらしい既存のワーキングコピーを手動でアップデートする必要があるらしい ( WC-NG )。未アップデートのワーキングコピーが混在するのは気持ち悪いのでまとめてアップデートしたいと思う。...
View ArticleFfidlでC言語のエクスポート関数に配列のポインタを渡して内容を書き換えてもらう
なぜかFfidlで配列を引数に渡すサンプルがどこにも見当たらなかったので、作ってみました。 C言語のDLL側のサンプル。 関数pow2は任意の大きさの整数型配列とそのサイズを受け取り、 その配列の各要素を2乗した値に置き換えるものです。 /* pow2.c */ __declspec(dllexport) void pow2(int* out, int sz) { int i; for(i = 0;...
View ArticlekitgenをVisual Studio 2012でビルドする
kitgenが正式にサポートしているのはVC6からVC8(2005)までです。 VS2008~VS2013についても、いくつか変更を加えてやればビルドできます。 ただ、これはTclに限ったことではないのですが、VS2012で普通にビルドした実行ファイルはXPで動作しません。SDK...
View Article