スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。
やさしいお兄さんやお姉さんたちが答えてくれるかも。
過去スレ、関連リンクは
>>2-5 くらい。
■注意
・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。
・日本語版MSDN Online Libraryは不完全です。英語版(
http://msdn.microsoft.com/library/ )の利用推奨。
・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。
・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで
別のプログラムのWindowにファイルをドロップしたいのですが、 なにか良い方法を教えて君。
11 :
デフォルトの名無しさん :2007/07/20(金) 01:05:34
>>10 DragAcceptFilesを実行してから
WM_DROPFILESメッセージを処理
12 :
前974 :2007/07/20(金) 01:11:38
>>1 乙
>>前スレの人たち
ショートネームと"?"の仕様が分かったので、おかしいと思っていた動作は納得できました。
ありがとうございました。
ところで、文字数が少なくても"?"に一致してしまうのって
「最後の"?"だけ、文字数が少なくても一致する」ってことでOKですか?
「??_?_?.dat」、「?_??_?.dat」、「?_?_??.dat」と、3つの検索ワードで検索したとき、
「a_a_a.dat」ってファイルにヒットするのって、「?_?_??.dat」だけなんですよね。
(書き忘れてましたけど、環境はWindowsXP、VC++6.0です)
トライグラフ・・・
「a_????-????.dat」で検索しようとしてたので見事にはまった (´Д⊂
こっちはさんざ調べて自分で解決できたけど
OK、記憶のままに書いてみる。間違ってたらすまん。 ・基本的なお話 APIのワイルドカードマッチングはDOS時代の名残。 従って、ファイル名本体+"."+拡張子という構成の影響を受けている。 どういうことかというと"."は特殊な文字で、それが記録されるのではなく ファイル名本体と拡張子を区切る記号として働く。 逆に、拡張子を持たないファイルは暗黙に空の拡張子を持っていると解釈される。 ・"?"のお話 "?"は当然空白文字にもマッチする。注意すべきは、ファイル名本体(或いは拡張子)は 無限に空白文字が後続するものとして扱われること。 従って、"a???"は"a"にも"ab"にも"abcd"にもマッチする。 #この場合、"a??d"ならば当然に"abcd"にしかマッチしない。 また、ファイル名本体と拡張子を別々に扱うので"."にはマッチしない。 例えば、"a?b"は"a b"にはマッチするが"a.b"にはマッチしない。 ・"*"のお話 "*"は前項の"?"とは違い、ファイル名本体と拡張子混在した形で働く。従って、"a*b"は"a.b"にもマッチする。 また、"*."は(前述のように空の拡張子を持つと解釈される)"abc"にはマッチするが"abc.d"にはマッチしない。 ・ロングネームとショートネームの問題 ショートネームで表すことができないファイルはロングネームも記録され、 ショートネームには記号化した形で記録される。これが困ったことに"?"にも"*"にもマッチする。 つまり、ショートネームは8文字+3文字が上限なので"????????.???"は全てのファイルにマッチしてしまう。 ショートネームの生成ルールは不可思議なので割愛。ショートネームの拡張子の振る舞いの例を挙げておく。 ※"a.b.c.d"→拡張子は"d" ※"a.abcd"→拡張子は"abc" ※"a b"→拡張子なし ※"a.b"→ロングネームは生成されずそのままショートネームのみ ※".abc"→拡張子なし こんな…おっと、バイト数制限のためこの辺で。
おおっと
ここで
>>1 をスルー!!!
r'::::::::i
トーf/__
/ イ| 、ヽ
//_〉 l_l i_ノ、
\\ (_ニノ 〉____〉〉 〉
/ } / ,_-‐、
/\/,ー 'ヾ i"_Y 〈i
〈 < / ゝ^-'"
\i"ヽ、 \\ //
├ i\i カ ,、
|_,,i ノ_ソ ) ゝ
17 :
デフォルトの名無しさん :2007/07/20(金) 07:51:57
3時間後にこんな長い説明をくれた994に感謝age
ハズカシス
Happy Birthday to You
>>14 俺の記憶だと、昔はa*bは無効(*以降が無視されa*と同じ意味になる)だった気がする。
もちろん、*以降無視の規則はファイル名本体側と拡張子側それぞれに適用されるので、
a*.b*は有効(ファイル名がaで始まり、拡張子がbで始まるファイルの意味)になる。
釣りにマジレスかっこわるい
ところでBuild50番台から参戦の新参なんだが、テンプレの >>Build19が見たい人 19になにかあったの?
>>24 俺たちのオムツとおしゃぶりが、Build19に置いてある。
26 :
デフォルトの名無しさん :2007/07/20(金) 14:00:07
ショートカットファイル(.lnk)のアイコンをアプリケーションから変えたいのですが、 そういうAPIって用意されてますか?
前スレ1000が全てを説明してるだろ
1000なら*.*はアナルと○○○
何だ?蒙古班か?
31 :
デフォルトの名無しさん :2007/07/20(金) 23:50:12
何だ?猛虎硬爬山か?
RegisterHotKeyを使ってタスクトレイからアクティブになるようホットキーをCtrl+Spaceで登録しました。 Visual Studioでは元からあるショートカットキーを使ってほしかったので 現在のアクティブなアプリケーションを調べ該当した場合はアクティブにならないよう無視する事にしました。 目的は達成されVisual Studio上ではホットキーを押しても反応しなくなったのですが キー入力自体は受け取っているようで、Ctrl+Spaceの入力保管機能は反応しなくなってしまいました。 そこで質問なのですが、元からあるショートカットキーを生かすにはどうすればいいのでしょうか?
僕ハッカー
35 :
デフォルトの名無しさん :2007/07/21(土) 15:54:54
【派遣ネガティブ根性チェック】 3つ以上、チェックがつけばアナタの性格はひん曲がっており、 ネガティブ負け組派遣人生を歩んでいます。 □派遣先正社員の作った糞開発ツールはたとえ腐っててもマンセーして使う □派遣先の人事権のある社員の意見はたとえ間違っていてもマンセーする □仕様とは正社員から口伝されるものだ □口伝された仕様を意図どおり理解できなかったのは自分の責任だ □昼食は必ず派遣先の社員と行くべきだ □自分の仕事で問題が発生しても解決するのは派遣の仕事ではない □派遣先から「いつまでもここで仕事してくださいね(安い金でw)」と言われて嬉しい □自社で仕事なんてできるわけがない □派遣労働の問題点の話題が出ると感情剥き出しにして反論する □派遣労働の問題を指摘する人は嫌いだ □派遣先には仕事だけでなくプライベートについてもグイグイ引っ張って欲しい □奢ってくれる派遣先正社員を尊敬する □自分の月額金額を知らないのは当然だ、単金を聞いてはいけない □派遣先正社員より自分の生涯収入が低いのは当然だ □チビは派遣先にかわいがってもらいやすから派遣には有利だ
バカバッカー
┏┓┏┓ ┏━━━━━━┓ ┏┓ ┏━━━━┓┏━━┓ ┃┃┃┃ ┗━━━━━┓┃ ┃┃ ┗━━┓┏┛┃┏┓┃ ┏━┛┗┛┗━━━┓ ┏━━━━━┛┗┓┃┃ ┏━━┛┗┓┃┗┛┃ ┃┏┓┏┓┏━━┓┃ ┗━━━━━━┓┃┃┃ ┗━━┓┏┛┗━━┛ ┃┃┃┃┃┃ ┃┃ ┏━━━┓ ┃┃┃┃ ┏━━┛┗┓ ┃┃┃┃┃┃┏━┛┗┓┃┏━┓┃ ┃┃┃┃ ┃┏━┓┏┛ ┃┃┃┃┃┃┃┏┓┏┛┃┃ ┃┃ ┃┃┃┃ ┃┃ ┃┃ ┃┗┛┗┛┃┃┗┛┃ ┃┗━┛┗━━┛┃┃┗┓┃┗━┛┃ ┗━━━━┛┗━━┛ ┗━━━━━━━┛┗━┛┗━━━┛
□派遣先正社員の作った糞開発ツールはたとえ腐っててもマンセーして使う □派遣先の人事権のある社員の意見はたとえ間違っていてもマンセーする ■仕様とは正社員から口伝されるものだ □口伝された仕様を意図どおり理解できなかったのは自分の責任だ □昼食は必ず派遣先の社員と行くべきだ □自分の仕事で問題が発生しても解決するのは派遣の仕事ではない ■派遣先から「いつまでもここで仕事してくださいね(安い金でw)」と言われて嬉しい □自社で仕事なんてできるわけがない □派遣労働の問題点の話題が出ると感情剥き出しにして反論する □派遣労働の問題を指摘する人は嫌いだ ■派遣先には仕事だけでなくプライベートについてもグイグイ引っ張って欲しい ■奢ってくれる派遣先正社員を尊敬する ■自分の月額金額を知らないのは当然だ、単金を聞いてはいけない ■派遣先正社員より自分の生涯収入が低いのは当然だ ■チビは派遣先にかわいがってもらいやすから派遣には有利だ
>>33 ホットキー登録したままなんだから当たり前じゃねーか
ホットキー解除するかVSのウィンドウにCtrl+Spaceを投げろよ
>>39 解除してしまうとウィンドウ外で呼び出せなくなると思うのですが
どうやって対処すればいいのでしょうか?
一次会所
>>40 解除した時にタイマーセットしてVSがアクティブか定期的に監視して
非アクティブになった時に再登録とか
首から上は飾りか?
あたぼーよ。偉い人にはそれがわからんのです
頭は柔軟にありたいものだ。
みつを
コスト気にするなら >ホットキー解除するかVSのウィンドウにCtrl+Spaceを投げろよ これでええやん
コスト気にするレベルじゃねぇぞ!
49 :
デフォルトの名無しさん :2007/07/22(日) 00:47:18
■仕様とは正社員から口伝されるものだ =>仕様書すらない派遣用糞仕事 ■派遣先から「いつまでもここで仕事してくださいね(安い金でw)」と言われて嬉しい =>同じ時間働いても正社員の3分の1の悲惨な賃金 ■派遣先には仕事だけでなくプライベートについてもグイグイ引っ張って欲しい =>情けねえ! ■奢ってくれる派遣先正社員を尊敬する =>客先に奢るのが本来だろ? ■自分の月額金額を知らないのは当然だ、単金を聞いてはいけない =>契約金額で「仕事」と言えるの? ■派遣先正社員より自分の生涯収入が低いのは当然だ =>そんな根性じゃ当然だよな ■チビは派遣先にかわいがってもらいやすから派遣には有利だ =>チビで派遣=最悪
質問するばかりで頭を使ってないのが良く分かるやりとりだw
なんで派遣コピペが定期的に貼られるん?
国民の所得は低いにもかかわらず GDPだけが無駄に上がるから ついでにピンハネしてる奴がxxでxxなんだが 直接それを言うと身の危険があるから
おねがいします。 シングルラインのtabcontrol上にアイテムがいっぱいあるとき、 選択されているあるアイテムの表示位置を真ん中にしたい場合 どうすればいいのでしょうか?
なんかイマイチ意味が分からんが タブコントロールの表示用クライアント領域はTCM_ADJUSTRECTで取れるから そこから真ん中の座標を計算してSetWindowPosとかで位置を調整すればいいんでない?
>>53 賃金を人材派遣会社が60%ピンハネ。
しかも官僚どもの天下り先の紹介までして事実上無法地帯とw
あと経団連の糞共
>>55 すいません。わかりずらかったです。
クライアント領域ではなくタブの位置を真ん中にしたいと思っています。
>>57 すいません。アホのようでわかりずらかったです。
クライアント領域ではなくタブの位置を真ん中にしたいと言っています。
>>57 ざっとタブコントロールのメッセージ眺めてみたが、
アイテムとアイテムを入れ替えるメッセージは無いっぽい
DeleteとInsertで移動したように見せかけるしかなさそうだね
>>57 .>わかりずらかったです。
→わかりづらかったです。
日本語でおk
スレの流れが狂ってるように見えるんですが気のせいですか?
ありがとう。 まともな方法はないみたいですね。 spyでみてたら、WM_HSCROLLを飛ばせば動いてくれるみたいなので、 とりあえず以下のようにして様子見します。 SendNotifyMessage(tabcontrol, WM_HSCROLL, MAKEWPARAM(SB_THUMBPOSITION, tabindex), NULL);
初めから「タブコントロールで大量にあるタブをスクロールさせるには?」って聞けばよかった気が…。
つーか初めから理解できるだろ
派遣を辞めれば理解できます まずは就職することが大切です
就職してもITの9割は派遣なわけだが
68 :
デフォルトの名無しさん :2007/07/22(日) 13:08:46
>>67 特定派遣と一般派遣の違いもわからないバカ
どっちも派遣だバカ 漢字も読めないのか 小学生からやり直せ
先生、赤ちゃんからやり直したいです。
特定派遣=正社員 一般派遣=フリーター
何か派遣にこだわってる奴が居るな
maitadeyare
74 :
デフォルトの名無しさん :2007/07/22(日) 15:27:28
>>73 うるせーバカ
派遣の話題が嫌ならお前が2ちゃんを見るな
む板でやってもいいけどWin32APIスレだよここは。
Windwos系は派遣根性が染みついたへたれが多いからねえ
ネタ的にはマ版じゃねーの?
初心者掲示板ででも聞いてろカス
81 :
79 :2007/07/22(日) 16:10:56
だからさ、技術的な質問以前にまず派遣を辞めて就職して社会人になれと
83 :
デフォルトの名無しさん :2007/07/22(日) 18:01:49
スクロールバーのバーの大きさが大きくて滑らかにスクロールさせる方法教えてください SetScrollRangeで幅を0〜100にすると滑らかにスクロールするけどバーがかなり小さくなってしまいます 助けてください!
>>83 EscapeTemporaryJobではけんを辞めると解決できますよ。
まだ小学生なんですけど
>>83 小学校の算数ができない人か?
バーのドラッグできる部分と全体のサイズの比率が、
ドキュメントの可視部分と全体の比率と違ってたら困ることになるとは思わない?
ああリアル小学生だったのかそりゃすまんかった
思いません、見かけ上のサイズと内部の比率が違ってたらいい話
そんな直感的じゃないUIは嫌だな
もちろん設定で変更可能です
あの掴む部分の最小値はもっと大きいほうがいいな
EscapeTemporaryJob そんなAPIがあったらいいのにね
>>91 Vistaだと小さくなりすぎないようになってる。
正方形以上にはつぶれないみたい。
94 :
デフォルトの名無しさん :2007/07/22(日) 20:02:52
フリーが稼げるとか騙されて結局派遣やってるバカ 元々は正社員だったのに取引先にフリーのほうが稼げるとか騙されて 結局派遣やってるバカがいるんだけどw なんか派遣先といい関係、とか言ってたから思わず吹き出しちゃったよw 最近はマネージャーもやってるとか寝言言ってるし、派遣がまねぇじゃぁ?はあ!?w そもそも信頼されてるなら直接契約するか正社員にするはずだが、 いつでも切れる派遣会社経由って舐められてんだよ 派遣期間が長くならないうちに早く就職しろ、と忠告したら、ウッキー!って逆ギレw バカで頑固だから何度言っても理解できない 騙されたとはいえ結局は自分で決めて派遣やってる癖に逆ギレしちゃってまぁ 人間として本当に恥ずかしい
というコピペを見た
おれおれ
一応数少ない有用なスレなので... スルー力 >> ALL
>>94 >元々は正社員だったのに取引先にフリーのほうが稼げるとか騙されて
取引先の正社員に会社辞めさせて、一般派遣にさせたってこと?
これ相当ヤバくね?
101 :
デフォルトの名無しさん :2007/07/22(日) 21:22:14
>>100 テメーが2ちゃんを見なきゃいいんだよ
まあ、せいぜいムカついてろや
なんでチームミンスがム板に…
邪魔
マジ小学生なの? おじちゃんと一緒にHビデオみようぜ
あの、RealGetWindowClassとRealChildWindowFromPointは何なんですか? それぞれ一見GetClassNameとChildWindowFromPointで十分に思えるんですけど。
ニート対策
108 :
デフォルトの名無しさん :2007/07/23(月) 01:32:57
1つのアプリで2つのウィンドウを出す方法を教えてください。 ヒントだけでもかまいません。 お願いします。
1つのウィンドウを出す方法を2回書く
110 :
デフォルトの名無しさん :2007/07/23(月) 01:43:15
>>109 ありがとうございます。
そんな感じ書いています。メッセージループは、
while( msg.message!=WM_QUIT ) {
if(PeekMessage(&msg, hwnd, 0, 0, PM_REMOVE) > 0 || PeekMessage(&msg, hwnd2, 0, 0, PM_REMOVE) > 0) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
のようにして。
これで、実際、ウィンドウが2つ出るのですが、そのウィンドウを破棄しても、
プロセスが死なずに残るんです。ちなみに片方のウィンドウを別のウィンドウの
子ウィンドウにし、子ウィンドウではWM_DESTROYではなにせず、親ウィンドウの
WM_DESTROYでPostQuitMessageをしています。
どうでしょうか?
111 :
デフォルトの名無しさん :2007/07/23(月) 02:11:40
RGB16,RGB24,RGB32のフォーマットを持つデバイスコンテキストに対して モノクロのフォーマットを持つデバイスコンテキストからBitBltは可能ですか? このときにモノクロの黒の部分は透明色として、また白の部分は任意の色に変換してBltしたいです。 どうすればよいのでしょうか? 先生方!よろしくお願いしますっ!!芭(_ _;)mガン!ガン!
112 :
デフォルトの名無しさん :2007/07/23(月) 02:53:31
>>110 普通にこれじゃ駄目なの?
MSG Msg;
while(GetMessage(&Msg, NULL, 0, 0))
{
TranslateMessage(&Msg);
DispatchMessage(&Msg);
}
>>111 出来ると思う。ゲームとかで使うの?
モノクロdcをSRCANDでbitbltしてから元のdcをSRCPAINTでbitbltすれば
黒の部分が透過されるはず
>>112 ありがとうございます。
黒は透過しますが、白が任意の色に変わるところが難しそうですね。。
質問してからアレコレ考えたのですが
CreatePatternBrushを使ってモノクロビットマップからブラシをつくり、
SetTextColorとSetBkModeを駆使すれば出来そうな気がしてきました。
もし出来なかったらまたここに逃げ帰ってくるかも(^^;)
そんときはまたよろしくお願いします〜m(_ _)m
失礼します
EscapeTemporaryJobを使えばできます。
ツマンネ
ひどい自演を見た
来週までこんなかんじなんかな
API呼び出しで派遣地獄から抜け出せるなら誰も苦労しない
『API呼び出しで派遣地獄質問箱』スレができそうな話だな。
もうある
チェックが2つ以下になると派遣地獄から抜け出すことができます。 □派遣先正社員の作った糞開発ツールはたとえ腐っててもマンセーして使う □派遣先の人事権のある社員の意見はたとえ間違っていてもマンセーする □仕様とは正社員から口伝されるものだ □耳で聞いた仕様を正確に覚えていないのは自分の責任だ □昼食は必ず派遣先の社員と行くべきだ □自分の仕事で問題が発生しても解決するのは派遣の仕事ではない □派遣先から「いつまでもここで仕事してくださいね(安い金でw)」と言われて嬉しい □自社で仕事なんてできるわけがない □派遣労働の問題点の話題が出ると感情剥き出しにして反論する □派遣労働の問題を指摘する人は嫌いだ □派遣先には仕事だけでなくプライベートについてもグイグイ引っ張って欲しい □奢ってくれる派遣先正社員を尊敬する □自分の月額金額を知らないのは当然だ、単金を聞いてはいけない □派遣先正社員より自分の生涯収入が低いのは当然だ □チビは派遣先にかわいがってもらいやすいから派遣には有利だ
モニタが省電力モードかどうか確認する方法を教えて下さい。
124 :
デフォルトの名無しさん :2007/07/23(月) 12:50:52
SC_MONITORPOWER
派遣に惑いし哀れな影よ 人に使われ搾取され デスマに溺れし業の魂 イッペン、死ンデミル?
ちょw目視ってwAPIでお願いします。
>>124 SC_MONITORPOWERを使用して省電力モードの設定と解除なら分かりますが、
どうやって現在の状態を取得するのでしょうか?
SystemParametersInfo SPI_GETLOWPOWERACTIVE
モニタ省電力モード中に 自動的にプログラムが立ち上がった場合どうすんの?
サービスとかにすれば?
CSIDL_COMMON_APPDATAを使い、かつフォルダを作る際に全ユーザーへのアクセス権を 設定する(そのままだと一般ユーザ権限では読み取り専用になる)、が一番かな。 アクセス権設定のためには最低でもインストーラが管理者権限で動ける必要があるけど。
なるほど,管理者権限のある人がインストールするときにフォルダを掘ってアクセス権を設定すればよいわけですね. 管理者権限以外でのインストールは考えていないので大丈夫です. ありがとうございました.
CreateFileとかで作ったファイルのアクセス権限を設定するAPI はあるでしょうか? 作成したファイルを特定のユーザーやグループでしか読み書きできない様にしたいのですが。
136 :
デフォルトの名無しさん :2007/07/23(月) 19:10:08
あるよん
コマンドでよけりゃcacls
139 :
135 :2007/07/23(月) 19:15:11
自己解決しました
作成と同時でよければ、CreateFileのSECURITY_ATTRIBUTESへのポインタ型の引数で指定できる。 後からなら、SetSecurityInfoやSetNamedSecurityInfoなど。
>>112 Sleep挟むなりしないとノートPCの寿命縮めたりでえらいことになる
>>141 112のコードにはSleepは必要ないが。
ど素人かPeekMessageと間違えてるかのどちらか
144 :
110 :2007/07/23(月) 21:47:08
>>112 さん
遅レスですみません。
ありがとうございます。できました。
(ショックです。でも、本当にありがとうございます。)
DirectXのレンダリングを挟むので、
>>112 さんのコードをまねて、
ZeroMemory( &msg, sizeof(msg) );
while( msg.message!=WM_QUIT ) {
if(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
else {
Render();
}
}
なんて感じにしたうまくいきました。
ただ、
>>143 さんのコメントが気になります。
PeekMessageはまずいんでしょうか?
教えて君ですみません。
145 :
110 :2007/07/23(月) 22:00:44
>>141 ど素人の勘違いかもしれないのですが、Sleepを実行しても、CPUは休んでない
のではないでしょうか。すると、PeekMessageでも、Sleepをする意味はないように
思うのですが。どうなんでしょう?
睡眠関数入れないと中央演算装置使用率十割になるんじゃ
Sleepしたからといって全てのプログラムでCPUが休むわけではない。
結論、sleepいれないとノートPCの液晶の寿命が縮む
そもそもCPUの使用率が十割になるとまずいの? ほんとに寿命が縮むの?
縮みません
CPUの使用率10割になると 限界をこえたことによって CPU内部のトランジスタが痛むって141がいってた
言ってません
でも常に10割いってたらどっかは痛む罠。電源とか
レンダーを別スレッドで行うのが定石
156 :
110 :2007/07/23(月) 23:02:25
みなさん、ありがとうございます。 やってみたら、CPUの使用率は50%ちょいになりました。 確かに、普段と比べると多いかも。 でも、ゲームをやるなら仕方が無いようにも思います。 よくわかりませんが。 いずれにしても、勉強になりました。ありがとうございます。
>>144 そういう風にメッセージが来なかったときにやることがあるなど、
必要があってPeekMessageを使うこと自体はまずくはない。
GetMessageはメッセージが来るまでスレッドを休ませる効果があるが、
PeekMessageではそれがないので、メッセージが来ないときに何もやらない場合、
(そのコードで言うとRenderの呼出がなくしたようなコード)
無駄にループが回ってCPUの無駄遣いになるというだけのこと。
それが寿命に悪影響なのかどうかは知らないが、そんなこと気にするなんて話は聞いたことがない。
俺としては寿命よりも他のプログラムがCPUに飢える事態を心配してやれと言いたい。
あと、お前らSleepばっか言ってないでたまにはWaitMessageも思い出してやれ。
そういやsleepってミリ秒単位らしいけど1を指定しても一秒近く停止するのはなんで?
Sleepの分解能って10msが最小で10ms単位じゃないっけか?
君のトロいコードで999ミリ秒掛かってるから
WindowsOSの場合
WindowSOS
リアルタイムOSじゃないから当たり前。
WindowsEx
Sleep(1); で普通に1000分の1秒停まるぜ
うそぉん
>>158 優先度が高いほかのスレッドが1秒近くCPUを使っているとかそういうことはない?
どれ?
10ms以上(だっけ)のSleepの場合は気にする必要ないけど それ以下の精度が必要なら timeBeginPeriod(1) 以下、検索したらTOPに出た↓サイトの抜粋 Win95,98,Me では、この関数の実行とかかわりなく精度は 1ミリ秒になっている。WinNT,2000,XP では、ちゃんと 精度を設定する必要がある。
メディアプレイヤーとか動かしながら動かすと動作が変わるソフトはtimeBeginPeriodを使ってないかららしいな。
木屋さんってバイク好きの木屋さん?
ドラスレだったりしてw
ドラスレやんw
質問です。 vfwを使ってaviからビットマップは取り出すことが出来たのですが、 オーディオを無圧縮PCMで取り出すにはどのようにしたらいいでしょうか? 単純にヘッダをくっつけただけだとファイルが壊れてますと言われるのですが…
>>179 もう一声分の詳しさが欲しいな。
いわんとする事はわかるけど、
もうちょい詳しく書けば、回答が早いと思う。
え、君が回答すればいいのに
え、もうちょい詳しく書かないと分からないんだろ
え、言わんとすることは分かるって
え、そんなんできるんですか
無圧縮PCMなら、ヘッダさえ正しければどんな出鱈目なデータでも再生はできるから、 くっつけたヘッダが間違ってるんでないの。
え、?
187 :
179 :2007/07/25(水) 10:44:19
>>180 vfwを使ってオーディオストリームは取り出せるのですが、
常に無圧縮のデータを吐き出してくれるわけではないみたいで、
ReadFormatで得られたPCMWAVEFORMATとRIFFなどの
決まり文句をくっつけただけじゃだめみたいなので、
どのようにしたら無圧縮の状態で取り出せるようになるのかなと
思い質問させていただきました。
圧縮されたまま書き出せばwavファイルには出来るみたいなのですが、
それだと次の編集が出来なくなるので…
188 :
179 :2007/07/25(水) 10:45:41
>>187 圧縮されたまま書き出せば → ×
取り出したデータをいじらずに → ○
190 :
179 :2007/07/25(水) 11:44:34
>>189 そんな方法が…
ありがとうございます。
//ただ解凍するだけなのになんかものすごいことに…
自分のウインドウがアクティブじゃなくても ボタン入力を受け取る方法ってありますか? ブラウジングなどで大量にできたウインドウを マウス真ん中クリックで次々消したいなと思いまして
便乗ですが、WMVファイルやMPGファイル(要はWMPで再生できる形式)でAVIStreamGetFrameと同じようなことがしたい場合、 どんなAPIを使えばいいのでしょうか。 それらしきものが探しても見つからず、キーワードだけでも頂ければあとは調査したいと思います。
とうとうフックに手を出さないといけないのか・・・難しそう グローバルな感じのlParamだかなんだかに 格納されたりしてすぐに取り出せたりとかは不可能でしょうか?
196 :
192 :2007/07/25(水) 15:03:36
フックほど簡単なものはない
グローバルフックでHHOOKの保持にハマることが多かったが、最近はそれも無いみたいだしなぁ
グローバルフックでHHOOKの保持にハマるなんて都市伝説
しかしフックというのは チートだのキーロガーだの悪の技術 手を出してはいけないと教わりました
まあいつでもマウスで呼び出したいというのなら、タスクトレイに入れとくと言う手もあるしなあ
Office2003_SP2Changes(英語)
>>203 ありますか?
すんません、英語じゃなくてもいいです。
っていうか、英語じゃないほうがいいです。
英語じゃないとダメです。 英語を勉強して下さい。
じゃあ、英語でも良いです。 「Office 2003 Service Pack 2 - Changes」 の原文のほうに目を通しましたが、、、
一番の近道は留学だな
/.n l /⌒ヽ | l l | ,' /7 ,' , '' ` ー ' '-' / / 、_, `ヽ l , .-. 、`´ l ヽ ヽ ̄フ / 丶、 ̄____,/ / ,. - 、 ) (( ( n ([N],ハ_う ゝ)ノ  ̄ ヽ / _ l )) 〈__ノ´ `(_ノ
セキュリティレベルが上がったから!?
単にImm32が呼ばれてなかっただけだったりして。 TSF経由とか。
WM_CREATEでウィンドウ位置を変更してから タブコントロールを作るとタブコントロールが正しく表示されないんですが ヒントでいいので何かもえませんか? ウィンドウ位置変更を抜いたり、WM_SIZE後は正しく表示されるので 何かサイズ関係なんだと思って SendとかPostとかしてみたんですがどうも上手くいきません
何も萌えません
>>210 とりあえず、回避方法は分かった。
ありがとう。
210は良い奴。
213は悪い奴。
214 は普通の奴。
普通の奴です、すいません。
普通のヤツの反応じゃねぇ....
>>212 orz もらえませんかでお願いします
>>218 クリックで反応するので
多分タブコントロールの一部分だけ描画されてるみたいです
VIP uploaderという所にプリントスクリーンしたのをあげてみました 4M(Nullpo)のga7919こんなのですっていうのです
221 :
デフォルトの名無しさん :2007/07/25(水) 22:21:11
コマンドプロンプトが対応しているロケールは、日本語圏の環境だ とJapanese_Japan.932ですが、これをプロンプト上で実行したアプ リの方で取得する術を探しています。 ご存知の方はいらっしゃいませんか?
プロセスの現在値ならGetThreadLocaleかな システム全体ならGetSystemDefault***系
APIじゃないんだけどWin限定だしMFCじゃないのでここに質問してみる。
ttp://www2s.biglobe.ne.jp/~ragnarok/program/win32/class_of_cpp_in_dll.htm ここを見ながら、簡単なサンプルを作っていろいろ試してみたのだけど、
1. Exportクラスを純粋仮想クラスにした場合、dllexport無しでも正常に動作するっぽい。
(ヘッダはどのみち必要なので、どの関数が存在しているかはわかっている
& virtual ついてれば exportされてない関数もちゃんと呼んでくれる)
2. Exportのデストラクタをちゃんとvirtualで宣言しておけば、exe側でdeleteしても
dll側のデストラクタおよびdeleteが呼ばれるっぽい。
(virtual無しだとexe側が呼ばれてしまいクラッシュ)
という2つの考察結果を得ました。
これがどちらもOKなら、DLL越しにクラス使うのがかなり気楽になるんだけど、
潜在的なトラブルの可能性とかあったら教えてくださいエロい方々。
C言語の方から使っても大丈夫か
すいません。またvfw関係なんですが… AVIStreamRead(pstm, i, AVISTREAMREAD_CONVENIENT, NULL, 0, &lLength, &lSample) としてストリームのサンプル数を取得しようとしたのですが、AVIERR_ERROR が発生してサンプル数が取得できません。 どこか間違っている場所があれば教えていただきたいのですが…
>>226 どこと指摘できるほど十分な情報を提示してないのに
その質問文でわかってもらえると思ってる所を間違えてる。
もっと広範囲のソース晒すとかすれば?
>>221 タブコントロールのサイズがおかしくなってるとか
WS_CLIPCHILDREN付けてないからタブの領域塗りつぶしちゃってるとか
もしかして、AVIStreamRead後のlLengthとlSampleは変化してる?
ほかのウィンドウにCtrlやAltといったModifierKeyと通常のキーを 同時に送信するにはどうすればいいのでしょうか? 試しにWM_KEYDOWNを送信してみたのですが Ctrl+Vのイベントは起こりませんでした。
232 :
226 :2007/07/26(木) 10:37:48
>>228 >>189 のTEST05.Cのコードとほぼ同じで、
int WINAPI WinMain()のところをwchar_t*型の引数2つ(入力avi名、出力wav名)の
関数に変更して、AVIFileOpenのファイル名の部分を先の引数に変更、
ビデオ部分の出力処理をまるまるカットしただけです。
>>230 本当なら変化しているはずらしい(上記リンク先TEST04.CのCopyStream内
の条件より)のですが、全く変化なしです。
_tWinMainとかwWinMain とかあったなー (某
>>224 君の考察結果は間違ってないと思うが(とは言ってもVC++とかの話な。
DLL絡みは結局処理系に依存するところが多いだろ)、果たして
「気楽」かね?
要は必ずインタフェースクラスとファクトリを作らなきゃいかん、
それは面倒だし、全てが仮想関数呼び出しになることで効率も犠牲になる、
そこまで頑張ってもABIが処理系依存なせいで、昔ながらのCのDLLとは違って
他の言語どころか他のコンパイラからさえ利用できない、
テンプレートはどのみちDLL化できない(特殊化バージョンを入れることは
出来るが)、バージョンコントロールを厳密に意識するなら
引数や戻り値にも気楽にクラスを使えない(std::basic_string<>とか
使えないのは結構致命的では?)、といった問題があるだろう。
>>224 結局、劣化COMを実装しているだけじゃないか。
DirectXのようにCOMの最低限のルールだけ借りて使う方がいいかと。
>> 234
それは全部
>>224 の引用元の方法でも同様に抱えている問題。
そうはいってもDLLを使わないわけにはいかないし(COMはもっと遅いし)
すべてをCインターフェイスに書き換える手間をかけても、
得られるのはコンパイラ互換性くらいだろ。
basic_stringはどっちにしてもDLL越しには使えない。
聞きたいのは、
>>224 が言ってる2点で、新たに問題が起きるかどうか、じゃないか?
と、偉そうに言うオレはDLLなんかここ3年使ってない。
>>237 > と、偉そうに言うオレはDLLなんかここ3年使ってない
ぶっちゃけC++に関してはそれで正解じゃまいか?
COMにいくか、全部ヘッダに入れる/スタティックリンクするの2極だと思う。
COMは遅いだけじゃなくて普通のC++クラスと同じように使えないのも問題だな。
「C++の」ライブラリとして便利なものが欲しいなら、後者にならざるを得ない。
Crazy for you.
>>238 COMは常に遅いというわけではないだろ。
DLLに実装した場合に限れば、インタフェースメソッド呼出は、
(アパートメント越えのマーシャリングを起こさない限り)
原理的に仮想関数呼出と同じコストしかかからないぞ。
>>240 普通にCOMの作法に従うと、文字列受け渡すにもSysAllocString()とか
いちいち使うことになるんで、やはり遅いと思うが
>>240 普通のDLL的な使い方をするにはサイドバイサイドの実装が遅すぎた感じだよな。
243 :
224 :2007/07/26(木) 12:58:02
224です。
>>235 のPDF読みますた。
とりあえずCOMの勉強をしてまた出直します。
ありがとうございました。
>>241 ああすまん、そういうことか。
例えば文字列ならLPSTR/LPWSTRにすれば対等だしという具合で、
関数呼出自体のコストしか考えていなかった。
ちょっとスレ違いかもしれませんがお尋ねします。 Linux とか Mac で Win32API に相当するものは何ですか? あと、そのスレがあれば教えてください。
>>245 system callだな。つまり、manのセクション2。
つWine 流石にこれは冗談半分。 LinuxはWin32のkernel関係に当たるのがPOSIX。 GUI系はいろいろラッパがあってよくわからん。 ただ、どいつもX Window Systemが基底になっている。 Mac OS XはCocoaとCarbon。 こうでいいのか?
ううん
249 :
245 :2007/07/26(木) 13:35:49
>>247 ありがとうございます!
主にGUI系が知りたいんですけど、それぞれのOSでウィンドウを表示するコード
(C++などメジャーな言語で)が載っているウェブサイトってないでしょうか…。
If you give a mouse a cookie, it's gonna want a glass of milk.
So, what's the point?
スレ違いとわかってるなら続けんなよ・・・
>>249 Unix系のOSに、WinAPIに相当するGUIなんかないぞ。
いずれにしろ、スレ違いだ。
うそ?
>>245 ほら、LinuxでもMacでも(恐らく)最小のウインドウを表示するプログラムやるからどっか行け。
--
/// For compile: gcc -std=c99 this.c -lX11 -L/usr/X11R6/lib
#include <X11/Xlib.h>
int main()
{
static const int WinWidth = 100;
static const int WinHeight = 100;
static const int WinBorder = 2;
Display * dpy = XOpenDisplay(NULL);
Window win = XCreateSimpleWindow(dpy, DefaultRootWindow(dpy),
0, 0, WinWidth, WinHeight, WinBorder,
BlackPixel(dpy, DefaultScreen(dpy)), WhitePixel(dpy, DefaultScreen(dpy)));
XSelectInput(dpy, win, KeyPressMask);
XMapWindow(dpy, win);
XEvent event;
do {
XNextEvent(dpy, & event);
} while (event.type != KeyPress);
XDestroyWindow(dpy, win);
XCloseDisplay(dpy);
return 0;
}
256 :
255 :2007/07/26(木) 14:07:42
日本語が変だった。 LinuxでもMacでも動く(恐らく)最小の、ウインドウを表示(してキー入力待ち)するだけのプログラムだな。
なんだかんだ言ってやさしいな あんたかっこいいよ
プログラマはツンデレ多いな
とりあえず「できない」と返事しておかないと やっかいなことになる職業だから
260 :
245 :2007/07/26(木) 14:15:54
ツンデレさん、ありがとうございました!
>>259 あ、それなんとなくうけるw
俺は注文する側だけど、そういう奴確かにいるw
「(金と時間が十分に与えられるなら)できます」
「できます(よそにまる投げだけど)」
なんでも「できます」と答えることがどんだけ酷いことになるかを身をもって体感してきた若かりし頃。 といっても高校時代だが・・・
なんでも「できます」と答えることがどんだけおいしいことになるかを身をもって体感してきた若かりし頃。 といっても高校時代だが・・・
>>229 解決しました
ウィンドウ変更する時に使ってたSetWindowPos()に
SWP_DRAWFRAME (再描画時にウィンドウの枠も再描画の対象にする)
をセットしていないというミスが原因でした、お騒がせしました
おかげで騒ぎまくったお ⊂⌒ヽ (⌒⊃ \ \ /⌒ヽ / / ⊂二二二( ^ω^)ニニ二⊃ \ \_∩_/ / ( (::)(::) ) ヽ_,*、_ノ ブーン /// ///
>>269 なるほど。
早速試してみたいと思います。
ありがとうございました。
>>268 なるほど。
早速試してみたいと思います。
ありがとうございました。
ためさんでよろしい
わろた。遅レスなのがいい。
274 :
デフォルトの名無しさん :2007/07/28(土) 15:37:21
GetKeyboardStateってウィンドウがなきゃ使えないの? コンソールアプリで使ったら全然取得できなかったんだけど
そうですよ
現在フルスクリーンになったらウィンドウを非表示にするプログラムを組んでいるんですが 何か良い方法はないでしょうか? 検索をしてみても中々見つからなくて_no
自分自身なのかほかのウィンドウかわかんね
タスクバーやらタイトルバーが消える、 Power Pointのスライドショー実行中画面みたいなものを作りたい、 という感じ?
_no on_
280 :
276 :2007/07/29(日) 00:46:12
言葉足らずで申し訳ありません_no フルスクリーンを検出したら自分自身を非表示にする為の方法を探しております
自分自身がフルスクリーン?
名前が違う。ウザイ
他所のウィンドウがフルスクリーンになったらって事か そもそもフルスクリーン化の方法は多種多様だから 画一的な検出方法はないと思う
284 :
276 :2007/07/29(日) 01:02:26
言葉足らずで申し訳ありません_no 自分自身のフルスクリーンを検出したら自分自身を非表示にする為の方法を探しております
自己解決しました
引き続き情報お願いします。 あと、寿司食いたい
どれが本物かわかんねwww フルスクリーンって最大化だったりするw? それならIsZoomedで定期的に調べるか WM_SIZEのwParamを調べればいいんでない あとShowWindowで隠す 画面を覆いつくしてるか調べるんなら クライアント領域の広さ>スクリーンの広さで良いんじゃね? 最前面かどうかも調べる必要があるけど
いやもう事故解決したから
質問をさせて頂きました276です
>>283 さん
>>287 さん
レス有難うございます。
非常に参考になりました(^^
290 :
276 :2007/07/29(日) 01:55:58
どいつもこいつも的外れ ボタンひとつでできるアピをおしえろや
Win32API質問箱 Build55
ボタン一つ作るのにどれだけアピが必要か分かって言ってるのか
そうだ!そうだ!ボタンつけてくれる彼女作るのにどれだけアピったか分かって言ってるのか
なんだよそれwアピール?
ボタン付けは手作業だしアイロンがけも手作業です 魔法使いなのにね♪ orz !!!!!!!!!!!!!!!11111111
おもんねーんだよ
/////// ///////____________ ///////  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄| ̄ ̄ /////// (~) チリンチリン /////// ノ,, /////// ∧_∧ /////// ( ´∀`)( 厨 ) )) < 夏だなあ〜 /////// (つ へへ つ /////// //△ ヽλ ) ) 旦 ////// l ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄l /////  ̄| .| ̄ ̄ ̄ ̄ ̄ ̄ ̄| .| ̄ //// ^^^ ^^^ 2chの夏。厨房の夏。
ボタンつけてくれる彼女ホスィ
アピってなんのことかと思った
今時の彼女は OpenWindow() 位で他にいろいろ可能なアピってあるのか。 例え話になるが、東京マガジンの、やってトーライとか見ているとアピは 少ないな。 今話題の宮崎県って、姉さん女房が多いとか。歳食っているとアピは 増えてんだろうな。 マ、うちは年下で年数かけてアピを増やした。また別の新手を確保して イチからやるってもう面倒。OpenWindow() 実装頻度も下がったし。
チラシの裏でアピれよアホ
アピ に一致する日本語のページ 約 354,000 件
303 :
名無しさん@そうだ選挙に行こう :2007/07/29(日) 13:53:20
CreateHardLinkしてファイル名が二つある場合、 一方のファイル名から他方を割り出すにはどうすればいいですか?
プロセスが掴んでいるファイルのフルパス名一覧を得たいのですが、 やり方教えてください。
市販のアプリのボタンってさ、なんか丸かったり結構デザインに凝ってたりするけど あれどうやんの?
日本語がおかしいな 自動詞が目的語を取ってる
>>305 Winampのカスタムスキンを.zipにリネームして中見ればわかるけど
各パーツのビットマップを自前でペタペタ貼ってるだけ。
>>303 FindFirstFileName
ただしVista限定
普通のウィンドウのリージョンを変えたいときってWS_POPUPを指定しないと駄目かな? WS_POPUPを指定しないとリージョン変わらないし、WS_POPUPを指定すると 今度はキャプションが表示されない どうしたものか・・・
>>312 WS_SYSMENU | WS_POPUP
とやっても、キャプションは表示されないです
WS_CAPTION
>>302 やっぱアピって一般的な呼び方だったんだな
316 :
名無しさん@そうだ選挙に行こう :2007/07/29(日) 20:05:51
vistaなら取得できた気がしないでもない
定期的に出るけどその辺はカーネルで管理されてると思うな まったりreact os とかのソース読めばわかるかも
320 :
デフォルトの名無しさん :2007/07/29(日) 21:38:25
>>317 いやそうじゃなくて、CreateFileとかで開いてるファイルの列挙です。
321 :
304 :2007/07/29(日) 21:41:36
>>317 ありがとうございます。EnumProcessModulesで得られるファイルの列挙でした。
322 :
デフォルトの名無しさん :2007/07/29(日) 22:40:20
323 :
◆CRF62MVOAI :2007/07/29(日) 22:42:40
プロセスが掴んでいるCreateFileとかで開いてるファイルの フルパス名一覧を得たいのですが、 やり方教えてください。
54のログにこんなのがあった 641 名前:デフォルトの名無しさん[age] 投稿日:2007/07/07(土) 08:08:18 任意のプロセスがCreateFileしたファイルのパス、それを取得する方法て何かないですか? 使用OSはVistaです フィルタドライバ書かなきゃいけないんでしょうか?… 642 名前:デフォルトの名無しさん[sage] 投稿日:2007/07/07(土) 08:26:24 CreateFileのAPIフッ(ry たぶん323には実現不可能だね
>>323 なんか最近この質問多いよな。
Process ExplorerとかWinDbgとかと同じ方法をとればできるのは確実だけど、
軽く聞いて何とかなるってレベルじゃないと思う。
まあ323には実現不可能だね
327 :
◆CRF62MVOAI :2007/07/29(日) 22:56:29
自己解決しました!
おそっ
329 :
デフォルトの名無しさん :2007/07/29(日) 22:59:00
ひどい
ドライブがUSBメモリかどうかを判定する方法を教えてください。
APIならGetDriveTypeかな? リムーバブルドライブかどうかしか分からんけど
じゃあドライブってのは間違いですね 回転してないし
さっきから糞レスを付けてる馬鹿はなんなの?
335 :
デフォルトの名無しさん :2007/07/30(月) 00:54:56
全然詳しくないので質問させてください。 いつも仕事中にWebばかり見てる派遣クンが 「Win32APIがプログラムどおりに動かない原因を調べるのは僕の仕事ではありません。」 と言っています。 彼のWindowsプログラムが動かないのを調べるのは誰の仕事なのでしょうか?
お前の仕事
どう考えてもお前の仕事
じゃあ派遣君の仕事っていったい?
>>335 その派遣クンの契約を切るのはキミの上司の仕事。
で、代わりにデバッグやらされるのは多分キミw。
仕事中にWebばかり見てるのがわかった時点で
上司に切るように言わなかったキミの責任です。
>>338 >じゃあ派遣君の仕事っていったい?
派遣=言われたことを言われた通りにやる
うぜー四手メーラ
>「Win32APIがプログラムどおりに動かない原因を調べるのは僕の仕事ではありません。」 この業界に向かないない奴がよくする言い訳 早く辞めちまえ、と言いたい
夏だなと言わせろ。我慢ならん。
この板は中学生しかいないんじゃないかと思うほどコピペや煽りに耐性が無いな
この板がコピペや煽りに耐性がない原因を調べるのは僕の仕事ではありません。
普段あんまり荒れないからね 人いねーし
だれかの御先祖のものとして反応せよ
プログラマーやってみたいんだけど 最低どのぐらいのスキルが必要? 国立の情報関係に通う友人の話だと構造体とポインタを知らなくても 余裕で就職できてるみたいだけど・・・
>>340 言われたことを言われた通りにやることできない人はプログラマには向かない
別の業界に転職したほうがいい
>>349 「Win32APIがプログラムどおりに動かない原因を調べるのは僕の仕事ではありません。」
の正反対のメンタリティがあればいい。
自分の仕事で問題が発生した時、人のせいにしないで自分で調べていける能力。
>>349 入れパイしてブラジャー付けると誰でもなれるよb
>>349 あとは作業ロボットになれるかどうかかなw
比喩じゃないのがなんとも笑えない
だれかの御先祖のものとして反応せよ
355 :
349 :2007/07/30(月) 01:43:44
作業ロボットと問題原因調査じゃ全然ちがうじゃないですか
何かあんまりスキルって大事じゃないのねw プログラマーで未経験者歓迎の派遣が有ったから面接に行ったら 「実務経験が無いからまずは工場で働いて勉強しましょう」 って言われた。プログラマーへの道は遠いな
同じだよ、お前には無理だ
工場かよw行きたくね〜!
>>357 いやいやw
勉強させられそうになった内容とか全部知ってたし
普段からソフト作ってるよw
ただ、実務経験がないだけ。
その派遣会社はブラックリストにも載ってるからまあしょうがないよ
>>360 プログラムの経験年数ではなく、現場で働いた期間
どんなにプログラム組めても、現場で働いたこと無いから
実務経験しかみない企業はとらないの
建前 「実務経験が無いからまずは工場で働いて勉強しましょう」 本音 「実務経験無いのかよ。使えねぇなあ。とりあえず工場送りにしとくか」
建前 「実務経験無いのかよ。使えねぇなあ。とりあえず工場送りにしとくか」 本音 「未経験者歓迎って書いたら実務経験ない奴が来やがったw(;゚;ж;゚; )ブブッこいつアフォじゃねぇの?w」
ちなみに 未経験者 = 実務経験が無い これ常識な
建前 「派遣と正社員は同じですよ」 本音 「入社試験があるのに同じなわけねーだろ )ブブッこいつアフォじゃねぇの?w」
>>356 それふざけた話だよな
あと経験に関係なく学歴しかみてねーだろ
マジな話 スキルが全くない大卒>>>>>>>>>>スキルがある高卒 だからな。プログラマーの給与も大卒前提で決めてる企業も多いから
そんなに戦力に違いが? やっぱ大卒って偉大なのかな
世の中にはwindowsの使い方もわからない情報学部大学院生もいるけどな。
レアケースなんかどうでもいい
単純作業でも大学生のほうが飲み込みがいいとか悪いとか なんか数学がどうたらこうたらってのはトリビアでもいってたけどほんとかね?
欲しいの学術的教養をそれなりに持ってる奴。 有り体に言えば使える奴。
maitadeyare
>>35 -辺りと似た流れから察するに
荒らし目的のキチガイが毎週定期的に
自演しに来てると考えるべきかな。
駆除しないとね。
下の方わらた みつをとか伊集院みたいだ
377 :
デフォルトの名無しさん :2007/07/30(月) 07:52:49
>>327 ◆CRF62MVOAI はどうやって解決したの?
自己で解決した
\ __ / _ (m) _ピコーン |ミ| / .`´ \ ('A`) そうだ諦めよう! ノヽノヽ くく
380 :
デフォルトの名無しさん :2007/07/30(月) 08:33:58
>>368-373 問題が発生した場合の対処能力が違うからね
専門卒-> 僕は言われた通りにやったので調べるのは僕の仕事じゃありません。
大卒 -> これこれこうだからこのモジュールが原因です。
逆じゃね
調べる努力も出来ないから大学に入れなかったんだよ
何この偏見野郎
偏見とは根拠のない意見 大学入試という公正な基準で結果が出てるだろ 例外はもちろんあるだろうが大体において受かった大卒より落ちた専門卒が優秀なんてありえねーだろうが
それが調べる努力も出来ないから大学に入れなかったのとどう関係あるの?
>受かった大卒より落ちた専門卒が優秀なんてありえねーだろうが 専門卒がみな落ちたわけじゃないんだから人間でいいじゃん。アホな大卒だなぁ
スキルが全くない大卒
>>386 受験もせず最初から逃げ出した椰子はマになっても「調べるのは僕の仕事じゃありません」
コピペにどんだけ反応してんだよ
>>388 馬鹿じゃねぇのw専門卒でもお前より役立つ奴はいっぱい居る
スレ違いだって事にも気づかない連中は使えないだろうし使いにくいだろうなぁ
灼熱の太陽が照りつける夏真っ盛りだな
高卒の夏だなぁ厨は板違い
>>390 専門卒必死だなあ
お前のそういうところが駄目なんだよ
大学入試という一つの根拠に対する反論がまるでできてない
大卒より専門卒が優秀だという根拠をあげてみろよ、この低学歴が
>>394 あほや。俺は大卒。お前みたいな形だけの大卒が嫌いなだけ、この低脳が
命題を否定するには反例を一つあげるだけでいいって大学で習わなかったか。
中学で習った
>>395 反論の根拠が「お前が嫌いだから」ですか
対人スキル低いですね。
どっちがやねんw
やっぱ学歴社会なんだな 俺もアメリカの大学に申し込むわ
>>399 見苦しいなあ
まともな反論ができないならもうカキコするなよ
反論以前の問題 たかが大卒という理由で専門卒を馬鹿にするお前と そんなお前が嫌いな俺、対象数が違うじゃん。 おまいは大卒を夢見る小学生かっw
対象数ってなんだよ?w 嫌いな奴の意見はたとえ正論でも反対、お前が間違って人の上にたったらみんな辞めるだろうな。
>>274 GetKeyboardState は最後に get したウィンドウメッセージが発生した
時点でのキーボードの状態だからダメ。
GetAsyncKeyboardStateを試してみて。
>>405 日本語も分からないの?
学歴で人を馬鹿にする意見のどこが正論?
408 :
デフォルトの名無しさん :2007/07/30(月) 11:26:03
>>327 × ◆CRF62MVOAI はどうやって解決したの?
● ◆CRF62MVOAI はどうやって実装したの?
でよろしくお願いします。
自己で実装しました!
>>407 はあ?
大卒より専門卒のほうがスキルが高いというのは大卒の人をバカにしてるんじゃないのか?
それに対して入試という根拠を示して論理的な反論をしたな
でもお前の根拠は「嫌いな人の意見には反対」だ
どっちが人をバカにしているかよく考えてみることだ。
長く雇うんだし専門卒よりは大卒の方が使えると思うけどな 大学入試をクリアしてるわけだし、その大学に入るのに相応の 努力をしたと認められるわけだし。
>>410 >大卒より専門卒のほうがスキルが高いというのは大卒の人をバカにしてるんじゃないのか?
実際にそういう人がいるんだから仕方ないじゃん。お前は自分がバカにされてるようで反論したいだけちゃうんかと。
>でもお前の根拠は「嫌いな人の意見には反対」だ
自己紹介乙。俺の根拠は「学歴で人をバカにする意見の人は嫌い」だ。
お前が学歴で人をバカにしないなら嫌いじゃないし、共感する意見を言えば賛同する。
大卒で使える奴は使えるし、それは高卒や専門卒でも同じでしょ 大卒でスキル無い奴はその間何をしていたのって事になるんじゃないの? 俺は何度面接行って作ったソフトやスキルをアピールしても大卒じゃないから通らないよ ごめんね大卒を妬んで
いつかお前らと安心して働ける会社をおこしたいわ
ム板がマ板になってるやんw
>>412 例外の話などしていない。大体において、と断ってる。
「こういう人の意見には反対」も「嫌いな人の意見には反対」も同じだろ
結局、意見の内容でなく、それを言う人でしか、判断がくだせない。
自分の脳で考えろ。
感情でなく理論で考えろ。
こうして2ちゃんソフト商会ができたのだった
お前ら全員スレタイ読み直せ
420 :
406 :2007/07/30(月) 13:02:04
>>416 お前ホントあほだなぁ。よくそれで大学入れたよ。
「こういう人の意見には反対」ではなく、「こういう意見の人には反対」だ。
必死扱いて大学入ったんだろ、だから大学がほぼすべて
アホだな〜アホだなお前大学を追っかけまわしてまたドジしてる
#define STRICT #include <windows.h>
↓気を取り直して次の質問をどうぞ
427 :
デフォルトの名無しさん :2007/07/30(月) 18:25:28
なんか、オブジェクト指向嫌われているみたいですけど 何でなのですか? やっぱ、C++でオブジェクト指向するにはだいぶ無理をしないといけないから?
APIの質問をしろドアホ
429 :
デフォルトの名無しさん :2007/07/30(月) 18:31:24
>>428 すいません、ちょっとこれ見たら質問したくなった。ねぇ、見てるんでしょ。
■ おすすめ2ちゃんねる 開発中。。。 by FOX ★
このスレを見ている人はこんなスレも見ています。(ver 0.20)
なぜオブジェクト指向は嫌われているのか?2 [プログラマー]
きめぇw
この流れ明らかに不自然。 やっぱり定期的に自演荒らしが来てるんだなぁ。
↓気を取り直してAPIの質問をどうぞ
433 :
デフォルトの名無しさん :2007/07/30(月) 19:34:20
C++Builderって超簡単にウィンドウ作ったりボタン作ったりできるけど やっぱり中身はAPIなの? ウィンドウ作って処理するにはコールバック関数(前にクラスに入れようとして出来なかった)が いるからクラス化は無理だと思うんだが。 あれはBuilderがC++の仕様を拡張してるの?
クラス化は無理という前提の考え方が間違ってる。 まあ相当えげつないことしてるのは事実だけど。
WndProc入りのクラス作るときに初めてSetProcの恩恵にあずかった。
SetPropだ・・・・吊ってくるお(;^ω^)
サンク大好き
>>433 BCBはC++型のほかにObjectPascal型のクラスも扱える。
そしてObjectPascalは非スタティックなメンバ関数ポインタを扱える。
まあC++でも非スタティックなメンバ関数ポインタ使えるけど。
最近だとboost::functionとかでもできるんじゃないか?
>>440 APIに与えるコールバックはどっちみちthiscallではダメだから、
非staticなメンバ関数は使えないだろ
メンバ関数ポインタを使ったC++流のコールバックの仕掛けを
使うとすれば、その後の話
442 :
デフォルトの名無しさん :2007/07/30(月) 23:00:32
>>422 >「こういう人の意見には反対」ではなく、「こういう意見の人には反対」だ。
なにこれ?
禅問答?
罪を憎んで人を憎まず
>>442 その2つが区別できないなら論理を扱う仕事は(以下略
すみません論理ってなんですか?
マ板でやれ
結局、意見でなく人に反対かよ これだから専門卒の派遣はバカっていわれるんだよ
ここで議論すんな。日本語読めないのか?
いや全ての話題はアピに集約していくのだ
黙れ
議論なくしてスレの存在意義なし
【専門卒派遣の最低条件】 ■派遣先正社員の作った糞開発ツールはたとえ腐っててもマンセーして使う ■派遣先の人事権のある社員の意見はたとえ間違っていてもマンセーする
453 :
デフォルトの名無しさん :2007/07/31(火) 14:17:21
すみません。みなさん、ネコってソフト知ってますか? 起動すると、ネコの画像がデスクトップ上に現れます。 その状態で、マウスを動かすと、ネコの画像がマウスの方によってくるんです。 (実は、現物はなくて、うろ覚えです。そもそも、UNIXでした。) あんなものを作ってみたいのです。 ネコの画像はウィンドウそのものとすると、マウスがウィンドウの外にいるときに、 マウスの位置を把握できれば、MoveWindowでネコを動かせそうです。 で、SetCaptureでウィンドウ外のマウスをキャプチャできるかと思ったらうまくいきません。 どなたか、よい方法をご存じないでしょうか。 (フックというやつかとも思うのですが、そうすると、dllだのなんだのとかなり難しそうです。) よろしくお願いします。
GetCursorPosition
SetCaptureはマウスのメッセージを受け取るのに使う
こういうのは、定期的にマウスの場所を自分で調べるんだよ
>>454 のは名前がちょっと違ってて GetCursorPos だけどな
456 :
デフォルトの名無しさん :2007/07/31(火) 14:35:57
>>454 GetCursorPositionは、GetCursorPosですね。
やってみたら、確かに、位置が取れるようです。
すごいです!ありがとうございました。
ただ、マウスが動いたかどうかはわからないのですね。
教えて君で申し訳ありませんが、もし、いい手があったら教えてください。
Timerで時間をおいて取るという方法も考えられますが。
457 :
デフォルトの名無しさん :2007/07/31(火) 14:36:49
>>455 ありがとうございます。わかりました。
それでやってみます。
>453 WM_NCMOUSE...メッセージを捕捉しろ。
459 :
デフォルトの名無しさん :2007/07/31(火) 14:48:41
454さん、455さん できました。感謝感謝です。 何日も(はじめてネコを見ていらい何年も?)悩み続けていたんです。 本当にありがとうございました。
460 :
459 :2007/07/31(火) 14:50:59
>>458 あうっ。そういう手もあるんですね。それもやってみます。
ありがとうございます。
(こう言ってはなんですが、こんな良スレははじめてです。m(__)m)
わろたb
463 :
デフォルトの名無しさん :2007/07/31(火) 15:38:44
>>409 × ◆CRF62MVOAI はどうやって実装したの?
○ ◆CRF62MVOAI はどうやって自己で実装したの?
でよろしくお願いします。
464 :
デフォルトの名無しさん :2007/07/31(火) 15:46:19
スレッドAがEnterCritialSectionで所有権を取得している時で、そのほかのスレッドB, C, Dの順に所有権を取得しようとすると ブロックされるプログラムで、AがLeaveCriticalSectionを実行すると、 まずはBが所有権を取得することになるのでしょうか。 この状況を発生させるプログラムを記述すると、B -> C -> Dの順に所有権を取得しますが、 これはたまたまそうなっただけなのでしょうか。
タマタマ
466 :
デフォルトの名無しさん :2007/07/31(火) 15:54:41
>>465 回答ありがとうございます。
MSDNに書いてありました。
InitializeCriticalSectionAndSpinCount
スレッドがクリティカルセクションの所有権を取得する順序についての保証は何もありませんが、Windows はすべてのスレッドに対し公平に所有権を与えます。
順序を保障する同期ってどうやるんでしょうか?
Q>順序を保障する同期ってどうやるんでしょうか? 1.ミューテックス 2.セマフォ 3.自動イベント 4.手動イベント
>>468 AdvancedWindowsにはミューテックスは待機スレッドのなかから1つを公平に選択してそれにミューテックスの所有権を与えると書いてあります。
数行でできるような簡単な方法は無い、が答えかね。 TLSとか使って突入順序も見るしかないか。
その、順序の必要性を一考したほうがよくね? イベントオブジェクトでいける気がする。
ワーカースレッドから別のワーカースレッドをチェイン状にして起こすとか ・・・最初から1つにまとめればいいじゃん、といつも思ふ夏の夕暮れ でもUIスレッドだとそうする必要あるのか、実際作った事ないからいまいちわからんが
>>468 WaitForMultipleObjects で待てばいいんじゃね?
| この関数を呼び出して実行している間に複数のオブジェクトが
| シグナル状態になった場合は、それらのオブジェクトのうち、
| 最小のインデックス番号が返ります。
>>472 464です。468は私ではないです。
概要は複数スレッドから呼ばれる処理を、
読んだスレッド順に処理したいです。
この呼ばれる処理は複数スレッドから同時に処理されると壊れるので同期にしたいです。
CRITICAL_SECTIONで同期をとるように作りましたが、順序が保障されないです。
それで、順序を保障する同期ってどうやるんでしょうか?
になりました。
ミューテックス、セマフォも同様のようです。
自動イベント、手動イベントの順にさがしていっています。
>>470 の答えが正解?WaitForMultipleObjectsも見てみます。
>468は私ではないです。 当たり前だ。お前バカじゃね?
バカです。すいません。
タブコントロールを使ってタスクマネージャーみたいな画面を作りたいのですが、 ダイアログの上にタブコントロールと、タブの中に表示したいコントロールを 重ねてみたら、タブコントロールに隠れてうまく目的のコントロールを 表示してくれませんでした。 タブコントロールの上にChildWindowとして置くべきなんでしょうか? でもそうすると、ダイアログのタブストップ(TABキーでコントロール間を 移動するやつ)がタブの上にあるコントロールに対してうまく機能してくれませんでした。 もうどうしたらいいのかわかりません。 タブコントロールで画面を切り替える適当なサンプルソースがありましたら 紹介お願いします。 (「「猫でもわかる〜」では同じコントロールを使いまわしていたりで、 いまいち参考になる例ではありませんでした)
猫でもわかるでも分からないならもうあきらめた方がいい
スレッドって並列処理したいときに使うんだよな。 並列処理したいってのと順序を保証したいってのは矛盾しているように気がするのはオレだけだろうか…。
ファイバにすれば順番に処理できるかも
>>482 おーさすが。
ファイバは順番通りに制御できるね
ファイバはマイクロスレッドとも言うね。
ファイバはCRITICAL_SECTIONやMutexのような排他プリミティブや TLSと互換性が無いから、余程でない限り使うべきもんじゃないと思うが
呼ばれる処理自体を別のスレッドにしていいなら、 メッセージキューを使う手もあるな。
TLSは無いがFLSはVistaから使えたような
488 :
デフォルトの名無しさん :2007/07/31(火) 18:20:02
LoadLibrary でDLLじゃないファイル読もうとすると警告ダイアログ出るんだけど、 前からこんなの出たっけ? OSは XP sp2 なんだけど
呼んだスレッド順にしなければならない処理って何だろう? 各スレッドがいつ呼ぶのか(各スレッドがいつどれだけ進むのか)保証は無いのに。 (つまり>481にほとんど同意)
ワーカスレッドにキューでジョブを処理させればおk おそらく、UIが固まらなければいいだけだと予想
キューの入出力は排他処理をしないとキューにいれたはずのジョブが 失われる可能性があるね
キューに突っ込むときにクリティカルセクションが必要になると思うが、 そのクリティカルセクションの突入順序の保証ができないなw
そこはダメ、そこはダメよ〜
>>489 マジれすすると
3人の男がいて女が一人しかいないとき、
ヤれる順番を並んだ順にするなら、きちんと並んだ順をまもってあげないと、
2番目以降を抽選にすると暴動がおきるからです。
クリティカルセクション
ミューテック巣
セマフォ
497 :
デフォルトの名無しさん :2007/07/31(火) 20:00:50
単一スレッドでやれば済むじゃん 同時にプレイするならともかく
管理用スレッドに対しQueueUserAPCで通知用イベントを登録した後WaitForSingleObjectなどで待機だな
同時プレイ
僕、バッカ・・・ おっと失礼。 僕、夫才!
LPCWSTR と PCWSTR、この2つの違いを教えて下さい。 どちらも「 CONST WCHAR * 」ってことになってますが、 同じならなぜ2つあるのかお願いします。
Win16では、前者がfarポインタ、後者がnearポインタという違いがあった。 Win32からポインタは1種類になったのでそのような違いがなくなった。
どうしてnear,farポインタはなくなってしまったんですか?
かったるいから
32ビットになってわざわざ16ビットのポインタ使う必要なくなったから。
しかしもうWin16を知らん奴が出てきてもおかしくない時代だからな
>>506 逆に何の為にnear,farポインタがあったのかを考えたほうがイイ
Win32でfarポインタを潰していなかったら、 x64の登場はもっと遅かっただろうと思っている俺。
Win16は知らんが、far,nearポインタはしってる。
知らんでも普通に16(ビット)と32(ビット)から連想できるけどな
near,far,hugeポインタのうちのhugeポインタだけを使ってると考えるんだ
いや、今使っている32ビットモードは、ようするに32ビットtinyモデル。 ポインタは32ビットnearポインタだろ。
セレクタとかオフセットとかあったなー
sizeof(int) == sizeof(int*)である限り、俺は大丈夫
インテル80286,80386では、 リアルモードではレジスタのアドレス幅が16bit長だった為にゃの。 よって、64kまでしかアドレス空間がにゃいの。 インテル486以降は、80386での経験を元に 32bit長のレジスタ操作の方向性が見えたため、 セグメントアドレス(セレクタを上位16bit、オフセットを下位16bit)と したにょ。 これがふぁー
ふぁーふぁーふぁー 「ふぁー」の声の音階はファである
>>518 sizeof(int)==4;
sizeof(int*)==8;
君に幸アレ
>>521 音楽の調号で、一番右側の♭はファになる。
トリビアな
>>523 小学校(中学校だっけか?)の音楽のテストで出た気がするがトリビアなのか?
今日の晩飯はトリビアでした
526 :
523 :2007/07/31(火) 23:25:33
ILP64 なら・・・ILP64 ならきっとやってくれる!
ぬるぽなら・・・ぬるぽならきっとやってくれる!
ガッ!なら・・・ガッ!なら何もやってくれない!
>>489 マジれすすると
3人の女がいて男が一人しかいないとき、
ヤる順番を並んだ順にするなら、一番目に並ばないと
2番目以降はヤッツケになってしまい暴動がおきるからです。
その前に嫉妬すると思うけど
ナニの話にすり替えてるんだよw たとえば、動画の2passエンコードなんかだと UIとエンコードエンジンとは別スレッドで動いて欲しいが、 順番が守られないとわけわかめってことじゃないのか?
違う
>>520 セレクタ16bit/オフセット16bitの16ビットプロテクトモードなら286からだし、
16/32bitの32ビットプロテクトモードも386からだ。
もうDOSのプログラム書いたことある人はすくなくなったのかな。
>>537 こういう知識を持たない人は、プププ扱いなんだろうな
同級生の子供に生理キターみたいな話し聞くと、 今でも毒男な俺らはいったい・・・・・・・・
ジュルリ
同級生を 義父さん と呼ぶことを目指せ
>>464 難しく考える馬鹿が多いので俺が答えてやろう。
所有権を取得したら自分の順番か確認すればいい。
もし自分の順番でなければ、一旦LeaveしてまたEnterをすればいい。
Leave Enterの待ち時間はSwitchToThreadやSleepで他のスレッドを少し優先させて処理を促す。
というか並列処理できるアルゴリズムならその結果だけストアしといて、最後にまとめて順番に処理すればいい話だと思うが・・・。
いちいち処理待ちする意味がわからん。
4Pか!
痛い(´・ω・`)ひげそり過ぎた
>>543 リナンバリングするくらいだったら、
関数ポインタ配列でワークを振り分けたほうがよくね?
FM TONWSで16bitセレクタ+32bitオフセットのfarポインタを使っていた俺様の立場無し
>>543 順番待ちを決めるときに1つのスレッドのを2つのスレッドが待ったときに
順番入れ替わる可能性があるんでは?
順番はTLSで保存して取得はアトミックな操作でやるってこと?
順番を決めるときに順序がいれかわらないことを保証する方法・・・ワカンネェ。
バカに詳しくたのんます。
複数のスレッドが起動した時に、共通変数を参照した順番付けをする。 (ミューテックスを利用) この順番を元に作業を振り分ければいいんじゃない? 546の云うように、関数ポインタ配列を利用して振り分ければ?
>>533 今回の話は1pass目と2pass目をスレッドにして並行にするって話。UIとエンコードは順番を保証する必要ないしな。
って書いただけで設計に問題があるのは分かるよな、普通。
>>464 目的がはっきりしないので、回答の妥当性が判断できず、議論が発散していると思う。
>概要は複数スレッドから呼ばれる処理を、読んだスレッド順に処理したいです。
というのを、仮に以下と仮定してみる。
- 複数スレッドから呼ばれるログの出力処理である
- ログ出力は同期的に動作する(処理が終わるまで復帰しない)
- ログの出力順はログ出力関数の呼び出し順で処理されなければならない
このような前提であれば、キュー処理が普通だと思う。
ログ出力を別スレッドで動作させ、キューで出力順番を管理する。
スレッドとの同期は SuspendThread()/ResumeThread() でも使うのかな?
ログ出力依頼関数内ではキューに情報を格納し、自分自身を SuspendThread()で停止させる。
ログ出力スレッド内では各処理が終了したら、該当スレッドを ResumeThread()する、とか。
SuspendThread()/ResumeThread() は使ったことないので、こんな単純には
いかないかもしれないが。
この前提の場合、
>>482 のファイバや
>>546 の振り分けなどは単純に使うことはできず、
また、自分の順番が事前に管理されているわけではないので、
>>543 の処理では
そもそも自分の順番である判定ができない。
ただ、
>>492-494 の指摘する、キュー処理する順番自体が保証されない問題は残る。
しかし、十分に軽い処理なので、これは無視できる。(このレベルのタイミング
問題はそもそもスレッドを使う時点で、一般的に妥協せざるを得ない問題)
8086で動作してたMS-DOSはメモリ空間が640KB(一部例外あり)だったよな このときにはファーポインタもあったでしょ
>>552 8086のメモリ空間は1MB
640KBはごく一部の機種の最大メインRAM容量
ごく一部ねぇ…… その言い方だと、今のパソコンもごく一部はMS-Windowsだって言うようなもんでしょう……
464です。
>複数スレッドから呼ばれる処理を、読んだスレッド順に処理したい
を実装したいのは興味本位のなので具体的な処理はありません。
>>464 のおっしゃるとおり、ログとか順序を守らないといけない出力につながる処理にあたります。
順序を保障する同期のAPIはないから妥協して自分で仕組みを作るのが必要
がFAでしょうか?
ミスです。
>>464 のおっしゃるとおり、ログとか順序を守らないといけない出力につながる処理にあたります。
は、
>>551 のおっしゃるとおり、ログとか順序を守らないといけない出力につながる処理にあたります。
>>555-556 並列処理をする利点とか見直してみたら?
なんか、思い違いしてる気がするよ
>>555-556 >順序を保障する同期のAPIはないから妥協して自分で仕組みを作るのが必要
>がFAでしょうか?
仕組みを作るっていうと大げさだけど、単一のAPIでは難しくても、それにとらわれず、
適切な機能を(シリアルな処理ならキューとか)組み合わせることを考えましょうと。
あと、
>>551 で SuspendThread()/ResumeThread() とかいったけど、考えてみれば
CreateEvent()/SetEvent()/WaitForSingleObject()が普通かな。
最近、Win32でコーディングしてないので。
>>554 8086搭載でRAM最大640KBというと9801/E/F/Mくらいしか思いつかないのですが
他にもあるんでしょうか?
検索で見付かったのはAmstrad PC 1512くらいです
>>560 88も含めてもいいだろうし、286でもリアルモードしか使わないのも同じだべ
PCは将来的にもメモリは640KBで十分だ
順序を保証する同期の機構を作ってソース組んでたら、 結局、イベントオブジェクトだけでもOKだったりするオチ
自アプリケーションのディレクトリを取得するAPIってありましたっけ?
はい。
カレントディレクトリのこと?
GetModuleFileName
>561 CPUとしては1Mまでアクセスできるでしょ。 A0000からはメモリマップに使う、みたいな アーキテクチャが、上限メモリを決定するわけで。
570 :
デフォルトの名無しさん :2007/08/02(木) 00:55:13
MDIウィンドウ使ってる人いる? あのウィンドウの中にウィンドウがあるやつ
そういうアプリがある以上 使ってるヤツはいるだろうが
MDIはまれによく見るよ
どっちだよ
>>518 >>522 え、でも、でもですよ?
APIでもLPARAMとかUINTとかで無理矢理構造体とかハンドルを
キャストして引数に渡してる箇所ってあるでしょ?
あれどうなんの?
受け取る側はだいたいUINT_PTRとかDWORD_PTRみたいな型に なってるので、呼び出す側も対応したコードにしないといけない。 もちろん、単純に、DWORDとかにキャストしてたら死亡。
ちょっとまった、32bit値の引数渡しのABIってどうなるの? charみたく64bitに拡張されてpushされる? それだったら__int64をデフォにする方で解決できるよね?
>>573 自分はマック育ちのせいか、「MDI でないと窮屈」な気持ちが抜けない。
それに細かい操作ができる気がして、MFC は使わないで作っている。
window の属性を、共通の構造体にして windowlong に持たせているが
テキストも画像も音も全部共通にしているので、だんだんサイズが増えて
来た。
local な操作を簡単にやろうと、dialog に逃げる傾向になった。
Win64はLLP64だからintは32bitなので、 自動的に行われる拡張は32bitまで。 もちろん、明示的にプロトタイプがあれば話は別。 ちなみに、DWORDが32bitであることを止められないので、 結局 hoge((DWORD)&someobj); は救えない。
581 :
522 :2007/08/02(木) 08:10:36
>>575 Visual Studio 2005で警告でまっせ。
最初何の事かわからんだったw
おいらは実験アプリはSDIで作って、 操作性や一覧視の面を考慮してから、MDIにするか決める。 (社にMDIを基としたリソースが豊富なので) やっぱ、個人アプリだったらSDI方向だなぁ
いいな、その社
585 :
581 :2007/08/02(木) 08:48:11
>>int=レジスタの大きさ 俺も信じていたときがありますた。 ごく最近
時期がありましたじゃボケ
システムトレイにアイコンを表示するサービスで explorerが死んだあとにアイコンを再表示したいのですが それを実装するためにどんなWINDOWメッセージを捕まえれば よいでしょうか?
それが簡単にできたら、みんな実装してるんじゃね。 簡単な方法としては、一定時間ごとにアイコンを更新するとかあるけど。
RegisterWindowMessage(_T("TaskbarCreated")) これ使うんじゃね?
システムトレイのアイコンと言えば、 失敗の可能性を考慮に入れて、リトライ処理を入れておくと尚良い。 起動時のスタートアップ等重い処理が走っていると、4秒のタイムアウトに引っ掛かることがある。
>>591 そうなんだ。じゃ、何でみんなやらんのだろ。
後から追加されたからなー つってもWin98以降だが
もう無くなったけど、98の頃トレイアイコンの監視&補完ツールあったよ。 サービス起動してタスクバーが表示されたら Shell_NotifyIcon(NIM_ADD, HICON)を捕まえて記憶して でもしExplorerが再起動したときにもう一度全部のアイコンつっこみなおしてくれるツール。
既に起動しているnotepad.exeを最小化する方法を教えてください。 FindWindowを使わず、既にプロセス上にあるnotepad.exeに対して 行いたいです。 自分で起動する場合は char lpFileName[] = "notepad.exe"; WinExec(lpFileName, SW_MINIMIZE); でできるんですが。
私もサービスに関する質問させてください。 WM_USERCHANGEDはログイン/ログオフ時に発生するらしいのですが これはWIN2000以上は発生しないのでしょうか? (実際やってみたら発生しなかったので) だとしたら他にログイン/ログオフを察知する 手段はありますでしょうか?
ログオフWM_ENDSESSION/WM_QUERYENDSESSION
>>596 なぜFindWindowを使わないのか、理由を説明したら教えてあげるかも。
EnumWindows+GetWindowThreadProcessID+PSAPI(or Toolhelp32)でいいじゃんね
601 :
デフォルトの名無しさん :2007/08/02(木) 14:50:28
ネトゲーとかでマクロをするAPIを教えてください
>>601 コマンドプロンプトを起動して
format c:
588です。
>>590 さんの方法で実装したのですが
動作確認するためにExploreをあえて殺したいのです。
タスクマネージャからExplore.exeを殺せばいいかと思ったのですが
それではデスクトップが復旧しないので確認できませんでした。
Exploreを自然に殺す何かいい方法はないでしょうか?
>>603 タスクマネージャから殺して、タスクマネージャの新しいタスク、から起動するんだよ
>>603 タスクマネージャから殺して、新しいタスクから起動してダメなら、失敗してるんだよ低脳
ウィンドウから_beginthreadを実行し、引数にそのウィンドウのハンドルを指定しました。 スレッド内で受け取ったウィンドウハンドルに対しアクセスしてみたところ XPでは正常に動作したのですが、98SEでは動作しませんでした。 どうもウィンドウハンドル自体が壊れているようなので 静的なウィンドウハンドルにコピーしてから送ったところ正常に動作しました。 そこで質問なのですが、どうしてXPでは静的でないにも関わらず正常に動作しているのでしょうか?
実際に値を比べてみた?
>>575 Win64のWPARAM/LPARAMは64ビット。
UINTだったところは、いつの間にかUINT_PTRになっているので無問題。
shlwapiのStrRChrとかってマルチバイト対応('\'を探すときに2文字目に'\'が来るような文字とか)してるのかなぁ。 仕様書に記載がない・・・
何の事言ってんのかわかんないのだが、 コードページの指定や設定が無けりゃ考慮してるわけ無いと思うのだが
CP設定とか何もしていないのなら 日本語Windows上なら動く 英語版Windows上でマルチバイト食わせても誤動作する これでいいか。
ロケール設定してなかったら_mbsrchrを使おうがNGだよね確か。
ふ〜ん、ここに独り言書いたら答えてくれるのか
>>607 みてみたところXPでは同じもの、98SEでは空でした。
>>609 StrStrとかがCRTの同名小文字関数と同じ動作なのか、ということなら答えはNo
前者は設定されているコードページの設定に準拠して動作し、後者はただの1バイトごとの比較しかしていない
>>606 とりあえず_beginthreadexにしとけって話はともかく、
引数に、作成元スレッドのスタック上データへのポインタを渡した、ってところじゃね?
_beginthreadの後Sleepで少し眠らせれば98SEでも動作するかもな。
apiとクラスってどう違うんですか?クラスも最終的にはapiに行き着くのですか
比較できるものですらない
>>617 クラスについて復習してくれ。
そのレベルで質問されてもここは初心者スレじゃない。
右手とアクエリアスってどう違うんですかって聞いてるのと同じレベル
せめてクラスライブラリとでも言うのなら救いようもあったのだが。
>>596 まずはプロセスハンドル取得してウィンドウハンドルを取得する。
後はShowWindowなりSendMessageなりで好きにしろ。
FormatMessage関数のva_list *Argumentsの使い方と、 FORMAT_MESSAGE_ARGUMENT_ARRAYの使い方をご教授願いたいです。 (エラー番号は317がいいかも) よろしくお願いします。
どうわからないのか説明してくれ。でないとMSDN読めとしか言えない。
MSDN読め
う〜んこ
627 :
623 :2007/08/03(金) 01:03:19
>>624-625 ここの後半
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpdebug/html/_win32_formatmessage.asp ------
メッセージテキスト内では、メッセージを動的に書式化するためのいくつかのエスケープシーケンスが
サポートされています。これらのエスケープシーケンスとその意味を次の表に示します。
すべてのエスケープシーケンスは、パーセント文字(%)で始まります。
------
を読んで
::FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS |
FORMAT_MESSAGE_ALLOCATE_BUFFER,
NULL,
317,
MAKELANGID(LANG_NEUTRAL, SUBLANG_SYS_DEFAULT),
(LPTSTR)lphMsg,
0,
NULL);
で、「メッセージ番号 0x%1 のメッセージ文が %2 のメッセージ ファイルに見つかりません。」となります。
ここの0x%1と%2はどういう使い方をするんでしょうか?
FormatMessageの最終引数をどのように利用するんですかね?
それとも思い違いでしょうか?
628 :
623 :2007/08/03(金) 01:12:17
予想では、イベントビューアもこの手の処理をしていると思いますが・・・
%1は1番目、%2は2番目の文字列に置き換わるようになっている。 (FORMAT_MESSAGE_IGNORE_INSERTSを指定していない場合) その置き換える先の文字列を渡すのが最後の引数。 引数に文字列だけを渡すだけなら、たぶんこんな配列を用意して、 FORMAT_MESSAGE_ARGUMENT_ARRAY付きで最後の引数に渡せばいいと思う。 PCSTR args[] = {TEXT("0123"), TEXT("hogehoge")}; va_listを渡すなら可変個引数関数のラッパを作って、 その中で<stdarg.h>のマクロを使うのが楽だと思う。
630 :
623 :2007/08/03(金) 01:18:52
レスありがとうございます。 この書式は、メッセージによってまちまちなんでしょうかね? たまたま317は0x%1が数値、%2が(不明!?)なんですが・・・ 風が強くなってきた、今日はやめて、 明日実験してみます。 ありがとうございました!
ホームレスプログラマか!
段ボールがとんじゃう〜
スネークなんじゃね?
蛇?
メタルギアなわけねーじゃんw
WinMain関数をAPIフックする事は可能ですか?
>>637 WinMainはAPI関数じゃないだろ
フックもろ共調べなおせ
ムカつく奴がいるのですがフック入れることは可能ですか?
>>639 「フック入れる」とは?
#いっそのこと、天井灯用のフックに紐でもぶら下げて首に掛けるといいと思う。
641 :
デフォルトの名無しさん :2007/08/03(金) 11:19:00
うるせー死ね
何でもかんでもAPIがやってくれると思ってるアホだろ
アホに言われたくない
>>640 1. サイドからのパンチを喰らわせる。
2. 輸送ヘリ Mi-6 を導入する。
3. 青芝フックを招待する。
645 :
デフォルトの名無しさん :2007/08/03(金) 11:32:48
質問に答えられないだろ(笑) ここって自称上級者ばかだね(笑)
みんなWindowsしか使ってないの?
648 :
646 :2007/08/03(金) 12:23:28
ごめんなさい 調子にのすりすぎました(笑)
僕バッカー!
>>648 は僕じゃありません。
なりすまさないでください。
フック入れかたがわかりましたが、
>>648 にカチンときたので教えません。
バーカ!
調子にのするってどういう意味?
のするじゃなくてのすりすぎたんだよ
アッパーだよアッパー
荒れてますなー
お前一人だけ高みの見物か 自分は違うみたいなぼけが!!
わろたw ナイスつっこみ!!
夏来たりなば秋遠からじ
秋来たりなば夏近し
661 :
デフォルトの名無しさん :2007/08/03(金) 14:18:12
タスクマネージャにプロセスを表示しない様にするAPIってあります?
はいウイルスウイルス
dll
nProtectは全アプリのプロセス関連APIを乗っ取って「自分が列挙されない」ように小細工してたな。
下手なウィルスよりタチ悪いな・・・
何のためなんだ、、、ウィルスの標的にならないためか・・・
>>661 あるかどうか解からんが目的を云え!
それによっては代替手段を伝授してやる。
ふん、偉そうに
>>661 APIであるかは分からないが、それは可能
俺は他のプロセスから実行させて隠蔽させてるよ
そうだが、
ExplorerにInjectすればいいじゃない
ガソリン節約できる?
Explorerがドライブに存在しません。
injection最高だな
injection最低だな
injection最速だな
>>664 それは違う。隠蔽は権限変更で鎖国状態にしてデータを取得できないようにしているだけ。
全プロセス書き換えは別の目的で行われている。
日本の夜明けも近いぜよ
散切り頭を叩いてみれば文明開化の音がする
たった4杯で夜も眠れず
>>all ついに俺もパパになったよ!!! 女の子だ! ありがとうありがとう! Win32API万歳!
>>683 プログラマは電磁波の影響で精子が弱まり女児しか生まれない。
>>683 おめでとー
出会いはどこで?
参考までに。
687 :
683 :2007/08/03(金) 20:45:30
>>684 個々の精子が強いか弱いかってのと、
そいつが運ぶ遺伝情報とは別に関係ないよ。
有機系やX線使う研究室の先生に
何故か女の子が多いってのもまた事実なんだけどさ@化学系
それはそうとオメ。名前決めた?
>>687 おめ、おめ、おめでとー
つまり、お姉さん女房ってことか
>>687 うち転勤族だったから幼馴染とか居ないわ・・・
すべてのプロセスはおめでとう、ActiveProcessLinksなんかのリンクリスト構造で管理されてるから、 おめでとう、ドライバを書いてそれをいじるようにすればおめでとう、いいらしい。 でもそれだとコンテキストスイッチでおめでとう、不都合があるからカーネルにシステムスレッドを作って 隠蔽されたおめでとう、プロセスに制御を渡してあげる必要がやっときましたね。おめでとう、あるとかないとか。
うちの子プロセスもみんな女
うちの親プロセスはみんなおめでとう
>>683 ・XX染色体(女性)を持つ精子は酸性に強い
・XY染色体(男性)をもつ精子はアルカリ性に強い
・膣内は基本的に酸性だが排卵時期やオルガスムスに達すればアルカリ性が強くなる
という前提を元に考察をすると女の子が生まれたということは・・・
・中田氏から排卵までに時間があった
・パートナーを満足させていない
・ナニが短小である
・・・為に精子が膣内の酸に晒されていた可能性がある。
つまり何が言いたいかというと、おめでとう、だ。
おまいら、子供がこの世の顔をだしたら、おめどうと言うんだぞ。 そして、未熟者の親プロセスですがよろしくお願いしますぐらい言えよ。
この世の顔
なんなんだここは
ようこそおめでとう
ShellExecuteExなどで起動させるプロセスを既存のプロセスの一部として起動させるにはどうすればよかですか? プロセスを起動させたらすぐに終了したいんです。
CreateProcessじゃだめか
SHGetFileInfoを使って複数のアイコンが含まれたexeから 2番目以降のアイコンを取得したいんですけどどのようにしたらよいでしょうか?
705 :
700 :2007/08/04(土) 05:12:31
詳細不十分で申し訳なかとです。 SHELLEXECUTEINFO.lpVerbにpropertiesを指定してファイルのプロパティを開いているのですが、 ShellExecuteExした自アプリはすぐに終了したいです。 ですが、自分が終了するとプロパティが閉じてしまうので、explorerなどの既存のプロセスが開いたようにしたいです。
スレッドで蹴ったら?
>>705 やりたいことに対してスキルが追いついてない感じ。
目的がそれだけなら、explorer などの既存のプロセスに
処理を注入するのではなくて、ファイルのプロパティを表示するだけの
UIを持たない代わりのプログラム B を作ってそれを呼び出せばよくない?
プログラム B がいれば、自分は終了しても問題ない。
あるいは、explorer に対する Shell Extension を作りたいってことなら、
基本的なところで勘違いをしている。
>>707 聞いてることに対してスキルが追いついてない感じ。
プロセスにこだわってるのにプロセスを増やしてどうする。
もともとのプログラムもUIを持たない可能性の方が高い。
最後は同意。
スキル不足ならこだわりは捨てて無理するなという事だろう
>>708 ごめん、それ私の日本語力の問題。
>>705 がこだわっているのは本当にプロセスの抑止であって、
>>707 で解決できるようなしょうもない問題に対する
ものじゃないよね、という確認のつもりだった。
で、既存のプロセス(Explorerととか)に処理させる方法については、
やったことないので想像でいうなら、
グローバルフックを使って Explorer に処理を注入。
あらかじめ、ファイルのプロパティ表示部分をDLLにしておき、
そのDLLを Explorer プのロセス(フックDLLのPROCCESS_ATTACHとか)
からロードして呼び出し。
フック解除。
とかでいけるのかなあ。
いずれにしても、既に実行中のプロセスの所有者を変えるとかは
困難だと思うので、Exploer自身に実行する処理(DLL)を
呼んでもらうことになるんじゃないかと思う。
711 :
700 :2007/08/04(土) 15:02:54
いい人ありがとうございました。
つい先ほどWin32APIの勉強を始めたものです。 猫でも〜を読みながらやっているのですが、 hWnd = CreateWindowW(szClassName, "title", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInst, NULL); の"title"の部分でワーニングが出て、ビルドはできるのですが、文字化けしてしまいます。 どなたか理由をご存知の方いらっしゃいますか?
713 :
712 :2007/08/04(土) 18:14:51
>文字化けしてしまいます 実行してみると、タイトルバーが文字化けする、という意味です。
ワーニングの内容をを何故書かない?
どうせ漢字コードの問題だろ。
716 :
712 :2007/08/04(土) 18:21:26
VC2005EE使用で、 warning C4133: '=' : 'LPCSTR' と 'LPCWSTR' の間で型に互換性がありません。 です。
>>717 ありがとうございます。解決しました。
よろしければ理由を教えていただけませんか?
2005からプロジェクトのデフォルトがUNICODEになったよ 2005より前のサンプルは_T("")とかにしないと動かない
>>718 あほすぎ
猫でも〜にも書いてあるだろ
そんな簡単なこと人に聞かんと自分で勉強すれば分かるだろカス
CreateWindowW使ってるんだから_T()マクロとか関係ないだろ
夏だね。
>>718 Windowsでは使われる文字コードの体系に2種類ある。
従来からの文字コード(国、言語ごとに異なるコード表を使う)とUnicode(すべてを1つのコード表であらわすもの)の2つ。
Win9xでは従来からの文字コードしかサポートされなかった。
WinNT/2K/XP/Vistaでは従来の文字コードとUnicodeは両方サポートされる。
それぞれの文字コードをサポートするWin32APIには互換がなく
(コーディングレベルで互換性を提供するマクロはある)、
Unicodeアプリケーション用に作成したプログラムはWin9xで動作させることはできない。
そのため、プログラミングでは最初にターゲットを決めてコーディングする必要があった。
従来のプログラムではインターネットで公開されているサンプルなども含め、
Win9XとWinNTの両方で動作する必要が求められていたため、従来の文字コード用に
プログラミングすることが多かった。
両対応のためのマクロは従来から提供されてたけど、あまりまじめに考慮してないものが多かった。
最近になって、ようやくWin9xを切り捨てても問題ない状況になってきたため、Unicodeでの
プログラムが特に推奨されるようになり、VS2005でもプロジェクトのデフォルトがUnicodeになった。
CreateWindowW はUnicode 専用の Win32API であるため、従来の文字コード用の
文字列である "title" は受け入れられず、L"title" のように Unicode を明示的に指定しなければならない。
なお、従来の文字コード専用にコーディングするにはCreateWindowA を使う。
オプションで切り分けて両方に対応する場合にはCreateWindow を使い、この場合、
文字列も _T("title") のようにマクロをつけて両対応にする。
_T("title") とした場合、コンバイルオプションによって、"title" または L"title" に自動的に変換される。
あとは Google で。
726 :
712 :2007/08/04(土) 19:38:05
>>721 すみません。
猫でも〜は書籍版なんです。
図書館のやつなので1つ前の版orz
これから精進します。
>>723 ,725
ありがとうございます。
お手数おかけして申し訳ないです。
大変参考になりました。
そしてスルーされる>715、>719、>720
しかしデフォルトも何も CreateWindowW <- W付き なんだからL""で正解。 なのだが、いったい何を参考にしたのか興味あるね。猫でも〜にそう書いてあるのだろうか
CW_USEDEFAULTを4つ書くのは無粋
つーかCreateWindowWつかってるのに_Tはねーだろw
>>729 何ゆえ? 最近CreateWindowとか使った記憶無いけど
昔、テストコードで頻繁に書いてたから聞いてみたい
CreateWindowA は ANSI 文字列用 CreateWindowW はユニコード用 CreateWindow は設定により CreateWindowA と CreateWindowW を呼び分ける。 ANSI 文字列は " " で囲んだもの ユニコード文字列は L" " で囲んだもの _T は _T(" ") という形で使い、設定によって ANSI 文字列にしたりユニコード文字列にしたりする。 これで分からなければおかしい。
後は、TCHARやLPCTSTRみたいな型のことと、 <tchar.h>によるC標準ライブラリ、 テンプレートによるC++標準ライブラリの対応も知れば万全。
>>731 729が言いたいのは、xとwidthにCW_USEDEFAULTを指定するとyとheightは
無視されるから、CW_USEDEFAULTを書く必要が無いってことかと。
735 :
デフォルトの名無しさん :2007/08/04(土) 23:17:01
みなさんは、言語はCで書いてるんですか? それとも自分でクラス組んだC++? マクロいっぱいのwin32apiのラッパーのMFC? 普通、どんな感じで作っていくのかが疑問に思いまして 質問さしていただきます。 どうなんでしょう?
>>734 なる。小粋なのかどうかはよくわからないけど、話はわかった。トントン
>>735 趣味のプログラムではATL/WTLかな。
会社ではC/C++、場合によってはMFC。
開発用のテストアプリはMFCベース。 そこで、MFC内の使えるクラスを検討or自作してる。 最終的に、WTLでイケるならそっちにする。 なお、下手に変わったことすると、 アプリをメンテする人間が制限されるので注意。
>>735 今更、MFCは使わない。うちは、.NETとC++(ATL/WTL含む)のハイブリッドが多いかな。
うちもGUIはC#かな、速度が必要な部分はCで書いて、 どうでもいい部分はSchemeとかRubyつかう。
>>741 業務でScheme使ってる会社もあるんだ……
Lisp系は、コンパイラを使えば十分速いのでは?
>>741 むしろドトネトって、起動が時間がかかるのとGUIのもっさりが一番気にならんか?
その辺Javaに似てる気がするんだが(つまりサーバーサイド向き)
744 :
デフォルトの名無しさん :2007/08/05(日) 00:24:31
>>744 MFCだのATLだのWTLだのは、独立したツールキットではなく単なるWin32APIラッパ
だからな
Win32APIとは無縁にならんでそ
>>742 いや、業務じゃないよ。趣味の方ね。
業務は面倒くさいときはたまに Scheme → C コンパイラで作ったソース
放り込んだりはする。
748 :
デフォルトの名無しさん :2007/08/05(日) 00:26:43
GUIをC#というならVB.NETは使わないの? ここの人は、みんなCの人だから?
>>748 たまにVB6やDelphiでWin32APIの質問もあるよ
750 :
744==学生趣味グラマ :2007/08/05(日) 00:31:07
>>745 失礼しましたっす。
俺は、みんなWinAPIかと思って、ここにいるんで、ちょとビクーリだったです。
>>746 実質無縁になりそーにありませんが、ラッパーを使ってるときは、生APIは使わ
なくてよい、とゆーか、使い憎いっす。
>>748 俺は一度VB.NETの仕事したことあるよ
自分が言語に口出し出来るケースなら絶対に選ばんが
その場合は客の指定だったんでねえ
スレタイも読めないようじゃPGとしての能力もしれてるな。
753 :
デフォルトの名無しさん :2007/08/05(日) 00:48:06
でもPGって人の話聞かないよね。指示にも従わないし。
754 :
744 :2007/08/05(日) 00:49:02
ごめんなさい。消えます。
それはキミの人望
>>753 そんな人間だからこんな面倒くさい作業ができるんじゃね
で、自分はほかの人よりすごいんだって思うわけ
でもほかの人はモテモテで女友達いっぱい作って
そういう社交的な人間のほうが会社でもかわいがられて上にあがれると・・・
757 :
デフォルトの名無しさん :2007/08/05(日) 00:57:40
くそ天皇 くそ天皇 くそ天皇 くそ天皇 いい加減死ねっつってんだろ屑ニートくそ天皇が 相変わらず病的な粘着っぷりだな屑ニートくそ天皇が 毎日毎日毎日粘着出来て良いでちゅねくそ天皇 くそ天皇さっさと死にやがれゴミが 東京に在住している精神病珍米糞ニートくそ天皇君の末路 さっさと精神病院逝くか首吊って逝くか選べや糞天皇が 早く死ねよ糞ニート天皇が 粘着精神病屑ニート天皇君は自らニートくそ天皇であると公言しました さっさと死ねやくそ天皇が 早く死ねっつってんだろ屑ニートくそ天皇が お前みたいなゴミクズ天皇は息してるだけで空気が汚れるからさっさと死ねや とっと死に晒せや糞ニート天皇が
かわうそうに
759 :
735 :2007/08/05(日) 01:00:56
なるほど。 ケースバイケースって感じなんっすね。 ATL/WTLの勉強しよっと。 mfcはなんかやだからいいや。
760 :
デフォルトの名無しさん :2007/08/05(日) 01:01:09
くそ天皇 くそ天皇 くそ天皇 くそ天皇 いい加減死ねっつってんだろ屑ニートくそ天皇が 相変わらず病的な粘着っぷりだな屑ニートくそ天皇が 毎日毎日毎日粘着出来て良いでちゅねくそ天皇 くそ天皇さっさと死にやがれゴミが 東京に在住している精神病珍米糞ニートくそ天皇君の末路 さっさと精神病院逝くか首吊って逝くか選べや糞天皇が 早く死ねよ糞ニート天皇が 粘着精神病屑ニート天皇君は自らニートくそ天皇であると公言しました さっさと死ねやくそ天皇が 早く死ねっつってんだろ屑ニートくそ天皇が お前みたいなゴミクズ天皇は息してるだけで空気が汚れるからさっさと死ねや とっと死に晒せや糞ニート天皇が
>>750 ラッパーは後ろのAPIの仕様・実装を抜きには語れないものなのさ。
そういう意味での無縁。
しかし・・・
>>744 の学生の様に、夏休みの自習感覚でこのスレを覗くヤツもいれば、
一昨日パパになったヤツもこのスレを覗くw
この調子だと、兄弟両方でPG、姉妹両方でPG(マナカナ系?)も居そうだ。
>>753 と
>>756 は自己紹介で、
・・・ん、ホームレスPGも居るのか?
まさか犬PGや猫PGとかry
会社ではWindowsアプリ組んだことない
猫でもプログラミングできるくらいだから誰でもできる。
ほんとか? 嘘だったらお前とやつをJAROに訴えてやるからな
ネコっていうとあれか。受け。
クソワロタw
INIファイルの書き込みについてなんですが、一つのセクションに複数のキーを書き込みたいと 思い、以下のように記述したのですが、1項目しか書き込まれません。 wsprintf( strSetting , TEXT( "key1 = %d\0key2 = %d\0\0" ) , n1 , n2 ); WritePrivateProfileSection( TEXT( "section" ) , strSetting , strPath ); どのようにすれば複数のキーを書き込むことができるのでしょうか?
771 :
769 :2007/08/05(日) 09:18:09
>>770 分けて書こうと思い、
wsprintf( strSetting , TEXT( "key1 = %d\0" ) , n1 );
WritePrivateProfileSection( TEXT( "section" ) , strSetting , strPath );
wsprintf( strSetting , TEXT( "key2 = %d\0\0" ) , n2 );
WritePrivateProfileSection( TEXT( "section" ) , strSetting , strPath );
と記述すると、以下のような書き込みがなされてしまいました。
[section]
key2 = n2の値
n1の値
また、書き込みの度に、最末行に前回のn1の値が付加された書き込みがされてしまいます。
[section]
key2 = n2の値
n1の値
前回のn1の値
前々回のn1の値
・
・
・
他に適切な記述方とかあるでしょうか?
>>769 wsprintfの書式文字列に\0を含めても無駄
追記でやるか、
>>770 のいうように2回に分ければ
>>771 分けるときはWritePrivateProfileIntとかWritePrivateProfileString使う
strSettingとワイド文字のネタか?
>>769 新規キーと既存キーの場合、動作が少し違うかもね。
776 :
769 :2007/08/05(日) 09:42:51
>>772-775 WritePrivateProfileStringでできました!
ありがとうございました! 。゜(゜´∀`゜)゜。
このままCの文字列がどのような物か理解しないまま進むと脆弱性の山を生産することになりそうだな
俺らに被害が及ばないなら問題ない
のちのWindowsである
781 :
769 :2007/08/05(日) 11:05:47
もうできたんならええやろ いちいち出てくるな
オマエモナー( ´∀`)
ウィンドウを最大化するとき、最大化直前時のサイズを取得したいのですが、 どのメッセージを受けたときにGetClientRect()するべきでしょうか? SIZE_MAXIMIZEDだと最大化した後のサイズを取ってしまいます。
やっぱりでてきたな
そんなことせんとGetWindowPlacementあたりで通常表示時のウィンドウサイズ取得したらええやんけ
787 :
784 :2007/08/05(日) 15:30:06
>>786 こんな便利な関数があったとは・・・。
ありがとうございます。
しかし、これだとウィンドウサイズは割り出せるものの、クライアント領域が導けません。
クライアンと領域のRECTからウィンドウのRECTを導き出すAdjustWindowRect()という
APIがありますが、逆にウィンドウのRECTからクライアントのRECTを導き出すAPIという
のはあるんでしょうか?
API経由のINIファイル読み書きは読み書き毎にスキャンかかるから遅かったはず ※ちなみにJaneとかDelphi製ソフトでよくつかわれるINIファイルはメモリ上に保持されるAPI非依存のINIクラスで読み書きをしてる
アドレスを指定して呼び出せるAPIって、CallWindowProc以外に何があったっけ? CallWindowProc みたいに引数の個数が決まってないAPIがあった気がした ど忘れしてしまった・・・
>784 WM_SIZE で渡される値を保存しておいて、SIZE_MAXIMIZED の時に過去最新の値を使えばいいんじゃないの? >789 意味がよく分からない。 >アドレスを指定して呼び出せるAPI 関数のアドレスを渡して呼び出す API だったらコールバック関数を受ける API 全部も含まれるけど。 >CallWindowProc みたいに引数の個数が決まってない CallWindowProc の引数の個数は決まっているが。引数の個数が決まっていないのは wsprintf とか。 >ど忘れしてしまった・・・ 色々と忘れすぎだと思われる。
791 :
789 :2007/08/05(日) 16:42:27
>>790 言葉足らずスマソ
vb6 からアセンブラコードを呼び出したいだけなんだ
アセンブラコードは byte() に格納してあって、 AddressOf(byte(0)) から実行させたいんだけど、
CallWindowProc 以外にもアドレスを渡して実行できる関数がいくつかあったと思ったんだ
でもそれが見つからない・・・
>CallWindowProc みたいに引数の個数が決まってない
→これはマヌケです。CallWindowProc みたいに個数が決まってるAPIでなく決まってないのがあった気が・・・
っデータ実行防止
数が決まっていないというのは知らないけど、 ほかに使えそうなものといったら、EnumWindowsとかどうだろう。
>>791 そういう用途なら Create(Remote)Thread でいいんじゃね?
>>792 つ VirtualAlloc
っ *
アッー!
797 :
784 :2007/08/05(日) 20:47:04
>>790 それでうまくいきました!
ありがとうございました。
今日から始めたんだけどなにこの複雑さ… おまえらよく使えるようになったな('A`)
あきらめたほうがいい
空のウインドウ出すだけで数十行だもんな やる気亡くすわw
ヒント:コピペ
型が乱立しすぎでなにを表しているのかさっぱりわからん WisdomSoftの説明も日本語でおkって感じで半分以上頭に入ってこない 仕組みとか動きを理解できるように深くカバーした教科書ってないかな
win32apiって、なんでこんなに大文字が多いんだ? 大文字が煩わしくて煩わしくて・・・
いろいろ調べてたら「プログラミングWindows第5版(上下)」ってのが評判いいみたいなんだがどうなんでしょ
いろいろ考えずとも僕みたいなアホはやめといた方がいいですね^^
VB(゚听)イラネ
>>801 コピペでもいいけどある程度理解したくなるでしょ。
それでなぞの呪文だらけでほとんどの人が挫折するおね
そんなに難しいとは思わんけどなぁ
810 :
デフォルトの名無しさん :2007/08/05(日) 22:43:48
ウィンドウへファイルをドロップできるときに カーソルが変わるけども IDC_ にもマウスのプロパティにも設定がないんだけど 変更できないでおk?
>>787 それはないと思うなぁ。つかGetClientRectでええんちゃうの?
>>810 質問はドロップされる側のウィンドウの話?
マウスの形状はカーソルが自分の管理下にあれば、SetCursor()などでいつでも
変更できる気がするけど、ドラッグアンドドロップの最中のマウスカーソルは
ドラッグ元のウィンドウが制御しているのと思った。
ドロップ側のアプリケーションから指定するのはたぶん無理ではないかと。
813 :
789 :2007/08/06(月) 00:20:56
>>793 ,794
thx!! EnumWindows とか CreateThread っつー手があったか
たぶん探してたAPIは EnumWindows だったと思われ(うろ覚えスマソ
>>806 全俺が泣いた。そしてVB6でも動いた。
EnumWindows や CreateThread は単純なアセンブラコード呼び出すだけでも
余計なクロックかかるから最初っから C で作ってやればよかったのか
こんなシンプルな案すら出ない俺はすでに死んでいる
ちなみに VirtualAlloc を使ってあえて領域を転記してるのは DEP 対策?
ちょっとここんとこ教えてください
API使い始めた人って変数の名前の付け方とか変わった?
その2つのキーワードでググれ
>>804 Windowsでプログラミングする上では良い本ではあるが、
ウィンドウの作成・仕組みの解説に限った本ではないので、その点は注意。
つか、ウィンドウ関係は「ウィンドウプロシージャ」の概念が解ってしまえば
割と何とかなる気がする。
817 :
789 :2007/08/06(月) 00:35:27
>>815 また俺はググる事を見失うところだった
ググったら一発だった。スマソ
そして PAGE_EXECUTE を理解した
経験値 0.1 を得た気がした
プリンタ出力時にデフォルトプリンタを使って出力するときに 縦か横かを指定する事は可能でしょうか? また、頁単位で縦横を変えることは可能でしょうか? 本当は、プリンタも選択して使いたいのですが; わからないのでデフォルトプリンタでやろうと思います。
まず、縦か横かは DocumentProperties関数, DEVMODE構造体っとこか
C++Builder使ってる人っているかな? 使ってる人って普通にBITMAPFILEHEADERやら使って、ビットマップで吐き出して表示できる? BorlandFreeのコンパイラから、C++Builderに乗り換えたら構造体のサイズ変わっちゃってさ パッキングサイズ変更して元に戻してるけど、この症状って俺だけかな?
C++Builderのスレで聞けやカス
マルチかよカス
825 :
819 :2007/08/07(火) 18:19:04
いろいろありがとうございます。ためしてみます。 更に教えて頂きたいのですが; 1頁内で最初は横置きで描画し、NewPage をしないで、縦置きとして同じ頁に 印刷をすることは可能でしょうか?
重ね描きってこと? やってみれば
827 :
デフォルトの名無しさん :2007/08/07(火) 18:27:45
ダイアログのコントロールのZオーダーを変えずに、 タブオーダーを変える方法を教えてください。
プリンタの出力は土俵さえ把握すれば普通にデバイスコンテキスト使うことと 大して変わらんからいくらでも融通が利くよ
WM_NEXTDLGCTL を自分で処理すればいいんじゃない? たぶん。
質問にきました。 GetOpenFileNameを呼んでもダイアログが出ません。 即FALSEを返してくるだけで何も起きません。 BOOL FileOpenDialog(HWND hwnd, char *title, LPCTSTR ffilter, char *fname) { OPENFILENAME ofn ; memset( &ofn, 0, sizeof(ofn) ) ; ofn.lStructSize = sizeof(ofn) ; ofn.hwndOwner = hwnd ; ofn.lpstrFilter = ffilter ; ofn.nFilterIndex = 1 ; ofn.lpstrFile = (LPSTR)fname ; ofn.nMaxFile = 256 ; ofn.lpstrTitle = title ; ofn.Flags = OFN_HIDEREADONLY | OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST ; return (GetOpenFileName(&ofn)) ; } こんな感じの関数を作って呼んでますが、何か足りないところがあるのでしょうか。
831 :
デフォルトの名無しさん :2007/08/07(火) 18:58:54
>>830 文字列バッファがローカル自動変数だったらアウト
グローバルかヒープ使う
833 :
831 :2007/08/07(火) 19:06:34
あ、staticつければローカル変数でもよかった、というかそれのがいいかも
いや、、引数だしw
自動変数だとダメなんてことは無いよ。 たぶんタダのバグだろう(256バイト確保されてないとか)。
bccでなんか問題あった気がする
ん? 試しにVC++2005でXPでやってみたらstatic つけないとうまく動かなかったぞ
839 :
838 :2007/08/07(火) 19:56:02
わかった。 0で初期化したら自動変数でも動いたw
lpstrFile の初期値は? > lpstrFile > Pointer to a buffer that contains a file name used to initialize the File Name edit control. 有効な \0 終端テキストが入ってないとだめなんでない?
841 :
838 :2007/08/07(火) 19:58:47
>>835 を今さら見てみたけど
// Set lpstrFile[0] to '\0' so that GetOpenFileName does not
// use the contents of szFile to initialize itself.
これか
WTLのCFileDialogImplをパク(ry
lpstrFileに渡すバッファの内容はダイアログ初期化時にコントロール文字列として使われるから、 メモリ確保しただけの初期化されてない内容じゃだめだよ openなら"*.*"とか"*.ext"にして、saveなら編集中のファイル名か"untitled.ext"とかを渡しておく(extは対応拡張子ね)
・・・とかのんびり書いてたらすでに回答多杉 おまいら親切だw
845 :
830 :2007/08/07(火) 22:29:26
みなさんどうもありがdです
Windowsでしか動作しないプログラムって・・・
このスレで何を言ってるんだ
Windowsって…
windows以外で何があるんだい?
Windows以外知らないや
プリンタに対して90度回転したいんですけど。。字が裏返しになって困っています もともと90度回転している文字の回転はなくなってしまうし。。。 XFORM xf; xf.eM11 = 0; xf.eM12 = 1; xf.eM21 = -1; xf.eM22 = 0; xf.eDx = 0.0; xf.eDy = 0.0; SetGraphicsMode(hdc,GM_ADVANCED); SetWorldTransform(hdc,&xf); 文字は対応してないんでしょうか?
(GetDeviceCaps(hdc, TEXTCAPS) & TC_CR_90) != 0 かどうかは?
その頁も参照していました。 文字だけなんです。。 1頁内で 縦置き、横置きを実現したくていろいろやっています StartPage() の後に 同一頁内で ResetDC で縦横を切り替えることはできませんでした。 どうにかして1頁内で縦、横おきを切り替えたいのですが。・。。
>>852 >>854 やってみた?
ちなみに、TC_CR_90は「このデバイスには、キャラクタの 90 度回転を行う能力があります。」
857 :
855 :2007/08/08(水) 17:04:12
いろいろやっています。 マッピングモードと、ViewでYに - を与えて反転しているのがまずいのかもしれません。 マッピングモード全部には対応していいような気がしてきました。 あきらめて、違うマッピングででやるか、描画を90度回転させた物を用意するか;
コンボボックス(ドロップダウンリスト)のサイズを、 アイテムを追加するたびに大きくしていくにはどうしたらいいでしょうか? 今は、初めに一行にしておくと、いくら追加しても一行で、 初めから大きく取っておくと白い空白が見えてしまいます。
あれ、自動でならなかったっけ。 まあ、CB_SETITEMHEIGHT でいける。
860 :
855 :2007/08/08(水) 19:44:04
SetGraphicsMode(hdc,GM_ADVANCED); SetMapMode(hdc , MM_ISOTROPIC); SetWindowExtEx(hdc,.....) // Viewport は、左上基点の座標系: Yに- で Window 座標を反転 SetViewportExtEx(hdc, view_xLen, -view_yLen, NULL); MM_ISOTROPIC, でY座標を反転した Viewport の場合; フォントはだめみたいです。
SetWindowExtExとかもやってる? ソース見たほうがはやいかも #if 0と#endif でソース整理して、ソースあげてみ
LPTSTRの文字列をLPCOLESTR文字列に変換するにはどうすればよいのでしょうか?
OLECHRって=wchar_tなのね で、OLESTRが=OLESTRなら後は分かるんじゃないか
VC++ならATL::CT2OLE使っておけ
VC++なら_bstr_tでいいんじゃね
LPCOLESTRで十分なところにわざわざBSTRを持ち出す必要もないだろ。 そういえば、元が文字列リテラルなら、 単にワイド文字列リテラルにすれば十分だということを まだ誰も書いていない。そうと決まったわけではないが。
867 :
862 :2007/08/08(水) 23:26:43
すみません、やりたいことをもう少し詳しく書きます。 二つの文字列(TCHAR)をsprintfやwsprintfでくっつけて、それをLPCOLESTRを引数とする 関数に当てたいのです。 具体的には、ディレクトリのパスとファイル名をつなげて、ファイルの保存に関する関数の 引数にします。
だから、くっつけるのは標準のCライブラリでやるんだから LPOLESTRに変換するところだけを上のATL::CT2OLEとかでやればいいんでしょ。 使い方はCT2OLEだと検索しづらいよらうだけど、CT2Wでググればわかる。 CT2OLEとCT2Wは同じものだ。
869 :
862 :2007/08/09(木) 00:05:22
>>868 CT2Wの使い方は
CT2W( 変換したい文字列 )というのは分かったのですが、includeファイルが分かりません。
atlstr.hが必要かと思い記述したところ、
Need to include strsafe.h after tchar.h
というエラーが出て、strsafe.hをインクルードしても同じ結果になりました。
困りました・・・。
英語も読めないんですか、困りました・・・。
tchar.hが先っちょ
872 :
862 :2007/08/09(木) 00:17:16
>>871 できました!
ありがとうございました!
あほすぎ
まあまあ
windows sdkとdirectx sdkそれぞれにstrsafe.hがあって激しくウザイ。 windows sdkにもd3d9.hなんかがあるのでさらにウザイ。 結局、directx sdk側のstrsafe.hをrenameしてやった。
あほすぎ
メニュー項目で、チェックがついたままのグレー表示はどのようにすればできるんでしょうか?
普通にチェックを付けてグレー表示にするのじゃだめだっけ? どうやってみた?
CheckMenuItem関数、EnableMenuItem関数という関数名が知りたいのか?
カーソルまたはアイコンハンドルが有効かどうか調べる方法はありますか? NULLではないです。ウィンドウハンドルのIsWindowみたいなのを探しています。
>>880 おちつけ。
ここでの有効とはどういう意味を指す?
ハンドルを要求する関数を実行してその結果とかエラーコード見るのが一番! かな?
883 :
877 :2007/08/09(木) 21:31:13
>>877 >>879 説明が足りず、すみませんでした。
チェックされた状態でMFS_GRAYEDにするとチェックが外れてグレーになったので、
どのようにすればよいかお尋ねしようと思いました。
自己解決しまして、MFS_GRAYED | MFS_CHECKEDとすればよいだけでした。
ありがとうございました。
それをorってのがおかしいよなAとBならANDだろwww
じゃあ MFS_GRAYED + MFS_CHECKED で
普通 | 使うだろw
はいはい次の話題次の話題
Win32APIを使ってGTK+を実装したライブラリってどんなのがありますか?
>>892 Cygwin/X とか、後は Gaim とか GIMP のソース引っ張ってきたら?
HOTKEYの競合を調べたいと思っています。 具体的には、RegisterHotKeyが失敗したとき、誰(プロセスorショートカット)が 該当のHOTKEYを使っているか知りたいのですが、それが分かるようなAPIはありますか。 システムに設定されているHOTKEYの一覧みたいなものが取得できれば、 さらに望ましいです。 以前からずっと気になっていたのですが、どうにも手ががりがつかめないので。
ググれ過去スレにもある
>>896 探しかたが悪かったようですね。
ともあれ情報があると分かれば、もう一度頑張って調べてみます。
ありがとうございました。
上のほう見て私も思ったんだけどandとorって間違ってませんか?絶対設計ミスだとおもいます ちなみに美人SEです
まんkのみせれあお
900
>>898 その発想自体は悪くないけれど、大昔に結論が出ていることを今更って感じ。
英語のジョークにもなっているくらいだから、英語圏でも混乱するらしいね。
アイザック・アシモフのミステリー短編でもネタになっていたし。
and とか or って呼ぶからいけないんだよ 日本語で論理積・論理和って呼べば・・・やっぱり意味わかんないか
私は、英語なんか知らないし別にどっちでもいいよ。 ちなみに美人PGです。
「かつ」「または」だろ
>>904 問題の本質が判っていないのなら、黙っていた方がいいよ。
つーか、黙ってろ。
>>905 問題の本質ってなんだ?
x = x + 1
はおかしいとかいうのと、結局は同じレベルの話だと思うが
and/orを訳しても意味がないってことだね。
#define MFS_GRAYED 0xFFFFFFFCL #define MFS_CHECKED 0xFFFFFFF7L にすればいいじゃん。俺天才。
論理とビット演算の違いでないの?
EnumWindows でウィンドウを取得しました。この中からダイアログを見つけ出すにはどうするのでしょう? GetWindowText で文字列拾って判別するのですか?
class
教えてください。 メンバ数とデータ量が多い構造体を使用するため、 APIのCreateFileMappingでビューを作成し、 MapViewOfFileで取得したVOIDポインタを 構造体のポインタにキャストして使用しています。 この構造体メンバの値読み書きを複数のスレッドが行うので、 クリティカルセクション等で排他をかけたいのですが、 構造体のメンバが多い&メンバがちょこちょこ変更になるので、 一つ一つにゲッタ、セッタを書くのがしんどいです。 このような場合、どのようにするのが効率的で美しいでしょうか?
ひとつひとつのセッタ&ゲッタで毎回Enter&LeaveCriticalSectionしてるの? つまり3個のメンバを書き換えるときは1個ずつ3回? それって整合性大丈夫?
>>901 知的な人キター
みんなプログラムの本だけじゃなく小説よもうぜ
ラノベはいっぱい読んでるよ! ・・・だめですかそうですか
ラノベそうめんいぼの糸
それテノベ
919 :
913 :2007/08/10(金) 18:07:07
>>914 メンバはそれぞれ独立した意味の値ですので、
例えばメンバAとメンバBは同時に書き換えられてもOKです。
メンバAを複数のスレッドが同時読み書きする恐れがあるため、
1つのスレッドがメンバAを読込または書込中は、
他のスレッドから読み書き禁止にしたいのです。
まだ実装はしていないです。どのようにやるのが一番よいのかな、と。
メンバとげったとせったを定義するマクロを使う。 DEF_MEMBER(foo_struct, hoge) で foo_struct m_hoge; CRITICAL_SECTION m_cs_hoge; get_hoge(foo_struct* result) { EnterCriticalSection(&m_cs_hoge); *result = m_hoge; LeaveCriticalSection(&m_cs_hoge); } setter 略 みたいな
>>919 それなら InterlockedCompareExchange とかを使えばいいんじゃない
浮動小数点数とか文字列とか何十バイトものビットマップとか使ってたりしないのかな。
ゲッタとセッタでそれぞれロックしてたら a->SetA(a->GetA()+1) が保証できなくなるけどいいのか?
924 :
889 :2007/08/10(金) 19:45:46
>>890 俺もまったく同じ事思ったけど言わなかったwwwwwwww
925 :
919 :2007/08/10(金) 20:30:40
みなさんレスどうも。
>>920 すいません、よく理解できませんでした・・・
DEF_MEMBERというマクロの動作定義がfoo_struct...以下なのですよね?
>>921 今のところ理想に近いです。こんなAPIもあるんですね。
調べてみましたが、↓のページで懸念されているように待ちとなるスレッドの挙動をどうするかですね・・・
ttp://itpro.nikkeibp.co.jp/article/COLUMN/20070603/273403/?P=2 >>923 あぁそうですね・・・。
コーディング規約として、
hoge = a->GetA()+1
a->SetA(hoge)
するしかないですかね。
できれば、ゲッタ&セッタをメンバ数分用意しないやり方で行きたいです。
phpであったと思うのですが、メンバの名前を文字列で指定して、
値をセットできるような仕掛けがあればいいのですが。
構造体hogeにaからzまでのメンバがあるとして、setvalue("c",3);みたいな。
最初見たときは気持ち悪かったけど。
> hoge = a->GetA()+1 > a->SetA(hoge) なんかその規約に意味があるのか? GetA()とSetA()の間にほかのスレッドがSetA()する可能性の話なんだが。
>>925 >コーディング規約として、
書き方の問題じゃなくて、例えば2つのスレッドがほぼ同時に1ずつ増やそうとしたときに
合わせて2増えることが保証されないけどいいの、って話。
928 :
921 :2007/08/10(金) 22:28:53
>>925 そのページがやってるような、InterlockedXxxx を使って排他ロックを自作するなんてのは、間違いなく間違い。単なるバカ。
例えば特定のメンバを 1 増やしたいとしたら InterlockedIncrement を 1 回使えばそれで目的を果たせるわけ。
そういう使い方をするもんだ。
>>913 マルチスレッドのアプリケーションで排他をかけるのは機能の単位で行う。
メンバAとメンバBの関係はどうでもよくて、メンバAの更新だけを例にあげると、
1) メンバAの読み出し
2) メンバAの値の加工
3) 加工したメンバAの書き込み
この1)〜3)の操作全体をメソッド化し、メソッド内ではクリティカルセクションなどの
仕組みを使って排他制御を行う。
逆にゲッタ、セッタの単位では意味がないので排他の必要はなく、
よって悩む必要もない。
>>913 ところで、
>構造体のメンバが多い&メンバがちょこちょこ変更になるので、
構造体のメンバが頻繁に変更になるのに、
それを考慮してアクセス方法で悩んでいるのに、
その構造体データ全体をファイルに物理的にマッピングして使用するの?
それってまずくないのかな。
>>930 こういう指摘が、かえって処理をスッキリさせるヒントかもね。
スッキリ!
もやっと
934 :
913 :2007/08/11(土) 00:05:01
みなさんレスどうもです。
>>926 >>927 あぁすいません・・・。
>>923 の方の指摘は理解していたんですが、
変なレスをしてしまいました。忘れてくださいorz
>>928 なるほど。自分としてはInterlockedExchangePointerでいいのかな?とも思ってたのですが・・・。
>>929 ありがとうございます。
最初にセッタ&ゲッタで考えてしまったのが良くなかったかと思いますが、
一応排他については理解してるつもりです。
>>925 で意味不明なことを言ってしまいましたがw
今回のお聞きしたいことは、aからzの26個のメンバを持つ構造体で、
一つ一つのメンバへのアクセスに排他をかけたいと言うことです。
スレッド1とスレッド2がいて、2つが同時にメンバaを書き換えるのはダメ、
ただし、スレッド1がメンバaを、スレッド2がメンバbを同時に書き換えるのはOKです。
>>929 の方が書いてくださったメソッドを26個用意すればできますが、
それを1つにまとめられないかな?というのが知りたいところです。
>>930 すいません、メンバが頻繁に変わると言うのは、仕様が二転三転するためで、
一度決まってしまえば後は変わりません。
そういうことではなくて、この方法では他にまずいことがあるのでしょうか・・・?
メンバについては、マクロ展開を駆使して生成するしかないと思う。 纏めたかったらインデックスでアクセスするようにするとか。 てか今回作りたいオブジェクトへのアクセス頻度はどの位? 案外、全体をLock->構造体へ直アクセス->Unlock程度の実装で十分じゃない?
>>928 InterlockedExchangePointerって、メモリマップしてきた領域内にポインタがあるわけ・・・?
>>913 ゲッタ、セッタを書くのが面倒ってのは、マクロで簡単に書ける。
##演算子を調べてみそ。googleだと検索できないが。
>>934 示された前提が大雑把すぎる。
簡単なカウンタみたいなものなら、排他制御を作るまでもなくInterlockedIncrementや
InterlockedExchangePointerなどの API が1つあれば足りる可能性はある。
でも、今までの話の流れではクラスの規模や処理の内容、複雑性、性能要件などが
まったく読み取れないので、それで十分かどうかは本人でないと分からない。
>そういうことではなくて、この方法では他にまずいことがあるのでしょうか・・・?
一般的な話としても、プログラム内の論理構造と外部媒体構造の結びつきが強すぎると
メンテナンス性が落ちる。
あとは、そもそもCreateFileMappingはプロセス間のデータ共有などに使われるもので、
単一プロセスで使用する場合、性能面などを考えてもデメリットの方が多そうに思える。
939 :
934 :2007/08/11(土) 02:56:07
>>935 >>937 ありがとうございます。
##演算子は使ったことないので、ちょっと調べてみます。
##はぐぐると無効化されちゃいますね・・・
んー、本屋で見てみるかなぁ。
>>938 ご指摘ありがとうございます。
前提については、長くなってしまうので。
今はまだ実装方法を検討いてる段階で、
排他のレベルについては、自分でももう少し精査して実装方法を決めます。
あくまで今回知りたかったのは、メンバ書き換え手段だったので・・・
>一般的な話としても、プログラム内の論理構造と外部媒体構造の結びつきが強すぎると
メンテナンス性が落ちる。
そうですね。しかし、これが避けられない事情がありまして・・・
>あとは、そもそもCreateFileMappingはプロセス間のデータ共有などに使われるもので、
単一プロセスで使用する場合、性能面などを考えてもデメリットの方が多そうに思える。
小出しみたいで申し訳ないですが、お察しのとおり、プロセス間のデータ共有で使用します。
>## トークン結合演算子 でぐぐれ
興味があることなので
>>939 に便乗して質問
こんな感じでマクロを定義するだけでいいんでしょうか?
#define member_get_set(type, membername) \
private: \
type membername; \
public: \
type membername ## Get(void){return this->membername;} \
void membername ## Set(type membername){this->membername=membername;}
class macrotest{
member_get_set(int, value);
};
DWORD GetGlyphOutlineW( HDC hdc, // handle to DC UINT uChar, // character to query UINT uFormat, // data format LPGLYPHMETRICS lpgm, // glyph metrics DWORD cbBuffer, // size of data buffer LPVOID lpvBuffer, // data buffer CONST MAT2 *lpmat2 // transformation matrix ); でUnicode(UTF-16)の文字のアウトラインを取得しています。 サロゲートペアの文字の場合は第2引数(UINT uChar)に何を渡せばいいでしょうか? 文字コード(0x2????)やバイナリ値(2バイト+2バイト化したもの)を試しているのですが、うまく動きません。 通常の文字は文字コードをそのまま渡すと正常に動きます。
>>939 小出しなのよりも情報が間違っていることが問題
>この構造体メンバの値読み書きを複数のスレッドが行うので、
>クリティカルセクション等で排他をかけたいのですが、
CriticalSectionは同一プロセス内の複数のスレッドで排他するために使う。
この文章からプロセス間排他を連想するのは無理。
mutex使え。
>>941 まずは自分で試せ。
VCなら -P オプションでプリプロセスの展開結果が得られる。
945 :
934 :2007/08/11(土) 12:18:06
forkを使いたいのですがWin32APIにありますか?
ありません。 cygwinならエミュレートしてくれますが、たいそう大掛かりで重いです。
Windows2000/XP/2003のファイル名のユニコードの扱いについて質問です。 (Vistaは仕様が色々変わってそうなのでここでは除外します。) 1) FindFirstFileW/FindNextFileWで取得できるファイル名のユニコード文字列に対して、 サロゲートペアも考慮しないといけないのでしょうか? (サロゲートペアを使ったファイル名が現れる可能性があるか?) 今まで可変長文字がくる可能性を考慮してなかったのですが、 一般的には無視して良いものでしょうか。 2) フォルダやファイル名では半角アルファベットの他に、全角の「A」と「a」の 大文字小文字も同一視される様ですが、アルファベットの他に同一視される 文字種はあるでしょうか?2つのパス名・ファイル名の文字列が 同じ物かどうか判定する処理を書く必要が出てきたので。 3) 2)のパスとファイル名の一致比較を行うAPIがあれば、それに任してしまいたい のですが、ありましたら教えてください。
selectを使いたいのですがWin32APIにありますか?
全角の"A"っていうのもあったような
>>948 (1) 現れる可能性はあるでしょう
ただ、現実にそんなの使ってるやつがいるのかって言われると、、、どんなもんかねぇ
(2) unicode normalization forms でぐぐってみるといいかもしれない
NTFS は NFC に正規化しているとか聞いた覚えがある(要確認)
(3) CompareString とかどうだろう
>>948 サロゲートペアで表す文字も考慮しておくに越したことはないはず。
ちなみに試してみたら吉野家というファイルは作れた(吉はもちろんU+20BB7のほう)。
ファイル名のソートでは、平仮名と片仮名(全角半角双方)も同一視される。
API関数では、専用の関数ではないけれど、
CompareStringならそういうことを考慮した比較が可能。
>>949 ありますが、ソケットにしか使えなくて、 64 個までです
>>948 キリル文字とかギリシア文字とか、およそ大文字/小文字という概念のある文字はすべて同一視される
955 :
948 :2007/08/11(土) 19:31:35
ちょっと横道に逸れるが、ユーザーにファイル名を一切手入力させず、 常にFindFirstFile等から得た一覧から選択させるというUIにしたらどうだろう? そうすれば扱うファイル名は全てシステムが返すファイル名だから、 ある意味正規化(?)できるのでは。 ファイル名の比較も、ただのmemcmpで済むのでは。
そうとも限らない。 ファイル名ってのはナマモノだから、いつユーザーの気まぐれで リネームされることやら。比較する間にやられる可能性がある。 例えばキャピタライズされただけでアウト。 "program files"→"Program Files"
あー
>>955 > CompareStringでLOCALE_SYSTEM_DEFAULT, NORM_IGNORECASE
> を指定すれば良いのかな。
XP 以降なら LOCALE_INVARIANT のほうがいいらしい。
http://msdn2.microsoft.com/en-us/library/ms647476.aspx > ・On Windows XP and later:
> CompareString(LOCALE_INVARIANT, NORM_IGNORECASE, ...
>
> ・For earlier operating systems:
> DWORD lcid = MAKELCID(MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), SORT_DEFAULT);
> CompareString(lcid, NORM_IGNORECASE, ...
トルコ語などの場合、「I」と「i」が違う文字として扱われるからだそうだ。
なんかそういう、各国の文字事情をまとめた本かなにか、ないかなぁ あったら欲しい
うち来る?
え、アッー!
空気読んで書かなかったのに
>>960 オライリー辺りが出してた様な。日本語限定だったかな?
でもこういった泥臭いカテゴリのオライリー本って役に立つ気がしない。
装丁からいかにも「判ってない」バタ臭が漂ってくるというか。
おれだけの偏見かな?
965 :
962 :2007/08/12(日) 01:20:36
だってみんなずっと無言だったから・・・
結局、ファイル名をキーに、重複なしunique値としてハッシュテーブルとかの 便利コンテナに入れるには、正規化っぽい処理が必要みたいですね。 LCMapStringでいいのかな。
逝ってもイイケド襲わないでね
SJIS を UTF-8 に変換する関数は Win32API にありますか?
970 :
デフォルトの名無しさん :2007/08/12(日) 15:10:20
あ
り ま す よ
質問があ
りました
>>968 じゃあ一晩中プログラムのことで話そうぜ。その後は
>>969 たぶん直接変換する関数はないけど
SJIS -> UNICODE -> UTF8
なんかで逝ける
希ガス。
多分て。
毎週来てた派遣の人はこなくなったね。 残りカスみたいなのは湧いてるけど。
しーっ呼ぶな
さすが、本当に残りカスみたいな
>>978 の書込みは、
重みが違いますね。
最大化する前のウィンドウ位置をGetWindow()で保存しておきたいのですが、 最大化する直前のタイミングに来るようなメッセージって何がありますか??
なんだっけ、CHANGEじゃなくてCHANGING?
ちょっと上に書いてある
984 :
981 :2007/08/12(日) 19:37:48
WM_MOVEを利用すればできました。(最大化状態を除外する) ありがとうございました。
>>969 関数じゃないけど、ADODB.Streamで可能。
ふつーMLangじゃね
ごめん MLangはずっと前に一度使おうとして情報が少なかったので、面倒になって やめてしまったんだ...orz
988 :
デフォルトの名無しさん :2007/08/13(月) 11:03:09
メールの送受信を行うAPIを教えてください
>>988 WinSockで頑張るしかないんじゃない
送信だけならCDO.Messageというのがある
990 :
デフォルトの名無しさん :2007/08/13(月) 11:33:36
ブラウザなどもソケット利用してつくられてるんですか?
MAPI
CreateFileMappingにNULLを渡して共有メモリを作れますが、 名前を十分に複雑にしておけば、他のプロセスから勝手に覗かれることは無い、 と思っていい? 素のパスワードとかを保存しておいて、メモリダンプツールとかで覗かれたりするかな。 教えてくださいエロい方。
そのプロセスも他のプロセスも同じユーザーの権限で動かしてるんだろう? どういった状況を考えてんの
994 :
992 :2007/08/13(月) 15:25:41
>> 993 独自プロトコルのクライアントアプリを作っていて、 ShellExecuteで立ち上げた別プロセスに、 関係ないスパイプロセスとかからは読めない形で通信のセッションstringを引き継ぎたい。
>>992 NULLではなくて、INVALID_HANDLE_VALUEを渡す
あと、名前の複雑性では限界がある
名前じゃなくてセキュリティ記述子をきちんと書けば、必要な人だけアクセスできると思う
間違えた hFileでなく、lpNameパラメタならNULLは可能
起動したユーザーからも隠蔽したいって事? 独自に暗号化するとか
>>997 解析されれば終了
正しい方法は
>>995 ユーザのより権限の強いシステム用のアカウントとかを使うんだろ。
今までセキュリティソフトウェアの大半が、このセキュリティ記述子を設定していなかったとか、
Mark氏がブログで言っていたけど。
いや、、、そんなの起動するユーザーがどうにでもできるじゃん。 adminグループに自分を入れてりゃいいだけ。 だから元の質問者の目的がわからんと先すすまない。
そもそもシステムアカウントで実行するには システムアカウントが必要なわけで。 だから同じユーザーが起動するのならセキュリティ記述子は意味が無いのだが。
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。