[表示 : 全て 最新50 1-99 101- 201- 301- 401- 2chのread.cgiへ]
Update time : 06/18 16:04 / Filesize : 111 KB / Number-of Response : 495
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Win32API質問箱 Build64



1 名前:デフォルトの名無しさん [2008/04/02(水) 10:21:31 ]
スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。
やさしいお兄さんやお姉さんたちが答えてくれるかも。

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

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

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

【前スレ】
Win32API質問箱 Build63
pc11.2ch.net/test/read.cgi/tech/1204600558/


2 名前:デフォルトの名無しさん mailto:sage [2008/04/02(水) 10:21:53 ]
- MSDN ホームページ
www.microsoft.com/japan/msdn/
- MSDN ライブラリ
msdn.microsoft.com/library/
msdn.microsoft.com/library/ja/
- MSDN2 ライブラリ
msdn2.microsoft.com/en-us/library/
msdn2.microsoft.com/ja-jp/library/
- MSDN ライブラリ (ローカル版)
www.microsoft.com/downloads/details.aspx?familyid=6FF3BC60-32C8-4C22-8591-A20BF8DFF1A2&displaylang=ja
www.microsoft.com/downloads/details.aspx?familyid=B8704100-0127-4D88-9B5D-896B9B388313&displaylang=ja
- Windows SDK & Platform SDK
www.microsoft.com/downloads/details.aspx?FamilyID=74dd6e2d-89c6-4e1e-af00-fc7d70f15439&DisplayLang=en
www.microsoft.com/downloads/details.aspx?FamilyID=c2b1e300-f358-4523-b479-f53d234cdccf&DisplayLang=en
www.microsoft.com/downloads/details.aspx?FamilyID=ff6467e6-5bba-4bf5-b562-9199be864d29&DisplayLang=en
www.microsoft.com/downloads/details.aspx?FamilyID=7614FE22-8A64-4DFB-AA0C-DB53035F40A0&displaylang=ja
www.microsoft.com/downloads/details.aspx?FamilyId=484269E2-3B89-47E3-8EB7-1F2BE6D7123A
www.microsoft.com/msdownload/platformsdk/sdkupdate/XPSP2FULLInstall.htm
www.microsoft.com/msdownload/platformsdk/sdkupdate/psdk-full.htm

3 名前:デフォルトの名無しさん mailto:sage [2008/04/02(水) 10:22:06 ]
- Google
www.google.com/
- 猫でもわかるプログラミング
www.kumei.ne.jp/c_lang/
- Win32 API入門
wisdom.sakura.ne.jp/system/winapi/
- Win32 プログラミング入門
www7.plala.or.jp/keny01/

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

-おまけ
Build19が見たい人で余裕のある人は●でも買ってくれ。

4 名前:デフォルトの名無しさん [2008/04/02(水) 10:22:49 ]
62 ttp://pc11.2ch.net/test/read.cgi/tech/1202060403/
61 ttp://pc11.2ch.net/test/read.cgi/tech/1199514664/
60 ttp://pc11.2ch.net/test/read.cgi/tech/1196874830/
59 ttp://pc11.2ch.net/test/read.cgi/tech/1194701996/
58 ttp://pc11.2ch.net/test/read.cgi/tech/1191781463/
57 ttp://pc11.2ch.net/test/read.cgi/tech/1189255282/
56 ttp://pc11.2ch.net/test/read.cgi/tech/1186989201/
55 ttp://pc11.2ch.net/test/read.cgi/tech/1184853465/
54 ttp://pc11.2ch.net/test/read.cgi/tech/1181645965/
53 ttp://pc11.2ch.net/test/read.cgi/tech/1178882828/
52 ttp://pc11.2ch.net/test/read.cgi/tech/1176828891/
51 ttp://pc11.2ch.net/test/read.cgi/tech/1174416295/
50 ttp://pc11.2ch.net/test/read.cgi/tech/1171721448/
49 ttp://pc10.2ch.net/test/read.cgi/tech/1168708801/
48 ttp://pc10.2ch.net/test/read.cgi/tech/1166172047/
47 ttp://pc8.2ch.net/test/read.cgi/tech/1163375772/
46 ttp://pc8.2ch.net/test/read.cgi/tech/1159158014/
45 ttp://pc8.2ch.net/test/read.cgi/tech/1156032806/
44 ttp://pc8.2ch.net/test/read.cgi/tech/1151501925/
43 ttp://pc8.2ch.net/test/read.cgi/tech/1148005509/
42 ttp://pc8.2ch.net/test/read.cgi/tech/1144962549/


5 名前:デフォルトの名無しさん [2008/04/02(水) 10:23:03 ]
41 ttp://pc8.2ch.net/test/read.cgi/tech/1141392216/
40 ttp://pc8.2ch.net/test/read.cgi/tech/1138893959/
39 ttp://pc8.2ch.net/test/read.cgi/tech/1136673250/
38 ttp://pc8.2ch.net/test/read.cgi/tech/1133798345/
37 ttp://pc8.2ch.net/test/read.cgi/tech/1131884991/
36 ttp://pc8.2ch.net/test/read.cgi/tech/1128951330/
35 ttp://pc8.2ch.net/test/read.cgi/tech/1125850096/
34 ttp://pc8.2ch.net/test/read.cgi/tech/1122723009/
33 ttp://pc8.2ch.net/test/read.cgi/tech/1120153520/
32 ttp://pc8.2ch.net/test/read.cgi/tech/1117271829/
31 ttp://pc8.2ch.net/test/read.cgi/tech/1114762194/
30 ttp://pc8.2ch.net/test/read.cgi/tech/1112345886/
29 ttp://pc8.2ch.net/test/read.cgi/tech/1110281860/
28 ttp://pc5.2ch.net/test/read.cgi/tech/1108199304/
27 ttp://pc5.2ch.net/test/read.cgi/tech/1106103119/
26 ttp://pc5.2ch.net/test/read.cgi/tech/1104109858/
25 ttp://pc5.2ch.net/test/read.cgi/tech/1101393155/
24 ttp://pc5.2ch.net/test/read.cgi/tech/1098967135/
23 ttp://pc5.2ch.net/test/read.cgi/tech/1095534704/
22 ttp://pc5.2ch.net/test/read.cgi/tech/1092524669/


6 名前:デフォルトの名無しさん [2008/04/02(水) 10:23:27 ]
21 ttp://pc5.2ch.net/test/read.cgi/tech/1090422324/
20 ttp://pc5.2ch.net/test/read.cgi/tech/1088140233/
19 ttp://pc5.2ch.net/test/read.cgi/tech/1084697545/
18 ttp://pc5.2ch.net/test/read.cgi/tech/1081702990/
17 ttp://pc5.2ch.net/test/read.cgi/tech/1077470361/
16 ttp://pc2.2ch.net/test/read.cgi/tech/1073830065/★
15 ttp://pc2.2ch.net/test/read.cgi/tech/1069339866/★
14 ttp://pc5.2ch.net/tech/kako/1065/10653/1065328397.html
13 ttp://pc5.2ch.net/tech/kako/1059/10595/1059549320.html
12 ttp://pc5.2ch.net/tech/kako/1056/10560/1056033645.html
11 ttp://pc5.2ch.net/tech/kako/1052/10526/1052651750.html
10 ttp://pc5.2ch.net/tech/kako/1047/10478/1047819779.html
9 ttp://pc5.2ch.net/tech/kako/1044/10449/1044929160.html
8 ttp://pc5.2ch.net/tech/kako/1040/10409/1040964626.html
7 ttp://pc3.2ch.net/tech/kako/1036/10366/1036654893.html
6 ttp://pc3.2ch.net/tech/kako/1032/10325/1032548635.html
5 ttp://pc3.2ch.net/tech/kako/1028/10285/1028580373.html
4 ttp://pc3.2ch.net/tech/kako/1023/10233/1023361418.html
3 ttp://pc.2ch.net/tech/kako/1017/10170/1017072275.html
2 ttp://pc.2ch.net/tech/kako/1006/10067/1006783012.html
1 ttp://pc.2ch.net/tech/kako/991/991576947.html

7 名前:デフォルトの名無しさん mailto:sage [2008/04/02(水) 12:22:01 ]
特定のアプリからファイルを開くには、どうすればいい?
ShellExecuteExだと、ファイルに関連付けられたアプリで起動するし。

8 名前:デフォルトの名無しさん mailto:sage [2008/04/02(水) 12:37:25 ]
特定のアプリのコマンドライン引数にファイル名を渡す

9 名前:デフォルトの名無しさん mailto:sage [2008/04/02(水) 14:10:20 ]
>>7
「開く」じゃ曖昧だよ。
何がしたいのかを書いたほうがいい。

10 名前:デフォルトの名無しさん [2008/04/02(水) 19:36:38 ]
既に取得済みのウィンドウハンドルでそのハンドル(ウィンドウ)が生きてるか死んでるかを
識別するAPIを教えてください



11 名前:デフォルトの名無しさん mailto:sage [2008/04/02(水) 19:49:44 ]
>>10
IsWindow

12 名前:デフォルトの名無しさん mailto:sage [2008/04/02(水) 19:51:33 ]
生きているの定義による。
IsWindowとかIsHungAppWindowとか。

13 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 01:48:32 ]
>>15
DWMサムネイルAPI使えばいい気がする。

