★自作プログラム、評価してよスレッド」★1 [無断転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
2015/12/23(水) 17:27:58.33ID:WSDJ3sSn
みなさんのオリジナルプログラムを、プログラム板のみなさんが優しく、時に厳しく、評価してくれるよ。

推奨アップローダー: リンク先の注意事項を良く読んで利用して下さい。
自分で見つけろボケカス!!

注意事項
* 荒らしは徹底スルー。厳守でお願いします。
* ファイル形式とサイズを書く親切。
* URL にジャンルやプログラムのアピールを添えればレスがたくさん貰えるかも。
* 他人に優しく、己に厳しく。叩かれても気にしない。
* 根拠のない嫌がらせの煽りは一切放置。
* 煽る方も煽られる方も、その原因は「自分」にあるということを自覚し、
 スレ本来の主旨に沿って進行させることに努める。
* 基本はソース でカモン!!だが、バイナリでもOK。

テンプレ: 任意と書かれていない項目は必須のこと。
【タイトル】
【URL】
【ジャンル】
【ファイルサイズ】(任意)
【使用ソフト】
【コメント】
【転載】 (任意。デフォルト×。どうしてもどうしても転載して欲しい場合のみ○)

前スレ
まだ無いよ
2016/08/13(土) 21:52:43.01ID:vXCHTXVp
>>304
コンソールうざい
306デフォルトの名無しさん
垢版 |
2016/08/13(土) 21:53:32.32ID:mtPADMhL
                _                           ∧_∧
               ̄   ̄  .                       (´Д`;)←>>305
        . '            ヽ
       /                                    //
      /                                  //
           ,-( ヽ         i               /
    /       メ、ヽ ヽ          |               /
          /  ヽl  |        |            /
        /    // /        !          ,
       /∧_∧// /
     / ( ゚∀/ /
    /   γ    /         /
  θ     ヘ    |        /
         )   |       ,
         /     |
         /  ヘ   |   /
        i  / |  |  /  /   , '    _/  |l
       /  /   |  |    し'   /      / ̄/
      /  /.  /  |       (   _   /  /   〃,
     (  /   /  l  と と )  て ̄          /
     し'   /__) (_(_,J
307デフォルトの名無しさん
垢版 |
2016/08/13(土) 21:55:45.56ID:mtPADMhL
頑張れPen4w
308デフォルトの名無しさん
垢版 |
2016/08/13(土) 21:56:29.09ID:mtPADMhL
      ク    ク || プ  //
      ス  ク ス  | | │ //
       / ス    | | ッ //   ク   ク  ||. プ  //
       /         //   ス ク ス _ | | │ //
         / ̄ ̄\     /  ス   ─ | | ッ //
       /  _ノ  .\     /         //
       |  ( >)(<)       ___
.        |  ⌒(__人__)     ./ ⌒  ⌒\
        |    ` Y⌒l    /  (>) (<)\
.         |    . 人__ ヽ /  ::::::⌒(__人__)⌒ \
        ヽ         }| | |        ` Y⌒ l__   |
         ヽ    ノ、| | \       人_ ヽ /
.         /^l       / /   ,─l       ヽ \
2016/08/13(土) 21:57:02.89ID:vXCHTXVp
>>307
妄想野郎、死ね
2016/08/13(土) 22:03:59.65ID:vXCHTXVp
意味なく陰湿な嫌がらせをして、妄想の中で勝った気になって悲しくないのか、このクズは
311デフォルトの名無しさん
垢版 |
2016/08/13(土) 22:07:55.40ID:mtPADMhL
>>309
CeleronJ1800ぐらいか?wwwwwwwwwwww
312デフォルトの名無しさん
垢版 |
2016/08/13(土) 22:09:05.09ID:mtPADMhL
意味なく陰湿な嫌がらせをして♪
妄想の中で勝った気になって♪
悲しくないのか♪
このクズは♪

ねぇねぇ、作りかけのインベーダーまだー?wwwwwwwwwwwwww
313デフォルトの名無しさん
垢版 |
2016/08/13(土) 22:10:23.03ID:mtPADMhL
                _                           ∧_∧
               ̄   ̄  .                       (´Д`;)←>>310
        . '            ヽ
       /                                    //
      /                                  //
           ,-( ヽ         i               /
    /       メ、ヽ ヽ          |               /
          /  ヽl  |        |            /
        /    // /        !          ,
       /∧_∧// /
     / ( ゚∀/ /
    /   γ    /         /
  θ     ヘ    |        /
         )   |       ,
         /     |
         /  ヘ   |   /
        i  / |  |  /  /   , '    _/  |l
       /  /   |  |    し'   /      / ̄/
      /  /.  /  |       (   _   /  /   〃,
     (  /   /  l  と と )  て ̄          /
     し'   /__) (_(_,J
314デフォルトの名無しさん
垢版 |
2016/08/13(土) 22:10:47.14ID:mtPADMhL
      ク    ク || プ  //
      ス  ク ス  | | │ //
       / ス    | | ッ //   ク   ク  ||. プ  //
       /         //   ス ク ス _ | | │ //
         / ̄ ̄\     /  ス   ─ | | ッ //
       /  _ノ  .\     /         //
       |  ( >)(<)       ___
.        |  ⌒(__人__)     ./ ⌒  ⌒\
        |    ` Y⌒l    /  (>) (<)\
.         |    . 人__ ヽ /  ::::::⌒(__人__)⌒ \
        ヽ         }| | |        ` Y⌒ l__   |
         ヽ    ノ、| | \       人_ ヽ /
.         /^l       / /   ,─l       ヽ \
2016/08/13(土) 22:12:41.15ID:qrOP+l16
放って置くのがいいよ,それにしても片山さんは元気ですね
2016/08/13(土) 22:13:43.45ID:vXCHTXVp
音符とwを連続使用するコイツはコンソールだな。何で比べたがるのかね。ちなみに私のCPUは、
Core i5だ。偏見やバイアスが掛かっていないと死んじゃうのか?
317デフォルトの名無しさん
垢版 |
2016/08/13(土) 22:14:02.19ID:mtPADMhL
手コキ船登場wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
318デフォルトの名無しさん
垢版 |
2016/08/13(土) 22:14:52.61ID:mtPADMhL
>>316
ビデオカードは?w
内蔵?(^。^)
2016/08/13(土) 22:18:35.20ID:qrOP+l16
コテをつけなくなった分,少しは恥を知ったのだろう
そのうち片山さんの実力を知って自滅するだろうから,それまだ待っているのがいい
320デフォルトの名無しさん
垢版 |
2016/08/13(土) 22:20:34.72ID:mtPADMhL
では作りかけのインベーダーができるまで(^。^)
321デフォルトの名無しさん
垢版 |
2016/08/13(土) 22:41:20.41ID:mtPADMhL
      ク    ク || プ  //
      ス  ク ス  | | │ //
       / ス    | | ッ //   ク   ク  ||. プ  //
       /         //   ス ク ス _ | | │ //
         / ̄ ̄\     /  ス   ─ | | ッ //
       /  _ノ  .\     /         //
       |  ( >)(<)       ___
.        |  ⌒(__人__)     ./ ⌒  ⌒\
        |    ` Y⌒l    /  (>) (<)\
.         |    . 人__ ヽ /  ::::::⌒(__人__)⌒ \
        ヽ         }| | |        ` Y⌒ l__   |
         ヽ    ノ、| | \       人_ ヽ /
.         /^l       / /   ,─l       ヽ \
322デフォルトの名無しさん
垢版 |
2016/08/13(土) 22:46:49.04ID:mtPADMhL
                _                           ∧_∧
               ̄   ̄  .                       (´Д`;)←>>319
        . '            ヽ
       /                                    //
      /                                  //
           ,-( ヽ         i               /
    /       メ、ヽ ヽ          |               /
          /  ヽl  |        |            /
        /    // /        !          ,
       /∧_∧// /
     / ( ゚∀/ /
    /   γ    /         /
  θ     ヘ    |        /
         )   |       ,
         /     |
         /  ヘ   |   /
        i  / |  |  /  /   , '    _/  |l
       /  /   |  |    し'   /      / ̄/
      /  /.  /  |       (   _   /  /   〃,
     (  /   /  l  と と )  て ̄          /
     し'   /__) (_(_,J
323デフォルトの名無しさん
垢版 |
2016/08/14(日) 05:46:19.36ID:5+xwRHyc
>>300
>>301
心配をかけたみたいですが、ハードは、CeleronG1610(IvyBridge)、RAM4Gなので、自分の用途では十分早いです。
>>294は、自分に出された問題ではないので、「しばらくは(誰かが練習問題を解くのを)見る側にいます。 」のコメントは自意識過剰だった気がします。
324デフォルトの名無しさん
垢版 |
2016/08/14(日) 05:52:53.99ID:LEn2F7ZW
      ク    ク || プ  //
      ス  ク ス  | | │ //
       / ス    | | ッ //   ク   ク  ||. プ  //
       /         //   ス ク ス _ | | │ //
         / ̄ ̄\     /  ス   ─ | | ッ //
       /  _ノ  .\     /         //
       |  ( >)(<)       ___
.        |  ⌒(__人__)     ./ ⌒  ⌒\
        |    ` Y⌒l    /  (>) (<)\
.         |    . 人__ ヽ /  ::::::⌒(__人__)⌒ \
        ヽ         }| | |        ` Y⌒ l__   |
         ヽ    ノ、| | \       人_ ヽ /
.         /^l       / /   ,─l       ヽ \
325デフォルトの名無しさん
垢版 |
2016/08/14(日) 11:34:34.09ID:wAOzBEo6
>>297
TortoiseSVN1.9.4.27285がVista以降しか対応してなかった
326デフォルトの名無しさん
垢版 |
2016/08/14(日) 11:35:28.94ID:LEn2F7ZW
                _                           ∧_∧
               ̄   ̄  .                       (´Д`;)←>>325
        . '            ヽ
       /                                    //
      /                                  //
           ,-( ヽ         i               /
    /       メ、ヽ ヽ          |               /
          /  ヽl  |        |            /
        /    // /        !          ,
       /∧_∧// /
     / ( ゚∀/ /
    /   γ    /         /
  θ     ヘ    |        /
         )   |       ,
         /     |
         /  ヘ   |   /
        i  / |  |  /  /   , '    _/  |l
       /  /   |  |    し'   /      / ̄/
      /  /.  /  |       (   _   /  /   〃,
     (  /   /  l  と と )  て ̄          /
     し'   /__) (_(_,J
327デフォルトの名無しさん
垢版 |
2016/08/14(日) 12:31:07.67ID:wAOzBEo6
>>325
Linux環境でsvn checkoutコマンドでソースファイルを取得
2016/08/14(日) 13:14:46.39ID:ZaHz4rpv
新入りが来たことだし、カーネル勉強会は、土曜日に限らず不定期で行うことに致す。
329片山博文MZ ◆T6xkBnTXz7B0
垢版 |
2016/08/14(日) 13:18:37.68ID:ZaHz4rpv
ReactOSはオブジェクト指向であり、処理対象をモノ(object)という単位で
考えることが多い。まずは、ユーザーオブジェクトから読み始めるぞ。
win32ss\user\ntuser\object.c
を参照しよう。最初にPUSER_HANDLE_TABLE gHandleTableの定義が見える。
PUSER_HANDLE_TABLE型の定義はwin32ss\include\ntuser.h
の32行目にある。nb_handleというのは、ハンドルのnumberの意味だろう。
object.cの533行目にUserCreateObjectの定義がある。
この関数でユーザーオブジェクトを作成する。
222行目に、グローバル変数ObjectCallbacksが定義されている。
ObjectCallbacksは、UserCreateObjectで参照されており、
ハンドルの作成・解放を行う関数であることがわかる。
ObjectCallbacksにハンドルの種類としてTYPE_WINDOW、TYPE_MENU、
TYPE_INPUTCONTEXTなどがあることが確認できる。
2016/08/14(日) 13:22:15.64ID:ZaHz4rpv
>>325
RosBEにsvn.exeが付属してあるので、多少面倒だが、
RosBEコマンドラインでsvnを使うといい。
2016/08/14(日) 13:28:36.61ID:ZaHz4rpv
UserReferenceObjectは、IUnknown::AddRefみたいな関数で、
UserDereferenceObjectは、IUnknown::Releaseみたいな関数だ。
要は、オブジェクトにデータとして参照カウントを保持して、
カウントがゼロになったときにどこからも参照されていないと
判断して削除するという機構である。
2016/08/14(日) 13:32:41.59ID:ZaHz4rpv
>>325 >>330
http://qiita.com/elmar_leitz/items/1d5792c228c090bad052
http://qiita.com/konweb/items/6effd36aab551b2d6b8f

「svn diff > mypatch.patch」でパッチが作成できるぞ。
2016/08/14(日) 13:39:34.50ID:ZaHz4rpv
OSの中心となる領域をカーネルといい、カーネル以外の領域のことをユーザーランドという。

カーネルではさまざまなルールがある。ZeroMemoryやmemsetは使わない。代わりにRtlZeroMemoryを使う。CRT関数は使わない。ウィンドウを扱うときには、PWND型を使う。などといったものだ。
2016/08/14(日) 13:49:41.61ID:ZaHz4rpv
【練習問題】
ObjectCallbacksにAllocDeskThreadObject関数とAllocThreadObject関数が
登録されているが、この2つの関数の違いについて調べなさい。
2016/08/14(日) 15:06:57.97ID:sUdOErvn
【答え】
AllocDeskThreadObjectはデスクトップのヒープを使ってメモリーを確保するが、
AllocThreadObjectはグローバルユーザーヒープを使ってメモリーを確保する。
また、AllocThreadObjectはpSelfとrpdeskメンバーにデータを格納しない。
2016/08/14(日) 15:22:12.02ID:sUdOErvn
お次はwindow.cを見てみよう。名前通りウィンドウオブジェクトの処理が書かれている。
103行目のUserGetWindowObjectを使えば、ウィンドウハンドルのHWNDからユーザーオブジェクトのPWNDが取得できる。
prefixがIntの関数はAPI内部(internal)の関数だ。
337デフォルトの名無しさん
垢版 |
2016/08/14(日) 16:16:34.64ID:wAOzBEo6
>>335
C言語のmalloc関数を読んだらOS上ではAllocThreadObject関数が呼ばれ、
アプリケーションからは呼べないがカーネルやドライバーがメモリを確保したい場合はAllocDeskThreadObject関数を呼ぶということなのかなぁ
2016/08/14(日) 16:42:25.34ID:sUdOErvn
>>337
AllocThreadObjectとAllocDeskThreadObjectはどちらもユーザーオブジェクトを確保する関数だ。
CRTのmallocとはあまり関係無い。共通点はヒープを使っていることだけだ。
Deskが付いているのはメモリーがデスクトップの所有になることを表す。
デスクトップは1つだけとは限らない。デスクトップが破棄されたとき、そのヒープも使えなくなる。
2016/08/14(日) 16:48:21.60ID:sUdOErvn
ここで「ユーザー」というのはGUI (graphical user interface)のuserのことである。
ウィンドウもメニューもカーソルもユーザーオブジェクトだ。ユーザーランドではそれらをハンドルで扱い、カーネルではユーザーオブジェクトで扱う。
2016/08/14(日) 17:20:09.27ID:sUdOErvn
TYPE_WINDOW、TYPE_MENUなどは、HANDLE_TYPE列挙型として、win32ss\include\ntuser.hの40行目で定義されている。
これらはユーザーオブジェクトの種類を表す。これらの値のいずれかがUserCreateObjectの第5引数typeとして渡される。
UserCreateObjectはtypeを使ってObjectCallbacksを参照する。
ObjectCallbacksは、関数ポインターを所有する構造体の配列だ。
341デフォルトの名無しさん
垢版 |
2016/08/14(日) 17:39:01.93ID:BNnLSgEf
filebrowser.exe(エクスプローラ?) ... フォルダーオプションメニューがグレイアウトしてクリックできなかったこと以外、
特に気になった点はない。ただ、ReactOSで起動したときと違うようなので、バージョンの違いなのか、OSの違いなのかは不明。
終了ボタンを押すと「問題が発生したため、・・・」のダイアログが表示される。
342デフォルトの名無しさん
垢版 |
2016/08/14(日) 17:40:37.23ID:BNnLSgEf
RosBE(ReactOS構築環境)のインストールが終わり、ReactOSのコンパイルをしてみた。
自分で、user32.dllやgdi32.dllを作れるのは感動
WindowsXPにこれらdllをコピーするのは、怖くて流石にできないが、
ReactOSコンパイルでできたexeをXPで実行してみた。
343デフォルトの名無しさん
垢版 |
2016/08/14(日) 17:43:42.18ID:BNnLSgEf
explorer.exe(エクスプローラ) ... 起動しない。
taskmgr.exe(タスクマネージャ) .... WindowsXPのタスクマネージャが実行されるようだ。
explorer.exeとtaskmgr.exeは、なりすまし防止のため、WindowsXPで特別なことをしているのかもしれない。
344デフォルトの名無しさん
垢版 |
2016/08/14(日) 17:46:11.80ID:BNnLSgEf
calc.exe(電卓)、winmine.exe(ゲーム)...こんなもののソースまであるのかと驚きながら動くことを確認。
345デフォルトの名無しさん
垢版 |
2016/08/14(日) 17:47:44.31ID:BNnLSgEf
cmd(コマンドプロンプト)...普通に動く。
346デフォルトの名無しさん
垢版 |
2016/08/14(日) 17:54:50.68ID:BNnLSgEf
Sorry, you have been blockedが表示されて書き込めなかったので、何がおかしいのか調べていたらバラバラになった。
342、344、345、341、343の順で見ることを推奨
347デフォルトの名無しさん
垢版 |
2016/08/14(日) 18:02:27.83ID:BNnLSgEf
>>339
なるほど!ユーザーオブジェクトが理解できれば話の流れがつかめます
2016/08/15(月) 09:06:15.74ID:ZZZ997rF
では続きをやろう。win32ss\user\ntuser\window.cの156行目にIntIsWindow関数がある。
これは指定されたハンドルからPWNDが取得できたらTRUEを返すシンプルな関数だ。
PWNDの定義はwin32ss\include\ntuser.hの656行目にある。
window.cの184行目にIntGetParent関数がある。これは親ウィンドウを返す関数だ。
win32ss\user\user32\windows\window.cには、IsWindow APIとGetParent APIの実体がある。APIと内部関数は多少動作が違うが、似た動作になっている。
2016/08/15(月) 09:36:07.33ID:ZZZ997rF
次に、ウィンドウがどのように作成されるかを見てみよう。
フォルダwin32ssをCreateWindowExでgrepする。win32ss\user\user32\windows\window.cの
452行目にCreateWindowExWの定義が見付かる。中身を読んでみると、(1)システムコントロールが登録されていなかったら登録する。(2) 拡張スタイルにWS_EX_MDICHILDがあれば、あれこれ処理を行う。
(3)その後はUser32CreateWindowExに丸投げ、という形になっている。User32CreateWindowExは、152行目にある。
2016/08/15(月) 10:05:28.44ID:ZZZ997rF
さらにUser32CreateWindowExの中身を見てみると、文字列処理、メニューのロード、後はNtUserCreateWindowExに丸投げ、という形である。
カーネルの文字列処理ではCRT関数は使えないので、LARGE_STRING、UNICODE_STRING構造体、Rtl関数などを使って処理している。
lstrはLARGE_STRINGのprefixで、ustrはUNICODE_STRINGのprefixだ。
NtUserCreateWindowExは、win32ss\user\ntuser\window.cの2386行目。
2016/08/15(月) 10:11:54.93ID:ZZZ997rF
さらにさらに、NtUserCreateWindowExを見てみると、
------
あれこれ初期化
UserEnterExclusive();
pwnd = co_UserCreateWindowEx(...);
...
hwnd = pwnd ? UserHWGetHandle(pwnd) : NULL;
UserLeave();
後片付け
return hwnd;
------
という形になっている。UserHWGetHandleはPWNDからHWNDを取得する関数だ。ここで、
UserEnterExclusive();

UserLeave();
の間のコードは特別な意味がある。
2016/08/15(月) 11:44:56.59ID:ZZZ997rF
UserEnterExclusive();とUserLeave(); の間は「排他制御」(はいたせいぎょ)の区間である。
ReactOSはマルチスレッドOSなので、1つのデータや資源に複数のスレッドからアクセスされることがある。
そのとき、同時にアクセスされたために読み書きされた内容がおかしくなる可能性がある。それを防ぐために、データや資源へのアクセスにロックを掛けて、ロックされているときはロックが解除されるまで待つという機構が排他制御である。
353
垢版 |
2016/08/15(月) 11:49:28.11ID:f5ijFLi5
おかしくなる可能性があるw
2016/08/15(月) 12:29:50.36ID:ZZZ997rF
カーネル内部で使用できるRtl関数の定義は、sdk\lib\rtlにある。
メモリー初期化用のRtlZeroMemoryや、Unicode文字列の初期化のRtlInitUnicodeStringなどが見付かるだろう。
355
垢版 |
2016/08/15(月) 12:31:13.67ID:f5ijFLi5
                _                           ∧_∧
               ̄   ̄  .                       (´Д`;)←>>354
        . '            ヽ
       /                                    //
      /                                  //
           ,-( ヽ         i               /
    /       メ、ヽ ヽ          |               /
          /  ヽl  |        |            /
        /    // /        !          ,
       /∧_∧// /
     / ( ゚∀/ /
    /   γ    /         /
  θ     ヘ    |        /
         )   |       ,
         /     |
         /  ヘ   |   /
        i  / |  |  /  /   , '    _/  |l
       /  /   |  |    し'   /      / ̄/
      /  /.  /  |       (   _   /  /   〃,
     (  /   /  l  と と )  て ̄          /
     し'   /__) (_(_,J
2016/08/15(月) 12:46:55.74ID:ZZZ997rF
で、co_UserCreateWindowExだが、ザッと400行ほどあって、常人はかみ砕いていかないと理解できないだろう。
という訳でこの辺でウィンドウ作成コードの研究をいったんやめる。
357デフォルトの名無しさん
垢版 |
2016/08/15(月) 13:46:44.33ID:X+HSvCFa
ReactOSにはnotepad(メモ帳)のソースコードもある。
WindowsXP上では、このメモ帳で日本語入力が可能なので、攻略を試みたが、
このソースコード内には日本語入力に関する処理がない。
CreateWindowEx関数を呼ぶ際に第二引数に
358デフォルトの名無しさん
垢版 |
2016/08/15(月) 13:48:40.43ID:X+HSvCFa
357の続き
"EDIT"を指定することで、エディター用のウインドウが作られ
このウインドウ内で日本語入力に関する処理をしているようだ。
2016/08/15(月) 13:52:56.53ID:ZZZ997rF
今度はメニューの作成コードを見るぞ。
win32ss\user\user32\windows\menu.cの840行目にCreateMenu APIがあり、これはNtUserxCreateMenuに丸投げしている。
win32ss\user\user32\include\ntwrapper.hの551行目にインライン関数NtUserxCreateMenuがあり、これはNtUserCallNoParam(NOPARAM_ROUTINE_CREATEMENU)を呼ぶだけだ。
NtUserCallNoParamの定義は、win32ss\user\ntuser\simplecall.cの58行目にあり、UserEnterExclusive();とUserLeave();の間でUserCreateMenuを呼んでいる。
2016/08/15(月) 13:57:04.85ID:ZZZ997rF
UserCreateMenuはIntCreateMenuを呼ぶ。win32ss\user\ntuser\menu.cの741行目にIntCreateMenuの定義がある。
IntCreateMenuはUserCreateObjectを呼んでユーザーオブジェクトPMENUを作成し、初期化を行う。PMENUの定義はwin32ss\include\ntuser.hの382行目にある。
2016/08/15(月) 14:00:35.87ID:ZZZ997rF
ここで重要なのは、ユーザーオブジェクトの作成には、排他制御が必要であることだ。
ユーザーオブジェクトを作成するコードは、必ずUserEnterExclusive();とUserLeave();の間に置かなければならない。
362
垢版 |
2016/08/16(火) 03:02:19.41ID:DfP2Zdwz
FreeBASICスレの仕切り屋と同一人物w
363
垢版 |
2016/08/16(火) 03:54:58.12ID:DfP2Zdwz
                _                           ∧_∧
               ̄   ̄  .                       (´Д`;)←>>361
        . '            ヽ
       /                                    //
      /                                  //
           ,-( ヽ         i               /
    /       メ、ヽ ヽ          |               /
          /  ヽl  |        |            /
        /    // /        !          ,
       /∧_∧// /
     / ( ゚∀/ /
    /   γ    /         /
  θ     ヘ    |        /
         )   |       ,
         /     |
         /  ヘ   |   /
        i  / |  |  /  /   , '    _/  |l
       /  /   |  |    し'   /      / ̄/
      /  /.  /  |       (   _   /  /   〃,
     (  /   /  l  と と )  て ̄          /
     し'   /__) (_(_,J
364デフォルトの名無しさん
垢版 |
2016/08/16(火) 09:11:50.59ID:B95h7BkM
VirtualBox上でReactOSを実行し、Guest Additionをインストール。
インストールがうまく行ったので、共有フォルダーを設定し、マイネットワークで開いてみる。
共有フォルダーは認識しているが、フォルダー内が表示されない。
ReactOSは、まだ、フォルダー共有は実装してないみたいだ。
365デフォルトの名無しさん
垢版 |
2016/08/16(火) 12:00:46.15ID:l08xMeAe
ReactOSにVC++2010Expressのインストールを試みた。
isoファイルをダウンロードして、VirtualBoxメニュー->デバイス->光学デバイスで、このファイルを指定。
マイコンピュータから開いてみると、なぜか、README.TXTしかない。
README.TXTには、このディスクはUDFフォーマットなので、ISO-13345 UDFファイルシステムのサポートが必要と書かれていた。
366
垢版 |
2016/08/16(火) 12:30:13.35ID:DfP2Zdwz
FreeBASICスレの仕切り屋と同一人物w
367デフォルトの名無しさん
垢版 |
2016/08/16(火) 15:18:31.08ID:XsLmr0qy
ReactOSのアプリケーションマネージャをみていると、開発カテゴリにWinspy++があった。
このWinspy++は個人が作ったものでMSとは関係ないようだ。
インストールはうまく行かなかったので、ホームページからダウンロードすることにした。
使ってみるとなかなかの出来たが、肝心のWindowsメッセージのトレース機能がない。
MS製のWinspy++は、VisualStudio Express版には含まれていないまずなので、
もし、Windowsメッセージのトレース機能があれば、かなり欲しい。
2016/08/16(火) 22:06:11.12ID:7lLs41/g
>>367
Winspector Spyというツールがあるよ
369
垢版 |
2016/08/17(水) 03:24:17.04ID:+njSpS9N
ホォw
370デフォルトの名無しさん
垢版 |
2016/08/17(水) 09:08:40.51ID:N+7dAX4n
>>368
ありがとう

>>367
MS製の
×Winspy++
○Spy++
371デフォルトの名無しさん
垢版 |
2016/08/17(水) 10:50:49.46ID:N+7dAX4n
「MZ-IME日本語入力」に個人的にはレアなソースコードを見つけた。
setup.cpp328行目の
if (0 != DoSetRegistry1()) {
は、通常、比較演算子(!=)の右辺にリテラル(0)を書くのが一般的のはずだ。
しかし、a変数が0の場合かどうかのif文を書く場合
if (a = 0) {
と誤った場合を考えて、常に左辺にリテラルを書く人がいた。
1行のif文の場合でも{}を付けるのを見た時も思ったが、細かいこだわりのあるコードに思える。
372
垢版 |
2016/08/17(水) 12:01:37.93ID:+njSpS9N
                _                           ∧_∧
               ̄   ̄  .                       (´Д`;)←>>371
        . '            ヽ
       /                                    //
      /                                  //
           ,-( ヽ         i               /
    /       メ、ヽ ヽ          |               /
          /  ヽl  |        |            /
        /    // /        !          ,
       /∧_∧// /
     / ( ゚∀/ /
    /   γ    /         /
  θ     ヘ    |        /
         )   |       ,
         /     |
         /  ヘ   |   /
        i  / |  |  /  /   , '    _/  |l
       /  /   |  |    し'   /      / ̄/
      /  /.  /  |       (   _   /  /   〃,
     (  /   /  l  と と )  て ̄          /
     し'   /__) (_(_,J
2016/08/17(水) 13:41:54.88ID:2al+DBYZ
キー入力を処理する関数は、win32ss\user\ntuser\keyboard.cの787行目のProcessKeyEventである。
gafAsyncKeyStateは、13行目にあり、これは非同期のキー状態を表しているようだ。
入力したキーがホットキーならば、824行目でco_UserProcessHotKeysが呼ばれ、
他に処理はされない。IntFixVkは247行目にあり、VK_SHIFTなどをVK_RSHIFTやVK_LSHIFTなどに変える関数だ。
2016/08/17(水) 13:43:04.85ID:2al+DBYZ
835行目でIntGetFocusMessageQueue関数が呼ばれる。
文字通り、フォーカスされたメッセージキューの取得である。
キューというのは待ち行列のことだ。キー入力は待ち行列で処理される。
PUSER_MESSAGE_QUEUEは、win32ss\user\ntuser\msgqueue.hの44行目で定義されている。
2016/08/17(水) 13:43:54.42ID:2al+DBYZ
VK_SNAPSHOTは、[PrintScreen]キーを表している。
[PrintScreen]キーが押されていれば、keyboard.cの890行目あたりで
SnapWindowが呼ばれるはずだ。それ以外の場合、MsqPostMessageにより、
フォーカスのあるウィンドウ、あるいはアクティブなウィンドウに
キーメッセージがポストされる。
2016/08/17(水) 13:44:40.86ID:2al+DBYZ
PTHREADINFO pti;というのは、スレッドの情報を表していると考えられる。
THREADINFO構造体の定義は、win32ss\user\ntuser\win32.hの82行目に見つかる。
メッセージキューの処理は、win32ss\user\ntuser\msgqueue.cに記述されている。
メッセージキュー関数のprefixはMsqだ。MsqPostQuitMessageなどのなじみの
ある処理も記述されているのがみられる。メッセージキューは
ユーザーオブジェクトではないが、参照カウントで管理されている。
2016/08/17(水) 13:45:34.54ID:2al+DBYZ
MsqPostMessageでポストされたキー入力メッセージはTranslateMessage APIにより、
WM_CHAR、WM_SYSCHARに変換される。その処理を行っているのが、
win32ss\user\ntuser\keyboard.cの1125行目のIntTranslateKbdMessageだ。

ここまで入力プロセスを見てきた。IMEを有効にするには、これらの処理のどこかで
IMEと対話するための中間処理を記述しなければいけない。
2016/08/17(水) 13:53:25.61ID:MpsnqyQm
keyboard.cのIntTranslateKbdMessageを見てみよう。1144行で関係ないメッセージは跳ね飛ばされる。
PsGetCurrentThreadWin32Threadでスレッド情報を取得して、
キーボードレイアウトとキーボードテーブルを参照する。
必要ならばpti->pClientInfo->hKLを更新し、キーボードテーブルがなければreturn FALSEする。
wParamがVK_PACKETならば特殊な処理を行う。
主処理はIntToUnicodeExで行われる。変換を行った文字は、
MsqPostMessageでWM_CHAR、WM_SYSCHAR、WM_DEADCHAR、もしくは
WM_SYSDEADCHARとしてメッセージキューへポストされる。
2016/08/17(水) 13:59:32.04ID:MpsnqyQm
【練習問題】
CORE-10064を解決せよ。
https://jira.reactos.org/browse/CORE-10064
これはkeybd_eventのスキャンコード処理の問題だ。
2016/08/17(水) 14:01:34.42ID:MpsnqyQm
訂正。
(誤) keybd_event
(正) SendInput

スクリーンキーボードのソースは、base\applications\oskにある。
381デフォルトの名無しさん
垢版 |
2016/08/17(水) 14:53:52.96ID:N+7dAX4n
>>379
英語の読解力がなくてよくわからないけど、
ロシア版ReactOSをインストールして、英語キーボードを選択したらこの問題が起きると書いているのでしょうか?
数日前にダウンロードした日本語版ReactOSを使っているけど、日本語配列と英語配列のキーボードを変えると、その言語のスクリーンキーボードに切り替える。
382デフォルトの名無しさん
垢版 |
2016/08/17(水) 15:02:19.19ID:N+7dAX4n
英語はまったくダメなので、よければついでに英語について教えてください。
On-screen keyboard should respect selected input language
は、
On-screen Keyboardは、選択されたinput languageに従うべきだ。
と訳すと思うけど、
On-screen Keyboardは、選択されたinput languageに従うだろう。
とも訳せると思う。
shouldを...べきだと訳す場合と、...だろうと訳す場合の違いはどこにあります?
2016/08/17(水) 15:09:42.69ID:GiBHZvBN
> Default selected input language for my russian installation of ReactOS is english.
(訳) ロシア語でインストールした私のReactOSに対する既定の選択された入力言語は英語だ。

> When I try to use osk.exe, I see only russian letters and can't switch it to english mode.
(訳) oskを試したとき、ロシア語の文字しか見えず、英語モードに切り替えられなかった。
2016/08/17(水) 15:12:29.63ID:GiBHZvBN
> On-screen keyboard should respect selected input language
(訳) スクリーンキーボードは選択済みの入力言語を尊重すべきだ
385デフォルトの名無しさん
垢版 |
2016/08/17(水) 15:26:35.96ID:N+7dAX4n
>>382-384
ありがとうございます。
英語が読めないのはかなり壁です。
2016/08/17(水) 15:55:25.36ID:GiBHZvBN
入力言語を変えるダイアログのコードはdll\cpl\inputにある。
実際に変える処理をしているのは
dll\cpl\input\input_list.cの220行目のInputList_Processだ。
2016/08/17(水) 15:59:14.37ID:GiBHZvBN
263行目、WM_INPUTLANGCHANGEREQUESTメッセージをシステム全体に送信している。
2016/08/17(水) 15:59:32.95ID:GiBHZvBN
263行目、WM_INPUTLANGCHANGEREQUESTメッセージをシステム全体にポストしている。
389デフォルトの名無しさん
垢版 |
2016/08/17(水) 21:47:04.72ID:5v1oTvvU
shouldは、仮定法だから、だろうと訳すことは、ない。
そうなるべきであるにもかかわらず、実際は、そうなってない。

you shouldになってたら、
してないじゃないか。なぜしないのか。したほうがいいという感じになる
2016/08/18(木) 03:11:04.01ID:b4WBSJ45
IMEをインストールするとレジストリはどうなる?
IMEの正当性のチェック方法は? IMEの読み込み方法は? 読み込むのはいつ?
入力コンテキストの作成と破棄はいつ? 入力コンテキストはどこにどのように関連付けされるか?
キーボードレイアウトを読み込むときIMEはどうなる? キーボードレイアウトの切り替えをどうやる? キーボードレイアウトがIMEであることの判定方法は?
2016/08/18(木) 03:18:36.86ID:b4WBSJ45
IMMはIMEをどこにどのようにロードする? そのタイミングは?
IMMはどうやってIME/Appと通信を行う? そのタイミングは?
IMM/IMEはメッセージキューをどのように使う?
user32.dllとimm32.dllの関係はどうなっている?
コントロールパネルの入力言語設定でどうやってIMEを切り替える?
2016/08/18(木) 03:24:11.68ID:b4WBSJ45
ReactOSで日本語入力するためには、IMMを実装しないといけない。
それもWindows2000とある程度互換性のある実装でなければならない。
正しい実装かどうか確認するには、やはりテストするしかない。
393デフォルトの名無しさん
垢版 |
2016/08/18(木) 09:44:40.13ID:oszSDXXJ
>>389
ありがとうございます。
仮定法のshouldの場合、してないじゃないか。なぜしないのか。したほうがいい。という感じと覚えます。

仮定法についても、もう少し聞きたいのですが、その前に、
英語についてインターネットで調べている時、マッカーサが
394デフォルトの名無しさん
垢版 |
2016/08/18(木) 09:46:34.36ID:oszSDXXJ
393の続き
「I shall return」と言ったというのを見ました。
willを使わなかったのは、強い意思や使命感の現れと書いてました。

On-screen keyboard should respect selected input language
でwouldを使ってないのは、
この人は、「出来てて当然なのに、なんで出来てないんだよ」という気持ちがあるということなのでしょうか?
それとも、
case 1.この文はwouldには置き換えられない。
case 2.shouldの方がwouldより、強い口調になるが、仲間内でwouldを使うとかえって他人行儀になる。
case 3.この文では、shouldとwouldのどちらを使っても違いがない。
のケースに当てはまるのでしょうか?
395デフォルトの名無しさん
垢版 |
2016/08/18(木) 11:06:41.32ID:oszSDXXJ
>>390-392
Windowsの内部構造について考える機会がなく、ReactOSを知って初めて内部構造を意識するようになった。
当初、imm32.dllとimeがあれば、日本語入力ができるものかと考えてた。
しかし、そんな単純なものではないことがわかった。
wine(Windowsエミュレータ)のメモ帳では日本語入力ができた。
wineのimm.cを見ると最終的にはXIMプロトコルを使って日本語入力していることがわかった。
ただ、wineがwindows2000の日本語入力と互換性を考えて書かれているのかどうはわからない。
自分にはゴール地点が見えない。
2016/08/18(木) 12:56:47.11ID:BblHlrmj
>>379
自己解決。usetupの言語の登録順が逆だった。
2016/08/18(木) 12:59:48.76ID:BblHlrmj
キーボードレイアウトの型PKLは、win32ss\user\ntuser\input.hの
26行目に定義されている。この定義は線形リストのようにも見える。
最後のメンバーPIMEINFOEX piiexはIMEの情報を表しているようだ。
PIMEINFOEXは、win32ss\include\ntuser.hの1151行目に定義されている。
IMEINFOは、sdk\include\psdk\imm.hに定義済みだ。
win32ss\user\ntuser\ntstubs.cに実装されるべきスタブ関数がある。
NtUserCreateInputContextなど、名前からは入力コンテキストに関係が
ありような関数も見られる。関数の型がわからないので、実装は困難を極める。
直接的な逆工学は禁止なので、今のところ、関数名から推定するしかない。
2016/08/18(木) 13:15:44.65ID:BblHlrmj
【練習問題】
https://jira.reactos.org/browse/CORE-9692
のサブタスクのいずれかを解決せよ。
2016/08/18(木) 13:37:01.37ID:BblHlrmj
>>394
case 1。shouldは「べき」で覚えれば間違いない。
2016/08/18(木) 13:38:56.18ID:BblHlrmj
教育用英和辞書には、英単語の意味が詳しく書かれているはずだ。
401デフォルトの名無しさん
垢版 |
2016/08/18(木) 13:40:26.23ID:KMSpo5SC
>>399
んじゃゲームパッドの場合はどうなるんだ?w
2016/08/18(木) 13:47:38.09ID:tfwpzgEb
IMEの文書についてはこちらを参照。
https://github.com/katahiromz/mzimeja/tree/master/doc

IMEファイルはDLLファイルでもある。IMEの読み込みではDLLとして、
LoadLibrary[Ex]/GetProcAddressか、その内部関数が使われるはずだ。
ime-api_ja.pdfを参照すると、ImeInquire、ImeConversionList、ImeConfigure、
ImeDestroy、ImeEscape、ImeSetActiveContext、ImeProcessKey、NotifyIME、
ImeSelect、ImeSetCompositionString、ImeToAsciiEx、ImeRegisterWord、
ImeUnregisterWord、ImeGetRegisterWordStyle、ImeEnumRegisterWord、
ImeGetImeMenuItemsなどといったたくさんの関数をGetProcAddressで
取得する必要がある。
403デフォルトの名無しさん
垢版 |
2016/08/18(木) 13:48:52.20ID:KMSpo5SC
で、ゲームパッドの場合はどうなるんだ?w
2016/08/18(木) 14:31:17.10ID:KMSpo5SC
まあ、MZうyちゃーーーん♪がどんなブロック崩しを作るか楽しみにしてるよw
本人のセンスが出やすいw
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況