■■■■■■□■■■■■■□■■■■■■□□□□□■■□■■■■■■
■■□□■■□■■□□■■□■■□□□□□■■■■■■□■■□□□□
■■□□■■□■■□□■■□■■□□□□□■■□□■■□■■■■■■
■■□□■■□■■□□■■□■■□□□□□■■□□■■□□□□□■■
■■□□■■□■■■■■■□■■■■■■□■■■■■■□■■■■■■

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  1. --/--/--(--) --:--:--|
  2. スポンサー広告

ckw mod関係

僕の方からckw modをリリースすることはないと思いますが、
僕は自分でビルドしたものを使っています。

まず、main.cppのSTARTUPINFOを書き換えるところ
craftwaveさんのHP参照(http://craftwave.blogspot.com/2010_05_01_archive.html)

書き換えるべきパラメータは
セグメントFS -> Thread Environment Block-> Process Environment Block -> ProcessParameters
にあるみたいです。
gccだと__readfsdwordが無かったのでアセンブラで書いたんですが、
結局NtCurrentTebを使うことにしました。
また、TEBPEBも構造体が定義されておらず
結局マジックナンバーは消せなかった…

//   DWORD*  pflags = (DWORD*)
0x00020068; /* private memory */
//   WORD*  pshow  = (WORD*)  0x0002006C;

//     INT_PTR peb = (INT_PTR)__readfsdword(0x30);
//     INT_PTR peb; asm("movl %%fs:0x30, %0" : "=q" (peb));
  INT_PTR peb = *(INT_PTR*)((INT_PTR)NtCurrentTeb() + 0x30);
  PRTL_USER_PROCESS_PARAMETERS param = *(PRTL_USER_PROCESS_PARAMETERS*)(peb + 0x10);
  DWORD* pflags = (DWORD*)&(param->dwFlags);
  WORD* pshow = (WORD*)&(param->wShowWindow);


次に設定ファイル(option.cpp)。
変更したかったのは2点。
・nyacusとかvimにあわせて設定ファイルの名前を_ckwにしたい!
・上記と同じ理由で設定ファイルをHOMEディレクトリに置きたい!
ってことで以下。

static bool getconfigfile(const char* env, char *cfgfile, char *path, int size){
  if(GetEnvironmentVariableA(env, path, size)){
    snprintf(path, size, "%s\\%s", path, cfgfile);
    if(PathFileExistsA(path) && !PathIsDirectoryA(path)){
      return true;
    }
  }
  return false;
}

void ckOpt::loadXdefaults()
{
  char path[MAX_PATH+1];

  if(m_config_file[0] == '\0')
  {
    char cfgfile[MAX_PATH] = "_";
    GetModuleBaseNameA(GetCurrentProcess(), NULL, cfgfile+1, MAX_PATH);
    if (char *p = strchr(cfgfile, '.')) *p = '\0';

    // directory execute exists
    if (0 != GetModuleFileNameA(NULL, path, MAX_PATH)){
      char szDrive[MAX_PATH];
      char szDir[MAX_PATH];
      char szBuf[MAX_PATH];
      _splitpath(path, szDrive, szDir, szBuf, szBuf);
      _makepath(path, szDrive, szDir, cfgfile, NULL);
      _loadXdefaults(path);
    }

    // HOME or USERPROFILE
    path[0] = '\0';
    if (!getconfigfile("HOME", cfgfile, path, MAX_PATH)){
      getconfigfile("USERPROFILE", cfgfile, path, MAX_PATH);
    }
    if (path[0] != '\0') _loadXdefaults(path);
  }
  else
  {
    path[0] = '\0';
    strcpy(path, m_config_file);
    _loadXdefaults(path);
  }

  if(GetEnvironmentVariableA("HOME", path, MAX_PATH)) {
    strcat(path, "\\.Xdefaults");
    _loadXdefaults(path);
  }
}


テーマ:フリーソフト - ジャンル:コンピュータ

  1. 2010/05/23(日) 13:12:30|
  2. フリーソフト
  3. | トラックバック:0
  4. | コメント:0
<<FreeType 2.3.12 (development snapshot 2010-05-26 14:16:34 (GMT)) | ホーム | くつしたのぼうけん>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバックURLはこちら
http://nocd5.blog59.fc2.com/tb.php/410-09a9e5a7
この記事にトラックバックする(FC2ブログユーザー)
home

プロフィール

Author:nocd5
30歳(男)
会社員

Last.fm



最近の記事

カテゴリー

カレンダー

03 | 2017/03 | 04
Sun Mon Tue Wed Thu Fri Sat
- - - 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 -

最近のコメント

最近のトラックバック

ブロとも申請フォーム

この人とブロともになる

ブログ内検索

Amazonアソシエイト

RSSフィード

リンク

このブログをリンクに追加する

FC2ブログランキング

FC2Blog Ranking

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。