Win32API質問箱 Build64

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。
やさしいお兄さんやお姉さんたちが答えてくれるかも。

過去スレ、関連リンクは>>2-10くらい。

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

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

【前スレ】
Win32API質問箱 Build63
http://pc11.2ch.net/test/read.cgi/tech/1204600558/
2デフォルトの名無しさん:2008/04/02(水) 10:21:53
3デフォルトの名無しさん:2008/04/02(水) 10:22:06
- Google
http://www.google.com/
- 猫でもわかるプログラミング
http://www.kumei.ne.jp/c_lang/
- Win32 API入門
http://wisdom.sakura.ne.jp/system/winapi/
- Win32 プログラミング入門
http://www7.plala.or.jp/keny01/

- Advanced Windows (書籍)
http://www.amazon.co.jp/dp/4756138055

-おまけ
Build19が見たい人で余裕のある人は●でも買ってくれ。
4デフォルトの名無しさん:2008/04/02(水) 10:22:49
5デフォルトの名無しさん:2008/04/02(水) 10:23:03
6デフォルトの名無しさん:2008/04/02(水) 10:23:27
7デフォルトの名無しさん:2008/04/02(水) 12:22:01
特定のアプリからファイルを開くには、どうすればいい?
ShellExecuteExだと、ファイルに関連付けられたアプリで起動するし。
8デフォルトの名無しさん:2008/04/02(水) 12:37:25
特定のアプリのコマンドライン引数にファイル名を渡す
9デフォルトの名無しさん:2008/04/02(水) 14:10:20
>>7
「開く」じゃ曖昧だよ。
何がしたいのかを書いたほうがいい。
10デフォルトの名無しさん:2008/04/02(水) 19:36:38
既に取得済みのウィンドウハンドルでそのハンドル(ウィンドウ)が生きてるか死んでるかを
識別するAPIを教えてください
11デフォルトの名無しさん:2008/04/02(水) 19:49:44
>>10
IsWindow
12デフォルトの名無しさん:2008/04/02(水) 19:51:33
生きているの定義による。
IsWindowとかIsHungAppWindowとか。
13デフォルトの名無しさん:2008/04/02(水) 19:54:34
> 997 名前:デフォルトの名無しさん[sage] 投稿日:2008/04/02(水) 15:07:18
> カテゴリ分けしてある API のヘルプが欲しいよ

MSDNライブラリで、それなりにカテゴリ分けされてるが、それでは不十分?
14デフォルトの名無しさん:2008/04/02(水) 19:56:07
>>10-11
ありがとうございます。
ばっちりですほんとうにありがとうございますた。
たすかりました。
いやもうほんとうに。
15デフォルトの名無しさん:2008/04/02(水) 21:38:42
GetDC()やBitBlt()などを使ったよくあるウィンドウのSSを撮るプログラムを作ったのですが
Vistaのエアロ環境で3Dゲームなどのウィンドウを撮ると
真っ黒な画面になります。
GetDC()にNULLを指定して撮ると3Dゲームのウィンドウが
最初に撮ったSSの画面のままで固定され同じものが撮れてしまいます。

どなたか解決法わかりませんでしょうか?
16デフォルトの名無しさん:2008/04/03(木) 00:49:22
だってVistaだしw
17デフォルトの名無しさん:2008/04/03(木) 01:48:32
>>15
DWMサムネイルAPI使えばいい気がする。
18デフォルトの名無しさん:2008/04/03(木) 12:52:25
GetCurrentProcessのウィンドウハンドル版みたいなのは無いでしょうか。
自分自身のウィンドウハンドルを取得したいのですが。。
19デフォルトの名無しさん:2008/04/03(木) 12:55:58
その「自分自身」をどうやって見つけてくるんだよ
20デフォルトの名無しさん:2008/04/03(木) 13:13:35
>>19
えっとdllを他プロセスにフックして
dllからフック先プロセスのウィンドウハンドルを取得したいのです。
21デフォルトの名無しさん:2008/04/03(木) 13:14:07
FindWindowとかじゃだめなのかい?
22デフォルトの名無しさん:2008/04/03(木) 13:19:31
ウィンドウがたくさんあったらどうするんだろう・・・
23デフォルトの名無しさん:2008/04/03(木) 13:23:02
能書きはいいからさっさと教えろ
24デフォルトの名無しさん:2008/04/03(木) 13:27:06
またゲームチートか
25デフォルトの名無しさん:2008/04/03(木) 13:27:19
>>21
GetWindowTextでタイトルは取得できますが
ウィンドウクラス名の取得方法がわからなくて。。(ノ_・、)
26デフォルトの名無しさん:2008/04/03(木) 13:29:35
EnumWindowsすればいいジャマイカ
27デフォルトの名無しさん:2008/04/03(木) 14:04:19
GetClassName
28デフォルトの名無しさん:2008/04/03(木) 14:35:10
おまえらほんと役立たずだな
29デフォルトの名無しさん:2008/04/03(木) 14:43:23
お褒めに預かり極悦至極
30デフォルトの名無しさん:2008/04/03(木) 15:03:16
もうこねーよ!
ばーか
3115 :2008/04/03(木) 15:52:11
"GetWindowDC(GetDesktopWindow())"でやったら出来ました。
32デフォルトの名無しさん:2008/04/03(木) 16:55:05
チート・ウイルス・キーロガー・スパイウェア

こんなのばっかだな

あれか。普通のソフトはもうみんな.NETなんかで作っちゃうから
ド初心者かフック関係の質問しか来ないのな
33デフォルトの名無しさん:2008/04/03(木) 16:59:24
>>32
知らないならレスするなクズ
34デフォルトの名無しさん:2008/04/03(木) 17:17:17
とりあえず荒らしが2〜3名いるらしいというのは判別できた
35デフォルトの名無しさん:2008/04/03(木) 18:15:08
と、荒らしが申しております
36デフォルトの名無しさん:2008/04/03(木) 18:25:15
>>34
荒らすなよお前
37デフォルトの名無しさん:2008/04/03(木) 19:00:37
WindowsのAPI(ウインドウとかコントロールの扱いやGDI)は一通り覚えたので、DirectXも触ってみたいんですが、
DirectXも他のWin32APIと同じ感じですか?もっと複雑に、もしかしたらクラスとか使ったりしますか?
38デフォルトの名無しさん:2008/04/03(木) 19:38:49
俄然使う
39デフォルトの名無しさん:2008/04/03(木) 21:54:17
>>37
Windowsとどら焼きぐらい違う。
いや、そこまで違わんか。タイヤキとタイヤぐらいか?

まあそれはともかく、別物だよ。

>>20
ウィンドウを作ってるのはプロセスじゃなくスレッド。
スレッドはウィンドウを作る必要はない。だから
プロセスがウィンドウを持ってることを前提にするのが間違ってる。

逆にウィンドウを作ったスレッドやプロセスを調べる関数は
当然あるので(必ず存在するからね)、そっちで調べるのが良い。
40デフォルトの名無しさん:2008/04/03(木) 22:19:53
質問させてください。
WS_OVERRAPPEDWINDOWなどのスタイルで、タイトルバーのあるウィンドウを作っていて、
メッセージループでgetTimeGetを使うことでタイマーを実装しています。

タイトルバーをクリックしながらウィンドウを移動していると、
メッセージループ内の処理が行われないといった現象を回避する方法ってありますか?
具体的には、↓のようなプログラムです

startTime=timeGetTime();
while(msg.message!=QUIT){
if( PeekMessage (&msg,NULL,0,0,PM_NOREMOVE) ) {
if( !GetMessage (&msg,NULL,0,0) ) { msg.message = WM_QUIT; }
else {DispatchMessage( &msg );}
}
else{
if( (timeGetTime()-startTime)>3000 ){
MessageBox(hwnd,"ココ","caption",MB_OK); //移動が終わるまで
//これが出力されない
break;
}
Sleep(5);
}
}



41デフォルトの名無しさん:2008/04/03(木) 22:29:24
getTimeGetに噴いた
42デフォルトの名無しさん:2008/04/03(木) 22:45:10
シンディローパーの曲のようだ
4340:2008/04/03(木) 22:48:29
timeGetTimeでした><
はずかしぃ・・
44デフォルトの名無しさん:2008/04/03(木) 23:11:57
DrawText → DrawTextEx なのに、TextOut → ExtTextOut
返値が BOOL で GetLastError かと思ったら、レジストリ系は返値が LONG、COM 系は HRESULT
Kernel ハンドルの破棄は CloseHandle なのに User ハンドルは Destroy〜、GDI ハンドルは DeleteObject と名称がバラバラ
しかも Kernel 系でも FindFirstFile だけは FindClose だったり
WINMM 系は関数名が小文字で始まっていたり・・・

なんでこんなに統一性が無いのか気になって仕方がないんだけど知ってる人いる?
45デフォルトの名無しさん:2008/04/03(木) 23:15:25
16bit時代からの互換性を考慮したから
46デフォルトの名無しさん:2008/04/03(木) 23:22:05
>>32
その手のプログラムを作ること自体の是非はともかくとして、
その手のプログラムを作るなら人に聞かずにヤレと思うよ。

>>37
DirectXはCOM「もどき」で、MSがラッパーを用意してたりするし、
COMといってもオマジナイや定型文だと思ってもいいくらい。
47デフォルトの名無しさん:2008/04/03(木) 23:27:48
>>44
直交性がないのはアレだが、混同しにくいという利点もあるぞ。
48デフォルトの名無しさん:2008/04/03(木) 23:33:02
このスレはシステムプログラミングに明るい人が少ないか、
極度にネガティブなイメージを持ってる人が多いらしいので聞くだけ無駄なことが多い
フックとかマルウェア技術に関してはぐぐーる先生のほうがよっぽど使える
49デフォルトの名無しさん:2008/04/03(木) 23:34:43
>>40
それは現象ではなく仕様。

ウィンドウの移動中に、ユーザの他の操作を受付けるのはナンセンスだし、
基本は移動枠が出るだけで描画は一切行わないので、メッセージポンプを回す必要もない。
逆に、回してしまったら変なことになるぞ。

ウィンドウの移動を自前で処理すりゃ
メッセージポンプを回すこともできるが、
そんな気持ち悪いことをするのもなぁ。
50デフォルトの名無しさん:2008/04/03(木) 23:36:53
51デフォルトの名無しさん:2008/04/03(木) 23:37:29
>>48
マルウェア作成技術にはネガティブなイメージを持って当然だろ。

ちなみに、
悪さするプログラムを作った人間が逮捕され、
2chのスレでやり方を教えてもらったと言ったら、
教えたほうは幇助で逮捕されかねんぞ。
52デフォルトの名無しさん:2008/04/03(木) 23:44:41
他プロセスにdllを注入して〜とかそういうのが多すぎ
質問するなとは言わんがスレの半分ぐらいがそんなのばっかりなんてどう考えても異常だろ
同じ奴が何度も質問してるのか?
53デフォルトの名無しさん:2008/04/03(木) 23:48:21
悪さするプログラムを作っても一切に罪には問われません
54デフォルトの名無しさん:2008/04/03(木) 23:53:48
>マルウェア作成技術にはネガティブなイメージを持って当然だろ。
そーなのかー 
その辺に自分とほかとの意識の違いがあるらしいことは理解した
(個人的には、いろんなサンプルコード片を書いたり教えたりするけど、
 それを第三者がどういう目的で利用しようが関係ないと思ってる)

「既出杉。調べれば判るだろ」ってのは同意だけどね

 
55デフォルトの名無しさん:2008/04/03(木) 23:57:17
めんどくせぇからwizard bibleでも見てろって感じだな
56デフォルトの名無しさん:2008/04/04(金) 00:11:15
ウザい頻出ネタまとめ

問) 他プロセスのコマンドライン文字列を取得するにはどうすればいいですか?
答) 次のどちらかで取得できる。
・CreateRemoteThreadでGetCommandLineを送る。
・NtQueryInformationProcessでPEBからReadProcessMemoryする。

問) フックしたプロセスでメインウィンドウのHWNDを取得するにはどうすればいいですか?
答) そのものズバリな方法は無い。
  ウィンドウクラス名が分かっている時はFindWindow(Ex)する。
  分かっていない時はEnumWindowsとGetWindowThreadProcessIdを組み合わせる。

問) 特定のプロセスの音量を制御するにはどうすればいいですか?
答) Vista買え。
57デフォルトの名無しさん:2008/04/04(金) 00:26:46
ochinchin.h を omanko.cpp に include したのに童貞のままです。
どうしたらいいですか。
58デフォルトの名無しさん:2008/04/04(金) 00:29:03
はいはいよかったですね
59デフォルトの名無しさん:2008/04/04(金) 00:29:42
>>57
先っちょだけだからです!
じゃなくて、その ochinchin.h はあなたの物ではありません
60デフォルトの名無しさん:2008/04/04(金) 00:36:50
やり方が間違っている。
まずお前のイチモツをDLL化する。ochinchin.dll
そしてomanko.exeのプロセスにDLLインジェクションでochinchin.dllを挿入すればいい。
61デフォルトの名無しさん:2008/04/04(金) 00:39:20
>>52
周囲の人間に聞いても教えてもらえない or 聞くのが憚られる
匿名ではない掲示板で聞いても教えてもらえない or 聞くのが憚られる
それで2chのこのスレに殺到する

ってことかもしれんな。
62デフォルトの名無しさん:2008/04/04(金) 00:42:23
>>57 のことかーーーーー!!!

ってか親切に解説してくれているサイトを見るの方が
関連情報も一箇所にまとまってるから
よっぽど早く目的達成できるのにな
63デフォルトの名無しさん:2008/04/04(金) 00:45:27
>>57-60
質問して断られて逆恨みして粘着してる人間がいるんだな。

>>56
こういうのはどうだ?

Q. 他プロセスのコマンドライン文字列を取得するにはどうすればいいですか?
A. 他プロセスにコマンドライン文字列を教えるためのインタフェースを設ける。

質問の主が後ろめたいことをやろうとしているのではなく、
複数のプロセスで協調動作するプログラムを書いているという仮定をしてさ。

他のプロセスが他人の書いたプログラムだって言うのなら、
その他のプロセスを自分でCreateProcessして、
その時のコマンドラインを覚えとけ、と。
64デフォルトの名無しさん:2008/04/04(金) 00:52:34
>>63
うしろめたいってか、UNIX系だと簡単にコマンドライン取れるんじゃね。
よく知らんけど。
65デフォルトの名無しさん:2008/04/04(金) 01:00:35
だったらUNIX系を使っとけ
66デフォルトの名無しさん:2008/04/04(金) 02:30:35
Win32サブシステムではなくPOSIXサブシステムを使えばいいんじゃね?
Interixの会社をマイクロソフトが買収してSFUとして無料で提供してるのを使えばいいんじゃね?
67デフォルトの名無しさん:2008/04/04(金) 08:19:30
1ヶ月ぐらい前にウイルス作成方法を公開してた奴が逮捕されたとかいうニュースを見た気がする
68デフォルトの名無しさん:2008/04/04(金) 08:23:02
裁判で有罪になるかどうかは別として、

自力で調べられないようなタイプのハッカーもどきは、
十中八九、簡単に足が付くようなやり方をするから、
あんまり関わらないほうがいい。
69デフォルトの名無しさん:2008/04/04(金) 10:21:37
iniファイルを扱いたいのですけど
WritePrivateProfileSectionつかうと同じセクションの内容を上書きしてしまいますよね
追加はどうすればいいのでしょうか
70デフォルトの名無しさん:2008/04/04(金) 10:26:22
>>69
追加というのは、具体的に、どういうこと?

同一セクション内に同一のキーはダメだよ?
71デフォルトの名無しさん:2008/04/04(金) 10:28:55
>>70
別キーを同じセクションに保存できないのです
説明下手でスマン
72デフォルトの名無しさん:2008/04/04(金) 10:29:39
>>67
ウィルス作成では現行の法運用では罪を問えなかったので
著作権違反の疑いで逮捕した
73デフォルトの名無しさん:2008/04/04(金) 10:36:51
>>71
WritePrivateProfileStringな
74デフォルトの名無しさん:2008/04/04(金) 10:39:17
>>73
ありがとう!
75デフォルトの名無しさん:2008/04/04(金) 11:02:49
WritePrivateProfileSection
> 指定された .ini ファイル(初期化ファイル)の、指定されたセクション内の
> 既存のキー名と値を削除し、
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> 指定されたキーとその値のペアを書き込みます。
76デフォルトの名無しさん:2008/04/04(金) 11:34:43
WinXPのタスクバーの自分のアプリ部分の領域に描画することは可能ですか?
プログレスバーのように進捗を表示したりといった感じです。
77デフォルトの名無しさん:2008/04/04(金) 11:43:34
タイトルのこと?アイコンのこと?
まあどっちも可能
78デフォルトの名無しさん:2008/04/04(金) 11:48:49
両方です。その方法を教えてください。
79デフォルトの名無しさん:2008/04/04(金) 12:35:21
UNIXでも他プロセスのコマンドラインを取るのは素直にはできへんよ。
80デフォルトの名無しさん:2008/04/04(金) 12:43:10
タスクバーの奴もボタンなわけだから
フックで入って描画ルーチンをのっとる

