みなさんのオリジナルプログラムを、プログラム板のみなさんが優しく、時に厳しく、評価してくれるよ。
推奨アップローダー: リンク先の注意事項を良く読んで利用して下さい。
自分で見つけろボケカス!!
注意事項
* 荒らしは徹底スルー。厳守でお願いします。
* ファイル形式とサイズを書く親切。
* URL にジャンルやプログラムのアピールを添えればレスがたくさん貰えるかも。
* 他人に優しく、己に厳しく。叩かれても気にしない。
* 根拠のない嫌がらせの煽りは一切放置。
* 煽る方も煽られる方も、その原因は「自分」にあるということを自覚し、
スレ本来の主旨に沿って進行させることに努める。
* 基本はソース でカモン!!だが、バイナリでもOK。
テンプレ: 任意と書かれていない項目は必須のこと。
【タイトル】
【URL】
【ジャンル】
【ファイルサイズ】(任意)
【使用ソフト】
【コメント】
【転載】 (任意。デフォルト×。どうしてもどうしても転載して欲しい場合のみ○)
前スレ
まだ無いよ
探検
★自作プログラム、評価してよスレッド」★1 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
2015/12/23(水) 17:27:58.33ID:WSDJ3sSn
289デフォルトの名無しさん
2016/08/13(土) 17:54:49.23ID:NdwW63SR >>288
PearOSのWikiを見てみた。PowerPCコードをx86コードに変換するエミュレータなのがわかる。
PearOSのWikiを見てみた。PowerPCコードをx86コードに変換するエミュレータなのがわかる。
290片山博文MZ ◆T6xkBnTXz7B0
2016/08/13(土) 18:11:28.68ID:vXCHTXVp >>286-287
新入りさん、こんにちは。我々は帝国に背いた反乱軍だ。
アカウントの登録の際には偽名を使いたまえ。ReactOSの改良と日本語化が進まなければ、
毎年莫大な金額をどこかの企業に奪われてしまう。基本システムを解放し、オープン化せよ。これは我々に出題されたパズルである。
新入りさん、こんにちは。我々は帝国に背いた反乱軍だ。
アカウントの登録の際には偽名を使いたまえ。ReactOSの改良と日本語化が進まなければ、
毎年莫大な金額をどこかの企業に奪われてしまう。基本システムを解放し、オープン化せよ。これは我々に出題されたパズルである。
291デフォルトの名無しさん
2016/08/13(土) 18:31:11.99ID:NdwW63SR >>290
はじめまして。
ちなみに、262が2chへの初書き込みになります。
いつもは見ているだけですが、あまりにも感動したので思わず書き込んでしまいました。
262、264、286、287、289はすべて自分の書き込みです。2ch語が今ひとつわかってないので口調がコロコロ変わってしまいます。
はじめまして。
ちなみに、262が2chへの初書き込みになります。
いつもは見ているだけですが、あまりにも感動したので思わず書き込んでしまいました。
262、264、286、287、289はすべて自分の書き込みです。2ch語が今ひとつわかってないので口調がコロコロ変わってしまいます。
292デフォルトの名無しさん
2016/08/13(土) 18:48:34.08ID:NdwW63SR 291続き
未だにWindowsXPを使っています。しかし、いずれ無理が来ると思いLinuxに乗り換えている最中です。
ReactOSが実用化できれば、長年使ってたAPIに別れを告げなくてもよくなります。
救世主の時代も有ったと思います。いつ暗黒面に落ちたのかわかりませんが、自分も帝国のやり方に反対する人の一人です。
未だにWindowsXPを使っています。しかし、いずれ無理が来ると思いLinuxに乗り換えている最中です。
ReactOSが実用化できれば、長年使ってたAPIに別れを告げなくてもよくなります。
救世主の時代も有ったと思います。いつ暗黒面に落ちたのかわかりませんが、自分も帝国のやり方に反対する人の一人です。
293片山博文MZ ◆T6xkBnTXz7B0
2016/08/13(土) 19:00:17.83ID:vXCHTXVp ReactOSのデバッグ出力について解説しよう。ROS起動時に表示されるブートメニューでDebugを選ぶと、シリアルポートにデバッグ出力するようになる。
ROSをインストールしたVirtualBoxでシリアルポートを有効にして、指定したパスのRawファイルに出力するようにすれば、シリアルポートの出力がテキストとして得られる。
ソースのある場所でデバッグ出力したい場合は、デバッグ出力したいソースファイルで<debug.h>を#includeし、「#define NDEBUG」という行があればコメントにする。
そしてDPRINT("Hello, ReactOS\n");と記述すれば、そこが実行されたときに「Hello, ReactOS」と出力される。DPRINTはprintfと同じ文法だ。
ROSをインストールしたVirtualBoxでシリアルポートを有効にして、指定したパスのRawファイルに出力するようにすれば、シリアルポートの出力がテキストとして得られる。
ソースのある場所でデバッグ出力したい場合は、デバッグ出力したいソースファイルで<debug.h>を#includeし、「#define NDEBUG」という行があればコメントにする。
そしてDPRINT("Hello, ReactOS\n");と記述すれば、そこが実行されたときに「Hello, ReactOS」と出力される。DPRINTはprintfと同じ文法だ。
294片山博文MZ ◆T6xkBnTXz7B0
2016/08/13(土) 19:11:59.43ID:vXCHTXVp 【練習問題】
CopyRect APIを実装した関数の定義を見つけ出し、その関数にDPRINT("Hello, ReactOS\n");のコードを追加して、シリアルポートに出力させることを確認せよ。
CopyRect APIを実装した関数の定義を見つけ出し、その関数にDPRINT("Hello, ReactOS\n");のコードを追加して、シリアルポートに出力させることを確認せよ。
295デフォルトの名無しさん
2016/08/13(土) 19:26:24.44ID:NdwW63SR https://github.com/reactos/reactos/blob/master/reactos/win32ss/user/user32/windows/rect.c
の44行目に追加
ソースはダウンロードしてません。しばらくは見る側にいます。
の44行目に追加
ソースはダウンロードしてません。しばらくは見る側にいます。
296デフォルトの名無しさん
2016/08/13(土) 19:29:25.02ID:NdwW63SR 厚かましいとはわかっていますが、
>>293のような情報はとても欲しいです。
>>293のような情報はとても欲しいです。
297片山博文MZ ◆T6xkBnTXz7B0
2016/08/13(土) 20:20:00.47ID:vXCHTXVp 次はバージョン管理システムについてだ。
ReactOSではバージョン管理システムにSubversion (SVN)を採用している。Gitでもパッチを作成できるが、リビジョンの同期のためにSVNの利用をオススメする。
WindowsでSVNを利用するには、TortoiseSVNをインストールするのが一番簡単だ。
SVNで管理されたフォルダには.svnという隠しフォルダがあり、ここですべてのバージョン情報を管理している。
ReactOSではバージョン管理システムにSubversion (SVN)を採用している。Gitでもパッチを作成できるが、リビジョンの同期のためにSVNの利用をオススメする。
WindowsでSVNを利用するには、TortoiseSVNをインストールするのが一番簡単だ。
SVNで管理されたフォルダには.svnという隠しフォルダがあり、ここですべてのバージョン情報を管理している。
298片山博文MZ ◆T6xkBnTXz7B0
2016/08/13(土) 20:26:06.58ID:vXCHTXVp バージョン管理に新しいファイルを追加したい場合は、適当な場所にファイルを置き、
右クリックして、TortoiseSVNメニューの「Add」を選ぶ。
フォルダーを変更前に戻したい場合は、フォルダを右クリックして、TortoiseSVNメニューの「Revert」を選ぶ。
変更内容のパッチを作成したい場合は、SVNのルートフォルダを右クリックして「Create Patch」を選ぶ。
逆にパッチを適用したい場合は「Apply Patch」を選ぶ。
右クリックして、TortoiseSVNメニューの「Add」を選ぶ。
フォルダーを変更前に戻したい場合は、フォルダを右クリックして、TortoiseSVNメニューの「Revert」を選ぶ。
変更内容のパッチを作成したい場合は、SVNのルートフォルダを右クリックして「Create Patch」を選ぶ。
逆にパッチを適用したい場合は「Apply Patch」を選ぶ。
299片山博文MZ ◆T6xkBnTXz7B0
2016/08/13(土) 20:37:50.19ID:vXCHTXVp パッチというのはテキストファイルの変更内容を表すデータであり、これを投稿することで変更内容を伝えることができる。
Linux環境では、パッチを作成するプログラムの「diff」と、パッチを適用するための「patch」というプログラムが有名だ。
通常、パッチだけではバイナリーファイルを表すことはできない。バイナリーが必要ならば別途添付する必要がある。
Linux環境では、パッチを作成するプログラムの「diff」と、パッチを適用するための「patch」というプログラムが有名だ。
通常、パッチだけではバイナリーファイルを表すことはできない。バイナリーが必要ならば別途添付する必要がある。
300片山博文MZ ◆T6xkBnTXz7B0
2016/08/13(土) 21:09:43.98ID:vXCHTXVp まともな開発機がないとプログラミングはキツいよ。価格.comで中古のパソコンを探してみたら?
301片山博文MZ ◆T6xkBnTXz7B0
2016/08/13(土) 21:28:52.15ID:vXCHTXVp お金は欲しいか?
302デフォルトの名無しさん
2016/08/13(土) 21:38:45.09ID:mtPADMhL >>300
んで、Pen4から買い換えたか?w
んで、Pen4から買い換えたか?w
303片山博文MZ ◆T6xkBnTXz7B0
2016/08/13(土) 21:48:42.11ID:vXCHTXVp また妄想癖が
304デフォルトの名無しさん
2016/08/13(土) 21:51:16.32ID:mtPADMhL _ ∧_∧
 ̄  ̄ . (´Д`;)←>>303
. ' ヽ
/ //
/ //
,-( ヽ i /
/ メ、ヽ ヽ | /
/ ヽl | | /
/ // / ! ,
/∧_∧// /
/ ( ゚∀/ /
/ γ / /
θ ヘ | /
) | ,
/ |
/ ヘ | /
i / | | / / , ' _/ |l
/ / | | し' / / ̄/
/ /. / | ( _ / / 〃,
( / / l と と ) て ̄ /
し' /__) (_(_,J
 ̄  ̄ . (´Д`;)←>>303