18 名前:デフォルトの名無しさん [2008/04/03(木) 12:52:25 ]
GetCurrentProcessのウィンドウハンドル版みたいなのは無いでしょうか。
自分自身のウィンドウハンドルを取得したいのですが。。

19 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 12:55:58 ]
その「自分自身」をどうやって見つけてくるんだよ

20 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 13:13:35 ]
>>19
えっとdllを他プロセスにフックして
dllからフック先プロセスのウィンドウハンドルを取得したいのです。



21 名前:デフォルトの名無しさん [2008/04/03(木) 13:14:07 ]
FindWindowとかじゃだめなのかい?

22 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 13:19:31 ]
ウィンドウがたくさんあったらどうするんだろう・・・

23 名前:デフォルトの名無しさん [2008/04/03(木) 13:23:02 ]
能書きはいいからさっさと教えろ

24 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 13:27:06 ]
またゲームチートか

25 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 13:27:19 ]
>>21
GetWindowTextでタイトルは取得できますが
ウィンドウクラス名の取得方法がわからなくて。。(ノ_・、)

26 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 13:29:35 ]
EnumWindowsすればいいジャマイカ

27 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 14:04:19 ]
GetClassName

28 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 14:35:10 ]
おまえらほんと役立たずだな

29 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 14:43:23 ]
お褒めに預かり極悦至極

30 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 15:03:16 ]
もうこねーよ!
ばーか



31 名前:15 mailto:sage [2008/04/03(木) 15:52:11 ]
"GetWindowDC(GetDesktopWindow())"でやったら出来ました。

32 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 16:55:05 ]
チート・ウイルス・キーロガー・スパイウェア

こんなのばっかだな

あれか。普通のソフトはもうみんな.NETなんかで作っちゃうから
ド初心者かフック関係の質問しか来ないのな

33 名前:デフォルトの名無しさん [2008/04/03(木) 16:59:24 ]
>>32
知らないならレスするなクズ

34 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 17:17:17 ]
とりあえず荒らしが2〜3名いるらしいというのは判別できた

35 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 18:15:08 ]
と、荒らしが申しております

36 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 18:25:15 ]
>>34
荒らすなよお前

37 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 19:00:37 ]
WindowsのAPI(ウインドウとかコントロールの扱いやGDI)は一通り覚えたので、DirectXも触ってみたいんですが、
DirectXも他のWin32APIと同じ感じですか?もっと複雑に、もしかしたらクラスとか使ったりしますか?

38 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 19:38:49 ]
俄然使う

39 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 21:54:17 ]
>>37
Windowsとどら焼きぐらい違う。
いや、そこまで違わんか。タイヤキとタイヤぐらいか?

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

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

逆にウィンドウを作ったスレッドやプロセスを調べる関数は
当然あるので(必ず存在するからね)、そっちで調べるのが良い。

40 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 22:29:24 ]
getTimeGetに噴いた

42 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 22:45:10 ]
シンディローパーの曲のようだ

43 名前:40 mailto:sage [2008/04/03(木) 22:48:29 ]
timeGetTimeでした><
はずかしぃ・・

44 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 23:15:25 ]
16bit時代からの互換性を考慮したから

46 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 23:22:05 ]
>>32
その手のプログラムを作ること自体の是非はともかくとして、
その手のプログラムを作るなら人に聞かずにヤレと思うよ。

>>37
DirectXはCOM「もどき」で、MSがラッパーを用意してたりするし、
COMといってもオマジナイや定型文だと思ってもいいくらい。

47 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 23:27:48 ]
>>44
直交性がないのはアレだが、混同しにくいという利点もあるぞ。

48 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 23:33:02 ]
このスレはシステムプログラミングに明るい人が少ないか、
極度にネガティブなイメージを持ってる人が多いらしいので聞くだけ無駄なことが多い
フックとかマルウェア技術に関してはぐぐーる先生のほうがよっぽど使える

49 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 23:34:43 ]
>>40
それは現象ではなく仕様。

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

ウィンドウの移動を自前で処理すりゃ
メッセージポンプを回すこともできるが、
そんな気持ち悪いことをするのもなぁ。

50 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 23:36:53 ]
>>48



51 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 23:37:29 ]
>>48
マルウェア作成技術にはネガティブなイメージを持って当然だろ。

ちなみに、
悪さするプログラムを作った人間が逮捕され、
2chのスレでやり方を教えてもらったと言ったら、
教えたほうは幇助で逮捕されかねんぞ。


52 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 23:44:41 ]
他プロセスにdllを注入して〜とかそういうのが多すぎ
質問するなとは言わんがスレの半分ぐらいがそんなのばっかりなんてどう考えても異常だろ
同じ奴が何度も質問してるのか?

53 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 23:48:21 ]
悪さするプログラムを作っても一切に罪には問われません

54 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 23:53:48 ]
>マルウェア作成技術にはネガティブなイメージを持って当然だろ。
そーなのかー 
その辺に自分とほかとの意識の違いがあるらしいことは理解した
(個人的には、いろんなサンプルコード片を書いたり教えたりするけど、
 それを第三者がどういう目的で利用しようが関係ないと思ってる)

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

 


55 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 23:57:17 ]
めんどくせぇからwizard bibleでも見てろって感じだな

56 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 00:11:15 ]
ウザい頻出ネタまとめ

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

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

問) 特定のプロセスの音量を制御するにはどうすればいいですか?
答) Vista買え。

57 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 00:26:46 ]
ochinchin.h を omanko.cpp に include したのに童貞のままです。
どうしたらいいですか。

58 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 00:29:03 ]
はいはいよかったですね

59 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 00:29:42 ]
>>57
先っちょだけだからです!
じゃなくて、その ochinchin.h はあなたの物ではありません

60 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 00:36:50 ]
やり方が間違っている。
まずお前のイチモツをDLL化する。ochinchin.dll
そしてomanko.exeのプロセスにDLLインジェクションでochinchin.dllを挿入すればいい。



61 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 00:39:20 ]
>>52
周囲の人間に聞いても教えてもらえない or 聞くのが憚られる
匿名ではない掲示板で聞いても教えてもらえない or 聞くのが憚られる
それで2chのこのスレに殺到する

ってことかもしれんな。

62 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 00:42:23 ]
>>57 のことかーーーーー!!!

ってか親切に解説してくれているサイトを見るの方が
関連情報も一箇所にまとまってるから
よっぽど早く目的達成できるのにな

63 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 00:45:27 ]
>>57-60
質問して断られて逆恨みして粘着してる人間がいるんだな。

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

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

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

他のプロセスが他人の書いたプログラムだって言うのなら、
その他のプロセスを自分でCreateProcessして、
その時のコマンドラインを覚えとけ、と。

64 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 00:52:34 ]
>>63
うしろめたいってか、UNIX系だと簡単にコマンドライン取れるんじゃね。
よく知らんけど。

65 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 01:00:35 ]
だったらUNIX系を使っとけ

66 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 02:30:35 ]
Win32サブシステムではなくPOSIXサブシステムを使えばいいんじゃね?
Interixの会社をマイクロソフトが買収してSFUとして無料で提供してるのを使えばいいんじゃね?

67 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 08:19:30 ]
1ヶ月ぐらい前にウイルス作成方法を公開してた奴が逮捕されたとかいうニュースを見た気がする

68 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 08:23:02 ]
裁判で有罪になるかどうかは別として、

自力で調べられないようなタイプのハッカーもどきは、
十中八九、簡単に足が付くようなやり方をするから、
あんまり関わらないほうがいい。

69 名前:デフォルトの名無しさん [2008/04/04(金) 10:21:37 ]
iniファイルを扱いたいのですけど
WritePrivateProfileSectionつかうと同じセクションの内容を上書きしてしまいますよね
追加はどうすればいいのでしょうか

70 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 10:26:22 ]
>>69
追加というのは、具体的に、どういうこと?

同一セクション内に同一のキーはダメだよ?



71 名前:デフォルトの名無しさん [2008/04/04(金) 10:28:55 ]
>>70
別キーを同じセクションに保存できないのです
説明下手でスマン

72 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 10:29:39 ]
>>67
ウィルス作成では現行の法運用では罪を問えなかったので
著作権違反の疑いで逮捕した

73 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 10:36:51 ]
>>71
WritePrivateProfileStringな

74 名前:デフォルトの名無しさん [2008/04/04(金) 10:39:17 ]
>>73
ありがとう!

75 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 11:02:49 ]
WritePrivateProfileSection
> 指定された .ini ファイル(初期化ファイル)の、指定されたセクション内の
> 既存のキー名と値を削除し、
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> 指定されたキーとその値のペアを書き込みます。


76 名前:デフォルトの名無しさん [2008/04/04(金) 11:34:43 ]
WinXPのタスクバーの自分のアプリ部分の領域に描画することは可能ですか?
プログレスバーのように進捗を表示したりといった感じです。

77 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 11:43:34 ]
タイトルのこと?アイコンのこと?
まあどっちも可能

78 名前:デフォルトの名無しさん [2008/04/04(金) 11:48:49 ]
両方です。その方法を教えてください。

79 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 12:35:21 ]
UNIXでも他プロセスのコマンドラインを取るのは素直にはできへんよ。


80 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 12:43:10 ]
タスクバーの奴もボタンなわけだから
フックで入って描画ルーチンをのっとる

