そんなわけで、新しい物好きですのでダウンロードしてきました。
そして、64bit 版をぶっこんでみました。
そんなことを今日、ふと思いついてやってみまして、成功しましたので報告します。
Vista (XPでもいけると思いますが・・。)でテストしましたが、
エクスプローラのプレビュー機能を使うと、
画像や動画を中を開かなくても見られるわけですが、
インターネットでおなじみのflv やら mp4 さんが取ってきたはいい物のみられない。
mp4 なんて MPEG-4 の略じゃないの?
と思いつき、早速フォルダの縮小表示の仕組みをチェック。
レジストリで判定しているようで、なら同じデータを打ち込んでやればいいやんけ。と。
そんなこんなでやってみましたら意外といけました。
— 記事がめちゃ長いので分割しますね —
エラーの出るときにどこを参照しているか。ということを追ってみていると、
やっぱり予想通り、通常のプロセスがいじれないようになっている部分をさわっていました。
いじっている部分だけさわれるようにアクセス権限を設定し直したら、問題なく動き始めた・・。
というところです。
これの設定を変更すると、
Effect PresetRenew とか、
Load Effect CurrentName とか、
SaveCurrentMode Open とか、
Save Effect CurrentName とか
Set FF Rec とか。
また、ゲーム起動中に出てくる、このパッドドライバからのエラーも消えます。
ただ、レジストリをいじるので自己責任で。
という、至って純粋な疑問が浮かんだために、ならば実験。
(夏休みですから・・。って関係ないか。
用意したもの
・レジストリに無駄なデータを大量に書き込むバッチスクリプト
・テスト用PC (PenM 2Ghz MEM:512MB)
観察
・最初はどーってことなく肥大化が進む。
system は 117,440,512 バイト
software は 210,239,488 バイトでエラーが出る。
エラーが出た場合はREGコマンドは使用しているDLLファイルがおかしいとエラーを出し始め、
クリップボードについては「クリップボードのエラーです」と出て、
ワークグループの別のPCにアクセスしよう物なら、「リソースが足りないためこの処理を実行できません」とのこと。
ペイントでは大きい画像は勿論いじれないので、スクリーンショットなんて取ることはできず。
動画はとりあえず再生できるようでした。 (720×540 Divx エンコード WMP で再生) ただ、初期化が極端に遅くなります。
マルチタスクがうまくできなくなってきます。
ネットワーク接続自体がおかしくなってきます。
キーボードの入力もおかしくなってきます。
DHCPでのIPアドレスの取得に相当時間がかかります。(5分や6分じゃ終わらない。
どこまでもプログラムが遅くなります。
字を忘れ始めます。
シャットダウンにどこまでも時間がかかります。
でも起動は特に変わらず。ふーしぎー。・・と思ったけど、ログイン画面が出てこない・・。あ。出てきた。
「やうこそ」からデスクトップが出てくるまで時間がかかります。
とまぁ。非常に危ない状態になります。
でも、普通のXP の環境でしたら SOFTWARE ファイルでも、5~6MBぐらいですから・・。
(多くても数十MBぐらい。100MB越えはしないかと。)
レジストリクリーナーを本当に実行しなければならないほど肥大化することはなさそうです。
でも高速化しそうですのでやってしまいます。でも、Vista のメインマシンでは不安なのでやりません。
なんでこうC++ で書かなかったのだと思うところではありますが、
しょうがないのでSDKのRichedit.h に書いてあったのをHSP風に解釈
———————————————————- (Richedit.h より抜粋。 持ってきて良いのかは疑問だけど。)
typedef struct _paraformat2
{
UINT cbSize;
DWORD dwMask;
WORD wNumbering;
WORD wReserved;
LONG dxStartIndent;
LONG dxRightIndent;
LONG dxOffset;
WORD wAlignment;
SHORT cTabCount;
LONG rgxTabs[MAX_TAB_STOPS];
LONG dySpaceBefore; // Vertical spacing before para
LONG dySpaceAfter; // Vertical spacing after para
LONG dyLineSpacing; // Line spacing depending on Rule
SHORT sStyle; // Style handle
BYTE bLineSpacingRule; // Rule for line spacing (see tom.doc)
BYTE bOutlineLevel; // Outline Level
WORD wShadingWeight; // Shading in hundredths of a per cent
WORD wShadingStyle; // Byte 0: style, nib 2: cfpat, 3: cbpat
WORD wNumberingStart; // Starting value for numbering
WORD wNumberingStyle; // Alignment, Roman/Arabic, (), ), ., etc.
WORD wNumberingTab; // Space bet 1st indent and 1st-line text
WORD wBorderSpace; // Border-text spaces (nbl/bdr in pts)
WORD wBorderWidth; // Pen widths (nbl/bdr in half twips)
WORD wBorders; // Border styles (nibble/border)
} PARAFORMAT2;
———————————————————-
参照:MSDN – PARAFORMAT2 Structure()
http://msdn.microsoft.com/en-us/library/bb787942(VS.85).aspx
宣言 | HSP変数 | メンバ名 | オフセット | サイズ | ||||||||||||||||||||
UNIT cbSize | pfm2(0) | cbSize | 0 | 4 | ||||||||||||||||||||
DWORD dwMask | pfm2(1) | dwMask | 4 | 4 | ||||||||||||||||||||
|
pfm2(2) |
|
|
|
||||||||||||||||||||
LONG dxStartIndent | pfm2(3) | dxStartIndent | 12 | 4 | ||||||||||||||||||||
LONG dxRightIndent | pfm2(4) | dxRightIndent | 16 | 4 | ||||||||||||||||||||
LONG dxOffset | pfm2(5) | dxOffset | 20 | 4 | ||||||||||||||||||||
|
pfm2(6) |
|
|
|
||||||||||||||||||||
LONG rgxTabs[MAX_TAB_STOPS] | pfm2(7) ~ pfm2(38) | rgxTabs | 28 | 128 | ||||||||||||||||||||
LONG dySpaceBefore | pfm2(39) | dySpaceBefore | 156 | 4 | ||||||||||||||||||||
LONG dySpaceAfter | pfm2(40) | dySpaceAfter | 160 | 4 | ||||||||||||||||||||
LONG dyLineSpacing | pfm2(41) | dyLineSpacing | 164 | 4 | ||||||||||||||||||||
|
pfm2(42) |
|
|
|
||||||||||||||||||||
|
pfm2(43) |
|
|
|
||||||||||||||||||||
|
pfm2(44) |
|
|
|
||||||||||||||||||||
|
pfm2(45) |
|
|
|
||||||||||||||||||||
|
pfm2(46) |
|
|
|
適当に書いてみましたが、こんな感じかな・・?
あっていればいいけれど。
んー・・。それより前に疑問なのが、
PARAFORMAT2 構造体をHSPで使う人って居るのかなぁ・・。なんて。
もしかして自分だけかも?なんて思いますが、
一応需要があったらいいなー。と
HSPで書く人への補足
cbSize は 188 バイト。
それと、ワード・バイトの書き込みは、
wpoke とか poke とか使うと楽かも。
逆は wpeek と peek
そんなわけで、一応書いてみると、
dim pfm2,47
pfm2(0)=188
ってなかんじで。
そんなわけで、
・間違いを発見した人
-> すぐに教えてください。
・これを見て書く人
-> 少しでも生かせれば幸いです。