. ' ヽ
/ //
/ //
,-( ヽ i /
/ メ、ヽ ヽ | /
/ ヽl | | /
/ // / ! ,
/∧_∧// /
/ ( ゚∀/ /
/ γ / /
θ ヘ | /
) | ,
/ |
/ ヘ | /
i / | | / / , ' _/ |l
/ / | | し' / / ̄/
/ /. / | ( _ / / 〃,
( / / l と と ) て ̄ /
し' /__) (_(_,J
306デフォルトの名無しさん
2016/08/13(土) 21:53:32.32ID:mtPADMhL _ ∧_∧
 ̄  ̄ . (´Д`;)←>>305
. ' ヽ
/ //
/ //
,-( ヽ i /
/ メ、ヽ ヽ | /
/ ヽl | | /
/ // / ! ,
/∧_∧// /
/ ( ゚∀/ /
/ γ / /
θ ヘ | /
) | ,
/ |
/ ヘ | /
i / | | / / , ' _/ |l
/ / | | し' / / ̄/
/ /. / | ( _ / / 〃,
( / / l と と ) て ̄ /
し' /__) (_(_,J
 ̄  ̄ . (´Д`;)←>>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 ヽ \
ス ク ス | | │ //
/ ス | | ッ // ク ク ||. プ //
/ // ス ク ス _ | | │ //
/ ̄ ̄\ / ス ─ | | ッ //
/ _ノ .\ / //
| ( >)(<) ___
. | ⌒(__人__) ./ ⌒ ⌒\
| ` Y⌒l / (>) (<)\
. | . 人__ ヽ / ::::::⌒(__人__)⌒ \
ヽ }| | | ` Y⌒ l__ |
ヽ ノ、| | \ 人_ ヽ /
. /^l / / ,─l ヽ \
310片山博文MZ ◆T6xkBnTXz7B0
2016/08/13(土) 22:03:59.65ID:vXCHTXVp 意味なく陰湿な嫌がらせをして、妄想の中で勝った気になって悲しくないのか、このクズは
311デフォルトの名無しさん
2016/08/13(土) 22:07:55.40ID:mtPADMhL >>309
CeleronJ1800ぐらいか?wwwwwwwwwwww
CeleronJ1800ぐらいか?wwwwwwwwwwww
312デフォルトの名無しさん
2016/08/13(土) 22:09:05.09ID:mtPADMhL 意味なく陰湿な嫌がらせをして♪
妄想の中で勝った気になって♪
悲しくないのか♪
このクズは♪
ねぇねぇ、作りかけのインベーダーまだー?wwwwwwwwwwwwww
妄想の中で勝った気になって♪
悲しくないのか♪
このクズは♪
ねぇねぇ、作りかけのインベーダーまだー?wwwwwwwwwwwwww
313デフォルトの名無しさん
2016/08/13(土) 22:10:23.03ID:mtPADMhL _ ∧_∧
 ̄  ̄ . (´Д`;)←>>310
. ' ヽ
/ //
/ //
,-( ヽ i /
/ メ、ヽ ヽ | /
/ ヽl | | /
/ // / ! ,
/∧_∧// /
/ ( ゚∀/ /
/ γ / /
θ ヘ | /
) | ,
/ |
/ ヘ | /
i / | | / / , ' _/ |l
/ / | | し' / / ̄/
/ /. / | ( _ / / 〃,
( / / l と と ) て ̄ /
し' /__) (_(_,J
 ̄  ̄ . (´Д`;)←>>310
. ' ヽ
/ //
/ //
,-( ヽ i /
/ メ、ヽ ヽ | /
/ ヽl | | /
/ // / ! ,
/∧_∧// /
/ ( ゚∀/ /
/ γ / /
θ ヘ | /
) | ,
/ |
/ ヘ | /
i / | | / / , ' _/ |l
/ / | | し' / / ̄/
/ /. / | ( _ / / 〃,
( / / l と と ) て ̄ /
し' /__) (_(_,J
314デフォルトの名無しさん
2016/08/13(土) 22:10:47.14ID:mtPADMhL ク ク || プ //
ス ク ス | | │ //
/ ス | | ッ // ク ク ||. プ //
/ // ス ク ス _ | | │ //
/ ̄ ̄\ / ス ─ | | ッ //
/ _ノ .\ / //
| ( >)(<) ___
. | ⌒(__人__) ./ ⌒ ⌒\
| ` Y⌒l / (>) (<)\
. | . 人__ ヽ / ::::::⌒(__人__)⌒ \
ヽ }| | | ` Y⌒ l__ |
ヽ ノ、| | \ 人_ ヽ /
. /^l / / ,─l ヽ \
ス ク ス | | │ //
/ ス | | ッ // ク ク ||. プ //
/ // ス ク ス _ | | │ //
/ ̄ ̄\ / ス ─ | | ッ //
/ _ノ .\ / //
| ( >)(<) ___
. | ⌒(__人__) ./ ⌒ ⌒\
| ` Y⌒l / (>) (<)\
. | . 人__ ヽ / ::::::⌒(__人__)⌒ \
ヽ }| | | ` Y⌒ l__ |
ヽ ノ、| | \ 人_ ヽ /
. /^l / / ,─l ヽ \
316片山博文MZ ◆T6xkBnTXz7B0
2016/08/13(土) 22:13:43.45ID:vXCHTXVp 音符とwを連続使用するコイツはコンソールだな。何で比べたがるのかね。ちなみに私のCPUは、
Core i5だ。偏見やバイアスが掛かっていないと死んじゃうのか?
Core i5だ。偏見やバイアスが掛かっていないと死んじゃうのか?
317デフォルトの名無しさん
2016/08/13(土) 22:14:02.19ID:mtPADMhL 手コキ船登場wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
318デフォルトの名無しさん
2016/08/13(土) 22:14:52.61ID:mtPADMhL コテをつけなくなった分,少しは恥を知ったのだろう
そのうち片山さんの実力を知って自滅するだろうから,それまだ待っているのがいい
そのうち片山さんの実力を知って自滅するだろうから,それまだ待っているのがいい
320デフォルトの名無しさん
2016/08/13(土) 22:20:34.72ID:mtPADMhL では作りかけのインベーダーができるまで(^。^)
321デフォルトの名無しさん
2016/08/13(土) 22:41:20.41ID:mtPADMhL ク ク || プ //
ス ク ス | | │ //
/ ス | | ッ // ク ク ||. プ //
/ // ス ク ス _ | | │ //
/ ̄ ̄\ / ス ─ | | ッ //
/ _ノ .\ / //
| ( >)(<) ___
. | ⌒(__人__) ./ ⌒ ⌒\
| ` Y⌒l / (>) (<)\
. | . 人__ ヽ / ::::::⌒(__人__)⌒ \
ヽ }| | | ` Y⌒ l__ |
ヽ ノ、| | \ 人_ ヽ /
. /^l / / ,─l ヽ \
ス ク ス | | │ //
/ ス | | ッ // ク ク ||. プ //
/ // ス ク ス _ | | │ //
/ ̄ ̄\ / ス ─ | | ッ //
/ _ノ .\ / //
| ( >)(<) ___
. | ⌒(__人__) ./ ⌒ ⌒\
| ` Y⌒l / (>) (<)\
. | . 人__ ヽ / ::::::⌒(__人__)⌒ \
ヽ }| | | ` Y⌒ l__ |
ヽ ノ、| | \ 人_ ヽ /
. /^l / / ,─l ヽ \
322デフォルトの名無しさん
2016/08/13(土) 22:46:49.04ID:mtPADMhL _ ∧_∧
 ̄  ̄ . (´Д`;)←>>319
. ' ヽ
/ //
/ //
,-( ヽ i /
/ メ、ヽ ヽ | /
/ ヽl | | /
/ // / ! ,
/∧_∧// /
/ ( ゚∀/ /
/ γ / /
θ ヘ | /
) | ,
/ |
/ ヘ | /
i / | | / / , ' _/ |l
/ / | | し' / / ̄/
/ /. / | ( _ / / 〃,
( / / l と と ) て ̄ /
し' /__) (_(_,J
 ̄  ̄ . (´Д`;)←>>319
. ' ヽ
/ //
/ //
,-( ヽ i /
/ メ、ヽ ヽ | /
/ ヽl | | /
/ // / ! ,
/∧_∧// /
/ ( ゚∀/ /
/ γ / /
θ ヘ | /
) | ,
/ |
/ ヘ | /
i / | | / / , ' _/ |l
/ / | | し' / / ̄/
/ /. / | ( _ / / 〃,
( / / l と と ) て ̄ /
し' /__) (_(_,J
323デフォルトの名無しさん
2016/08/14(日) 05:46:19.36ID:5+xwRHyc324デフォルトの名無しさん
2016/08/14(日) 05:52:53.99ID:LEn2F7ZW ク ク || プ //
ス ク ス | | │ //
/ ス | | ッ // ク ク ||. プ //
/ // ス ク ス _ | | │ //
/ ̄ ̄\ / ス ─ | | ッ //
/ _ノ .\ / //
| ( >)(<) ___
. | ⌒(__人__) ./ ⌒ ⌒\
| ` Y⌒l / (>) (<)\
. | . 人__ ヽ / ::::::⌒(__人__)⌒ \
ヽ }| | | ` Y⌒ l__ |
ヽ ノ、| | \ 人_ ヽ /
. /^l / / ,─l ヽ \
ス ク ス | | │ //
/ ス | | ッ // ク ク ||. プ //
/ // ス ク ス _ | | │ //
/ ̄ ̄\ / ス ─ | | ッ //
/ _ノ .\ / //
| ( >)(<) ___
. | ⌒(__人__) ./ ⌒ ⌒\
| ` Y⌒l / (>) (<)\
. | . 人__ ヽ / ::::::⌒(__人__)⌒ \
ヽ }| | | ` Y⌒ l__ |
ヽ ノ、| | \ 人_ ヽ /
. /^l / / ,─l ヽ \
325デフォルトの名無しさん
2016/08/14(日) 11:34:34.09ID:wAOzBEo6 >>297
TortoiseSVN1.9.4.27285がVista以降しか対応してなかった
TortoiseSVN1.9.4.27285がVista以降しか対応してなかった
326デフォルトの名無しさん
2016/08/14(日) 11:35:28.94ID:LEn2F7ZW _ ∧_∧
 ̄  ̄ . (´Д`;)←>>325
. ' ヽ
/ //
/ //
,-( ヽ i /
/ メ、ヽ ヽ | /
/ ヽl | | /
/ // / ! ,
/∧_∧// /
/ ( ゚∀/ /
/ γ / /
θ ヘ | /
) | ,
/ |
/ ヘ | /
i / | | / / , ' _/ |l
/ / | | し' / / ̄/
/ /. / | ( _ / / 〃,
( / / l と と ) て ̄ /
し' /__) (_(_,J
 ̄  ̄ . (´Д`;)←>>325
. ' ヽ
/ //
/ //
,-( ヽ i /
/ メ、ヽ ヽ | /
/ ヽl | | /
/ // / ! ,
/∧_∧// /
/ ( ゚∀/ /
/ γ / /
θ ヘ | /
) | ,
/ |
/ ヘ | /
i / | | / / , ' _/ |l
/ / | | し' / / ̄/
/ /. / | ( _ / / 〃,
( / / l と と ) て ̄ /
し' /__) (_(_,J
327デフォルトの名無しさん
2016/08/14(日) 12:31:07.67ID:wAOzBEo6 >>325
Linux環境でsvn checkoutコマンドでソースファイルを取得
Linux環境でsvn checkoutコマンドでソースファイルを取得
328片山博文MZ ◆T6xkBnTXz7B0
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などがあることが確認できる。
考えることが多い。まずは、ユーザーオブジェクトから読み始めるぞ。
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などがあることが確認できる。
330片山博文MZ ◆T6xkBnTXz7B0
2016/08/14(日) 13:22:15.64ID:ZaHz4rpv331片山博文MZ ◆T6xkBnTXz7B0
2016/08/14(日) 13:28:36.61ID:ZaHz4rpv UserReferenceObjectは、IUnknown::AddRefみたいな関数で、
UserDereferenceObjectは、IUnknown::Releaseみたいな関数だ。
要は、オブジェクトにデータとして参照カウントを保持して、
カウントがゼロになったときにどこからも参照されていないと
判断して削除するという機構である。
UserDereferenceObjectは、IUnknown::Releaseみたいな関数だ。
要は、オブジェクトにデータとして参照カウントを保持して、
カウントがゼロになったときにどこからも参照されていないと
判断して削除するという機構である。
332片山博文MZ ◆T6xkBnTXz7B0
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」でパッチが作成できるぞ。
http://qiita.com/elmar_leitz/items/1d5792c228c090bad052
http://qiita.com/konweb/items/6effd36aab551b2d6b8f
「svn diff > mypatch.patch」でパッチが作成できるぞ。
333片山博文MZ ◆T6xkBnTXz7B0
2016/08/14(日) 13:39:34.50ID:ZaHz4rpv OSの中心となる領域をカーネルといい、カーネル以外の領域のことをユーザーランドという。
カーネルではさまざまなルールがある。ZeroMemoryやmemsetは使わない。代わりにRtlZeroMemoryを使う。CRT関数は使わない。ウィンドウを扱うときには、PWND型を使う。などといったものだ。
カーネルではさまざまなルールがある。ZeroMemoryやmemsetは使わない。代わりにRtlZeroMemoryを使う。CRT関数は使わない。ウィンドウを扱うときには、PWND型を使う。などといったものだ。
334片山博文MZ ◆T6xkBnTXz7B0
2016/08/14(日) 13:49:41.61ID:ZaHz4rpv 【練習問題】
ObjectCallbacksにAllocDeskThreadObject関数とAllocThreadObject関数が
登録されているが、この2つの関数の違いについて調べなさい。
ObjectCallbacksにAllocDeskThreadObject関数とAllocThreadObject関数が
登録されているが、この2つの関数の違いについて調べなさい。
335片山博文MZ ◆T6xkBnTXz7B0
2016/08/14(日) 15:06:57.97ID:sUdOErvn 【答え】
AllocDeskThreadObjectはデスクトップのヒープを使ってメモリーを確保するが、
AllocThreadObjectはグローバルユーザーヒープを使ってメモリーを確保する。
また、AllocThreadObjectはpSelfとrpdeskメンバーにデータを格納しない。
AllocDeskThreadObjectはデスクトップのヒープを使ってメモリーを確保するが、
AllocThreadObjectはグローバルユーザーヒープを使ってメモリーを確保する。
また、AllocThreadObjectはpSelfとrpdeskメンバーにデータを格納しない。
336片山博文MZ ◆T6xkBnTXz7B0
2016/08/14(日) 15:22:12.02ID:sUdOErvn お次はwindow.cを見てみよう。名前通りウィンドウオブジェクトの処理が書かれている。
103行目のUserGetWindowObjectを使えば、ウィンドウハンドルのHWNDからユーザーオブジェクトのPWNDが取得できる。
prefixがIntの関数はAPI内部(internal)の関数だ。
103行目のUserGetWindowObjectを使えば、ウィンドウハンドルのHWNDからユーザーオブジェクトのPWNDが取得できる。
prefixがIntの関数はAPI内部(internal)の関数だ。
337デフォルトの名無しさん
2016/08/14(日) 16:16:34.64ID:wAOzBEo6 >>335
C言語のmalloc関数を読んだらOS上ではAllocThreadObject関数が呼ばれ、
アプリケーションからは呼べないがカーネルやドライバーがメモリを確保したい場合はAllocDeskThreadObject関数を呼ぶということなのかなぁ
C言語のmalloc関数を読んだらOS上ではAllocThreadObject関数が呼ばれ、
アプリケーションからは呼べないがカーネルやドライバーがメモリを確保したい場合はAllocDeskThreadObject関数を呼ぶということなのかなぁ
338片山博文MZ ◆T6xkBnTXz7B0
2016/08/14(日) 16:42:25.34ID:sUdOErvn >>337
AllocThreadObjectとAllocDeskThreadObjectはどちらもユーザーオブジェクトを確保する関数だ。
CRTのmallocとはあまり関係無い。共通点はヒープを使っていることだけだ。
Deskが付いているのはメモリーがデスクトップの所有になることを表す。
デスクトップは1つだけとは限らない。デスクトップが破棄されたとき、そのヒープも使えなくなる。
AllocThreadObjectとAllocDeskThreadObjectはどちらもユーザーオブジェクトを確保する関数だ。
CRTのmallocとはあまり関係無い。共通点はヒープを使っていることだけだ。
Deskが付いているのはメモリーがデスクトップの所有になることを表す。
デスクトップは1つだけとは限らない。デスクトップが破棄されたとき、そのヒープも使えなくなる。
339片山博文MZ ◆T6xkBnTXz7B0
2016/08/14(日) 16:48:21.60ID:sUdOErvn ここで「ユーザー」というのはGUI (graphical user interface)のuserのことである。
ウィンドウもメニューもカーソルもユーザーオブジェクトだ。ユーザーランドではそれらをハンドルで扱い、カーネルではユーザーオブジェクトで扱う。
ウィンドウもメニューもカーソルもユーザーオブジェクトだ。ユーザーランドではそれらをハンドルで扱い、カーネルではユーザーオブジェクトで扱う。
340片山博文MZ ◆T6xkBnTXz7B0
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は、関数ポインターを所有する構造体の配列だ。
これらはユーザーオブジェクトの種類を表す。これらの値のいずれかがUserCreateObjectの第5引数typeとして渡される。
UserCreateObjectはtypeを使ってObjectCallbacksを参照する。
ObjectCallbacksは、関数ポインターを所有する構造体の配列だ。
341デフォルトの名無しさん
2016/08/14(日) 17:39:01.93ID:BNnLSgEf filebrowser.exe(エクスプローラ?) ... フォルダーオプションメニューがグレイアウトしてクリックできなかったこと以外、
特に気になった点はない。ただ、ReactOSで起動したときと違うようなので、バージョンの違いなのか、OSの違いなのかは不明。
終了ボタンを押すと「問題が発生したため、・・・」のダイアログが表示される。
特に気になった点はない。ただ、ReactOSで起動したときと違うようなので、バージョンの違いなのか、OSの違いなのかは不明。
終了ボタンを押すと「問題が発生したため、・・・」のダイアログが表示される。
342デフォルトの名無しさん
2016/08/14(日) 17:40:37.23ID:BNnLSgEf RosBE(ReactOS構築環境)のインストールが終わり、ReactOSのコンパイルをしてみた。
自分で、user32.dllやgdi32.dllを作れるのは感動
WindowsXPにこれらdllをコピーするのは、怖くて流石にできないが、
ReactOSコンパイルでできたexeをXPで実行してみた。
自分で、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で特別なことをしているのかもしれない。
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の順で見ることを推奨
342、344、345、341、343の順で見ることを推奨
347デフォルトの名無しさん
2016/08/14(日) 18:02:27.83ID:BNnLSgEf >>339
なるほど!ユーザーオブジェクトが理解できれば話の流れがつかめます
なるほど!ユーザーオブジェクトが理解できれば話の流れがつかめます
348片山博文MZ ◆T6xkBnTXz7B0
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と内部関数は多少動作が違うが、似た動作になっている。
これは指定されたハンドルからPWNDが取得できたらTRUEを返すシンプルな関数だ。
PWNDの定義はwin32ss\include\ntuser.hの656行目にある。
window.cの184行目にIntGetParent関数がある。これは親ウィンドウを返す関数だ。
win32ss\user\user32\windows\window.cには、IsWindow APIとGetParent APIの実体がある。APIと内部関数は多少動作が違うが、似た動作になっている。
349片山博文MZ ◆T6xkBnTXz7B0
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行目にある。
フォルダwin32ssをCreateWindowExでgrepする。win32ss\user\user32\windows\window.cの
452行目にCreateWindowExWの定義が見付かる。中身を読んでみると、(1)システムコントロールが登録されていなかったら登録する。(2) 拡張スタイルにWS_EX_MDICHILDがあれば、あれこれ処理を行う。
(3)その後はUser32CreateWindowExに丸投げ、という形になっている。User32CreateWindowExは、152行目にある。
350片山博文MZ ◆T6xkBnTXz7B0
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行目。
カーネルの文字列処理ではCRT関数は使えないので、LARGE_STRING、UNICODE_STRING構造体、Rtl関数などを使って処理している。
lstrはLARGE_STRINGのprefixで、ustrはUNICODE_STRINGのprefixだ。
NtUserCreateWindowExは、win32ss\user\ntuser\window.cの2386行目。
351片山博文MZ ◆T6xkBnTXz7B0
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();
の間のコードは特別な意味がある。
------
あれこれ初期化
UserEnterExclusive();
pwnd = co_UserCreateWindowEx(...);
...
hwnd = pwnd ? UserHWGetHandle(pwnd) : NULL;
UserLeave();
後片付け
return hwnd;
------
という形になっている。UserHWGetHandleはPWNDからHWNDを取得する関数だ。ここで、
UserEnterExclusive();
と
UserLeave();
の間のコードは特別な意味がある。
352片山博文MZ ◆T6xkBnTXz7B0
2016/08/15(月) 11:44:56.59ID:ZZZ997rF UserEnterExclusive();とUserLeave(); の間は「排他制御」(はいたせいぎょ)の区間である。
ReactOSはマルチスレッドOSなので、1つのデータや資源に複数のスレッドからアクセスされることがある。
そのとき、同時にアクセスされたために読み書きされた内容がおかしくなる可能性がある。それを防ぐために、データや資源へのアクセスにロックを掛けて、ロックされているときはロックが解除されるまで待つという機構が排他制御である。
ReactOSはマルチスレッドOSなので、1つのデータや資源に複数のスレッドからアクセスされることがある。
そのとき、同時にアクセスされたために読み書きされた内容がおかしくなる可能性がある。それを防ぐために、データや資源へのアクセスにロックを掛けて、ロックされているときはロックが解除されるまで待つという機構が排他制御である。
353↑
2016/08/15(月) 11:49:28.11ID:f5ijFLi5 おかしくなる可能性があるw
354片山博文MZ ◆T6xkBnTXz7B0
2016/08/15(月) 12:29:50.36ID:ZZZ997rF カーネル内部で使用できるRtl関数の定義は、sdk\lib\rtlにある。
メモリー初期化用のRtlZeroMemoryや、Unicode文字列の初期化のRtlInitUnicodeStringなどが見付かるだろう。
メモリー初期化用のRtlZeroMemoryや、Unicode文字列の初期化のRtlInitUnicodeStringなどが見付かるだろう。
355↑
2016/08/15(月) 12:31:13.67ID:f5ijFLi5 _ ∧_∧
 ̄  ̄ . (´Д`;)←>>354
. ' ヽ
/ //
/ //
,-( ヽ i /
/ メ、ヽ ヽ | /
/ ヽl | | /
/ // / ! ,
/∧_∧// /
/ ( ゚∀/ /
/ γ / /
θ ヘ | /
) | ,
/ |
/ ヘ | /
i / | | / / , ' _/ |l
/ / | | し' / / ̄/
/ /. / | ( _ / / 〃,
( / / l と と ) て ̄ /
し' /__) (_(_,J
 ̄  ̄ . (´Д`;)←>>354
. ' ヽ
/ //
/ //
,-( ヽ i /
/ メ、ヽ ヽ | /
/ ヽl | | /
/ // / ! ,
/∧_∧// /
/ ( ゚∀/ /
/ γ / /
θ ヘ | /
) | ,
/ |
/ ヘ | /
i / | | / / , ' _/ |l
/ / | | し' / / ̄/
/ /. / | ( _ / / 〃,
( / / l と と ) て ̄ /
し' /__) (_(_,J
356片山博文MZ ◆T6xkBnTXz7B0
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関数を呼ぶ際に第二引数に
WindowsXP上では、このメモ帳で日本語入力が可能なので、攻略を試みたが、
このソースコード内には日本語入力に関する処理がない。
CreateWindowEx関数を呼ぶ際に第二引数に
358デフォルトの名無しさん
2016/08/15(月) 13:48:40.43ID:X+HSvCFa 357の続き
"EDIT"を指定することで、エディター用のウインドウが作られ
このウインドウ内で日本語入力に関する処理をしているようだ。
"EDIT"を指定することで、エディター用のウインドウが作られ
このウインドウ内で日本語入力に関する処理をしているようだ。
359片山博文MZ ◆T6xkBnTXz7B0
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を呼んでいる。
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を呼んでいる。
360片山博文MZ ◆T6xkBnTXz7B0
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行目にある。
IntCreateMenuはUserCreateObjectを呼んでユーザーオブジェクトPMENUを作成し、初期化を行う。PMENUの定義はwin32ss\include\ntuser.hの382行目にある。
361片山博文MZ ◆T6xkBnTXz7B0
2016/08/15(月) 14:00:35.87ID:ZZZ997rF ここで重要なのは、ユーザーオブジェクトの作成には、排他制御が必要であることだ。
ユーザーオブジェクトを作成するコードは、必ずUserEnterExclusive();とUserLeave();の間に置かなければならない。
ユーザーオブジェクトを作成するコードは、必ず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
 ̄  ̄ . (´Д`;)←>>361
. ' ヽ
/ //
/ //
,-( ヽ i /
/ メ、ヽ ヽ | /
/ ヽl | | /
/ // / ! ,
/∧_∧// /
/ ( ゚∀/ /
/ γ / /
θ ヘ | /
) | ,
/ |
/ ヘ | /
i / | | / / , ' _/ |l
/ / | | し' / / ̄/
/ /. / | ( _ / / 〃,
( / / l と と ) て ̄ /
し' /__) (_(_,J
364デフォルトの名無しさん
2016/08/16(火) 09:11:50.59ID:B95h7BkM VirtualBox上でReactOSを実行し、Guest Additionをインストール。
インストールがうまく行ったので、共有フォルダーを設定し、マイネットワークで開いてみる。
共有フォルダーは認識しているが、フォルダー内が表示されない。
ReactOSは、まだ、フォルダー共有は実装してないみたいだ。
インストールがうまく行ったので、共有フォルダーを設定し、マイネットワークで開いてみる。
共有フォルダーは認識しているが、フォルダー内が表示されない。
ReactOSは、まだ、フォルダー共有は実装してないみたいだ。
365デフォルトの名無しさん
2016/08/16(火) 12:00:46.15ID:l08xMeAe ReactOSにVC++2010Expressのインストールを試みた。
isoファイルをダウンロードして、VirtualBoxメニュー->デバイス->光学デバイスで、このファイルを指定。
マイコンピュータから開いてみると、なぜか、README.TXTしかない。
README.TXTには、このディスクはUDFフォーマットなので、ISO-13345 UDFファイルシステムのサポートが必要と書かれていた。
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メッセージのトレース機能があれば、かなり欲しい。
このWinspy++は個人が作ったものでMSとは関係ないようだ。
インストールはうまく行かなかったので、ホームページからダウンロードすることにした。
使ってみるとなかなかの出来たが、肝心のWindowsメッセージのトレース機能がない。
MS製のWinspy++は、VisualStudio Express版には含まれていないまずなので、
もし、Windowsメッセージのトレース機能があれば、かなり欲しい。
369↑
2016/08/17(水) 03:24:17.04ID:+njSpS9N ホォw
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文の場合でも{}を付けるのを見た時も思ったが、細かいこだわりのあるコードに思える。
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
 ̄  ̄ . (´Д`;)←>>371
. ' ヽ
/ //
/ //
,-( ヽ i /
/ メ、ヽ ヽ | /
/ ヽl | | /
/ // / ! ,
/∧_∧// /
/ ( ゚∀/ /
/ γ / /
θ ヘ | /
) | ,
/ |
/ ヘ | /
i / | | / / , ' _/ |l
/ / | | し' / / ̄/
/ /. / | ( _ / / 〃,
( / / l と と ) て ̄ /
し' /__) (_(_,J
373片山博文MZ ◆T6xkBnTXz7B0
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などに変える関数だ。
gafAsyncKeyStateは、13行目にあり、これは非同期のキー状態を表しているようだ。
入力したキーがホットキーならば、824行目でco_UserProcessHotKeysが呼ばれ、
他に処理はされない。IntFixVkは247行目にあり、VK_SHIFTなどをVK_RSHIFTやVK_LSHIFTなどに変える関数だ。
374片山博文MZ ◆T6xkBnTXz7B0
2016/08/17(水) 13:43:04.85ID:2al+DBYZ 835行目でIntGetFocusMessageQueue関数が呼ばれる。
文字通り、フォーカスされたメッセージキューの取得である。
キューというのは待ち行列のことだ。キー入力は待ち行列で処理される。
PUSER_MESSAGE_QUEUEは、win32ss\user\ntuser\msgqueue.hの44行目で定義されている。
文字通り、フォーカスされたメッセージキューの取得である。
キューというのは待ち行列のことだ。キー入力は待ち行列で処理される。
PUSER_MESSAGE_QUEUEは、win32ss\user\ntuser\msgqueue.hの44行目で定義されている。
375片山博文MZ ◆T6xkBnTXz7B0
2016/08/17(水) 13:43:54.42ID:2al+DBYZ VK_SNAPSHOTは、[PrintScreen]キーを表している。
[PrintScreen]キーが押されていれば、keyboard.cの890行目あたりで
SnapWindowが呼ばれるはずだ。それ以外の場合、MsqPostMessageにより、
フォーカスのあるウィンドウ、あるいはアクティブなウィンドウに
キーメッセージがポストされる。
[PrintScreen]キーが押されていれば、keyboard.cの890行目あたりで
SnapWindowが呼ばれるはずだ。それ以外の場合、MsqPostMessageにより、
フォーカスのあるウィンドウ、あるいはアクティブなウィンドウに
キーメッセージがポストされる。
376片山博文MZ ◆T6xkBnTXz7B0
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などのなじみの
ある処理も記述されているのがみられる。メッセージキューは
ユーザーオブジェクトではないが、参照カウントで管理されている。
THREADINFO構造体の定義は、win32ss\user\ntuser\win32.hの82行目に見つかる。
メッセージキューの処理は、win32ss\user\ntuser\msgqueue.cに記述されている。
メッセージキュー関数のprefixはMsqだ。MsqPostQuitMessageなどのなじみの
ある処理も記述されているのがみられる。メッセージキューは
ユーザーオブジェクトではないが、参照カウントで管理されている。
377片山博文MZ ◆T6xkBnTXz7B0
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と対話するための中間処理を記述しなければいけない。
WM_CHAR、WM_SYSCHARに変換される。その処理を行っているのが、
win32ss\user\ntuser\keyboard.cの1125行目のIntTranslateKbdMessageだ。
ここまで入力プロセスを見てきた。IMEを有効にするには、これらの処理のどこかで
IMEと対話するための中間処理を記述しなければいけない。
378片山博文MZ ◆T6xkBnTXz7B0
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としてメッセージキューへポストされる。
PsGetCurrentThreadWin32Threadでスレッド情報を取得して、
キーボードレイアウトとキーボードテーブルを参照する。
必要ならばpti->pClientInfo->hKLを更新し、キーボードテーブルがなければreturn FALSEする。
wParamがVK_PACKETならば特殊な処理を行う。
主処理はIntToUnicodeExで行われる。変換を行った文字は、
MsqPostMessageでWM_CHAR、WM_SYSCHAR、WM_DEADCHAR、もしくは
WM_SYSDEADCHARとしてメッセージキューへポストされる。
379片山博文MZ ◆T6xkBnTXz7B0
2016/08/17(水) 13:59:32.04ID:MpsnqyQm380片山博文MZ ◆T6xkBnTXz7B0
2016/08/17(水) 14:01:34.42ID:MpsnqyQm 訂正。
(誤) keybd_event
(正) SendInput
スクリーンキーボードのソースは、base\applications\oskにある。
(誤) keybd_event
(正) SendInput
スクリーンキーボードのソースは、base\applications\oskにある。
381デフォルトの名無しさん
2016/08/17(水) 14:53:52.96ID:N+7dAX4n >>379
英語の読解力がなくてよくわからないけど、
ロシア版ReactOSをインストールして、英語キーボードを選択したらこの問題が起きると書いているのでしょうか?
数日前にダウンロードした日本語版ReactOSを使っているけど、日本語配列と英語配列のキーボードを変えると、その言語のスクリーンキーボードに切り替える。
英語の読解力がなくてよくわからないけど、
ロシア版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を...べきだと訳す場合と、...だろうと訳す場合の違いはどこにあります?
On-screen keyboard should respect selected input language
は、
On-screen Keyboardは、選択されたinput languageに従うべきだ。
と訳すと思うけど、
On-screen Keyboardは、選択されたinput languageに従うだろう。
とも訳せると思う。
shouldを...べきだと訳す場合と、...だろうと訳す場合の違いはどこにあります?
383片山博文MZ ◆T6xkBnTXz7B0
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を試したとき、ロシア語の文字しか見えず、英語モードに切り替えられなかった。
(訳) ロシア語でインストールした私のReactOSに対する既定の選択された入力言語は英語だ。
> When I try to use osk.exe, I see only russian letters and can't switch it to english mode.
(訳) oskを試したとき、ロシア語の文字しか見えず、英語モードに切り替えられなかった。
384片山博文MZ ◆T6xkBnTXz7B0
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+7dAX4n386片山博文MZ ◆T6xkBnTXz7B0
2016/08/17(水) 15:55:25.36ID:GiBHZvBN 入力言語を変えるダイアログのコードはdll\cpl\inputにある。
実際に変える処理をしているのは
dll\cpl\input\input_list.cの220行目のInputList_Processだ。
実際に変える処理をしているのは
dll\cpl\input\input_list.cの220行目のInputList_Processだ。
387片山博文MZ ◆T6xkBnTXz7B0
2016/08/17(水) 15:59:14.37ID:GiBHZvBN 263行目、WM_INPUTLANGCHANGEREQUESTメッセージをシステム全体に送信している。
388片山博文MZ ◆T6xkBnTXz7B0
2016/08/17(水) 15:59:32.95ID:GiBHZvBN 263行目、WM_INPUTLANGCHANGEREQUESTメッセージをシステム全体にポストしている。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 「中国人の訪日熱は冷めた」 人気旅行先から日本外れる 14日で自粛呼びかけ1カ月 [蚤の市★]
- 「1800万円の売り上げゼロに…」中国インバウンドに特化の宿の今 [蚤の市★]
- 地震 [Hitzeschleier★]
- 【STARTO ENTERTAINMENT】SUPER EIGHTの横山裕、フジ『ドッキリGP』ロケで全治2ヶ月の重傷 [Ailuropoda melanoleuca★]
- 【話題】好きな鍋は?! 「寄せ鍋」「キムチ鍋」「水炊き」「もつ鍋」「豆乳鍋」「ちゃんこ鍋」「ごま坦々鍋」「トマト鍋」 [ひぃぃ★]
- 【地震】 茨城 栃木 埼玉 千葉 震度4 [KingFisherは魚じゃないよ★]
- 【お漏らし】日銀、0.25%利上げへ [256556981]
- J( 'ー`)し「で、アンタなんで働かないの?」 ワイ👶「理由は2つありまして~」🏡
- 【悲報】人気女性落語家、気づいてしまう…「将棋をみてたら女性にのみ女流棋士などと"女"をつけられる、くだんな笑」 [339712612]
- おさかなさんあつまれえ
- ムミィ🥺いる❓🏡
- もうなんか最近の日本人って大災害について"諦めてる"よな、災害が起きても助け合う精神がないもんな [904880432]