下手くそなフックするとExplorerが落ちまくりになるけどNe!



81 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 12:46:51 ]
タスクバーのフックならTClockのソースでも見るがよろし

82 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 12:56:27 ]
Jane Styleは空のDLLを注入しただけで落ちるんだけどw
中でとんでもない事をしてそうで気になる

83 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 14:01:13 ]
>>79
psコマンドで一発じゃね?

84 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 16:11:16 ]
psでも引数が見えないのはある。
例えばsendmailとか。

85 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 16:19:57 ]
forkで親はとっくにいないとかじゃなくて?

86 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 17:35:24 ]
>>80-81
タスクバーなんてOSのバージョンが上がる度に構造が変わるような物を安易にフックすべきでは無かろう
進捗状況を出したいならメインウィンドウのタイトルを"10% 完了"みたいに変えればいい

87 名前:40 mailto:sage [2008/04/04(金) 19:52:31 ]
>>49
なるほど。
そういった仕様ということはあきらめるしかないですね。
参考になりました、ありがとうございます!

88 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 19:57:30 ]
ISAPI用のDLLの中でファイルの属性を変更するために
SetFileAttributes()を使いました。
その際、windows2000server、IIS5環境では問題なく動作したのですが
windows2003、IIS6環境ではSetFileAttributes()が失敗します。
原因としてはどのようなことが考えられるでしょうか

89 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 19:59:16 ]
途中で送信してしまいました。
また、代用となる関数、方法などありましたら教えてください。

90 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 20:12:08 ]
GetLastErrorの戻り値は?



91 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 21:00:48 ]
SendDlgItemMessageの戻り値は?

94 名前:デフォルトの名無しさん [2008/04/04(金) 21:36:47 ]
>>93
戻り値はどうやって取得すればいいんですかね?
LRESULT er;
er = Send(ry;
こうですか?

95 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 21:45:52 ]
MSDN見るなりググるなりヘッダファイルみるなりするナリよ

96 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 22:07:03 ]
>>67
平気で嘘つくの辞めようぜ

97 名前:デフォルトの名無しさん [2008/04/04(金) 22:12:37 ]
>>95
GetLastErrorですか?

98 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 22:36:30 ]
>>92
EM_GETLINEの説明を読め

99 名前:デフォルトの名無しさん [2008/04/04(金) 22:50:28 ]
>>98
WPARAMで行を指定
LPARAMでバッファを指定
バッファの先頭2byteはバッファサイズを入れておく
足りませんか?

100 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 23:11:52 ]
1. SendDlgItemMessageがSendDlgItemMessageW
2. 対象Editの2行目に1文字も無い



101 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 00:17:58 ]
>>86
どうせアイコンは小さいのだから、
あらかじめアイコンを5パターンくらい用意して、
Shell_NotifyIcon で切り換えればいいと思う。


102 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 00:19:42 ]
それはタスクトレイの話じゃないのか?
タスクトレイなら動的にアイコンを描画してアイコン切り替えればいいだけだぜ。

103 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 01:05:25 ]
タスクバー右クリック->ツールバー で一覧が出てくる
WMPやらGoogleデスクトップ検索みたいに表示したいってことか?
俺はやり方知らないけどググれば出てきそう

104 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 04:39:10 ]
>>102
× タスクトレイ
○ 通知領域

Win32スレでそういう間違った名称使うのやめとけ

105 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 05:16:35 ]
メディアプレイヤーのProgIDとインタフェイス名とID(IID_Xxxxみたいなの)教えてください。
CreateWindowとAtlAxGetControlを利用したいのです。

Win32じゃないかもしれないけどお願いします。

106 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 05:32:09 ]
>>105
OLE/COM Object Viewer

107 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 05:33:00 ]
帰れw

108 名前:デフォルトの名無しさん [2008/04/05(土) 07:09:53 ]
モマエら
よその国の人はどんどん進歩しているのに、日本人同士で足引っ張り合って
自滅するかも知れないと思ったことはないのか。

攻める先を取り違えるな。

109 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 07:41:03 ]
>>104
つ Microsoft.com Japan サイトの検索
そこまで厳密にしなくてもいいんじゃね?と思った。

110 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 08:53:03 ]
この件で誰を攻めるとか考えてる時点で終わりだ。
そんなのは無駄な時間だ。



111 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 09:31:06 ]
アイコンが並んでいる部分はタスクバー上のタスクトレイの中の通知領域だよ
XPではWindows9xの頃とタスクバーの実装が変わっていてタスクトレイと呼べるのか微妙だけど
互換性の為かShell_TrayWndというクラスのWindowは存在している

112 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 09:36:37 ]
トレイはTrayNotifyWndの方だな
このWindow構成を見るとタスクトレイというのは本来はタスクバー自体の事なのかもしれないな

113 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 10:10:35 ]
タスクトレイは時計を含む領域だけど、
通知領域は時計は含まないってこと?

114 名前:デフォルトの名無しさん [2008/04/05(土) 11:31:27 ]
>>100
出来ませんでした。

115 名前:デフォルトの名無しさん [2008/04/05(土) 11:34:10 ]
>>100
自己解決しました。

116 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 11:42:46 ]
このスレて寒いレスするバカが常駐してるよな

117 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 12:09:07 ]
>>116
痛い質問して、期待した回答が得られなくて、逆恨み粘着だろうな。

118 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 12:14:02 ]
>>117
とりあえず、答えればいいんだよバカが

119 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 12:15:59 ]
>>118
お前みたいなスタンスの人は、
マイクロソフトの有償サポートを使えよ。

120 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 12:25:38 ]
>>116=寒いレスするバカ



121 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 12:53:56 ]
何でここの人はやさしさが無いんだろうな。ゆとりがたりないのか?

