混沌雑記帳






最近はメインマシンで全て処理してるので完全にバックアップになったサブ機を少しでも省エネに。
中身的にはPentium4 Northwoodの3.06GHzなのでTDPは81.8W。
少しでも抑えるためにベースクロックをを133から100にまでダウン。
これでFSBが533から400に落ちてCPU周波数としては2.3GHz、25%ダウンになる。
本当は電圧も下げたかったんだけどダウン側の選択肢がなくて断念。
後は消音もかねてQ-FANをONに変更。夏とかは怖いけどこの時期なら。エンコもしないし。

まあどれだけ効果があるのかはわからないけど、多少でも意味あるのなら。
最近のCPUは倍率を固定されてることが多いけど、下側へは開放してくれるといいかもなぁ。
上へは高いのが売れなくなるから駄目にしても下は売上関係なさそうだが。
逆に静穏マシン狙いで上のCPUを買ってくれる(一般に上が余裕あるほど同じ周波数なら電圧下げられる)可能性も(笑)
とはいってもここ数世代のCPUは可変クロックで下には落ちるから実質そうなってるか。
PC関連 | Comments:0
(2009/11/26(Thu) 19:53:22)

WindowsMobileのTodayプラグインに初挑戦。
レジストリからステータスを読み込んで表示するプラグイン。
半透過で苦労させられながら作ってたのがこれ。

tdyRegStatus.jpg

元々は不在着信とメール未読の表示用として考えた物。
この関係で有名なのはtodayCompactなんだけど
W-ZERO3系列用で他機種だとレジストリ位置の問題でそのままじゃ使えない。
rlTodayとかtodayCompactが使えるようにレジストリ転記も考えた。
ただrlTodayは無駄に重い。これだけのために使うのは避けたい。
レジストリ転記も無駄な動作だしなんとなくスマートじゃ無い。
MortScriptを使うのだと幾つものソフトの組み合わせだから面倒だし
かといって転記するアプリ書くくらいならTodayプラグインでも大差なくね?と。

ただ、不在着信とメール未読だけじゃ幅がもったいない。
ということで無線LANとBluetoothのON/OFFを追加。
SMSはまず使わないので特に必要なし。
タスクは別に出してるので意味無いし。
構造としてはスキンのように自由に変更できるので必要なら設定書き換えるだけだが。

タップした時に実行するアプリも書き換え可能で
無線LANとBluetoothはwifictrlを呼び出して切り替えてる。

問題としては無線LANとBlutoothのレジストリ値がOFFでも単一じゃ無いこと。
一応単一環境では複数値にはなってないようなのでとりあえず一つで判断してるが。
モバイル | Comments:0
(2009/11/13(Thu) 21:10:52)

WindowsMobileのTodayプラグイン作成で嵌ったPNG透過描画関連。

・PNGを使えば透過情報を使える。
・SHLoadImageFileはPNGを読み込める。
・AlphaBlendで透過付き描画が出来る。
よし、簡単じゃん。 と思ったら甘かった。
トラップは
・SHLoadImageFileはPNGを読み込めるが、デバイスにあわせる仕様のため16ビットになってしまう。
・AlphaBlendで必要とするのはアルファチャンネル付き32ビットビットマップ。
よってそのままじゃうまくいかない。
まあSHLoadDIBitmapって手もあるのかもしれないが、PNGのが作りやすし。

というわけでネットの海を探し回った結果。
めるもでらさんの所でやはり同じ問題にぶつかった記事を発見。
ちょっと変形してSHLoadImageFileと入れ替え可能な関数を作成。

HBITMAP IFLoadImageFile(const TCHAR *pszPath)
{
 // interface 取得
 IImagingFactory* pImageFactory= NULL;
 CoCreateInstance(CLSID_ImagingFactory, NULL, CLSCTX_INPROC_SERVER,
          IID_IImagingFactory, (LPVOID*)&pImageFactory);

 // ファイル読み込み
 IImage* pImage= NULL;
 pImageFactory->CreateImageFromFile(pszPath, &pImage);

 ImageInfo imgInfo;
 pImage->GetImageInfo(&imgInfo);

 // ビットマップの作成
 bool bAlpha = (imgInfo.PixelFormat & PIXFMTFLAG_ALPHA)? TRUE: FALSE;
 HDC hBmpDC = CreateCompatibleDC(NULL);
 HBITMAP hBmp = CreateBitmap(imgInfo.Width, imgInfo.Height, 1, (bAlpha)? 32 :24, NULL);
 SelectObject(hBmpDC, hBmp);
 RECT rcBitMap = { 0, 0, imgInfo.Width, imgInfo.Height};
 pImage->Draw(hBmpDC, &rcBitMap, NULL);

 // 解放
 pImage->Release();
 pImageFactory->Release();
 DeleteDC(hBmpDC);

 return hBmp;
}
モバイル | Comments:0
(2009/11/10(Mon) 11:29:54)

200912のログ 200910のログ

Copyright © 混沌雑記帳. All Rights Reserved. [PHPウェブログシステム3 FLEUGELzネットマニア + 独自改造]