今日の多くの OS がそうであるように、Windows にも自作のプログラムコードを特定のプロセスへ介入させることのできる「フック」という仕組みがあります。自分自身のプロセスをフックすることもできますが、他のプロセスをフックすることで通常のアプリケーションプログラミングの枠を超えた様々な興味深い処理の実現が可能となります。 ・所定のプロセスに対する Windows メッセージの監視・捕捉 ・所定のプロセスでの特定のイベントに呼応する自作コードの注入 ・既存のアプリケーションの所作を変更 etc. 「自作のコードをあるプロセスに介入させる」とはどういうことでしょう? メモリ上のモジュールイメージにアクセスしてマシン語命令を書き換えて・・という怪しげな方法もありそうですが、Windows では DLL を利用することで比較的容易にこの命題を解決できます。 このことを逆に考えると、自作の DLL
概要 不具合の解決手順は「OpenFileDialogを表示するときにフリーズする不具合の解決」に記載していますので、現象を解決したい方はこちらをお読みください。 ここでは「OpenFileDialogを表示するときにフリーズする不具合の解決」の信憑性の為に調査手順を記載します。 また、その他の不具合の原因調査にも使える手順と思いますので、別の不具合で困っている方のご参考にもなればと思います。 1.現象の再現手順を把握 OpenFileDialog.ShowDialogを何回かすると現象が発生することを把握しました。 現象が再現できるようになったので、どのような場合に現象が発生するか/しないかを調べて原因箇所を特定していきます。 2.ウィルス対策ソフトを停止して、現象が発生するかを確認 不具合の原因の筆頭に上がるのがウィルス対策ソフトです。これを停止して現象が発生するかを確認するのがまずは
CorvusSKKというDDSKKの入力方式を用いたWindowsで動くIMEを開発しております。 DOS、Windowsの世界では過去に様々なFEP、IMEが存在していましたが、現在のWindowsにおいては選択肢がちょっと少ないのでは?ということで、これからIMEを作ってみたい方向けに有益かと思われるリンクをまとめてみました。 Text Services Framework (TSF) 実装例 ソースコードが公開されているもの CorvusSKK 手前味噌ですみません。 tsf-tutcode CorvusSKKをフォークして頂きました。漢字直接入力機能が追加されています。 tsf-vim vi風な操作をIMEとして実装されたもの Mozc Google日本語入力のオープンソース版。辞書はそれに劣るようですが、Mac、Linux、Android、ChromeOSでも動くそうです。 ソー
Windows 8はWindows 7との互換性があるものの、新しいWindows 8スタイル環境では、原則として従来のデスクトップアプリケーションは動作しない(例外はInternet Explorerとエクスプローラー)。しかしかな漢字変換入力の機能は、Windows 8スタイル環境でも必要だ。Windows 8スタイル環境とデスクトップの両方で同一のプログラムを使うためには、マイクロソフトの要求仕様に合わせて開発する必要がある。 今回はWindows 8とIMEの関係について説明しよう。 Windows XP時代に導入されたTSF Windows 8スタイル環境とデスクトップ環境の両方で使えるかな漢字変換入力プログラムを開発するには、まず「TSF」(Text Service Framework)というAPIセットに対応しなければならない。またWindows 8スタイルが要求する条件や、
前回もお伝えしたように,そもそも TSF の話を急いでする必要はなくなりました. Windows Vista で当初私が懸念していた Full IME-aware applications の UI ウィンドウ制御に関する互換性問題は,DirectX SDK のサンプルに存在していたバグが原因であり,Vista 開発陣は IMM32 の互換機能をきちんと実装していること 現在いくつかの MMORPG 等で発生している Windows Vista での日本語入力に関する問題は,もし上記 DirectX SDK のバグと同じコードが使用されているのであれば,非常に簡単に修正可能であること 今後 Legacy IM が TSF で置き換えていく流れが確実になっているとはいえ,これで当面急いで TSF に乗り換える必要は無いと思います. そういうわけでしばらく時間をおいてもいいのですが,いったんま
サンプルプログラム(TsfReconv.zip)のダウンロード IMM と TSF IMM で変換候補リストを取得するには ImmSetCompositionString(), ImmNotifyIME(), ImmGetCandidateList() を 使用します。ImmSetCompositionString() でコンポジション文字列(未確定文字列)をセットし、ImmNotifyIME() で 再変換要求および変換候補リストウィンドウの表示を行い、ImmGetCandidateList() を使って変換候補リストを取得 します。 しかし、Vista からはアクティブになっている IME が TSF(Text Services Framework) の TIP の場合に先の API に互換性が無くなり、変換候補リストを取得できなくなりました。「アクティブになっている IME が TS
R Markdown の処理環境は 2015年9月現在、英語マニュアル等を参考に素直にセットアップしただけの状態では、Windows で日本語を含んだ R Markdown を書いて PDF 出力すると、文字の化けや行あふれが処置されないなどの現象が発生してしまいます。 これらを解決する設定を テンプレートとして使えるファイル にまとめてみたので紹介します。(あわせて PDF と HTML を同じ R Markdown ファイルから作り出すときに問題が起きない対策もほどこしました。) この記事の後半では対処している問題とファイルの記述内容について解説します。 前提 TeX 環境 R Markdown 形式から PDF を得るには TeX 形式を扱う環境が必要です。TeX 環境を整備する手段はいくつかありますが、MikTeX ディストリビューションを使用することにします。 準備として htt
cmd.exe の引数の扱いがあまりにもカオスだったのでちょっと頑張って調べてみた。 本来ならここは公式の資料に当たるのが正しいアプローチだと思うけど、どうしても公式の資料が見つからなかったので、色々試して推測してみることに。 断片的な資料は見付けたけど、完全じゃない。一応URL貼っておく。Windows Server 2003 のヘルプだけど、恐らくそんなに変わらないと思う。 コマンド シェルの概要 コマンド リダイレクト演算子を使用する なので、以下で述べる内容は間違いを含む可能性があります。というか正確さは一切保証されないのであしからず。 検証方法 以下のような引数をただ表示するだけの簡単な C のプログラムを用意した。仮に args.exe とでもしておく。 #include <stdio.h> int main(int argc, char const* argv[]) { in
DLLの検索パスなんて普通は意識する必要ありません。実行ファイルと同じディレクトリに置いておけばちゃんと読み込んでくれます。しかし、あなたが実行ファイルではなくDLLを開発している場合はちょっと注意が必要です。 今私たちは master.dll を開発しているとします。このDLLは何か別のアプリから使ってもらうための汎用的なライブラリです。例として rundll32.exe から呼び出されるものとしましょう。slave.dll は master.dll が依存している別のライブラリです。 この2つのDLLを同じディレクトリに置いて rundll32.exe から呼び出すとどうなるでしょうか? rundll32 C:\temp\master.dll,Test 結論から言って以下のようになります。 [Win32] LoadLibrary のサーチパス 「Hoge.dll が見つからなかったため
NTFS はその名の通り,Windows NT のファイルシステムである。Windows NT の開発が進められる過程でこれまでのパーソナルコンピュータとは一線を画した(1994 年当時としては)高度で信頼性の高いファイルシステムを実現し,その上で稼動するWindows NT の信頼性そのものを高める目的で作られたものである。 NTFS は当初から次のような機能を備えていた。 64 ビット整数によるファイルサイズ(最大約1.8×1019 バイト) 複数データストリーム データ圧縮機能 ファイル名へのUnicode の採用 高速なファイル名検索 アクセスコントロールリスト(ACL)によるきめ細かなアクセス制御 監査ログ機能 トランザクション処理モデルにもとづくエラーリカバリ機能 ミラーリングやストライピングによる信頼性向上機能 不良セクタの動的再割り当て POSIX サポート(ハードリンク,
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く