122 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 12:54:46 ]
俺は普通に答え取るがな(´・ω・`)

123 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 12:56:40 ]
>>121
優しさがないのは、約一名の粘着して荒らしている人だけ。

124 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 12:58:03 ]
なんで仲良くできないの!あなたたちは!

125 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 13:00:47 ]
あと、自分を正当化ばかりしてる人ってまぁ、リアルでも2chでも多いよな。
自信があるのはいいことだけどさ。

126 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 14:39:11 ]
>>16のようなレスにいつまでも釣られるお前らの責任でもあるんだよ
2chのしきたりとか分かってない

127 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 14:58:55 ]
言いたい事も言えないこんな世の中じゃ(ry

128 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 15:15:26 ]
POISON!

129 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 15:16:50 ]
>>108
モマエら
よその星の人はどんどん進歩しているのに、地球人同士で足引っ張り合って
自滅するかも知れないと思ったことはないのか。

攻める先を取り違えるな。

130 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 15:18:29 ]
防衛省もUFO対策を論じるくらいだからやばいな



131 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 15:21:51 ]
中華対策はしないのにな

132 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 16:19:36 ]
スレを荒らすのヤメロ。

ちょっと自重しろ。

133 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 16:59:08 ]
エクスプローラーのフォルダアイコンってどこから取ってくればええんでしょうか。
2kとxpで違ったりしますか?

134 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 17:19:24 ]
>>133
マイクロソフトに「アイコンください」と言えばもらえるよ。

135 名前:デフォルトの名無しさん [2008/04/05(土) 17:22:33 ]
このスレの住人なら知っていますね、あの糞開発ツールのことを

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

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

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

糞な開発ツールを糞だと言える、そんな当たり前の環境をみんなの力で取り戻しましょう。


136 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 18:05:43 ]
>>106
そういえばそんなのあったの思い出した
さんくす

137 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 19:57:39 ]
ちなみにOLE/COM Object Viewerの使い方はこの本に載ってるよ

Visual C++プログラマのためのCOM入門
www.seshop.com/detail.asp?pid=1022

138 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 23:07:19 ]
>>138
MM_MCINOTIFYのwParam見れ

140 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 23:15:37 ]
>>139
if(wp == MCI_NOTIFY_SUCCESSFUL) で、できました。
ありがとう。

>>139を見て MM_MCINOTIFY wparam でググったら出てきましたが、
こういう〜に〜が格納されるという情報はどこから仕入れているんですか?



141 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 23:20:24 ]
>>140
www.google.com/search?q=MM_MCINOTIFY+site%3Amicrosoft.com

142 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 23:20:44 ]
普通はMSDNだろう。

時々ウソ書いてるのと、オンライン版は重たいのが難点だが。

143 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 23:28:53 ]
ありがとうございました。
英語勉強しないと;

144 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 10:40:31 ]
VC6で自分のプログラムが組み込んだコンポーネントにキー入力を渡したくて
いろいろ試行錯誤してまつ。BasicでのSendKey的なイメージ。

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

現在の修飾キーの状態にかかわらず、ActiveXに「右ボタン」だけを渡すには
どうすればいいですか?

146 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 10:43:13 ]
SendInputでも使えば

147 名前:デフォルトの名無しさん [2008/04/06(日) 13:20:24 ]
CreateFileの最後の引数って(別に指定する必要が無い場合)NULLを指定するの?それともINVALID_HANDLE_VALUE??



148 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 13:24:19 ]
>>147
NULL

149 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 15:14:51 ]
なんでNULL(0)とINVALID_HANDLE_VALUE(-1)があるの?

150 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 15:18:17 ]
MSの開発者がトンマか、喧嘩してたか、ハンドル0が有効な場合があるか、じゃね?



151 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 15:28:50 ]
>>149
_lcreatとかの失敗時に-1を返すWin16の関数から
CreateFileへの移植を容易にするためだそう。
blogs.msdn.com/oldnewthing/archive/2004/03/02/82639.aspx

152 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 15:40:23 ]
無効な値が NULL か INVALID_HANDLE_VALUE かで型名を変えればいいのに。
同じ型に別名与えるだけでいいんだからさ。

153 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 16:04:33 ]
>>152
そしたら、CloseHandleは?

154 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 18:39:45 ]
Win32とかMFCって互換性に縛られすぎてて汚い
.NETFrameworkのクラスライブラリはVB6のソレを焼直した感があってこれまた中途半端


MSはもっと直感的で分かりやすく作れないものなの?

155 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 18:41:13 ]
1からクリーンに作って普及したものってあまり聞かない気がする。

156 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 19:20:33 ]
WPFはそこそこ

157 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 19:43:22 ]
>>153
どっちも CloseHandle でいいじゃないか
WINAPI と APIENTRY と CALLBACK が同じものだったりする感じで。

158 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 20:29:48 ]
PASCALは

159 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 21:31:27 ]
Vistaのソースコードゲットした
すげーでけーよw

160 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 21:34:37 ]
そういえばHalfLife2のソースどこいったっけ・・



161 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 21:40:39 ]
俺が持ってる

162 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 21:42:20 ]
俺も預かってやってる

163 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 22:02:23 ]
XPとVistaのソースコードを手に入れたので、試しにXPにAeroGlassを移植してみた俺が来ましたよ

164 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 22:06:58 ]
一人で移植できるような規模なのか
Microsoftは五年かかったのにな

165 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 22:16:43 ]
>>163ならVistaのDirectSound HALを復活させられるに違いない。
とりあえずEAX2.0までのエミュレーションコードも入れといてね。

166 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 22:16:56 ]
ぶっちゃけソースほしいわ
ReactOSとwineとカーネルデバッガから辿るのは結構しんどい

167 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 22:46:56 ]
デバッグシンボルを落としてきてdumpbin /disasmでリバースエンジニアリングすればいい
ぶっちゃけこれで十分

168 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 23:22:15 ]
フィルタドライバ作ったことあるひとがいれば教えて欲しいんだけど、
標準で定義されているハード情報取得するときのコントロールコード
をDeviceIoContorol()にわたして、そのときに返ってくる値を
フィルタドライバのなかでうその値に変換して戻せる?


169 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 23:26:51 ]
日本語でおk

170 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 23:53:40 ]
リバースエンジニアといえば
XP の CommandLineToArgvW は argv[argc] に NULL を格納しようとしてし忘れている感じがした記憶がある。



171 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 23:59:00 ]
>>170
それはきっと前世の記憶だ。さぁ、今すぐMSに行ってバージョンアップしてきなさい。

172 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 00:02:54 ]
>>170
2000のやつも忘れてた気がする
まあCランタイムの__argc/__targvを使うかUnderTheHoodのやつからパクってくればいいだろう

俺の場合リバースエンジニアして非公開APIを使いまくっていたソフトが
Vistaになって大多数の非公開APIが廃止されたせいでエラーが出て起動しなくなってて泣いた

173 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 00:18:52 ]
そういうことになるから非公開なんじゃないのかw

174 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 00:23:46 ]
>>146
即レスどうもありがとう!徹夜プログラムで確認中に寝落ちしますた。
でうまくいかなくてまだ確認中なんだけど、sendInputは、TranslateAccellalatorと違って、
送り先のコンポーネント(hWndなど)を指定することができない。これが原因と関係するのかなあと。
やっぱりWM_KEYDOWNのMSG構造体を作る当初方針でがんばるのが必要なのかな。

175 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 00:31:28 ]
>>173
だってさ、95〜XPまで問題なく使えたんだぜ? いきなり廃止するとは思わないじゃない
でも互換モードでXPSP2にすると普通に動くあたりがMSらしい
きっと古いMS製品も動かなかったのだろうw

シンボル取ってきて見てみたらAPIの前にRETIRED_とか付いててワロタ

176 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 00:50:30 ]
互換モードでやることの中には、古いファイルを使うなんてこともなかったっけ?

177 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 00:52:33 ]
>>175
洒落が聞いてるなw

Vistaにするにあたって、整理したのかねぇ。
で、古い非公開APIは別の所にまとめたとか。

178 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 01:06:11 ]
そういうスーパーハッカーみたいな技術はどうすればつくんですか

179 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 01:08:44 ]
DLLを覗けばいいんじゃね

180 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 02:55:01 ]
>>174
自己レスです。送り先指定がないので自アプリのトップへ送ると固定されてるのかなと思ってたけど
考えてみたら、XKeymacsみたく、外部アプリへキーボード入力を送り込むアプリもあるので、
そういう制限はないはず。なのでよくわからんが、Xkeymacsのソースを解析中。
そもそも単にキーボードカスタマイズの自由度を広げるためにやってたんだが、深みにはまりそうな予感してきたw



181 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 13:35:42 ]
>>178
デペンデンシー・ウォーカー眺めてると楽しいよ。

183 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 14:13:12 ]
指定のウィンドウにWM_DROPFILESを投げるとき、
DROPFILES構造体のために確保した領域は
投げてからすぐ解放してしまっていいのでしょうか?
サンプルを探したら、しているものといないものがあって
判断に迷います。

184 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 14:23:56 ]
WM_DROPFILESそういう使い方をするもんではない

思うに、COMのOLED&Dと勘違いしてないか?

185 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 14:45:10 ]
>184
では、ウィンドウにファイルをドロップするには何のメッセージを使えばいいのでしょうか?

186 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 14:54:03 ]
>>183
別のプロセスに送るなら、すぐに解放しても構わないはず。


187 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 14:57:19 ]
>>184
そういう使い方"も"出来る訳だが
知らないのか?

>>183
対象アプリがDragFinishで開放するからいらないんじゃないの?

188 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 15:03:09 ]
知らないならレスしないでください

189 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 15:06:17 ]
知ったか厨うぜえ
勘違いしてるのはお前だろw

190 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 15:08:19 ]
誰が誰に言ってるのかも書いてクレヨン



191 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 15:11:50 ]
とにかく知らないクズはレスしないでくださいよ。うざい

192 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 15:14:44 ]
お前らレスアンカーぐらいつけろ

193 名前:デフォルトの名無しさん [2008/04/07(月) 15:20:28 ]
>>184

194 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 15:22:22 ]
だから知らないならレスするなよクズ

195 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 15:29:08 ]
また荒れてきたなあ
とりあえず>>184は切腹

196 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 15:29:44 ]
>>184

197 名前:デフォルトの名無しさん [2008/04/07(月) 15:29:49 ]
>>195
荒らすなよお前

198 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 15:55:34 ]
VistaでもWin16アプリって動くの?

199 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 15:58:41 ]
>>お前らへ
>>121

200 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 15:58:50 ]
>>198
空気読めよ



201 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 16:18:02 ]
オマエモナー

202 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 16:34:38 ]
これまた懐かしい

203 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 16:45:32 ]
(・∀・)ジサクジエンデシタ

204 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 16:46:45 ]
もう、ぬるぽ

205 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 16:56:24 ]
わっしょいわっしょい

206 名前:デフォルトの名無しさん [2008/04/07(月) 17:51:02 ]
ファイル又はメモリ内のデータを圧縮するAPIと解除するAPIを教えてください

207 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 18:21:58 ]
zlib

208 名前:デフォルトの名無しさん [2008/04/07(月) 18:54:51 ]
cabinet.dllの簡単な使い方を教えてくださいよ

209 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 18:59:14 ]
知らないならレスしないでください に一致する日本語のページ 約 141,000 件中 1 - 100 件目 (0.69 秒)

210 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 19:28:22 ]
>>212
あるじゃんwww
しっかり検索しようよ
undocumented.ntinternals.net/UserMode/Undocumented%20Functions/Compression/RtlCompressBuffer.html

214 名前:デフォルトの名無しさん [2008/04/07(月) 19:33:02 ]
>>213
あ、これは失礼しますた。
WEB全体からぐぐるとある程度でてきました。

215 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 19:45:25 ]
>>214
    ∧∧
   ヽ(・ω・)ノ ズコー
  \( \ ノ
 、ハ,、  ̄
  ̄

216 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 21:46:19 ]
こんにちは。
エクスプローラーのリストビューのタイプの変更を行いたく思い、少し調べているのですがよくわからない部分があるので質問させてください。

yokohama.cool.ne.jp/chokuto/urawaza/lv_icon.html
を読んでタイプの変更は出来そうなのですがWindows Vistaの特大アイコンなどはどのようなメッセージを送ればいいのかわからないのです。
ヒント等ご教授戴ければ幸いです。

217 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 21:49:10 ]
つ Spy++

218 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 22:01:34 ]
>>217
どうもありがとうございます。
その発想はありませんでした。

219 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 01:39:44 ]
 Windowsプログラミング用にtypedefしたデータ型の変数を扱うときは
Cの標準ライブラリを使うかで悩んだりするけど、他の人はどうしてる
のかな。
 例えばWindowsプログラムには、文字列用にいろいろなtypedefした型が
あるけど、実際には同じくcharの配列だしsprintfとかstrlenとかも使え
るだろうが、それは反則とみなすのか。
 wspritnfとかlstrlenのようにWindows用の関数があればいいけど、それ
がないやつは困りそうだ。あったとしても、MSDNで調べて理解して解決ま
で持っていくのも大変そうだな。
 ところでファイル入出力も、fputs、fprintf、fgets等に似たWindows用
の関数もあるんでしょうか。あるかないかだけ聞ければいいです。


220 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 01:40:52 ]
_tcslen とか、文字系の関数には全部 TCHAR 用の関数が用意してあるでよ。



221 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 05:08:02 ]
それってVCの独自拡張じゃないのか?

222 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 05:15:04 ]
ウインドウに描画はするけど、クリックしたら下にあるウインドウにメッセージが届くようにするにはどうすればできますか?

223 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 05:58:55 ]
俺様拡張よりはマシだろう。

VC以外のコンパイラを使うことも考慮するなら、
VCのTCHARマクロと互換性のあるものを別に作って使えばいいと思うよ。

224 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 06:28:42 ]
tchar.hなんてWindows用コンパイラなら標準みたいなもんだろ

225 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 07:23:58 ]
ていうか、C標準にwchar_tが導入されたときに、TCHARマクロのようなものも標準化されなかったんか?

226 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 07:36:30 ]
>>221
そもそも Windows プログラミングをしようってんだから
TCHAR 使うのは普通だろ?

227 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 07:59:08 ]
いい加減9xは切り捨ててwchar_tで書けばいいと思うんだ

228 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 09:16:58 ]
>>229
マニュアルとかのドキュメント作成のために画面キャプチャが欲しいっていうのなら、
リモートデスクトップとかVMwareとか、そういうのを使うといいよ。



231 名前:229 mailto:sage [2008/04/08(火) 11:33:56 ]
>>230

すみません、プログラムでなんとかできればと考えております。

232 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 11:51:13 ]
>>231
とりあえずGetDC失敗した後GetLastErrorで原因を探ってみてはどうじゃろ。

233 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 12:04:02 ]
さすがにサービスアプリを作って試してみるのはめんどくさすぎるw

234 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 12:14:14 ]
sexeを使ってみ。

235 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 12:15:12 ]
>>233
知らないのに無理に答えようとしてガンバル必要はないぞ。

236 名前:デフォルトの名無しさん [2008/04/08(火) 12:18:27 ]
>>234
このエロめ!

237 名前:デフォルトの名無しさん [2008/04/08(火) 12:19:51 ]
知らないならレスしないでください

238 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 12:27:26 ]
また荒れてるのかw

239 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 12:33:27 ]
そんなもん知ってる奴なんて作者とMSの人間ぐらいだアホか

240 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 12:34:28 ]
>>239
無知ならレスしないでください



241 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 12:35:37 ]
>>228
gccで一括りにしてはダメ。Windows用のgccはwchar_tが16ビット。


242 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 12:37:31 ]
ふつうにできるやん

243 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 12:42:51 ]
メールやん

244 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 12:49:56 ]
shlwapiのHashDataって、OSやDLLのバージョン違ってもアルゴリズム同一と保証されてる?

245 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 13:09:15 ]
英語版MSDNの検索がタイムアウトしまくって使い物にならん

246 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 13:20:06 ]
>>244
されてないと思うよ。
NT4.0の頃のIEの暗号化が標準か高度かによって違っていただろうしね。

CryptoAPIを使うことは考えてみた?

247 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 13:28:00 ]
244です。
>>246
あー。いや暗号強度とかはあんまり関係なかったんです。
データ管理に128bitのハッシュが必要だったんだけど、ソースをあまり増やさないで欲しい
というんでMD5ルーチンが使えなかった、でこれを利用したかった。
ポータブルなデータではないんで絶対同一であることが必要でもないんだけどちょっと気になったので。

248 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 13:39:23 ]
MD5ルーチンってどっかのDLLが持ってたはず
SDKヘルプで出てきたし

249 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 13:44:24 ]
MSDNライブラリのネット版がクソ重くて見れないんだけど嫌がらせか?

250 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 13:48:31 ]
英語版もさっきそんな感じだったなあ
今は復帰してるが

Windows Filtering Platform超ワケワカンネ



251 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 13:52:16 ]
ファイアウォールでも作るのw?

252 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 14:01:01 ]
>>245
>>249
独り言やめれ。

MSDNライブラリくらいローカルのHDDにインストールしろよ。

253 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 14:02:59 ]
独り言じゃないよちゃんとお前がきいてるじゃないか

254 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 14:03:07 ]
>>252
無知はレスするなつったろクズ

255 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 14:09:23 ]
叩かれた>>184が逆に叩く側に回って荒らしてるようだな
分かりやすい奴だ

257 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 14:27:22 ]
>>248
MD5Initってのが出てきたが
>Requires Windows XP or Windows 2000 Professional.
ってのが>>244の希望に沿ってない気がする

258 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 14:40:13 ]
>>257
出てきたって・・・おい

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

Win95OSR2、NT4.0以降でサポートされてるCryptoAPIを使え。
実際の処理を行うプロバイダがインストールされているかは別の話しだが。

259 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 14:46:49 ]
2000・XP以降対応で何が不満なのだろう・・・
今更サポート切れてる9xなんかに対応する必要なんて無かろうに

260 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 14:46:52 ]
CALG_MD5ならMicrosoft Base Cryptographic Providerでサポートされると書いてある
IE3が入っていればWin95でも問題ないと思う



261 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 14:55:35 ]
>>228
ところがCygwinやMinGWのgccはwchar_tが2バイトでビルドされているので、
WCHARとwchar_tが等しいという仮定はここでも通用する。

262 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 14:56:34 ]
>>258
嘘教えるなくず

263 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 15:09:55 ]
日付が変わるまで書込み禁止

264 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 15:58:23 ]
>>261
そういうのを、たまたま一致している、というのだよ。


265 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 16:03:07 ]
どんまい

266 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 16:14:45 ]
ける

267 名前:263 mailto:sage [2008/04/08(火) 16:15:30 ]
お前ら1回死ね

268 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 16:25:59 ]
>>255
英語圏では単語の途中で改行されるのを嫌うから、なるべく区切り文字で改行するようになってるんだと思う。

269 名前:229 mailto:sage [2008/04/08(火) 16:30:50 ]
>>232
GetLastErrorでは何も返ってきませんので、
GetDCでエラーが発生しているわけでは無いみたいです。
ただGetDCで返ってきたHDCからHBITMAPを作成しても真っ黒です。
ちなみに通常の状態ですと、
取得したHDCからHBITMAPを作成で正常にキャプチャできています。

270 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 16:49:21 ]
>>264
CRTDLL.DLLやMSVCRT.DLLにあわせるためであり必然です



271 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 16:57:20 ]
もうXPに帰りたい…
実行に管理者権限が必要かどうかぐらい書いとけカス

272 名前:デフォルトの名無しさん [2008/04/08(火) 17:16:45 ]
帰ればいいだろ
わざわざVista使ってストレス溜めて何の得になるんだ?

273 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 17:44:09 ]
俺ビスタだぜ?
お前XPなの?
m9(^Д^)プギャーーーッ
ってしたいため

274 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 17:45:26 ]
XPなら何に管理者権限が必要かどうか区別する必要が無いなんて事は全く無いが

275 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 17:49:40 ]
必要があるってことは無いが無いってことも無い事は無いか必要ってこともあることは無い

276 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 17:50:26 ]
>>270
合わせる必要なんかないだろ。

ていうか、gccはGNUのC標準ライブラリを使うんじゃないか?
MSVCRT.DLLを使うのは行儀が悪すぎる。

277 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 17:52:05 ]
VistaってUser/PowerUser権限をWindows2000見たいな感じで使うこと出来ないの?

278 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 17:55:39 ]
はい

279 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 17:57:36 ]
そりゃ悲惨だね・・

280 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 18:07:37 ]
はい



281 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 18:14:29 ]
>>276
MinGWinはデフォルトでMSVCRT.DLLを使うよ

282 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 18:16:50 ]
>>281
知ったか乙

283 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 18:22:59 ]
>>282

284 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 18:26:39 ]
>>277
2000みたいな感じってのがよくわからないが、グループや特権の割り当ては2000と同じようにできるよ
Administratorsが必要なときに自動的にrunasみたいなダイアログが出るところは2000と違う

285 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 19:10:45 ]
>>276
W系APIが16ビット前提なんだから、合わせるのは当然でしょ。
gccでデフォルトで glibc を使うプラットフォームはむしろ少数派。


286 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 19:32:42 ]
UACなんて無効でおk

287 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 19:41:12 ]
つまりUser権限で常用して必要なときはRunasってな使い方がVistaでも出来るって事?

288 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 19:53:17 ]
>>287
出来る。

289 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 21:55:13 ]
Win32 API を使う漏れらがちゃんと気を付けて、たとえば無暗にHKLMとかHKCRに
もの書いたりしないようにしてゆけば、>>287みたいな使い方もどんどん楽になってゆくよね
・・・・無理だけどさ。

サービスなんかやめて setuid ビット採用してよ >> Windows

290 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 22:30:41 ]
runasでバッチ作るくらいで勘弁してあげたらw



291 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 23:24:31 ]
>>249
MSDNネット版、やたら重いよね。Webのデザインが変わってから重くなったイメージ。
勘弁してほしいよな。

292 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 03:21:02 ]
>>285
合わせるのが合理的ではあるが、絶対に合せなければならないというわけではないぞ。

293 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 03:21:50 ]
>>291
MSDNライブラリくらいローカルにインストールしろって。
オンライン版よりも少し内容が古くなるったって、それが問題になるような仕事してんのか?

294 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 07:32:28 ]
>>291
おれは今のMSDNのほうが使いやすいな
あとは検索の糞っぷりと左ペインの使いづらさをどうにかしてほしい

295 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 16:02:11 ]
>>183
WM_DROPFILESはPost側で確保してGet側で解放する仕様なので作ってPostMessageしたらそれで終わり
もちろん(まずないはずだが)PostMessageが失敗したときには自前でGlobalFreeすること



301 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 16:08:32 ]
>>300
>>187で既出
それとも二日間調べつづけて漸く結論を導き出せた>>184君か?w

302 名前:デフォルトの名無しさん [2008/04/09(水) 16:12:59 ]
お前らそんなに>>184を責めるなよ!
どうせお前らも同じく無知なんだから

303 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 16:22:08 ]
×お前ら
○俺ら

304 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 16:24:26 ]
×俺ら
○俺

305 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 16:45:07 ]
>>304だけ無知って事でいいじゃん

306 名前:デフォルトの名無しさん [2008/04/09(水) 17:30:44 ]
>>184=>>302=>>305=無知だろJK

307 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 17:38:25 ]
ビットマップの特定の色を透過させるにはどうしたらいいでしょうか。

308 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 17:40:50 ]
TransparentBlt

309 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 17:44:51 ]
TransparentBlt

310 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 17:45:29 ]
>>304>>306
わかりやすすぎwwwwwwwwwwwwww



311 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 17:56:39 ]
最も最近作られた子ウィンドウを取得する方法ってないかな?

312 名前:311 mailto:sage [2008/04/09(水) 17:57:03 ]
「最も最近」って何だよ俺 orz

313 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 18:03:30 ]
×俺
○俺ら

314 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 18:09:14 ]
×俺ら
○お前ら

315 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 18:17:56 ]
ダイゴロー

316 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 18:20:39 ]
GetYoungestChildWindow

317 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 18:21:47 ]
>>316
できました!
ありがとうございます。

318 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 18:47:26 ]
どういたしまして

319 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 18:52:35 ]
Youngestって何だよw
せめてLatestぐらいにしとけ

320 名前:311 mailto:sage [2008/04/09(水) 19:03:44 ]
本当お前ら面白いなw
諦めたほうがよさそうだ。別の方法を探ります



321 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 19:10:25 ]
もう春休みは終わったはずなのに何というカオス・・・

322 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 19:31:12 ]
I am NEET!

323 名前:デフォルトの名無しさん [2008/04/09(水) 19:41:16 ]
>>320
GetWindowLongで我慢しろブタ野郎!

324 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 19:45:52 ]
は?

325 名前:デフォルトの名無しさん [2008/04/09(水) 20:11:42 ]
WM_PAINT メッセージを発行する Win32APIって何だったでしょうか?

326 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 20:13:23 ]
UpdateWindow

327 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 20:13:51 ]
>>326
thx

328 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 20:14:51 ]
InvalidateRectじゃなくて?

329 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 20:17:53 ]
漏れは GetMessage だと思うんだ

330 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 20:18:17 ]
Win32APIなんぞ久しいが
InvalidateRectは領域を無効化することで再描画させると記憶してる



331 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 20:27:21 ]
GetMessageじゃなくSendMessageとかPostMessageではなくて?

332 名前:デフォルトの名無しさん [2008/04/09(水) 20:29:22 ]
知らないならレスしないでください

333 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 20:47:59 ]
議題:なぜこのスレはゆとりほいほいになったのか

334 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 20:57:44 ]
知らないならレスしないでください
という言葉を無敵だと思ってるから

335 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 21:17:08 ]
GetMessageを呼びだしたスレッドに属するウィンドウに無効領域があり、
他にウィンドウメッセージが無ければ、その時点でWM_PAINTが生成される。

336 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 21:23:07 ]
>>331
ウィンドウメッセージのキューは単純なFIFOではないのよ。

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

WM_PAINTも同様。

337 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 21:56:37 ]
>>311
なかなか面白そうな質問なんで調べてみたがなかなか無いな。
フック使えば出来るが個人的にフック嫌いだしなー。

338 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 22:21:59 ]
>>337
意外だな
このスレはフック大好き人間だらけなのに

ま、解決策をすぐフックに持っていく短絡思考な回答者は嫌いだが

339 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 22:29:50 ]
フック大好きなのは質問者という事実

340 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 22:39:20 ]
好き好きフック船長!!!



341 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 22:57:24 ]
質問者以外もフック大好きだろ
>>48とか>>80-81とか

個人的に次々々バージョンぐらいのWindowsからSetWindowsHookEx/CreateRemoteThreadとかは
Vistaの64-bitドライバみたいに未署名モジュールは使えなくすればいいと思っていたりする

342 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 23:02:48 ]
>>341
そんなことになったら、自作ヘボソフト介助ツールが使えなくなるじゃないか!
世の中にはいいソフトなのにフロントエンドが腐ってる物が多いんだぞ

343 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 23:12:41 ]
>>338
Winのフックってシステム的に美しくないじゃん。

フックを使ったら負けだと思ってる (大学生 21歳 嘘)

344 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 23:20:54 ]
フックでウインドーズをファックするわけよ。

345 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 23:37:16 ]
>>342
他プロセスに簡単に介入できる現状の方が問題だろ

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

それに次々々バージョンなんてあと10年ぐらい先の話だろう

346 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 10:46:01 ]
>>346
まずはその本を窓から投げ捨てた上で油をかけて燃やせ。
話はそれからだ。

あとスレ違い。
operator ->()は構造体へのポインタから構造体のメンバにアクセスするための演算子。

348 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 10:50:22 ]
>>347
放火犯で捕まるのは嫌です

349 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 10:50:48 ]
不法投棄の上に放火

350 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 11:00:09 ]
>>347
バージョンの誤差さえ何とかすれば結構いい本だと思ってたんですが、、ダメなんでしょうか(´・ω・`)
->のこと大体把握できました、ありがとうございます。
そしてスレ違いすいませんでした。



