メモ帳から、他のエディタで読み直し
メモ帳で開いているファイルを、他エディタ(今回は秀丸)で読み込みなおしたい。
#そもそもは、Vertrigoで、外部エディタを設定できなかったから・・
- EnumWindows()
- callbackでプロセスID取得(GetWindowThreadProcessId(), OpenProcess())
- そのプロセスのコマンドライン引数を求める
参考:http://d.hatena.ne.jp/espresso3389/20080723
という流れで作った。
ただこれだと、新規メモ帳起動して、[ファイル]メニューから開いているときには
起動引数じゃないから、ダメだ。
「メモ帳は、ファイルを表示したらすぐcloseしている」そう。
Edit部分のクラスをなんとか捕まえて??
Spyしてみるが、そこから先がわからない。
あー、[ファイル]-[開く]でカレントディレクトリわかるなあ!
それにタイトルを組み合わせればいいんじゃね?
・・・
その、カレントディレクトリがわからん・・
「PEB」を調べてみたが、ディレクトリ情報そのものズバリは無いようだ。
http://www.codeproject.com/KB/threads/GetNtProcessInfo.aspx
http://msdn.microsoft.com/en-us/library/aa813706(VS.85).aspx
↓を見たらあったのに・・OSが違う? 4/23修正:明日への〜で書いている通り、ユーザ定義だった
http://www.geocities.co.jp/egggarden/win32api/download/peek.cpp.txt
そもそもc:\windows\system32\から変わってるのかも謎だ。
ああ・・最悪、[開く]ダイアログを出してみるのかなあ・・
http://social.msdn.microsoft.com/Forums/ja-JP/vcgeneralja/thread/565bb7cc-1107-44c5-bd25-dc5ef2e45bc1/
明日へのメモ。
http://www.geocities.co.jp/egggarden/win32api/loveryPG.htm
「いずれの場合でもポイントは 」で検索、飛んだあたりに
いずれの場合でもポイントは
1. ntddk.hとwindows.hは共存できないため、 情報量の多いntddk.hどちらか一方を使い、ほかの情報は自分で定義する (今回はntddk.hを使いwindows.h のものは structures.h / functions.h で定義している)
2. 一部の構造体は、互換性の問題から定義が隠されているのでそれを自分で定義する(structures.h)
3. ntdll.libのリンクが必要 (ユーザーモードでGetProcAddressするなら[Tips 02]のようにntdll.dllから拾う)
とあるので、ヘッダをあれこれ入れ替えてみるかな?