下手くそなフックするとExplorerが落ちまくりになるけどNe!
81デフォルトの名無しさん:2008/04/04(金) 12:46:51
タスクバーのフックならTClockのソースでも見るがよろし
82デフォルトの名無しさん:2008/04/04(金) 12:56:27
Jane Styleは空のDLLを注入しただけで落ちるんだけどw
中でとんでもない事をしてそうで気になる
83デフォルトの名無しさん:2008/04/04(金) 14:01:13
>>79
psコマンドで一発じゃね?
84デフォルトの名無しさん:2008/04/04(金) 16:11:16
psでも引数が見えないのはある。
例えばsendmailとか。
85デフォルトの名無しさん:2008/04/04(金) 16:19:57
forkで親はとっくにいないとかじゃなくて?
86デフォルトの名無しさん:2008/04/04(金) 17:35:24
>>80-81
タスクバーなんてOSのバージョンが上がる度に構造が変わるような物を安易にフックすべきでは無かろう
進捗状況を出したいならメインウィンドウのタイトルを"10% 完了"みたいに変えればいい
8740:2008/04/04(金) 19:52:31
>>49
なるほど。
そういった仕様ということはあきらめるしかないですね。
参考になりました、ありがとうございます!
88デフォルトの名無しさん:2008/04/04(金) 19:57:30
ISAPI用のDLLの中でファイルの属性を変更するために
SetFileAttributes()を使いました。
その際、windows2000server、IIS5環境では問題なく動作したのですが
windows2003、IIS6環境ではSetFileAttributes()が失敗します。
原因としてはどのようなことが考えられるでしょうか
89デフォルトの名無しさん:2008/04/04(金) 19:59:16
途中で送信してしまいました。
また、代用となる関数、方法などありましたら教えてください。
90デフォルトの名無しさん:2008/04/04(金) 20:12:08
GetLastErrorの戻り値は?
91デフォルトの名無しさん:2008/04/04(金) 20:35:05
十中八九、アクセス権の問題だと思う。
92デフォルトの名無しさん:2008/04/04(金) 20:46:58
EM_GETLINEを送ってもバッファに文字列が格納されないんですが、
int iLine = 1;
char buf[256]={0};
*(WORD *)buf = (WORD)sizeof(buf);
SendDlgItemMessage(hWnd,IDCEDIT,EM_GETLINE,(WPARAM)iLine,(LPARAM)buf);
93デフォルトの名無しさん:2008/04/04(金) 21:00:48
SendDlgItemMessageの戻り値は?
94デフォルトの名無しさん:2008/04/04(金) 21:36:47
>>93
戻り値はどうやって取得すればいいんですかね?
LRESULT er;
er = Send(ry;
こうですか?
95デフォルトの名無しさん:2008/04/04(金) 21:45:52
MSDN見るなりググるなりヘッダファイルみるなりするナリよ
96デフォルトの名無しさん:2008/04/04(金) 22:07:03
>>67
平気で嘘つくの辞めようぜ
97デフォルトの名無しさん:2008/04/04(金) 22:12:37
>>95
GetLastErrorですか?
98デフォルトの名無しさん:2008/04/04(金) 22:36:30
>>92
EM_GETLINEの説明を読め
99デフォルトの名無しさん:2008/04/04(金) 22:50:28
>>98
WPARAMで行を指定
LPARAMでバッファを指定
バッファの先頭2byteはバッファサイズを入れておく
足りませんか?
100デフォルトの名無しさん:2008/04/04(金) 23:11:52
1. SendDlgItemMessageがSendDlgItemMessageW
2. 対象Editの2行目に1文字も無い
101デフォルトの名無しさん:2008/04/05(土) 00:17:58
>>86
どうせアイコンは小さいのだから、
あらかじめアイコンを5パターンくらい用意して、
Shell_NotifyIcon で切り換えればいいと思う。
102デフォルトの名無しさん:2008/04/05(土) 00:19:42
それはタスクトレイの話じゃないのか?
タスクトレイなら動的にアイコンを描画してアイコン切り替えればいいだけだぜ。
103デフォルトの名無しさん:2008/04/05(土) 01:05:25
タスクバー右クリック->ツールバー で一覧が出てくる
WMPやらGoogleデスクトップ検索みたいに表示したいってことか?
俺はやり方知らないけどググれば出てきそう
104デフォルトの名無しさん:2008/04/05(土) 04:39:10
>>102
× タスクトレイ
○ 通知領域

Win32スレでそういう間違った名称使うのやめとけ
105デフォルトの名無しさん:2008/04/05(土) 05:16:35
メディアプレイヤーのProgIDとインタフェイス名とID(IID_Xxxxみたいなの)教えてください。
CreateWindowとAtlAxGetControlを利用したいのです。

Win32じゃないかもしれないけどお願いします。
106デフォルトの名無しさん:2008/04/05(土) 05:32:09
>>105
OLE/COM Object Viewer
107デフォルトの名無しさん:2008/04/05(土) 05:33:00
帰れw
108デフォルトの名無しさん:2008/04/05(土) 07:09:53
モマエら
よその国の人はどんどん進歩しているのに、日本人同士で足引っ張り合って
自滅するかも知れないと思ったことはないのか。

攻める先を取り違えるな。
109デフォルトの名無しさん:2008/04/05(土) 07:41:03
>>104
つ Microsoft.com Japan サイトの検索
そこまで厳密にしなくてもいいんじゃね?と思った。
110デフォルトの名無しさん:2008/04/05(土) 08:53:03
この件で誰を攻めるとか考えてる時点で終わりだ。
そんなのは無駄な時間だ。
111デフォルトの名無しさん:2008/04/05(土) 09:31:06
アイコンが並んでいる部分はタスクバー上のタスクトレイの中の通知領域だよ
XPではWindows9xの頃とタスクバーの実装が変わっていてタスクトレイと呼べるのか微妙だけど
互換性の為かShell_TrayWndというクラスのWindowは存在している
112デフォルトの名無しさん:2008/04/05(土) 09:36:37
トレイはTrayNotifyWndの方だな
このWindow構成を見るとタスクトレイというのは本来はタスクバー自体の事なのかもしれないな
113デフォルトの名無しさん:2008/04/05(土) 10:10:35
タスクトレイは時計を含む領域だけど、
通知領域は時計は含まないってこと?
114デフォルトの名無しさん:2008/04/05(土) 11:31:27
>>100
出来ませんでした。
115デフォルトの名無しさん:2008/04/05(土) 11:34:10
>>100
自己解決しました。
116デフォルトの名無しさん:2008/04/05(土) 11:42:46
このスレて寒いレスするバカが常駐してるよな
117デフォルトの名無しさん:2008/04/05(土) 12:09:07
>>116
痛い質問して、期待した回答が得られなくて、逆恨み粘着だろうな。
118デフォルトの名無しさん:2008/04/05(土) 12:14:02
>>117
とりあえず、答えればいいんだよバカが
119デフォルトの名無しさん:2008/04/05(土) 12:15:59
>>118
お前みたいなスタンスの人は、
マイクロソフトの有償サポートを使えよ。
120デフォルトの名無しさん:2008/04/05(土) 12:25:38
>>116=寒いレスするバカ
121デフォルトの名無しさん:2008/04/05(土) 12:53:56
何でここの人はやさしさが無いんだろうな。ゆとりがたりないのか?
122デフォルトの名無しさん:2008/04/05(土) 12:54:46
俺は普通に答え取るがな(´・ω・`)
123デフォルトの名無しさん:2008/04/05(土) 12:56:40
>>121
優しさがないのは、約一名の粘着して荒らしている人だけ。
124デフォルトの名無しさん:2008/04/05(土) 12:58:03
なんで仲良くできないの!あなたたちは!
125デフォルトの名無しさん:2008/04/05(土) 13:00:47
あと、自分を正当化ばかりしてる人ってまぁ、リアルでも2chでも多いよな。
自信があるのはいいことだけどさ。
126デフォルトの名無しさん:2008/04/05(土) 14:39:11
>>16のようなレスにいつまでも釣られるお前らの責任でもあるんだよ
2chのしきたりとか分かってない
127デフォルトの名無しさん:2008/04/05(土) 14:58:55
言いたい事も言えないこんな世の中じゃ(ry
128デフォルトの名無しさん:2008/04/05(土) 15:15:26
POISON!
129デフォルトの名無しさん:2008/04/05(土) 15:16:50
>>108
モマエら
よその星の人はどんどん進歩しているのに、地球人同士で足引っ張り合って
自滅するかも知れないと思ったことはないのか。

攻める先を取り違えるな。
130デフォルトの名無しさん:2008/04/05(土) 15:18:29
防衛省もUFO対策を論じるくらいだからやばいな
131デフォルトの名無しさん:2008/04/05(土) 15:21:51
中華対策はしないのにな
132デフォルトの名無しさん:2008/04/05(土) 16:19:36
スレを荒らすのヤメロ。

ちょっと自重しろ。
133デフォルトの名無しさん:2008/04/05(土) 16:59:08
エクスプローラーのフォルダアイコンってどこから取ってくればええんでしょうか。
2kとxpで違ったりしますか?
134デフォルトの名無しさん:2008/04/05(土) 17:19:24
>>133
マイクロソフトに「アイコンください」と言えばもらえるよ。
135デフォルトの名無しさん:2008/04/05(土) 17:22:33
このスレの住人なら知っていますね、あの糞開発ツールのことを

・自分のプログラムのバグなのかコンパイラのバグなのかわからない
・他の仕事に応用できない糞開発ツールの独自世界を必死に学習している
・テキストエディタで書いたほうが効率的なのに糞UIツールを懸命に使っている
・糞開発ツールを批判すると「性格が悪いから糞ツールを批判するんだ」と言われる

糞だけど、政治的な理由で無理やり使わされているんですよね。
もう、あんな厨の作った糞ツールを我慢して使うのはやめましょう。

・糞開発ツールを部下に押し付ける上司の命令は無視しましょう。
 上司は糞開発ツールが使われる実績を作ることであの会社のごきげんをとっているのです。
・糞開発ツールを使わせる上司の下では働けません、と上司の上司に直訴しましょう。
・あの糞開発ツール提供会社には「おたくの糞開発ツールは話にならない」と突き放しましょう。
 バグレポートなどしてはいけません。改善要求などもってのほかです。
 あの会社はあなたたちのことをテスター/モルモットとしか思っていません。
・あの会議で「糞開発ツールを使ったら生産性がxx%アップしました」
 なんて話が出たら力強く机を叩き、会議室を出ましょう。
 あの人たちは糞開発ツールをマンセーすることで立場を確保しているのです。

糞な開発ツールを糞だと言える、そんな当たり前の環境をみんなの力で取り戻しましょう。
136デフォルトの名無しさん:2008/04/05(土) 18:05:43
>>106
そういえばそんなのあったの思い出した
さんくす
137デフォルトの名無しさん:2008/04/05(土) 19:57:39
ちなみにOLE/COM Object Viewerの使い方はこの本に載ってるよ

Visual C++プログラマのためのCOM入門
http://www.seshop.com/detail.asp?pid=1022
138デフォルトの名無しさん:2008/04/05(土) 23:05:09
MCI_OPEN_PARMS mop;

case WM_CREATE:
mop = MCIOPEN(filename , MCI_DEVTYPE_SEQUENCER, hWnd);
return 0;

case WM_KEYDOWN:
if(wp == VK_UP)
mciSendCommand(mop.wDeviceID , MCI_PLAY , MCI_NOTIFY , (DWORD)&mop);
else
mciSendCommand(mop.wDeviceID , MCI_STOP , 0 , 0);
return 0;

case MM_MCINOTIFY:
mciSendCommand(mop.wDeviceID , MCI_STOP , 0 , 0);
mciSendCommand(mop.wDeviceID,MCI_SEEK,MCI_SEEK_TO_START,0);
mciSendCommand(mop.wDeviceID , MCI_PLAY , MCI_NOTIFY , (DWORD)&mop);
return 0;
}

上記のような、midiファイルを↑キーで再生、他のキーで停止、曲の最後まで行ったらまた初めからループするプログラムを作ったのですが、
↑以外のキーを押して曲を止めても、勝手に曲の初めから流れ始めます。
MCI_PLAYのMCI_NOTIFYを外してみると曲が止まったままにすることが出来たのですが、それだとループになりません。
ループするようにしたmidiを、停止することはできないのでしょうか?
139デフォルトの名無しさん:2008/04/05(土) 23:07:19
>>138
MM_MCINOTIFYのwParam見れ
140デフォルトの名無しさん:2008/04/05(土) 23:15:37
>>139
if(wp == MCI_NOTIFY_SUCCESSFUL) で、できました。
ありがとう。

>>139を見て MM_MCINOTIFY wparam でググったら出てきましたが、
こういう〜に〜が格納されるという情報はどこから仕入れているんですか?
141デフォルトの名無しさん:2008/04/05(土) 23:20:24
142デフォルトの名無しさん:2008/04/05(土) 23:20:44
普通はMSDNだろう。

時々ウソ書いてるのと、オンライン版は重たいのが難点だが。
143デフォルトの名無しさん:2008/04/05(土) 23:28:53
ありがとうございました。
英語勉強しないと;
144デフォルトの名無しさん:2008/04/06(日) 08:47:55
ツールバーのボタンをクリックするごとに、そのボタンのアイコン画像が変化するようにしたいのです。
ツールバーを作成するときに

// hwndTB : ツールバーウィンドウ
HBITMAP hBMP = ::LoadBitmap(::GetModuleHandle(NULL), MAKEINTRESOURCE(ID_TOOLBARBMP));
HIMAGELIST hIL = ImageList_Create(16, 16, ILC_COLOR32 | ILC_MASK, 0, NUM_TBICONS);
ImageList_AddMasked(hIL, hBMP, RGB(0, 255, 0));
::SendMessage(hwndTB, TB_SETBITMAPSIZE, 0, MAKELONG(16, 16));
::SendMessage(hwndTB, TB_SETIMAGELIST, NUM_TBICONS, (LPARAM)hIL);

のようにして、マスクつきの画像を使うことにしていまして
クリックのメッセージが飛んできたときに

// hwndTB : ツールバーウィンドウ
// iIcon : アイコンの番号
::SendMessage(hwndTB, TB_CHANGEBITMAP, ID_TBBUTTON1, MAKELPARAM(iIcon, 0));

を呼んでアイコンを変更しています。

XP ではこれで問題ないのですが、
Vista では、前の画像が消えなくて、その上に新しい画像を重ねたような表示になります。
(透過マスク付きなので、前の画像が上塗りされない)

何か使い方を間違えているのでしょうか?
145デフォルトの名無しさん:2008/04/06(日) 10:40:31
VC6で自分のプログラムが組み込んだコンポーネントにキー入力を渡したくて
いろいろ試行錯誤してまつ。BasicでのSendKey的なイメージ。

ActiveXコントロールにtranslateAccellatorのメソッドがあったので、
以下のようなMSG構造体を作って引数として渡す方法で実験してみた。
message <= WM_KEYDOWN
wparam <= VK_RIGHT
するとActiveX Control側では、キーボードの現在の修飾キー状態を読み取ってしまい、
コントロールキーが押されてると、Ctrl+右ボタンになってしまう。

現在の修飾キーの状態にかかわらず、ActiveXに「右ボタン」だけを渡すには
どうすればいいですか?
146デフォルトの名無しさん:2008/04/06(日) 10:43:13
SendInputでも使えば
147デフォルトの名無しさん:2008/04/06(日) 13:20:24
CreateFileの最後の引数って(別に指定する必要が無い場合)NULLを指定するの?それともINVALID_HANDLE_VALUE??

148デフォルトの名無しさん:2008/04/06(日) 13:24:19
>>147
NULL
149デフォルトの名無しさん:2008/04/06(日) 15:14:51
なんでNULL(0)とINVALID_HANDLE_VALUE(-1)があるの?
150デフォルトの名無しさん:2008/04/06(日) 15:18:17
MSの開発者がトンマか、喧嘩してたか、ハンドル0が有効な場合があるか、じゃね?
151デフォルトの名無しさん:2008/04/06(日) 15:28:50
>>149
_lcreatとかの失敗時に-1を返すWin16の関数から
CreateFileへの移植を容易にするためだそう。
http://blogs.msdn.com/oldnewthing/archive/2004/03/02/82639.aspx
152デフォルトの名無しさん:2008/04/06(日) 15:40:23
無効な値が NULL か INVALID_HANDLE_VALUE かで型名を変えればいいのに。
同じ型に別名与えるだけでいいんだからさ。
153デフォルトの名無しさん:2008/04/06(日) 16:04:33
>>152
そしたら、CloseHandleは?
154デフォルトの名無しさん:2008/04/06(日) 18:39:45
Win32とかMFCって互換性に縛られすぎてて汚い
.NETFrameworkのクラスライブラリはVB6のソレを焼直した感があってこれまた中途半端


MSはもっと直感的で分かりやすく作れないものなの?
155デフォルトの名無しさん:2008/04/06(日) 18:41:13
1からクリーンに作って普及したものってあまり聞かない気がする。
156デフォルトの名無しさん:2008/04/06(日) 19:20:33
WPFはそこそこ
157デフォルトの名無しさん:2008/04/06(日) 19:43:22
>>153
どっちも CloseHandle でいいじゃないか
WINAPI と APIENTRY と CALLBACK が同じものだったりする感じで。
158デフォルトの名無しさん:2008/04/06(日) 20:29:48
PASCALは
159デフォルトの名無しさん:2008/04/06(日) 21:31:27
Vistaのソースコードゲットした
すげーでけーよw
160デフォルトの名無しさん:2008/04/06(日) 21:34:37
そういえばHalfLife2のソースどこいったっけ・・
161デフォルトの名無しさん:2008/04/06(日) 21:40:39
俺が持ってる
162デフォルトの名無しさん:2008/04/06(日) 21:42:20
俺も預かってやってる
163デフォルトの名無しさん:2008/04/06(日) 22:02:23
XPとVistaのソースコードを手に入れたので、試しにXPにAeroGlassを移植してみた俺が来ましたよ
164デフォルトの名無しさん:2008/04/06(日) 22:06:58
一人で移植できるような規模なのか
Microsoftは五年かかったのにな
165デフォルトの名無しさん:2008/04/06(日) 22:16:43
>>163ならVistaのDirectSound HALを復活させられるに違いない。
とりあえずEAX2.0までのエミュレーションコードも入れといてね。
166デフォルトの名無しさん:2008/04/06(日) 22:16:56
ぶっちゃけソースほしいわ
ReactOSとwineとカーネルデバッガから辿るのは結構しんどい
167デフォルトの名無しさん:2008/04/06(日) 22:46:56
デバッグシンボルを落としてきてdumpbin /disasmでリバースエンジニアリングすればいい
ぶっちゃけこれで十分
168デフォルトの名無しさん:2008/04/06(日) 23:22:15
フィルタドライバ作ったことあるひとがいれば教えて欲しいんだけど、
標準で定義されているハード情報取得するときのコントロールコード
をDeviceIoContorol()にわたして、そのときに返ってくる値を
フィルタドライバのなかでうその値に変換して戻せる?
169デフォルトの名無しさん:2008/04/06(日) 23:26:51
日本語でおk
170デフォルトの名無しさん:2008/04/06(日) 23:53:40
リバースエンジニアといえば
XP の CommandLineToArgvW は argv[argc] に NULL を格納しようとしてし忘れている感じがした記憶がある。
171デフォルトの名無しさん:2008/04/06(日) 23:59:00
>>170
それはきっと前世の記憶だ。さぁ、今すぐMSに行ってバージョンアップしてきなさい。
172デフォルトの名無しさん:2008/04/07(月) 00:02:54
>>170
2000のやつも忘れてた気がする
まあCランタイムの__argc/__targvを使うかUnderTheHoodのやつからパクってくればいいだろう

俺の場合リバースエンジニアして非公開APIを使いまくっていたソフトが
Vistaになって大多数の非公開APIが廃止されたせいでエラーが出て起動しなくなってて泣いた
173デフォルトの名無しさん:2008/04/07(月) 00:18:52
そういうことになるから非公開なんじゃないのかw
174デフォルトの名無しさん:2008/04/07(月) 00:23:46
>>146
即レスどうもありがとう!徹夜プログラムで確認中に寝落ちしますた。
でうまくいかなくてまだ確認中なんだけど、sendInputは、TranslateAccellalatorと違って、
送り先のコンポーネント(hWndなど)を指定することができない。これが原因と関係するのかなあと。
やっぱりWM_KEYDOWNのMSG構造体を作る当初方針でがんばるのが必要なのかな。
175デフォルトの名無しさん:2008/04/07(月) 00:31:28
>>173
だってさ、95〜XPまで問題なく使えたんだぜ? いきなり廃止するとは思わないじゃない
でも互換モードでXPSP2にすると普通に動くあたりがMSらしい
きっと古いMS製品も動かなかったのだろうw

シンボル取ってきて見てみたらAPIの前にRETIRED_とか付いててワロタ
176デフォルトの名無しさん:2008/04/07(月) 00:50:30
互換モードでやることの中には、古いファイルを使うなんてこともなかったっけ?
177デフォルトの名無しさん:2008/04/07(月) 00:52:33
>>175
洒落が聞いてるなw

Vistaにするにあたって、整理したのかねぇ。
で、古い非公開APIは別の所にまとめたとか。
178デフォルトの名無しさん:2008/04/07(月) 01:06:11
そういうスーパーハッカーみたいな技術はどうすればつくんですか
179デフォルトの名無しさん:2008/04/07(月) 01:08:44
DLLを覗けばいいんじゃね
180デフォルトの名無しさん:2008/04/07(月) 02:55:01
>>174
自己レスです。送り先指定がないので自アプリのトップへ送ると固定されてるのかなと思ってたけど
考えてみたら、XKeymacsみたく、外部アプリへキーボード入力を送り込むアプリもあるので、
そういう制限はないはず。なのでよくわからんが、Xkeymacsのソースを解析中。
そもそも単にキーボードカスタマイズの自由度を広げるためにやってたんだが、深みにはまりそうな予感してきたw
181デフォルトの名無しさん:2008/04/07(月) 05:01:11
>>180
だれも気にしてないと思うけど、知識共有になるかもなので、うまくいったコードおば。
void Hander_For_Ctrl_F() {
MSG oMsg = { m_hWndObj, WM_KEYDOWN, VK_RIGHT, 0, 0, 0 };
BYTE cKeyStates0[ 256 ], cKeyStates[ 256 ];
ZeroMemory( (void *)cKeyStates0, 256 );
GetKeyboardState( cKeyStates );
SetKeyboardState( cKeyStates0 );
m_pAxObj->TranslateAccelerator( &oMsg ); <= 修飾なし右ボタンをActiveXへ
SetKeyboardState( cKeyStates );
}
ActiveXにそれ用のコマンドがなかったので、偽装キー入力で対応したんだが、
キーボードのEmuは奥が深い…。というか泥臭い。なんかあとからバグりそうねw
182デフォルトの名無しさん:2008/04/07(月) 13:35:42
>>178
デペンデンシー・ウォーカー眺めてると楽しいよ。
183デフォルトの名無しさん:2008/04/07(月) 14:13:12
指定のウィンドウにWM_DROPFILESを投げるとき、
DROPFILES構造体のために確保した領域は
投げてからすぐ解放してしまっていいのでしょうか?
サンプルを探したら、しているものといないものがあって
判断に迷います。
184デフォルトの名無しさん:2008/04/07(月) 14:23:56
WM_DROPFILESそういう使い方をするもんではない

思うに、COMのOLED&Dと勘違いしてないか?
185デフォルトの名無しさん:2008/04/07(月) 14:45:10
>184
では、ウィンドウにファイルをドロップするには何のメッセージを使えばいいのでしょうか?
186デフォルトの名無しさん:2008/04/07(月) 14:54:03
>>183
別のプロセスに送るなら、すぐに解放しても構わないはず。
187デフォルトの名無しさん:2008/04/07(月) 14:57:19
>>184
そういう使い方"も"出来る訳だが
知らないのか?

>>183
対象アプリがDragFinishで開放するからいらないんじゃないの?
188デフォルトの名無しさん:2008/04/07(月) 15:03:09
知らないならレスしないでください
189デフォルトの名無しさん:2008/04/07(月) 15:06:17
知ったか厨うぜえ
勘違いしてるのはお前だろw
190デフォルトの名無しさん:2008/04/07(月) 15:08:19
誰が誰に言ってるのかも書いてクレヨン
191デフォルトの名無しさん:2008/04/07(月) 15:11:50
とにかく知らないクズはレスしないでくださいよ。うざい
192デフォルトの名無しさん:2008/04/07(月) 15:14:44
お前らレスアンカーぐらいつけろ
193デフォルトの名無しさん:2008/04/07(月) 15:20:28
194デフォルトの名無しさん:2008/04/07(月) 15:22:22
だから知らないならレスするなよクズ
195デフォルトの名無しさん:2008/04/07(月) 15:29:08
また荒れてきたなあ
とりあえず>>184は切腹
196デフォルトの名無しさん:2008/04/07(月) 15:29:44
197デフォルトの名無しさん:2008/04/07(月) 15:29:49
>>195
荒らすなよお前
198デフォルトの名無しさん:2008/04/07(月) 15:55:34
VistaでもWin16アプリって動くの?
199デフォルトの名無しさん:2008/04/07(月) 15:58:41
>>お前らへ
>>121
200デフォルトの名無しさん:2008/04/07(月) 15:58:50
>>198
空気読めよ
201デフォルトの名無しさん:2008/04/07(月) 16:18:02
オマエモナー
202デフォルトの名無しさん:2008/04/07(月) 16:34:38
これまた懐かしい
203デフォルトの名無しさん:2008/04/07(月) 16:45:32
(・∀・)ジサクジエンデシタ
204デフォルトの名無しさん:2008/04/07(月) 16:46:45
もう、ぬるぽ
205デフォルトの名無しさん:2008/04/07(月) 16:56:24
わっしょいわっしょい
206デフォルトの名無しさん:2008/04/07(月) 17:51:02
ファイル又はメモリ内のデータを圧縮するAPIと解除するAPIを教えてください
207デフォルトの名無しさん:2008/04/07(月) 18:21:58
zlib
208デフォルトの名無しさん:2008/04/07(月) 18:54:51
cabinet.dllの簡単な使い方を教えてくださいよ
209デフォルトの名無しさん:2008/04/07(月) 18:59:14
知らないならレスしないでください に一致する日本語のページ 約 141,000 件中 1 - 100 件目 (0.69 秒)
210デフォルトの名無しさん:2008/04/07(月) 19:05:07
>>206
RtlCompressBuffer / RtlDecompressBuffer
211デフォルトの名無しさん:2008/04/07(月) 19:14:15
>>209
お前>>184だろ
知らない癖に主観で嘘を書いたら叩かれて当然
そんな当然の事も分からず被害者ヅラするぐらいなら最初から書くな
212デフォルトの名無しさん:2008/04/07(月) 19:16:36
>>210
すんません、それぐぐっても悲しいくらいにヒットしないんですが
それって簡単なんですか?
213デフォルトの名無しさん:2008/04/07(月) 19:28:22
214デフォルトの名無しさん:2008/04/07(月) 19:33:02
>>213
あ、これは失礼しますた。
WEB全体からぐぐるとある程度でてきました。
215デフォルトの名無しさん:2008/04/07(月) 19:45:25
>>214
    ∧∧
   ヽ(・ω・)ノ ズコー
  \( \ ノ
 、ハ,、  ̄
  ̄
216デフォルトの名無しさん:2008/04/07(月) 21:46:19
こんにちは。
エクスプローラーのリストビューのタイプの変更を行いたく思い、少し調べているのですがよくわからない部分があるので質問させてください。

http://yokohama.cool.ne.jp/chokuto/urawaza/lv_icon.html
を読んでタイプの変更は出来そうなのですがWindows Vistaの特大アイコンなどはどのようなメッセージを送ればいいのかわからないのです。
ヒント等ご教授戴ければ幸いです。
217デフォルトの名無しさん:2008/04/07(月) 21:49:10
つ Spy++
218デフォルトの名無しさん:2008/04/07(月) 22:01:34
>>217
どうもありがとうございます。
その発想はありませんでした。
219デフォルトの名無しさん:2008/04/08(火) 01:39:44
 Windowsプログラミング用にtypedefしたデータ型の変数を扱うときは
Cの標準ライブラリを使うかで悩んだりするけど、他の人はどうしてる
のかな。
 例えばWindowsプログラムには、文字列用にいろいろなtypedefした型が
あるけど、実際には同じくcharの配列だしsprintfとかstrlenとかも使え
るだろうが、それは反則とみなすのか。
 wspritnfとかlstrlenのようにWindows用の関数があればいいけど、それ
がないやつは困りそうだ。あったとしても、MSDNで調べて理解して解決ま
で持っていくのも大変そうだな。
 ところでファイル入出力も、fputs、fprintf、fgets等に似たWindows用
の関数もあるんでしょうか。あるかないかだけ聞ければいいです。
220デフォルトの名無しさん:2008/04/08(火) 01:40:52
_tcslen とか、文字系の関数には全部 TCHAR 用の関数が用意してあるでよ。
221デフォルトの名無しさん:2008/04/08(火) 05:08:02
それってVCの独自拡張じゃないのか?
222デフォルトの名無しさん:2008/04/08(火) 05:15:04
ウインドウに描画はするけど、クリックしたら下にあるウインドウにメッセージが届くようにするにはどうすればできますか?
223デフォルトの名無しさん:2008/04/08(火) 05:58:55
俺様拡張よりはマシだろう。

VC以外のコンパイラを使うことも考慮するなら、
VCのTCHARマクロと互換性のあるものを別に作って使えばいいと思うよ。
224デフォルトの名無しさん:2008/04/08(火) 06:28:42
tchar.hなんてWindows用コンパイラなら標準みたいなもんだろ
225デフォルトの名無しさん:2008/04/08(火) 07:23:58
ていうか、C標準にwchar_tが導入されたときに、TCHARマクロのようなものも標準化されなかったんか?
226デフォルトの名無しさん:2008/04/08(火) 07:36:30
>>221
そもそも Windows プログラミングをしようってんだから
TCHAR 使うのは普通だろ?
227デフォルトの名無しさん:2008/04/08(火) 07:59:08
いい加減9xは切り捨ててwchar_tで書けばいいと思うんだ
228デフォルトの名無しさん:2008/04/08(火) 08:14:23
VC特有を嫌うくらいなら、
wchar_tがWin32APIのWCHARと互換性があるという仮定は、
すべきではないだろう。

gccではwchar_tが32ビット幅だったりするしな。
229デフォルトの名無しさん:2008/04/08(火) 09:15:12
ttp://www.forest.impress.co.jp/article/2004/02/27/otorinasai.html

のようにCTRL+ALT+DELを押した時の画面のキャプチャを取ろうと思ってます。
アプリケーションのサービス化、デスクトップハンドルの取得、
EnumDesktopWindowsでウインドウ列挙、までは可能ですが
GetDCによるHDCの取得ができません。
何か別の方法があるのでしょうか?

「SAS Window」のウインドウハンドルを取得しSetWindowTextでタイトルを
変更する事ができましたのでウインドウハンドルまでは取得できています。

よろしくおねがいします。
230デフォルトの名無しさん:2008/04/08(火) 09:16:58
>>229
マニュアルとかのドキュメント作成のために画面キャプチャが欲しいっていうのなら、
リモートデスクトップとかVMwareとか、そういうのを使うといいよ。
231229:2008/04/08(火) 11:33:56
>>230

すみません、プログラムでなんとかできればと考えております。
232デフォルトの名無しさん:2008/04/08(火) 11:51:13
>>231
とりあえずGetDC失敗した後GetLastErrorで原因を探ってみてはどうじゃろ。
233デフォルトの名無しさん:2008/04/08(火) 12:04:02
さすがにサービスアプリを作って試してみるのはめんどくさすぎるw
234デフォルトの名無しさん:2008/04/08(火) 12:14:14
sexeを使ってみ。
235デフォルトの名無しさん:2008/04/08(火) 12:15:12
>>233
知らないのに無理に答えようとしてガンバル必要はないぞ。
236デフォルトの名無しさん:2008/04/08(火) 12:18:27
>>234
このエロめ!
237デフォルトの名無しさん:2008/04/08(火) 12:19:51
知らないならレスしないでください
238デフォルトの名無しさん:2008/04/08(火) 12:27:26
また荒れてるのかw
239デフォルトの名無しさん:2008/04/08(火) 12:33:27
そんなもん知ってる奴なんて作者とMSの人間ぐらいだアホか
240デフォルトの名無しさん:2008/04/08(火) 12:34:28
>>239
無知ならレスしないでください
241デフォルトの名無しさん:2008/04/08(火) 12:35:37
>>228
gccで一括りにしてはダメ。Windows用のgccはwchar_tが16ビット。
242デフォルトの名無しさん:2008/04/08(火) 12:37:31
ふつうにできるやん
243デフォルトの名無しさん:2008/04/08(火) 12:42:51
メールやん
244デフォルトの名無しさん:2008/04/08(火) 12:49:56
shlwapiのHashDataって、OSやDLLのバージョン違ってもアルゴリズム同一と保証されてる?
245デフォルトの名無しさん:2008/04/08(火) 13:09:15
英語版MSDNの検索がタイムアウトしまくって使い物にならん
246デフォルトの名無しさん:2008/04/08(火) 13:20:06
>>244
されてないと思うよ。
NT4.0の頃のIEの暗号化が標準か高度かによって違っていただろうしね。

CryptoAPIを使うことは考えてみた?
247デフォルトの名無しさん:2008/04/08(火) 13:28:00
244です。
>>246
あー。いや暗号強度とかはあんまり関係なかったんです。
データ管理に128bitのハッシュが必要だったんだけど、ソースをあまり増やさないで欲しい
というんでMD5ルーチンが使えなかった、でこれを利用したかった。
ポータブルなデータではないんで絶対同一であることが必要でもないんだけどちょっと気になったので。
248デフォルトの名無しさん:2008/04/08(火) 13:39:23
MD5ルーチンってどっかのDLLが持ってたはず
SDKヘルプで出てきたし
249デフォルトの名無しさん:2008/04/08(火) 13:44:24
MSDNライブラリのネット版がクソ重くて見れないんだけど嫌がらせか?
250デフォルトの名無しさん:2008/04/08(火) 13:48:31
英語版もさっきそんな感じだったなあ
今は復帰してるが

Windows Filtering Platform超ワケワカンネ
251デフォルトの名無しさん:2008/04/08(火) 13:52:16
ファイアウォールでも作るのw?
252デフォルトの名無しさん:2008/04/08(火) 14:01:01
>>245
>>249
独り言やめれ。

MSDNライブラリくらいローカルのHDDにインストールしろよ。
253デフォルトの名無しさん:2008/04/08(火) 14:02:59
独り言じゃないよちゃんとお前がきいてるじゃないか
254デフォルトの名無しさん:2008/04/08(火) 14:03:07
>>252
無知はレスするなつったろクズ
255デフォルトの名無しさん:2008/04/08(火) 14:03:24
MFCのCDC::DrawText()についてなのですが、
内容自体はAPIのDrawText()そのものなので、
こちらで質問させていただきます。

ワードラップをオフにした状態で常に右端で折り返したいのですが、
それを実現するフラグ指定はあるのでしょうか。

dc.DrawText("あいうえおかきくけこさしすせそ 1234567890 1234567890 1234567890",
            CRect(0, 0, 150, 150),
            DT_WORDBREAK);

DT_WORDBREAKを指定すると、日本語の部分は右端で折り返させるのですが、
半角の部分はスペース位置でワードラップしてしまいます。
DT_WORDBREAKをオフにすると折り返しすらされません。
256デフォルトの名無しさん:2008/04/08(火) 14:09:23
叩かれた>>184が逆に叩く側に回って荒らしてるようだな
分かりやすい奴だ
257デフォルトの名無しさん:2008/04/08(火) 14:27:22
>>248
MD5Initってのが出てきたが
>Requires Windows XP or Windows 2000 Professional.
ってのが>>244の希望に沿ってない気がする
258デフォルトの名無しさん:2008/04/08(火) 14:40:13
>>257
出てきたって・・・おい

知らないなら調べてまで答えるなよ。
知ったかぶりの知識はいらない。
ちょっと調べて得られる情報なら本人だって既に知ってるだろ。

Win95OSR2、NT4.0以降でサポートされてるCryptoAPIを使え。
実際の処理を行うプロバイダがインストールされているかは別の話しだが。
259デフォルトの名無しさん:2008/04/08(火) 14:46:49
2000・XP以降対応で何が不満なのだろう・・・
今更サポート切れてる9xなんかに対応する必要なんて無かろうに
260デフォルトの名無しさん:2008/04/08(火) 14:46:52
CALG_MD5ならMicrosoft Base Cryptographic Providerでサポートされると書いてある
IE3が入っていればWin95でも問題ないと思う
261デフォルトの名無しさん:2008/04/08(火) 14:55:35
>>228
ところがCygwinやMinGWのgccはwchar_tが2バイトでビルドされているので、
WCHARとwchar_tが等しいという仮定はここでも通用する。
262デフォルトの名無しさん:2008/04/08(火) 14:56:34
>>258
嘘教えるなくず
263デフォルトの名無しさん:2008/04/08(火) 15:09:55
日付が変わるまで書込み禁止
264デフォルトの名無しさん:2008/04/08(火) 15:58:23
>>261
そういうのを、たまたま一致している、というのだよ。
265デフォルトの名無しさん:2008/04/08(火) 16:03:07
どんまい
266デフォルトの名無しさん:2008/04/08(火) 16:14:45
ける
267263:2008/04/08(火) 16:15:30
お前ら1回死ね
268デフォルトの名無しさん:2008/04/08(火) 16:25:59
>>255
英語圏では単語の途中で改行されるのを嫌うから、なるべく区切り文字で改行するようになってるんだと思う。
269229:2008/04/08(火) 16:30:50
>>232
GetLastErrorでは何も返ってきませんので、
GetDCでエラーが発生しているわけでは無いみたいです。
ただGetDCで返ってきたHDCからHBITMAPを作成しても真っ黒です。
ちなみに通常の状態ですと、
取得したHDCからHBITMAPを作成で正常にキャプチャできています。
270デフォルトの名無しさん:2008/04/08(火) 16:49:21
>>264
CRTDLL.DLLやMSVCRT.DLLにあわせるためであり必然です
271デフォルトの名無しさん:2008/04/08(火) 16:57:20
もうXPに帰りたい…
実行に管理者権限が必要かどうかぐらい書いとけカス
272デフォルトの名無しさん:2008/04/08(火) 17:16:45
帰ればいいだろ
わざわざVista使ってストレス溜めて何の得になるんだ?
273デフォルトの名無しさん:2008/04/08(火) 17:44:09
俺ビスタだぜ?
お前XPなの?
m9(^Д^)プギャーーーッ
ってしたいため
274デフォルトの名無しさん:2008/04/08(火) 17:45:26
XPなら何に管理者権限が必要かどうか区別する必要が無いなんて事は全く無いが
275デフォルトの名無しさん:2008/04/08(火) 17:49:40
必要があるってことは無いが無いってことも無い事は無いか必要ってこともあることは無い
276デフォルトの名無しさん:2008/04/08(火) 17:50:26
>>270
合わせる必要なんかないだろ。

ていうか、gccはGNUのC標準ライブラリを使うんじゃないか?
MSVCRT.DLLを使うのは行儀が悪すぎる。
277デフォルトの名無しさん:2008/04/08(火) 17:52:05
VistaってUser/PowerUser権限をWindows2000見たいな感じで使うこと出来ないの?
278デフォルトの名無しさん:2008/04/08(火) 17:55:39
はい
279デフォルトの名無しさん:2008/04/08(火) 17:57:36
そりゃ悲惨だね・・
280デフォルトの名無しさん:2008/04/08(火) 18:07:37
はい
281デフォルトの名無しさん:2008/04/08(火) 18:14:29
>>276
MinGWinはデフォルトでMSVCRT.DLLを使うよ
282デフォルトの名無しさん:2008/04/08(火) 18:16:50
>>281
知ったか乙
283デフォルトの名無しさん:2008/04/08(火) 18:22:59
284デフォルトの名無しさん:2008/04/08(火) 18:26:39
>>277
2000みたいな感じってのがよくわからないが、グループや特権の割り当ては2000と同じようにできるよ
Administratorsが必要なときに自動的にrunasみたいなダイアログが出るところは2000と違う
285デフォルトの名無しさん:2008/04/08(火) 19:10:45
>>276
W系APIが16ビット前提なんだから、合わせるのは当然でしょ。
gccでデフォルトで glibc を使うプラットフォームはむしろ少数派。
286デフォルトの名無しさん:2008/04/08(火) 19:32:42
UACなんて無効でおk
287デフォルトの名無しさん:2008/04/08(火) 19:41:12
つまりUser権限で常用して必要なときはRunasってな使い方がVistaでも出来るって事?
288デフォルトの名無しさん:2008/04/08(火) 19:53:17
>>287
出来る。
289デフォルトの名無しさん:2008/04/08(火) 21:55:13
Win32 API を使う漏れらがちゃんと気を付けて、たとえば無暗にHKLMとかHKCRに
もの書いたりしないようにしてゆけば、>>287みたいな使い方もどんどん楽になってゆくよね
・・・・無理だけどさ。

サービスなんかやめて setuid ビット採用してよ >> Windows
290デフォルトの名無しさん:2008/04/08(火) 22:30:41
runasでバッチ作るくらいで勘弁してあげたらw
291デフォルトの名無しさん:2008/04/08(火) 23:24:31
>>249
MSDNネット版、やたら重いよね。Webのデザインが変わってから重くなったイメージ。
勘弁してほしいよな。
292デフォルトの名無しさん:2008/04/09(水) 03:21:02
>>285
合わせるのが合理的ではあるが、絶対に合せなければならないというわけではないぞ。
293デフォルトの名無しさん:2008/04/09(水) 03:21:50
>>291
MSDNライブラリくらいローカルにインストールしろって。
オンライン版よりも少し内容が古くなるったって、それが問題になるような仕事してんのか?
294デフォルトの名無しさん:2008/04/09(水) 07:32:28
>>291
おれは今のMSDNのほうが使いやすいな
あとは検索の糞っぷりと左ペインの使いづらさをどうにかしてほしい
295デフォルトの名無しさん:2008/04/09(水) 09:34:38
>>292
Windows SDKを検索すれば状況が理解できると思うよ
296デフォルトの名無しさん:2008/04/09(水) 10:25:02
知らないならレスしないでください
297デフォルトの名無しさん:2008/04/09(水) 10:28:10
もしかしてスレ違いかもしれませんが…

エクセルビューアのウィンドウクラス名はなんですか?
どなたか教えてください(>_<)
298デフォルトの名無しさん:2008/04/09(水) 10:33:46
>>297
エクセルビューアが何なのか知らないけど、それを持ってるなら
起動してspy++で見ればわかるよ。
299デフォルトの名無しさん:2008/04/09(水) 11:14:48
>298
調べることができました!
ありがとうございます!
300デフォルトの名無しさん:2008/04/09(水) 16:02:11
>>183
WM_DROPFILESはPost側で確保してGet側で解放する仕様なので作ってPostMessageしたらそれで終わり
もちろん(まずないはずだが)PostMessageが失敗したときには自前でGlobalFreeすること
301デフォルトの名無しさん:2008/04/09(水) 16:08:32
>>300
>>187で既出
それとも二日間調べつづけて漸く結論を導き出せた>>184君か?w
302デフォルトの名無しさん:2008/04/09(水) 16:12:59
お前らそんなに>>184を責めるなよ!
どうせお前らも同じく無知なんだから
303デフォルトの名無しさん:2008/04/09(水) 16:22:08
×お前ら
○俺ら
304デフォルトの名無しさん:2008/04/09(水) 16:24:26
×俺ら
○俺
305デフォルトの名無しさん:2008/04/09(水) 16:45:07
>>304だけ無知って事でいいじゃん
306デフォルトの名無しさん:2008/04/09(水) 17:30:44
>>184=>>302=>>305=無知だろJK
307デフォルトの名無しさん:2008/04/09(水) 17:38:25
ビットマップの特定の色を透過させるにはどうしたらいいでしょうか。
308デフォルトの名無しさん:2008/04/09(水) 17:40:50
TransparentBlt
309デフォルトの名無しさん:2008/04/09(水) 17:44:51
TransparentBlt
310デフォルトの名無しさん:2008/04/09(水) 17:45:29
>>304>>306
わかりやすすぎwwwwwwwwwwwwww
311デフォルトの名無しさん:2008/04/09(水) 17:56:39
最も最近作られた子ウィンドウを取得する方法ってないかな?
312311:2008/04/09(水) 17:57:03
「最も最近」って何だよ俺 orz
313デフォルトの名無しさん:2008/04/09(水) 18:03:30
×俺
○俺ら
314デフォルトの名無しさん:2008/04/09(水) 18:09:14
×俺ら
○お前ら
315デフォルトの名無しさん:2008/04/09(水) 18:17:56
ダイゴロー
316デフォルトの名無しさん:2008/04/09(水) 18:20:39
GetYoungestChildWindow
317デフォルトの名無しさん:2008/04/09(水) 18:21:47
>>316
できました!
ありがとうございます。
318デフォルトの名無しさん:2008/04/09(水) 18:47:26
どういたしまして
319デフォルトの名無しさん:2008/04/09(水) 18:52:35
Youngestって何だよw
せめてLatestぐらいにしとけ
320311:2008/04/09(水) 19:03:44
本当お前ら面白いなw
諦めたほうがよさそうだ。別の方法を探ります
321デフォルトの名無しさん:2008/04/09(水) 19:10:25
もう春休みは終わったはずなのに何というカオス・・・
322デフォルトの名無しさん:2008/04/09(水) 19:31:12
I am NEET!
323デフォルトの名無しさん:2008/04/09(水) 19:41:16
>>320
GetWindowLongで我慢しろブタ野郎!
324デフォルトの名無しさん:2008/04/09(水) 19:45:52
は?
325デフォルトの名無しさん:2008/04/09(水) 20:11:42
WM_PAINT メッセージを発行する Win32APIって何だったでしょうか?
326デフォルトの名無しさん:2008/04/09(水) 20:13:23
UpdateWindow
327デフォルトの名無しさん:2008/04/09(水) 20:13:51
>>326
thx
328デフォルトの名無しさん:2008/04/09(水) 20:14:51
InvalidateRectじゃなくて?
329デフォルトの名無しさん:2008/04/09(水) 20:17:53
漏れは GetMessage だと思うんだ
330デフォルトの名無しさん:2008/04/09(水) 20:18:17
Win32APIなんぞ久しいが
InvalidateRectは領域を無効化することで再描画させると記憶してる
331デフォルトの名無しさん:2008/04/09(水) 20:27:21
GetMessageじゃなくSendMessageとかPostMessageではなくて?
332デフォルトの名無しさん:2008/04/09(水) 20:29:22
知らないならレスしないでください
333デフォルトの名無しさん:2008/04/09(水) 20:47:59
議題:なぜこのスレはゆとりほいほいになったのか
334デフォルトの名無しさん:2008/04/09(水) 20:57:44
知らないならレスしないでください
という言葉を無敵だと思ってるから
335デフォルトの名無しさん:2008/04/09(水) 21:17:08
GetMessageを呼びだしたスレッドに属するウィンドウに無効領域があり、
他にウィンドウメッセージが無ければ、その時点でWM_PAINTが生成される。
336デフォルトの名無しさん:2008/04/09(水) 21:23:07
>>331
ウィンドウメッセージのキューは単純なFIFOではないのよ。

わかりやすいのはWM_TIMERかな。
たとえば100msec毎にWM_TIMERが送られてくるようにして、
わざとメッセージポンプを数秒間止めてみて、再開後にどうなるのか、
ちょろっとプログラムかいて試してみ。

WM_PAINTも同様。
337デフォルトの名無しさん:2008/04/09(水) 21:56:37
>>311
なかなか面白そうな質問なんで調べてみたがなかなか無いな。
フック使えば出来るが個人的にフック嫌いだしなー。
338デフォルトの名無しさん:2008/04/09(水) 22:21:59
>>337
意外だな
このスレはフック大好き人間だらけなのに

ま、解決策をすぐフックに持っていく短絡思考な回答者は嫌いだが
339デフォルトの名無しさん:2008/04/09(水) 22:29:50
フック大好きなのは質問者という事実
340デフォルトの名無しさん:2008/04/09(水) 22:39:20
好き好きフック船長!!!
341デフォルトの名無しさん:2008/04/09(水) 22:57:24
質問者以外もフック大好きだろ
>>48とか>>80-81とか

個人的に次々々バージョンぐらいのWindowsからSetWindowsHookEx/CreateRemoteThreadとかは
Vistaの64-bitドライバみたいに未署名モジュールは使えなくすればいいと思っていたりする
342デフォルトの名無しさん:2008/04/09(水) 23:02:48
>>341
そんなことになったら、自作ヘボソフト介助ツールが使えなくなるじゃないか!
世の中にはいいソフトなのにフロントエンドが腐ってる物が多いんだぞ
343デフォルトの名無しさん:2008/04/09(水) 23:12:41
>>338
Winのフックってシステム的に美しくないじゃん。

フックを使ったら負けだと思ってる (大学生 21歳 嘘)
344デフォルトの名無しさん:2008/04/09(水) 23:20:54
フックでウインドーズをファックするわけよ。
345デフォルトの名無しさん:2008/04/09(水) 23:37:16
>>342
他プロセスに簡単に介入できる現状の方が問題だろ

どうしても自作ソフトでフックが必要なら、デジタル署名を取得するか
自分しか使わないならレジストリ設定や起動オプションなんかで無効化してしまうか
仮想PCで飼えばいい訳でだな

それに次々々バージョンなんてあと10年ぐらい先の話だろう
346デフォルトの名無しさん:2008/04/10(木) 10:42:22
case WM_NOTIFY:
lpSChange = (LPNMSELCHANGE)lp;
if((lpSChange->nmhdr).hwndFrom != hMon ||
(lpSChange->nmhdr).code != MCN_SELCHANGE)
return FALSE;
MonthCal_GetCurSel(hMon, &st);
wsprintf(szBuf, _T("%d年 %02d月 %02d日の予定"), st.wYear, st.wMonth, st.wDay);
SetWindowText(hStatic, szBuf);
wsprintf(szApp, _T("%d-%02d-%02d"), st.wYear ,st.wMonth, st.wDay);
MyShowPlan(hEdit, szApp);
SetFocus(hEdit[0]);
}
return FALSE;
}

猫でもわかるの本で勉強しているんですが
(lpSChange->nmhdr).hwndFrom

この->の意味がいまいち良くわからないんです。
検索しても解説しているのが見つからないので質問させていただきました。
誰か御教授頂けると嬉しいです(><)
347デフォルトの名無しさん:2008/04/10(木) 10:46:01
>>346
まずはその本を窓から投げ捨てた上で油をかけて燃やせ。
話はそれからだ。

あとスレ違い。
operator ->()は構造体へのポインタから構造体のメンバにアクセスするための演算子。
348デフォルトの名無しさん:2008/04/10(木) 10:50:22
>>347
放火犯で捕まるのは嫌です
349デフォルトの名無しさん:2008/04/10(木) 10:50:48
不法投棄の上に放火
350デフォルトの名無しさん:2008/04/10(木) 11:00:09
>>347
バージョンの誤差さえ何とかすれば結構いい本だと思ってたんですが、、ダメなんでしょうか(´・ω・`)
->のこと大体把握できました、ありがとうございます。
そしてスレ違いすいませんでした。
351デフォルトの名無しさん:2008/04/10(木) 13:38:30
>>350
ちゃんと理解していなくて、なんとなく動いているプログラムを量産する、
いないほうがマシなプログラマを育成するタイプの本だな。

もちろん、作者の人の行為自体は馬鹿にできないが。
352デフォルトの名無しさん:2008/04/10(木) 13:40:07
APIリファレンスとしてはいいと思う
353デフォルトの名無しさん:2008/04/10(木) 13:47:20
英語版MSDNでも読めばいいじゃない
354デフォルトの名無しさん:2008/04/10(木) 13:50:11
いや、馬鹿にできるよ。
猫のせいでどれだけ糞コードが世に出回ったと思っているんだ。
355デフォルトの名無しさん:2008/04/10(木) 13:51:46
猫はやりたいことに必要なAPIとかググるキーワードを見つけるために
使うんだったら分からなくもない
コード自体はどうしようもないほどに糞
356デフォルトの名無しさん:2008/04/10(木) 14:32:25
てか->はC言語の問題でAPI使ってどうこう以前の問題
357デフォルトの名無しさん:2008/04/10(木) 14:33:34
10年ぐらい前はGoogleなんて無かったしWin32APIの日本語での情報も少なかったから多少は役に立ったとかそんなとこだろ
今となっては正直無くてもいいと思う

まあ最近は適当に検索すると.NETばっかり出てきて鬱になるがw
358デフォルトの名無しさん:2008/04/10(木) 14:54:45
この辺で話題を変えておこうか
359デフォルトの名無しさん:2008/04/10(木) 14:58:50
XPスタイルのタブコントロール上のトラックバーコントロールの背景色をきちんと描画するにはどうしたらいいんでしょうか?
EnableThemeDialogTextureを適用したダイアログに乗せる方法だと、
そもそもダイアログの背景にグラデーションがかからないのでダメでした。
トラックバーコントロールのWM_CTLCOLORSTATICで、DrawThemeParentBackgroundを呼び出す方法だと。
ウインドウが隠れてから復帰するときにトラックバーコントロールが消えてしまいダメでした。

もう完全に詰まってしまった感じなのですが、トラックバーコントロールを独自実装する以外で何か良い方法はないでしょうか?
360デフォルトの名無しさん:2008/04/10(木) 15:12:37
DrawThemeParentBackgroundを呼び出す方法で、
ウインドウから隠れて復帰するときだけデフォルトウインドウプロシージャを呼び出すようにすれば、
一応きちんと描画されるのですが、判定が難しく、あまり確実な方法ではないので、他の方法はないでしょうか。
361359-360:2008/04/10(木) 16:23:32
激しく泥臭い方法だけど一応できたっぽいかもしれません。

>>360の方法をどうにか詰めて、
WM_CTLCOLORSTATICが呼ばれる前にWM_ERASEBKGNDが1回呼ばれた時は、
タスク切り替えでウインドウが隠れてから復帰なので、
このときにデフォルトウインドウプロシージャを呼び出さないと、
トラックバーコントロールが消えてしまうので、
デフォルトウインドウプロシージャを呼び出す。

WM_CTLCOLORSTATICが呼ばれる前にWM_ERASEBKGNDが2回呼ばれた時は、
タスクの最小化から復帰したときで、
このときはDrawThemeParentBackgroundを呼び出さないと、
背景がおかしくなるのでDrawThemeParentBackgroundを呼び出す。

としたら、どうにかできました。
ただ、このやり方はあまりにも泥臭く、不確実な感じがするので、
引き続き、他の方法がありましたらよろしくお願いします。
362デフォルトの名無しさん:2008/04/10(木) 18:24:22
カスタムドローで全部描いちゃえ
363デフォルトの名無しさん:2008/04/10(木) 18:30:36
いやオナニードローだ!
364デフォルトの名無しさん:2008/04/10(木) 18:39:14
_CrtDumpMemoryLeaks関数などを使用してメモリリークをチェックしているのですが、
WinMain関数より前で確保されたメモリ領域が解放されない現象が発生しています。
自分で用意しているグローバル変数のコンストラクタ内では
メモリ確保に絡む処理は行なっていません(いないはずです)。
このメモリリークがどこで発生しているか調べる方法はないでしょうか?
365デフォルトの名無しさん:2008/04/10(木) 18:43:23
_CrtSetBreakAllocとかあったはず。
APIじゃないけどね
366デフォルトの名無しさん:2008/04/10(木) 18:47:06
msvcrt.dllがKnownDLLsだから理論上はCランタイム関数もWin32APIということになる
367デフォルトの名無しさん:2008/04/10(木) 18:49:54
>>364
それはVCの話であって、Win32APIの話ではないよ。

> WinMain関数より前で確保されたメモリ領域が解放されない

_CrtDumpMemoryLeaksが指摘してくる、ということ?

メモリが解放されなくて困っているのでなければ、
WinMain関数に入ってすぐの時点で、
_CrtMemCheckpoint を使ってスナップショットをとり、
WinMain関数からreturnする前に自分で、
_CrtMemDifferenceや_CrtMemDumpStatisticsを
呼んで、そのスナップショットとの差分をチェックしよう。
368デフォルトの名無しさん:2008/04/10(木) 18:55:26
>>365
すいませんWin32でしか使えないというようなことが書いてあったので
ここで質問してしまいました。

その関数は使用してみたのですがWinMain関数の先頭で呼んでも
ブレークしてくれず、確保番号も若かったので
WinMain関数より前に確保されたメモリ領域なのではないかと推測しました。
何よりも先にその関数を呼び出すようなことは可能なのでしょうか?
369デフォルトの名無しさん:2008/04/10(木) 18:57:49
>>369
>_CrtDumpMemoryLeaksが指摘してくる、ということ?
そうです。

その方法を試してみます。
370364 368:2008/04/10(木) 18:58:58
すいませんアンカーミスです。
×>>369
>>367
371デフォルトの名無しさん:2008/04/10(木) 19:28:06
ややすれ違いですが詳しい人が多いので質問させてください。
いわゆるIEコンポを利用しているプログラムのIEサーバウィンドウが
実際にアクセスしているURLを調べるにはどうすればいいでしょうか?
ウェブ検索してみるとSPY++で調べたと思われる記述を見つけましたが
あれこれためしてみても私にはその方法がわかりませんでした。
表示内容とプロセスが掴んでいるリソースを見れば想像つくものも
ありますが、今回の件ではよくわからなくて困っています。

※すれ違いが許容範囲を超えてるなら誘導頂けると助かります。
372デフォルトの名無しさん:2008/04/10(木) 20:53:58
>>371
一時的に見たいだけなら、これが一番簡単だと思う。
・ローカルプロクシサーバを建てて、IEのプロクシに設定。
・アクセス後、プロクシのログを見る。
373デフォルトの名無しさん:2008/04/10(木) 21:21:28
>>372
同じようなもんだが、Fiddlerを愛用してる。
一応MS製だし、簡単なので。
374デフォルトの名無しさん:2008/04/10(木) 21:37:06
>>371
KB249232で出来ないか?
375デフォルトの名無しさん:2008/04/10(木) 21:46:07
>>371
ネットワークのパケットをモニタするのがいいんじゃないの
EtherealとかMicrosoft Network Monitorとかいろいろある
376デフォルトの名無しさん:2008/04/10(木) 22:09:04
>>371
トップレベルウィンドウ→子ウィンドウとクラス名が"Internet Explorer_Server"のものを探してハンドルゲット
見つかったウィンドウにWM_HTML_GETOBJECTを投げてオブジェクトを得る
ObjectFromLresultを使ってIHTMLDocument2のインターフェイスポインタゲット
IServiceProviderのインターフェイスをクエリしてQueryServiceでIWebbrowserAppとIWebbrowser2を指定してIWebbrowser2のインターフェイスポインタゲット
get_LocationURLでURLを得る

どう?w
377デフォルトの名無しさん:2008/04/10(木) 22:15:08
>>376
部外者だがなかなか使えそうな情報サンクス
378デフォルトの名無しさん:2008/04/10(木) 22:27:26
おまいらくらいハイレベルな質問するにはどのくらい勉強すれば良いんでつか。
379デフォルトの名無しさん:2008/04/10(木) 22:37:48
>>377
あ、HTMLDocument2::parentWindowでIHTMLWindow2取得してからIServiceProviderクエリだったかも
380デフォルトの名無しさん:2008/04/10(木) 22:37:51
>>378
平均的な大学受験勉強ぐらい
381デフォルトの名無しさん:2008/04/10(木) 22:38:41
その答えは風に吹かれているのさ
382デフォルトの名無しさん:2008/04/10(木) 22:38:43
>>379
そのまんま使うほど馬鹿じゃないよb
383371:2008/04/11(金) 04:18:24
多くのアドバイスありがとうございます。
URLとかきましたがコンテンツの元がインターネットなのか
PEのリソースなのか、レジストリなのかローカルファイルなのか
コードに埋め込みなのかはたまたそれ以外なのかわかりにくいのです。
まだ良く見てないのですが後で読み直してけんきゅうしてみます。
ありがとうございました。
384371:2008/04/11(金) 05:11:49
一通り読ませて貰ってそれを参考にウェブ検索したところ参考になるページがたくさん見つかりました。
早速なにかスクリプトでも書こうと思ったのですが、↓のページのVBサンプルのバイナリがあっさり
そのまま使えました。助かりました。
http://www.google.com/search?btnI=I%27m%2BFeeling%2BLucky&q=Me.Text+=+%22GetHtmlObject%22
385364:2008/04/11(金) 11:03:50
自己解決しました。

new演算子をオーバーロードして、そこで_CrtSetBreakAlloc関数を呼ぶことで
確認出来るようになりました。

問題の確保場所はグローバル変数のstd::mapのコンストラクタ内でした。
とりあえずグローバル変数をやめることで対処しました。

スレ違い失礼しました。
386デフォルトの名無しさん:2008/04/11(金) 11:06:31
↓ズコーのAA
387デフォルトの名無しさん:2008/04/11(金) 12:03:54
>>385
他人事だからどうでもいいけど、その行動は馬鹿にされるから
匿名じゃないところでは人に話さない方がいいよ
388デフォルトの名無しさん:2008/04/11(金) 12:33:55
親ウィンドウのメニューの非表示が押されたら
モードレスダイアログを非表示にしたいのですが、
ShowWindowを使っても出来ないのですが…
ちなみに
親のWM_INITDIALOGでモードレスダイアログを表示しています。
389デフォルトの名無しさん:2008/04/11(金) 12:45:38
ひゃっふwwwww
自己解決wwwwww
390デフォルトの名無しさん:2008/04/11(金) 13:14:45
事故解決しますた
391デフォルトの名無しさん:2008/04/11(金) 18:53:19
一つのウィンドウを5等分して5個のクラスが担当領域を描画をそれぞれ行おうと思うのですが

クラス内部にstaticなメモリHDCを用意して共有し、最後に表HDCに転送する形で描画しようと考えてるのですが
この場合、描画処理は排他的にした方が用意のでしょうか?
392デフォルトの名無しさん:2008/04/11(金) 18:54:21
用意くはないかもな
393デフォルトの名無しさん:2008/04/11(金) 18:55:36
>>391ですが日本語でOKすぎるorz
何とか察してください
394デフォルトの名無しさん:2008/04/11(金) 18:59:24
>>391
当然だろ?
395デフォルトの名無しさん:2008/04/11(金) 19:21:06
387のどのへんが恥ずかしいのか、よくわからないので
だれかおじさんにこっそり教えてくれないか
396デフォルトの名無しさん:2008/04/11(金) 19:22:01
387→385です orz
397デフォルトの名無しさん:2008/04/11(金) 20:23:06
Hookについて質問です.

http://ruffnex.oc.to/kenji/text/api_hook/
このサイトをベースに勉強しました.
その過程で下記の2点の疑問が出てきました.

1.
SetWindowsHookExは, あくまでメッセージキューを持ったスレッドのみに
関連付けられるのですよね?

2.
上記サイトでは, LoadLibraryとGetProcAddressを常にフックしていますが,
アプリケーションの組み方によっては有効でない気がします.
というのは, ウィンドウを表示させるようなアプリケーションを作るとして,
メッセージループに入る前にInitial処理としてLoadLibrary及びGetProcAddress等を
行うことが多いかと思います.
となると, Initial処理の二つの関数はフックされずに正常なアドレスを返してしまいますよね.
この問題って通常どうやって対処するものなのですか?
それとも, 上記の様なことを行うのは珍しいとして, 気にしないものですか?
398デフォルトの名無しさん:2008/04/11(金) 20:41:08
2。
だいたいのプロセスでフックが効けばいいんすよ! ってわけにいかないのなら気になるでしょ?

判りやすいのが親プロセスのCreateProcess系をフックしてエントリーポイント到達以前にDllをロードさせる方法
 エントリーポイントを自己JMPに書き換えてループしてる隙にスレッド立てて読ませる
 エントリーポイントをJMPに書き換えてJMP先で読ませる
 IATを書き換えてローダにロードさせる
後者2つはそれぞれgdi++/detoursで実装が読める

399397:2008/04/11(金) 21:10:23
>>398さん
不勉強な故, 見当違いな質問だったら申し訳ないです。

"親プロセスのCreateProcess系をフックしてエントリーポイント到達以前にDllをロードさせる"
とありますが, これはHookプロセスをどのプロセスよりも前に起動する必要がある
ということになりますか?

また, SetWindowsHookExを使ってしまうとメッセージキューでのDLLロードになってしまうので, 使わない方がベターですか?
400デフォルトの名無しさん:2008/04/11(金) 21:37:33
なにがしたいのかわからないし、どのプロセスよりも前に、とかベターですかといわれても困る
方法と特徴を調べて目的に合う方法をとればいいんじゃない?

全プロセスが対象! ってのならユーザモードの仕事じゃないとは思う
401デフォルトの名無しさん:2008/04/11(金) 22:02:38
>>400
すみません. 抽象的な話で進めようとしていました...

目的は,
デバッグとして, 自作アプリケーション(不特定多数)からイーサネットに流しているデータを読む.
ただし, 極力, 自作アプリケーションはHookを意識したくない.
(LoadLibrary, GetProcAddressを禁止する等を行いたくない)
というものです.

Hookプロセスは常駐型にしようと思っていますが,
被Hookプロセスはメッセージキューを必ずしも持つとは限りません.
そこで, SetWindowsHookExは使えないと考え, 別の方法を探しました.
http://japan.internet.com/developer/20050830/26.html#section_2
上記アドレスの方法をやってみたのですが, プロセスIDから引っ掛けて
フックを行うようになるので,
この方法ではLoadLibrary/GetProcAddress系がダメだと考えて手詰まり状態になりました...
402デフォルトの名無しさん:2008/04/11(金) 22:21:22
>>401
自作アプリが対象なら、外部からインジェクションしてフックするのではなく、
それぞれの自作アプリからフックDLLを明示的にLoadLibraryしなよ。
403デフォルトの名無しさん:2008/04/11(金) 22:26:25
フックの質問する人って、どうして不適切な手段を選ぶんだろうな。
404デフォルトの名無しさん:2008/04/11(金) 22:27:16
フックならジェイソン尾妻に教わるといい
405デフォルトの名無しさん:2008/04/11(金) 22:57:42
またフックか
検索すりゃ腐るほどでてくるだろ
406デフォルトの名無しさん:2008/04/11(金) 23:02:47
>>402
アプリケーションがフックDLLを取り込むという意識が入り込んでいる為, その手法だと目的に反してしまいます...
また明示的に行うと, GetProcAddressにより正しいアドレスを取得できてしまう為,
それらの関数を禁止しなければなりません.

デバッグの時のみリンクを行ってHookさせる手法がシンプルだとは思いますが, 極力違う方法も検討したいのです.
(勿論, 他の方法を検討した結果, その手法がベストであればその手法を選択すると思います.)
407デフォルトの名無しさん:2008/04/11(金) 23:06:48
>>406

#ifdef _DEBUG
LoadLibrary(_T("mydebughook.dll"));
#endif

こんなのをWinMainの先頭に入れとけばいいじゃないか
408デフォルトの名無しさん:2008/04/11(金) 23:29:58
> また明示的に行うと, GetProcAddressにより正しいアドレスを取得できてしまう為
自作アプリなら "GetProcAddressでアドレスを取得しているか" なんて分かるだろ
で、必要に応じてGetProcAddressもフックするか、関数の先頭をJMP命令に書き換える方法を使えばいい

> 被Hookプロセスはメッセージキューを必ずしも持つとは限りません
これも自作アプリなら分かるだろ
スレッドを作った時やコンソールアプリはPeekMessage(NULL, NULL, ...)でもしてキューを作ればいい


なんか自作アプリと言ってる割には情報が不確か過ぎるが、本当に自作アプリをフックしたいのか?
409デフォルトの名無しさん:2008/04/12(土) 01:06:26
>>395
グローバル変数等静的なオブジェクトのコンストラクタ内など、
WinMain() や main() の実行よりも前に確保されたメモリは、main()関数終了前など早めの段階では
未だ解放されていないため、その辺で_CrtDumpMemoryLeaks()が呼び出されるとリ―クとして報告されてしまう。
実際には「まだ」解放されていないだけでリークではないのだけれども。

MFCを使っていないなら、_CrtSetDbgFlag( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF )とすれば、
諸々完了した正しいタイミングで自動的に_CrtDumpMemoryLeaks()を呼び出してリークのチェックを行ってくれる。
MFC は ExitInstance あたりで勝手に_CrtDumpMemoryLeaks()を呼びだすので、MFCを使用したコードの倍には
こうしても正しい結果を得られない。

こんな説明ではどうだろう。
410デフォルトの名無しさん:2008/04/12(土) 01:09:08
>>401
確か起動する全てのプロセスに指定したdllをロードさせるためのレジストリキーがあったと思う。
なんていったっけっかな・・・
411デフォルトの名無しさん:2008/04/12(土) 01:21:42
AppInit_DLLs? 
これは全てのプロセスじゃなくてuser32.dllをロードするプロセスのみだが。
412デフォルトの名無しさん:2008/04/12(土) 01:23:42
そっか。ありがと。
んではダメだなぁ。
413デフォルトの名無しさん:2008/04/12(土) 02:30:14
全てのプロセス・・・?
自作アプリのみのフックじゃなかったのか


つうか自作アプリなんて真っ赤な嘘で、本当はチートツールでも作りたいだけだろ
414デフォルトの名無しさん:2008/04/12(土) 02:44:27
SetWindowsHookEx使いたくなかったら、リモートスレッドくらいしかないな。
もちろん外部からアドレス計算して書き込む事も可能だけど面倒だね。
SetWindowsHookExが楽なのは、権限無視して潜り込める事だ。

ネットワーク限定だと、ファイアーウォール等の実装と同じ方法で覗けた気もするけどやり方忘れた。
XP以上辺りからOSでそんな機能が用意されていたような。

他には、葱のような実装か。
415デフォルトの名無しさん:2008/04/12(土) 02:45:32
>>413
??
416デフォルトの名無しさん:2008/04/12(土) 02:50:37
>>414
権限は無視されないだろ
そんなことできたらUsers権限でサービスとかもフックできることになるしセキュリティもへったくれもねー
417デフォルトの名無しさん:2008/04/12(土) 02:57:24
裏画面の操作について質問です

mDC = CreateCompatibleDC(hDC);
で互換DCを取得し、mDCに対して文字の表示などの操作を行った後
表画面にmDCを転送したいのですが
転送はBITMAPなどと同じようにBITBLITで転送でよいのでしょうか?

色々試しているのですが何も表示されません


418デフォルトの名無しさん:2008/04/12(土) 03:01:21
>>417
キモいフックネタが続いてる時に君のような質問を見るとホッとするよ。
419デフォルトの名無しさん:2008/04/12(土) 03:12:11
>>415
何がわからないのかがわからない。
>>413の疑問はもっともだろが。
420デフォルトの名無しさん:2008/04/12(土) 03:14:01
小学校の頃騎馬戦をやったのだが人数が合わなくて自分の騎馬だけ女子が上に乗ることになった
最初は上に乗る女子も恥ずかしかったらしく男子の腕にお尻をつけないようにして戦っていた
でも次第に騎馬の体勢が崩れてきて右側を支えていた奴がこけてしまったので
上に乗っていた女子は左側を支えていた自分の右腕にまたがるような格好になった
自分も右腕だけで支えるのはきつかったがなんとか崩れないように右腕で女子を上に押し上げていた
するとその女子は
「あっ・・・まって・・・ちょっと・・・あっ・・・あたってる・・・あたってる・・・あっ・・・」
と自分の右腕を挟みこむようにして腰を捻った。
小学生の自分に「あたってる」のが何なのか分かるはずもなく、
「今はまだがまんして!」
と訳も分からず励ましていた。
女子は「う、うん」と頷いたきり前を見据えてこちらを見ようともせず、力んだ顔をしている。
横から敵の騎馬が突進してきた。
旋回しようとするがバランスが崩れてしまい、右腕を思いっきりその子の股間に押し付けるように
突き上げてしまった。
「ひゃぅんッ」と声が漏れた。
なんだ?今の
見上げると真っ赤な顔とした女子と目が合った。
その喘ぎ声の理由を知る由もなく、「痛かった?」と尋ねると、
何も言わずにフルフルと首を振った。
「よし!このまま攻め込むぞ!」と隣の友人が叫んだ。
俺もそれに乗じて二人で前方へ疾走する。
が、当然それには上下運動を伴い、上に乗る女子の股間は何度も俺の右腕に押し付けられる。
「んっんっんっ・・・」
振動に合わせて彼女の鼻にかかった息が漏れる。
俺は小学生なりに何か淫靡なオーラを感じ取っていた(恐らく友人もだろう)が
勝負中に立ち止まるわけにも行かず、相変わらず女子に上下運動を与え続けていた。
しかし次第に彼女の「んっんっ」が「んっあっふっ」と声音を帯びてきた。
俺の頭に乗せていた手に次第に力がこもり、ギュウとつかんでいるのが分かった。
しかしここでアクシデントが。友人が足を捻り、転びかけ、体勢を立て直すために踏ん張ったが、その時に彼女の股間に最大の衝撃を与えてああ30行だ
421デフォルトの名無しさん:2008/04/12(土) 03:32:23
>>417
DC には何も描画したり表示したりできない。
したがってもちろん描画結果も格納されない。

ビットマップやプリンタに描画したり表示したり「するために」DCを使う、というだけ。
417 のやりたいようなことをするためには、CreateCompatibleBitmapでビットマップを作り、
それに (適切なDCを用いて) 描画しておいて 、BitBlt でそのビットマップを表示すればよい。

オフスクリーンビットマップやメモリDCでググればサンプルは多数見つかるだろう。
422デフォルトの名無しさん:2008/04/12(土) 05:01:53
>>421
色々調べてやってみたのですが

mDC = CreateCompatibleDC(hDC);
bitmap = CreateCompatibleBitmap(mDC ,800 ,600);
SelectObject(mDC ,bitmap);

HBRUSH brush = CreateSolidBrush((COLOR_BTNFACE+1));
SelectObject(mDC , brush);

PatBlt(mDC,0,0,800,600,PATCOPY);

BitBlt(hDC, 0, 0, 800, 600, pHDC, 0, 0, SRCCOPY);

この処理をすると背景が黒字に灰色の点が点々と表示されるようになってしまいましたorz
423デフォルトの名無しさん:2008/04/12(土) 05:08:18
424デフォルトの名無しさん:2008/04/12(土) 05:10:42
CreateCompatibleBitmapの第一引数をhDCにしてみる
425デフォルトの名無しさん:2008/04/12(土) 05:48:59
>>422
CreateCompatibleDCで作られたメモリDCには初期状態で1*1の
モノクロビットマップがセットされている。
CreateCompatibleBitmapでそのDCを指定してしまうと、
モノクロのビットマップが作られてしまう。

っていうか、それ以前の問題として、そのBitBltのところのpHDCは
どこから出てきたんだ?
426デフォルトの名無しさん:2008/04/12(土) 05:56:19
427デフォルトの名無しさん:2008/04/12(土) 06:00:01
知らないならレスしないでください
428デフォルトの名無しさん:2008/04/12(土) 06:33:31
>>425
phdcは古いコードの名残で誤植でした
とりあえず塗りつぶしまでは上手くいきました、ありがとうございます

PatBltで背景を塗りつぶすときウィンドウ標準の灰色で塗りつぶしたい場合は
ブラシで直接色を指定しか方法はないのでしょうか?
429デフォルトの名無しさん:2008/04/12(土) 06:42:57
GetSysColorBrushならシステムカラーインデックスで指定できるけど
430デフォルトの名無しさん:2008/04/12(土) 10:03:08
>>409
なる。でありがとう

非MFCであれば、あえて_CrtDumpMemoryLeaksなどを使わなくても_CrtSetDbgFlagで正しい結果が得られる
むしろmainとかの段階では得ることができない。
にも関わらず_CrtDumpMemoryLeaksで頑張ろうとしているうえ
対策としてプログラム構造まで変えてしまったのが364 ってわけか

良くあることだけど確かに恥ずかしいね 超がんばれ
431デフォルトの名無しさん:2008/04/12(土) 11:33:52
クラスのインスタンスをグローバル変数にしてはいけない、というのはC++の常識よ。
メモリリーク云々の問題に関係なく、グローバル変数にするのはやめるべき。
432デフォルトの名無しさん:2008/04/12(土) 12:38:20
>>431
それどこの国の常識?
433デフォルトの名無しさん:2008/04/12(土) 12:41:15
クラスのインスタンスに関わらずグローバル変数を使う事自体が邪悪なのは常識だが、
クラスのインスタンスに限って邪悪とするのは非常識。
434デフォルトの名無しさん:2008/04/12(土) 13:01:28
WIN32SDKでモードレスダイアログに親ウィンドウが隠れてしまうのですが、
親ウィンドウを最前面に表示させるにはどうすればよいですか?
435デフォルトの名無しさん:2008/04/12(土) 13:04:29
グローバル変数駄目っていっても
標準関数の中で使われてないか?

結局内輪でルール統一できれば問題ないよ。
プログラム上のどこでも使う変数や構造体を関数にわざわざ
渡していくことはナンセンスだ。

ひとつの変数をいろんな用途に使う方がよっぽど邪悪。
436デフォルトの名無しさん:2008/04/12(土) 13:10:36
クラスのインスタンスをグローバル変数にしてはいけないのは、
それが、main関数に入る前に他の関数を呼び出すこと、だから。

>>435
> プログラム上のどこでも使う変数や構造体を関数にわざわざ渡していくことはナンセンスだ。
> ひとつの変数をいろんな用途に使う方がよっぽど邪悪。

明らかにダメなやりかたと比べてマシだというのは、ナンセンスだと思う。
437デフォルトの名無しさん:2008/04/12(土) 13:13:22
POD 型のグローバル変数も関数の戻り値で初期化可能だろ。C++ では。
438デフォルトの名無しさん:2008/04/12(土) 13:15:29
グローバルじゃなくてstatic なメンバ変数でもそうだしねぇ。
439デフォルトの名無しさん:2008/04/12(土) 13:18:56
>>435
グローバル変数使ってる標準関数は軒並み糞だと言われている。
乱数列2つ使いたいのに使えないよこの糞がとか、
strtok をスレッドセーフにしてくれよこの糞がとか。
440デフォルトの名無しさん:2008/04/12(土) 13:19:07
すいませんが

APIと何の関係が?
441デフォルトの名無しさん:2008/04/12(土) 13:31:11
GetDesktopWindow();の戻り値を
CreateDialogに指定してみたたら親ウィンドウを最前面に表示出来ましたが、
親ウィンドウから文字列をモードレス側のリストビューに追加出来ません。
何故ですか?
442デフォルトの名無しさん:2008/04/12(土) 13:34:06
それは
朝食にパンを食べたら、雨が降りました。何故ですか、
と聞いているようなもんだよ。
443デフォルトの名無しさん:2008/04/12(土) 13:34:17
状況説明は詳細に。
444デフォルトの名無しさん:2008/04/12(土) 13:35:25
>>437
可能かどうかと、やるべきかどうかは、別問題。
445デフォルトの名無しさん:2008/04/12(土) 13:38:11
>>444
コンストラクタ/デストラクタ内で変な事してなけりゃ同じことだろ。
クラスがどうかとか無関係。
446デフォルトの名無しさん:2008/04/12(土) 13:47:16
>>442
私が提示している情報以外に必要なものを教えて下さい。
447デフォルトの名無しさん:2008/04/12(土) 13:48:34
仕様。
448デフォルトの名無しさん:2008/04/12(土) 13:55:55
>>445
変なこと、ねぇ。

たとえばnewを使うとか、な。
449デフォルトの名無しさん:2008/04/12(土) 13:57:23
new とか別にいいだろ・・・。
450デフォルトの名無しさん:2008/04/12(土) 13:59:53
>>447
具体的に
451デフォルトの名無しさん:2008/04/12(土) 14:00:44
グローバルで問題になるのは
他の翻訳単位内にある初期化の必要なグローバル変数に依存する
処理を記述する(初期化前に使ってしまうかもしれない)ってところだな。
逆に言えば、それさえしなけりゃ大した問題は無い。
452デフォルトの名無しさん:2008/04/12(土) 14:02:23
>>449
newが投げた例外をmain関数でもcatchできないのはマズいだろう。
453デフォルトの名無しさん:2008/04/12(土) 14:03:32
>>452
その場で catch して abort しろよ・・・。
454デフォルトの名無しさん:2008/04/12(土) 14:04:17
どうせ abort するしかないんだから
catch できなくても大した問題ではない。
455デフォルトの名無しさん:2008/04/12(土) 14:07:43
元の発言の常識によれば、

static std::vector<int> hoge(100);もダメ、
struct Point {
 int x,y;
 Point(int x_, y_) : x(x_), y(y_) {};
}; で、

static Point ptZero(0,0); もダメか。
こんなのも全部シングルトンにすんのかw
456デフォルトの名無しさん:2008/04/12(土) 14:08:58
スマン static は良いのか・・・
457デフォルトの名無しさん:2008/04/12(土) 14:10:29
シングルトンは初期化のタイミングをずらしたグローバル変数に過ぎない。
少ないに越した事は無いが、利便性を考えると欲しい事はあるな。
458デフォルトの名無しさん:2008/04/12(土) 14:17:58
NTFS以外のファイルシステムも使えるから保証はないよな。
459デフォルトの名無しさん:2008/04/12(土) 14:27:17
まとめてC++スレに移動してくださいです。。。。
460デフォルトの名無しさん:2008/04/12(土) 14:38:40
本格的に邪魔
461デフォルトの名無しさん:2008/04/12(土) 14:42:15
>その場で catch して abort しろよ
何そのグローバル変数で配置されることを前提の実装
462デフォルトの名無しさん:2008/04/12(土) 15:10:12
どうせ二人ぐらいが言い争ってるだけだろ
次はgotoネタか?
463デフォルトの名無しさん:2008/04/12(土) 15:19:03
breakもcontinueもifもgotoの一種だよな
464デフォルトの名無しさん:2008/04/12(土) 15:21:08
だ ま れ
465デフォルトの名無しさん:2008/04/12(土) 15:37:42
い や だ
466デフォルトの名無しさん:2008/04/12(土) 15:49:34
死ね
467デフォルトの名無しさん:2008/04/12(土) 16:40:08
死 に た く な い
468デフォルトの名無しさん:2008/04/12(土) 17:21:43
>462
2人ではなく病気の彼1人だろ
469デフォルトの名無しさん:2008/04/12(土) 17:59:32
最近の自演は高度化してるな
470デフォルトの名無しさん:2008/04/12(土) 18:03:34
従順な奴隷のように、期待した通りの回答を得られないと
逆恨みしてスレに粘着して荒らすなんて、もうね。

プログラミングを勉強する前に、勉強すべきことがあるでしょうに。

ま、コミュニケーション能力が低いまま就職して、痛い目にあえばいいんだよ。
471デフォルトの名無しさん:2008/04/12(土) 18:13:12
>>470
答えられない屑は黙ってろ
472デフォルトの名無しさん:2008/04/12(土) 18:16:26
473デフォルトの名無しさん:2008/04/12(土) 18:17:04
>>470
知ったかで回答して周囲から叩かれたのをまだ根に持ってるようだな
474デフォルトの名無しさん:2008/04/12(土) 18:39:19
どう考えても粘着しているのは「知らないならレスしないでください」と言われた回答者です。
本当にありがとうございました。
475デフォルトの名無しさん:2008/04/12(土) 19:04:24
あなたの代わりにMSDNで調べてあげるスレ

ってのを作って分離しようよ
476デフォルトの名無しさん:2008/04/12(土) 19:05:32
グローバル変数の話は↓のスレを再利用してやってくれ

sizeof(char)が必ず1でも、省略すべきではない
http://pc11.2ch.net/test/read.cgi/tech/1187521586/
477デフォルトの名無しさん:2008/04/12(土) 19:37:18
>>475
お前がそのスレ立てろ、今すぐに(笑)
478デフォルトの名無しさん:2008/04/12(土) 19:49:11
ピクチャーボックス再描画について質問です.

状況は次の通りで, 2.の消える問題を解決したいです.
1. 他のウインドウが重なっても, 重なっているウィンドウを移動させると
  隠れていた部分が再描画される.
2. 他のウインドウが重なっていて, 重なっているウィンドウを終了させると
  隠れていた部分が消える.

やっている処理はこんな感じです.
1. 裏画面に表示データをセット → InvalidateRect
2. WM_PAINT処理では, BeginPaint → BitBlt → EndPaint

何をトリガーに再描画指示を出せばよいか, アドバイスお願いします.
479デフォルトの名無しさん:2008/04/12(土) 20:18:22
>何をトリガーに
WM_PAINTじゃね? 最近(Vista)のアエロじゃ発生しないらしいけど
480デフォルトの名無しさん:2008/04/12(土) 20:20:43
>>478
> 何をトリガーに再描画指示を出せばよいか

その発想が間違ってる。

表示内容が変ったらOSに伝える
再描画タイミングはOSが判断する

WM_PAINTが適切に送られてこない、あるいは、
BeginPaintで適切な領域が指示されないために、
正しく表示されないのであれば、
OSに不適切な値を渡していると思われる。
481デフォルトの名無しさん:2008/04/12(土) 20:21:53
アエロ…………プクク(笑)
482デフォルトの名無しさん:2008/04/12(土) 20:25:06
>>478
ウィンドウを内容を表示したまま移動 → WM_PAINTを何度も受け取るので多少失敗していても気がつかない
だったりして。
483デフォルトの名無しさん:2008/04/12(土) 20:25:32
WM_PAINT以外にも描画しないといけないメッセージがあるけど、
それ関係ない?
484デフォルトの名無しさん:2008/04/12(土) 20:32:13
NTFSのアクセス権チェック方法として、ACEを取得する必要があるのがわかったのだが、
自身の権限と取得されたACEの中で一番有効なACEと比較しなければならないとおもうのだが、
どのACEが有効となっているかの判断はどうすればよろしいでしょうか?
※関連:GetFileSecurity、GetSecurityDescriptorDacl
485デフォルトの名無しさん:2008/04/12(土) 20:51:24
>>478
ピクチャーボックスってVBか.NETの事か?
それともStaticコントロールをそう呼んでるのか?

いずれにしろピクチャーボックスなんてコントロールはWin32には無い
Staticコントロールに描画したいならSS_OWNERDRAWスタイルにしてWM_DRAWITEMに応答しとけ
486デフォルトの名無しさん:2008/04/12(土) 21:05:37
なんかおまいらひまだな。。。。
最近ニュースで話題の学校裏サイト状態w
でも、ほんとはここはWin32APIスレですよ。
487デフォルトの名無しさん:2008/04/12(土) 21:06:34
>>481
Aeroをローマ字として読むとアエロになるから別におかしくないだろ
無知は黙ってろよ
488デフォルトの名無しさん:2008/04/12(土) 21:33:26
Googleはゴーグルって読むんだよ
無知は黙ってろ
Yahooはヤホーって読むんだよ
無知は黙ってろ
gooはゴーって読むんだよ
無知は黙ってろ
489デフォルトの名無しさん:2008/04/12(土) 21:34:19
煽りも煽られもいらないっす
490デフォルトの名無しさん:2008/04/12(土) 21:39:41
自作アプリで状況に応じて、BS入力の可否を制御するプログラムを作ってるところで、
少し聞きたいことがありまつ。

Viewで処理前にWM_CHARをとらえて、それでBSおよびCtrl+BSを禁止する方向で
BSの場合は、VK_BS(0x09)で検知できた。<= OK
BS+Ctrlが捕えられなかったので調べると、wparamに0x7fが入ってた。 <= これが不思議
0x7fを調べるとVK_F16。まずF16なんて使ったことないしF16ってなんなの?押せるの?
0x7fって昔の記憶ではDELETEボタンだったなあと思いつつ、それとは何か関係ある?

0x7fで処理してしまえばそれでプログラム的にはOKなんだけど、
詳しい人もけっこういるので質問させて。
491デフォルトの名無しさん:2008/04/12(土) 22:09:25
WM_CHARだと仮想キーコードではなく、
ASCIIとかの文字コードだと見なすべきだと思う。

そういう意味では0x7f = DELに1票。
VK_BACK = 0x09もASCIIではBSだし。

仮想キーコードが出てくるのはWM_KEYDOWN/UP系だよ。
492デフォルトの名無しさん:2008/04/12(土) 22:11:27
あああ、そうだった。VKで処理しちゃだめだったね。
どうもありがとう!
493デフォルトの名無しさん:2008/04/12(土) 22:18:03
491さんにごめんなさいな追加カキコ。
VK_BS(0x09)って書いたけど、厳密には0x08でした。
ASCIIでももちろん0x08です。
494デフォルトの名無しさん:2008/04/12(土) 22:25:46
質問
SetRectの存在意義がわかりません
495デフォルトの名無しさん:2008/04/12(土) 22:41:15
昔、1バイトでもコードを減らしたい時代があったのだよ。
496デフォルトの名無しさん:2008/04/12(土) 22:44:05
今でも組み込みとかでは1バイトでも減らそうと努力してる
497デフォルトの名無しさん:2008/04/12(土) 22:44:39
涙ぐましいな
498デフォルトの名無しさん:2008/04/12(土) 22:44:48
SetRect はコンパクトにまとまって分かりやすい事無いか?
499デフォルトの名無しさん:2008/04/12(土) 22:58:11
無い
500478:2008/04/12(土) 23:23:48
>>485にあるように変更して無事に目的を達成できました.
レスしてくれた皆様, ありがとう.
501デフォルトの名無しさん:2008/04/12(土) 23:39:50
どういたしまして











何も答えてないけど
502デフォルトの名無しさん:2008/04/13(日) 00:35:04
>>501
氏ね
503デフォルトの名無しさん:2008/04/13(日) 00:50:07
504デフォルトの名無しさん:2008/04/13(日) 03:10:35
PCにFPUがあるかどうか調べるAPIはありますか
505デフォルトの名無しさん:2008/04/13(日) 03:15:27
すごーく馬鹿な事を聞いているぞ。お前

落ち着いてシャワーでも浴びてFPUについてググってみれ
506デフォルトの名無しさん:2008/04/13(日) 03:19:21
IsProcessorFeaturePresent
507デフォルトの名無しさん:2008/04/13(日) 04:51:29
DOS窓用に作成したプログラムをwindowsへ移植しようと
ソースファイルを別のプロジェクトにコピーして使用したら

'/DUNICODE' がプリコンパイル済みヘッダーに定義されていますが、現在のコンパイル処理には定義されていません。
'/D_UNICODE' がプリコンパイル済みヘッダーに定義されていますが、現在のコンパイル処理には定義されていません。
'/D_DLL' がプリコンパイル済みヘッダーに定義されていますが、現在のコンパイル処理には定義されていません。

というエラーがいっぱい出てきてしまったのですがこれは何なのでしょうか?
今までは問題なく動作してたのですが・・・

508デフォルトの名無しさん:2008/04/13(日) 05:14:15
プリコンパイル済みヘッダを消せばいいんじゃないか?
509デフォルトの名無しさん:2008/04/13(日) 05:18:22
環境スレに行った方がいいと思うが。
510デフォルトの名無しさん:2008/04/13(日) 11:34:46
ぷリコンパイルヘッダを読み込む#include画無いんじゃないかな。
プロジェクトのプリコンパイルヘッダの項に指定されてるヘッダをcppで#includeしてみそ
511デフォルトの名無しさん:2008/04/13(日) 12:19:30
ぷりコンパイル
512デフォルトの名無しさん:2008/04/13(日) 13:49:14
ぷリコンパイル
513デフォルトの名無しさん:2008/04/13(日) 14:35:13
GetWindowTextW()でエディットコントロールから
Unicodeで文字を取得したいんですがうまくいきません

取得した文字(例えばABC123)と
_T("ABC123")をwcscmpで比較すると一致しませんでした

Unicodeで英数字を取得する方法はありませんか

XPSP2,VC2008です
514デフォルトの名無しさん:2008/04/13(日) 14:42:23
>>513
デバッガで変数に格納されてる文字列を見比べて見れ
515デフォルトの名無しさん:2008/04/13(日) 14:58:59
>>514
ありがとう
取得した文字のNULの前にごみがついてることがわかりました
解決できそうです
516デフォルトの名無しさん:2008/04/13(日) 14:59:12
_T使うならW使うなという話ではあるが
517デフォルトの名無しさん:2008/04/13(日) 15:22:39
NULの前にごみって・・・
どう考えても改行コードだろそれ
518デフォルトの名無しさん:2008/04/13(日) 15:26:30
>>517はエスパーか・・
初歩的なミスで申し訳ない
519デフォルトの名無しさん:2008/04/13(日) 15:46:25
Vistaで追加されたAPIの一覧表みたいなのは、MSDNサイトのどこにありますか?
520デフォルトの名無しさん:2008/04/13(日) 15:54:32
>>519
お前は少しでも探す努力をしたのかと。

ttp://msdn2.microsoft.com/en-us/library/aa383687(VS.85).aspx
521デフォルトの名無しさん:2008/04/13(日) 15:57:32
>>520
( ゚д゚) ・・・
 
(つд⊂)ゴシゴシ
 
(;゚д゚) ・・・
 
(つд⊂)ゴシゴシゴシ
  _, ._
(;゚ Д゚) …!?

ほんと、何処見てたんでしょうね・・・(Functions by Categoryの中探してたところで力尽きました)
522デフォルトの名無しさん:2008/04/13(日) 20:40:47
directXスレと迷いましたがこちらで質問です。

DirectSoundで再生したサウンドの終了を検出するために
イベントオブジェクトを使うのですが、
WaitForMultipleObject関数って、イベントがシグナル状態になるまで
制御が帰ってこないんですよね。

作っているのはゲームで、音が終了したら何かしたい、
終了するまではゲームを進行したいというわけなんですが
わざわざイベントをチェックするためのスレッドを作るしかないんでしょうか。

「指定したハンドルのイベントが現在どっちの状態か取得する関数」
なんてものがあれば、解決するんですが。
(毎ゲームフレーム毎にそれを呼んでチェックすれば済む)
523たぶん522:2008/04/13(日) 20:41:02
アクティブウィンドウの選択中のテキストを取得するにはどうすればいいですか?
ウィンドウのアプリケーションによって取得方法をたくさん用意しなきゃ駄目ですかね?
あと、キャプチャソフトに良く有るように画面上で矩形範囲を指定して、その範囲内に
あるウィンドウのテキストを取得する場合はどうすればいいですかね?
524デフォルトの名無しさん:2008/04/13(日) 20:50:25
矩形内ってのはどういう仕様にするかって点で少し面倒だな。
複数のウィンドウが入る場合があるから。

ある点にあるウィンドウは ChildWindowFromPoint を
デスクトップウィンドウから始めて何度も適用すれば取得できるのかな?
やったことないから分からないけど。
あとはそれがエディットボックスなら(ウィンドウクラス名で判定できるか)、
普通に取得すりゃええんでないかな。
525デフォルトの名無しさん:2008/04/13(日) 20:52:49
> たぶん522
( ´,_ゝ`)プッ
526デフォルトの名無しさん:2008/04/13(日) 20:53:14
>>522
WaitForSingleObject

使い方はMSDNライブラリで。
527デフォルトの名無しさん:2008/04/13(日) 20:53:59
>>523
最初から名前欄にレス番号を入れる必要ないよ。
おかげで522である俺がいきなり別の質問したみたいじゃないか。
528522:2008/04/13(日) 20:55:25
>>526
コピペミスです。Singleを意図してました。
というか、SingleでもMultipleでも質問の意図するところは同じなんですが…

あー、もしかして、タイムアウトを0ミリ秒に指定すれば済む、ってこと?
529デフォルトの名無しさん:2008/04/13(日) 20:56:50
>>528
> あー、もしかして、タイムアウトを0ミリ秒に指定すれば済む、ってこと?

聞く前に、まずはMSDNライブラリ見ろって。
530522:2008/04/13(日) 21:02:17
失礼しました。
ずっとMultipleで検索してたからMSDNもヒットしなかったのです。

というわけで解決です。恥ずかしい。
531522:2008/04/13(日) 21:09:11
余談。

ヒットしないのがそもそもおかしいわけで…良く見てみたら
どっかのコピペだったので、最後のsが無かったからヒットしなかった模様。
それくらい、ヒットして欲しいなぁMSDN。
532デフォルトの名無しさん:2008/04/13(日) 21:21:13
>>531
キーワードに
WaitForMultipleObject
を入れれば、
WaitForMultipleObjects
WaitForMultipleObjectsEx
が出てきますが?
533522:2008/04/13(日) 23:00:42
>>532
MSDNオンラインなんだけど、
ヒットは7件で、どれもちょっと違う話ばかり。
534デフォルトの名無しさん:2008/04/13(日) 23:31:15
あー、オンラインか・・・。
535デフォルトの名無しさん:2008/04/13(日) 23:35:58
オンライン版の検索にはMSNの検索エンジンよりgoogle使ったほうがいいよ
536デフォルトの名無しさん:2008/04/13(日) 23:44:59
オンライン版わざわざ使う奴はマゾだと思う。
537デフォルトの名無しさん:2008/04/13(日) 23:46:13
オフライン版なんか持ってない
538デフォルトの名無しさん:2008/04/13(日) 23:53:46
オフライン版のメモリ使用量の多さにオンライン版を使いつつあるぞ
539デフォルトの名無しさん:2008/04/13(日) 23:57:03
メモリ使用量が多い?
20世紀からタイムマシーンでやってきたのか?
540デフォルトの名無しさん:2008/04/14(月) 00:03:35
22世紀から来ましたが何か?
541デフォルトの名無しさん:2008/04/14(月) 00:07:04
オフライン版も相当だめだけどな。
542522:2008/04/14(月) 00:17:33
googleでもMultipleでs無しだとMSDNにたどり着けませんでした。
本当にありがとうございました。

いっとくけど、コピペ範囲ミスじゃなくて
参考にしたサイトが間違ってたんだからねっ!
543デフォルトの名無しさん:2008/04/14(月) 00:20:00
なんで急にツンデレになるんだよw
544デフォルトの名無しさん:2008/04/14(月) 00:21:40
自分は、いまだにVC6世代のMSDNライブラリを併用している。
545デフォルトの名無しさん:2008/04/14(月) 00:22:53
> 参考にしたサイトが間違ってたんだからねっ!

んな言い訳が通るかよ。

甘え杉。
546デフォルトの名無しさん:2008/04/14(月) 00:25:46
>>542
Google日本語版を使わないのはプログラマの常識
ttp://www.google.com/search?num=100&hl=en&q=WaitForMultipleObject

二つ目の検索結果がMSDNなわけだが。
547デフォルトの名無しさん:2008/04/14(月) 00:33:03
自分ならこうだな。
Wait For Multiple Object site:microsoft.com - Google Search
http://www.google.com/search?num=100&hl=en&q=Wait+For+Multiple+Object+site%3Amicrosoft.com
548デフォルトの名無しさん:2008/04/14(月) 00:34:54
単数形/複数形ぐらい間隔で判断できるようになれよ
これだから英語の苦手な日本人はダメなんだよ
549デフォルトの名無しさん:2008/04/14(月) 00:39:07
>>542
site:microsoft.comを付けると1番上に出てくるのだが。
http://www.google.co.jp/search?hl=ja&q=waitformultipleobject+site%3Amicrosoft.com
550デフォルトの名無しさん:2008/04/14(月) 00:39:31
うろ覚えのAPIはwindows.hを検索したほうが早いかも。
551デフォルトの名無しさん:2008/04/14(月) 00:41:11
なんで数によって名前変えるんだよ。
552デフォルトの名無しさん:2008/04/14(月) 00:43:58
>>548
間隔とか、英語の前に日本語を・・・
553デフォルトの名無しさん:2008/04/14(月) 00:47:19
>>552
それはおバカなIMEを作ったMSに言いたまへ
554デフォルトの名無しさん:2008/04/14(月) 00:58:24
MSIMEの日本語版作ってるのシナチク共だぞ。
で、反日が愛国的だと思ってる連中がまともなの作ると思うか?
この間も、魔性でニュースざたになったセン公いただろ?
見事に反日工作の罠にはまっちゃったんだよ。
わざとヘナチョコに作ってある。
555デフォルトの名無しさん:2008/04/14(月) 00:59:50
出た、ネットで知った真実
556522:2008/04/14(月) 01:14:44
まとめると、
・Google日本語版を使わない
・site:microsoft.com をつける
・単数形/複数形ぐらい間隔で判断
・日本語版作ってるのシナチク=反日が愛国的=まともなの作らない

全てプログラマの常識、ということですね、わかります。

>>545>>550
うろ覚えどころか初めて知ったので。
まぁ、ちょっとでもアヤシイと思ったら
windows.hを検索するくらいのことはしろ、甘えるなと。
557デフォルトの名無しさん:2008/04/14(月) 01:18:26
windows.hなんて他のヘッダをincludeしてるだけだから検索しても何も出んぞ
558デフォルトの名無しさん:2008/04/14(月) 01:21:29
たしかに。

じゃあ、VC2005を使ってるので、
エディタのどっかに適当に貼り付けて、
右クリックして「宣言へ移動」をやることにします。
559デフォルトの名無しさん:2008/04/14(月) 02:01:22
>>522
毎フレームチェックするなら、そもそもイベントを使う必要ないんじゃないか?
560522:2008/04/14(月) 03:00:12
>>559
DirectSoundの説明に、「終了(や、音が任意の再生位置にきたこと)を
検知するためには、CreateEventでもらったハンドルを
これこれの構造体にいれてこれこれ設定しろ」と。

それ以外に終了を知る方法がどうにも見当たらないのですよ。
一応、なんかのフラグで取得できるらしいことは見つけたのですが
ミリ秒単位の精度が悪いようなので却下。

DirectXスレの話題になっちゃいますね。
561デフォルトの名無しさん:2008/04/14(月) 03:09:55
再生時間ぐらい自分で計算すればいいだろ
562デフォルトの名無しさん:2008/04/14(月) 03:58:57
>>560
GetStatusじゃ駄目なのか?
563デフォルトの名無しさん:2008/04/14(月) 08:35:52
>>554
どおりで普段使わないような中国人名や中国の地名が一発変換できるわけだw
世界史をまとめるときに相当役立ったが。
564デフォルトの名無しさん:2008/04/14(月) 08:53:40
どおりで(笑)
565デフォルトの名無しさん:2008/04/14(月) 09:22:07
MS-IMEか。

マイクロソフトにユーザ登録した数年後にリリースされたWindows付属のIMEでも、俺の名字は変換できない。
個人情報保護云々以前の時代の話なので、ユーザ登録のデータから人名辞典を作るくらい、やって当然だろうに。
566デフォルトの名無しさん:2008/04/14(月) 09:30:12
ジャストシステムがATOKのWin95へのバンドルを断わった時点で、
既に日本のかな漢字変換の歴史は終わった。
567デフォルトの名無しさん:2008/04/14(月) 09:31:15
何の話をしてるんだw

IMM32?
568デフォルトの名無しさん:2008/04/14(月) 09:51:31
>>566
OS付属のIMEを使うのが当たり前というのは、おかしいと思う。
569デフォルトの名無しさん:2008/04/14(月) 09:53:18
OSのオマケがショボいからこそ、サードパーティのIMEが生き残れると思うんだが。
570デフォルトの名無しさん:2008/04/14(月) 10:27:50
マジレスするとMSのせかいせんりゃくにおける日本のプレゼンスが下がったということか
571デフォルトの名無しさん:2008/04/14(月) 11:58:57
>>567
推敲しないのをIMEの責任にすりかえる莫迦と
特定アジアに対して差別的表現をするのが「愛国的」だと思い込んだ莫迦が
暴れているだけです。
572デフォルトの名無しさん:2008/04/14(月) 12:21:30
>>565
ユーザの変換の学習を送らせて、辞書を強化するとしても、
ある程度の量がないと追加しないだろ。
お前の名前が相当珍しいんじゃないか。

辞書ツールで何を学習したか眺めるのは面白いけどな。
大抵、文節の区切りだと認識できなかったらしいものが、サ変形動名詞として入っているけれど。
573デフォルトの名無しさん:2008/04/14(月) 13:09:23
>>572
俺の書き方が悪くて誤解させてしまってスマン。

ユーザ登録というのは、
ローカルの辞書への単語登録ではなく、
ソフトを買った時にハガキやFAXを送ってやるアレのことですよ。
574デフォルトの名無しさん:2008/04/14(月) 14:22:50
すんごい亀だが
>>411
AppInit_DLLsってVistaで廃止されなかったっけ
575デフォルトの名無しさん:2008/04/14(月) 14:25:21
たしかレジストリの場所が変わったはず。
576デフォルトの名無しさん:2008/04/14(月) 14:26:59
だから?
577デフォルトの名無しさん:2008/04/14(月) 14:27:12
煽るなよ馬鹿
578デフォルトの名無しさん:2008/04/14(月) 14:32:24
そのレジストリを持ち出してる時点で質問者の意図する所とは大きくズレてるのに気付け馬鹿
579デフォルトの名無しさん:2008/04/14(月) 14:38:16
だから?
580デフォルトの名無しさん:2008/04/14(月) 16:35:19
うわーすげーのびてる
581デフォルトの名無しさん:2008/04/14(月) 16:42:56
だから?
582デフォルトの名無しさん:2008/04/14(月) 16:48:33
うんこ
583デフォルトの名無しさん:2008/04/14(月) 16:50:08
だから?
584デフォルトの名無しさん:2008/04/14(月) 18:14:21
ところでVistaのスレッドプールのAPIって、
あれやっぱり、コールバック関数のなかでCRT使ったらリソースリーク起こすよね。
使いどころが分からない。
585デフォルトの名無しさん:2008/04/14(月) 18:29:43
体?
586デフォルトの名無しさん:2008/04/14(月) 18:44:58
サントリーのカラダ バランス飲料は
587デフォルトの名無しさん:2008/04/14(月) 18:46:51
このスレっていつも荒れてるね。
きっとドトネト厨のWin32API撲滅運動だろう。そうとしか考えられない。
588デフォルトの名無しさん:2008/04/14(月) 20:20:05
>>584
スタティックリンク版はリーク起こすけど、DLL版は大丈夫かもしれない。
ドキュメントには、Libcmt.libにリンクする実行可能ファイル、と書いてあった。
589デフォルトの名無しさん:2008/04/14(月) 20:44:11
THREAD_DETACHを受け取れる、
msvcr*のほうじゃなくて?
590デフォルトの名無しさん:2008/04/14(月) 20:48:03
>>588
ん? どういうこと?
CRTのスタティックリンクかダイナミックリンクかがかかわってくるの?
というかMSDNのどこにそんなことが書いてあるの?
591デフォルトの名無しさん:2008/04/14(月) 20:58:02
http://codezine.jp/a/article/aid/235.aspx?p=2
のコラムを読むとか
592デフォルトの名無しさん:2008/04/14(月) 22:13:19
あ、そういうことか。
DLL版はDLL_THREAD_DETACHを使えるので、
CreateThreadで作られたスレッドでCRTが使われたとしても、解放できるって事か。
なるほどなるほど。
593デフォルトの名無しさん:2008/04/15(火) 00:20:42
nlp
594デフォルトの名無しさん:2008/04/15(火) 00:23:17
ga
595デフォルトの名無しさん:2008/04/15(火) 07:07:52
ちょっと質問があるのですが、簡単な自作ゲームを作成しました。
友人に見せたいと思って、友人のパソコンに実行ファイルとグラフィックをコピーしました。
実行してもエラーが出るだけで動きませんでした。デバッグビルドが悪いのかと思い、リリースビルドを行ってから
友人のパソコンに持って行きました。動きませんでした。
win32APIで作成した後の話なのですが、フリーウェアのような配布型はどのように作成するのでしょうか?
僕のPC、友人のPC共にXPです。開発環境はVC.netです。友人のPCには開発ソフトは入ってません。
よろしくお願いします。
596デフォルトの名無しさん:2008/04/15(火) 07:12:50
何か DLL が足りないんだろうかな?
597デフォルトの名無しさん:2008/04/15(火) 07:16:11
「エラーが出ました」とか「動かない」とか…
598デフォルトの名無しさん:2008/04/15(火) 07:31:05
どーせMSVCRT系統とか、ドトネトがはいってねーんだろ。
manifestを付け忘れてる可能性もあるけど
599デフォルトの名無しさん:2008/04/15(火) 07:42:06
>>595
どうしてエラーメッセージを無視してまで
エスパー募集するのだろうか?
私はそれが知りたい
600デフォルトの名無しさん:2008/04/15(火) 09:10:42
「エラー」というタイトルで本文の無いメッセージボックスが出るだけとか
win95で必要なDLLがなかったらそんな感じだったなー
601デフォルトの名無しさん:2008/04/15(火) 09:14:41
ああ、それはなんか覚えがあるw
602デフォルトの名無しさん:2008/04/15(火) 09:51:36
Windowsにログインしているユーザーのパスワードを取得するAPIは
ありますでしょうか?
ユーザー名はGetUserName()で取れました。

よろしくお願いいたします。
603デフォルトの名無しさん:2008/04/15(火) 10:04:08
>>602
パスワードは取得できない。
604デフォルトの名無しさん:2008/04/15(火) 10:32:00
取れたら意味ねーよなw
605デフォルトの名無しさん:2008/04/15(火) 10:35:08
OutlookやIEは取れたような
606デフォルトの名無しさん:2008/04/15(火) 10:47:33
>>603
2000ならwinlogonに対してReadProcessMemoryすれば取れた気がする
607デフォルトの名無しさん:2008/04/15(火) 12:29:32
なんて穴だらけなOSだ
608デフォルトの名無しさん:2008/04/15(火) 12:30:25
今度2000が堅牢って言ってる奴を見かけたらこのネタを使うか
609デフォルトの名無しさん:2008/04/15(火) 12:49:27
>>607
誰でもwinlogonに対してReadProcessMemoryできるわけじゃないぞ。

デバイスドライバとして送り込んで物理メモリをスキャンして探すとか、
ページファイルの中身をスキャンして探すとか、
そういうことまでするのと一緒だと思うのだが。
610デフォルトの名無しさん:2008/04/15(火) 13:12:12
デバッグ権限を取れば可能だろ
まあ2000に限らずadmin権限で使ってる奴はアホだと思うが
611デフォルトの名無しさん:2008/04/15(火) 13:39:34
誰でもデバッグ権限を(以下略

セキュリティに真っ先に大穴を開けるのは人間だな。
612デフォルトの名無しさん:2008/04/15(火) 14:36:51
>>611
文脈が理解できてない気がするのは気のせい?
613デフォルトの名無しさん:2008/04/15(火) 15:45:44
利便性と安全性は反比例の関係にある。
とよく言われる。
614デフォルトの名無しさん:2008/04/15(火) 16:27:42
ぬるぽ
615デフォルトの名無しさん:2008/04/15(火) 18:16:58
ガッ・・・///
616デフォルトの名無しさん:2008/04/15(火) 18:41:09
XPだって物理メモリにアクセスさえできればパスワード無しでログインできたりするらしいし。
仕方が無い部分じゃないのか。
617デフォルトの名無しさん:2008/04/15(火) 18:52:15
XPはデバッグ権限取れたらNtSystemDebugControlでやりたい放題じゃなかったか?
確かMSの言い訳が「デバッグ権限取れるアカウント(=Administrators)を常用するな」だったような
618デフォルトの名無しさん:2008/04/15(火) 19:13:34
そりゃデバッグ権限はそういうものだからな。
デバッグ権限さえあれば、
lsass.exeにアドレス空間にコード注入してCreateRemoteThreadすることだってできる。
619デフォルトの名無しさん:2008/04/15(火) 19:30:12
管理権の無い管理者には残業代が支給されるぞ。
620デフォルトの名無しさん:2008/04/15(火) 19:33:58
ワロス
621デフォルトの名無しさん:2008/04/15(火) 19:35:46
〜まとめ〜

・デバッグ権限が取れてwinlogonにReadProcessMemoryできる状況などというのは
 システムプロセスにコード注入して青画面出したりできるのでセキュリティ云々以前の話
・そんなアカウントを常用してるやつはアホ
・利便性と安全性は反比例の関係にある
・管理権の無い管理者には残業代が支給される
622デフォルトの名無しさん:2008/04/15(火) 20:46:08
そのデバッグ権限というのはDebugger Usersグループに入ってももらえるのか?
だったら普段Users(かつDebugger Users)で、
管理者じゃないぞと勇んでいた俺ワロスなんだが\(^o^)/
623デフォルトの名無しさん:2008/04/15(火) 20:59:34
LogonUserとかパスワード直に書くAPIフックすると取れちゃうんだよな
XPだとGINAをこっそり入れ替えてWlxLoggedOutSASから拾ったり
624デフォルトの名無しさん:2008/04/15(火) 21:33:34
まぁそんな事できてる時点で既に色々やり放題なんだけどな
625デフォルトの名無しさん:2008/04/15(火) 21:58:21
制限ユーザーでもVisualStudioでデバッグできるし、もうなんだかなあ
626デフォルトの名無しさん:2008/04/15(火) 22:05:29
DebuggerUserは、レイモンドに言わせると、
「結局何でもデバッグできるんだからAdmini持ってるのと同じ。
 セキュリティ用の機構じゃなくて、転ばぬ先の杖。
 Admini常用してrmdir /s %windir%とかしたら痛いでしょ」
 
627デフォルトの名無しさん:2008/04/15(火) 22:21:57
case WM_COMMAND:
内部のswitch(LOWORD(wParam))の一部を
自作GUIクラスに取り込みたいのですが
switch文は上から評価されるから末尾にLOWORD(wParam)を引数に取ればいいとは思うのですが
必要かった場合defaultにどうやって渡せばいいでしょうか?
628デフォルトの名無しさん:2008/04/15(火) 22:25:18
処理したかどうかを戻り値とか引数経由で返す
629デフォルトの名無しさん:2008/04/15(火) 23:46:30
>>627
何を言ってるのか、わかんない。
630デフォルトの名無しさん:2008/04/16(水) 00:12:58
DefWindowProcのことを求めているのだろうか?
確かによくわからん日本語やね
631デフォルトの名無しさん:2008/04/16(水) 00:16:40
switch-caseはほぼ連番で数が多いとジャンプテーブル
数が少なかったり飛び飛びだとif-elseif-elseif-...で二分探索

という風にコンパイラが最適化していた気がする
632デフォルトの名無しさん:2008/04/16(水) 00:26:20
でっていう
633デフォルトの名無しさん:2008/04/16(水) 01:18:25
やっと規制解除された…

>>562
たぶんそれが、簡単に取得できるけど精度がわるいってやつです。
バッファがサウンドボードに確保された場合に、タイミングがおかしいらしい。
イントロ1回→ずっとサビ みたいなのを流したいので
ストリームと同じで、シビアなタイミングが要求されるので却下です。
試してないけど。
もうイベント式で自作ライブラリに組み込んだから変えるのもメンドイ。
634デフォルトの名無しさん:2008/04/16(水) 01:29:17
わかりにくい日本語ですいません

switch(LOWORD(wParam))
{
case :
case :
}

とcaseの部分に色々処理がかかれてますが
foo(LOWORD(wParam))として一部のメッセージだけを自作GUIオブジェクトにて処理をさせたいのですが
不必要なメッセージをどうやってスルーしたらいいかということでした
635デフォルトの名無しさん:2008/04/16(水) 01:37:21
まだわからん。もっと具体的に。
こういうこと↓?…じゃないと思うけど

switch(LOWORD(wParam))
{
case : WM_自作で処理しない
 break;
case : WM_自作で処理しない
 break;
case : WM_自作で処理する
case : WM_自作で処理する
case : WM_自作で処理する
 自作のやつ( wParam, lParam );
 break;
}
636デフォルトの名無しさん:2008/04/16(水) 02:02:30
>>634
別に叩くとかではないんだけど、マジでわからん
どうやってスルーとかって書いてあるけど、文章のままにとると>>635みたいな回答になる。
そもそも自作GUIがなんなのかよくわからん(MFCアプリってこと?)

具体的にどういったところに、どういう意図をもって、どうしたいのか
また、そのときにどういう制限があるのか

質問をもっと整理してから頼む
637デフォルトの名無しさん:2008/04/16(水) 02:57:52
>>633
そういう用途ならMIDIの方が向いてると思う
音源依存しまくるのがアレだが
638デフォルトの名無しさん:2008/04/16(水) 10:18:12
>>633
> わるいってやつです。
> 却下です。

人にモノを聞く態度じゃないな。

それはともかくとして、
シビアなタイミングが要求される、という時点で何か間違ってるぞ。
シビアなタイミングが要求されないようにするためのバッファだ。
639デフォルトの名無しさん:2008/04/16(水) 11:15:08
つかdirectxスレで聞いたほうがいい回答がもらえる気が
640デフォルトの名無しさん:2008/04/16(水) 14:32:19
>>630
DefWindowProcを自前で作ったらどれぐらい大変なんだろう
処理すべきメッセージ数だけで1000ぐらいありそう
641デフォルトの名無しさん:2008/04/16(水) 14:43:10
ウインドウメッセージは、OSのバージョンアップで追加される可能性がある。
実際、Windows 3.1時代に、ドキュメント化されていたすべてのメッセージを自前で処理して、
DefWindowProcを使わないプログラムがあった。
いくつかのメッセージは、戻り値が通常と異なったりするが、
それすらちゃんと実装していたので、Windows 3.1では問題なく動いた。
Windows 95にアップグレードすると動かなかった。

自分で処理しないメッセージはDefWindowProcに、常にDefWindowProcに渡すべき。
642デフォルトの名無しさん:2008/04/16(水) 14:47:36
増える可能性っつーか増えないほうがおかしい

XPで仮に全実装しててもVistaでDWM関連メッセージ増えてあぼーん
643デフォルトの名無しさん:2008/04/16(水) 14:50:44
まあいま、メッセージはあまりにも多いので、自前ですべて実装しようという馬鹿もいないだろうけど。
644デフォルトの名無しさん:2008/04/16(水) 15:14:21
メッセージループ作るための単なるプレースホルダとしてウィンドウが欲しい場合
RegisterClassで指定するウィンドウプロシージャにDefWindowProcを直接渡しちゃってもいいんだろうか。
645デフォルトの名無しさん:2008/04/16(水) 16:03:24
ちょっと面白い
646デフォルトの名無しさん:2008/04/16(水) 16:23:05
IRunnableObjectやIRunningObjectTableって何に使うの?
647デフォルトの名無しさん:2008/04/16(水) 16:35:40
DefWindowsProcを直接渡すことが合法かどうかは知らんが
合法だとしても、自関数を一回挟んだほうが気持ちよくない?(気分的に)
648デフォルトの名無しさん:2008/04/16(水) 16:48:37
キーボードについた精子を綺麗に拭き取るAPIを教えてください
649デフォルトの名無しさん:2008/04/16(水) 16:49:47
>>634
>>628が至極的確な答だと思うのだが。
650デフォルトの名無しさん:2008/04/16(水) 17:21:22
>>647
DefWindowsProcかよw

てか、CreateWindowsExならちょっと欲しい気もする。
BOOL CreateWindowsEx(const CREATEWINDOWINFO* lpcwi, HWND* phwnd, int nNumInfo);
みたいな感じ。
Explorerみたいなのを作るときにToolbar/TreeView/ListView/StatusBarを一括して作れそう。

まあそんなの作るなら普通はMFCかWTLを使ってウィザードで自動生成するけどね。
651デフォルトの名無しさん:2008/04/16(水) 17:21:36
>>637
それは実現方法の変更というレベルではなく仕様が違う。
流すのは実は自分の歌声とかだったら無理な話だし
>>639
まぁ、解決したんでいいんです。その後のレスに反応した流れなだけです。
>>648
GetNewKeyboardInBigCamera
652デフォルトの名無しさん:2008/04/16(水) 17:24:36
>>646
> IRunnableObject

OLEコントロール
653デフォルトの名無しさん:2008/04/16(水) 17:33:35
kwsk
654デフォルトの名無しさん:2008/04/16(水) 17:56:14
>>653
とりあえずOLEの本を一冊読むべし。

必読書のくせに絶版になってたりするが。
655デフォルトの名無しさん:2008/04/16(水) 18:00:29
そしてまたInsideOLEを買ってめんどくささにPGをやめる人が増える
656デフォルトの名無しさん:2008/04/16(水) 18:07:29
>>651
細かいけどBicCameraな
657デフォルトの名無しさん:2008/04/16(水) 18:08:38
>InsideOLE
本屋で探し回ったけど、見つかんなかったんだよ('A`)
658デフォルトの名無しさん:2008/04/16(水) 18:10:08
Insideほげほげっていうタイトルの本は読んではいけない。
中身を知って自分で使い方を考えろなんてアホらしい。
中身なんかどうでもいいから、適切な使い方だけを教えてくれればいい。
ところが、そういう本は見つからなかったりする。
なぜならば、
多くのプログラマはサンプルコードを見て使い方を真似ることで、事足りているからだ。
659デフォルトの名無しさん:2008/04/16(水) 18:12:04
中身を知らないと使えないもの・・・MFCとかATLか。

カプセル化がいいかげんなC++なんか使うのやめてC#を使いなよ。
660デフォルトの名無しさん:2008/04/16(水) 18:27:36
中身と適切な使い方、両方必要だ。
661デフォルトの名無しさん:2008/04/16(水) 18:38:21
>>658
Inside本は中身を知りたいときのためのもんだろ。
(とは言っても、往々にして知りたいではなく知らざるを得ないときなんだけどね)
662デフォルトの名無しさん:2008/04/16(水) 18:47:00
>>661
そうなのだが、
「使い方について」いちばん詳しく解説している本
だと思う人が少なからずいるんですよ。
663デフォルトの名無しさん:2008/04/16(水) 18:50:56
VisualC++Express版しかないから、Win32APIしかつかえねーよ。
MFCだのATLだの、コードすらみたことない。
ボタン一つ作るのにも、CreateWindowExなんちゃらかんちゃら。
けど慣れちゃったw
ウィジィウィッグなリソースエディタが無いのだけはつらいが……
664デフォルトの名無しさん:2008/04/16(水) 18:54:00
.NETのクラスライブラリもカプセル化がいい加減だろ
System.Windows.Forms以下のコモンコントロールなんて旧VBのライブラリを移植しただけとしか思えないし
少し前までソースコードも見れなかったし、よくこんなので開発できるなあと逆に感心する
665デフォルトの名無しさん:2008/04/16(水) 18:55:28
カプセル化の意味解ってないんでは・・・
666デフォルトの名無しさん:2008/04/16(水) 19:20:36
>>663
さてはお前全角野郎ってことはお前プログラムしたことないな?
667デフォルトの名無しさん:2008/04/16(水) 19:35:14
>>666
プログラムするって何だよ

お前もプログラムしたことない(笑)だろ
668デフォルトの名無しさん:2008/04/16(水) 19:41:07
.NETのクラスライブラリっての見たこと無いけど、明らかに隠蔽すべきメンバとかも公開になってんのか?
669デフォルトの名無しさん:2008/04/16(水) 19:44:28
>>667
よしなよ負け犬の遠吠えは
670デフォルトの名無しさん:2008/04/16(水) 19:49:28
まぁ、全角で変数宣言とかできるのだが。
671デフォルトの名無しさん:2008/04/16(水) 19:50:56
>>668
んなこたぁない。
internalなClassやprivateなメンバは多々ある。
672デフォルトの名無しさん:2008/04/16(水) 19:51:22
では君は全角で変数宣言しててください。
673デフォルトの名無しさん:2008/04/16(水) 19:57:01
VBで全角の変数名が使えるのを知ったときは感嘆の声をあげたが

ソースは混沌としていた。簡単じゃなかった。くりきんとんくいたい
674デフォルトの名無しさん:2008/04/16(水) 19:57:01
意味わかんね
675デフォルトの名無しさん:2008/04/16(水) 20:00:54
くりきんとんくいたいだけよんだ
676デフォルトの名無しさん:2008/04/16(水) 20:06:08
書き込み時間同じとか…>>674はどう考えても>>673に向けたレス
677デフォルトの名無しさん:2008/04/16(水) 20:08:40
>>664
.NETか。

当初はもっとマシだったらしいが、
VB信者からVBと同じにしろという意見が出て、今のようになったそうな。
678デフォルトの名無しさん:2008/04/16(水) 20:09:14
もしかして、栗金団食いたい、を意図しましたか?
679デフォルトの名無しさん:2008/04/16(水) 20:20:27
>>677
MSのクラスライブラリを使わなくてはいけないという縛りはないから、
文句があるなら別のものを使えばいいんじゃないか?
680デフォルトの名無しさん:2008/04/16(水) 20:42:17
WPF使えよ
681デフォルトの名無しさん:2008/04/16(水) 21:09:41
Win32APIスレなのに、Win32の話題で荒れる事はあっても.NETの話題では荒れないってなぜなんですか!?
誰かおしえてください
682デフォルトの名無しさん:2008/04/16(水) 21:13:36
.NETのことをよく知らないので迂闊に口に出せない人が多いからだと思う。
683デフォルトの名無しさん:2008/04/16(水) 21:15:13
ttp://d.hatena.ne.jp/mzp/20051209/1134143932で紹介されてる
get_kernel_baseっていう関数の「uint address = return_address & 0xFFFF0000」と「address -= 0x10000」
の部分はドスヘッダがきりのいい値であることをあてにしてる感じなのですがこれは保証されてるのでしょうか?

684デフォルトの名無しさん:2008/04/16(水) 21:24:23
MSに聞け
685デフォルトの名無しさん:2008/04/16(水) 21:24:39
>>683
マイクロソフトのデバッグ用のヘルパーAPIを使って、
プロセスにロードされているモジュールの一覧を取得したほうがいいと思うぞ。

ま、変なことしたいのなら、たまたま偶然動いている・・・でも構わないだろ。
686デフォルトの名無しさん:2008/04/16(水) 21:28:54
>>683
保証はされていない。

しかし現状のWindowsでは
EXEやDLLのImageBaseは64KBの倍数でなければならない
という制限があるので、64KBの倍数になっている・・・はず。

繰り返すが、保証はされていない。
687デフォルトの名無しさん:2008/04/16(水) 21:44:59
>>686
意見としてはまったく同意なのだけど、参考までに横から聞いてみたい

>という制限があるので、
の根拠は以下のリンカの制限から導いたもの?
/BASE (ベース アドレス)
ttp://msdn2.microsoft.com/ja-jp/library/f7f5138s(VS.80).aspx

個人的にはWindowsアーキテクチャ(メモリ構造とか)により制限、
みたいな根拠があったりするとしっくりくるんだけど、そういうのがあれば教えてもらえると嬉しい
688デフォルトの名無しさん:2008/04/16(水) 22:30:55
>>687
カーネルレベルではプロセスの生成時に CreateFileMapping 相当のことをやってるから、
原理上最小のアライメントはページサイズ。(x86 では通常 4KB)
64 KB という制限はそのページの内容で合ってると思われる。
689デフォルトの名無しさん:2008/04/16(水) 22:56:35
じゃあなんで64KBなの、というのは
AlphaAXPのおかげなんだよ、っていうところでぐぐったのがこれ
http://blogs.msdn.com/oldnewthing/archive/2003/10/08/55239.aspx
要するにAlphaAXPには上16bitロードと下16ビット加算命令があるんで
64KB境界と決めておけば、、リロケーションするときに上16ビットロード
命令だけを相手にすればいいので楽ちん、みたいな話。
690デフォルトの名無しさん:2008/04/16(水) 22:56:31
>原理上最小のアライメントはページサイズ。(x86 では通常 4KB)
なる。まあページ単位を下回るのはさすがに不自然に感じる

ただASLRの件もそうだし、たとえばベースアドレスを手動で64K単位未満に書き換えて
さらにPEヘッダを再調整したりするとどうなるのか、とか(そもそもできるのか知らないけど)思ったりした

691デフォルトの名無しさん:2008/04/16(水) 22:57:50
そもそもエントリポイント(**CRTStartup)が、LoadLibraryやGetProcAddressを含むDLL(=kernel32.dll)から
呼び出されるというのは将来のWindowsで保証されてるのか?

まぁインラインアセンブラで[ebp+4]にリターンアドレスがあると決め付けてる時点で環境依存だが。
692690:2008/04/16(水) 23:02:58
>>689
おおお、面白い記事をありがとう。読ませてもらうよ

あとレス番の順序は守ってよね!
693デフォルトの名無しさん:2008/04/16(水) 23:03:34
将来はレガシ仕様にはVPCみたいな対応すると思うから別に良いんじゃないの
694686:2008/04/16(水) 23:10:47
>>687
> 以下のリンカの制限から導いたもの?

いいえ。

PEヘッダの制限。
695688:2008/04/16(水) 23:14:35
>>691
サブシステムが Win32 なら保証はされてなくても仮定はして OK だとは思う。
Windows NT 系列では確か初期化フローは次のような感じ。

[プロセス生成時]
・ カーネル中の ZwCreateThread
 ・ ntdll 中のプロセスエントリポイント
  ・ kernel32 のロードと初期化
  ・ kernel32 のエントリポイント
   ・ 各 DLL のエントリポイントの呼び出し
   ・ EXE のエントリポイントの呼び出し

[スレッド生成時]
・ カーネル中の ZwCreateThread
 ・ ntdll 中のスレッドエントリポイント
  ・ kernel32 中のスレッドエントリポイント
   ・ 各 DLL のエントリポイントの呼び出し
696デフォルトの名無しさん:2008/04/16(水) 23:24:43
皆何故そんなことに詳しい?
697686:2008/04/16(水) 23:26:42
ごめん、PEヘッダの制限というよりは、イメージヘルプAPIの制限だった。
ttp://msdn2.microsoft.com/en-us/library/ms680339(VS.85).aspx
698デフォルトの名無しさん:2008/04/16(水) 23:30:39
>>695
プロセスの初期化フローに依存したプログラムを書いたことがあるが、
Windows Updateで提供されるHotFixあてたら、動かなくなったことがあるよ。
699デフォルトの名無しさん:2008/04/17(木) 02:25:35
久しぶりにこのスレでためになった
700デフォルトの名無しさん:2008/04/17(木) 06:27:25
温め納豆の自演だろ
701デフォルトの名無しさん:2008/04/17(木) 06:28:50
>温め納豆

読めない
702デフォルトの名無しさん:2008/04/17(木) 08:07:58
EXEをプロセス上に読み込んで実行するのってどうやるの?

MapViewOfFileだのLoadLibrary/Ex、MapAndLoad辺りでロード
エントリポイントをコールって感じで試したけど上手く行かないです

デバッグしてみるとポインタ自体はきちんとエントリポイントを指しているので
ロード時のアドレステーブルをなんやかんやする部分ができていないのかな
もしかして自前で書かなくちゃいけないんだろうか
703デフォルトの名無しさん:2008/04/17(木) 08:45:39
>>701
そういうときは、その語でぐぐれ。
704デフォルトの名無しさん:2008/04/17(木) 10:04:51
ググったら腹減ってきたw
705デフォルトの名無しさん:2008/04/17(木) 10:51:16
納豆食べられない
706デフォルトの名無しさん:2008/04/17(木) 13:43:37
DirectShowでCLSID_FilterGraphオブジェクトで動画再生をやってみてるんですが
wmvの再生するとカクるというか、数秒ごとに瞬間的に停止して
ブツ切れ再生?になる。
flvを再生(FLV Splitterを後入れ)すると全く正常。

コードはこれと殆ど同じもの
http://www.geekpage.jp/programming/directshow/renderfile.php

Windows Media Playerで同じwmvを再生しても正常。
これ何がまずいんでしょうか?

真空波動研↓
640x480 24Bit Windows Media Video 9 29.97fps 1372.00kb/s
Windows Media Audio 9 44.10KHz 16Bit 2ch 128.02kb/s
707デフォルトの名無しさん:2008/04/17(木) 13:56:18
ブツ切れといえばバッファリングが追いつかない時の典型的な症状だが…
708デフォルトの名無しさん:2008/04/17(木) 13:57:56
DialogBoxで生成したダイアログからメインウィンドウにデータを渡したいのですが
大域変数を使用するしかないのでしょうか?
709デフォルトの名無しさん:2008/04/17(木) 14:01:33
710デフォルトの名無しさん:2008/04/17(木) 14:10:07
>>709
うーん、なんかint型しか返せないみたいですね・・・
711デフォルトの名無しさん:2008/04/17(木) 14:16:16
INT_PTRが返せるなら構造体のポインタでも返せばいいだろ(#^ω^)
712デフォルトの名無しさん:2008/04/17(木) 14:22:25
INT_PTRって単なるint型のポインタだとおもってたーorz
713デフォルトの名無しさん:2008/04/17(木) 14:29:15
ほほえましい流れw
714デフォルトの名無しさん:2008/04/17(木) 14:31:17
INTorPTRって型名にすればわかりやすかったのかもな
715デフォルトの名無しさん:2008/04/17(木) 14:33:19
素直に標準の intptr_t にしてくれと言いたい。
716デフォルトの名無しさん:2008/04/17(木) 14:35:20
DialogBoxではなくDialogBoxParamを使ったほうがいいと思う。

DialogBoxParamの最後の引数に、構造体のポインタを渡し、
ダイアログボックスで、その構造体に値を格納してデータを帰す
そういう感じ。
717デフォルトの名無しさん:2008/04/17(木) 14:41:23
>>715
c のライブラリ関数ならともかく、OSのAPI を処理系依存で
サイズも知れぬ型で規定できるわけないじゃん。
718デフォルトの名無しさん:2008/04/17(木) 14:56:11
知らないならレスしないで下さい
719デフォルトの名無しさん:2008/04/17(木) 15:01:26
せっかく和やかなんだから煽るのは止めれ
メシマズになる
720デフォルトの名無しさん:2008/04/17(木) 15:20:41
>>719
煽るのはやめろ
721デフォルトの名無しさん:2008/04/17(木) 16:36:17
>>720
煽るのはやめろ
722デフォルトの名無しさん:2008/04/17(木) 16:47:31
WritePrivateProfileSection(_T("Section1"),_T("key 1= 1"), path);
WritePrivateProfileSection(_T("Section1"),_T("key 2= 2"), path);
として
[Section1]
key1 = ・・・
key2 = ・・・

とiniファイルに登録していきたいのですが
[Section1]に登録されるのは最後に実行したWritePrivateProfileSectionの内容だけになってしまいます
使い方が間違ってるのでしょうか?
723デフォルトの名無しさん:2008/04/17(木) 16:55:11
>>722
間違ってる。
724デフォルトの名無しさん:2008/04/17(木) 16:55:55
>>722
MSDNライブラリで、WritePrivateProfileSection のページを読め。
725デフォルトの名無しさん:2008/04/17(木) 16:56:48
少し前にも同じ質問があったな。

どっか厨向けのインチキ解説サイトに変な記事でも出たのか?
726デフォルトの名無しさん:2008/04/17(木) 17:13:28
このスレの>>69からにありました
お騒がせしました
便乗質問


[Setting1]
NumOfElement=3 ;; ここで要素数を定義
Element0="Kuso"
Element1="Notanpe"
Element2="Hage"


とかやって、NumOfElementの値を元に、読み書き時にキー名をsprintfで動的に組み立てて
配列要素を読み書きするのって一般的?


某インフラ向けの開発やってたときの厨テクだけど。
728デフォルトの名無しさん:2008/04/17(木) 17:30:06
ときどき見かけるよ。
729デフォルトの名無しさん:2008/04/17(木) 18:02:08
>>727
一般的というか普通はそうするかと。最近使ったファイルの履歴とか。

ところで、GetPrivate〜系って行中の ; 以降をコメント扱いにしてくれないのが気に食わない

GetPrivateProfileStringA("Setting1", "NumOfElement", ...);
とすると "3 ;; ここで要素数を定義" が返ってくる
(この場合は数値が取れればいいからあまり問題ないが)
730デフォルトの名無しさん:2008/04/17(木) 18:03:51
>>729
INIファイルを読み書きするのは、あくまでも、過去との互換性のためで、
本来はレジストリを読み書きするための代物だからね。
731デフォルトの名無しさん:2008/04/17(木) 18:22:27
てかレジストリにコメントなんて無いしw
732デフォルトの名無しさん:2008/04/17(木) 19:33:08
>>729
んなの、自分でパースすべきもんだろう。
733デフォルトの名無しさん:2008/04/17(木) 19:35:00
commentというレジストリ値を作ればいい
というか、きょうびはXMLファイル読み書きがナウい。
735デフォルトの名無しさん:2008/04/17(木) 19:45:57
XML使うのは真性のバカ
736デフォルトの名無しさん:2008/04/17(木) 19:46:04
知らないならレスしないで下さい
737デフォルトの名無しさん:2008/04/17(木) 19:46:52
XMLとかもう終わってるだろ
じゃあYMLで。
739デフォルトの名無しさん:2008/04/17(木) 19:55:54
今日のNGワード

ヽ・´∀`・,,)っ━━━━━━┓
バールのようなものだよ
741デフォルトの名無しさん:2008/04/17(木) 20:17:27
人間が直にいじらない設定ファイルなら、何だっていいよ。
時にはBOOSTのシリアライズを使ってもいいだろう。
742デフォルトの名無しさん:2008/04/17(木) 20:17:39
知らないならレスしないでください
743デフォルトの名無しさん:2008/04/17(木) 22:12:58
>>727-729
なんだ一般的なのか。俺、そのやり方思いついたとき「俺SUGEEwwwwww」とか思ったのにw
744デフォルトの名無しさん:2008/04/18(金) 02:52:38
ファイルのパスを渡して
アイコンオーバーレイを含めた完全なアイコン情報を取得するにはどうすればいいですか?
745デフォルトの名無しさん:2008/04/18(金) 06:08:38
>>744
Googleって知ってますか?
746デフォルトの名無しさん:2008/04/18(金) 06:25:57
>>744
SHGetFileInfo
IExtractIcon
IShellIcon
IShellIconOverlay

好きなの使え。
747デフォルトの名無しさん:2008/04/18(金) 08:32:51
質問があります。
midiOutGetDevCaps()でMIDIデバイスを取得したんですが、MIDI Yokeの仮想MIDI Outデバイスが含まれていませんでした。
midiOutGetNumDevs()でデバイス数を取得してもその分の数は含まれていませんでした。
しかしMusic Studio ProducerなどのDAWソフトではそのデバイスが表示されていて正常に使えています。
何か他に取得する方法があるんでしょうか?
解決策やヒントがあれば教えてください。
ちなみにOSはXP x64です。
748デフォルトの名無しさん:2008/04/18(金) 11:51:21
ハードウェアの追加とかだっけ?XPならコンパネ→マウスとかハードのとこ→左ペイン上の追加のやつ
749デフォルトの名無しさん:2008/04/18(金) 12:18:11
知らないならレスしないで下さい
750デフォルトの名無しさん:2008/04/18(金) 12:32:11
midiOutGetDevCapsでエラーは発生してないんすか?
751デフォルトの名無しさん:2008/04/18(金) 13:53:41
>>747
そもそもMIDI Yokeってx64に対応してたか?
752デフォルトの名無しさん:2008/04/18(金) 13:57:53
32ビットでビルドしたら出てくるんじゃね?
753デフォルトの名無しさん:2008/04/18(金) 15:09:35
>>748
無知が適当に答えると的外れすぎるのは見ていて恥ずかしい
754デフォルトの名無しさん:2008/04/18(金) 15:48:16
>>753別に書き込まなくていいよ
755デフォルトの名無しさん:2008/04/18(金) 15:50:18
Windowsのアーキテクチャだと、32ビットと64ビットを変換するサンクで全てを解決できないんだよな。
756デフォルトの名無しさん:2008/04/18(金) 15:58:31
System32とSySWOW64のどっちを使ってるか
757デフォルトの名無しさん:2008/04/18(金) 17:23:50
Mapleも64ビット対応してないのか
まぁ今のところDTM/DAW用途で64ビットOSを使うなんて正直馬鹿げているとは思うが
758デフォルトの名無しさん:2008/04/18(金) 18:17:44
たいていのVSTが使えないからなぁx64だと
SONARとか本体は64bit対応進んでるんだが
759デフォルトの名無しさん:2008/04/18(金) 19:15:44
質問です。

デスクトップ画面がアクティブな時に特定の処理をしたいと思い、
GetDesktopWindowで取得した値とGetForegroundWindowで取得した値を比較することで
解決しようと思ったのですが、どうやら値が一致しません。

ウィンドウではなく、デスクトップがアクティブかどうかを判別するにはどうするとよいのでしょうか?
760デフォルトの名無しさん:2008/04/18(金) 19:34:02
>>759
NULLだったりしない?

どのウィンドウにもフォーカスが当ってない場合、GetForegroundWindowはNULLを返すよ。
761759:2008/04/18(金) 20:06:20
>>760
C#からDllImport経由で呼び出して、IntPtrとして値を受け取っていたのですがl、65688という値が表示されていたのでNULLではないようです。

質問した後も色々と試してみたりした所、FindWindow("Progman", "Program Manager") で得られた値と
GetForegroundWindowで得られた値を比較する事でデスクトップ上にあるかどうかを特定する事ができましたので
この方法でやってみようと思います。 どうもありがとうございました。
762747:2008/04/18(金) 20:56:08
まさに>>752のとおりでした。
皆さんありがとうございました。
763デフォルトの名無しさん:2008/04/18(金) 21:40:30
IEにWordドキュメントをドロップすると、WordのActiveXコントロール(Automation)が読み込まれて表示されますが、
IEのように.doc拡張子から、関連付けられたActiveXコントロールを取得するには、レジストリのどこを読めばいい?
764デフォルトの名無しさん:2008/04/18(金) 22:24:55
多分APIになると思うのでここで質問。

Windows9x系でファイル名にNEC 特殊文字とかIBM選定IBM拡張文字の重複した文字を
使用した場合どういう扱いになるんでしょうか?
試した分にはどっちかに変換されてるっぽいのですが、詳しいサイトとかあれば教えてください〜。
765デフォルトの名無しさん:2008/04/18(金) 22:55:04
>>763
レジストリを自分で読むより、OleCreateFromFileを使おう。
766デフォルトの名無しさん:2008/04/18(金) 23:45:07
>>765
ありがとです。
でも、それだとWord.Document(Embed)になってしまうのです。
767デフォルトの名無しさん:2008/04/18(金) 23:46:13
>764
[PRB] SHIFT - JIS と Unicode 間の変換問題
http://support.microsoft.com/kb/170559/ja
768デフォルトの名無しさん:2008/04/19(土) 02:02:53
また全角厨か
769デフォルトの名無しさん:2008/04/19(土) 10:59:39
Do でもいい Yo!
770デフォルトの名無しさん:2008/04/19(土) 23:47:48
ディスプレイ上の任意の点のRBG値を取得することってできる?
771デフォルトの名無しさん:2008/04/19(土) 23:50:23
できるよ
772デフォルトの名無しさん:2008/04/19(土) 23:56:23
kwsk
773デフォルトの名無しさん:2008/04/20(日) 00:02:15
ディスプレイと同じサイズの透明なウィンドウを作成してGetPixel??
774デフォルトの名無しさん:2008/04/20(日) 00:11:40
デスクトップのDC取ってGetPixel。
メディアプレイヤーとかオーバーレイ使ってると、見た目と違う値が取れちゃうけどね。
775デフォルトの名無しさん:2008/04/20(日) 00:23:34
ディスプレイにどんな色が表示されているかはハード依存の話。
光学的な測定器を用いるしかない。
776デフォルトの名無しさん:2008/04/20(日) 00:43:55
>>775
770が聞いているのは色じゃなくてRGB値だから、そこまで持ち出すことないだろうに。
777デフォルトの名無しさん:2008/04/20(日) 00:48:28
>>776
770が聞いているのはRGB値じゃなくてRBG値だろ
778デフォルトの名無しさん:2008/04/20(日) 01:03:35
# 764とは別人なので念のため

IMultiLanguage interfaceを使って、UTF8の文字列をUTF16(UCS2?)に変換する
ことは可能でしょうか?UTF16のCodePageの値が見つからなくて。
ちなみにIMultiLanguage interfaceを使って、UTF8 <=> SJISは成功してます。
SJISでなくてもローカルコードなら通るようになってます。

--
自分の作ろうとしてるのはVC6で
* 処理は外からUTF8で文字列が入ってくる
* 内部的に文字列処理を行う
* 国際対応予定のソフト
UTF8 → SJIS(ローカルコード) → A2Wマクロ → 文字列処理でいいじゃんとふと思ったけど、
SJISを一瞬通過させただけで、マルチ言語が扱えなくなる。
なのでUnicode Projectにして、外から来るUTF8は直接UTF16にしなきゃいけない。
という背景でつ
779デフォルトの名無しさん:2008/04/20(日) 01:04:30
>>777
めざといなw
780デフォルトの名無しさん:2008/04/20(日) 01:18:12
>>778
IMultiLanguage は使ったことないのでパラメタがどうなってるかしらないけど、
Windows のコードページで UTF-16 なら 1200(Unicode) か 1201(Unicode Big-endian) じゃないの。
781デフォルトの名無しさん:2008/04/20(日) 01:22:26
>>778
IMultiLanguageのConvertFromUnicodeとConvertToUnicodeはだめ?

あと、ここによれば、1200(リトルエンディアン)や
1201(ビッグエンディアン)とあるけど、使えるかどうかは知らない。
http://msdn2.microsoft.com/en-us/library/ms776446(VS.85).aspx
782デフォルトの名無しさん:2008/04/20(日) 01:24:02
>>780
れすありがとう!おいらも今見つかってちょうど試し始めてたとこ。
(ついでの質問失礼かもしれないけど)
ちなみにUnicode ProjectのLPWSTRってLE?BE?
LEかなと思って試し始めたんだけど、自分のマシンで動いたとしても
機種依存だったらいやだなと思っていて。
783デフォルトの名無しさん:2008/04/20(日) 01:29:08
機種依存って、LPWSTR 自体が Windows 依存な typedef なんだし・・・。
784デフォルトの名無しさん:2008/04/20(日) 01:31:11
>>781C
convertFromとCnvertToはIMLangConvertCharsetのらっぱだとおもうので
IMLangConvertCharsetで試しているとこです。
自分のマシンで結果出たら一応法こくしまつ。
785デフォルトの名無しさん:2008/04/20(日) 01:32:39
>>783
厳密にはWCHARがLittle EndianかBig Endianかということなんだけど
なんか変なこと聞いてるかな?
786:2008/04/20(日) 01:35:42
×機種依存
○アーキテクチャ依存
いいかた悪かったです。
787デフォルトの名無しさん:2008/04/20(日) 01:37:20
Windows 自体がリトルエンディアン依存だから
心配する必要はないだっしょ。
788デフォルトの名無しさん:2008/04/20(日) 01:38:35
さんくす!そのひとことが聞きたかった(^o^)/
789デフォルトの名無しさん:2008/04/20(日) 01:46:49
>>784
もしIMultiLanguageでダメだったら同じかもしれないけど、
MultiByteToWideCharで1200を指定して変換するとかでいけないかな?
って凄い遅いね、スマ。
790デフォルトの名無しさん:2008/04/20(日) 01:46:52
とりあえず L'あ' (0x3042) は [42 30] だったよ
791デフォルトの名無しさん:2008/04/20(日) 01:50:57
マイクロソフトのドキュメントの悪い癖なのだが、
クラス名ではなくインタフェース名で呼ぶのはどうなのよ。

同じインタフェースを実装し、
そのインタフェースの仕様どおりの動作をするが、
実はまるで別のクラスだったりしたら、どーすんの。

いや、そんなのない、っていうのはわかってるんだが。
792デフォルトの名無しさん:2008/04/20(日) 01:52:25
仕様通りの動作なら具体的なクラスが何だっていいと思うんだが。
793デフォルトの名無しさん:2008/04/20(日) 01:54:01
論点が何かわからなかった・・・
794デフォルトの名無しさん:2008/04/20(日) 01:57:20
>>791
インターフェイスってそういうものだろ
795デフォルトの名無しさん:2008/04/20(日) 01:58:42
そもそもx86自体がリトルインディアンでは。
796デフォルトの名無しさん:2008/04/20(日) 02:00:18
典型的な、
同一ジャンルの関数を集めただけのクラス
なんだよな。

クラスである必要は全くなくて、
CスタイルのAPIでもいいのにな。

しかも引数がBSTRですらないし。
797デフォルトの名無しさん:2008/04/20(日) 02:11:17
IHtmlDocumentを使って、ほげほげをしているんですが、うまくいきません

なんて質問があって、てっきりIEかと思っていたら、別のブラウザだった
なんてことで混乱すると思うんだが。

単一のクラスしか実装しないのなら、それはインタフェースではないわな。
COMの制約上、インタフェースではないものまでインタフェースとして実装しなきゃならん弊害だ。
798デフォルトの名無しさん:2008/04/20(日) 02:12:19
とりいそぎ、1200を指定してS_OKかえって期末た。
ほかのバグにはまってしまったんで、中身の話までできないけど。。
ひとまずありがと!
799デフォルトの名無しさん:2008/04/20(日) 02:13:06
>>797
このあたりはオブジェクト指向の基本だから、勉強してみるとおもしろいよ。
800デフォルトの名無しさん:2008/04/20(日) 02:15:26
>>798
おめ!VC6は昔よくフリーズして泣かされたよ

それより誰か>>795のインド人に突っ込んであげてくれ
801デフォルトの名無しさん:2008/04/20(日) 02:28:38
もう少し詳しく報告したかったけど、夜更かしすると体にいくないので寝まつ。
円バグも明日起きたら治ってるでしょう。
802デフォルトの名無しさん:2008/04/20(日) 02:50:30
IDispatchなんて作って使いはじめた人間は、どうかしてると思うんだが。
オーバーロードできないのも、勘弁して欲しい。
803デフォルトの名無しさん:2008/04/20(日) 03:59:59
>>802
COMはC++じゃなくてCでも実装できるからオーバーロードなんてできなくて当然
804デフォルトの名無しさん:2008/04/20(日) 05:51:19
質問があるんですが、仮想画面に描いたグラフィックが表示できないで困ってます。
転送の間違いなのか、仮想画面にちゃんと描けていないのかチェックしたいと思ってます。
デバッグで仮想画面のを見る方法知りませんか?
オーナードローリストなのですが、実画面だと表示できるのに、仮想画面だと表示できない問題で悩んでおります。
ご教授お願いします
805804:2008/04/20(日) 09:48:10
グローバル変数と同じ名前の内部変数がありました。。うっかりしてました。
でも、デバッグで仮想画面見ることできたら便利なんだけどなぁ
806デフォルトの名無しさん:2008/04/20(日) 10:39:52
UTF8<->UTF16の変換は自分で書いてもすぐだよ。
RFCにそのものずばりのがあった。
807デフォルトの名無しさん:2008/04/20(日) 10:57:48
>>803
手動でオーバーロードを解決する方法を残しておけばよかっただけだから、
それは理由にならんだろう。
808デフォルトの名無しさん:2008/04/20(日) 10:59:20
>>806
自分で書いてないじゃんw
809デフォルトの名無しさん:2008/04/20(日) 12:06:17
>>807
IDispatchは、マルチ言語ブリッジ運用のための巧妙な仕掛け。
scripting hostあたりのMSDN精読するとおもしろさがわかる。
このあたりの考え方は.netに違う形で引き継がれている。
IDispatchは運用上のものだったが、IDispatchExになると真価を発揮。
もれもIDispatchEx対応のコンポーネントはかなり作ったよ。
興味があれば動的オブジェクト指向あたりのキーワードで。
まあ、ここはwin32 apiなのでこのあたりで
810デフォルトの名無しさん:2008/04/20(日) 12:07:22
>>806
Thanks.
おいらもどっかでそのコードみかけた。Plan B的にはそれかなと思ってた。
811デフォルトの名無しさん:2008/04/20(日) 12:32:41
>>808
RFCの仕様をみれば、自分でフルスクラッチで作れるってことだろw
812デフォルトの名無しさん:2008/04/20(日) 13:14:21
>>805
仮想画面ってメモリDCのことか?
BMPデータとしてファイル保存して見ればいいだろ
813デフォルトの名無しさん:2008/04/20(日) 13:35:30
>>809
> マルチ言語ブリッジ運用のための巧妙な仕掛け。

あまりに下手な仕掛けでムカつくのですが。

scripting hostの実装者の激しい手抜きでしかない。
IDispatchなしの任意のクラスやインタフェースを
スクリプトから使うための仲介をするクラスを作れるのだから、
なぜscripting hostが、それを実装しなかったのか、と。
814デフォルトの名無しさん:2008/04/20(日) 13:41:48
>>813
うーん、何を言いたいのかわからない。
興味がなければ議論にならないので、このあたりでご勘弁。
興味があれば、まずは中立な気持ちでIDispatch関連、あさってみてください。
815デフォルトの名無しさん:2008/04/20(日) 13:55:30
知らないならレスしないでください
816デフォルトの名無しさん:2008/04/20(日) 13:57:09
せっかくキーワードも示したのにあほらし
817デフォルトの名無しさん:2008/04/20(日) 14:23:29
>>808
いや、コードは自分で書かないといけないんだけど、アルゴリズムが単純で
RFCに解説があるからすぐ書ける。
以前、std::codecvt書いたときにRFC見た。
818デフォルトの名無しさん:2008/04/20(日) 14:26:31
>>813-814
とっても興味があるので激しくやりあってください。
819デフォルトの名無しさん:2008/04/20(日) 14:38:18
いや、ここ質問箱で議論スレじゃないから両者とも矛を収めてくれw

ネタにマジレスすると、IDispatch自身はCOMインタフェースであれば何でも
取り扱えるようにするのが目的だからこれ以上具象化はできないと思う。
この界面では利便性よりも普遍性を取ったってことで、これは理性的な判断だと思う。

でも、直接これを利用して実装を始めると各言語に落ちたときにやるべきことが
多すぎるのも事実だと思う。
そういう意味では+αのユーティリティが欲しくなるのも頷ける。

というわけで>>813はCodeProjectあたりにその仲介してくれるユーティリティクラスを公開してくれw
820デフォルトの名無しさん:2008/04/20(日) 15:01:37
しかし天気もいいとは言いがたいし暇だな・・・秋葉にでも突撃してくるか。
821デフォルトの名無しさん:2008/04/20(日) 15:02:16
こういう日はコーディングに限る
822デフォルトの名無しさん:2008/04/20(日) 15:08:40
↑ウチの会社でも2chに書き込みしてることを「コーディングしてた」って言う奴がいるぜ
残念だがお前の仕事はデザインだ
823デフォルトの名無しさん:2008/04/20(日) 15:12:04
>>821
宿題スレの事か!
824デフォルトの名無しさん:2008/04/20(日) 15:15:59
馬鹿だなあ
2ちゃんに自動投稿するスクリプトをコーディングしていたのだよ
825デフォルトの名無しさん:2008/04/20(日) 15:17:19
ばかにすると、田代砲つくっちゃうぞー
826デフォルトの名無しさん:2008/04/20(日) 15:20:28
>>819
なんとなくわかった。
あざーす!
827デフォルトの名無しさん:2008/04/20(日) 15:39:27
IDispatchは現実解でしょう。

スクリプトなどのグルー言語から使われるような粒度のクラスは、
IUnknownなどの屋台骨かつ裏方さんのインターフェースを除くと、
実装しているインターフェースは大概1つでしょう。


828デフォルトの名無しさん:2008/04/20(日) 15:50:04
まあまあ。
一昔前に大盛り上がりしたネタだから、振られれば楽しい話がいっぱいあるけど
すれ違いなので矛収めさせていただいたんで、Closeしましょ。
829デフォルトの名無しさん:2008/04/20(日) 15:50:28
そのクラスしか実装していない、
そのクラス専用のインターフェース以外に、
スクリプトに見せるものがあるのか、と。

そういうインターフェースが複数あるということは、
そのクラスは複数の機能を持っているわけで、
そういうのはクラス設計が悪い。

とはいえ、IDispatchやIDispatchExは、
各個のクラスが実装すべきものではないな。
830デフォルトの名無しさん:2008/04/20(日) 15:52:28
無視無視
831デフォルトの名無しさん:2008/04/20(日) 15:57:29
>>797
IWebBrowser2を引くと、
「Custom Implementation: No」とある。
というわけで、これは残念ながらIE専用のインタフェース。
ほかの実装はあり得ないと仮定していいだろう。
http://msdn2.microsoft.com/en-us/library/aa752127.aspx

まあWineなんかが実装するという可能性はあるだろうけど。
832デフォルトの名無しさん:2008/04/20(日) 16:02:56
>>802-803
自分で実装すれば、IDispatchでもオーバーロードは可能だろ。
引数はみんなVARIANTなんだから、中身のデータ型を見て処理を変えるようにするなり、
(オーバーロードされた)実際の処理を行う関数を呼び分けるようにするなりすればいい。
833デフォルトの名無しさん:2008/04/20(日) 16:10:35
>>831
IIDに対してカスタム実装すんなよ、ということなのであって、
IWebBrowser2という名前を使うなよ、ということではないだろ。

>>832
まず、オーバーロードできないのはIDispatch特有の問題ではない。
次に、システムがやるべき処理を、個別の実装がやるのはオカシイ。
834デフォルトの名無しさん:2008/04/20(日) 16:20:58
そもそもオーバーロードという言葉が出てくる時点でおかしいんですお。
Interfaceをわかってない。
835デフォルトの名無しさん:2008/04/20(日) 16:21:25
IWebBrowser2の使い方教えてください。
836デフォルトの名無しさん:2008/04/20(日) 16:32:32
>>834
そうなの?
オレはわかってないクチなんだけど、インターフェースという概念と
オーバーロードが合わない理由をkwsk
837デフォルトの名無しさん:2008/04/20(日) 16:33:30
>>834
当のマイクロソフトは、.NETで方針転換してる
ttp://www.microsoft.com/japan/msdn/net/upgrade/overloadingmethods.aspx
838デフォルトの名無しさん:2008/04/20(日) 16:35:08
COMはVisualBasic(6以前)に影響されすぎ。
というか、VBの内部構造を公開したような代物。
839デフォルトの名無しさん:2008/04/20(日) 16:39:46
>>836
書くと荒れそうなんで、Javaでいうところのextendsとimplimentsの違いとだけ。
基本的にオブジェクト指向一般の議論範疇。
>>819がきれいにまとめてくれたように、Win32とかんけいない。

840デフォルトの名無しさん:2008/04/20(日) 16:51:41
>>839
オーバーロード云々ってのは、
IFoo::Hoge()
IBar::Hoge()
を、IDispatchで両方扱えないっていう話ではなく、
IFoo::Hoge(int x)
IFoo::Hoge(BSTR* y)
が、できないってことでしょう。

そういうのはVARIANTで受ければいいんだけど、
それは実装で回避しているに過ぎない。
841デフォルトの名無しさん:2008/04/20(日) 16:52:36
>>839
extends?
オーバーライドと混同してないか?
842デフォルトの名無しさん:2008/04/20(日) 16:55:34
他に行ってくんない?
843674:2008/04/20(日) 17:00:06
>>676
ありがとう。
2000とかのNT系なら知ってたんだけど、これ9x系のファイル名にも関係あるの?
844デフォルトの名無しさん:2008/04/20(日) 17:03:27
意味わかんね
845デフォルトの名無しさん:2008/04/20(日) 17:07:14
>>836
どのオーバーロードも結局同じもの(例えば一番引数の詳しいオーバーロード)を呼び出す
というのであれば、NVIパターンで仮想関数を1つにまとめるのが便利。
もはやCOMと関係ない話だけど。
846デフォルトの名無しさん:2008/04/20(日) 17:13:33
implimentなんて書いてる時点でプログラミング知識の程度が知れてしまう
要するに、知ったか乙ってことだな
847デフォルトの名無しさん:2008/04/20(日) 17:36:07
InterLock系を使って同期オブジェクトの高速化を行った(実は2秒の処理中2ミリ秒も変わってない)

「俺、神・・・ふぅ」とか悦に入ってた

先輩から「アルゴリズム見直して衝突起こってるところ減らして。そこ高速化しても変わらないから」と当たり前の指摘を受けて沈没した

仕方ないので、再び賢者になるべくエロ画像探し<今ココ

VC 2008 Expressのおかげで家でもコーディングできて嬉しいなっと(涙
848デフォルトの名無しさん:2008/04/20(日) 18:07:00
山田君
>>847にミルコ・クロコップお願い
849デフォルトの名無しさん:2008/04/20(日) 18:20:10
>>847
"InterLock" じゃなくて "Interlock" な。"Internet" と同じ。
850デフォルトの名無しさん:2008/04/20(日) 18:39:27
>>847
仕事なら、それなりのプロファイラ使って調べてから、コードいじろうぜ。
851デフォルトの名無しさん:2008/04/20(日) 18:59:47
>>849
指摘ありがd
適当ななんちゃってプログラマでごめんね

>>850
まあ実は高速化の必要もなかったんだ・・・

そして暇もてあましてJudeのクラス図でやるおを書く俺<今ココ
852デフォルトの名無しさん:2008/04/20(日) 19:50:39
>>838
COMに影響を与えたVBは偉大だな。
ってそんな訳ねえよ。逆だよ、逆。
853デフォルトの名無しさん:2008/04/20(日) 20:08:41
>>838
知ったか厨のホラ話は聞き飽きたのでもういいよ
854デフォルトの名無しさん:2008/04/20(日) 20:13:02
IDispatchの起源はどこだ?
855デフォルトの名無しさん:2008/04/20(日) 20:18:52
OLE Automationといって、ExcelやWordからVBAを使って何かをするためのもの。
856デフォルトの名無しさん:2008/04/20(日) 20:43:09
>>852
VBに影響を与えたCOMは偉大ですよね、わかります
857デフォルトの名無しさん:2008/04/20(日) 20:53:46
もう64スレか
128スレまでもう一息だな
858デフォルトの名無しさん:2008/04/20(日) 21:01:01
他のPCに大量のデータを渡したい場合、
何を使うのが最速? 何を使うのがCPU負荷最小?
859デフォルトの名無しさん:2008/04/20(日) 21:03:27
HDD繋ぎ換え
860デフォルトの名無しさん:2008/04/20(日) 21:08:51
>>859
MSCSとかを使ってディスクを共有して、所有権とかを移すってことですか?
861デフォルトの名無しさん:2008/04/20(日) 21:11:54
DVDRWにでも焼けばいいんじゃね?
862デフォルトの名無しさん:2008/04/20(日) 21:13:00
うんにゃ、ただ物理的に繋ぎ換えるだけ。
データ量に依っては十分最速になり得るし、CPU負荷は0。
863デフォルトの名無しさん:2008/04/20(日) 21:26:11
>>862
ファイバーチャネルやiSCSIを使って繋ぎ換えるんですか。
SANまで入れるとなると、とてもではないけど、手が出ない。
864デフォルトの名無しさん:2008/04/20(日) 21:28:48
>>863
PCじゃないの???
865デフォルトの名無しさん:2008/04/20(日) 21:35:41
>>864
PCです。
866デフォルトの名無しさん:2008/04/20(日) 21:44:05
おまえはなにをいってるんだ。いやマジで。なんか勘違いしとらんか?
867デフォルトの名無しさん:2008/04/20(日) 22:00:32
もしかして、
人間が手で、転送元のPCのHDDのケーブルを抜いて、転送先のPCに差し込む
という話だったんですか?

それはWin32APIとは違う次元の話だと思うんですが。
868デフォルトの名無しさん:2008/04/20(日) 22:03:25
>>867
それをしてはいけない(できない)状態ってこと?
例えば顧客情報のぶっこぬきがしたいとか?
869デフォルトの名無しさん:2008/04/20(日) 22:23:18
素直にGigabitEtherでソケット通信といってやれ。
PCIバス並みの転送速度だから速度に不満は無いだろう。
870デフォルトの名無しさん:2008/04/20(日) 22:24:18
IEEE1394をクロスケーブルで繋いでもいいかもしれんな。
871デフォルトの名無しさん:2008/04/20(日) 22:34:38
え、IEEE1394でクロス??
872デフォルトの名無しさん:2008/04/20(日) 22:36:56
>>868
そうです。


というレスが返ってきたらどういうアドバイスをするつもりなのか知りたい
873デフォルトの名無しさん:2008/04/20(日) 22:39:36
InternetReadFileでインターネット上のファイルを読み込むときってバッファを
大きめに確保しておくかvectorで読み込むたびに増やしていくしかない?
事前にファイルの容量わかる方法ってないですか?
874デフォルトの名無しさん:2008/04/20(日) 22:49:32
そもそもHTTPでサーバがContent-Length送ってくれるなら判ってもいいけど、
返さないサーバもあるから、絶対確実な方法は無いよね
875デフォルトの名無しさん:2008/04/20(日) 22:50:27
InternetOpenURLの時点で分かってるんじゃないかなぁ?
ほとんど全部がこのAPIの呼び出しに時間くってるみたいだし
876デフォルトの名無しさん:2008/04/20(日) 22:51:34
cgiが返すページなんかだとContent-Lengthは期待できないね
877デフォルトの名無しさん:2008/04/20(日) 22:56:49
chunkedだと容量わからないよね
878デフォルトの名無しさん:2008/04/20(日) 23:08:59
ありがとう。やっぱりvectorの方法がまだ一番適切なのね
879デフォルトの名無しさん:2008/04/20(日) 23:14:23
俺だったらめんどくさいからReadSizeに0返すまで一時ファイルに書き出しちゃうな
880デフォルトの名無しさん:2008/04/20(日) 23:17:31
vectorを何度も拡張するのはアレなので、
InternetReadFileで受け取った時にはとりあえずlistにポインタつっこんどいて、
最後に繋げたらどうよ。
881デフォルトの名無しさん:2008/04/20(日) 23:17:52
まぁインターネッツの向こう側は基本的に信用しちゃダメっすよ
882デフォルトの名無しさん:2008/04/20(日) 23:38:43
ReadProcessMemoryで先頭から存在するだけ全部読み取りたい場合
読み込むバイト数はどうやって求めるんでしょうか?
128KBで読んだらほぼ取れましたが、全部取ろうと思って256KBを指定
したらエラーコード299で失敗してしまいました。

少しづつ読んで失敗するまでループさせるのが正しいやり方なのかな?
883デフォルトの名無しさん:2008/04/20(日) 23:38:47
インターネットって怖いですね
884デフォルトの名無しさん:2008/04/20(日) 23:46:29
それはマスゴミが作り上げた幻想にすぎない。
我々はきゃつらに思い知らせる必要がある。
情報統制を打ち破らねばならん。これは聖戦(ジハード)である!
885デフォルトの名無しさん:2008/04/20(日) 23:55:22
>>882
VirtualQueryで4KBずつチェックしてから読むべし
886デフォルトの名無しさん:2008/04/21(月) 00:03:23
>>883
マンションなんかに住んでいたら耐震偽装でいつ倒壊するか分からんし
コンビニでペットボトル買って飲もうとしたら毒物が入ってるかも知れんし
餃子なんて何が混ざってるか分からんから喰えた物じゃない
生死にかかわらない分、まだインターネットは安全な方だと思うが
887デフォルトの名無しさん:2008/04/21(月) 01:48:35
>>878
サイズが分からないものを入れる場合は、vectorよりもdequeの方がいい。
888デフォルトの名無しさん:2008/04/21(月) 10:50:45
なんで?
889デフォルトの名無しさん:2008/04/21(月) 13:04:23
知らないならレスしないでください
890デフォルトの名無しさん:2008/04/21(月) 13:06:29
伸張する場合にコストが低い
891764、843:2008/04/21(月) 13:38:01
いろいろ見てみたらFAT32もファイル名にはUnicodeを使っているから
SHIFT-JISとUnicode間の変換問題に関係してたのか。
ずっとSHIFT-JISで記録されてると思ってた。
>>767
番号間違ってた。ありがとう
892デフォルトの名無しさん:2008/04/21(月) 18:39:21
知らないならレスしないでくださいって俺が流行らせたんだけどな
893デフォルトの名無しさん:2008/04/21(月) 18:55:31
alt属性の設定された画像やブラウザのボタンの上にカーソルを乗せると、
大方の環境ではその項目を説明する「ポップヒント」が出ますよね?
それをダイアログボックスに貼り付けたチェックボックス等に
実装したいのですが、Win32APIではその様なことってできますか?
やっぱりカーソル座標とか調べて全部作らないと無理でしょうか?
894デフォルトの名無しさん:2008/04/21(月) 18:56:28
ツールチップのこと?
895デフォルトの名無しさん:2008/04/21(月) 19:02:17
ググってみたらポップヒントじゃなくてツールチップって言うんですね・・・
そうです
896デフォルトの名無しさん:2008/04/21(月) 19:34:51
>>893
ttp://www.kumei.ne.jp/c_lang/sdk/sdk_65.htm

猫だが参考程度にはなると思う
897デフォルトの名無しさん:2008/04/21(月) 19:34:58
まあガンガレや
898デフォルトの名無しさん:2008/04/21(月) 19:50:31
ツールチップという名前までわかれば、
とりあえずMSDNライブラリでtooltipを検索してみ。

一通り説明しているドキュメントが出てくるから。
899デフォルトの名無しさん:2008/04/21(月) 20:53:08
>>892その言葉使ってるやつって頭悪そう
900デフォルトの名無しさん:2008/04/21(月) 21:51:04
>>899
お前の頭が一番悪い
901デフォルトの名無しさん:2008/04/21(月) 22:11:16
902デフォルトの名無しさん:2008/04/21(月) 22:12:50
まあ、いいんでない
903デフォルトの名無しさん:2008/04/21(月) 22:49:16
>>896-898
急な用事でレスが遅くなりましたが・・・
今からしばらく時間があるのでちょっと調べてみます。
助かりました、お付き合いくださってありがとうございました。
904デフォルトの名無しさん:2008/04/22(火) 00:25:37
しょうもない質問ですが、ググってもいまいちわからなかったので教えてください。
Windowsでunicodeでも非unicodeでも対応できるように _T(x) のマクロを使っていますが、
良く参考に行くサイトでは TEXT(x) マクロを使用しています。
他にもunicode用として __T(x) とか _TEXT(x) とかのマクロがありますが、
汎用性(Windows環境限定で他プロジェクトへの移植)を考えた場合、
どのマクロを使えば問題が起きる可能性が少ないでしょうか。

_T(x) はtchar.hに、TEXT(x) はwinnt.hに定義があるようです。
905デフォルトの名無しさん:2008/04/22(火) 00:36:15
906デフォルトの名無しさん:2008/04/22(火) 00:50:08
経験的に直接TEXT("")はやめた方がいい。
MSに振り回されたくなければ自分で定義し直す事。
#define MYENC(x) TEXT(x)
907デフォルトの名無しさん:2008/04/22(火) 00:52:25
それなんか意味あんの?
908デフォルトの名無しさん:2008/04/22(火) 00:57:56
馬鹿には見えない服
909デフォルトの名無しさん:2008/04/22(火) 01:10:36
9x捨てて、直接 L"" って書いちゃダメ?
将来、UTF-8か32になったらしらんけど。
910デフォルトの名無しさん:2008/04/22(火) 01:11:08
MSに振り回されたくないのにWin32で開発してるのか
変な人だな
911デフォルトの名無しさん:2008/04/22(火) 01:17:42
MSに振り回されたくないのにこんなスレにいるのか
変な人だな
912デフォルトの名無しさん:2008/04/22(火) 01:21:50
MBCSとUnicodeの両方についてテストまでしっかりやるのでなければ、
どちらか片方固定でコーディングしたほうがいいと思う。

マクロを使って書かれているけど、実はUnicodeでしか正しく動かない
なんていうことになると酷いからね。

必要になったときに、結局はコードをすべて点検・テストするなら、
そのときに変更したほうが、いい。
913デフォルトの名無しさん:2008/04/22(火) 01:22:01
>>909
現状はおk。将来もたぶんおk。
ただしその場合、whcar_tをつかうこと。WCHARではない。
というかL自体をワイド文字リテラルとして、C++の規格に入れようぜって話になってる。
ほかには、uとかUとか、それに対応するchar16_tとかchar32_tとか。
ttp://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2249.html


>>906のいう「経験」とは、
俺様のエスパー能力では、
Windows 3.1向けに書いた、freeした後のポインタにアクセスしているあほなプログラムを、
Windows 95に持っていったら動かなくなったということなのだろう。
914デフォルトの名無しさん:2008/04/22(火) 01:55:15
>>913
L""は既にCにもC++にも入っている。
915デフォルトの名無しさん:2008/04/22(火) 02:17:30
gccでも使える。マジオススメ。
916デフォルトの名無しさん:2008/04/22(火) 02:44:28
でもCygwinでwprintfとかwcoutとか使えないのは勘弁、なんとかしてくれ。
917デフォルトの名無しさん:2008/04/22(火) 03:03:19
>>914
やべ、今までずっとMS独自拡張だと思ってた。恥ずかしい。
918デフォルトの名無しさん:2008/04/22(火) 05:38:20
いい加減ググルのマンドクセしたまにはここで聞いてもいいよね?

D&Dされた物をフォルダかどうか判別するにはどうすればいいですか
DragQueryFileで得た文字列ではフォルダと拡張子無しファイルの区別が付きません
919デフォルトの名無しさん
>>918
GetFileAttributes
あるいは
PathIsDirectory
を呼んで確認してみるのはどう?