351 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 13:38:30 ]
>>350
ちゃんと理解していなくて、なんとなく動いているプログラムを量産する、
いないほうがマシなプログラマを育成するタイプの本だな。

もちろん、作者の人の行為自体は馬鹿にできないが。

352 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 13:40:07 ]
APIリファレンスとしてはいいと思う

353 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 13:47:20 ]
英語版MSDNでも読めばいいじゃない

354 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 13:50:11 ]
いや、馬鹿にできるよ。
猫のせいでどれだけ糞コードが世に出回ったと思っているんだ。

355 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 13:51:46 ]
猫はやりたいことに必要なAPIとかググるキーワードを見つけるために
使うんだったら分からなくもない
コード自体はどうしようもないほどに糞

356 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 14:32:25 ]
てか->はC言語の問題でAPI使ってどうこう以前の問題

357 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 14:33:34 ]
10年ぐらい前はGoogleなんて無かったしWin32APIの日本語での情報も少なかったから多少は役に立ったとかそんなとこだろ
今となっては正直無くてもいいと思う

まあ最近は適当に検索すると.NETばっかり出てきて鬱になるがw

358 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 14:54:45 ]
この辺で話題を変えておこうか

359 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 14:58:50 ]
XPスタイルのタブコントロール上のトラックバーコントロールの背景色をきちんと描画するにはどうしたらいいんでしょうか?
EnableThemeDialogTextureを適用したダイアログに乗せる方法だと、
そもそもダイアログの背景にグラデーションがかからないのでダメでした。
トラックバーコントロールのWM_CTLCOLORSTATICで、DrawThemeParentBackgroundを呼び出す方法だと。
ウインドウが隠れてから復帰するときにトラックバーコントロールが消えてしまいダメでした。

