Open-Source-Software-Entwicklung und Downloads

Browse Subversion Repository

Diff of /trunk/teraterm/keycode/keycode.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 2658 by yutakapon, Sat Feb 14 16:32:40 2009 UTC revision 2660 by maya, Tue Feb 17 13:53:24 2009 UTC
# Line 22  static WORD Scan; Line 22  static WORD Scan;
22    
23  // VS2005でビルドされたバイナリが Windows95 でも起動できるようにするために、  // VS2005でビルドされたバイナリが Windows95 でも起動できるようにするために、
24  // IsDebuggerPresent()のシンボル定義を追加する。  // IsDebuggerPresent()のシンボル定義を追加する。
25  // さらにWindows Sockets2.0のインストールも必要。  //
26  EXTERN_C BOOL WINAPI _imp__IsDebuggerPresent(void)  // cf.http://jet2.u-abel.net/program/tips/forceimp.htm
27    // 装飾された名前のアドレスを作るための仮定義
28    // (これだけでインポートを横取りしている)
29    EXTERN_C int WINAPI _imp__IsDebuggerPresent()
30        { return PtrToInt((void*) &_imp__IsDebuggerPresent); }
31    // 実際に横取り処理を行う関数
32    EXTERN_C BOOL WINAPI Cover_IsDebuggerPresent()
33        { return FALSE; }
34    // 関数が実際に呼び出されたときに備えて
35    // 横取り処理関数を呼び出させるための下準備
36    EXTERN_C void __stdcall DoCover_IsDebuggerPresent()
37  {  {
38          return FALSE;      DWORD dw;
39        DWORD_PTR FAR* lpdw;
40        // 横取り関数を設定するアドレスを取得
41        lpdw = (DWORD_PTR FAR*) &_imp__IsDebuggerPresent;
42        // このアドレスを書き込めるように設定
43        // (同じプログラム内なので障害なく行える)
44        VirtualProtect(lpdw, sizeof(DWORD_PTR), PAGE_READWRITE, &dw);
45        // 横取り関数を設定
46        *lpdw = (DWORD_PTR)(FARPROC) Cover_IsDebuggerPresent;
47        // 読み書きの状態を元に戻す
48        VirtualProtect(lpdw, sizeof(DWORD_PTR), dw, NULL);
49  }  }
50    // アプリケーションが初期化される前に下準備を呼び出す
51    // ※ かなり早くに初期化したいときは、このコードを
52    //  ファイルの末尾に書いて「#pragma init_seg(lib)」を、
53    //  この変数宣言の手前に書きます。
54    //  初期化を急ぐ必要が無い場合は WinMain 内から
55    //  DoCover_IsDebuggerPresent を呼び出して構いません。
56    EXTERN_C int s_DoCover_IsDebuggerPresent
57        = (int) (DoCover_IsDebuggerPresent(), 0);
58    
59  int PASCAL WinMain(HINSTANCE hInstance,  int PASCAL WinMain(HINSTANCE hInstance,
60    HINSTANCE hPrevInstance,    HINSTANCE hPrevInstance,

Legend:
Removed from v.2658  
changed lines
  Added in v.2660

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26