5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

Win32API質問箱 Build89

1 :デフォルトの名無しさん:2010/08/22(日) 00:16:50
スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。
やさしいお兄さんやHなお姉さんたちが答えてくれるかも。
「知らないならレスしないで下さい。ウザイだけです。 」なんて言わないでねっ!

■過去スレ
Win32API質問箱 Build88
http://hibari.2ch.net/test/read.cgi/tech/1274949734/

■注意
・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。
・日本語版MSDN Online Libraryは不完全です。英語版( http://msdn.microsoft.com/en-us/library/ )の利用推奨。
・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。
・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで

- Win32API質問箱 wiki
http://wiki.livedoor.jp/program1/d/FrontPage

NullPointerExceptionを「ぬるぽ」と呼ぶスレ5
http://hibari.2ch.net/test/read.cgi/tech/1269551404/

2 :1:2010/08/22(日) 00:17:40
前スレ最初のやり取りを見て、過去スレのリンクは貼りませんでした。

3 :デフォルトの名無しさん:2010/08/22(日) 01:02:59
くるしゅうない

4 :デフォルトの名無しさん:2010/08/22(日) 03:08:07
聞いてくれ。
普通はスクロールバーのMAX値を
PAGE値より大きくすると、スクロールバーが表示され、
PAGE値より小さくすると、スクロールバーは非表示になるよな?
ところがMAX値を変更してこれを連続的に切り替えると、表示されるべきときにも1回おきに表示されないんだよ。
ちょっとみんなも試してみてくれ。
これって俺が悪いのかスクロールバーのバグなのか?

5 :デフォルトの名無しさん:2010/08/22(日) 08:52:13
static 禁止な

6 :デフォルトの名無しさん:2010/08/22(日) 10:41:58
新スレ乙
前スレ読んだけど面白かったw

7 :デフォルトの名無しさん:2010/08/22(日) 11:44:13
static int otsu = 1;

8 :デフォルトの名無しさん:2010/08/22(日) 14:43:06
前スレ>>949
>藤原氏の「Cプログラミング診断室」を熟読していまして、きれいで洗練さ>れたコードを目指しています

ttp://www.pro.or.jp/~fuji/mybooks/cdiag/

Windowsプログラミングでこのサイトのことを真に受けて大丈夫?


9 :デフォルトの名無しさん:2010/08/22(日) 14:46:21
staticの意味を分かっていて疑問に思うなら向いてない

10 :デフォルトの名無しさん:2010/08/22(日) 15:30:56
MSDN が落ちているのはやっぱり、モマイラのせいか?
ttp://msdn.microsoft.com/ja-jp/library/

11 :デフォルトの名無しさん:2010/08/22(日) 15:31:43
落ちてないぞ

12 :デフォルトの名無しさん:2010/08/22(日) 16:00:06
>>11
午前中ずーっと落ちてんだが、やっと復旧したようだな、屈強なMicrosoft 鯖でも落ちることがあるんだ

13 :デフォルトの名無しさん:2010/08/22(日) 16:11:12
>>12
その鯖はlinuxかwindowsか?

14 :デフォルトの名無しさん:2010/08/22(日) 16:19:32
>>10
アク禁食らってただけとかw
まさかね
>>13
IISだろやっぱし


15 :デフォルトの名無しさん:2010/08/22(日) 16:23:49
aspxだからなあ

16 :デフォルトの名無しさん:2010/08/22(日) 19:07:18
>>8
Win32 APIとか以前のレベルの、
まさにstaticの意味を分かっていると自称してるような人間を晒しあげてる本だよ

17 :デフォルトの名無しさん:2010/08/22(日) 19:28:57
>>16
言語によってstaticの意味はかなり違う件
例えば極めて大雑把に言って
C:「綿密な調査無しで修正すると大きな影響を及ぼす可能性がある」
Java:「単にclass-uniqであり特定のinstanceに依存しない」
VC++とかだと文法が微妙に普通のCと違うところがあるから
Windowsで当てはまるかどうかは知らないが

18 :デフォルトの名無しさん:2010/08/22(日) 19:45:57
は?

19 :デフォルトの名無しさん:2010/08/22(日) 19:46:03
死ぬほどどうでもいい

20 :デフォルトの名無しさん:2010/08/22(日) 19:52:31
>>17 が何も分かっていない素人だということは良く分かった

21 :デフォルトの名無しさん:2010/08/22(日) 19:54:56
あんまり言うと、staticについて説明してみろって言われるぞ

22 :デフォルトの名無しさん:2010/08/22(日) 19:57:55
マニュアル読めよw
Cでは2つの意味しかないだろ

23 :デフォルトの名無しさん:2010/08/22(日) 20:19:46
Cに慣れてないことがわかるなw

24 :デフォルトの名無しさん:2010/08/22(日) 22:01:19
static が書かれているとソースが綺麗(キリ

25 :4:2010/08/22(日) 22:05:08
↓例えば普通のウィンドウのWM_LBUTTONUPのハンドラあたりでこんな感じでやってみて。お願い!
static bool bLarge = true;
bLarge = !bLarge;
SCROLLINFO si = { sizeof(SCROLLINFO) };
si.fMask = SIF_RANGE | SIF_PAGE; // SIF_DISABLENOSCROLLなし
si.nMax = bLarge ? 100 : 10;
si.nPage = 20;
SetScrollInfo(hWnd, SB_VERT, &si);
左クリックしてsi.nMaxが100のときでもスクロールバーが表示されない。なぜ?

26 :デフォルトの名無しさん:2010/08/22(日) 22:12:35
si.nMax == bLarge ? 100 : 10;

27 :デフォルトの名無しさん:2010/08/22(日) 22:36:19
やってみてじゃねえよ
ソース見直せ

28 :4:2010/08/22(日) 22:36:55
大変申し訳ない。原因が分かりました。
WM_SIZEのハンドラで、ページサイズを設定してたんですが
どうやらスクロールバーってのは「ページサイズだけ」を単独で設定するんじゃなく、
範囲といっしょに(SIF_RANGE | SIF_PAGE)設定してやらないといけない仕様のようですね。
これをSIF_PAGEだけ設定したのが原因のようです。
大して調べもせずに安易に頼ってしまって申し訳ない。
しかし、みんな知ってた?MSDNにも書いてないしなぁ・・・

29 :デフォルトの名無しさん:2010/08/22(日) 22:38:10
static変数の意味がわかってないw

30 :デフォルトの名無しさん:2010/08/22(日) 22:39:03
staticについて勉強しなおして来い

31 :デフォルトの名無しさん:2010/08/22(日) 22:44:37
case WM_LBUTTON_PRESSED:
static bool x=false;
::MessageBox(NULL,"注意",x?"あほ":"まぬけ",MB_OK);
x=!x;
break;

マウス左ボタンを押す度に
あほ、まぬけ
と交互にメッセージが出る?

32 :デフォルトの名無しさん:2010/08/22(日) 22:46:57
caseの中で変数宣言できたっけ

33 :4:2010/08/22(日) 22:47:16
分かりにくくてごめんなさい!case文じゃなくてメッセージハンドラとして関数化してます。

34 :4:2010/08/22(日) 22:54:18
あと、最小値・最大値を設定するとページサイズは初期値に戻っちゃうみたいです。
つまり範囲をセットする時にもページサイズもいっしょにセットしてやらないといけないみたいです。
こういうことって書籍とかにあまり書いて無いよね?俺が探すの下手なだけ・・・?

35 :デフォルトの名無しさん:2010/08/22(日) 23:04:20
こういういちいちうるさい奴がいるから、動物を電子レンジで乾かすなと注意書きが必要なんだろうな。

36 :4:2010/08/22(日) 23:15:09
>>35
ってことは俺の言ってること当たってるってわけね?サンキュー

37 :デフォルトの名無しさん:2010/08/22(日) 23:27:59
>>32
ブロック作れば可能

38 :デフォルトの名無しさん:2010/08/23(月) 00:31:58
lstrcpyとstrcpy_sはどっちがおすすめ?

39 :デフォルトの名無しさん:2010/08/23(月) 01:17:22
間を取ってstrncpy

40 :デフォルトの名無しさん:2010/08/23(月) 01:27:35
>>39
サンクス

41 :デフォルトの名無しさん:2010/08/23(月) 02:56:00
ダイアログのスクロールバーをいじっています。

サイズを変更した際に、スクロールバーのレンジを変更した後、
その結果によって、スクロールバーが出たり消えたりしますが
(SCROLLINFOのnMin,nMax,nPageの関係で。)、
この「出た」「消えた」を得られる方法はありませんか?

この「出た」「消えた」で、「縦スクロールが消えれば横サイズが増える」と言った具合に
ダイアログのクライアントサイズが変わってしまいますが、
それによるWM_SIZEがこないので、
「出た」「消えた」が発生した後、もう一度サイズを変えないと、
ダイアログ内のコントロールの並び替えがうまくできません。

稚拙な質問ですが、ご教授願います。

42 :デフォルトの名無しさん:2010/08/23(月) 03:09:52
入門書でstaticに関する記述を読むといいよ

43 :デフォルトの名無しさん:2010/08/23(月) 12:57:23
staticネタはもういい

44 :デフォルトの名無しさん:2010/08/23(月) 19:39:48
getpixelを使わず画像内の1ピクセルの色情報を出すことって可能?
どっかのメモリに配列になっていないのか

45 :デフォルトの名無しさん:2010/08/23(月) 19:42:26
出せるしなってる
DIB

46 :デフォルトの名無しさん:2010/08/23(月) 19:42:41
可能

47 :41:2010/08/24(火) 05:12:40
static関係な…(ry

すみません、自己解決しました。
WM_SIZEで縦スクロールのレンジ変更した後、ウィンドウの幅が変わったら
もう一度WM_SIZEしようとしていたのですが、
PostMessageじゃなくて、SendMessageしていたため、
SendMessageが返ってきた後、もう一度古いサイズでコントロールの並び替えしていたのが原因でした。
static以前でお恥ずかしいでス…

48 :デフォルトの名無しさん:2010/08/24(火) 15:13:52
wchar_tとcharってunionで定義できないんですか?
struct S
union U{
wchar_t X[4]; //1
char X[4]; //2
};
みたいな感じでなぜ無理なんでしょうか?2で1が再定義されますとエラーがでる

ちなみにTCHAR使えよって思うかもしれませんが、
ちょっと説明長くなるので省略しますが、使えない状況にあります。
さらに、どちらかで統一して書けばいいだろと思われるかもしれませんが、
これもいろいろあって、統一は絶対にできない状態です

つまり、

49 :デフォルトの名無しさん:2010/08/24(火) 15:15:58
wchar_tとcharってunionで定義できないんですか?

struct S{
    union U{
       wchar_t X[4]; //1 ←ココ
       char X[4]; //2 ←ココ
    };
    union U{
       wchar_t y[4];
       int i;
    };
}

みたいな感じでなぜ無理なんでしょうか?2で1が再定義されますとエラーがでるのです

ちなみにTCHAR使えよって思うかもしれませんが、
ちょっと説明長くなるので省略しますが、使えない状況にあります。
さらに、どちらかで統一して書けばいいだろと思われるかもしれませんが、
これもいろいろあって、統一は絶対にできない状態です

つまり、状況に合わせて自動的にwchar_tとcharが切り替わえれないと困るのです
教えていただけますかい?


50 :デフォルトの名無しさん:2010/08/24(火) 15:17:28
ごめん勘違いしてた
       wchar_t X[4]; //1 ←ココ
       char X[4]; //2 ←ココ
ってwwwww
すまそ
       wchar_t X[4]; //1 ←ココ
       char Z[4]; //2 ←ココ
にしなきゃ無理に決まってるw

51 :デフォルトの名無しさん:2010/08/24(火) 15:28:06
スレ間違えてますよ

52 :デフォルトの名無しさん:2010/08/24(火) 15:29:05
とりあえず落ち着こうか

53 :デフォルトの名無しさん:2010/08/24(火) 19:05:12
TCHAR使えよ

54 :デフォルトの名無しさん:2010/08/24(火) 21:38:20
久しぶりに吹田

55 :デフォルトの名無しさん:2010/08/25(水) 00:46:37
和んだ

56 :デフォルトの名無しさん:2010/08/25(水) 01:47:31
すいません。以前他のアプリにキー入力イベントを送る方法を質問した者ですが、
対象アプリが対策をしたようで、対象アプリがアクティブになるとkeybd_eventも受け付けなくなってしまったようです。
対象アプリがノンアクティブのときはmouse_eventでマウスカーソルの移動ができるのですがアクティブにするとダメなようです。
どうしたらいいでしょうか。

57 :デフォルトの名無しさん:2010/08/25(水) 01:51:58
いたちごっこをしたいのか

58 :デフォルトの名無しさん:2010/08/25(水) 01:58:44
くそー。糞ゲーのくせにこういうところは全力なんだなー。

59 :デフォルトの名無しさん:2010/08/25(水) 02:02:22
ドライバを書く

60 :デフォルトの名無しさん:2010/08/25(水) 02:17:02
対策される度ここに聞きに来る気かよ…
BANされた方がいいかもね

61 :デフォルトの名無しさん:2010/08/25(水) 07:32:24
糞ゲーならやらなきゃいいのに。
馬鹿の考えることは微塵も理解できない。

62 :デフォルトの名無しさん:2010/08/25(水) 07:50:05
実はスカトロゲーの意

63 :デフォルトの名無しさん:2010/08/25(水) 09:27:09
このスレの範囲では無理だからさっさと出て行って
仮想入力デバイスドライバでも作れ

64 :デフォルトの名無しさん:2010/08/25(水) 10:50:10
どっかの国で岩盤崩落で結構な人数が閉じ込められてて
無事生きてるんだけど救出に4ヶ月掛かるって言ってた
穴から食料送るのは良いとして糞はどうやって処理すんだ


65 :デフォルトの名無しさん:2010/08/25(水) 11:09:12
穴から出せばいいじゃん

まあ、実際問題は糞より尿なんだけどな
糞はなんとか隅っこに積んで置けるけど尿からは逃げようがない

66 :デフォルトの名無しさん:2010/08/25(水) 11:17:16
糞を堤防状に円形に積んで
その中に尿を足せば桶

67 :デフォルトの名無しさん:2010/08/25(水) 11:47:36
タスクバーの監視を行いたいのですが、どういった関数を使えばよいのでしょうか。
知りたいのは、
・新たにウインドウが作成され、タスクバーに表示された
・ウインドウが閉じられ、タスクバーから消えた
・ウインドウの名前が変更され、タスクバーにも反映された
の3つです。
お願いします。

68 :デフォルトの名無しさん:2010/08/25(水) 11:51:06
んがんぐ

69 :デフォルトの名無しさん:2010/08/25(水) 12:06:36
安全でないライブラリのロードにより、リモートでコードが実行される
ttp://www.microsoft.com/japan/technet/security/advisory/2269637.mspx
この問題は、外部ライブラリをロードする際に、
アプリケーションが不適格なパスを通すことが原因で起こります。
マイクロソフトは開発者向けにガイダンス
「MSDN の記事 Dynamic-Link Library Security (英語情報)」
ttp://msdn.microsoft.com/ja-jp/library/ff919712(VS.85).aspx
を公開し、この種の脆弱性を回避するために利用可能な
アプリケーション プログラミングインターフェイスの
正しい使用方法についてお知らせしました。

70 :デフォルトの名無しさん:2010/08/25(水) 21:03:17
treectrlってlistctrlみたいに仮想で出来ないよね?
1万件前後を子ノードに追加したら糞重くてどうにかしたい
一応LPSTR_TEXTCALLBACKにしてTVM_INSERTITEMしてみてるけど

71 :デフォルトの名無しさん:2010/08/25(水) 23:15:41
>>67
フック

>>70
WM_SETREDRAW

72 :デフォルトの名無しさん:2010/08/26(木) 03:36:44
CreateSolidBrushを使用すると、外枠が黒で囲まれた四角が描けますが
この外枠と内側を同じ色にした四角を描くAPIがあれば教えてください

73 :デフォルトの名無しさん:2010/08/26(木) 08:07:34
CreateSolidBrushはブラシを作るだけで四角は描けません。

74 :デフォルトの名無しさん:2010/08/26(木) 09:34:58
FillRect

75 :デフォルトの名無しさん:2010/08/26(木) 11:51:19
外枠はBrushではなくPenの担当ではなくて?

76 :67:2010/08/26(木) 17:07:00
>>71
回答有難うございます。
どう言ったメッセージをフックすれば宜しいのでしょうか。


77 :デフォルトの名無しさん:2010/08/26(木) 17:14:33
FillRect使うんだったらPenは関係ないね。
ごめんね

78 :デフォルトの名無しさん:2010/08/26(木) 18:32:11
Proxyに関するAPIの宣言について、参考になるHPでも置いていってくれないか?
真面目にググッた訳じゃないけど、エンドユーザー側の使い方しか出てこなくて、APIの宣言が分からなくて。

79 :デフォルトの名無しさん:2010/08/26(木) 18:34:30
いきなりどうしたの?
質問の続きならレス番書いてくれないか

80 :デフォルトの名無しさん:2010/08/26(木) 19:13:18
>>79
マルチしね

81 :デフォルトの名無しさん:2010/08/26(木) 19:14:14
ごめん
死ぬのは>>78

82 :デフォルトの名無しさん:2010/08/26(木) 19:14:51
むしろお前が

83 :デフォルトの名無しさん:2010/08/26(木) 19:20:49
10分間スリープモードにさせるとか出来るAPIない?

84 :デフォルトの名無しさん:2010/08/26(木) 19:24:12
>>82
死ね

85 :デフォルトの名無しさん:2010/08/26(木) 19:27:14
ttp://d.hatena.ne.jp/kawango/20090612/1244802392
他人を説得するとき、ぼくが必要だと思うのは、相手の言葉、相手の理屈をつかって話せないとだめだということだ。
自分の理屈は自分と同じ知識をもっているひとにしか通用しない。

相手が理解できない理屈をふりかざす人間が多すぎる。相手の知識、常識をつかって理屈をくみたてないと意味がない

86 :デフォルトの名無しさん:2010/08/26(木) 19:38:52
>>83
WaitableTimerを使うと、指定した時間に起こすことができる。

87 :デフォルトの名無しさん:2010/08/26(木) 19:40:24
>>83
たしか画面の外にマウスカーソルを持っていくとスリープするツールがあったような

88 :デフォルトの名無しさん:2010/08/26(木) 20:10:30
>>76
OSによる
タスクバーの部分がタブだったりツールバーだったりする
ググりゃ出てくる

explorer.exeにDLLを注入できればあとはいじり放題

89 :デフォルトの名無しさん:2010/08/26(木) 20:17:14
srud(>>80);

90 :デフォルトの名無しさん:2010/08/26(木) 20:19:17
セキュリティで保護された DLL のプリロードの攻撃を防ぐためにライブラリの読み込み
ttp://support.microsoft.com/kb/2389418/

91 :デフォルトの名無しさん:2010/08/26(木) 20:28:30
>>83
無い。

92 :デフォルトの名無しさん:2010/08/26(木) 22:11:46
>>91
あるだろ。
しかもすでに正解が書いてあるのに、どれだけ馬鹿なんだよ。

93 :デフォルトの名無しさん:2010/08/26(木) 23:05:04
>>92
無いよ。
馬鹿は発言するな。

94 :デフォルトの名無しさん:2010/08/27(金) 00:02:09
Thread.Sleepと電源のスリープ勘違いしてるとか救えなさすぎるだろ

95 :デフォルトの名無しさん:2010/08/27(金) 01:44:36
なんで俺が既にWaitableTimerで出来るって回答してるのに、無いとか言ってる奴がいるんだ。

ttp://msdn.microsoft.com/ja-jp/library/cc429355.aspx

fResume
タイマがシグナル状態になったときにシステムを中断電源節約モードから元に戻すかどうかを指定します。


96 :デフォルトの名無しさん:2010/08/27(金) 05:33:52
>>> from ctypes import *
>>> dueTime = c_longlong(100000000L)
>>> windll.kernel32.SetWaitableTimer(windll.kernel32.CreateWaitableTimerW(0,True,0),pointer(dueTime),0,0,0,True)
1

97 :デフォルトの名無しさん:2010/08/27(金) 05:45:13
>>95
>>94


98 :デフォルトの名無しさん:2010/08/27(金) 06:20:40
【古谷経衡】日韓のこれから NHKのこれから[桜H22/8/25]
ttp://www.youtube.com/watch?v=cX3ekzSD6vQ
ttp://www.nicovideo.jp/watch/sm11881726
>>> import ctypes
>>> ctypes.windll.PowrProf.SetSuspendState(0, 1, 0)
1
ttp://d.hatena.ne.jp/aniotahosyu/


99 :デフォルトの名無しさん:2010/08/27(金) 07:04:54
>>94
タイマーを設定してから、休止モードなりスリープなりさせると、
その時間で復帰するんだよ。
無知なんだから黙っていればいいのに。

100 :デフォルトの名無しさん:2010/08/27(金) 07:19:10
スリープモードの話題に便乗
スリープモードに入ると、何かアプリにメッセージ来るの?
WM_ENDSSESION見たい感じで。WinVistaとか無いから調べられん

101 :デフォルトの名無しさん:2010/08/27(金) 07:42:19
Vista以降でもXPと同様、スリープに入る直前にWM_POWERBROADCASTが来る。
メッセージへの応答でスリープを拒否れないとか、
メッセージを送らずにスリープに入るのは不可能になったとかの違いはあるけど。

102 :デフォルトの名無しさん:2010/08/27(金) 08:46:35
飼い猫か嫁にPCの電源いれといてくれと頼んでおくほうが楽だな

103 :デフォルトの名無しさん:2010/08/27(金) 11:34:55
Windowsのサービスプログラムで、
現在ログインしているユーザがいるかの判定を行いたいのですが
どのようにすればいいでしょうか?

104 :デフォルトの名無しさん:2010/08/27(金) 11:45:12
GetUserName

105 :デフォルトの名無しさん:2010/08/27(金) 11:49:52
http://social.msdn.microsoft.com/forums/ja-JP/vcgeneralja/thread/68161dc5-4219-484b-9005-56a8022c9629/
しかし、プログラム名に依存するとはいえ、こんな基本的な API の呼び出しで例外が発生するとなると
 Windows Vista って大丈夫なのかちょっと不安になります。

106 :デフォルトの名無しさん:2010/08/27(金) 12:35:42
>>95
悪い、XPだとできた
NT4で試したときにうまくいかなかくてな・・・

107 :デフォルトの名無しさん:2010/08/27(金) 12:59:40
NT4ってACPI対応してたっけ…?

108 :デフォルトの名無しさん:2010/08/27(金) 18:11:24
ファイル等をドラッグ中に、マウスカーソルがIDC_NO(禁止カーソル)になった事を取得するにはどの関数を使えばよいのでしょうか。
GetCursorInfo()して取得したhCursorをLoadCursor(NULL,IDC_NO)と比較しても、反応してくれません。


109 :デフォルトの名無しさん:2010/08/27(金) 19:51:57
NT4だと独自実装のしかないんじゃなかったかな。
スリープとかは基本的にOSにとって想定外の事柄だったはず。

110 :デフォルトの名無しさん:2010/08/27(金) 19:59:51
あるスレッドがSleepしているかどうかを厳密にチェックする方法はありますか?

直前にフラグをセットしても、実際にSleepが呼び出されるまでは起きている状態なので
この状態でスレッドを起こす処理が入ってしまい色々と問題が起きてしまってます。

Sleepからの解除はコールバック設定出来るのですが…

111 :デフォルトの名無しさん:2010/08/27(金) 20:14:45
どちらかというと他のスレッドがスリープしているかを知らないで済むような仕組みを作った方が簡単
寝てる側はイベント待機させていおいて 起こす側はSetEventするだけで済むようにしたり
共有フラグ使うならクリティカルセクション使うとか


112 :デフォルトの名無しさん:2010/08/27(金) 21:56:19
>>110
原理的に不可能
チェック関数から戻った直後にスレッド切り替えが発生して
そのスレッドが起きたらどうなるの?

原理的に不可能なはずのIsBadReadPtrとかは存在してて
deprecateされてるのはご愛嬌

113 :デフォルトの名無しさん:2010/08/27(金) 22:00:28
>>108
OLEドラッグアンドドロップならIDropTarget::DragOverから戻ってきたときにpdwEffectを見る
OLEドラッグアンドドロップでない場合とか自分がdrop sourceではなく
カーソルの状態を横から調べたいという場合は公開された方法はなさげ

114 :デフォルトの名無しさん:2010/08/29(日) 10:57:18
>>106
お前は10年以上前の知識で無い無い連呼してたのか・・・
公害級の老害だな

115 :デフォルトの名無しさん:2010/08/29(日) 16:20:13
スリープ中に電源ボタンを押さずにソフト的に起こす方法ってない?

116 :デフォルトの名無しさん:2010/08/29(日) 16:22:23
Wake on LANとか?

117 :デフォルトの名無しさん:2010/08/29(日) 21:03:40
System Wake-up Events
ttp://msdn.microsoft.com/en-us/library/aa373235(v=VS.85).aspx

118 :デフォルトの名無しさん:2010/08/29(日) 21:21:47
---------
Hoge(&H)|
---------
Foo(&F) |
---------
という二つの項目をもったメニューを動的に
------------------
Hoge(&H) →|Bar(&B)|
------------------
Foo(&F) |
---------
と作り替えるにはどうすればいいのでしょうか?

CMenu menu;
menu.LoadMenu(MAKEINTRESOURCE(IDR_POPUPMENU));
menu.GetSubMenu(0).InsertMenu(0, MF_STRING | MF_ENABLED | MF_BYPOSITION, 111, L"Bar(&B)");

とすると
---------
Bar(&B) |
---------
Hoge(&H)|
---------
Foo(&F) |
---------

となってしまいましたorz

119 :デフォルトの名無しさん:2010/08/29(日) 21:42:01
つ CMenu::ModifyMenu()

120 :デフォルトの名無しさん:2010/08/29(日) 22:11:55
MFCはスレ違い

121 :デフォルトの名無しさん:2010/08/30(月) 21:11:35
>>119
それは文字列変更するだけじゃんw

122 :デフォルトの名無しさん:2010/08/30(月) 21:25:52
MF_POPUPを付けたり外したりすればちゃんとそれに連動して変わるべ

123 :デフォルトの名無しさん:2010/08/30(月) 22:00:13
なんだ、"Hoge(&H)"を"Bar(&B)"に変えたいんじゃないのか。
Hogeをサブメニューにして下位にBarを入れたいんか。 "→"はそういうつもりだったか!
大いなる勘違い、すまんww

124 :デフォルトの名無しさん:2010/08/30(月) 23:14:44
人に説明するって難しいよNE!

125 :デフォルトの名無しさん:2010/08/30(月) 23:50:59
GetMenuでメニューのハンドル取って
そのハンドルからGetSubMenuでインデックス指定してサブメニューのハンドル取って
そのハンドルからサブメニューのHoge(&H)をSetMenuItemInfoでサブメニューに変更、そのときにCreateMenuでメニューを突っ込んでおく
で、そのメニューにInsertMenuItemでBar(&B)の項目を追加すると出来たけど、メンドイ

126 :デフォルトの名無しさん:2010/08/31(火) 12:38:16
C#でWIN32APIを使って名前付きパイプのクライアント側をつくっています。

C++のサーバー側では
hPipe = CreateNamedPipe(TEXT("\\\\.\\pipe\\Server"),
PIPE_ACCESS_INBOUND, // クライアントからサーバーへ
PIPE_TYPE_MESSAGE | PIPE_READMODE_MESSAGE | // メッセージとしてやりとり
PIPE_WAIT, // 受信するまで制御を返さない
1, // パイプに対する最大インスタンス
CONFIG_PIPE_SERVER_MAXOUTBUFFER, // 出力バッファ
CONFIG_PIPE_SERVER_MAXINBUFFER, // 入力バッファ
0, // タイムアウト
NULL);
で作り、クライアントは
hFile = CreateFile(PIPE_NAME, GENERIC_WRITE, 0,
0, OPEN_EXISTING, 0, 0);
でやっていますが、当初クライアント側で一つの関数内で実験的に
CreateFile→パイプへの書き込み処理→CloseHandle
という流れで作っていたのですが、最初の一回は通信成功するものの、二回目以降動きませんでした。
試行錯誤した結果、最初の一回目のCreateFileは成功してますが、二回目以降のCreateFileに失敗しています。
サーバー側の問題では無い事を確認するために、その関数内で
CreateFile→CloseHandle→CreateFile→CloseHandle
という流れにしてみると、やはり余計なコードも処理も入ってないにもかかわらず
二回目のCreateFileに失敗します。ちゃんとCloseHandleしているのになぜ失敗するのでしょうか?

127 :126:2010/08/31(火) 12:49:42
クライアント側を元通りに
CreateFile→パイプへの書き込み処理→CloseHandle
に直してから、次の操作をしてみました。
@サーバー立ち上げ
Aクライアント立ち上げ
Bクライアントでパイプ通信→成功
Cクライアント終了
Dクライアント再立ち上げでパイプ通信→CreateFile失敗

サーバーを立ち上げ直さないと、二回目のCreateFileに失敗します。

128 :デフォルトの名無しさん:2010/08/31(火) 13:04:00
GetLastErrorで詳細を調べる

129 :126:2010/08/31(火) 13:28:37
>>128
アドバイスありがとう御座います。

ERROR_PIPE_BUSY 231 0x000000E7 すべてのパイプ インスタンスがビジーです。
このエラーがでました。
パイプのハンドルの開放や再接続に思った以上に時間がかかるのか、
なにか手順が欠けているのか不明で引き続き調べています。

130 :126:2010/08/31(火) 14:32:12
何らかの手順ミスにより、クライアントのCloseHandleで接続が切れてないのかと思い、
サーバー側でのパイプ作成時のインスタンス数を3くらいに増やしても結果は同じでした。
(つながったままのが最大2個残っても再度CreateFile出来るかと思った)

時間が思った以上にかかるのかと思い、一回目の通信と二回目の通信に一分くらい開けても
結果は同じでした。さすがにこれ以上長いのはあり得ない様な気がします。

自分が参考にしたサイトでは使われてなかったサーバー側のdisconnectNamedPipeを一回通信のたびに
実行しても戻り値を見ると失敗しており、結果も変わりませんでした。

そもそもクライアント側のCloseHandleは戻り値を見ると成功しています。

関数内でClosehandleとCreateFileを挟まずに連続でWritefileとシグナルイベント発生のみをすると
正常に複数回通信できます。
ただ、プログラム開始時のみCreateFileして終了時にclosehandleするようにすれば部分的には解決しますが、
本質的に理解出来ないままになる上に、クライアントの再起動後に接続出来なくなってしまいます。

原因が想像つく方おられませんでしょうか?

131 :デフォルトの名無しさん:2010/08/31(火) 14:38:50
serverでDisconnectNamedPipe - CloseHandleをしていないとか。

132 :デフォルトの名無しさん:2010/08/31(火) 14:43:21
memory leak

133 :126:2010/08/31(火) 14:53:00
http://homepage2.nifty.com/c_lang/intro2/no_122.htm
一応このサイトを参考にしています。
クライアント側はC#なので少し内容が違ってますが、動きの基本は同じです。

134 :126:2010/08/31(火) 15:18:20
>>131

通信一回ごとにDisconnectNamedPipeとCloseHandleを行い、
必然的に必要になってくるCreateNamedPipeを通信一回ごとに作り直せば動きます。

名前付きパイプというのはこういうものなんでしょうか?
クライアントとの接続確立一回に対して、サーバーもパイプを一回ずつ作っていく物なんでしょうか?
サーバーは一度作っておけば、何度でもクライアントとつなぎ直せると思ってたのですが、
間違いでしょうか?

135 :デフォルトの名無しさん:2010/08/31(火) 16:07:15
それはパイプじゃなくてソケットだな

136 :131:2010/08/31(火) 16:07:24
勘違いしてた。
こんな感じでどうかな。

client
CreateFile(pNamePipe, GENERIC_WRITE, FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
mode = PIPE_READMODE_MESSAGE| PIPE_WAIT;
SetNamedPipeHandleState(hPipe, &mode, NULL, NULL);
WriteFile(hPipe, pMessage, length, &bytesWrite, NULL);
CloseHandle(hPipe);

137 :デフォルトの名無しさん:2010/08/31(火) 16:41:40
DisconnectしたらConnectしなおさないといけないんじゃないの?
CreateNamedPipe→ConnectNamedPipe→ReadFile→DisconnectNamedPipe→ConnectNamedPipeに戻ってループ

138 :126:2010/08/31(火) 16:46:44
>>136
パイプのハンドルはサーバー側しか分からず、クライアント側はパイプの名前で指定して、
ファイルハンドルを取得し、WriteFileの第一引数はそのファイルハンドルになり、
SetNamedPipeHandleStateの第一引数に入れられるものが分からないのですが、
ファイルハンドルとパイプのハンドルは同じ物でしょうか?

一応やってみるとプログラムに例外が発生してフリーズしました。

139 :デフォルトの名無しさん:2010/08/31(火) 17:00:53
一応やってみるとプログラムに例外が発生してフリーズしました。
一応やってみるとプログラムに例外が発生してフリーズしました。
一応やってみるとプログラムに例外が発生してフリーズしました。
一応やってみるとプログラムに例外が発生してフリーズしました。
一応やってみるとプログラムに例外が発生してフリーズしました。


140 :126:2010/08/31(火) 17:00:56
>>137
分からない事だらけで想像でしかありませんが、DisconnectNamedPipeがサーバー側からの切断、
クライアント側はファイルハンドルのclosehandleで切断になるのかなと想像してます。

んでクライアント側から切断したあと、ConnectNamedPipeでまたないとひょっとしたら
クライアントのCreateFileで成功しないのかもしれない、つまりそれが当たりかもしれないとも思いつつ、
引数がなんか面倒そうなのと、眠気が限界なので起きてから試そうと思います。

いろいろアドバイスくださった方々ありがとうございました。

141 :131:2010/08/31(火) 17:11:17
The server process must call DisconnectNamedPipe to
disconnect a pipe handle from its previous client
before the handle can be connected to another client by
using the ConnectNamedPipe function.

142 :デフォルトの名無しさん:2010/08/31(火) 23:36:50
WH_CALLWNDPROCでフックしたメッセージを、サブクラス化以外で潰す方法はありますか?
もしありましたら教えて下さい。


143 :126:2010/09/01(水) 09:32:34
二回目の接続に成功しました。
猫でもわかるのサイトと変えたのはシグナルによるタイミング同期ではなく、
サーバー側でConnectNamedPipeを実行。これによりクライアントがCreateFileするまで処理が止まります。
そして情報のやり取りが終った跡、DisconnectNamedPipe。
ここで全ての原因の秘密仕様として接続をConncectNamedPipeでやって置かなければ
ERROR_INVALID_HANDLEがでてDisconnectが成功しない。

その結果クライアントと繋がったままのような状態になり、クライアントの二回目の接続で失敗します。

参考にしたサイトではConnectNamedPipeを使用しておらず、ググって似たような事が起こってる質問に対しては
「Connectしないで何故一回でも成功しているのか、そっちのほうが不思議だ」などの書き込みもあり、
正規の方法ではないのかもしれません。
少なくとも二回目の接続を通常の手段で行うことが不可能な作りなのではないかと思いました。

144 :デフォルトの名無しさん:2010/09/01(水) 10:18:12
日本語で桶

145 :デフォルトの名無しさん:2010/09/01(水) 10:40:27
>>143
MSDN読めとしかいいようがないw

146 :デフォルトの名無しさん:2010/09/01(水) 10:46:27
最初にgoogle先生に聞くんじゃなくてMSDN読めよ…

147 :131:2010/09/01(水) 10:58:37
>>143
これはひどい

148 :デフォルトの名無しさん:2010/09/01(水) 12:50:33
ワッ

149 :デフォルトの名無しさん:2010/09/01(水) 12:51:09
ユーザが入力したデータをファイルに保存して、そのファイルを再度読み込んだりする状況で
Unicodeの依存文字使われたときってどう管理すればいいのかな?
普通にUnicodeとして書き出すと、ファイルから編集出来ないけど、アプリで管理できればおkなの?

150 :デフォルトの名無しさん:2010/09/01(水) 13:00:45
>普通にUnicodeとして書き出すと、ファイルから編集出来ない

95でも使ってんの?

151 :デフォルトの名無しさん:2010/09/01(水) 13:06:39
なんだろうな
notepad.exeでもないし
emacsかな

152 :デフォルトの名無しさん:2010/09/01(水) 13:17:55
ファイルに保存するだけならぴゅう太でカセットテープでも問題ないが

153 :デフォルトの名無しさん:2010/09/01(水) 14:15:14
WideCharToMultiByte()
MultiByteToWideChar()

154 :デフォルトの名無しさん:2010/09/01(水) 14:43:57
TCHAR szBuffer[256] = TEXT("SAMPLE");
WriteFile( hFile, szBuffer, lstrlen(szBuffer) << 1, &dwWriteSize, NULL );

こんな感じで書き出すと、"S A M P L E"ってなるけど

155 :デフォルトの名無しさん:2010/09/01(水) 14:51:17
Byte Order Markがない

156 :デフォルトの名無しさん:2010/09/01(水) 15:35:13
>>155
マジサンクス!所で、Unicodeで出力したテキストって98でも普通に表示できるの?
98ってW系の関数なかったような

157 :デフォルトの名無しさん:2010/09/01(水) 15:44:15
補足。表示出来るのって意味は、鷗のようにUnicode依存文字のことね

158 :デフォルトの名無しさん:2010/09/01(水) 15:57:07
当たり前だけど表示できない

159 :デフォルトの名無しさん:2010/09/01(水) 15:58:22
Windows95からTextOutWやExtTextOutWはサポートされている
Unicodeフォントを用意すれば表示は出来る

160 :デフォルトの名無しさん:2010/09/01(水) 18:21:53
Unicode依存文字って言い方に抵抗を感じる…

161 :142:2010/09/01(水) 19:17:39
改めて調べてみましたが、どうやらサブクラス化以外の方法は無いようでした。

それでは、同じくWH_CALLWNDPROCフックにて、例えば、全てのウインドウのWM_CLOSEを受け取る場合、
何所でサブクラス化を行い、解除すればよいのでしょうか。

因みに、ここでの「全てのウインドウ」はタスクバーに表示されるようなものです。


162 :デフォルトの名無しさん:2010/09/01(水) 19:23:25
フック関係ねえじゃん
1個1個サブクラス化してまわればいいだろ

163 :デフォルトの名無しさん:2010/09/01(水) 21:25:51
>>160
おつむがガラパゴス文字コード依存なんだろ

164 :デフォルトの名無しさん:2010/09/01(水) 21:27:04
WH_CBTじゃあかんの?

165 :デフォルトの名無しさん:2010/09/01(水) 21:38:56
今昔文字鏡やTRONコードなどその他の文字セットに含まれずUnicodeにのみ含まれる文字がUnicode依存文字

166 :デフォルトの名無しさん:2010/09/01(水) 22:01:54
厨くさい表現

167 :デフォルトの名無しさん:2010/09/02(木) 14:26:51
>>160
ではどのように表現すべきでしょうか?

168 :デフォルトの名無しさん:2010/09/02(木) 23:00:51
iCod

169 :142:2010/09/04(土) 16:33:49
WH_CBTで試みたのですが、HCBT_DESTROYWNDが飛んできた際、
ウインドウハンドルを取得する方法が分かりません。
ご教授お願いします。



170 :デフォルトの名無しさん:2010/09/04(土) 19:43:54
MSDNのCBTProcのところを読み直すと良いよ。

171 :デフォルトの名無しさん:2010/09/05(日) 01:00:53
CreateDialog(hInstance, MAKEINTRESOURCE(IDD_DIALOG1), hwnd, DlgProc);
は成功するんだけど、

CreateDialog(hInstance, TEXT("IDD_DIALOG1"), hwnd, DlgProc);
が失敗するのは何故?

http://msdn.microsoft.com/ja-jp/library/cc410690.aspxには二番目の引数のlpTemplateには
「ダイアログボックステンプレートの名前を指定する NULL で終わる文字列へのポインタか〜」
って記述があるんだけど


172 :デフォルトの名無しさん:2010/09/05(日) 01:02:28
Cの基本からやりなおしておけ

173 :デフォルトの名無しさん:2010/09/05(日) 09:46:07
>>171
MAKEINTRESOURCEで成功するってことは IDD_DIALOG1 は整数値のリソース識別子なんだろ
そして "IDD_DIALOG1" っていう文字列でのリソース識別子は存在しない → 失敗する

174 :デフォルトの名無しさん:2010/09/05(日) 13:42:44
リソースエディタでダイアログ作る時、
IDD_DIALOG1
ってやらないで、
"IDD_DIALOG1"
ってやればTEXTの方使える。
両者は別物なので両方作ったりもできるよ

175 :デフォルトの名無しさん:2010/09/06(月) 16:26:33
ALT+TABで表示されるダイアログと同じスタイルのダイアログを作りたいのですが、
どういうスタイルで作ればいいでしょうか?

WS_BORDER | WS_POPUPだと、同じ形だけどDwmExtendFrameIntoClientAreaをしたときに
フレームだけ描画されてウインドウ内が完全に透明になってしまいます

176 :デフォルトの名無しさん:2010/09/07(火) 11:49:57
普通にCreateWindowじゃねぇの?

177 :デフォルトの名無しさん:2010/09/07(火) 17:13:05
CreateWindowするときのウインドウスタイルをしりたいのです

178 :デフォルトの名無しさん:2010/09/07(火) 17:25:37
窓のスタイルを記録するツールでも作れば

179 :デフォルトの名無しさん:2010/09/07(火) 17:57:55
タスクスケジューラを使わずに自前で定時処理(毎時0分と30分等)をしたいのですが、
時刻をポーリングする以外に何かAPIでコールバックしてくれるようなものってありますか?

180 :デフォルトの名無しさん:2010/09/07(火) 18:20:09
>>179
waitable timerを使えば時間になったら起こしてもらうことができる。

181 :デフォルトの名無しさん:2010/09/07(火) 18:33:36
>>180
期待した動作ができそうです。ありがとうございました

182 :デフォルトの名無しさん:2010/09/08(水) 01:08:19
>>177
親ウィンドウをデスクトップにするスタイルじゃなくてか?

183 :デフォルトの名無しさん:2010/09/08(水) 01:19:01
WIN32API初心者なのですが、スクロールを実装するところで数日躓いています。
case WM_VSCROLLで分岐処理して、ScrollWindow()、UpdateWindow()と関数を使うまでは、分かるのですが、その後、WM_PAINTに飛んでから、どう書いていったらよいのでしょうか?

猫でもわかる、を参考にしているのですが、そこでは、画面全体の画像をクライアント領域に貼る、という話の流れなので、そうではなくてごく普通のスクロールをさせるにはどうすればよいのでしょうか。


184 :デフォルトの名無しさん:2010/09/08(水) 01:23:29
なにをどうしたいの?

185 :デフォルトの名無しさん:2010/09/08(水) 01:37:32
>>183
表示されるべき内容をそのまま描画するだけ。
ぶっちゃけ表示領域を全更新してしまってもいいが、
それだとScrollWindowの意味があまり無くなってしまうから、
通常はスクロールの結果無効領域になった箇所を描画する。
ちなみに、スクロールに応じてSetWindow/ViewOrgExしてくれるような
サービスは一切無いので全て自分で管理するように。

186 :デフォルトの名無しさん:2010/09/08(水) 01:54:35
ダブルバッファリングだろ常考

187 :デフォルトの名無しさん:2010/09/08(水) 10:05:07
別にこの場合はシングルバッファでもかまわん

188 :デフォルトの名無しさん:2010/09/08(水) 14:40:07
俺はクライアント領域サイズのビットマップ作っといてスクロールしたらビットマップの描画更新
WM_PAINTではビットマップ貼るだけ
描画に必要な情報だけ保持

189 :デフォルトの名無しさん:2010/09/08(水) 14:50:04
>>188
それダブルバッファリング

190 :デフォルトの名無しさん:2010/09/08(水) 15:01:42
似てるけど

191 :デフォルトの名無しさん:2010/09/08(水) 18:52:54
似てる

192 :デフォルトの名無しさん:2010/09/08(水) 20:35:45
似てる・・・だと

193 :デフォルトの名無しさん:2010/09/08(水) 21:33:29
似てるんじゃね?

194 :デフォルトの名無しさん:2010/09/08(水) 21:47:28
似て非なるもの?

195 :デフォルトの名無しさん:2010/09/09(木) 00:56:50
似てそうで似てないけど少しだけ似てる

196 :デフォルトの名無しさん:2010/09/09(木) 01:13:15
GPUに直結してるかどうかの違いしかなくない?

197 :デフォルトの名無しさん:2010/09/09(木) 19:12:09
は?

198 :デフォルトの名無しさん:2010/09/10(金) 01:12:54
ひ?

199 :デフォルトの名無しさん:2010/09/10(金) 07:18:07
ふ?

200 :デフォルトの名無しさん:2010/09/10(金) 08:59:09
ほ?

201 :デフォルトの名無しさん:2010/09/10(金) 21:58:44
へ?

202 :デフォルトの名無しさん:2010/09/11(土) 01:33:19
はっ!やだ朝だ
ひぃ!今何時?
ふぅ.. まだ平気あと5分
へっ?急がなきゃ
ホッ!トミルクでGO! 1日は断然万全

203 :デフォルトの名無しさん:2010/09/11(土) 11:39:18
猛烈な一般保護違反が発生しました。


         [OK]

204 :183:2010/09/11(土) 13:26:18
>>184
ブラウザを作っていて、単純に(ソケットで受信したHTTPの)文字列を描画したいのです。今のままだと、クライアント領域にはすべての文字列が描画されていないので。

>>185
ありがとうございます。
「表示されるべき内容」って僕の場合だと文字列のことですかね・・・?
いまいちこのあたりの背景がわかっていないで質問しています。
スクロールって自分で文字列を少しづつ描画させていくのでしょうか? それとも関数を使えば、スクロールすると勝手に文字列が見えてくるものなんでしょうか。


205 :デフォルトの名無しさん:2010/09/11(土) 14:26:01
そんな漠然とした質問じゃ、いろいろとしか言いようがない。

206 :デフォルトの名無しさん:2010/09/11(土) 15:14:58
自分で書かなきゃ誰が書いてくれると思ってるんだよ。
お前はエディットコントロールでも貼り付けておけ

207 :デフォルトの名無しさん:2010/09/11(土) 16:20:51
スクロールメッセージのデフォルト動作は中途半端だから、
デフォルトプロシージャに処理させずに自分で書き直した方が速いと思うけどね。

208 :デフォルトの名無しさん:2010/09/11(土) 16:29:16
何がわかっていないのかをわかっていないひとだということだけはわかった

209 :デフォルトの名無しさん:2010/09/11(土) 16:53:45
なるほど、わからん。

210 :デフォルトの名無しさん:2010/09/11(土) 17:41:43
>>208
おまいはなにかをいわんとしてなにもいっておらんのう

211 :デフォルトの名無しさん:2010/09/11(土) 17:46:21
とりあえずメッセージがとんできたときにスクロールした分だけ文字列を書き直せ。

212 :デフォルトの名無しさん:2010/09/11(土) 18:02:57
嘘を嘘と見抜けない人には2chは向いていないと思う

213 :デフォルトの名無しさん:2010/09/12(日) 00:14:43
フォントのサイズと行数とスクロールバーの位置さえわかれば自前でなんとかなる

214 :デフォルトの名無しさん:2010/09/12(日) 17:28:22
今の時代でAPIのセマフォやイベント同期オブジェクトを使う状況とは
どんなときですか?

215 :デフォルトの名無しさん:2010/09/12(日) 17:31:12
時代と来ましたか
ちょっと笑った

216 :デフォルトの名無しさん:2010/09/12(日) 18:14:18
スマポとかセマフォとか勝手に略されてもわからねえんだよおおお

217 :デフォルトの名無しさん:2010/09/12(日) 18:16:33
セマフォはフルネームでセマ、、、、セマ、、、なんだっけ?

218 :デフォルトの名無しさん:2010/09/12(日) 18:24:54
SemaphoreはSemaphoreだろ。

219 :デフォルトの名無しさん:2010/09/12(日) 18:34:26
セマートフォン

220 :デフォルトの名無しさん:2010/09/12(日) 20:06:23
セマフォは略称じゃねぇだろ……
っていうか、マルチスレッド当たり前のこのご時世にその質問はないわ……

221 :デフォルトの名無しさん:2010/09/12(日) 20:08:02
スマートポン

222 :デフォルトの名無しさん:2010/09/12(日) 20:09:32
甲種腕木式二灯場内出発信号機

223 :デフォルトの名無しさん:2010/09/12(日) 20:14:36
Metered Sectionってどうすれば使えるの?

224 :デフォルトの名無しさん:2010/09/12(日) 20:28:49
抱いてみたい同期オブジェクトランキング
1イベント
2ミューテクス
3クリティカルセクション
4セマフォ
5砂時計カーソル

異論は認める

225 :デフォルトの名無しさん:2010/09/12(日) 20:31:36
APIじゃないよ。しかもバグがあったらしい
http://s-project.appspot.com/notes_vc.html
かつてRitcherのWin32 Q&Aに載ってたOPTEXみたいなもの。そういやあれも
最初のバージョンにはバグがあったな。マルチスレッドの同期はそれだけ難しいってこと

226 :デフォルトの名無しさん:2010/09/12(日) 21:14:48
iPhone
iPad
iPod
すべてまとめると
iPhoge
で桶

227 :デフォルトの名無しさん:2010/09/16(木) 12:21:54
自動的に折り返されるエディットコントロールで、
入力された文字列やコントロール幅、フォントに応じて高さを自動的に変えたい
のですが、
何か良い方法はありませんでしょうか。

エディットボックスのデバイスコンテキストと描画領域をコピーして、
そこへDrawTextで文字列を書き、戻り値を取得する方法を考えたのですが、
うまくできません…

228 :デフォルトの名無しさん:2010/09/16(木) 17:41:04
Windows APIはアセンブラ相当。

229 :デフォルトの名無しさん:2010/09/16(木) 19:17:56
>>227
なんとなくDCにフォントを選択していない予感がする。

230 :デフォルトの名無しさん:2010/09/16(木) 20:09:50
管理者権限の無いプログラムから、他のプログラムを管理者権限で起動させるためには
どのようにすればよいでしょうか?もちろん、起動時にUACのダイアログを表示します。

起動されるプログラムはマニフェストを付加していません。


231 :デフォルトの名無しさん:2010/09/16(木) 20:15:08
ShellExecuteEx SHELLEXECUTEINFO.lpVerb = "runas"

232 :デフォルトの名無しさん:2010/09/16(木) 20:16:22
ShellExecute RunAsはマニフェスト要らないと思うけど
試したけど起動する

233 :227:2010/09/17(金) 01:49:53
>>229
それ最初にやらかしましたw
横に同じ条件で実際にDrawText実行して、すぐに気づきましたが…

結局エディットコントロールのサイズを取得するときに
EM_GETRECTメッセージ使わずに、GetClientRect使っていたために
ズレが発生していたのが原因で自己解決しました。
DrawText関数と、DT_CALCRECTフラグの組み合わせでうまくいきました。

スタティックコントロールだと、GetClientRect使わないとナンですけどね。。

234 :230:2010/09/17(金) 09:43:22
>> 231, 232

ありがとうございます。 今から試してみますm(_ _)m

235 :デフォルトの名無しさん:2010/09/18(土) 02:31:56
Win32 APIで、チェックボックスやラジオボタンなどのボタンコントロールの
AutoSize的なコトを実現する上手い方法はありませんか?

チェックボックスのクライアント領域から、フォーカス枠のつく文字列の描かれる部分の領域を
計算できなくて困っています。

OBM_CHECKBOXESでチェックボックスのアイコンのサイズを得て、
そこからフォーカス枠2px分と、枠とチェックボックスの間5px分、
そして文字列の領域の横幅よりも広ければ、問題なく描画される"だろう"と言うところまではわかるのですが、
その文字列の領域がクライアント領域からどれだけずれているかを、
確かに求める方法がわかりません。

236 :デフォルトの名無しさん:2010/09/18(土) 02:43:53
>>235
sizerでも使えよ
拘る意味がない

237 :235:2010/09/18(土) 03:07:05
>>236
すでにWTLでがりがり書いてしまっているので、今更wxとかには移せないです…

238 :デフォルトの名無しさん:2010/09/18(土) 08:06:42
実際に書いてから修正する

239 :デフォルトの名無しさん:2010/09/19(日) 01:00:15
GetWindowRectじゃダメかい?

240 :デフォルトの名無しさん:2010/09/19(日) 01:09:49
EnumWndProcをEXEファイルで使用するとタスクマネージャで
出てくるようなウィンドウネームが拾えるのですが
サービスに登録して動作させると
SYSTEM AGENT COM WINDOWといった見たことの無い
ウィンドウネームが帰ってきます。
EnumWindows
OpenInputDesktopやOpenDesktopを使ってEnumDesktopWindows
も試してみましたが結果は同じでした。
サービスに登録して動かす場合から、見えているウィンドウ名を
取得するにはどうすればよいのでしょうか。

241 :デフォルトの名無しさん:2010/09/19(日) 01:43:21
サービスはユーザに見えないデスクトップ上で動いている
ttp://msdn.microsoft.com/ja-jp/windows/dd871151.aspx

242 :240:2010/09/19(日) 02:13:14
>>241
ありがとうございます。
セッション1と0と言う事で見えないとの理解でよいでしょうか。
XP・7の互換性を考えながらと言う点はさておき、
使用OSがXPなので見えても良い様に思い
OpenDesktop("default"・・・・
OpenDesktop("winsta0\default"・・・・
ともしてみましたが結果変わらずでした。。
どうも、勘違いか設定が違うのでしょうね。
「サービスはユーザに見えないデスクトップ上で動いている」
との助言よりもう少しデスクトップの指定方法を考えて見ます。
・・・違うデスクトップの感知は出来ないなんてないですよね(汗

243 :240:2010/09/19(日) 02:35:10
「サービスはユーザに見えないデスクトップ上で動いている」
すいません。やっと意味が分かりました。。
たとえOpenDesktop("winsta0\default"としても
説明:既存のデスクトップのハンドルを取得します。
なので無駄なのですね。。。
ちょっと指定方法を考えます。ありがとうございます。

244 :デフォルトの名無しさん:2010/09/19(日) 02:49:40
>>240
サービスのプロパティで
「デスクトップとの対話を許可」
のチェックボックスはどうなってる?

245 :デフォルトの名無しさん:2010/09/19(日) 03:54:15
>>243
SetThreadDesktop
ハンドルを取得しただけじゃ何も起こるわけないだろ

246 :デフォルトの名無しさん:2010/09/19(日) 13:02:41
Windowsでマルチスレッドの勉強したいんですけど、APIを使う方法を知っておいた
ほうが良いですか?

247 :デフォルトの名無しさん:2010/09/19(日) 13:10:20
API使わずにどうやってマルチスレッドに・・・openmpか

248 :デフォルトの名無しさん:2010/09/19(日) 13:13:01
.NETでできるかなと思ったので。

249 :デフォルトの名無しさん:2010/09/19(日) 13:15:21
.NETだけでできる
そしてマネージスレッドとアンマネージスレッドは混在させるべきでないから
無理に覚えなくていい

250 :デフォルトの名無しさん:2010/09/19(日) 13:18:08
int flag = 0;

while(1)
{
  if(flag){
    flag = 0;
    main()
  }
  else{
    flag = 1;
    thread_func();
  }
}

251 :デフォルトの名無しさん:2010/09/19(日) 13:30:08
>>249
そうですか。
APIを使って勉強する場合、.NETでは学べない何か利点はありますか?

252 :デフォルトの名無しさん:2010/09/19(日) 13:32:20
ない

253 :デフォルトの名無しさん:2010/09/19(日) 13:42:28
レスありがとうございました。
C#で勉強します。

254 :デフォルトの名無しさん:2010/09/19(日) 13:44:53
ある

255 :デフォルトの名無しさん:2010/09/19(日) 13:45:37
ないアル

256 :デフォルトの名無しさん:2010/09/19(日) 14:32:28
またひとり.NETerが増えたのだ……

257 :デフォルトの名無しさん:2010/09/19(日) 18:07:25
Win32API と .NET ってどのような違いがあるの?
今からは .NET が主流になるの?

258 :デフォルトの名無しさん:2010/09/19(日) 18:15:56
.netはwin32apiをラップしたような感じ
もちろんそれだけじゃなくて機能はいろいろ追加されてるけど

259 :デフォルトの名無しさん:2010/09/19(日) 18:43:26
>>243
EnumDesktopWindowsはだめだっけ?

260 :デフォルトの名無しさん:2010/09/19(日) 20:14:48
STATICコントロールのテキストを変更すると表示にゴミが残ることがあるんですけど
どうやってきれいにしたらいいでしょうか

261 :デフォルトの名無しさん:2010/09/19(日) 20:27:34
InvalidateRect

262 :デフォルトの名無しさん:2010/09/20(月) 00:22:28
>>258
なるほど、サンクス
2つ目の質問についてはどうなのだろう?

263 :デフォルトの名無しさん:2010/09/20(月) 00:47:40
>.Netが主流
ジャンルによる
処理速度が必要なものはWin32API
開発速度が必要なものは.Net

264 :デフォルトの名無しさん:2010/09/20(月) 00:58:42
>>263
おぉ、分かりやすい回答ありがとう
.NETは一段階はさむから処理速度が Win32API に劣るが、開発が簡単というわけか

265 :235:2010/09/20(月) 00:58:58
>>239
文字領域から、GetWindowRectにあたる大きさを測れないといけないので、
目的と手段が逆転してしまいます…

>>238
やっぱそれしかないッスか…
どんな環境でも、この値が同じならいいんですけどねぇ

266 :デフォルトの名無しさん:2010/09/20(月) 01:01:39
ドライバ作る人はセマフォ、ミューテックス、待機APIとか使うのか。

267 :デフォルトの名無しさん:2010/09/20(月) 02:04:28
>>266
いわゆるWIN32APIは使わない
KeInitializeMutexとかZwSetEventとかドライバ用のAPIを使う

268 :デフォルトの名無しさん:2010/09/20(月) 02:18:27
Windows環境で実時間を計測したいのですが、
QueryPerformanceCounterはCPUクロック周波数が動的に変動する環境では使えず、
timeGetTimeは精度がPCの時計に依存するので、私の環境では12時間で1秒ほど遅れてしまいます
他にタイマーとして使えるAPIをどなたか教えていただけないでしょうか

269 :デフォルトの名無しさん:2010/09/20(月) 02:21:11
FAQ
過去スレのどっかにURLあるはず


270 :デフォルトの名無しさん:2010/09/20(月) 02:24:06
>>246
先ずは、四人の中国人哲学者が四本の箸で飯を食う話を知っておいた方がいい。

271 :デフォルトの名無しさん:2010/09/20(月) 03:50:25
>>269
過去スレを見れる範囲で1年分探してみたのですが、
システム時刻を取得するものしか見つけられませんでした
検索キーワードだけでも教えていただけないでしょうか

272 :デフォルトの名無しさん:2010/09/20(月) 04:41:20
NTPじゃだめなん?

273 :デフォルトの名無しさん:2010/09/20(月) 05:25:02
>>267
なるほど。Win32 APIますます知る必要ないな。

274 :デフォルトの名無しさん:2010/09/20(月) 09:16:31
>>268
どんな環境でも確実に正しい計測をしたいというなら、それは無理。
何代か前の家のPCなんか、一時間に分単位で時間がずれたりしてたしなw

275 :デフォルトの名無しさん:2010/09/20(月) 10:30:51
>>261 サンクス!

276 :デフォルトの名無しさん:2010/09/20(月) 12:09:13
>>268
そういう問題があるからQueryPerformanceCounterは別のハードウェアカウンタ使ってCPUのクロックカウンタは使ってないよ。
時間と時刻のどっちの制度が欲しいの?

277 :268:2010/09/20(月) 13:16:29
>>272
それは全く考えてませんでした
確かにそれなら小さな誤差に抑えられますね
インターネット環境が必須のソフトなので今回はこれで実現できそうです

>>274
うちもOSの時計は酷くずれますが、QueryPerformanceCounterは24時間くらいの計測では目で見てわかるほどの誤差はありませんでした
確実に正確な計測は無理でしょうけど、OSの時計よりはマシな時計を持ってるんじゃないかなーと

>>276
ソースは他人のブログですが、環境によってはCPUのクロックを使用するそうです
自分の環境でもQueryPerformanceFrequencyはCPUのクロックとおぼしき数値を返します
あと欲しかったのは時間の方です

皆さん回答ありがとうございました
timeGetTime+NTPで実現してみようと思います

278 :240:2010/09/20(月) 15:46:13
240,242,243です。
>>259
前回はダメしたが解決しました。
教えて頂いたことを調べなおして以下を使用し解決しました。
OpenWindowStation
SetProcessWindowStation
OpenDesktop
SetThreadDesktop
ご助力頂いた方々と場を借りたことに感謝ですm(__)m

279 :デフォルトの名無しさん:2010/09/20(月) 17:16:35
>>277
そのブログの記事って古くないか?
QueryPerformanceCounterがCPUのクロック変動の影響受けてたのって
2006年くらいの話だと思うが。

280 :デフォルトの名無しさん:2010/09/20(月) 17:31:52
277じゃないけどググったら2010-05の記事で検証してるブログ出てきたぞ
俺の環境じゃ検証できないから信憑性についてはアレだけど

281 :デフォルトの名無しさん:2010/09/20(月) 20:48:54
Windows 7ではさらにAPIが増えててQueryUnbiasedInterruptTime
というのがあるらしい。
説明を読む限り精度はtimeGetTimeと同程度っぽいけど

282 :デフォルトの名無しさん:2010/09/20(月) 21:22:35
>>280
HALによるのかな?
QueryPerformanceFrequencyでCPUクロックぽいすうちなら信用できない。
1.193182MHzとか3.579545MHzの分周ぽかったらAPM由来のカウンタで信用するとかで判断できないか?

283 :デフォルトの名無しさん:2010/09/20(月) 21:38:53
HPETだと周波数はいくつになるの?

284 :デフォルトの名無しさん:2010/09/20(月) 21:48:42
ググルと14318180って数字が出てきたな。
こっちのほうが精度がいいのか。おいらのBIOSはどうかな?

285 :デフォルトの名無しさん:2010/09/20(月) 21:50:05
>>284
精度じゃなくて分解能だった

286 :デフォルトの名無しさん:2010/09/20(月) 22:00:09
XPで確かめてみたM/BはDP35DP、CPUはC2D E4400
常に2000110000 だたよ。。。アチャー
CrystalCPUID で見てEIST発動時でも変わらず

同環境のVirtualBox上のXPは常に3579545

287 :デフォルトの名無しさん:2010/09/20(月) 22:00:46
うちのPCでQueryPerformanceFrequencyを実行すると
2045781って数字が出たんだがこりゃ何じゃ?

288 :デフォルトの名無しさん:2010/09/20(月) 22:10:20
>>286
実時間の計測に使えるかは試した?
QueryPerformanceFrequencyで得られる値が常に一定なのは普通だと思うけど・・・

289 :デフォルトの名無しさん:2010/09/20(月) 22:59:30
そういう仕様なもんだから
CPUクロックが使われててかつクロック可変の環境では役に立たない

290 :デフォルトの名無しさん:2010/09/21(火) 00:16:06
この問題ってAthlon64のCool'n'Quietで起きたんじゃなかったっけ?
これはAMDのドライバ提供で修正されたし、
以降のCPUが対応を放置したりするような事はないと思うのだけどなあ。
CPUドライバが更新されていないXPでないと再現しなさそう。

291 :デフォルトの名無しさん:2010/09/21(火) 00:17:45
CPUドライバのパッチじゃQueryPerformanceFrequencyの戻り値は常に一定という
MSが決めた仕様は変えられないだろ

292 :デフォルトの名無しさん:2010/09/21(火) 00:30:39
QueryPerformanceCounterは高分解能タイマーの現在値を返す、
としか定義されていないから大丈夫だろ。

293 :デフォルトの名無しさん:2010/09/21(火) 00:33:03
http://msdn.microsoft.com/en-us/library/ms644905%28VS.85%29.aspx
> The frequency cannot change while the system is running.

294 :デフォルトの名無しさん:2010/09/21(火) 00:46:42
>>290
それはRDTSCを自分で使っていたアプリじゃねーの?

295 :デフォルトの名無しさん:2010/09/21(火) 02:01:05
>>247
CRT

296 :デフォルトの名無しさん:2010/09/21(火) 07:54:12
Cool'n'Quietのクロック可変と、デュアルコアCPUのRDTSCのコア間での差異は
一応別件扱いなんじゃないかと思う。
KB895980とKB909944がそれぞれに対応するんじゃないかな。

>>293
それはQueryPerformanceFrequencyの返す値を指しているだけだから、
Counterがクロック可変でも一定の速度で刻む値を返せない理由にはならない気が。
どう実装するのかは良く判らないけど。

297 :デフォルトの名無しさん:2010/09/22(水) 00:45:46
>>296
理論的には確かに不可能ではなさそうだけど
実際に一定の速度で刻むように実装されてると期待できるような状況なのかな
絵に描いた餅じゃ結局使えないんで

298 :デフォルトの名無しさん:2010/09/22(水) 10:01:08
シベリア板から誘導されてきました。

296 名前:いやあ名無しってほんとにいいもんですね[sage] 投稿日:2010/09/22(水) 09:32:58 発信元:221.30.178.167 [1/3]
プログラム板に書き込めないからここに書くけど、Spy++みたいにD&Dでウィンドウハンドルを得るにはどうすればいいの?
Spy++でSpy++をSpyできなくて困る。

297 名前:いやあ名無しってほんとにいいもんですね[sage] 投稿日:2010/09/22(水) 09:38:50 発信元:221.29.84.207 [2/2]
書けるけど?

298 名前:いやあ名無しってほんとにいいもんですね[sage] 投稿日:2010/09/22(水) 09:58:33 発信元:221.30.178.167 [2/3]
あ、本当だ

299 :デフォルトの名無しさん:2010/09/22(水) 10:05:36
マルチポストか

胸が熱くなるな

300 :デフォルトの名無しさん:2010/09/22(水) 10:07:52
マウスキャプチャーしてカーソル位置のWindowを調べてるんだろう

301 :デフォルトの名無しさん:2010/09/22(水) 10:12:16
えぇーマルチポストと誘導されて同じ書き込みは別物じゃないんですかー!?

やだ。。。いますごく恥ずかしいです。。。

302 :デフォルトの名無しさん:2010/09/22(水) 10:32:36
>>298
WindowFromPoint


303 :デフォルトの名無しさん:2010/09/22(水) 16:19:59
デスクトップ上の何も無いことでのダブルクリックを検出したいんだが
どういう実装方法が一般的?

304 :デフォルトの名無しさん:2010/09/22(水) 16:28:35
デスクトップをサブクラス化する

305 :デフォルトの名無しさん:2010/09/22(水) 16:32:33
何も無いこと

306 :デフォルトの名無しさん:2010/09/22(水) 16:34:07
DLLでWindowMessageフックしてrootWindowのマウスメッセージ横取りとか

307 :デフォルトの名無しさん:2010/09/22(水) 18:35:35
>>298
IP出るのか

308 :デフォルトの名無しさん:2010/09/22(水) 20:37:10
ボタンにビットマップを貼り付けたいのですが、ググってもなかなかAPIが見つかりません
もしかしてボタンに貼り付けるっていう考え方が間違ってる?

309 :デフォルトの名無しさん:2010/09/22(水) 20:47:44
オーナードローボタン

310 :デフォルトの名無しさん:2010/09/22(水) 20:49:59
BM_SETIMAGEかBCM_SETIMAGELISTってところか?

311 :デフォルトの名無しさん:2010/09/22(水) 20:57:39
サブクラス化

312 :デフォルトの名無しさん:2010/09/22(水) 23:51:01
>>309-311
レスありがとうございます
>>310さんの方法で実現することが出来ました
助かりました、感謝します

313 :デフォルトの名無しさん:2010/09/23(木) 18:31:47
カーソルがどのウィンドウ上にあるかを確認したいのですが、
TrackMouseEvent() を使う以外に方法はありますか?

314 :デフォルトの名無しさん:2010/09/23(木) 18:34:07
WindowFromPoint

315 :デフォルトの名無しさん:2010/09/23(木) 18:49:06
>>314
こんな便利なAPIがあったとは…!!
ありがとうございます

316 :デフォルトの名無しさん:2010/09/24(金) 11:27:24
FILE_SHARE_DELETE無しでCreateFileされているファイルに対して
CreateHardLinkして作った新しいリンクを消す方法ってない?
UNIXのunlink(2)相当のことをしたいのだけど

317 :デフォルトの名無しさん:2010/09/24(金) 17:04:31
>>316
DeleteFile

318 :デフォルトの名無しさん:2010/09/24(金) 17:57:15
>>317
質問の意図が伝わっていないようだ
FILE_SHARE_DELETE無しでCreateFileされているとDeleteFileはできない
iノード相当のディレクトリエントリだけを消したいのですよ

319 :デフォルトの名無しさん:2010/09/24(金) 18:56:23
SetFileInformationByHandleでFileDispositionInfo

320 :316:2010/09/24(金) 22:35:27
>>319
Thx
明日にでも試してみるよ

321 :デフォルトの名無しさん:2010/09/24(金) 22:38:23
今すぐにだ

322 :デフォルトの名無しさん:2010/09/25(土) 00:45:17
NtDeleteFileなら即座に消えるけどWin32サブシステムからは使われていない
(DeleteFileは>>319の方法で実装されている)
たぶんPOSIXサブシステムのunlinkのために存在するんだろう

323 :デフォルトの名無しさん:2010/09/25(土) 14:47:47
VSみたいなウィンドウを自由に配置できるあれってどうやればできるの?

324 :デフォルトの名無しさん:2010/09/25(土) 16:09:13
SetParentで親を乗り換えたりMoveWindowで位置を動かしたりして気合いと根性で

325 :デフォルトの名無しさん:2010/09/25(土) 17:59:47
スクリーンセーバー発動中かどうかってどう判定すればいいんですか?

326 :デフォルトの名無しさん:2010/09/25(土) 18:47:28
>>325
スクリーンセーバー 起動中
でぐぐれ

327 :デフォルトの名無しさん:2010/09/25(土) 19:21:19
わかりませんでした。

328 :デフォルトの名無しさん:2010/09/25(土) 19:48:26
いいからAPI出せや

329 :デフォルトの名無しさん:2010/09/25(土) 20:30:25
2件目だぞ
ttp://www.geocities.jp/masa7251/tips/api/api00018.html

330 :デフォルトの名無しさん:2010/09/25(土) 20:39:52
おいおい正気なのかお前は数えることができるの、か
まとめな思考のなら分かるだろうお前はまちがてるとりうことに
俺はプログラムーだから分かるんたがあまりにも非生産的だろう

331 :デフォルトの名無しさん:2010/09/25(土) 20:45:55
C言語でおk

332 :デフォルトの名無しさん:2010/09/25(土) 20:51:34
System.Console.WriteLine("猫");

333 :316:2010/09/25(土) 20:52:29
試してみた

SetFileInformationByHandle(FileDispositionInfo)による方法:
・Handle取得時のAccessRightsにDELETEが無いとアクセス権無しで失敗
・AccessRightsにDELETEを指定するとそもそもHandleを取れない

ntdll.dll!NtDeleteFileによる方法:
・STATUS_SHARING_VIOLATIONで失敗
・別プロセスのCreateFileでFILE_SHARE_DELETEが指定されていれば成功(DeleteFileと同じ)
・undocumented.ntinternals.netにはできるようなことが書いてあるが既に古い情報なのではなかろうか

誰か実際に成功する方法を知らない?

334 :デフォルトの名無しさん:2010/09/25(土) 20:54:14
プ板でやれ

335 :デフォルトの名無しさん:2010/09/25(土) 21:05:51
定期あげ

336 :デフォルトの名無しさん:2010/09/26(日) 01:42:52
スレッド1で10ミリ秒単位でHeapReAllocを呼び出してデータを追加していき、スレッド2で50ミリ秒単位で
確保したポインタの内容を読み込むプログラムを実行していると、VC++のデバッグ出力に
 x.exe の 0x001df64a で初回の例外が発生しました: 0xC0000005: 場所 0xfeeefeee を読み込み中にアクセス違反が発生しました。
という出力が頻繁に表示されるのですが、解決策はありますか?
ちなみに、スレッド1のデータ追加処理を実行している間は、フラグを立てて、
スレッド2の読み込み処理をwhile(flag) Sleep(1); のように停止させています。

337 :デフォルトの名無しさん:2010/09/26(日) 01:46:41
キチガイみてーなプログラムだな

338 :デフォルトの名無しさん:2010/09/26(日) 01:51:12
>>336
クリティカルセッションか、ミューテックスくらいかねぇー。
処理間隔空けるのもいいかもねー。

339 :デフォルトの名無しさん:2010/09/26(日) 02:00:00
>>338
便利なAPIですね!
ありがとうございます

340 :デフォルトの名無しさん:2010/09/26(日) 02:01:06
>>336
ソース張ってみ

341 :デフォルトの名無しさん:2010/09/26(日) 02:10:56
ビジーウェイト。。

342 :デフォルトの名無しさん:2010/09/26(日) 02:25:43
ヘッドロック

343 :デフォルトの名無しさん:2010/09/26(日) 02:36:11
>ちなみに、スレッド1のデータ追加処理を実行している間は、フラグを立てて、
>スレッド2の読み込み処理をwhile(flag) Sleep(1); のように停止させています。
もし仮にそのようなロジックでするなら while(flag) よりも
read/writeそれぞれでシーケンシャルナンバーを記憶し
スレッド1でデータを追加→writeのシーケンシャルナンバーをインクリメント
スレッド2はreadのシーケンシャルナンバーがwriteのそれより小さかったら読み込み・インクリメント
にしたほうが ま だ ま し


344 :336:2010/09/26(日) 02:53:01
クリティカルセクション使ったら全然でなくなりました!
本当にありがとうございます

よくよく考えたら、1ミリ秒あればかなり処理が進んでしまってますねw


345 :デフォルトの名無しさん:2010/09/26(日) 09:22:34
flagを扱う際のアウトオブオーダーには注意しとけよ。
何も対策しないで他スレッドから見ると、
flagは立っているのにデータはまだ追加されていない状態があり得るからな。
まあ、クリティカルセクションを使った時点で問題無くなったとは思うが。

346 :デフォルトの名無しさん:2010/09/26(日) 17:21:12
>>343
ま だ ま し とか言って無知な自分をごまかしてるわけねw

347 :デフォルトの名無しさん:2010/09/26(日) 17:37:23
スレッドならクリティカルセクションとか使うのが普通だろJK
スレッドの基礎レベルだ。勉強しなおした方が良い

348 :デフォルトの名無しさん:2010/09/26(日) 17:51:08
同期を取るのが必須なのは当然だけど、
最近は、自前でクリティカルセクションを管理するよりも、
たとえばIntel TBBやVC++10のconcurret_queueみたいに、
同期処理入りのライブラリを使う方向に進んでいるように思う。

349 :デフォルトの名無しさん:2010/09/26(日) 17:57:44
HWND p;
//デスクトップのハンドルを得る
p = FindWindow("Progman", "Program Manager");
p = FindWindowEx(p, NULL, "SHELLDLL_DefView", NULL);
p = FindWindowEx(p, NULL, "SysListView32", NULL);
//デスクトップにF5のkeydownメッセージを送信
SendMessage(p,WM_KEYDOWN,VK_F5,0);
//-----------------------------------------

環境はWindowsXPproSP3 32bit VC++Express2010
エクスプローラに更新通知出したいのだけどだめだったワケワカメドンダンズオシエテケレ


350 :デフォルトの名無しさん:2010/09/26(日) 18:00:36
はいはいあげあげ

351 :デフォルトの名無しさん:2010/09/26(日) 18:02:36
というわけでhageましたスマソ

352 :デフォルトの名無しさん:2010/09/26(日) 18:09:51
並列なんてほんとに問題ごとの最適化が必要になるから
ライブラリなど共通部分でできることなんて同じ作業を等分割するくらいしかない
しかも等分割で扱えるデータなんてあまりない

353 :349:2010/09/26(日) 18:14:05
SendMessageをPostMessageにしたら成功しました
お手数かけました

354 :デフォルトの名無しさん:2010/09/26(日) 18:38:23
よく、クリティカルセッションだっけ、クリティカルセクションだっけ??
と、ごっちゃになる。あんまり使ったこと無いけどね。

355 :デフォルトの名無しさん:2010/09/26(日) 18:43:34
>>349
ポインタじゃない奴の変数をpにするのはいただけないな

356 :デフォルトの名無しさん:2010/09/26(日) 18:49:59
>>355
ハンドルてポインタだとおもってました。どもです。

357 :デフォルトの名無しさん:2010/09/26(日) 19:01:29
ウィンドウを識別するための「何か」でしかないよ。
ポインタかもしれないしそうじゃないかもしれない。
なんだかわからないし意識してはならないそういうもの。

実際はただのテーブルのインデックスらしいが。

358 :デフォルトの名無しさん:2010/09/26(日) 19:01:57
Send/PostMessageでメッセージパッシング型っぽいスタイルの
マルチスレッドプログラムも書けるよ。

GoogleのGoみたいに、そういう書き方ができる言語を使ったほうが
コーディングの効率はいいだろうけどね。

359 :デフォルトの名無しさん:2010/09/26(日) 19:11:42
>>356
昔はポインタだったから許容範囲でしょう。

360 :デフォルトの名無しさん:2010/09/26(日) 19:27:21
むしろ昔こそUINTのtypedefだろ。
今のところ、Cではポインタのtypedefで定義している。

C++でnullptrキーワードが導入されるけど、
ハンドルに対しても使うべきか自分の中では審議中。

361 :デフォルトの名無しさん:2010/09/26(日) 20:03:26
C++どんどん壊れていくなw
型チェック機構厳しすぎだろ

362 :デフォルトの名無しさん:2010/09/26(日) 20:37:51
>>361
特にそうでもない。というかどこを緩められるんだ?

363 :デフォルトの名無しさん:2010/09/26(日) 23:55:46
>>349
SHChangeNotify

364 :デフォルトの名無しさん:2010/09/27(月) 08:23:04
>>351
勝手にhageんな

365 :デフォルトの名無しさん:2010/09/27(月) 11:46:47
>>363
シェル操作のAPIなんて便利なものがあったんですね。全部レジストリやメッセージ経由だと思ってました。サンクス

366 :デフォルトの名無しさん:2010/09/27(月) 11:53:56
なあに、わしはちょっと背中を押してあげたにすぎんよ

367 :デフォルトの名無しさん:2010/09/27(月) 12:03:57
かっけえ

368 :デフォルトの名無しさん:2010/09/27(月) 16:14:43
ペペロンチーノをしらんというのか

369 :デフォルトの名無しさん:2010/09/27(月) 16:14:56
だが本物の回答者が書いてるとは限らない

370 :デフォルトの名無しさん:2010/09/27(月) 20:19:28
かく言う>>369も所詮は偽者……API……

371 :デフォルトの名無しさん:2010/09/27(月) 21:57:21
hage

372 :デフォルトの名無しさん:2010/09/27(月) 21:58:04
sage

373 :デフォルトの名無しさん:2010/09/27(月) 22:06:32
一日二回うんこが出るのは異常ですか?

374 :デフォルトの名無しさん:2010/09/28(火) 01:02:39
1回で出し切れ

375 :デフォルトの名無しさん:2010/09/28(火) 01:17:33
ただの食い過ぎ

376 :デフォルトの名無しさん:2010/09/28(火) 09:00:41
>>374
いいからAPI出せや

377 :デフォルトの名無しさん:2010/09/28(火) 12:04:27
vista 以降で、プログラム内で自分アプリが管理者モードで起動しているか、ログインユーザとして起動しているかを
知るAPIはありますか? 無ければ簡単に知るすべはないでしょうか?

378 :デフォルトの名無しさん:2010/09/28(火) 12:16:57
>>377
エレベーターがなんちゃら

379 :デフォルトの名無しさん:2010/09/28(火) 13:00:40
>>378
知らないならレスしないでください。ウザいだけです。

380 :デフォルトの名無しさん:2010/09/28(火) 13:24:19
>>377
getuser

381 :デフォルトの名無しさん:2010/09/28(火) 13:34:53
http://blogs.msdn.com/b/tsmatsuz/archive/2007/01/25/windows-vista-uac-part-2.aspx

382 :デフォルトの名無しさん:2010/09/28(火) 17:55:58
もっとAPIスレを盛り上げようぜ!
うおおおおおお!!!!

383 :デフォルトの名無しさん:2010/09/28(火) 18:32:12
煽ってもなにも出て来ませんよ

384 :デフォルトの名無しさん:2010/09/28(火) 18:37:35
煽ってもなにも出て来ませんよ。

385 :デフォルトの名無しさん:2010/09/28(火) 19:03:25
中にだれもいませんよ?

386 :デフォルトの名無しさん:2010/09/28(火) 19:12:17
中にだれもいませんよ?

387 :デフォルトの名無しさん:2010/09/28(火) 19:13:27
中にだれもいませんよ?

388 :デフォルトの名無しさん:2010/09/28(火) 19:14:45
うぃん32あぴ

389 :デフォルトの名無しさん:2010/09/28(火) 19:20:44
中にだれもいませんよ?

390 :デフォルトの名無しさん:2010/09/28(火) 19:24:01
Mac32APIもあるのかな

391 :デフォルトの名無しさん:2010/09/28(火) 19:25:35
Mac32APIもあるのかな

392 :デフォルトの名無しさん:2010/09/28(火) 19:26:05
大事なことなので2度言いました。

393 :デフォルトの名無しさん:2010/09/28(火) 19:30:13
と、見せかけて

394 :デフォルトの名無しさん:2010/09/28(火) 19:37:33
中にだれもいませんよ?

395 :デフォルトの名無しさん:2010/09/28(火) 19:40:15
Lazyとは中々高度な術を。。。

396 :デフォルトの名無しさん:2010/09/28(火) 19:42:24
ねちょねちょするよ

397 :デフォルトの名無しさん:2010/09/28(火) 19:51:23
定期あげ

398 :デフォルトの名無しさん:2010/09/28(火) 20:53:02
アク禁解除されたとたんこれだ
2chはもう死んでいる

399 :デフォルトの名無しさん:2010/09/28(火) 20:55:16
じゃあ、質問してくれ

400 :デフォルトの名無しさん:2010/09/28(火) 21:13:51
ところで削除したアプリのレジストリーの設定項目っていつになったら消えるんですか?

401 :デフォルトの名無しさん:2010/09/28(火) 21:17:10
巣に帰れ

402 :デフォルトの名無しさん:2010/09/28(火) 21:21:43
WIN32_FIND_DATAの64bit版ってないんですか?

403 :デフォルトの名無しさん:2010/09/28(火) 21:24:47
何が64bitなんだよ

404 :デフォルトの名無しさん:2010/09/28(火) 21:25:39
>>398
つ鏡

405 :デフォルトの名無しさん:2010/09/28(火) 21:27:21
まぁ誰かを見下さないと生きていけないのですよね

406 :デフォルトの名無しさん:2010/09/28(火) 21:35:19
一番糞なAPIってなんですか?

407 :デフォルトの名無しさん:2010/09/29(水) 01:36:54
CopyRect

408 :デフォルトの名無しさん:2010/09/29(水) 01:45:50
SetPixel

409 :デフォルトの名無しさん:2010/09/29(水) 04:40:59
>>407
それ、何するために存在するんだろ

410 :デフォルトの名無しさん:2010/09/29(水) 07:08:27
KillYou

411 :デフォルトの名無しさん:2010/09/29(水) 07:28:26
>>409
128ビット分もデータを転送するのが大変だった時代の名残。

412 :デフォルトの名無しさん:2010/09/29(水) 09:22:35
CopyRectってそんなに糞なのか
今度使ってみようかな

413 :デフォルトの名無しさん:2010/09/29(水) 18:18:41
中にだれもいませんよ?

414 :デフォルトの名無しさん:2010/09/29(水) 18:48:38
略して中だれ

415 :デフォルトの名無しさん:2010/09/29(水) 19:37:38
test

416 :デフォルトの名無しさん:2010/09/29(水) 19:38:19
略中

417 :デフォルトの名無しさん:2010/09/29(水) 21:40:06
構造体のコピーが出来ない言語(ANSI以前のCとかPascalとか)用。

418 :デフォルトの名無しさん:2010/09/29(水) 23:01:03
構造体化石

419 :デフォルトの名無しさん:2010/09/29(水) 23:19:09
誰だ今構造体でエッチな事考えた奴は!

420 :デフォルトの名無しさん:2010/09/29(水) 23:53:50
ちょっと発想が良くわからん

421 :デフォルトの名無しさん:2010/09/29(水) 23:56:09
>>420でした^^

422 :デフォルトの名無しさん:2010/09/29(水) 23:58:16
ちょっと発想が良くわからん(キリッ

423 :デフォルトの名無しさん:2010/09/30(木) 00:00:19
>>420みたいな奴ってリアルでも屑なんだろうなぁ

424 :デフォルトの名無しさん:2010/09/30(木) 00:02:24
うちの会社にもいるわ

425 :デフォルトの名無しさん:2010/09/30(木) 00:02:49
マジでどういう意味だよ
unionなら何かエロイのは分かる

426 :デフォルトの名無しさん:2010/09/30(木) 00:03:54


427 :デフォルトの名無しさん:2010/09/30(木) 00:04:27
>>423=>>419

428 :デフォルトの名無しさん:2010/09/30(木) 00:04:58
うちの会社にもいるわ(27歳 無職)

429 :デフォルトの名無しさん:2010/09/30(木) 00:05:32
>>427
代入してどうすんだ

430 :デフォルトの名無しさん:2010/09/30(木) 00:06:06
unionえろくないよ

431 :デフォルトの名無しさん:2010/09/30(木) 00:07:07
>>430の*に突っ込みたい

432 :デフォルトの名無しさん:2010/09/30(木) 00:08:51
API「おい俺の話をしろ」

433 :デフォルトの名無しさん:2010/09/30(木) 00:10:17
CopyRect「」

434 :デフォルトの名無しさん:2010/09/30(木) 00:13:25
>>432
お前、いたんだ。

435 :デフォルトの名無しさん:2010/09/30(木) 00:13:41
CopyRectより糞なAPIがあるはず
このままじゃCopyRectがかわいそう

436 :デフォルトの名無しさん:2010/09/30(木) 00:16:55
ご近所が布団たたきを始めると
あわてて洗濯物を捕り込む奴挙手。

437 :デフォルトの名無しさん:2010/09/30(木) 03:23:54
おい>>436、涙拭けよ

438 :デフォルトの名無しさん:2010/09/30(木) 03:35:26
2番煎じ

439 :デフォルトの名無しさん:2010/09/30(木) 04:05:04
>>419
>>421
>>422
>>423
>>424
>>426
>>428
>>430
>>431
>>432
>>433
>>434
>>436
お前ファビョりすぎ

440 :デフォルトの名無しさん:2010/09/30(木) 09:16:06
なんだこいつ

441 :デフォルトの名無しさん:2010/09/30(木) 09:35:33
なんでも自演乙する人ってまだいたんだ

442 :デフォルトの名無しさん:2010/09/30(木) 10:02:13
構造体のコピーなんてできるの忘れてたわ

443 :デフォルトの名無しさん:2010/09/30(木) 10:17:26
CopyRectって使ったことないんだが、memcpyみたいなもん?

444 :デフォルトの名無しさん:2010/09/30(木) 10:39:17
構造体のコピーができなかった頃からあるAPIだしなw

445 :デフォルトの名無しさん:2010/09/30(木) 10:47:19
MakeSureDirectoryPathExistsなんかはTCHARになってない時点で糞

446 :デフォルトの名無しさん:2010/09/30(木) 10:56:28
CommandLineToArgvWも何故かA版がないな

447 :デフォルトの名無しさん:2010/09/30(木) 11:20:57
CommandLineToArgvAの代わりにMSVCRT.DLL:__getmainargsを使っている
MakeSureDirectoryPathExistsWの代わりはShCreateDirectoryExを使えと書いてあるな

448 :デフォルトの名無しさん:2010/09/30(木) 12:59:30
FreeLibraryAndExitThreadってなんの意味があるんだよwww
そう考えていた時期が俺にもありました。

449 :デフォルトの名無しさん:2010/09/30(木) 14:17:29
いみあったの?

450 :デフォルトの名無しさん:2010/09/30(木) 14:30:44
解説
FreeLibraryAndExitThread 関数は、次のように実装されています。

FreeLibrary(hModule);
ExitThread(dwExitCode);

わからん・・・

451 :デフォルトの名無しさん:2010/09/30(木) 14:57:12
自爆dllを作る場合にとても重要
DLLにスレッドプロシージャがあった場合
FreeLibraryから帰った瞬間に落ちる

452 :デフォルトの名無しさん:2010/09/30(木) 18:59:17
FreeLibraryAndExitThreadならFreeLibraryから戻ってくる場所はkernel32.dllの中なので安全にExitThreadを呼べる

453 :デフォルトの名無しさん:2010/09/30(木) 19:08:39
>>446
int wmain(int, wchar_t**) や __wargvが使えなかった頃のためのAPIだからな

454 :デフォルトの名無しさん:2010/09/30(木) 19:17:22
なるほど。
自分で自分をアンロードしたいと思ったことがなかったからわからなかった。
勝手にExitThreadするとCRTのクリーンアップ処理が走らなさそうだけど
(実質)CRT使用禁止でCreateThreadとかするの?

455 :デフォルトの名無しさん:2010/09/30(木) 19:36:29
CRTは動的リンクスルノデス

456 :デフォルトの名無しさん:2010/09/30(木) 22:26:22
糞なAPIというより、全体的にネーミングが気に入らない

457 :デフォルトの名無しさん:2010/09/30(木) 22:28:54
そうですか

458 :デフォルトの名無しさん:2010/09/30(木) 22:30:22
そうですよ

459 :デフォルトの名無しさん:2010/09/30(木) 22:36:58
>>456がphpのリファレンス見たら発狂するな

460 :デフォルトの名無しさん:2010/09/30(木) 22:39:13
PHPってカオスなのか?

461 :デフォルトの名無しさん:2010/09/30(木) 22:45:28
visual studioのC++/CLIのように
画面に部品を貼り付けて、ソースを生成してくれるような
ヴィジュアルエディタっていうものは、Win32APIではございませんか?

462 :デフォルトの名無しさん:2010/09/30(木) 22:51:11
>>461
っMFC

って言うか製品版のVCってできないっけ?

463 :デフォルトの名無しさん:2010/09/30(木) 22:52:42
Express以外出来るよ

464 :デフォルトの名無しさん:2010/09/30(木) 22:54:31
DAYONE~

465 :デフォルトの名無しさん:2010/09/30(木) 22:58:02
MFCは自作できるよ

466 :デフォルトの名無しさん:2010/09/30(木) 23:01:22
>>460
明らかにメクラが関数命名してる
http://www.php.net/manual/ja/ref.strings.php

467 :デフォルトの名無しさん:2010/09/30(木) 23:04:01
MSの開発力に喧嘩を売った>>465であった。

468 :デフォルトの名無しさん:2010/09/30(木) 23:17:45
>>462-465
ありがとうございます
製品版ならできるのですね。。。

MFCとWin32APIの違いをよくわかっておらず
とぼけたことを利いてしまっておりました。すみません

469 :デフォルトの名無しさん:2010/09/30(木) 23:29:50
MFCはMS謹製のWIN32APIのラッパーライブラリ郡だ。C++できないと厳しい。

でもC++./CLIできるんだから大丈夫だよね。

470 :デフォルトの名無しさん:2010/09/30(木) 23:37:56
でもみんなMFCくらい自作してんじゃないの

471 :デフォルトの名無しさん:2010/10/01(金) 01:01:06
MFCとかWTLがあるのに、わざわざ別のものを一から用意するのは時間の無駄。

472 :デフォルトの名無しさん:2010/10/01(金) 01:12:35
わざわざ一から覚えるのはもっと時間の無駄。

473 :デフォルトの名無しさん:2010/10/01(金) 05:04:20
2chが一番無駄

474 :デフォルトの名無しさん:2010/10/01(金) 06:07:33
スレ伸びてるときは読まなくて良いの法則

475 :デフォルトの名無しさん:2010/10/01(金) 07:33:32
>>474←こいつ自らが反証しますた

476 :デフォルトの名無しさん:2010/10/01(金) 10:16:35
DateTime_GetSystemtimeで日付対応の奴ない?

477 :デフォルトの名無しさん:2010/10/01(金) 11:22:14
結局コントロールから文字列取得して区切り記号毎に文区切ってバッファに挿入ノシ

478 :デフォルトの名無しさん:2010/10/01(金) 11:35:39
ぎょえぇぇ!!!!!

479 :デフォルトの名無しさん:2010/10/01(金) 11:40:50
>>476
#define DateTime_GetSystemtime(hdp, pst) (DWORD)SNDMSG(hdp, DTM_GETSYSTEMTIME, 0, (LPARAM)(pst))
#define SNDMSG ::SendMessage
http://msdn.microsoft.com/en-us/library/bb761769(VS.85).aspx
wParam Must be zero.
lParam A pointer to a SYSTEMTIME structure.

typedef struct _SYSTEMTIME {
 WORD wYear;
 WORD wMonth;
 WORD wDayOfWeek;
 WORD wDay;
 WORD wHour;
 WORD wMinute;
 WORD wSecond;
 WORD wMilliseconds;
} SYSTEMTIME, *PSYSTEMTIME, *LPSYSTEMTIME;

なので普通に対応してるよ。

内部的にというのではなく表示させたいという事であれば
DateTime_SetFormatのマクロを使って年月日時分秒のフォーマットを指定してやりゃいいよ

480 :デフォルトの名無しさん:2010/10/01(金) 11:48:46
>>479,478
後になっちゃうけど研究してみる。忙しい時間にありがと。

481 :デフォルトの名無しさん:2010/10/01(金) 12:00:33
どういうことだよwww

482 :デフォルトの名無しさん:2010/10/01(金) 12:07:40
DateTime_GetSystemtimeいろいろやってみたけどやっぱday,month,yearは所得してくれないみたい。

483 :デフォルトの名無しさん:2010/10/01(金) 13:10:49
正確な時間がほしいならネットから持ってくるしかないな

484 :デフォルトの名無しさん:2010/10/01(金) 13:24:30
精確な時間は、空から降って来るし、原子時計も中古なら100万くらいで買える。
ネットからもってくる以外にも方法は有る。

485 :デフォルトの名無しさん:2010/10/01(金) 13:29:19
じゃあソースください

486 :479:2010/10/01(金) 14:02:08
>>482
普通に拾えるけどなぁ

case WM_INITDIALOG:
  SendMessage(GetDlgItem(hwnd,IDC_DATETIMEPICKER1),DTM_SETFORMAT,NULL,(LPARAM)"yyy/MM/dd HH:mm:ss");
  return FALSE;
case WM_COMMAND:
  switch(LOWORD(wp)){
  case IDC_BUTTON_SET
    {
      SYSTEMTIME st;
      GetLocalTime(&st);
      DateTime_SetSystemtime(GetDlgItem(hwnd,IDC_DATETIMEPICKER1),GDT_VALID,&st);
    }
    return FALSE;
  case IDC_BUTTON_GET
    {
      SYSTEMTIME st;
      std::stringstream ss;
      DateTime_GetSystemtime(GetDlgItem(hwnd,IDC_DATETIMEPICKER1),&st);
      ss << "wYear : " << st.wYear << "\n" <<
          "wMonth : " << st.wMonth << "\n" <<
          "wDay : " << st.wDay << "\n" <<
          "wHour : " << st.wHour << "\n" <<
          "wMinute : " << st.wMinute << "\n" <<
          "wSecond : " << st.wSecond << "\n" <<
          "wMilliseconds : " << st.wMilliseconds << std::endl;
      MessageBox(NULL,ss.str().c_str(),"",MB_OK);
    }
    return FALSE;

487 :デフォルトの名無しさん:2010/10/01(金) 14:16:55
ご苦労さんっ

488 :デフォルトの名無しさん:2010/10/01(金) 14:50:28
tm構造体使ってた\(^o^)/

489 :デフォルトの名無しさん:2010/10/01(金) 15:01:56
時間とは何か

490 :デフォルトの名無しさん:2010/10/01(金) 15:18:04
深いですね

491 :デフォルトの名無しさん:2010/10/01(金) 15:41:29
時と時の間だから時間

492 :デフォルトの名無しさん:2010/10/01(金) 16:35:24
俺も昔は時の間で修行したものだ

493 :デフォルトの名無しさん:2010/10/01(金) 19:32:01
なんだっけ、名前が出てこない……

494 :デフォルトの名無しさん:2010/10/01(金) 19:34:17
精神と時の間?

495 :デフォルトの名無しさん:2010/10/01(金) 19:38:20
あぁドラゴソボソルーか

496 :デフォルトの名無しさん:2010/10/01(金) 19:40:27


      CopyRect (C) 2010


497 :デフォルトの名無しさん:2010/10/01(金) 19:43:35
あんさんおもろすぎるでガハハ

498 :デフォルトの名無しさん:2010/10/01(金) 23:47:49
RegGetValueA() にRRF_RT_REG_EXPAND_SZ を単体で指定すると失敗するんだけど何でだろう?

#pragma comment(lib, "Advapi32.lib")
#include <windows.h>
#include <stdio.h>
int main() {
    char buf[MAX_PATH] = "";
    DWORD size = sizeof(buf);
    DWORD type = 0;
    LONG errcode = RegGetValueA(
        HKEY_CURRENT_USER,
        "Environment",
        "TEMP",
        RRF_RT_REG_EXPAND_SZ,
        &type,
        (PVOID) buf,
        &size);
    printf("code: %ld\n", errcode);  // ERROR_INVALID_PARAMETER
    printf("type: %d\n", type);
    printf("size: %d\n", size);
    printf("value: %s\n", buf);
    return 0;
}

RRF_RT_REG_EXPAND_SZ | RRF_NOEXPAND にするとなぜか成功するんだが。


499 :デフォルトの名無しさん:2010/10/02(土) 00:01:36
ボタンをサブクラス化してそのウインドウプロシージャの中でボタンが押下されたことを
知るのってどうすればいいの?
単純に考えると
・ボタンにフォーカスが当たってる、かつボタンのリージョン内にカーソルがある場合のWM_LBUTTONUP
・スペースキー押下
で判断すればいいと思うんだけど正しい取り方とかありますか?

あと、別の話だけどボタン上でマウスダウンしてそのまま親ウインドウまで持ってって
マウスアップすると親Windowクリックしても親ウインドウにフォーカスが行かない気がする
バグかなこれ・・

500 :デフォルトの名無しさん:2010/10/02(土) 00:04:38
自己レスすまん
バグじゃなかったボタンからフォーカス外れないだけだった

501 :デフォルトの名無しさん:2010/10/02(土) 00:33:20
人間は人と人の間だから人間だと言うのか

502 :デフォルトの名無しさん:2010/10/02(土) 02:11:38
>>498
winreg.hに解答が載っていた。
ドキュメントの方が説明不足っぽいなあ。

503 :デフォルトの名無しさん:2010/10/02(土) 02:34:30
>>502
あー、本当だ。これはひどいな。

- RRF_RT_REG_EXPAND_SZ は RRF_NOEXPAND と一緒に指定しなければならない
- RRF_RT_REG_SZ は環境変数の展開までやってくれる

とヘッダーに書いてあった。
ありがとうございました。

504 :デフォルトの名無しさん:2010/10/02(土) 03:40:37
HeapAlloc で確保したメモリも、OS の気分でページアウトされるよね?
ページアウトされないメモリを確保したい場合、どの API 呼べばよい?
デバイスドライバしかできないのかなぁ。。
教えてエロい人!

505 :デフォルトの名無しさん:2010/10/02(土) 04:43:35
APIの宣言というより
セグメント指定して確保じゃなかったかな

506 :デフォルトの名無しさん:2010/10/02(土) 07:57:22
>>504
AWE(Address Windowing Extensions)関連のAPIを使えば良かった筈。
グループポリシーで「メモリ内のページのロック」が許可されているユーザーしか使えないけど。

507 :デフォルトの名無しさん:2010/10/02(土) 10:32:57
VirtualLockが説明文読む限りできそうだけど

508 :デフォルトの名無しさん:2010/10/02(土) 15:12:25
UN*Xで言うsuidみたいな誰が実行しても特権つきで実行できる仕掛けはありますか?

目的:管理者がProgram Files以下にインストールしたアプリを一般ユーザが使用する時に
確実にその時点での最新版にするアップデートプログラムを作りたい。

検討した手段:
特権必須 - ソフト自体は権限いらないのにアップデートのためだけの管理者縛りは入れたくない
サービス化 - 常駐は避けたい
BITS - IBackgroundCopyJob2::SetNotifyCmdLineに期待してみたが、
ユーザ権限で起動されるらしい(当たり前だけど)

509 :デフォルトの名無しさん:2010/10/02(土) 15:20:18
ShellExecuteでこのスレ検索してみ

510 :デフォルトの名無しさん:2010/10/02(土) 15:25:13
Windowsに不可能は無い!

511 :504:2010/10/02(土) 15:47:35
もうエロい人達かっこよすぎ

>>505
セグメントの種類に関わらずページアウトの対象っぽい・・・

>>506
AWE把握!調査してみまつ
ただ制限があると不特定多数を利用者に位置づけられないですねぇ。

>>507
VirtualLock でイケル!と思ったんだけど、
プロセスごとページアウトされると全部イッチャウっぽい。

512 :デフォルトの名無しさん:2010/10/02(土) 15:55:19
>508
タスクスケジューラ

513 :デフォルトの名無しさん:2010/10/02(土) 16:30:46
>>509
runasだと管理者のIDとパスワードが必須になるので要求を満たせません。
あと最新であることを保証するために
ショートカット→アップデートプログラム→アプリ本体という順番で起動します。

>>512
タスクスケジューラで特定アプリを起動する前という条件指定できますか?

514 :デフォルトの名無しさん:2010/10/02(土) 17:05:20
とりあえず初心者はここ見て勉強するように
天才ハッカーによるプログマリングのバイブルだ
http://studiokingyo.fc2web.com/

515 :デフォルトの名無しさん:2010/10/02(土) 17:08:48
>>514
すげー!!!
高度な内容のレベルが高いために俺の技術が高みに向上が著しいぞ
初心者だけでなく、プロもここみてより一掃の勉強を実行するべk

516 :デフォルトの名無しさん:2010/10/02(土) 17:10:53
>>514
このレスのおかげで>>513までのレスがまさに残念さが明白に判明してしまうな

517 :デフォルトの名無しさん:2010/10/02(土) 17:11:33
一瞬見て3秒で戻るボタンを押した。そんなページだな。

518 :デフォルトの名無しさん:2010/10/02(土) 17:12:25
>>514
まぁ初心者なら知らないのも無理はないな社会の上で活躍してるプロプログラマーならjkだな

519 :デフォルトの名無しさん:2010/10/02(土) 17:14:01
>>517
確かにプログラミンと関わりがない人間には理解できないだろうな内容がすごく高度的で

520 :デフォルトの名無しさん:2010/10/02(土) 17:14:29
典型的な誰にも勧められないページ

521 :デフォルトの名無しさん:2010/10/02(土) 17:19:10
そんなことはないな

522 :デフォルトの名無しさん:2010/10/02(土) 17:20:57
技術情報を独占したいんだろう有名なのを知らないのだろうか

523 :デフォルトの名無しさん:2010/10/02(土) 17:23:09
>>514
レベル高いなーまだ発見されてないAPIまで載ってる

524 :デフォルトの名無しさん:2010/10/02(土) 17:25:59
なんでそんなに必死なんだよ。その糞サイトにウィルスでも仕込んだの?

525 :デフォルトの名無しさん:2010/10/02(土) 17:26:24
神だな

526 :デフォルトの名無しさん:2010/10/02(土) 17:27:24
>>524が見えない

527 :デフォルトの名無しさん:2010/10/02(土) 17:35:30
あれだけの高度情報量をどうやって・・・・

528 :デフォルトの名無しさん:2010/10/02(土) 17:50:45
> まだ発見されてないAPI

ここ笑うところ?

529 :デフォルトの名無しさん:2010/10/02(土) 18:07:52
間抜けな発言は残しといた方が区別しやすいよ。

どうでもいいけどsuidなんて過去の遺物だろ。
M$がサービスでも用意してくれてなければ無理に決まってる。
用意されてたとしても任意のプログラムでOKとかはないだろうから署名とか要るんでない?

530 :デフォルトの名無しさん:2010/10/02(土) 18:22:58
>>529は無能

531 :あぼーん:あぼーん
あぼーん

532 :デフォルトの名無しさん:2010/10/02(土) 18:44:22
エディタでたらめにキーボードを叩いてコンパイルしたところ、
未知のAPIが発見された

533 :あぼーん:あぼーん
あぼーん

534 :デフォルトの名無しさん:2010/10/02(土) 18:48:44
>>532
お前は無限の猿定理の猿か

535 :デフォルトの名無しさん:2010/10/02(土) 18:51:42
dumpbin /exports

536 :デフォルトの名無しさん:2010/10/02(土) 19:25:46
>>534
妙に説明的なのが残念。35点

537 :デフォルトの名無しさん:2010/10/02(土) 22:56:10
定期あげ

538 :あぼーん:あぼーん
あぼーん

539 :デフォルトの名無しさん:2010/10/02(土) 23:21:41
こんなスレあったのか。

540 :デフォルトの名無しさん:2010/10/02(土) 23:41:17
あったのよ

541 :デフォルトの名無しさん:2010/10/02(土) 23:52:24
Win32APIはMac36AIPとどう違うの

542 :デフォルトの名無しさん:2010/10/03(日) 00:25:05
基本的には同じ
ただし内部処理ではOSごとに異なった実装になっている

543 :デフォルトの名無しさん:2010/10/03(日) 02:38:32
>>541
釣りかとオモタ

544 :あぼーん:あぼーん
あぼーん

545 :あぼーん:あぼーん
あぼーん

546 :あぼーん:あぼーん
あぼーん

547 :デフォルトの名無しさん:2010/10/03(日) 06:19:06
forkはできますか?

548 :デフォルトの名無しさん:2010/10/03(日) 06:48:38
CreateProcessでおk

549 :デフォルトの名無しさん:2010/10/03(日) 06:58:19
全然おkじゃないんですが・・・

550 :デフォルトの名無しさん:2010/10/03(日) 07:07:31
なにがおkじゃないの?

551 :デフォルトの名無しさん:2010/10/03(日) 08:43:39
os違いを理解してない馬鹿、もしくは釣りはほっとけ

552 :デフォルトの名無しさん:2010/10/03(日) 08:47:13
fork & exec* ではなくて、fork だけをしたいって事じゃね?

553 :デフォルトの名無しさん:2010/10/03(日) 08:56:31
>>551

554 :あぼーん:あぼーん
あぼーん

555 :あぼーん:あぼーん
あぼーん

556 :デフォルトの名無しさん:2010/10/03(日) 16:54:27
タブレット関係に詳しい人、お願いします。

自作アプリへのフリックの影響を無効にしたいのです。

コンパネのペンとタッチのフリックを有効にしても、
IEやメモ帳はその影響を受けていないようです。

大元のチェックを外せばもちろん目的は達せられますが
そうではなく、IEやメモ帳のようにフリックの影響を受け
ないようにするにはどうしたらいいでしょうか?

タブレット関係のメッセージを適切に処理すればいいのかも
しれませんが、情報が少なくて困っております。

それともドライバの設定のどこかに、影響させないアプリを
登録とかするんでしょうか?

よろしくお願いします。



557 :デフォルトの名無しさん:2010/10/03(日) 18:17:45
ここまでOS情報なし

558 :デフォルトの名無しさん:2010/10/03(日) 18:24:16
大元のチェックを外せ

559 :デフォルトの名無しさん:2010/10/03(日) 18:46:21
OS情報(笑)

560 :デフォルトの名無しさん:2010/10/03(日) 18:53:56
>>556
http://msdn.microsoft.com/en-us/library/ms701172(VS.85).aspx

561 :あぼーん:あぼーん
あぼーん

562 :デフォルトの名無しさん:2010/10/03(日) 19:56:48
>>513
サービスにするしかないと思う。

サービスだからと言って常駐する必要はない。
アップデート確認が終わったらとっとと終了すればいい。
確かGoogleのアップデータがそういう挙動だったはず。

563 :デフォルトの名無しさん:2010/10/03(日) 20:23:25
一般ユーザでサービス起動できたっけ?

564 :あぼーん:あぼーん
あぼーん

565 :デフォルトの名無しさん:2010/10/03(日) 20:49:53
お前、それ面白いとでも思ってんのか?
あまりしつこくすると、荒らしとして報告するよ。

566 :あぼーん:あぼーん
あぼーん

567 :あぼーん:あぼーん
あぼーん

568 :デフォルトの名無しさん:2010/10/03(日) 20:57:11
だめだコリア

569 :デフォルトの名無しさん:2010/10/03(日) 21:01:03
>>565>>568
とりあえずお前ら空気嫁

570 :デフォルトの名無しさん:2010/10/03(日) 21:03:39
なるほど、いつものキチガイか。

571 :デフォルトの名無しさん:2010/10/03(日) 21:23:47
>>563
すまん、元の質問をよく読んでいなかった。
Googleのはスタートアップ: 自動 (遅延開始)だから、
アプリ起動時のアップデートではないんだろうな。

572 :デフォルトの名無しさん:2010/10/03(日) 21:27:59
ネトゲのアップデータとかが近い物なんだろうけど
Program Filesにインストールするなとか平然と書いてあったり
常時昇格を要求したりと行儀最悪なのしか見たことないなー

573 :デフォルトの名無しさん:2010/10/03(日) 21:36:06
Program Filesにインストールするとなんかまずいの?

574 :デフォルトの名無しさん:2010/10/03(日) 21:41:02
>>573
最近のウインドウズはウイルス対策やその他の事情で、
プログラムファイルずに書き込むのにはアドミンとかの特権がいるの。

575 :デフォルトの名無しさん:2010/10/03(日) 21:45:20
>>574
なるほど ネトゲってその辺適当なのか

576 :デフォルトの名無しさん:2010/10/03(日) 21:49:03
Program Files書き込むのに特権が必要なのはNT系は最初からだろ。
特権がいるのはC:\とかでも同じ話だし。

問題になるのは6.0以降のバーチャルストアの方。

577 :デフォルトの名無しさん:2010/10/03(日) 21:50:01
ルート直下の制限はXPから

578 :デフォルトの名無しさん:2010/10/03(日) 22:15:58
ネトゲってみんな「基本無料」だよな

579 :デフォルトの名無しさん:2010/10/03(日) 22:58:25
せやね

580 :デフォルトの名無しさん:2010/10/03(日) 23:03:56
「基本」ね。
でも、気を抜いてるとあっという間に尻の毛まで抜かれる。

581 :デフォルトの名無しさん:2010/10/04(月) 00:06:25
尻毛怖くて剃れないから抜いて欲しい

582 :デフォルトの名無しさん:2010/10/04(月) 00:17:47
シリアル通信でBREAK状態になった事はEV_BREAKで取れるけど、
BREAK状態が解除された事はどうやって検出すれば良いでしょうか?

583 :556:2010/10/04(月) 00:27:32
>>560
どーもでした

584 :デフォルトの名無しさん:2010/10/04(月) 02:58:58
>>508
最新版かどうかを確認するだけなら管理者権限いらないんだから、
アップデートが必要なときだけ管理者権限を要求するようにしたら?
Program Files内のファイルを更新するのに管理者権限が必要なのは自然だと思う。

585 :デフォルトの名無しさん:2010/10/04(月) 05:32:43
>>508
ClickOnce使えば10秒で解決する問題だな

586 :デフォルトの名無しさん:2010/10/04(月) 07:41:05
一般ユーザーでもインストール済みサービスの起動はできるよ。
例: Secondary Logonサービス
サービスのインストールはできないけどそれはインストーラがやればいいでしょ。
suidバイナリのインストールだって一般ユーザーはできないんだし

587 :デフォルトの名無しさん:2010/10/04(月) 09:09:09
>>582
EV_BREAK状態じゃなくなったらとか

588 :デフォルトの名無しさん:2010/10/04(月) 09:45:32
>>587
EV_BREAKはBREAK状態になると飛んでくるイベントなのですが。
それの状態はどのように取得するのですか?

589 :デフォルトの名無しさん:2010/10/04(月) 11:53:40
>>582
BREAK信号ってのは、要は一定期間シリアル通信でゼロを送り続けた状態(スタート/ストップビットもない)
だから解除ってのはないけど
敢えて言うなら、何らかの通常の通信が送られてきた場合がそれに当たるんじゃないかと

590 :デフォルトの名無しさん:2010/10/04(月) 12:07:21
>>589
送信側はSetCommBreakでブレーク状態(信号線を0に落とす)を設定して、ClearCommBreakで
解除できますよね。

やはり、タイムアウト設定して、読んでみてエラー(CE_BREAK)で確認するしかないのでしょうか。
この方法はフレームエラーとか拾っちゃっうと分離が面倒そうだなあ。

591 :デフォルトの名無しさん:2010/10/04(月) 12:42:36
>>586
Secondary Loginって自動起動じゃね?
停止した状態でrunasしてみたら失敗したし

592 :デフォルトの名無しさん:2010/10/04(月) 17:49:24
定期あげ

593 :デフォルトの名無しさん:2010/10/04(月) 18:20:22
>>588
BREAK信号の処理はやったことないからわからないけど
他の人も書いてるEV_BREAKの検出だけやって、通常の待ち受けしてればいいんじゃないの
MSDNの中に、やり方が書いてありそうだけど

594 :デフォルトの名無しさん:2010/10/04(月) 22:39:13
>>591
んー? うちのSecondary Logonは停止してたしrunasで勝手に実行中になったけどなあ。

595 :デフォルトの名無しさん:2010/10/04(月) 22:59:32
一般ユーザでか?
Administratorsのユーザなら勝手にサービス起動したがUsersだとエラー吐いたぞ

596 :デフォルトの名無しさん:2010/10/04(月) 23:08:52
ではやはりあげておくべきですね。

597 :デフォルトの名無しさん:2010/10/04(月) 23:25:16
いやUsersだけど
UAC有効にしてるせい?

598 :デフォルトの名無しさん:2010/10/04(月) 23:26:47
サービスクラスのものをホイホイオンオフされたそら大変だわな。

599 :デフォルトの名無しさん:2010/10/05(火) 05:33:26
Windowsはなんでもほいほい

600 :デフォルトの名無しさん:2010/10/05(火) 09:15:23
下がりすぎ

601 :うざお:2010/10/05(火) 09:42:13
あの
みなさんは、プログラム書くとき、毎回
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpCmd, int nShow)
こういうのを、手打ちしてマウスか?
それとも、どこかメモ帳とかにコピペして、使ってますか?
どうやって管理していますか?

602 :デフォルトの名無しさん:2010/10/05(火) 10:29:55
それくらいはさすがにもう覚えたから暗唱できるので何も管理してない

603 :うざお:2010/10/05(火) 10:35:00
>>602さん
覚えてないのは、どうしてますか?僕も、このくらいなら、覚えましたが、
ウインドクラスの登録、とか、覚えていないのが、多いです

604 :デフォルトの名無しさん:2010/10/05(火) 10:48:20
独自エントリーを使っているのでWinMainは書かない

605 :デフォルトの名無しさん:2010/10/05(火) 10:51:51
毎回MSDNでリファレンスを引いてる

606 :うざお:2010/10/05(火) 10:52:26
つまり、コピーアンドペーストで、かいてるんですね
覚えるのは、無駄な努力ですか

607 :デフォルトの名無しさん:2010/10/05(火) 11:00:36
覚えようとして覚えたんじゃなくて
使ってたら勝手に覚えるもんだろ。

608 :デフォルトの名無しさん:2010/10/05(火) 11:01:11
毎回調べるより覚える方が楽もしくは効率がいいと考えるならそうすればいい
おれは暗記とか苦手だから苦労して覚えるより毎回調べる方が労力が安いと思ってる
そのへんは人によって違うだろうから自分にとっていいと思う方を選べばいいんじゃね

609 :デフォルトの名無しさん:2010/10/05(火) 11:01:22
丸暗記しないまでもどんな引数を取るかくらいはだいたい覚えとくだろ普通

610 :うざお:2010/10/05(火) 11:06:08
そうなんですね
なんか、ウィンドウズプログラミングの本見たら、ソースがすごい量あるので、
これ全部覚えるのは、難しいと思いました。

611 :デフォルトの名無しさん:2010/10/05(火) 11:11:10
せめて辞書登録位しろよw

612 :うざお:2010/10/05(火) 11:21:53
ウィンドウズの、辞書って、突然消えたりしますよね
しかも、長い単語は、登録できない

613 :デフォルトの名無しさん:2010/10/05(火) 11:43:54
うざお?
ウザ男?

マジウゼーっス

614 :デフォルトの名無しさん:2010/10/05(火) 12:05:21
こいつの、読点の、付け方が、まじで、うざいな

615 :デフォルトの名無しさん:2010/10/05(火) 12:21:18
こいつがコーディングしたらすごい事になりそうだな

616 :デフォルトの名無しさん:2010/10/05(火) 12:32:29
Win32api で自分のプロセスのメモリー使用量を簡単に取得する方法はないでしょうか?

617 :デフォルトの名無しさん:2010/10/05(火) 12:37:21
GetProcessMemoryInfo

618 :デフォルトの名無しさん:2010/10/05(火) 13:08:28
んなわけあるか

619 :うざお:2010/10/05(火) 17:17:12
うざおです
真面目に、質問します
プログラミングで、windowsは、なれない型や構造体、引数、などが、多いですが
そういうのを、全部覚えるのが、普通ですか?
僕は、結構馬鹿なので、覚えられるか、微妙です
そういう場合、いい保存方法の知恵があったら、教えてください
環境は、xpでeclipse CDTを使ってます

620 :616:2010/10/05(火) 17:25:19
>> 617

ありがとうございます。試してみますm(_ _)m

621 :デフォルトの名無しさん:2010/10/05(火) 17:30:49
呪文を覚えるんじゃないから
カレー作るとしたら材料に何がいるか考えればいいのと同じ

622 :デフォルトの名無しさん:2010/10/05(火) 19:11:18
スレ違いかもしれないですが、
DLLプリロード攻撃について調べていて
根本的なところでわからなくなったので質問します。
>>69, >>90 あたりに情報が出てますがあまり話題にはなってないみたいで。

DLLの明示的なロードはLoadLibrary関数を使うわけで、
ここで引数に絶対パスを使わずに名前だけを指定すると
カレントディレクトリから同名の不正DLLがロードされるかも
しれないから危ないよ、ってことだと思ってます。

この場合、暗黙的なロードの場合も同様の脆弱性があると考えても
いいんでしょうか?カレントからロードするのは同じだと思うのですが。

623 :デフォルトの名無しさん:2010/10/05(火) 19:26:26
ぷりぷり〜(^ω^)

624 :デフォルトの名無しさん:2010/10/05(火) 19:41:43
>>622
LoadTimeLinkingに関してはそうじゃない?

まぁKernel32はKnownDllだからRunTimeLinkingに直してLoadLibraryすればいいけど

625 :デフォルトの名無しさん:2010/10/05(火) 20:00:39
>>622
ねえよ
>>624
お前どんだけあほなの
MSDNぐらい読んだら

626 :デフォルトの名無しさん:2010/10/05(火) 20:02:32
情報量0

627 :デフォルトの名無しさん:2010/10/05(火) 20:08:56
カロリー0

628 :デフォルトの名無しさん:2010/10/05(火) 20:28:43
すっきりとした甘さ

629 :622:2010/10/05(火) 20:59:17
>>625
動作の本質的な違いがわかってないからですかね。

>>624
自作のDLLを 暗黙的なロードしていた場合のようなケースを
言いたかったです。情報足りませんでしたね。


Windowsプログラミングに疎いんですが、KnwnDllでもなく
マニフェストをつけていないような自作DLLを暗黙的ロードで
使うことは、よくあることだと思っているんですが。
脆弱性に関する情報にはそこが特に明記されていないのがわからなくて。

それとも、そもそも暗黙的なロードをそんな使い方するな、ってことですかね?


630 :デフォルトの名無しさん:2010/10/05(火) 21:00:00
ほしゅ

631 :デフォルトの名無しさん:2010/10/05(火) 22:06:12
>>514


632 :デフォルトの名無しさん:2010/10/05(火) 22:40:36
グローバルフックかけてアクティブなウインドウのタイトルバーに時間表示したい。んで、他のアプリケーションがウインドウタイトルを読みに来た際、バッファに退避させた本来のタイトル名にリダイレクト(?)させる方法てある?

633 :デフォルトの名無しさん:2010/10/05(火) 22:43:40
ttbaseのプラグインに似たようなことやってるやつ発見したからそれ見てみるノシサンクス

634 :デフォルトの名無しさん:2010/10/05(火) 22:49:17
創造と違ってたorzなにかいい情報ないですかね@@?

635 :デフォルトの名無しさん:2010/10/05(火) 22:53:25
グローバルフックかけてるならウィンドウタイトルを読むときに
APIフックでにすげかえればいいんでないの

636 :デフォルトの名無しさん:2010/10/05(火) 22:59:04
普通にGETTEXTに対応すれば良いんじゃないのか

637 :デフォルトの名無しさん:2010/10/05(火) 23:02:21
>>635,636
調べてみたらWM_SETTEXTもらってた@@;
サンクス


638 :デフォルトの名無しさん:2010/10/05(火) 23:02:42
何言ってんだよ
継承してオーバーライドだろ

639 :デフォルトの名無しさん:2010/10/05(火) 23:03:57
WM_GETTEXTだった
>>636のまんまいうとおりだったw
ありがとうございます。

640 :デフォルトの名無しさん:2010/10/05(火) 23:06:18
>>638
おとといプログラミングはじめたばかりでよくわからない@@
win32ってcじゃないの??敬称ってC++じゃないの??

641 :デフォルトの名無しさん:2010/10/05(火) 23:06:57
2日の割に高度だな

642 :デフォルトの名無しさん:2010/10/05(火) 23:08:12
ほぼ寝てませんorz

643 :デフォルトの名無しさん:2010/10/05(火) 23:11:26
c++嫌いなの?

644 :デフォルトの名無しさん:2010/10/05(火) 23:14:44
んん、、、なぜそんなことを??まあ図星ですけどw
実際使ってみるとcの関数で満足なんでクラスの使い道がよくわからなくて・・・



645 :デフォルトの名無しさん:2010/10/05(火) 23:20:03
C++使わないと、ある程度規模が大きくなってきたときに詰むぞ
悪いこと言わないから、C++を勉強したほうがいい


646 :デフォルトの名無しさん:2010/10/05(火) 23:23:29
Linus「C++プログラマはウンコ。寄ってくるな」

647 :デフォルトの名無しさん:2010/10/05(火) 23:25:52
むー・・・
了解です。がんばってみます!!

648 :デフォルトの名無しさん:2010/10/05(火) 23:27:56
>>646
でも俺はだまされない(キリッ

649 :デフォルトの名無しさん:2010/10/05(火) 23:54:11
creat()

650 :デフォルトの名無しさん:2010/10/06(水) 00:59:03
うずうずするぜ・・・!

651 :デフォルトの名無しさん:2010/10/06(水) 01:56:24
Hello, Everybody! How are you?
I'm crazy! HaHaHa...

652 :デフォルトの名無しさん:2010/10/06(水) 02:02:09
Win32APIには変な名前の関数はないから問題ないな

……ないよな?

653 :デフォルトの名無しさん:2010/10/06(水) 02:26:44
>>622
XPにしかないDLLを使うならリンカオプションでサブシステムバージョンを5.1
VistaにしかないDLLを使うなら6.0
Win7にしかないDLLを使うなら6.1にすればいい

654 :デフォルトの名無しさん:2010/10/06(水) 08:18:04
初歩的な質問で申し訳ないのです。CreateThreadを使ってスレッドを作成すると
スレッドハンドルが返ってきますが、そのスレッドハンドルを使って、そのスレッドが
存在しているかどうか調べる方法はありますでしょうか。
スレッドの終了までメインプロセスにてSleepで待機して、スレッドが終了したら
新しいスレッドを作成するというをしたいです。

よろしくお願いします。

655 :654:2010/10/06(水) 08:39:27
自己解決しました。

WaitForSingleObject(hThreadHandle, INFINITE); /* スレッド終了まで待つ */

ありがとうございました。

656 :デフォルトの名無しさん:2010/10/06(水) 09:21:43
おk

657 :デフォルトの名無しさん:2010/10/06(水) 09:39:25
スレッド固まってんぜ!溜まってんなぁ、オイ(迫真)

658 :デフォルトの名無しさん:2010/10/06(水) 12:09:36
そんなAPIで大丈夫か?

659 :デフォルトの名無しさん:2010/10/06(水) 15:42:42
まあ使ってくうちにいろいろわかってくるでしょ
方法そのものは間違ってないし

660 :デフォルトの名無しさん:2010/10/06(水) 15:46:50
>>658
一番良いのを頼む

661 :デフォルトの名無しさん:2010/10/06(水) 16:28:37
ウィンドウメッセージをハンドルしてるなら
MsgWaitForMultipleObjectsEx

662 :デフォルトの名無しさん:2010/10/06(水) 18:56:34
下がりすぎ

663 :デフォルトの名無しさん:2010/10/06(水) 19:32:54
大盛況なだ!!!

664 :デフォルトの名無しさん:2010/10/06(水) 20:54:33
横浜の人いますか〜??
いたら友達になりましょう><
私は19歳♀です♪

665 :デフォルトの名無しさん:2010/10/06(水) 21:28:56
25歳だけどいいかな

666 :デフォルトの名無しさん:2010/10/06(水) 21:53:12
C++って別の意味でソースがごちゃごちゃになるのでちょっと・・・

667 :デフォルトの名無しさん:2010/10/06(水) 22:31:31
それはおまいの頭の中がゴチャゴチャだからだよ

668 :デフォルトの名無しさん:2010/10/06(水) 23:37:48
プロトタイプ?なんてもういらないだろ c++

669 :デフォルトの名無しさん:2010/10/06(水) 23:39:40
お前がそう思うんならそうなんだろ

670 :デフォルトの名無しさん:2010/10/06(水) 23:44:51
ここゎ出会いコミュなので関係ない話はよそでやってくださぃ><

671 :デフォルトの名無しさん:2010/10/07(木) 02:59:21
>>632です。C++のクラスを即席いい加減に学んできました;;
んで>>638が言ってた内容、どのような設計のクラスを想定しての指示だったのか未だわかりません。なのでそのことについて何かしら助言をいただけたらうれしいです・・・
プログラマの間で常識となってるWin32、C++における基礎的な設計方針か何かあるのでしょうか?



672 :デフォルトの名無しさん:2010/10/07(木) 06:35:42
いい加減に学んできて「教えろ」って馬鹿にしてんのか

673 :デフォルトの名無しさん:2010/10/07(木) 07:27:10
>>638の発言の意図はたぶん>>638にしか分からん

674 :デフォルトの名無しさん:2010/10/07(木) 09:10:47
俺には分かるがなあ

675 :デフォルトの名無しさん:2010/10/07(木) 09:19:28
それを知ってどうするというのか。

676 :デフォルトの名無しさん:2010/10/07(木) 09:47:00
謎は深まるばかりである。

677 :デフォルトの名無しさん:2010/10/07(木) 09:49:51
>>638の前後を見ても何について話してるのかすらわからん

678 :デフォルトの名無しさん:2010/10/07(木) 14:13:30
自分が分からないからって必死すぎ

679 :デフォルトの名無しさん:2010/10/07(木) 14:24:49
前後にクラスの話なんて一切出てない状態でいきなり湧いてるのに何の話かわかったらエスパーだな

680 :671:2010/10/07(木) 14:33:45
そういうことでしたか「@@
なにかきまりきまった事があるのだと思ってました。サンクス。

681 :デフォルトの名無しさん:2010/10/07(木) 14:42:49
この程度でエスパーってwwwwww

682 :デフォルトの名無しさん:2010/10/07(木) 15:15:37
サブクラス化じゃないのか?

683 :671:2010/10/07(木) 15:26:03
>>682
何を継承したのかがわからないもので・・・っていうかこれスレチ?

684 :デフォルトの名無しさん:2010/10/07(木) 15:47:02
FastCopyのソースがしっかりしてそうなのでそれ見て研究します。
ありがとうございました;;w;;ノシ

685 :デフォルトの名無しさん:2010/10/07(木) 16:49:59
サービスプログラムから特定ユーザのレジストリ(HKEY_CURRENT_USER)の値を取得したいのですが、
実現するためのAPIは存在するでしょうか?


686 :デフォルトの名無しさん:2010/10/07(木) 17:01:57
LoadUserProfile

687 :デフォルトの名無しさん:2010/10/07(木) 17:09:17
HKEY_USERS の下にいっぱい並んでるのが各ユーザのだと思ってた

688 :685:2010/10/07(木) 17:24:52
>> 686

ありがとうございます。
LoadUserProfile を調べてたところ、レジストリハイブのロードを見つけたので、これで実装できそうな気がします。
試してみます。


689 :デフォルトの名無しさん:2010/10/07(木) 18:22:21
腐ってやがる

690 :デフォルトの名無しさん:2010/10/07(木) 18:23:01
早すぎたんだ

691 :デフォルトの名無しさん:2010/10/07(木) 19:25:38
>>687
ログイン中のアカウントだけだからなあ

692 :デフォルトの名無しさん:2010/10/07(木) 20:37:02
コンボボックスに1025byte以上の文字をCB_INSERTSTRINGするとメモリが壊れるんだけど俺だけ?
直後にCB_GETLBTEXTLENとCB_GETLBTEXTすると長さが一致しない。

693 :デフォルトの名無しさん:2010/10/07(木) 21:34:36
SHGetFolderPathかWin32Apiで各ユーザディレクトリの1階層上って取れたっけ?

XP:C:\Documents and Settings
Vista:C:\User


694 :デフォルトの名無しさん:2010/10/07(木) 21:40:23
>692
ANSI-Unicode変換レイヤ(本名は忘れた)の影響じゃないか?

695 :デフォルトの名無しさん:2010/10/07(木) 21:51:43
>>693
%HOMEDRIVE%%HOMEPATH%の1つ上を取るのは?

696 :デフォルトの名無しさん:2010/10/07(木) 22:06:24
>>693
直では無理

697 :デフォルトの名無しさん:2010/10/07(木) 22:31:03
>>693
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\ProfilesDirectory
直読みで
どうせユーザープロファイルってここと関わりのない別の任意の場所に作る事ができるし

698 :デフォルトの名無しさん:2010/10/07(木) 23:09:48
プロファイルぺろぺろ

699 :デフォルトの名無しさん:2010/10/07(木) 23:14:09
「秘密の花園」って最近聞かないよね

700 :デフォルトの名無しさん:2010/10/07(木) 23:24:17
SendMessageのWM_GETTEXTでメッセージボックスの説明のテキストを取得しようと思っているのですが、
その為にまず、説明のハンドルをFindWindowExで取得しようと思っているのですが、
現在、FindWindowExでメッセージボックスのハンドルを親に指定して、
IntPtr.Zeroから検索を開始して、1個目に!マークのアイコンのハンドルが返り
2個目に説明部分のハンドルが返ってくるので、この方法で動作しているのですが、
このような親以下の2個目という特定の仕方でも大丈夫でしょうか?

クラス名を指定できれば良いのですが、!マークのアイコンと説明は同じStaticクラスなので
どちらなのか特定できないです。
確実な方法があったら教えていただきたいです。

701 :デフォルトの名無しさん:2010/10/07(木) 23:57:54
座標を使え

702 :デフォルトの名無しさん:2010/10/08(金) 00:00:56
>>700
どちらも取得してテキストの内容なり矩形で判別すればいいだけでは?

703 :デフォルトの名無しさん:2010/10/08(金) 00:06:10
>>700
最近はダイナミック・リアサインが主流

704 :デフォルトの名無しさん:2010/10/08(金) 00:08:56
>>692
ANSIビルドでビジュアルスタイル使ってる?

705 :デフォルトの名無しさん:2010/10/08(金) 00:13:23
>>700
アイコンのほうはSS_ICONがついてるな

706 :デフォルトの名無しさん:2010/10/08(金) 00:31:59
mciSendString使って録音しようとしてるんですが、
open->record->stop->saveが一つの関数内で実行されると保存できるんですが、
open->recordとstop->saveを別にやるとファイルが保存されてない。
なぜに?



707 :デフォルトの名無しさん:2010/10/08(金) 01:48:09
情報が少ない

708 :デフォルトの名無しさん:2010/10/08(金) 01:50:57
おなかがゆるい

709 :デフォルトの名無しさん:2010/10/08(金) 06:56:39
>>694
よく分からない。
>>704
ANSIだけどwin2000だからビジュアルスタイルは使えない。

長めの文字列を渡すとCB_GETLBTEXTの時に今度はアクセス違反で落ちる。
どのみち長さを制限しなきゃいけないとは思っていたけど、扱いづらいな。

710 :デフォルトの名無しさん:2010/10/08(金) 07:12:56
>709
いや、だから変換レイヤの影響だろうって。ちゃんと調べてみな。

711 :デフォルトの名無しさん:2010/10/08(金) 07:43:45
コンボボックスに1025byteってすごいなw

712 :デフォルトの名無しさん:2010/10/08(金) 09:17:35
すいません。
timeBeginPeriod関数で精度を上げたいと思うんですが、
これを呼び出すタイミングって
ゲーム開始時に呼び出しといて、
ゲーム終了時にtimeEndPeriodを呼び出すだけでいいんですか?

それともFPS制御をしてる処理部分だけをこれらの関数で囲めばいいんですか?

713 :デフォルトの名無しさん:2010/10/08(金) 09:42:53
>>712
時間を取得する瞬間だけではなく
精度制御したい期間全てを囲む必要がある
ただしシステム全体に影響を与えてしまうので
ゲーム全体ではなく設定画面の表示中などもし精度が不要なら戻した方が良い

714 :デフォルトの名無しさん:2010/10/08(金) 09:46:28
>>712
ということは精度に影響してくる部分だけでいいってことですよね?
timeGetTimeとかSleepを使ってる部分だけで使えばよいということですよね?

715 :デフォルトの名無しさん:2010/10/08(金) 09:48:05
>>714>>713の方に対してです。間違えました。

716 :デフォルトの名無しさん:2010/10/08(金) 09:49:06

timeEndPeriodの意味ないよね

717 :デフォルトの名無しさん:2010/10/08(金) 09:52:25
>>714
Sleep使う前後だけ囲んだらダメだよ。
Sleepを使うループを囲まないとダメ。

っていうか、今どきのPCで気にするような問題ではないので
WinMainの頭で設定しちゃっていい。
そんなの気にしてたらメディアプレーヤーも使えない。

718 :デフォルトの名無しさん:2010/10/08(金) 09:54:40
地デジだって数秒遅れても問題ない
デジタルってそういうもん

719 :デフォルトの名無しさん:2010/10/08(金) 10:07:59
>>717
丁寧にありがとうございます。Sleepごと囲むようにします。
ありがとうございました。

720 :デフォルトの名無しさん:2010/10/08(金) 10:20:36
いらんことまで同期させてシステム全体をパフォーマンスダウンさせる作戦

721 :デフォルトの名無しさん:2010/10/08(金) 10:26:34
もしSleep以外のタイミングでタスクが切り替わったらどうなるかとか
理詰めで解けると思うんだが

722 :デフォルトの名無しさん:2010/10/08(金) 12:15:30
スライドバーで画面の明るさ変えるツール作りたいんですが
どのAPI使えばいいんですか?

RadeonのCCCでDesktopの明るさを設定するような感じのものです。

723 :デフォルトの名無しさん:2010/10/08(金) 13:13:07
デスクトップに黒一色の半透明リージョンでも作って貼れば?

724 :デフォルトの名無しさん:2010/10/08(金) 15:42:16
>>710
MSLUってやつ? 9x系じゃないから関係なさそう。

725 :デフォルトの名無しさん:2010/10/08(金) 20:01:25
リストビューについての質問です。

int index = 0;
LVITEM li = { LVIF_TEXT, index, 0, 0, 0, (LPWSTR)_T("hoge"), 0, 0, 0 };
ListView_InsertItem( hWnd_list, &li );

LVFINDINFO lf = { LVFI_STRING, _T("hoge"), 0, 0, 0 };
int index_of_hoge = ListView_FindItem( hWnd_list, 0, &lf );

上記のコードのようにhogeがリストの先頭にある場合に、index_of_hogeが-1になってしまうのですが、
何が間違っているのでしょうか?
先頭以外ではちゃんと正しいインデックスが得られているのですが。

726 :デフォルトの名無しさん:2010/10/08(金) 20:08:54
>>725
ListView_FindItemの第二引数は-1にすべきでは?

ListView_FindItem Macro
http://msdn.microsoft.com/en-us/library/bb761242.aspx

727 :デフォルトの名無しさん:2010/10/08(金) 20:37:56
>>726
上手くいきました。ありがとうございます。

728 :デフォルトの名無しさん:2010/10/08(金) 20:47:57
待機しながら新規プロセスの監視ってできますか?FindFirstChangeNotificationみたいな

729 :デフォルトの名無しさん:2010/10/08(金) 21:52:25
>>721はバカ

730 :デフォルトの名無しさん:2010/10/08(金) 22:02:16
中にだれもいませんよ?

731 :デフォルトの名無しさん:2010/10/08(金) 22:03:14
>>728
WaitForSingleObject

732 :デフォルトの名無しさん:2010/10/08(金) 22:59:46
中にだれもいませんよ?

733 :デフォルトの名無しさん:2010/10/08(金) 23:28:11
中にだれもいませんよ?

734 :デフォルトの名無しさん:2010/10/08(金) 23:58:39
>>728
PsSetLoadImageNotifyRoutine

735 :デフォルトの名無しさん:2010/10/09(土) 00:07:06
ドライバ有りならPsSetCreateProcessNotifyRoutineだろ

736 :デフォルトの名無しさん:2010/10/09(土) 00:20:03
>>514のサイトを見ればほとんどの問題は解決するな
テンプレ追加したらどうだろうか

737 :728:2010/10/09(土) 00:21:41
大事なこと書き忘れてて申し訳ありませんが、常駐して未知のプロセスの起動を監視したいと思ってます

>>731
どうもです、その関数は以前簡単に調べたことがあったんですが
例があらかじめわかっているプロセスの監視ばかりだったので別の方法を模索していました
その関数で上のようなことができるんならもっと調べてみますが…

>>734-735
どうもです、調べてみたら英語ばかりですね…なかなか時間がかかりそうです

738 :デフォルトの名無しさん:2010/10/09(土) 00:24:13
>>736
いい考えだな。

739 :デフォルトの名無しさん:2010/10/09(土) 00:34:27
自分も>>736に賛同であります

740 :デフォルトの名無しさん:2010/10/09(土) 00:36:33
改めて見てみたけど>>514のサイトすげーなおいww
これはもっと評価されるべきjkwww

741 :デフォルトの名無しさん:2010/10/09(土) 00:47:26
アフィリエイト乞食ってやつか

742 :デフォルトの名無しさん:2010/10/09(土) 00:52:39
↑嫉妬乙

743 :デフォルトの名無しさん:2010/10/09(土) 00:57:38
>>742
おいアホ、ちゃんと>>514って書いとけ気がきかねーな

744 :デフォルトの名無しさん:2010/10/09(土) 00:59:47
>>743って日本語不自由そうだよね

745 :デフォルトの名無しさん:2010/10/09(土) 01:09:23
>>736 >>738 >>739 >>740 >>742
また宣伝自演かよ。ウィルス仕込んでんじゃね。

746 :デフォルトの名無しさん:2010/10/09(土) 01:10:19
なんでも自演とか言うのは簡単でいいなぁ

747 :デフォルトの名無しさん:2010/10/09(土) 01:11:44
書き込むだけでいいし、小学生でもできる簡単なお仕事です

748 :デフォルトの名無しさん:2010/10/09(土) 01:13:45
これでいくらぐらい稼げるの

749 :デフォルトの名無しさん:2010/10/09(土) 01:15:23
アフィなんておまけだろ、重要なのは情報量
お前らはサイト見るときまずは広告を片っ端からクリックしていくのか?ww

750 :デフォルトの名無しさん:2010/10/09(土) 01:46:18
一部のアンチが騒いでるだけだろ

751 :デフォルトの名無しさん:2010/10/09(土) 01:48:39
この手の宣伝って削除対象にならんの?

752 :デフォルトの名無しさん:2010/10/09(土) 01:55:03
まれにみる糞サイトやったわw>>514

753 :デフォルトの名無しさん:2010/10/09(土) 01:56:47
批判するなら論理的に、な?低能じゃ無理だろうけどww

754 :デフォルトの名無しさん:2010/10/09(土) 02:11:02
まさかとは思うが自覚できてないとかね

755 :デフォルトの名無しさん:2010/10/09(土) 02:37:05
また日本語不自由者が

756 :デフォルトの名無しさん:2010/10/09(土) 03:27:06
いいからAPI出せや

757 :デフォルトの名無しさん:2010/10/09(土) 07:29:34
宣伝じゃなくて私怨で晒してるだけだろ

758 :デフォルトの名無しさん:2010/10/09(土) 08:32:33
普通に宣伝だろ、アホか

759 :デフォルトの名無しさん:2010/10/09(土) 08:35:02
いやいや、本人様が被害者を装って出てくることもありえるぞ
過去にそういう例があった

760 :デフォルトの名無しさん:2010/10/09(土) 08:51:02
しかし情報の質は本物だな、第2のMSDNと言ってもいい
しかもAPIだけじゃなく様々なライブラリまで網羅している

761 :デフォルトの名無しさん:2010/10/09(土) 09:57:51
読み方は「あぴ」だよね?

762 :デフォルトの名無しさん:2010/10/09(土) 09:58:21
いずれにしても>>760は精神異常者

763 :デフォルトの名無しさん:2010/10/09(土) 10:02:33
>>762みたいに侮辱するだけの人間って生きてても意味ないよね

764 :デフォルトの名無しさん:2010/10/09(土) 10:11:23
精神異常者とか言っちゃう人間って

765 :デフォルトの名無しさん:2010/10/09(土) 10:18:30
最近Win64APIというライバルスレが立ったようだな

766 :デフォルトの名無しさん:2010/10/09(土) 10:46:24
>>716
16bitの時代はちゃんとtimeBeginPeriodに対応して呼び出す必要があったが
今は終了すると自動的にtimeEndPeriodされるようだ。

767 :デフォルトの名無しさん:2010/10/09(土) 11:09:17
いやそれガセだから

768 :デフォルトの名無しさん:2010/10/09(土) 14:03:54
メディアプレーヤを常時起動してればtimeBeginPeriodは必要ない

769 :デフォルトの名無しさん:2010/10/09(土) 18:38:35
ではやはりあげておくべきですね。

770 :デフォルトの名無しさん:2010/10/09(土) 19:23:16
「このプログラムを実行する際は必ずメディアプレーヤを起動しておいてください」

771 :デフォルトの名無しさん:2010/10/09(土) 19:43:58
デフォルトでミリ病単位なのにそれ以下にできないtimeBeginPeriodに意味はあるの?
たぶん>>716の意図とは違うけど質問

772 :デフォルトの名無しさん:2010/10/09(土) 19:54:28
質問が意味不明

773 :デフォルトの名無しさん:2010/10/09(土) 19:55:43
よく分からないけど
デフォルトが1xミリ秒とかなんだよ

774 :デフォルトの名無しさん:2010/10/09(土) 20:02:29
771の手にかかると分解能15.6msecはmsec単位にされるらしい

775 :デフォルトの名無しさん:2010/10/09(土) 20:05:55
だから「ミリ病」って言ってんじゃん

776 :デフォルトの名無しさん:2010/10/09(土) 20:11:12
timeBeginPeiodを使うアプリがスタートアップに入ってるとか
ブラウザがChromeだとか

777 :デフォルトの名無しさん:2010/10/09(土) 20:13:42
timeEndPeriodはいかなる時でも必要

778 :デフォルトの名無しさん:2010/10/09(土) 20:30:41
タイマーとかだったら間隔を15.6msecにすればいいことじゃん
分解能を変える必要があるのかと
μsecまで高精度化できるならまだしも

779 :デフォルトの名無しさん:2010/10/09(土) 20:32:08
てか15.6msecなんてできないなw
それこそ1msec以下は設定できない

780 :デフォルトの名無しさん:2010/10/09(土) 20:32:15
時の流れに終止符を打て!

781 :デフォルトの名無しさん:2010/10/09(土) 20:35:21
>>779
Windowsが100nsで保持してるのを知らないアホ

782 :デフォルトの名無しさん:2010/10/09(土) 20:53:48
?

783 :デフォルトの名無しさん:2010/10/09(土) 21:09:34
Windowsが100nsで保持しているそうですwwwww

784 :デフォルトの名無しさん:2010/10/09(土) 21:26:32
なんか見たことある気がしたんで調べたら、
FILETIME構造体ではファイル時間が100ナノ秒間隔でカウントされてた

本気でそんな精度があるのかどうかは俺は知らない

785 :デフォルトの名無しさん:2010/10/09(土) 21:30:03
ミリ秒より小さな桁で数えたければ、QueryPerformanceCounterとかがある。
timeBeginPeriodは1ミリ秒が限界ということだよね。

786 :デフォルトの名無しさん:2010/10/09(土) 21:32:14
1/1024?

787 :デフォルトの名無しさん:2010/10/09(土) 23:43:33
>>785
timeBeginPeriodの精度はそんなに高くない
たまに1msで回ってくれることもある、程度のもの

788 :デフォルトの名無しさん:2010/10/10(日) 03:59:03
DXUTの存在もっと速く教えろよ(#゚Д゚)ゴラァ

789 :デフォルトの名無しさん:2010/10/10(日) 04:08:27
>>788誤爆スマソ

790 :デフォルトの名無しさん:2010/10/10(日) 04:16:25
ゆるさん

791 :デフォルトの名無しさん:2010/10/10(日) 08:47:56
>>787>>785が言ったことを復唱しただけwww

792 :デフォルトの名無しさん:2010/10/10(日) 09:46:51
いや違うな。
timeBeginPeriodは最小で1msの精度になるってことだろ。

793 :デフォルトの名無しさん:2010/10/10(日) 13:38:35
Win32APIでジョイスティックの入力ってできます?

794 :デフォルトの名無しさん:2010/10/10(日) 14:08:43
joyGetPoxExで検索するのよ

795 :デフォルトの名無しさん:2010/10/10(日) 14:18:30
1 件 (0.10 秒)

あるのかよ・・・

796 :デフォルトの名無しさん:2010/10/10(日) 14:23:32
アハハ・・・

joyGetPosExだなw

797 :デフォルトの名無しさん:2010/10/10(日) 15:48:42
名前ダセエwwwwwww
MSDNでもググル検索に引っかからない関数けっこうあるのな

798 :デフォルトの名無しさん:2010/10/10(日) 17:01:13
>>792

799 :デフォルトの名無しさん:2010/10/10(日) 17:01:26
タブコントロールが背景のStaticに隠れてしまうのですが、
これが正しい挙動なんでしょうか?
他のコントロールはちゃんと表示されるのですが。

case WM_CREATE:
  // 背景の作成
  CreateWindowEx( 0 , _T("STATIC") , NULL , WS_CHILD | WS_VISIBLE ,
    0 , 0 , WINDOW_WIDTH , WINDOW_HEIGHT , hWnd , NULL , g_hInst , NULL );

  // タブコントロールの作成
  CreateWindowEx( 0 , WC_TABCONTROL , NULL , WS_CHILD | WS_VISIBLE ,
    TAB_X , TAB_Y , TAB_WIDTH , TAB_HEIGHT , hWnd , NULL , g_hInst , NULL );

  // 他のコントロールの作成
  ...

800 :デフォルトの名無しさん:2010/10/10(日) 20:07:02
定期あげ

801 :デフォルトの名無しさん:2010/10/10(日) 21:10:38
ウィンドウズ的にはジョイスティックっていう名称が一般的なの?
ゲームパッドとかジョイパッドとかいろいろ呼び名あって統一されてない気がするけど

802 :デフォルトの名無しさん:2010/10/10(日) 21:13:01
Microsoft® DirectInput® は、マウス、キーボード、ジョイスティック、およびその他のゲーム コントローラの入力デバイスに加え、フォース フィードバック (入出力) デバイスもサポートするアプリケーション プログラミング インターフェイス (API) である。

803 :デフォルトの名無しさん:2010/10/10(日) 21:37:19
またまたご冗談を

804 :デフォルトの名無しさん:2010/10/10(日) 21:50:23
>>801
開発者向けは知らんが
少なくともエンドユーザー向けには「ゲームコントローラー」のようだな
Windows7のコントロールパネル見る限り

805 :デフォルトの名無しさん:2010/10/10(日) 22:01:48
>>799
STATICをそんな使い方してもいいのか・・・?

806 :デフォルトの名無しさん:2010/10/10(日) 22:48:12
>>805
やっぱりSTATICの使い方が不適切だったみたいです。
背景をSTATICで設定するのをやめて、hbrBackgroundで設定したら正しく表示されるようになりました。
ウィンドウクラスの設定の部分はコピペで作っていたので、こんな問題があるとは知りませんでした。
ありがとうございます。

807 :デフォルトの名無しさん:2010/10/11(月) 00:31:34
ジョブスティック

808 :デフォルトの名無しさん:2010/10/11(月) 00:52:14
Visual Basicのフォームアプリのコントロールの
EnabledプロパティをAPIを使ってTrue/Falseを切り替えたいのですが
どんな方法で出来ますか?
コントロールのハンドルは取得出来ています。

809 :808:2010/10/11(月) 01:14:47
連続ですみません。
SendMessageでWM_ENABLEを送ったらテキストボックスをTrueに設定できました。
ボタンも同じように試したのですが、フォーカスが設定されるだけで
Trueにならないのですが、ボタンはこの方法では無理でしょうか?

810 :デフォルトの名無しさん:2010/10/11(月) 01:57:52
何でわざわざAPI使うんだよ

button.Enable = True;とでもしろよ

811 :デフォルトの名無しさん:2010/10/11(月) 07:21:16
なんでプログラマって本を結末から読むの?

812 :デフォルトの名無しさん:2010/10/11(月) 07:26:32
スレ違いだから

813 :デフォルトの名無しさん:2010/10/11(月) 07:33:27
↑誇らしげに反応してるのが実に馬鹿っぽい

814 :デフォルトの名無しさん:2010/10/11(月) 07:51:24
釣り……ってレベルでもないけどね

815 :デフォルトの名無しさん:2010/10/11(月) 07:53:24
久しぶりに誇らしい気分になれたよ

816 :デフォルトの名無しさん:2010/10/11(月) 10:46:58
SetWindowLongでボタンのウインドウスタイルを変更するのは?

817 :デフォルトの名無しさん:2010/10/11(月) 12:43:45
スレ違いだから

818 :デフォルトの名無しさん:2010/10/11(月) 13:22:08
const DWORDを返すAPIをおしえてくれ!

819 :デフォルトの名無しさん:2010/10/11(月) 13:35:51
意味分からん

820 :デフォルトの名無しさん:2010/10/11(月) 13:44:44
もうだめだこのスレ

821 :デフォルトの名無しさん:2010/10/11(月) 16:30:47
もうだめだこのスレwwwwwwwwww

822 :デフォルトの名無しさん:2010/10/11(月) 16:41:29
もうだめだこのスレwwwwwwwwwwwwwwwwwwww

823 :デフォルトの名無しさん:2010/10/11(月) 17:35:46
もうだめだこのスレw/*/$

824 :デフォルトの名無しさん:2010/10/11(月) 18:41:02
で、MSはなんでやたらめったら変な型を作り出すの?

825 :デフォルトの名無しさん:2010/10/11(月) 18:52:03
他の環境に移れない頭を作るためだよ

826 :デフォルトの名無しさん:2010/10/11(月) 19:09:50
BOOLのくせに-1ってなんだよ、ってなったのは覚えてる

827 :デフォルトの名無しさん:2010/10/11(月) 19:32:47
ブール!!!!!!

828 :デフォルトの名無しさん:2010/10/11(月) 20:20:37
プ板でやれ

829 :デフォルトの名無しさん:2010/10/11(月) 20:23:52
てか何でBOOLって4バイトも使ってんの? 馬鹿なの?

ここで問題、bool が1ビットではなく8ビットも使っている理由とは?

830 :デフォルトの名無しさん:2010/10/11(月) 20:33:38
sizeof(bool[2])

831 :デフォルトの名無しさん:2010/10/11(月) 20:35:48
1ビットにしたところでメモリ上ではバイトアライメント分使ってしまう

832 :デフォルトの名無しさん:2010/10/11(月) 20:40:21
せーいかい!

833 :デフォルトの名無しさん:2010/10/11(月) 20:45:17
てかintのマクロじゃね?

834 :デフォルトの名無しさん:2010/10/11(月) 20:49:00
>>833
BOOLとBOOLEANとboolの区別が出来るようになれよ

835 :デフォルトの名無しさん:2010/10/11(月) 20:54:56
い、今起こったことをありのままに話すぜ!
簡易ブログで呟くつもりが間違ってスレで呟いたら、いつの間にかクイズに正解していた!
何を

836 :デフォルトの名無しさん:2010/10/11(月) 22:42:33
後付けネタ大会始まるよー!

837 :デフォルトの名無しさん:2010/10/11(月) 22:53:00
>>514
神サイト

838 :デフォルトの名無しさん:2010/10/11(月) 22:53:24
始まるでザマス

839 :デフォルトの名無しさん:2010/10/11(月) 23:04:54
ふぐぉおおおおおおおおおおおおおおおおお

840 :デフォルトの名無しさん:2010/10/11(月) 23:17:23
>>837
お前のせいでこのスレ終わりかけたんだぞ分かってんのか?このまま終わるかかもだが

841 :デフォルトの名無しさん:2010/10/12(火) 01:10:32
↑誰かこれ翻訳して

842 :デフォルトの名無しさん:2010/10/12(火) 01:18:37
すまん俺にも何を言ってるのか分からん

843 :デフォルトの名無しさん:2010/10/12(火) 01:21:52
リッチエディットコントロールで文字のサイズの変更がしたいんですが、設定しても半角文字なら設定したサイズになりますが、
全角文字にした途端にデフォルトの文字サイズに戻ってしまいます。
プロシージャのところで止めておかなければいけないメッセージでもあるんでしょうか?

844 :デフォルトの名無しさん:2010/10/12(火) 04:18:56
DIBでMSペイントの塗り潰しと同じことするにはどうすればいいんだ?
再帰とかで試していたがわけわからなくなってきた

845 :デフォルトの名無しさん:2010/10/12(火) 04:55:35
ExtFloodFill

846 :デフォルトの名無しさん:2010/10/12(火) 07:29:20
 

847 :デフォルトの名無しさん:2010/10/12(火) 09:17:47
なるほど

848 :デフォルトの名無しさん:2010/10/12(火) 10:19:09
あずにゃん

849 :デフォルトの名無しさん:2010/10/12(火) 10:49:21
ペロペロ

850 :デフォルトの名無しさん:2010/10/12(火) 11:08:37
                    __
               ,  ´::::::::::::::::::::`  、
               /::::::::::::::::::::::::::::::::::::::::::\
       /|     /::::::::::::::::::::::::::::::::::::::::::::::::::::::ヽ_
     / |   /`i::::::::::/::::::::::::::::::::::::::::::l::::::::::::::::::i::ヽ
`'ー-‐''"   ヽ、_. i::::::|:::::::/:::::::::::::::::,ィ:::::::::::::!:l::::l::::::::::l:::::',
         /. |::::::!::::::!:/::l:::::l::::/ |:::::::::::::|:l、:l::::::::::|::::::i
 か っ も  | . l::::::l::::::|:i::::l:::::l:/  l:::::::::::::}ハ::|:::::::::li::::::l
 ァ  て う.  |...!:::::lヽ:::!:!::::!:::::!--‐'!:,::::::::/ー|::|:::::::::!l::::::l
  |  約 ペ  ヽ|:::::l  `!:|::::l、:::|  、 lハW, - l/|::::::/ l::::::l
  |  束 ロ   >::l  |::l::::|cにニヽ    r ニヽ/::::/:i. l::::::l
  |  し  ペ  /:::::!  l::ヽ::!、 ////////// i.l/::::| !:::::l
  |  た  ロ  |.l:::::l  _!:::::`i:.`i 、 _(二コ _, ィく_!::::l:::l  !:::::l
  |  じ  は  | !::::l/:.:.ヽ:::::l:.:.:! \ ̄/ !:.l:.:.|::::l:/ヽ. l:::::l
 ッ .ゃ .し   |l:::::i:.:.:.:.、:.:.\l:.:.:lr/^^くv'^ヽ:.!:.:l/':.:.:.:} l:::::l
 ! ! な  な  !::::l|:.:.:.:.:.\:.:.:.ヽ{__   }  _{_':.:.:.:/:.:.:.i !:::::!
   い  .い    ヽ、_.:.:.::.:.:ヽ:.:./:.:.:.`.く!/:.:.:.i:.:/:.:.:.:.:.:.| l:::::l
   で       ./ :.:.:.:.:.:.:.:∨:.:.:.:.:.:.o〉:.:.:.:.:.V:.:.:.:.:.:.:/  !:::::!
   す      /.  !:.:.:.:.:.:/:.:.:.:.:.:.o〈:.:o:.:.:.:.:.\:.:.:.:.}  l:::::l
          〈   ヽ:.:.:./:.:.:.:.:.:.:.:.:.:/:ヽ:.:.:.:.:.:.:.:.:ヽ:./   l:::::l

851 :デフォルトの名無しさん:2010/10/12(火) 11:29:48
うるせえよゴキブリヘアーが

852 :デフォルトの名無しさん:2010/10/12(火) 12:41:27
俺の認識が間違ってるんだろうけどなんか目が怖い

853 :デフォルトの名無しさん:2010/10/12(火) 18:14:49
>>851

854 :デフォルトの名無しさん:2010/10/12(火) 18:24:58
succ :: Integer -> Integer
succ n = n + 1

855 :デフォルトの名無しさん:2010/10/12(火) 19:48:43
let rec f n = f (n + 1);;

856 :デフォルトの名無しさん:2010/10/12(火) 20:10:48
WCHAR buf[256];

これを L" " で埋める命令はない?

857 :デフォルトの名無しさん:2010/10/12(火) 20:12:38
wmemset

858 :デフォルトの名無しさん:2010/10/12(火) 20:20:33
umeumeset

859 :デフォルトの名無しさん:2010/10/12(火) 20:32:00
_tcsnset_s

860 :デフォルトの名無しさん:2010/10/12(火) 20:33:47
_tcsset_s


861 :デフォルトの名無しさん:2010/10/12(火) 20:47:48
CopyRect

862 :デフォルトの名無しさん:2010/10/12(火) 20:54:09
MOV

863 :デフォルトの名無しさん:2010/10/12(火) 22:07:52
umeumeset

864 :デフォルトの名無しさん:2010/10/12(火) 22:20:22
どれが最強なの

865 :デフォルトの名無しさん:2010/10/12(火) 22:21:37
MOVで頑張れば一番速い

866 :デフォルトの名無しさん:2010/10/12(火) 22:32:09
ZeroMemory

867 :デフォルトの名無しさん:2010/10/12(火) 22:34:02
_setLspace

868 :デフォルトの名無しさん:2010/10/12(火) 22:48:03
FillMemory

869 :デフォルトの名無しさん:2010/10/12(火) 22:52:03
>>856
WCHAR buf[256];
LPWSTR sp=L" ";
int i;
for(i=0;i<sizeof(buf);i++){
 buf[i]=sp[0];
}

870 :デフォルトの名無しさん:2010/10/12(火) 22:54:17
>>869
あうとーーーーーーー。

871 :デフォルトの名無しさん:2010/10/12(火) 23:04:52
>>870
君合格

872 :デフォルトの名無しさん:2010/10/12(火) 23:20:01
WCHAR buf[256]={L" "};

873 :デフォルトの名無しさん:2010/10/12(火) 23:30:15
>>872
ダウト

874 :デフォルトの名無しさん:2010/10/12(火) 23:39:29
最近のCPUはたるんでるから好きなだけぶん回せばいいよ

875 :デフォルトの名無しさん:2010/10/13(水) 00:18:03
>>856
rep movsw

876 :デフォルトの名無しさん:2010/10/13(水) 00:20:26
L" "ってことは、空白とヌル文字の繰り返しで埋めるって事?
なんか地味に面倒そうだ。

877 :デフォルトの名無しさん:2010/10/13(水) 03:15:37
いやそこはアドレスってボケの方が良かったな

878 :デフォルトの名無しさん:2010/10/13(水) 07:34:38
WCHAR buf[256]={};

879 :デフォルトの名無しさん:2010/10/13(水) 09:39:48
#define buf L" "

880 :デフォルトの名無しさん:2010/10/13(水) 10:14:16
いいからAPI出せや

881 :デフォルトの名無しさん:2010/10/13(水) 10:20:42
じゃ、APIでw

int i;
WCHAR buf[256];
FillMemory(buf,sizeof(buf));
for(i=0;i<_countof(buf)-1;i++){
 lstrcatW(buf,L" ");
}

882 :デフォルトの名無しさん:2010/10/13(水) 11:21:32
>>881
それもダウトォォォォー!!!1!

883 :デフォルトの名無しさん:2010/10/13(水) 11:24:30
普通に256個で初期化すれば
WCHAR buf[256]=" (中略) ";

884 :デフォルトの名無しさん:2010/10/13(水) 16:16:23
ところで_T()っても時定数にも使えたのな

885 :デフォルトの名無しさん:2010/10/13(水) 16:19:51
工学では時定数はお前が言っているのと別の意味を持つ。おかしな略語使うな。

886 :デフォルトの名無しさん:2010/10/13(水) 18:02:56
も、文字定数

887 :デフォルトの名無しさん:2010/10/13(水) 18:25:16
馬鹿を晒したのは>>885でした、と

888 :デフォルトの名無しさん:2010/10/13(水) 18:28:39
TCHARで切り替えられる作り方をするのが普通

889 :デフォルトの名無しさん:2010/10/13(水) 18:57:08
も時定数ワロタ

890 :デフォルトの名無しさん:2010/10/13(水) 19:16:25
最近9x使わないからUNICODEとANSIを切り替えることが少ない

891 :デフォルトの名無しさん:2010/10/13(水) 19:27:42
複数プラットフォーム対応のライブラリってほとんどANSIじゃない?
いちいち変換するのが面倒でそういうの使う時はついANSIになってしまう

892 :デフォルトの名無しさん:2010/10/13(水) 19:28:42
一応TCHARで組んでるけど
多分うにこーどでないとバグる

893 :デフォルトの名無しさん:2010/10/13(水) 19:31:32
文字数はっきりしてるほうが楽だよな

894 :デフォルトの名無しさん:2010/10/13(水) 19:34:21
っサロゲートペア


895 :デフォルトの名無しさん:2010/10/13(水) 19:47:45
もう64ビットくらい使っちゃえよ

896 :デフォルトの名無しさん:2010/10/13(水) 20:06:56
w
↑これ8バイト

897 :デフォルトの名無しさん:2010/10/13(水) 20:18:05
EDITコントロール作るんだけどね
WS_HIDEなままで
これのHDCから見た目撮れる?

898 :デフォルトの名無しさん:2010/10/13(水) 20:48:59
うん

899 :デフォルトの名無しさん:2010/10/13(水) 21:12:47
ピャピャピャー

900 :デフォルトの名無しさん:2010/10/13(水) 21:15:37
いや無理だろう

901 :デフォルトの名無しさん:2010/10/13(水) 21:27:47
WM_PAINTがこないと

902 :デフォルトの名無しさん:2010/10/13(水) 21:41:23
いいからAPI出せや

903 :デフォルトの名無しさん:2010/10/13(水) 22:04:55
だから初心者は>>514を見ろ
このサイトは次スレからテンプレ入りする約束が確約された専門技術高度情報である

904 :デフォルトの名無しさん:2010/10/13(水) 22:12:12
だが断る!!

905 :デフォルトの名無しさん:2010/10/13(水) 22:28:50
>>904
いい加減にしろ
誰も認めてないだろ

906 :905:2010/10/13(水) 22:29:33
ごめ>>904じゃなくて>>903

907 :デフォルトの名無しさん:2010/10/13(水) 22:58:27
sample.exeにopenprocessでメモリ読み取るツールなどを遮断するにはどうしたらいいですか?


openprocess関数を失敗させる

みたいな

908 :デフォルトの名無しさん:2010/10/13(水) 23:05:05
>>906
なりすましはやめてくれないかな

909 :デフォルトの名無しさん:2010/10/13(水) 23:10:09
読み取らせたかない部分を別の実行ファイルにして
瞬時に終わらせるとか

910 :デフォルトの名無しさん:2010/10/13(水) 23:10:35
>>891
ANSIというか他のプラットフォームではUTF-8なこと前提でワイド文字を使わないな

911 :デフォルトの名無しさん:2010/10/13(水) 23:11:00
>>907
Protected Processにする(Vista以降)

912 :デフォルトの名無しさん:2010/10/13(水) 23:40:25
すべてのOSで可能なのを頼む

913 :デフォルトの名無しさん:2010/10/13(水) 23:44:20
>>912
sptd.sysとかネトゲのゲームガードのようなマルウェアまがいのことしないと無理
少なくともスレ違い

914 :デフォルトの名無しさん:2010/10/13(水) 23:47:55
>>907
CreateProcessのセキュリティ記述子を設定すればできるよ。
エクスプローラとかから起動されると設定されていないので、
必要な設定にして自分自身をCreateProcessで再起動するようにする。

915 :>>907です:2010/10/13(水) 23:52:02
Protected Processについてググりましたが、よくわかりません。

OSは気にしないので、外部プロセスがreadprocessmemoryなどでメモリを読み取れなくさせようと思います。
DLL Injectionで何かをフックすれば可能ですかね?



916 :>>907:2010/10/13(水) 23:58:40
>>914
なるほど。createprocessのセキュリティ記述子の設定して再起動ですか。。
簡単なサンプル頂けませんか?


917 :デフォルトの名無しさん:2010/10/14(木) 00:05:50
>>888
今後はwchar_t決め打ちが流行る

918 :デフォルトの名無しさん:2010/10/14(木) 00:40:05
TCHAR使っても完全に文字コードの互換保つのに面倒な部分出てくるしな

919 :デフォルトの名無しさん:2010/10/14(木) 00:51:06
string使えないと不便でしょうがない

920 :デフォルトの名無しさん:2010/10/14(木) 01:01:31
wcscpyとwcslenで代用

921 :>>907:2010/10/14(木) 01:13:59
>>914のセキュリティ記述子を設定しました。

普通にメモリ読み込めるんですけど・・・・

#include <windows.h>
#include <aclapi.h>

int WINAPI WinMain(HINSTANCE hinst, HINSTANCE hinstPrev, LPSTR lpszCmdLine, int nCmdShow)
{
TCHAR szAccountName[256];
DWORD dwSize;
DWORD dwResult;
EXPLICIT_ACCESS explicitAccess;
PACL pDacl;
DWORD dwAccessMask = FILE_GENERIC_WRITE | FILE_EXECUTE | GENERIC_READ;

dwSize = sizeof(szAccountName) / sizeof(TCHAR);
GetUserName(szAccountName, &dwSize);
BuildExplicitAccessWithName(&explicitAccess, szAccountName, dwAccessMask, GRANT_ACCESS, 0);
SetEntriesInAcl(1, &explicitAccess, NULL, &pDacl);

if (SetNamedSecurityInfo(TEXT("test.exe"), SE_FILE_OBJECT, DACL_SECURITY_INFORMATION | PROTECTED_DACL_SECURITY_INFORMATION, NULL, NULL, pDacl, NULL) == ERROR_SUCCESS)
MessageBox(NULL, TEXT("DACLの設定に成功しました。"), TEXT("OK"), MB_OK);
else
MessageBox(NULL, TEXT("DACLの設定に失敗しました。"), NULL, MB_ICONWARNING);

LocalFree(pDacl);

return 0;
}



922 :>>907:2010/10/14(木) 01:15:34
DWORD dwAccessMask = FILE_GENERIC_WRITE | FILE_EXECUTE | GENERIC_READ;

この部分をWRITEだけにたら、起動すらできなくなります。

起動はできるけど、あくまで外部プロセスからメモリを読み取らせないのであって、起動自体に制限はかけたくないです。
よろしくお願いします。


923 :デフォルトの名無しさん:2010/10/14(木) 01:16:33
CreateProcessはどこへいったんだ

924 :>>907:2010/10/14(木) 01:42:47
#include <windows.h>
#include <stdio.h>
int main()
{
PROCESS_INFORMATION pi;
STARTUPINFO si;
int ret;
ZeroMemory(&si, sizeof (si));
si.cb = sizeof (si);
ret = CreateProcess(NULL,"C:\\test\\test.exe",NULL,NULL,FALSE,NORMAL_PRIORITY_CLASS,
NULL, NULL, &si, &pi);
if (!ret) {
DWORD errcode = GetLastError();
char *lpMsgBuf;
fprintf(stderr, "起動失敗 %x\n", errcode);
FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
NULL,errcode,MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // 既定の言語
(LPTSTR) &lpMsgBuf,0,NULL);
fprintf(stderr, "エラー内容\n%s", lpMsgBuf);
exit(1);
}
CloseHandle(pi.hThread);
WaitForSingleObject(pi.hProcess, INFINITE);
CloseHandle(pi.hProcess);
return 0;
}
あれ・・・どうやって2つあわせたらいいんだろ・・・

925 :デフォルトの名無しさん:2010/10/14(木) 02:05:02
オーナードローしたボタンを連打するとitemStateがおかしくなります。

具体的にはボタン押下状態でODS_SELECTEDフラグが立ちません。
以下がボタンダウンしているにも関わらず青ボタンになります。

DRAWITEMSTRUCT* ds = (DRAWITEMSTRUCT*)lParam;
if(ds->itemState & ODS_SELECTED){
 //赤でボタン描画(ボタンダウン状態)
}else{
 //青でボタン描画(ボタンアップ状態)
}

itemStateの使い方が間違ってる/回避方法などあればご教授お願いします。


926 :デフォルトの名無しさん:2010/10/14(木) 02:31:48
>>913
分からないならレスしなければいいのにwwwwww

927 :デフォルトの名無しさん:2010/10/14(木) 02:33:34
マッコリ純生

928 :>>907 :2010/10/14(木) 02:34:21
CreateProcessでセキュリティ記述子いじってプロセス再起動させる
ことによって、デバッガなどがReadProcessMemoryでメモリを読み取れなくさせるプログラムが、やっぱりわかりません。
どなたか、ご教授お願いします><

929 :デフォルトの名無しさん:2010/10/14(木) 02:37:22
>>925
ttp://www5b.biglobe.ne.jp/~kouta_y/c/src/c05.html
このページ内を
"ダブルクリックに反応させる"
で検索


930 :デフォルトの名無しさん:2010/10/14(木) 02:38:21
このへんから、理解していくのかも?
?ttp://eternalwindows.jp/security/accesscontrol/accesscontrol01.html

931 :デフォルトの名無しさん:2010/10/14(木) 03:48:51
921のコードはexeのセキュリティ記述子を変更しようとしているから
readprocessmemoryの成功とは全く関係ない
922のようにexeを起動できるかどうかに関係するだけ

readprocessmemoryを失敗させるんなら
exeではなくプロセスのセキュリティ記述子を変更しないと

932 :デフォルトの名無しさん:2010/10/14(木) 04:29:39
↑さっさとコード張れやカス

933 :デフォルトの名無しさん:2010/10/14(木) 04:34:37
>>907
ようres_unless

934 :デフォルトの名無しさん:2010/10/14(木) 05:36:53
>>928
こうゆうことか?
http://eternalwindows.jp/security/accesscontrol/accesscontrol13.html

935 :デフォルトの名無しさん:2010/10/14(木) 05:44:36
つーか
チート対策するほど需要(利益)のあるアプリが出来たのなら
そういうところ(人)に依頼すればいいだけでは?

そういう人の立場での質問だったらご愁傷さまですけど。

936 :>>907:2010/10/14(木) 08:21:22
>>934
ようはそんな感じですけど、
ターミネートプロセスの禁止ではなくREADの禁止だから〜
ってのと、CreateProcessで〜
ってのがよくわからなくなりました。

プロセス起動中のセキュリティとファイルのセキュリティ記述子が別ということはわかりました。




937 :デフォルトの名無しさん:2010/10/14(木) 08:55:50
>ターミネートプロセスの禁止ではなくREADの禁止だから

全く知識の無い俺が該当ページのサンプルプログラムを見て勝手に想像すると

PROCESS_TERMINATE で TerminateProcess が禁止できるなら
PROCESS_VM_READ にすれば ReadProcessMemory が禁止できるはず!

って思ったりするが(以下ry

938 :デフォルトの名無しさん:2010/10/14(木) 09:03:42
つーかアクセス権いじって禁止しても管理者なら再設定できたりしないの?

939 :デフォルトの名無しさん:2010/10/14(木) 09:16:04
真面目な話
こんなので対策出来ると思ってるの?
ユートピアすぎる


940 :939:2010/10/14(木) 09:27:52
ユートピア言いたいだけでした。すみません

941 :デフォルトの名無しさん:2010/10/14(木) 09:28:33
kernel32.dllを書き換えて自分が起動するときはそれを読み込むようにする、とか。

942 :デフォルトの名無しさん:2010/10/14(木) 09:31:56
俺がチートするなら、メモリの状態を解析するよりも先にexeファイルをいじる

943 :デフォルトの名無しさん:2010/10/14(木) 10:24:16
急に話のレベルが下がったな

944 :デフォルトの名無しさん:2010/10/14(木) 10:32:26
リストを作る命令を教えてください

945 :デフォルトの名無しさん:2010/10/14(木) 10:36:01
SSDT hookとかでおk

946 :>>907:2010/10/14(木) 11:31:15
うさみみとかでプロセス開こうとすると、開けないっていうオンラインゲームのセキュリティなんですけど、そういうツールの簡単バージョンを作りたいわけですが、
実用性はまだないですが。

それでターゲットのセキュリティ記述子(プロセス
)を設定すればできると思ったわけですが


gameguardがいい見本でした。


947 :>>907:2010/10/14(木) 11:34:24
そういや>>934のサンプルそのままコンパイルしてやるとアクセス拒否されました!とかでないのは64bit環境だからですか?


948 :デフォルトの名無しさん:2010/10/14(木) 11:46:00
サンプルプログラムがTerminateProcessしかチェックしてないからじゃないの

949 :デフォルトの名無しさん:2010/10/14(木) 11:49:20
RestartProcess(szKey, PROCESS_VM_READ);

950 :デフォルトの名無しさん:2010/10/14(木) 12:19:44
DetoursのAPIフックを使えば簡単にできる
らしいのですが、どうなんでしょうか?

951 :デフォルトの名無しさん:2010/10/14(木) 12:35:10
その見本にしたいらしいGameGuard自体が抜け穴だらけなわけだが

952 :>>907:2010/10/14(木) 12:53:02
抜け穴だらけっていうのはどういうことですか?


953 :>>907:2010/10/14(木) 13:05:48
>>949
RestartProcess(szKey, PROCESS_VM_READ);
これにしてみました。
#include <windows.h>
#include <aclapi.h>

void RestartProcess(LPTSTR lpszKey, DWORD dwRemoveAccess);

int WINAPI WinMain(HINSTANCE hinst, HINSTANCE hinstPrev, LPSTR lpszCmdLine, int nCmdShow)
{
TCHAR szKey[] = TEXT("restart-key");

if (lstrcmp(GetCommandLine(), szKey) != 0) {
MessageBox(NULL, TEXT("再起動します。"), TEXT("OK"), MB_OK);
RestartProcess(szKey, PROCESS_VM_READ);
return 0;
}

MessageBox(NULL, TEXT("終了します。"), TEXT("OK"), MB_OK);

return 0;
}
(省略・・・)

デバッガから普通にメモリ読み取れるんですけど・・・
コンパイルしました。
http://pinkch.info/win32/

954 :デフォルトの名無しさん:2010/10/14(木) 13:35:22
きもい

955 :デフォルトの名無しさん:2010/10/14(木) 14:12:56
>>952
それくらい自分で予想もできないで人に聞くなら相応の金を払ってその手のを買うべき。
クラックやら何やらを行う人間はあらゆる穴を探そうとするしどの穴を使ったか教えてくれない。

956 :デフォルトの名無しさん:2010/10/14(木) 14:14:22
1プロセス1スレッドなアプリがCPUコア0で動作している場合、
タスクマネージャ等でユーザーが明示的に切り替える場合を除いて
たとえば負荷状況に応じて自動的にCPUコア1に切り替わるといったことはあるんでしょうか?

957 :デフォルトの名無しさん:2010/10/14(木) 14:35:39
startupInfo.cb = sizeof STARTUPINFO;

958 :デフォルトの名無しさん:2010/10/14(木) 15:17:43
>>907
http://www.play21.jp/board/formz.cgi?action=res&resno=63456&id=dixq&from=tree#63503
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1048589220
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1048634055

959 :デフォルトの名無しさん:2010/10/14(木) 16:17:45
>>953
デバッガはさておき、とりあえず >>907 でやりたい事は実現できてるだろ?

960 :デフォルトの名無しさん:2010/10/14(木) 17:12:21
lockかける前のプロセスをデバッガで見てるとか?試して無いので...

961 :デフォルトの名無しさん:2010/10/14(木) 17:41:16
ttp://support.microsoft.com/kb/131065/ja
上にかいてあるようにSeDebugPrivilegeを有効にしたらプロセスのハンドルは取得できる
つまりデバッガがSeDebugPrivilegeを有効にしていたら
プロセスのセキュリティ記述子をいじってても無駄ということかね

962 :>>907:2010/10/14(木) 17:47:14
>>959
いまだできません。><

963 :デフォルトの名無しさん:2010/10/14(木) 17:59:48
TCHAR用の関数選んでも処理の書き方次第で普通に依存するからなー


964 :デフォルトの名無しさん:2010/10/14(木) 18:10:39
再起動します。
は見えるで、
終了します。
も見えるってことなのかな?

965 :デフォルトの名無しさん:2010/10/14(木) 19:18:45
>>956
SetThreadAffinityMaskというAPIがある位だから、切り替わることもあるだろ。
CPUキャッシュとか勿体無いから、頻繁には切り替わらないだろうけど。

966 :デフォルトの名無しさん:2010/10/14(木) 19:25:21
とりあえず横スクロールしないと全文見えないのが腹立つ

967 :デフォルトの名無しさん:2010/10/14(木) 21:53:06
■開発環境
Windows XP SP3
VC++7.0
VB6.0

■動作環境
Windows 7

ウィンドウズサービスをVC++で開発しています。
EnumWindowsを使用し、ウィンドウハンドルを取得して、VBにメッセージをPOSTする仕様です。

XPでは問題なく動作するのですが、
Windows 7ではEnumWindowsでVBのウィンドウハンドルが取得できません。
(EnumWindows自体は正常終了しています)

Windows 7でウィンドウハンドルを取得する方法はないでしょうか?

サービスはローカルシステムアカウントで動作しています。

968 :デフォルトの名無しさん:2010/10/14(木) 22:02:31
セッション0分離でggr

969 :デフォルトの名無しさん:2010/10/14(木) 22:06:34
アクセス許可どういじってもデバッグ特権持ってるユーザーは
(管理者ならデフォルトで持ってる)アクセス許可無視して開けるから無駄
だから最初からVistaはProtected ProcessにしてXPは>>913だって言ってるのに。
自分で試さないと納得できないならなんで質問するの?

970 :デフォルトの名無しさん:2010/10/14(木) 22:11:25
定期あげ

971 :デフォルトの名無しさん:2010/10/14(木) 22:13:34
夏だな・・・。

972 :デフォルトの名無しさん:2010/10/14(木) 22:49:55
こんなスレあったのか

973 :デフォルトの名無しさん:2010/10/14(木) 22:50:24
Protected Process(Vistaのみ)

* Kernel(OS)レベルでプロセスを保護
* Microsoft公認rootkit?
o デバッガのアタッチなどから保護する機能を提供
* ただしMicrosoftの認証が必要

974 :デフォルトの名無しさん:2010/10/14(木) 22:59:38
埋め

975 :デフォルトの名無しさん:2010/10/14(木) 23:05:45


976 :デフォルトの名無しさん:2010/10/14(木) 23:09:34
デバッッガッー!

977 :デフォルトの名無しさん:2010/10/14(木) 23:14:24
>>973
Win7にはないのかなぁ

978 :デフォルトの名無しさん:2010/10/14(木) 23:25:06
さあ、ググってて、偶然見つけた内容だから...

979 :925:2010/10/14(木) 23:47:04
>>929
ありがとう。
ちゃんとボタンがDOWNするようになりました。

980 :デフォルトの名無しさん:2010/10/15(金) 00:25:15
Win7にもaudiodg.exeはあるみたいだからあるんじゃない

981 :デフォルトの名無しさん:2010/10/15(金) 01:28:49
埋め

982 :>> 907:2010/10/15(金) 01:50:39
Win7 64bitでGameGuardが起動する前にCheat Engineなどを起動してもGameGuardが起動されればメモリが遮断されるというあれです。
32bit版ではGameMon.desは自分自身のプロセスさえも隠蔽していたが64bit版では隠蔽はされていなかった。

983 :>>907:2010/10/15(金) 01:54:40
そして、npggNT.desファイルがメモリ遮断の手助けをしているらしいです。

GameGuardシステムについてはこちらにありました。
http://www.networktemple.com/forum/maplestory-discussion/17512-how-d-gameguard-work.html


私が作りたいのはこのメモリ遮断だけです。
すべてのプロセスを一度開いて
kernel32監視して〜
みたいな働きしているようなのですが…

984 :デフォルトの名無しさん:2010/10/15(金) 02:13:31
君が実現するには何年も掛かりそうだけど
覗かれて困るようなことでもしてるのかな?

985 :デフォルトの名無しさん:2010/10/15(金) 02:20:30
マジな話GameGuard買ったほうが早いと思うけど

986 :デフォルトの名無しさん:2010/10/15(金) 02:32:20
だからその面倒な仕掛けのGameGuardすら簡単に突破してメモリ内容見られるのに
お前の頭でどうにかできると思ってるのかと

987 :デフォルトの名無しさん:2010/10/15(金) 02:56:27
カーネルモードでグリグリしちゃいなYO!

988 :デフォルトの名無しさん:2010/10/15(金) 02:59:48
> メモリ遮断
じゃなくて、他の方法考えたほうが良さそうだけど
読まれて困るデータのアドレスをもごもご...


989 :デフォルトの名無しさん:2010/10/15(金) 03:32:16
GameGuard起動している中でメモリ読むってどうやんの

990 : ◆0uxK91AxII :2010/10/15(金) 04:19:18
DLL injectionとかしておけば、容易に読める。
nProtectが動いている時限定で、特殊なint 2eHが有効になるから、
それを使えばいけそうな気もするする。

991 :デフォルトの名無しさん:2010/10/15(金) 04:53:23
コンソールアプリを外部アプリとして実行したいんですが、CreateProcess使ったあとに
そのコンソールアプリへctrl-cを送りたい場合はどうすればいいんでしょうか?


992 :デフォルトの名無しさん:2010/10/15(金) 08:15:17
>>990
kwsk頼む
int 2wh?

WallHack系ツールは不正プログラムとして落とされるはずだが…

993 :デフォルトの名無しさん:2010/10/15(金) 12:36:32
知らないなら無理してレスしなくていいから

994 :デフォルトの名無しさん:2010/10/15(金) 12:37:34
 

995 :デフォルトの名無しさん:2010/10/15(金) 16:10:20
SendConsoleCtrlC()

996 :>>907:2010/10/15(金) 19:19:10
http://dobon.net/vb/dotnet/file/fileshare.html

これってなんか関係ありますか?

997 :デフォルトの名無しさん:2010/10/15(金) 19:21:35
なーんも

998 :>>907:2010/10/15(金) 19:25:37
ファイルロックとメモリ読まれないようにするのは別ですか

999 :デフォルトの名無しさん:2010/10/15(金) 19:41:19
基礎からやり直しませう

1000 :デフォルトの名無しさん:2010/10/15(金) 19:43:48
にゅう

1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

177 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)