もう完全に詰まってしまった感じなのですが、トラックバーコントロールを独自実装する以外で何か良い方法はないでしょうか?

360 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 15:12:37 ]
DrawThemeParentBackgroundを呼び出す方法で、
ウインドウから隠れて復帰するときだけデフォルトウインドウプロシージャを呼び出すようにすれば、
一応きちんと描画されるのですが、判定が難しく、あまり確実な方法ではないので、他の方法はないでしょうか。



361 名前:359-360 mailto:sage [2008/04/10(木) 16:23:32 ]
激しく泥臭い方法だけど一応できたっぽいかもしれません。

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

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

としたら、どうにかできました。
ただ、このやり方はあまりにも泥臭く、不確実な感じがするので、
引き続き、他の方法がありましたらよろしくお願いします。

362 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 18:24:22 ]
カスタムドローで全部描いちゃえ

363 名前:デフォルトの名無しさん [2008/04/10(木) 18:30:36 ]
いやオナニードローだ!

364 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 18:39:14 ]
_CrtDumpMemoryLeaks関数などを使用してメモリリークをチェックしているのですが、
WinMain関数より前で確保されたメモリ領域が解放されない現象が発生しています。
自分で用意しているグローバル変数のコンストラクタ内では
メモリ確保に絡む処理は行なっていません(いないはずです)。
このメモリリークがどこで発生しているか調べる方法はないでしょうか?


365 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 18:43:23 ]
_CrtSetBreakAllocとかあったはず。
APIじゃないけどね

366 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 18:47:06 ]
msvcrt.dllがKnownDLLsだから理論上はCランタイム関数もWin32APIということになる

367 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 18:49:54 ]
>>364
それはVCの話であって、Win32APIの話ではないよ。

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

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

メモリが解放されなくて困っているのでなければ、
WinMain関数に入ってすぐの時点で、
_CrtMemCheckpoint を使ってスナップショットをとり、
WinMain関数からreturnする前に自分で、
_CrtMemDifferenceや_CrtMemDumpStatisticsを
呼んで、そのスナップショットとの差分をチェックしよう。


368 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 18:55:26 ]
>>365
すいませんWin32でしか使えないというようなことが書いてあったので
ここで質問してしまいました。

その関数は使用してみたのですがWinMain関数の先頭で呼んでも
ブレークしてくれず、確保番号も若かったので
WinMain関数より前に確保されたメモリ領域なのではないかと推測しました。
何よりも先にその関数を呼び出すようなことは可能なのでしょうか?


369 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 18:57:49 ]
>>369
>_CrtDumpMemoryLeaksが指摘してくる、ということ?
そうです。

その方法を試してみます。

370 名前:364 368 mailto:sage [2008/04/10(木) 18:58:58 ]
すいませんアンカーミスです。
×>>369
>>367




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

※すれ違いが許容範囲を超えてるなら誘導頂けると助かります。

372 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 20:53:58 ]
>>371
一時的に見たいだけなら、これが一番簡単だと思う。
・ローカルプロクシサーバを建てて、IEのプロクシに設定。
・アクセス後、プロクシのログを見る。

373 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 21:21:28 ]
>>372
同じようなもんだが、Fiddlerを愛用してる。
一応MS製だし、簡単なので。

374 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 21:37:06 ]
>>371
KB249232で出来ないか?

375 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 22:15:08 ]
>>376
部外者だがなかなか使えそうな情報サンクス

378 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 22:27:26 ]
おまいらくらいハイレベルな質問するにはどのくらい勉強すれば良いんでつか。

379 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 22:37:48 ]
>>377
あ、HTMLDocument2::parentWindowでIHTMLWindow2取得してからIServiceProviderクエリだったかも

380 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 22:37:51 ]
>>378
平均的な大学受験勉強ぐらい



381 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 22:38:41 ]
その答えは風に吹かれているのさ

382 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 22:38:43 ]
>>379
そのまんま使うほど馬鹿じゃないよb

383 名前:371 mailto:sage [2008/04/11(金) 04:18:24 ]
多くのアドバイスありがとうございます。
URLとかきましたがコンテンツの元がインターネットなのか
PEのリソースなのか、レジストリなのかローカルファイルなのか
コードに埋め込みなのかはたまたそれ以外なのかわかりにくいのです。
まだ良く見てないのですが後で読み直してけんきゅうしてみます。
ありがとうございました。

384 名前:371 mailto:sage [2008/04/11(金) 05:11:49 ]
一通り読ませて貰ってそれを参考にウェブ検索したところ参考になるページがたくさん見つかりました。
早速なにかスクリプトでも書こうと思ったのですが、↓のページのVBサンプルのバイナリがあっさり
そのまま使えました。助かりました。
www.google.com/search?btnI=I%27m%2BFeeling%2BLucky&q=Me.Text+=+%22GetHtmlObject%22

385 名前:364 mailto:sage [2008/04/11(金) 11:03:50 ]
自己解決しました。

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

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

スレ違い失礼しました。

386 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 11:06:31 ]
↓ズコーのAA

387 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 18:53:19 ]
一つのウィンドウを5等分して5個のクラスが担当領域を描画をそれぞれ行おうと思うのですが

クラス内部にstaticなメモリHDCを用意して共有し、最後に表HDCに転送する形で描画しようと考えてるのですが
この場合、描画処理は排他的にした方が用意のでしょうか?

392 名前:デフォルトの名無しさん [2008/04/11(金) 18:54:21 ]
用意くはないかもな

393 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 18:55:36 ]
>>391ですが日本語でOKすぎるorz
何とか察してください


394 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 18:59:24 ]
>>391
当然だろ?

395 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 19:21:06 ]
387のどのへんが恥ずかしいのか、よくわからないので
だれかおじさんにこっそり教えてくれないか

396 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 19:22:01 ]
387→385です orz

397 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 20:23:06 ]
Hookについて質問です.

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

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

2.
上記サイトでは, LoadLibraryとGetProcAddressを常にフックしていますが,
アプリケーションの組み方によっては有効でない気がします.
というのは, ウィンドウを表示させるようなアプリケーションを作るとして,
メッセージループに入る前にInitial処理としてLoadLibrary及びGetProcAddress等を
行うことが多いかと思います.
となると, Initial処理の二つの関数はフックされずに正常なアドレスを返してしまいますよね.
この問題って通常どうやって対処するものなのですか?
それとも, 上記の様なことを行うのは珍しいとして, 気にしないものですか?

398 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 20:41:08 ]
2。
だいたいのプロセスでフックが効けばいいんすよ! ってわけにいかないのなら気になるでしょ?

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



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

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

また, SetWindowsHookExを使ってしまうとメッセージキューでのDLLロードになってしまうので, 使わない方がベターですか?

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

全プロセスが対象! ってのならユーザモードの仕事じゃないとは思う



401 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 22:02:38 ]
>>400
すみません. 抽象的な話で進めようとしていました...

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

Hookプロセスは常駐型にしようと思っていますが,
被Hookプロセスはメッセージキューを必ずしも持つとは限りません.
そこで, SetWindowsHookExは使えないと考え, 別の方法を探しました.
japan.internet.com/developer/20050830/26.html#section_2
上記アドレスの方法をやってみたのですが, プロセスIDから引っ掛けて
フックを行うようになるので,
この方法ではLoadLibrary/GetProcAddress系がダメだと考えて手詰まり状態になりました...

402 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 22:21:22 ]
>>401
自作アプリが対象なら、外部からインジェクションしてフックするのではなく、
それぞれの自作アプリからフックDLLを明示的にLoadLibraryしなよ。

403 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 22:26:25 ]
フックの質問する人って、どうして不適切な手段を選ぶんだろうな。

404 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 22:27:16 ]
フックならジェイソン尾妻に教わるといい

405 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 22:57:42 ]
またフックか
検索すりゃ腐るほどでてくるだろ

406 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 23:02:47 ]
>>402
アプリケーションがフックDLLを取り込むという意識が入り込んでいる為, その手法だと目的に反してしまいます...
また明示的に行うと, GetProcAddressにより正しいアドレスを取得できてしまう為,
それらの関数を禁止しなければなりません.

デバッグの時のみリンクを行ってHookさせる手法がシンプルだとは思いますが, 極力違う方法も検討したいのです.
(勿論, 他の方法を検討した結果, その手法がベストであればその手法を選択すると思います.)

407 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 23:06:48 ]
>>406

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

こんなのをWinMainの先頭に入れとけばいいじゃないか

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

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


なんか自作アプリと言ってる割には情報が不確か過ぎるが、本当に自作アプリをフックしたいのか?

409 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 01:09:08 ]
>>401
確か起動する全てのプロセスに指定したdllをロードさせるためのレジストリキーがあったと思う。
なんていったっけっかな・・・



411 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 01:21:42 ]
AppInit_DLLs? 
これは全てのプロセスじゃなくてuser32.dllをロードするプロセスのみだが。

412 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 01:23:42 ]
そっか。ありがと。
んではダメだなぁ。

413 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 02:30:14 ]
全てのプロセス・・・?
自作アプリのみのフックじゃなかったのか


つうか自作アプリなんて真っ赤な嘘で、本当はチートツールでも作りたいだけだろ


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

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

他には、葱のような実装か。

415 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 02:45:32 ]
>>413
??

416 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 02:50:37 ]
>>414
権限は無視されないだろ
そんなことできたらUsers権限でサービスとかもフックできることになるしセキュリティもへったくれもねー

417 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 02:57:24 ]
裏画面の操作について質問です

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

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




418 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 03:01:21 ]
>>417
キモいフックネタが続いてる時に君のような質問を見るとホッとするよ。

419 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 03:12:11 ]
>>415
何がわからないのかがわからない。
>>413の疑問はもっともだろが。

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




421 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 03:32:23 ]
>>417
DC には何も描画したり表示したりできない。
したがってもちろん描画結果も格納されない。

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

オフスクリーンビットマップやメモリDCでググればサンプルは多数見つかるだろう。

422 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 05:08:18 ]
>>419>>413

424 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 05:10:42 ]
CreateCompatibleBitmapの第一引数をhDCにしてみる

425 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 05:48:59 ]
>>422
CreateCompatibleDCで作られたメモリDCには初期状態で1*1の
モノクロビットマップがセットされている。
CreateCompatibleBitmapでそのDCを指定してしまうと、
モノクロのビットマップが作られてしまう。

っていうか、それ以前の問題として、そのBitBltのところのpHDCは
どこから出てきたんだ?

426 名前:デフォルトの名無しさん [2008/04/12(土) 05:56:19 ]
>>423>>415

427 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 06:00:01 ]
知らないならレスしないでください

428 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 06:33:31 ]
>>425
phdcは古いコードの名残で誤植でした
とりあえず塗りつぶしまでは上手くいきました、ありがとうございます

PatBltで背景を塗りつぶすときウィンドウ標準の灰色で塗りつぶしたい場合は
ブラシで直接色を指定しか方法はないのでしょうか?

429 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 06:42:57 ]
GetSysColorBrushならシステムカラーインデックスで指定できるけど

430 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 10:03:08 ]
>>409
なる。でありがとう

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

良くあることだけど確かに恥ずかしいね 超がんばれ



431 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 11:33:52 ]
クラスのインスタンスをグローバル変数にしてはいけない、というのはC++の常識よ。
メモリリーク云々の問題に関係なく、グローバル変数にするのはやめるべき。

432 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 12:38:20 ]
>>431
それどこの国の常識?

433 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 12:41:15 ]
クラスのインスタンスに関わらずグローバル変数を使う事自体が邪悪なのは常識だが、
クラスのインスタンスに限って邪悪とするのは非常識。

434 名前:デフォルトの名無しさん [2008/04/12(土) 13:01:28 ]
WIN32SDKでモードレスダイアログに親ウィンドウが隠れてしまうのですが、
親ウィンドウを最前面に表示させるにはどうすればよいですか?

435 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 13:04:29 ]
グローバル変数駄目っていっても
標準関数の中で使われてないか?

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

ひとつの変数をいろんな用途に使う方がよっぽど邪悪。

436 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 13:10:36 ]
クラスのインスタンスをグローバル変数にしてはいけないのは、
それが、main関数に入る前に他の関数を呼び出すこと、だから。

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

明らかにダメなやりかたと比べてマシだというのは、ナンセンスだと思う。

437 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 13:13:22 ]
POD 型のグローバル変数も関数の戻り値で初期化可能だろ。C++ では。

438 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 13:15:29 ]
グローバルじゃなくてstatic なメンバ変数でもそうだしねぇ。

439 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 13:18:56 ]
>>435
グローバル変数使ってる標準関数は軒並み糞だと言われている。
乱数列2つ使いたいのに使えないよこの糞がとか、
strtok をスレッドセーフにしてくれよこの糞がとか。

440 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 13:19:07 ]
すいませんが

APIと何の関係が?



441 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 13:31:11 ]
GetDesktopWindow();の戻り値を
CreateDialogに指定してみたたら親ウィンドウを最前面に表示出来ましたが、
親ウィンドウから文字列をモードレス側のリストビューに追加出来ません。
何故ですか?

442 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 13:34:06 ]
それは
朝食にパンを食べたら、雨が降りました。何故ですか、
と聞いているようなもんだよ。

443 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 13:34:17 ]
状況説明は詳細に。

444 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 13:35:25 ]
>>437
可能かどうかと、やるべきかどうかは、別問題。


445 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 13:38:11 ]
>>444
コンストラクタ/デストラクタ内で変な事してなけりゃ同じことだろ。
クラスがどうかとか無関係。

446 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 13:47:16 ]
>>442
私が提示している情報以外に必要なものを教えて下さい。

447 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 13:48:34 ]
仕様。

448 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 13:55:55 ]
>>445
変なこと、ねぇ。

たとえばnewを使うとか、な。

449 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 13:57:23 ]
new とか別にいいだろ・・・。

450 名前:デフォルトの名無しさん [2008/04/12(土) 13:59:53 ]
>>447
具体的に



451 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 14:00:44 ]
グローバルで問題になるのは
他の翻訳単位内にある初期化の必要なグローバル変数に依存する
処理を記述する(初期化前に使ってしまうかもしれない)ってところだな。
逆に言えば、それさえしなけりゃ大した問題は無い。

452 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 14:02:23 ]
>>449
newが投げた例外をmain関数でもcatchできないのはマズいだろう。

453 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 14:03:32 ]
>>452
その場で catch して abort しろよ・・・。

454 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 14:04:17 ]
どうせ abort するしかないんだから
catch できなくても大した問題ではない。

455 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 14:08:58 ]
スマン static は良いのか・・・

457 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 14:10:29 ]
シングルトンは初期化のタイミングをずらしたグローバル変数に過ぎない。
少ないに越した事は無いが、利便性を考えると欲しい事はあるな。

458 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 14:17:58 ]
NTFS以外のファイルシステムも使えるから保証はないよな。

459 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 14:27:17 ]
まとめてC++スレに移動してくださいです。。。。

460 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 14:38:40 ]
本格的に邪魔



461 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 14:42:15 ]
>その場で catch して abort しろよ
何そのグローバル変数で配置されることを前提の実装

462 名前:デフォルトの名無しさん [2008/04/12(土) 15:10:12 ]
どうせ二人ぐらいが言い争ってるだけだろ
次はgotoネタか?

463 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 15:19:03 ]
breakもcontinueもifもgotoの一種だよな

464 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 15:21:08 ]
だ ま れ

465 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 15:37:42 ]
い や だ

466 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 15:49:34 ]
死ね

467 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 16:40:08 ]
死 に た く な い

468 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 17:21:43 ]
>462
2人ではなく病気の彼1人だろ

469 名前:デフォルトの名無しさん [2008/04/12(土) 17:59:32 ]
最近の自演は高度化してるな

470 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 18:03:34 ]
従順な奴隷のように、期待した通りの回答を得られないと
逆恨みしてスレに粘着して荒らすなんて、もうね。

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

ま、コミュニケーション能力が低いまま就職して、痛い目にあえばいいんだよ。




471 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 18:13:12 ]
>>470
答えられない屑は黙ってろ

472 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 18:16:26 ]


473 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 18:17:04 ]
>>470
知ったかで回答して周囲から叩かれたのをまだ根に持ってるようだな

474 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 18:39:19 ]
どう考えても粘着しているのは「知らないならレスしないでください」と言われた回答者です。
本当にありがとうございました。

475 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 19:04:24 ]
あなたの代わりにMSDNで調べてあげるスレ

ってのを作って分離しようよ

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

sizeof(char)が必ず1でも、省略すべきではない
pc11.2ch.net/test/read.cgi/tech/1187521586/

477 名前:デフォルトの名無しさん [2008/04/12(土) 19:37:18 ]
>>475
お前がそのスレ立てろ、今すぐに(笑)

478 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 19:49:11 ]
ピクチャーボックス再描画について質問です.

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

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

何をトリガーに再描画指示を出せばよいか, アドバイスお願いします.

479 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 20:18:22 ]
>何をトリガーに
WM_PAINTじゃね? 最近(Vista)のアエロじゃ発生しないらしいけど

480 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 20:20:43 ]
>>478
> 何をトリガーに再描画指示を出せばよいか

その発想が間違ってる。

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

WM_PAINTが適切に送られてこない、あるいは、
BeginPaintで適切な領域が指示されないために、
正しく表示されないのであれば、
OSに不適切な値を渡していると思われる。



481 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 20:21:53 ]
アエロ…………プクク(笑)

482 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 20:25:06 ]
>>478
ウィンドウを内容を表示したまま移動 → WM_PAINTを何度も受け取るので多少失敗していても気がつかない
だったりして。

483 名前:デフォルトの名無しさん [2008/04/12(土) 20:25:32 ]
WM_PAINT以外にも描画しないといけないメッセージがあるけど、
それ関係ない?

484 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 20:32:13 ]
NTFSのアクセス権チェック方法として、ACEを取得する必要があるのがわかったのだが、
自身の権限と取得されたACEの中で一番有効なACEと比較しなければならないとおもうのだが、
どのACEが有効となっているかの判断はどうすればよろしいでしょうか?
※関連:GetFileSecurity、GetSecurityDescriptorDacl

485 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 20:51:24 ]
>>478
ピクチャーボックスってVBか.NETの事か?
それともStaticコントロールをそう呼んでるのか?

いずれにしろピクチャーボックスなんてコントロールはWin32には無い
Staticコントロールに描画したいならSS_OWNERDRAWスタイルにしてWM_DRAWITEMに応答しとけ

486 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 21:05:37 ]
なんかおまいらひまだな。。。。
最近ニュースで話題の学校裏サイト状態w
でも、ほんとはここはWin32APIスレですよ。


487 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 21:06:34 ]
>>481
Aeroをローマ字として読むとアエロになるから別におかしくないだろ
無知は黙ってろよ

488 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 21:33:26 ]
Googleはゴーグルって読むんだよ
無知は黙ってろ
Yahooはヤホーって読むんだよ
無知は黙ってろ
gooはゴーって読むんだよ
無知は黙ってろ

489 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 21:34:19 ]
煽りも煽られもいらないっす

490 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 22:09:25 ]
WM_CHARだと仮想キーコードではなく、
ASCIIとかの文字コードだと見なすべきだと思う。

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

仮想キーコードが出てくるのはWM_KEYDOWN/UP系だよ。

492 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 22:11:27 ]
あああ、そうだった。VKで処理しちゃだめだったね。
どうもありがとう!

493 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 22:18:03 ]
491さんにごめんなさいな追加カキコ。
VK_BS(0x09)って書いたけど、厳密には0x08でした。
ASCIIでももちろん0x08です。

494 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 22:25:46 ]
質問
SetRectの存在意義がわかりません






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<111KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef