トップページ⇒tech
995コメント264KB

Win32API質問箱 Build87

レス数が950を超えています。1000を超えると書き込みができなくなります。
0001デフォルトの名無しさん2010/03/28(日) 10:23:58
スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。
やさしいお兄さんやお姉さんたちが答えてくれるかも。
「知らないならレスしないで下さい。ウザイだけです。 」なんて言わないでねっ!

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

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

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

Win32API質問箱 Build86
http://pc12.2ch.net/test/read.cgi/tech/1265350980/
0002デフォルトの名無しさん2010/03/28(日) 10:25:04
85 ttp://pc12.2ch.net/test/read.cgi/tech/1262430441/
84 ttp://pc12.2ch.net/test/read.cgi/tech/1259478896/
83 ttp://pc12.2ch.net/test/read.cgi/tech/1256891725/
82 ttp://pc12.2ch.net/test/read.cgi/tech/1253699773/
81 ttp://pc12.2ch.net/test/read.cgi/tech/1249140049/
80 ttp://pc12.2ch.net/test/read.cgi/tech/1244057140/
79 ttp://pc12.2ch.net/test/read.cgi/tech/1240411224/
78 ttp://pc12.2ch.net/test/read.cgi/tech/1238289377/
77 ttp://pc12.2ch.net/test/read.cgi/tech/1235494464/
76 ttp://pc11.2ch.net/test/read.cgi/tech/1233622578/
75 ttp://pc11.2ch.net/test/read.cgi/tech/1231423602/
74 ttp://pc11.2ch.net/test/read.cgi/tech/1229239827/
73 ttp://pc11.2ch.net/test/read.cgi/tech/1227934931/
72 ttp://pc11.2ch.net/test/read.cgi/tech/1226575789/
71 ttp://pc11.2ch.net/test/read.cgi/tech/1224745158/
70 ttp://pc11.2ch.net/test/read.cgi/tech/1221446107/
69 ttp://pc11.2ch.net/test/read.cgi/tech/1217687038/
68 ttp://pc11.2ch.net/test/read.cgi/tech/1215348804/
67 ttp://pc11.2ch.net/test/read.cgi/tech/1212931246/
66 ttp://pc11.2ch.net/test/read.cgi/tech/1210775622/
65 ttp://pc11.2ch.net/test/read.cgi/tech/1208847084/
64 ttp://pc11.2ch.net/test/read.cgi/tech/1207099291/
63 ttp://pc11.2ch.net/test/read.cgi/tech/1204600558/
62 ttp://pc11.2ch.net/test/read.cgi/tech/1202060403/
61 ttp://pc11.2ch.net/test/read.cgi/tech/1199514664/
0003デフォルトの名無しさん2010/03/28(日) 10:25:44
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/
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/
0004デフォルトの名無しさん2010/03/28(日) 10:26:27
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/
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
0005デフォルトの名無しさん2010/03/28(日) 10:30:28
999 名前:デフォルトの名無しさん[sage] 投稿日:2010/03/28(日) 10:19:24
hoge((bool)0,(HANDLE)0)
みたいなことはしてもいいと思う

HANDLEってvoid*だぞ
キャストする意味がない
0006デフォルトの名無しさん2010/03/28(日) 10:31:47
あ、ごめん
ソースコードの解読のしやすさの話ね
0007デフォルトの名無しさん2010/03/28(日) 11:50:36
ダイアログボックス呼び出しCreateDialog、リソーススクリプトに内容を記述、ダイアログ表示。
ウインドウ名や内容に ”文字” では無く、Char変数の内容を表示させたいのですができますかね?
0008デフォルトの名無しさん2010/03/28(日) 12:41:46
日本語でおk
0009デフォルトの名無しさん2010/03/28(日) 13:22:44
SetWindowText
WM_SETTEXT
001072010/03/28(日) 14:05:42
>>9
できました、ありがとうございます。
ダイアログボックス自体は変数の表示はできないって事なんですね。
0011デフォルトの名無しさん2010/03/28(日) 18:20:20
GdiplusのGraphics::Clearに矩形でクリッピングしたいんですが、何か方法ないですか?
Clearの直前にSetClipしても反映されませんでした。
0012デフォルトの名無しさん2010/03/29(月) 00:36:13
>>10
日本語でおk
0013デフォルトの名無しさん2010/03/29(月) 00:39:27
>>10
ヒント:「システム」ダイアログ
0014デフォルトの名無しさん2010/03/30(火) 00:53:48
とあるプラグイン(DLL)をロードした際、
そのプラグインは特定の条件化(バージョンチェックなど)で
不整合が発生した場合、自らをアンロードしたいのですが、
何か良いやり方はありませんか?

あるのであれば教えて頂きたいです。
0015デフォルトの名無しさん2010/03/30(火) 01:22:24
>>14
DLLをアンロードするAPIはFreeLibraryがあるが
DLLが自分自身をアンロードするのは普通にはできないと思う。
0016デフォルトの名無しさん2010/03/30(火) 01:27:37
dllmainでFALSEを返す
0017142010/03/30(火) 01:34:37
>>16
それができない状況です。

>>15
自分自身をアンロードはやはりできないですか。。
ExitProcess()しちゃうとプロセス自身が落ちてしまいますよね・・

フラグか何か持って処理をさせないという微妙な方式を採用するしかないのかな。
とりあえずもう少し意見があるかも知れないのでしばらく待ってみます。
0018デフォルトの名無しさん2010/03/30(火) 01:39:25
>>17
ロードする方のプロセスに手を入れられるなら、
そっちでアンロードするように実装すべき。
0019デフォルトの名無しさん2010/03/30(火) 02:28:03
TeminateProcessが実行された後って、普通はシステムがリソース全て開放することが保証されているよね?
でも、通知領域にアイコン持つプロセスにそれを実行したとき、通知領域のアイコンが表示されたままになる。
これはアイコンリソースが開放されてないからじゃないの?
0020デフォルトの名無しさん2010/03/30(火) 06:52:32
はい
0021デフォルトの名無しさん2010/03/30(火) 07:17:30
CPU名を簡単に取得する方法を教えてください
0022デフォルトの名無しさん2010/03/30(火) 07:49:53
>>19
通知領域はexplorer.exeのプロセス内だ
0023デフォルトの名無しさん2010/03/30(火) 20:22:50
>>14
FreeLibraryAndExitThread
0024デフォルトの名無しさん2010/03/30(火) 21:02:18
スレッドなのね
0025デフォルトの名無しさん2010/03/30(火) 23:15:24
737 名前:デフォルトの名無しさん[] 投稿日:2010/03/19(金) 15:40:38
CPU名を取得するにはどうしたらよいのでしょうか?

738 名前:デフォルトの名無しさん[sage] 投稿日:2010/03/19(金) 15:41:47
>>737
WMI使うのが簡単。

739 名前:デフォルトの名無しさん[] 投稿日:2010/03/19(金) 16:18:58
めんどくせーから、ソース晒してくれ

740 名前:デフォルトの名無しさん[] 投稿日:2010/03/19(金) 16:29:46
>>738
簡単なサンプルを教えていただけないでしょうか?

741 名前:デフォルトの名無しさん[sage] 投稿日:2010/03/19(金) 16:31:24
とりあえずおぱいうp
0026デフォルトの名無しさん2010/03/31(水) 00:37:45
>>21
プロンプト出してユーザー自身に使ってるCPU名を入れさせろ
0027デフォルトの名無しさん2010/03/31(水) 08:28:25
>>21
mov eax,80000002h;...80000004h
cpuid
0028デフォルトの名無しさん2010/03/31(水) 19:39:55
char name[49];
unsigned char index;
int reg[4];

for(index = 0, num = 0x80000002L; num <= 0x80000004L; index += 4, num++)
{
 __cpuid(reg,num);
 memcpy(&name[index],reg,sizeof(int) * 4);
}
name[48] = '\0';

printf(_T("%hs\n"),name);
0029デフォルトの名無しさん2010/03/31(水) 19:41:15
最後の間違えた
s/printf/_tprintf/
0030デフォルトの名無しさん2010/03/31(水) 19:42:41
numの宣言も忘れたがもういいや
0031デフォルトの名無しさん2010/04/01(木) 07:59:58
例えば
LARGE_INTEGER liX = 0;
ではなく、
LARGE_INTEGER liX = { 0 };
とするのは、なぜなんでしょうか?
LARGE_INTEGERが共用体だからですか?
0032デフォルトの名無しさん2010/04/01(木) 09:15:37
>>31
ttp://akky.cjb.net/mfc/initstru.html
0033デフォルトの名無しさん2010/04/01(木) 09:44:53
LARGE_INTEGER共用体の最初の要素が構造体だから
0034デフォルトの名無しさん2010/04/01(木) 13:21:57
>>32
あー
そういう意味だったんですね
0035デフォルトの名無しさん2010/04/01(木) 16:44:10
vc++9.0でのお話なのですが、
ZeroMemory()という関数は純粋なWindowsAPIではないという認識でよろしいでしょうか?
宣言をたどっていくと…RtlZeroMemory(WinNT.h)→memset(String.h)になってるので…
CRT依存したくない場合は、自作するのがベターって事ですかね。
0036デフォルトの名無しさん2010/04/01(木) 17:31:36
kernel32.dllにはRtlZeroMemoryがありkernel32.libには__imp__RtlZeroMemory@8があるので宣言さえすれば使える
#undefしてもよいしマクロ展開させないためにスペースをあけてもよい
RtlZeroMemory (
0037デフォルトの名無しさん2010/04/01(木) 17:42:13
>>36
ありがとうございます。スッキリしました!
0038デフォルトの名無しさん2010/04/01(木) 18:20:17
SecureZeroMemoryとかなんとか
0039デフォルトの名無しさん2010/04/01(木) 22:03:28
SecureZeroMemoryは高速化版がある
0040デフォルトの名無しさん2010/04/02(金) 09:48:57
exe や dll が .NET マネージコード化案マネージコード化を判別する方法ありますか?
0041デフォルトの名無しさん2010/04/02(金) 10:03:30
定義次第。
0042デフォルトの名無しさん2010/04/02(金) 10:35:51
確実ではないが一般に
mscoreee.dll:_CorDllMain,_CorExeMain系関数をインポートしていればマネージドコードを含む
さらにその他のdllもインポートしている場合マネージド/アンマネージド混在の可能性が高い
何もインポートしていないならマネージド/アンマネージドに無関係なデータ/リソースモジュールの可能性が高い
それ以外の場合はアンマネージドモジュールの可能性が高い

COM参照など間接的な物はほぼ判定不能
0043デフォルトの名無しさん2010/04/02(金) 11:23:59
んー、そうですか。
ちょっとがんばってみます。

マネージドコードで判断するときは
リフレクション使ってファイル読んだときに
アンマネージドであれば例外を出してくれる陽南でかんたんにわかるようなんですけどね。
0044デフォルトの名無しさん2010/04/02(金) 17:57:26
ngenが.netアセンブリの判定やってるから参考にしてみれば
しらんけど
0045デフォルトの名無しさん2010/04/02(金) 19:15:52
フックDLLを書いてるときにふと気になったけど
共有セクションってどこまで適用されるの?ウィンドウステーション?
0046デフォルトの名無しさん2010/04/03(土) 07:01:16
あるプロセスが開いてるファイルハンドルを取得して、強制的にクローズするにはどうすればいいの?
0047デフォルトの名無しさん2010/04/04(日) 23:46:00
質問です。IDE(VC++2008 Express)固有の話なのですが、
とあるクラスを作成後、動作確認中、作成した自作クラスのコンストラクタ内の処理の途中で
ブレイクポイントを仕掛けたのですが、どうもブレイクしてくれません。

※正確には、コンストラクタと、publicメンバ関数の2箇所にブレイクポイントをしかけました。
 しかしコンストラクタのブレイクポイントは無視され、publicメンバの方だけで止まります。

これは仕様なんでしょうか。ご存知の方いらっしゃいましたらよろしくお願いいたします。

0048デフォルトの名無しさん2010/04/04(日) 23:46:53
おい
殺されたいのかお前は
スレタイ100回声に出して読め
0049デフォルトの名無しさん2010/04/05(月) 00:10:28
>>48
ゴメン。しかも自分の勘違いだった
0050デフォルトの名無しさん2010/04/05(月) 00:21:32
まぁまぁ
0051デフォルトの名無しさん2010/04/05(月) 03:49:34
Win32APIじゃ無いかもしれないけど、現在接続しているUSBカメラの焦点距離を知る方法
ってありませんか?
0052デフォルトの名無しさん2010/04/05(月) 06:21:07
はい
0053デフォルトの名無しさん2010/04/05(月) 13:00:20
あります
0054デフォルトの名無しさん2010/04/05(月) 13:14:04
この辺かな
WIA_DPC_FOCUS_DISTANCE/WIA_DPC_FOCAL_LENGTH
0055デフォルトの名無しさん2010/04/05(月) 14:30:07
DOSコマンドのroute printで表示される情報と同じものを取得するAPIを教えてください
0056デフォルトの名無しさん2010/04/05(月) 15:05:38
ありません
0057デフォルトの名無しさん2010/04/05(月) 15:09:28
知らないならレスしないで下さい。ウザいだけです。。。
0058デフォルトの名無しさん2010/04/05(月) 15:20:51
煽っても何も出て来ませんよ
0059デフォルトの名無しさん2010/04/05(月) 15:27:24
http://www.wmifun.net/sample/win32_ip4routetable.html
http://www.geekpage.jp/programming/iphlpapi/
0060デフォルトの名無しさん2010/04/05(月) 15:28:22
scanfで数字を複数受け取るにはどうするの?
0061デフォルトの名無しさん2010/04/05(月) 15:36:40
>>60
>>48
0062デフォルトの名無しさん2010/04/05(月) 15:53:29
>>58
でてきましたよどじ

>>59
ありがとうございますありがとうございます。
あなたは神です。こんな糞まみれのスレで初めてみた神です。
0063デフォルトの名無しさん2010/04/05(月) 15:53:59
知らないならレスしないで下さい。ウザいだけです。。。

0064デフォルトの名無しさん2010/04/05(月) 15:55:04
コンソールプログラムとDOSプログラムを混同するな
0065デフォルトの名無しさん2010/04/05(月) 16:00:05
うるさいブタ共だなあ
0066デフォルトの名無しさん2010/04/05(月) 16:17:46
>>59
これ Win32API じゃないだろ
0067デフォルトの名無しさん2010/04/05(月) 16:59:17
>>66
いや参考になった。
へるぱAPIで取得できました。

しかし、しかし。
Presistent Routesだけ欲しい場合に判断に困ってます。
dwForwardProto辺りで何とか識別できそうかなっておもってたんですがダメっぽいですぅ
0068デフォルトの名無しさん2010/04/05(月) 17:16:27
ttp://www.youtube.com/watch?v=_NO0AdDjMnY
0069デフォルトの名無しさん2010/04/05(月) 17:25:29
っていうか、GetIpForwardTableじゃUSBとかのLANで接続してないとPersistent Routesを取れないや
まあ接続されてないんだからActive Routesに表示されないのは当然なんだが・・・
これPersistent Routesを取得する方法をさっさと教えてください。
0070デフォルトの名無しさん2010/04/05(月) 19:20:14
最近UNC等を調べ始めたものです。

引数やDnDでファイル名を取得するとき、
ローカルのファイルだと C:\file.ext
ネットワーク上のファイルだと \\PCNAME\share\file.ext
で受け取りますよね。

UNCが説明されているあるサイトで \\PCNAME\C:\file.ext
のような表記を見かけたのですが、
(http://e-words.jp/w/UNC.html)
このように取得する方法ってありますか?
0071デフォルトの名無しさん2010/04/05(月) 20:22:01
>>70
管理共有でもなきゃ、その記述が間違い。
0072デフォルトの名無しさん2010/04/05(月) 20:22:28
って見てみたら管理共有じゃん。
0073デフォルトの名無しさん2010/04/05(月) 20:23:25
まずは落ち着け
0074デフォルトの名無しさん2010/04/05(月) 20:28:43
そこのサイトの説明は適当過ぎだな。
偶々Cドライブを「C$」という名前で共有した結果なだけだろうに。
0075デフォルトの名無しさん2010/04/05(月) 20:29:46
XP VC++2008、他プロセスの指定メモリアドレスの内容を見たいのだけど
そのプロセスハンドル取得してReadProcessMemory使ってもうまく表示してくれません
GetLastErrorみたらERROR_ACCESS_DENIEDって出たけどOpenProcessToken等の操作で変わるものでも無いので
どうすれば表示されるのか分からないので教えてください
0076デフォルトの名無しさん2010/04/05(月) 20:35:52
どうすればって、普通にやればできるだろ。
0077デフォルトの名無しさん2010/04/05(月) 20:37:28
単にReadableじゃないのでは
0078デフォルトの名無しさん2010/04/05(月) 20:41:56
単にアドレスがおかしいとか。
0079デフォルトの名無しさん2010/04/05(月) 20:44:24
・ハンドルのアクセス権の問題
・指定アドレスの有効性の問題
・指定アドレスのアクセス権の問題

どれかしかない
0080デフォルトの名無しさん2010/04/05(月) 20:46:23
まとめると、>>75が悪い、ってことだな。
0081デフォルトの名無しさん2010/04/06(火) 11:28:50
ヘルパーAPIでPersistent Routesのリスト取得や追加や削除を教えてえええええええええええ><
Active Routesに対してならできるがそれじゃ意味がないぽ><
0082デフォルトの名無しさん2010/04/06(火) 23:32:12
WMIのWin32_IP4PersistedRouteTableでも使えば
0083デフォルトの名無しさん2010/04/07(水) 04:30:11
アプリの実行環境がコンソールかGUIかってのはAPIとは直接関係ないだろ。
どっちでも同じAPIを呼んで同じ情報が取得できるはず。
0084デフォルトの名無しさん2010/04/07(水) 16:36:08
mmsystem.hをインクルードすると大量のエラーが出てコンパイルできません。
コンパイラはicl 11.0、OSはWindows XP 64bitです。
0085デフォルトの名無しさん2010/04/07(水) 19:09:19
デスクトップのディスプレイの明るさを変えるapiはありませんか?ノートPCならIOCTLのブライトネストでかえれるらしいのですが。osはxpです
0086デフォルトの名無しさん2010/04/07(水) 19:29:55
VGAの色補正ならドライバをリバースエンジニアリングすれば出来ない事もないけど
ディスプレイの調整は、そのインターフェースがあるなんて聞いた事無い
0087デフォルトの名無しさん2010/04/07(水) 19:42:22
ある
0088デフォルトの名無しさん2010/04/07(水) 20:21:20
>>85
Vista以降ならある。
0089デフォルトの名無しさん2010/04/08(木) 08:30:15
ありがとうございます。xpにはやはりなさそうですか。助かりました。
0090デフォルトの名無しさん2010/04/08(木) 12:05:40
FindNextFile() でCドライブ配下の全てのファイルをカウントするだけのプログラムを作成してみました。
PC起動時の初回と2回目以降に実行し他場合、処理速度が100倍ぐらい違うのですが、どうしてでしょうか?
0091デフォルトの名無しさん2010/04/08(木) 12:11:31
Cache
0092デフォルトの名無しさん2010/04/08(木) 12:52:23
WinMainでDialogBoxを呼び出してモーダルダイアログを出します。
そのモーダルダイアログのボタンを押したときモードレスダイアログを出したいのですが、
メッセージループが表面上にないので、IsDialogMessage() 関数を追加する方法が分かりません。
どうようにすればいいでしょうか?
0093デフォルトの名無しさん2010/04/08(木) 13:47:10
メッセージループを追加する
0094922010/04/08(木) 15:51:22
#include <windows.h>

INT_PTR CALLBACK SubProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp) {
switch (msg) {
case WM_CLOSE:
DestroyWindow(hWnd);
return TRUE;
}
return FALSE;
}

INT_PTR CALLBACK MainProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp) {
switch (msg) {
case WM_INITDIALOG:
CreateDialog((HINSTANCE)GetWindowLong(hWnd, GWL_HINSTANCE), "SubDLG", hWnd, SubProc);
return TRUE;
case WM_CLOSE:
EndDialog(hWnd, TRUE);
return TRUE;
}
return FALSE;
}

int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hprev, LPSTR cmd, int show) {
DialogBox(hInst, "MyDLG1", NULL, MainProc);
return EXIT_SUCCESS;
}

>メッセージループを追加する
どこに追加すればいいでしょう…
0095デフォルトの名無しさん2010/04/08(木) 15:55:17
ダイアログプロシージャ内
それで問題があるならスレッドを起動する
0096922010/04/08(木) 17:15:01
いやその。。。
ダイアログプロシージャ内に入ったときはDispatchMessageが呼ばれているし、
スレッド立てたらメインスレッドのメッセージは読めないと思うんですが。。。

0097デフォルトの名無しさん2010/04/08(木) 17:51:17
>>96
> WinMainでDialogBoxを呼び出してモーダルダイアログを出します。

これを止めて
モードレスダイアログ MainProc側 生成 → メッセージループ (EndDialog() 呼び出しの確認だけ ちょこっと工夫)

メッセージループ内
 MainProc側
  何らかのトリガーで SubProc側生成
0098デフォルトの名無しさん2010/04/08(木) 20:20:06
リモートのIPアドレスからコンピューター名を得る方法ありますか?
自分も相手もWindows(XP以降)です
正しくはコンピューター名じゃなくてUNC名ですが
0099デフォルトの名無しさん2010/04/08(木) 20:21:33
>どこに追加すればいいでしょう…

どこでもいい
君のプログラムにとって必要な場所に追加する

>ダイアログプロシージャ内に入ったときはDispatchMessageが呼ばれているし、

DispatchMessageから呼ばれたプロシジャの中でDispatchMessageを呼んではいけないという規則は無い
自分でイベントループを回すとはそういうこと

>スレッド立てたらメインスレッドのメッセージは読めないと思うんですが。。。

読める
0100922010/04/08(木) 20:28:31
お陰さまで、解決しました。
WinMainのモーダルダイアログを、モードレスにし、自分でメッセージループを回すことで、
サブ側もタブストップ効くようになりました。

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


0101デフォルトの名無しさん2010/04/08(木) 20:35:06
メッセージループとイベントループってどっちが正しいの?
0102デフォルトの名無しさん2010/04/08(木) 21:14:40
>>101 用語の話ってことなら、win32的にはメッセージループじゃね?
で、そのメッセージって何?って聞かれたなら、それは各種イベントって感じ
0103デフォルトの名無しさん2010/04/08(木) 22:17:25
>98
IPアドレス→MACアドレス→マシン名
ARPとNetBIOS(NBT)とか?
0104デフォルトの名無しさん2010/04/08(木) 22:17:56
イベントループなんて聞いたことないな

イベントで思いつくのはイベントハンドラだな。
0105デフォルトの名無しさん2010/04/08(木) 22:40:33
自己解決しました
0106デフォルトの名無しさん2010/04/08(木) 23:20:09
>>105
解決したときはどうやって解決したか書いておくと
後の人のためになるよ。
0107デフォルトの名無しさん2010/04/08(木) 23:27:10
2chでの「自己解決しました」だけの書き込みは99.9%赤の他人。
0108デフォルトの名無しさん2010/04/09(金) 04:45:12
   ┌─┐
   │●│
   └─┤
   _   ∩
  ( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘      おっぱい!おっぱい!
0109デフォルトの名無しさん2010/04/09(金) 05:08:12
SetLayeredWindowAttributesでクライアント領域を透過させて
そこに表示する文字もSetBkModeで透過させることができたんですが
CreateFontで作成した文字列だと文字の周りにデフォルトの背景色が出てしまって
透過できないんですがどうすればいいですか
0110デフォルトの名無しさん2010/04/09(金) 07:35:47
自己解決しました。
0111デフォルトの名無しさん2010/04/09(金) 08:28:52
デフォルトの背景色をα値にするとか
0112デフォルトの名無しさん2010/04/09(金) 09:29:03
http://wisdom.sakura.ne.jp/system/winapi/win32/win21.html
0113デフォルトの名無しさん2010/04/09(金) 09:44:12
ヘルパーAPIでPersistent Routesのリスト取得や追加や削除を教えてくださいよ
0114デフォルトの名無しさん2010/04/09(金) 10:14:13
http://msdn.microsoft.com/en-us/library/aa366071(v=VS.85).aspx
0115デフォルトの名無しさん2010/04/09(金) 10:24:54
いや
何度も書かれている
お前の目が節穴だっただけ

大抵の人はフィルタを通して物(この場合スレの書き込み)を見てしまう
大事なことが書かれていてもそれに気付くためには
本人がそれを受け入れるための準備が必要なんだ
0116デフォルトの名無しさん2010/04/09(金) 10:54:45
>>113 お前まだそれやってたのか
まさか全部人に聞かないと書けない=コピペしか出来ない奴なのか
0117デフォルトの名無しさん2010/04/09(金) 12:10:03
ソケット通信でUDPを使っているのですが
そのときに、ポートを5000を使って送信する時に
srcポートとdstポートが同じになってしまいます。
これをsrcは自動?割り振りでdstが指定したポート番号になる方法を教えてください。
オープンはこんな感じで行っています。
struct sockaddr_in sa;
SocketHandle = ::socket( AF_INET, SOCK_DGRAM, 0 );
sa.sin_family = AF_INET;
sa.sin_addr.s_addr = INADDR_ANY;
sa.sin_port = ::htons( iPort );
::bind( SocketHandle, (struct sockaddr *)&sa, sizeof( sa ) );
0118デフォルトの名無しさん2010/04/09(金) 13:55:33
Yahoo!知恵袋でも聞いているのですが返事がこなさそうなのでこちらでお聞きします。
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail.php?qid=1239071767

UnhookWindowsHookExがいくらやっても失敗します。
http://ir9.jp/prog/ayu/datlog/tech_win32api/1069339866/1069339866_02.html
の411のかたも同じ状況だったようですが解決されなかったようですね。
メインプロセスからSetWindowsHookExを呼んで、同プロセス内でUnhookWindowsHookExを解除するところで失敗します。
エラーコードを吐かせてみたところやはりフックハンドルが無効というものでした。
しかし、フックハンドルの値もint型にキャストして吐かせてみたところ、
Set〜から最後までずっと同じ値をとっていました。
フックは正常に作動しているので解除できないと気持ち悪いです。

しかし失敗のメッセージが表示されたあとは、フックが解除されているんです。
さらにキーフックが起こっていない状態でUnhookすると成功するんです。
なんなんでしょうか。。。。
0119デフォルトの名無しさん2010/04/09(金) 14:04:46
>>118
マルチ乙
返事がこなさそうって失礼にも程がある

0120デフォルトの名無しさん2010/04/09(金) 14:08:30
まぁ来ないけどね
0121デフォルトの名無しさん2010/04/09(金) 14:39:57
ahoo!知恵遅れ袋で聞くってアホとしか
01221182010/04/09(金) 14:57:11
フック関連のは何度か質問してるんですがYahoo!知恵袋は一度も返事が来ません。
私の質問履歴にないのは全部そのまま消えていくからですorz
なんでしょうかね。めんどくさいのかわからないのか。
マルチなんぞに返答をくれる方お願いします。

キーイベントが発生したときのみエラーが起きているので、フックプロシージャかなんかに問題でもありますかね?
キーイベントの有無による違いはそれくらいだと思うんですが。
0123デフォルトの名無しさん2010/04/09(金) 15:52:19
>>118
開発環境は?
hHookはどこでどう宣言してる?
0124デフォルトの名無しさん2010/04/09(金) 16:01:20
ぐだぐだほざいてないでさっさと教えやがって下さいよ
0125デフォルトの名無しさん2010/04/09(金) 16:21:32
雑魚しかいないから教えれる奴がいないんだろw
0126デフォルトの名無しさん2010/04/09(金) 16:25:23
なんか数日前から騙って踊れるキチガイが1匹わいてるな
0127デフォルトの名無しさん2010/04/09(金) 16:38:54
16:25:23 にも基地外が沸いてるね
0128デフォルトの名無しさん2010/04/09(金) 17:31:09
ここまで俺の自演
0129デフォルトの名無しさん2010/04/09(金) 17:51:33
↑
2ちゃんの画一的なコメント 乙
0130デフォルトの名無しさん2010/04/09(金) 18:01:47
別の症状だと思うがsmss.exeなど入力のないシステムプロセスにフックしたまま解除不能になった事ならある
case DLL_PROCESS_ATACH:
if (!GetModuleHandle("USER32.DLL") return FALSE;
0131デフォルトの名無しさん2010/04/09(金) 18:07:58
>>118
WM_KEYHOOKのプロシージャでResetHookを呼んでいるんだろうけど
SendMessageしたらいかんだろ。
0132デフォルトの名無しさん2010/04/09(金) 19:05:15
>117
1) bindのsin_portを0にする
2) bindやめてconnect呼ぶ。(後続するsendtoはsendに変える)
1,2の好きな方を選んだら?
0133デフォルトの名無しさん2010/04/09(金) 20:08:04
WM_KEYHOOKを受け取ったウィンドウプロシージャで
何をやってるか示さないと答えようがないわけだが
まぁ>>131の可能性が高そうだけど
0134デフォルトの名無しさん2010/04/09(金) 23:24:48
ドライブレターからフロッピードライブか否かを判別する方法はないですか?
GetDriveTypeではリムーバブルって返って来るだけで、フロッピーではないかも知れませんし、
SetupDiEnumDeviceInfoとSetupDiGetDeviceRegistryPropertyでQueryDosDeviceで得た文字列と同じものを探して関連付けようと試みましたがヒットしないです...。

QueryDosDeviceでは"\Device\Floppy0"が返って来ましたが、SetupDiGetDeviceRegistryPropertyではフロッピー系は"\Device\FloppyPDO0"が見つかっただけでした
0135デフォルトの名無しさん2010/04/09(金) 23:41:09
フロッピーはAドライブだろ常考
01361182010/04/09(金) 23:58:31
>>135
ん?ドライブレター変えたらどうすんの???
責任取れるの?

0137デフォルトの名無しさん2010/04/10(土) 02:26:34
>>136
なんだてめぇ
01381342010/04/10(土) 03:20:14
なんかDeviceIoControlとIOCTL_DISK_GET_MEDIA_TYPESで簡単に識別できるみたいです ノシ
0139デフォルトの名無しさん2010/04/10(土) 08:58:46
思いつきの裏技だがシェルアイコンのインデックスで判定するとかw
0140デフォルトの名無しさん2010/04/10(土) 14:15:55
HKEY_LOCAL_MACHINE\SYSTEM\MountedDevicesを開いて
\DosDevices\〜からパス取り出して
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enumからそのパスを開いて
ClassGUIDとかで区別できると思うけど

>>135
ねぇPC98版Windowsって知ってる?
0141デフォルトの名無しさん2010/04/10(土) 14:17:58
Windows3.x 以前のは Windows じゃないことにしておこう
0142デフォルトの名無しさん2010/04/10(土) 14:18:26
知らん。
0143デフォルトの名無しさん2010/04/10(土) 14:20:21
あと3ヶ月だねぇ。
0144デフォルトの名無しさん2010/04/10(土) 14:46:36
ユーザーにドライブの正体は何ですか
といちいち設定させるUIでも作った方が確実
アホな自動認識よりはユーザーもそっちを選ぶ
0145デフォルトの名無しさん2010/04/10(土) 14:57:10
>>141
Windows98もNTもPC98版が存在したが、いったいなにをどうしておきたいんだ?
0146デフォルトの名無しさん2010/04/10(土) 18:40:57
質問者当人の>>138で終わった話なのに何やってるんだ?
http://support.microsoft.com/kb/163920/en
0147デフォルトの名無しさん2010/04/10(土) 20:54:37
アプリの二重起動を防ぐのにMutexを使っていたけど、
これってひょっとして名前付きのカーネルオブジェクトならなんでもいいって事?

OpenJobObjectとか
0148デフォルトの名無しさん2010/04/10(土) 20:55:18
OpenじゃなかったCreateか
01491182010/04/10(土) 21:35:09
>>148
WinMainの2つ目の引数を使えばええやん
そのためにあるのだよ
0150デフォルトの名無しさん2010/04/10(土) 21:39:48
16bit時代の方ですか?
0151デフォルトの名無しさん2010/04/10(土) 21:40:08
ネタだよな。

hPrevInstance
アプリケーションの前のインスタンスのハンドルが入ります。
Win32 アプリケーションでは、常に NULL です。
0152デフォルトの名無しさん2010/04/10(土) 22:02:37
>>147
自分はそう解釈して、CreateFileMappingで二重起動時にアクティブにしたいWindowハンドル入れて使ってる。
勝手解釈なんで、有識者にほんとに問題ないか聞きたい。
0153デフォルトの名無しさん2010/04/10(土) 22:03:28
>>147
Openは使うなよ、全般的に
0154デフォルトの名無しさん2010/04/10(土) 22:11:01
さすがイミフな質問するだけあって回答も廃クオリティ
0155デフォルトの名無しさん2010/04/10(土) 22:36:14
共有セクションを入れたDLLを静的リンクして、共有セクションにある変数を見るとか
0156デフォルトの名無しさん2010/04/10(土) 22:39:50
>DLLを静的リンク
どういうこと?
0157デフォルトの名無しさん2010/04/10(土) 22:48:39
>>154
坊や何の意味がわからないのだね?
0158デフォルトの名無しさん2010/04/10(土) 22:55:54
>>156
なんかおかしくなってた
つまり、libファイルをリンクして、共有セクションのあるDLLが常にロードされるようにしておく
01591182010/04/10(土) 23:04:48
全部ダメ。0点。

レジストリにキーを作るくらいダメ解答ばかりやな。
0160デフォルトの名無しさん2010/04/10(土) 23:07:56
>>155
でもそれ同じパスにあるDLLがロードされないとだめだろ
0161デフォルトの名無しさん2010/04/10(土) 23:08:34
>>158
意味内よねw
01621182010/04/10(土) 23:31:40
にゃあ
0163デフォルトの名無しさん2010/04/10(土) 23:35:54
ダイナミックなんとかライブラリ
0164デフォルトの名無しさん2010/04/10(土) 23:49:26
共有セクションをDLLにする必要はなぜ
0165デフォルトの名無しさん2010/04/11(日) 00:52:40
EXE内にしたらコピーするだけで回避出来るぜ
0166デフォルトの名無しさん2010/04/11(日) 14:19:59
リソース無しでプロパティシート作るには?
これが出来ると vc と gcc でソース共通にできそうなのですが。
メニューバーは簡単だった。
0167デフォルトの名無しさん2010/04/11(日) 20:09:36
   ┌─┐
   │●│
   └─┤
   _   ∩
  ( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘      おっぱい!おっぱい!
01681182010/04/11(日) 22:11:36
122以外で118名乗ってるやつ何者www

SendMessageんとことその他いろいろ変えてみたらまぁそこは解決できたっす。
しかし次の問題点。
メインウィンドウのハンドルをWM_CREATE時にDLL側に渡してるんですよ。
それがメインウィンドウがアクティブなときは大丈夫なんだけど、
アクティブじゃなくなるとそのウィンドウハンドルがどっかいくそうです。笑
WM_CREATEで一度しか渡してないのにghWndの値が勝手に変わってるみたいっす。
勝手にってのはありえないけど、実際俺はghWndの値をその一度しかセットしてないのにNULLになってるんですよ。
WM_CREATEのところはただ単に関数でghWndにウィンドウハンドルを渡すだけですので省略しますね。

HWND ghWnd;
LRESULT CALLBACK MyHookProc (int nCode, WPARAM wp, LPARAM lp)
{
if (nCode<0)
_goto ret;
else if (ghWnd==NULL)
_MessageBox(NULL, "ウィンドウハンドルがないっす笑", "DLL", MB_OK);
else if (wp==VK_ESCAPE)
_PostMessage(ghWnd, WM_KEYHOOK, (WPARAM)0, (LPARAM)0);
ret:
_return CallNextHookEx(hHook, nCode, wp, lp);
}
0169デフォルトの名無しさん2010/04/11(日) 22:27:09
DLLの使い方くらい勉強しようぜ
0170デフォルトの名無しさん2010/04/11(日) 22:33:08
頭ぶつけて死んだ方が早そう
01711182010/04/11(日) 22:43:58
>>169
わからないので具体的にお願いします。
どうすればウィンドウハンドルを保持しつづけられますか?
http://www.kumei.ne.jp/c_lang/sdk2/sdk_163.htm
とか見る限りだとグローバル変数はDLLが開放されるまで値が保持されると思うんですが。
0172デフォルトの名無しさん2010/04/11(日) 22:48:00
大抵のバグは本人が問題ないと思って省略しているところにある
0173デフォルトの名無しさん2010/04/11(日) 22:53:44
グローバル変数といえどもプロセス間では共有されないのは分かってるんだろうか
共有したいならセグメントを共有するよう指定してやる必要がある
#pragma data_seg("Shared")
HWND ghWnd = NULL;
#pragma data_seg()
#pragma comment(linker, "/section:Shared,rws")
0174デフォルトの名無しさん2010/04/11(日) 22:59:49
>>171
サンプルに毛を生えらかした程度の事で
ハマっちゃう人の気持ちって分かる人は少ないから
全ソースうpってみたら?
0175デフォルトの名無しさん2010/04/11(日) 22:59:49
口調もコードも全てか低脳臭くて^^;
01761182010/04/11(日) 23:07:58
>>175
(建前)
わかんねえなられすすんな
俺の質問に答えてりゃいいんだよ!!!

(本音)
こいつらつかえねー
0177デフォルトの名無しさん2010/04/11(日) 23:14:17
>>176
失せろ
0178デフォルトの名無しさん2010/04/11(日) 23:19:12
>>172
すっげえわかるw
いわゆる想定外
01791182010/04/11(日) 23:22:53
>>174
そうします。
書き方がやばくて恥ずかしいのであまり晒したくなかったのですが。w
現段階でのソースです。
http://space.geocities.jp/classcircle/MonitorDown.c
http://space.geocities.jp/classcircle/test.c
test.cがDLLのソースで、MonitorDownがメインのソースです。
モニターの電源を、Escが押される、もしくは停止ボタンが押されるまで、メッセージを送り続けることで消そうとしています。
BreakPointは簡単にメッセージボックスを表示させるマクロです。
他にわからない点があったら言ってください。
ボタンが異常に小さいのはリソースからそのまま移植したからです。
0180デフォルトの名無しさん2010/04/11(日) 23:32:40
>>179
全ソース
↑意味分かる?日本語だよ
無意味な略語や隠語を使いたがる人がいるけど
そのタイプの構ってさんなのかな?
01811182010/04/11(日) 23:39:59
プロジェクト的な意味ですか?
BCCですがMakeファイルの使い方知らないんでバッチで代用してます。
http://space.geocities.jp/classcircle/MonitorDown.zip
自作のライブラリっぽいものとヘッダファイルもあわせてこれで全部のはずです。
0182デフォルトの名無しさん2010/04/11(日) 23:41:46
bccって#pragma data_segとかサポートしてたっけ?
01831182010/04/11(日) 23:43:20
>>182
あぁなんかそこ警告出ました。
0184デフォルトの名無しさん2010/04/11(日) 23:47:11
     |\__/|
   /  ▼▼▼ ヽ
   |   (●) (●) |
   |  三 (_又_)三|
   \__  ^_/
    / `ー(Ω)- ' ヽ
   i ,イ=      ヽ i
   U |三     ノU
  ⊂ニヽ ,r-.、  イ
     (,,ノ  .ヽ,,)
01851182010/04/11(日) 23:47:30
これ使えないんですねo...rz
メモリマップトファイル?とやらを勉強してから出直してきます。
お騒がせしました。と、ありがとうございました。
01861182010/04/11(日) 23:51:03
>>185
なんだよ、かまってちゃんか
0187デフォルトの名無しさん2010/04/11(日) 23:52:42
>>168
>WM_CREATEで一度しか渡してないのに
WM_ACTIVATEAPPのコードは何なんだ。
0188デフォルトの名無しさん2010/04/12(月) 02:32:02
メッセージクラッカマクロの返値 (LRESULT)(DWORD)(int) win32 の場合 (long)(unsigned long)(int)
これって符号どうなるの?
0189デフォルトの名無しさん2010/04/12(月) 03:02:46
どうもならない
01901182010/04/12(月) 03:19:44
>>189
apiよりキャストの勉強しようず
0191デフォルトの名無しさん2010/04/12(月) 03:26:38
符号なんて利用する側の解釈の問題であって
キャストしたからといって符号が変わる訳ではない
0192デフォルトの名無しさん2010/04/12(月) 10:45:41
Shift-JISにない文字(♥だとかハングルだとか)を含むパスを
Unicode非対応のライブラリで扱う必要があります。
とりあえず、GetShortPathNameで8.3形式に変換して渡せば問題ないよう
なのですが、この関数で得た8.3形式のパスに現在のコードページで扱えない
文字が含まれないという確証がありません。

そもそも「8.3形式」とは何なのかをズバリ記述したドキュメントはないものでしょうか?
0193デフォルトの名無しさん2010/04/12(月) 11:38:01
古いファイルシステムの形式(というより制限かな)
ファイル名は拡張子をのぞいて最長8文字

9文字以上の場合、aaaaaa~1.txt ってかんじで省略される。
ただそれだけ。

だからそのシナリオで8.3形式に変換する意味はない。
01941922010/04/12(月) 12:14:22
英語版Wikipediaの"8.3 filename"の項には
> The DOS filenames are in the OEM character set.
という記述があるのですが、これをMS自身のドキュメントで確認したいんですよね。
0195デフォルトの名無しさん2010/04/12(月) 12:28:56
DOSのFATファイルシステムの本来のファイル名なので当たり前すぎてほとんど書かれていないな
http://msdn.microsoft.com/en-us/library/aa363807%28VS.85%29.aspx
http://msdn.microsoft.com/en-us/library/ff553060%28VS.85%29.aspx
0196デフォルトの名無しさん2010/04/12(月) 12:45:48
ここで質問していいのかわからないけどとりあえず書きます。

CreateFont()で高さを↓で指定したのと同じように
-MulDiv(Size, GetDeviceCaps(hDC, LOGPIXELSY), 72)

Gdiplus::Font()でサイズを指定して同じ大きさにしたいんですが
普通にGdiplus::UnitPoint にしてサイズを指定しただけでは
サイズによっては大きさが結構違ってしまいます。

どう指定すればいいでしょうか?
0197デフォルトの名無しさん2010/04/12(月) 13:00:07
>>194
http://support.microsoft.com/kb/99589/en-us
All characters that are illegal in FAT but legal in NTFS are replaced with underscore characters ("_").
とは書かれているけど、「表」を含むショートファイルファイル名を英語圏に持っていったら
それは「legal in FAT」なのか?
01981922010/04/12(月) 13:14:24
>>197
う〜ん、自分がやってることの裏付けが取れれば十分なので、
そこまで追究するつもりもないのですが……
いかにも問題が起きそうですね、それ。
0199デフォルトの名無しさん2010/04/12(月) 13:24:18
OEMコードページが異なるシステムで正常に読めないのは当然だし
ntfsではオプションだしexfatには存在すらしない
0200デフォルトの名無しさん2010/04/12(月) 13:37:08
XPのIE8で、ある拡張子のファイルをクリック、「ファイルのダウンロード」から
「開く」で関連付けされているファイルを自作アプリで開くようにしてるのですが

C:\Documents and Settings\user_name\Local Settings\Temporary Internet Files\Content.IE5\XXYYWWQQ\hoge.abc

のファイルをCrateFileで開こうとすると失敗するようになりました。
VistaのIE7でも失敗します。IE6では問題なかったのですが。
fopen()では開けるのですが下のようなCreateFileでは失敗します。
何かオプションの設定が必要なのでしょうか?

OPENFILENAME ofn;
ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;

hFile = CreateFile(ofn.lpstrFile,
  GENERIC_READ, 0, (LPSECURITY_ATTRIBUTES) NULL
  OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, (HANDLE) NULL);
if (hFile == INVALID_HANDLE_VALUE) { TRACE("Fail createfile\n"); return FALSE; }

※ GetOpenFileName(&ofn) は呼んでいません。ofn.lpstrFile にはTemporary ...のフルパスファイル名が入ってます。
02011962010/04/12(月) 13:59:16
レンダリング時の画面モード?みたいなのがあるのかな…
ぐぐってもわかんないや…
0202デフォルトの名無しさん2010/04/12(月) 14:27:19
>>200
自己レスです
3番目のオプションに0ではなくて FILE_SHARE_READ を指定したら開けるように
なりました。
02031962010/04/13(火) 00:11:37
自己解決!!
指定してたフォント名が正しくなかった…(スペース入れ忘れ)
でもCreateFontの方はそれを考慮してくれてて
狙ったフォントが表示されていたけど
Gdiplus::Fontの方はそれは考慮されず
違うフォントが表示されていたからフォントサイズが違ってました…

完全に一人相撲でした… スレ汚しすんません!
0204デフォルトの名無しさん2010/04/13(火) 16:42:01
CreateFileでオープンに失敗するファイルがありますが、このファイルを
オープン(読み込み状態)することは可能でしょうか?
失敗時にGetLastError() で確認したところ 32 (別プロセスが使用してるためアクセスできない)
を返しています。

CreateFileのパラメータは以下になります。
CreateFile(_T("path"), GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
0205デフォルトの名無しさん2010/04/13(火) 16:57:46
CreateFile(_T("path"), GENERIC_READ, FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
これでダメなら諦めろ
0206デフォルトの名無しさん2010/04/13(火) 17:14:27
>> 205
そのパラメータも試してみましたが、無理でした。
ファイルの中身をチェックするTOOLを作成してるので、どうしても読み込みたいのですが・・・
0207デフォルトの名無しさん2010/04/13(火) 21:24:46
無理なもんは無理。
0208デフォルトの名無しさん2010/04/13(火) 21:38:43
>>206
ロックの意味がなくなるので薦めないけど
いったん開いてダメだったら強制的にロック解除して開きなおせばいいんじゃない?
0209デフォルトの名無しさん2010/04/13(火) 21:42:24
強制的にロック解除なんてできんの?
0210デフォルトの名無しさん2010/04/13(火) 21:57:48
>>209
出来るよ
0211デフォルトの名無しさん2010/04/13(火) 21:58:56
どうやってやるのか教えてください!
0212デフォルトの名無しさん2010/04/13(火) 22:09:29
>>211
http://d.hatena.ne.jp/higepon/20060321/1142909616
http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200512/05120047.txt
0213デフォルトの名無しさん2010/04/13(火) 22:17:10
pagefile.sys はどうやったらロックを解除できますか?
0214デフォルトの名無しさん2010/04/13(火) 22:48:22
ページファイル無効にして再起動したら外れてないか?
0215デフォルトの名無しさん2010/04/13(火) 22:53:20
そういうんじゃなくて、実行中にロックを外したいんだけど。
0216デフォルトの名無しさん2010/04/13(火) 22:56:59
死んだ方が早いから自殺しろ
0217デフォルトの名無しさん2010/04/14(水) 00:29:44
>215
OSが掴んでるんだからそんなことはできないと考えるのが普通じゃない?
0218デフォルトの名無しさん2010/04/14(水) 01:19:55
ページファイルって、どうしてファイルにしちゃったんだろうな。
HDDに専用のパーティションを作る方式にした方が安全だし速いだろうに。

ファイルとして他のデータと同列に格納されてるんだから、
非公開のアクセス手段があると考えた方が自然だと思うんだけど。
02191182010/04/14(水) 01:43:13
>>218
ramdiskでも使ってろ
0220デフォルトの名無しさん2010/04/14(水) 01:50:54
ページファイルなんだから当たり前だろ。
0221デフォルトの名無しさん2010/04/14(水) 07:35:29
>非公開のアクセス手段があると考えた方が自然だと思うんだけど。
0222デフォルトの名無しさん2010/04/14(水) 11:02:56
素人の常識ほど危険なもんはない
02231182010/04/14(水) 13:14:42
自分語り 乙w
0224デフォルトの名無しさん2010/04/14(水) 14:36:29
>>218
これだからLinux脳は
0225デフォルトの名無しさん2010/04/14(水) 14:47:09
別にLinuxもSolarisも*BSDもswapファイルも使えるだろ
0226デフォルトの名無しさん2010/04/14(水) 15:53:48
質問です。
ファイルパスを正規化する方法はないでしょうか?
".."や"."を解決し、なるべく綺麗なパスにする方法です。

例えば
"data/hoge/.././sub/"
を
"data/sub/"
にしてくれるような感じです。

PathCanonicalize がそれに一番近いと思ったのですが、
"..\\test" を "\\test" に変えてしまったり( "..\\test"はそのままで良い")
"test\\..\\hoge" を "\\hoge" に変えてしまったり( "hoge" になってほしい)

どうも挙動が不自然です。
特に先頭に '\\'をつけられてしまうと、fopenなどがうまく動作しません…。

0227デフォルトの名無しさん2010/04/14(水) 16:00:01
chdir して pwd を取得し直す
とか
0228デフォルトの名無しさん2010/04/14(水) 16:11:44
APIでやらないとだめ?
単純に「\.\」は「\」に置換して、あとは正規表現で「hoge\..\」みたいなパターンを前から順番に削除してけばいいだけじゃん
0229デフォルトの名無しさん2010/04/14(水) 16:28:20
>>228
いえ、単に PathCanonicalize みたいなAPIが用意されていたので、APIがあればと思ったのです。
\\ から始まるネットワークアドレスとか、c:\とか、そういう「知らない人は知らない」パスもありますし、自分自身がそれらのパス表記法を全て知っている自信はまったくないもので。

「\.\」も、SJISだと問題がありますしね。
0230デフォルトの名無しさん2010/04/14(水) 16:34:02
\\.\c:\hogehoge
みたいなのもあるなー
0231デフォルトの名無しさん2010/04/14(水) 16:51:56
>>230
それって実在する可能性のあるパス表記法ですか?
途中に ":" が入っていることなんてあるんでしょうか?
02321182010/04/14(水) 17:08:13
>>230
0233デフォルトの名無しさん2010/04/14(水) 17:29:41
在るっつってるのに在るのか聞くとはこれいかに
0234デフォルトの名無しさん2010/04/14(水) 17:30:02
>>231
0235デフォルトの名無しさん2010/04/14(水) 17:34:39
検索も出来ない
人の話も信用しないタコスケのためのURL
http://tokyo.cool.ne.jp/chokuto/urawaza/api/CreateFile.html
02361182010/04/14(水) 17:47:05
ビングレカス
0237デフォルトの名無しさん2010/04/14(水) 17:52:12
↑こっちまで恥ずかしくなるような低脳レスを繰り返すな
0238デフォルトの名無しさん2010/04/14(水) 17:52:57
信用していないのではなく「ある」が「引数として渡される可能性がある」という意味だと捉えたためです。
レスありがとうございました。
>>235参考にさせていただきます。
0239デフォルトの名無しさん2010/04/14(水) 17:56:16
"\\.\c:\" でググっても全然ひっかかりません><;
02401182010/04/14(水) 18:05:18
>>237
矢印厨うぜー
0241デフォルトの名無しさん2010/04/14(水) 19:59:13
>>231
少なくとも
>>228
>単純に「\.\」は「\」に置換して、
の言うことは聞いては駄目!!
02421182010/04/14(水) 20:15:53
>>241
じゃ、てめぇが代案示しなよ
非難ばっかするな
0243デフォルトの名無しさん2010/04/14(水) 20:25:40
>118
>242
0244デフォルトの名無しさん2010/04/14(水) 20:26:24
   
02451182010/04/14(水) 20:37:21
>>243
>>239
0246デフォルトの名無しさん2010/04/14(水) 20:41:09
ドライブレターの直後以外でファイルパスの途中にコロンが入るのってどんなケース?
0247デフォルトの名無しさん2010/04/14(水) 20:50:29
ないと思う。あ。なんとかストリームってコロンだっけ。
02481182010/04/14(水) 21:23:41
>>246
localhost:8080
0249デフォルトの名無しさん2010/04/14(水) 21:39:00
そういえば最近はWebDAVのアドレスなんかにも対応しないとだめだな
0250デフォルトの名無しさん2010/04/15(木) 01:36:47
>>248
UNCってファイル用のAPIで普通にオープンとかできるの?
0251デフォルトの名無しさん2010/04/15(木) 01:42:17
パスの先頭に\\?\UACとか付ければ開けるんでなかったか
0252デフォルトの名無しさん2010/04/15(木) 03:24:42
Alternate Data Stream
0253デフォルトの名無しさん2010/04/15(木) 06:27:15
トラックバー(スタイダー)の質問です。
つまみ以外の場所をクリックしたら即座にその値を設定したいのですが、その方法が分かりません。
具体的に言うと、つまみがPageSizeの幅づつ移動するのでなく、
MediaPlayerのように一瞬でつまみがカーソル位置に移動して欲しいのです。
どうしたらいいでしょう。
0254デフォルトの名無しさん2010/04/15(木) 06:30:58
>>250
それUNCと違う。
0255デフォルトの名無しさん2010/04/15(木) 06:52:02
>>247
代替ストリーム
ファイル名とかフォルダ名の後ろに「:ファイル名」
0256デフォルトの名無しさん2010/04/15(木) 07:29:27
そういえばWindows7からサブストリームがコマンドラインから開けなくなったよな
地味に困る
02571182010/04/15(木) 09:58:35
>>250
普通に開ける
0258デフォルトの名無しさん2010/04/15(木) 10:53:09
\\?\ をCreateFileWに渡せば、32767文字までいける
そう考えていた時期が僕にもありました

ttp://mist.clueup.org/blogs/1/archive/2007/12/13/Windows-File-name-length-limit.aspx

実際はいけねーんだよ
どうなってんだか・・・;;
0259デフォルトの名無しさん2010/04/15(木) 11:02:21
フルパスで32000文字程度
各要素はファイルシステム依存
FATやNTFSは255文字
fsutil fsinfo volumeinfoでコンポーネント最大長を確認できる
0260デフォルトの名無しさん2010/04/15(木) 11:03:52
MAX_PATHの用法用量は正しくお使いください。
0261デフォルトの名無しさん2010/04/15(木) 11:04:02
なるほど
全体が32767文字までいけても、ファイル名だけの長さにも制限があると
ありがとう!

あと、どうやら \\?\ をつけた場合
・絶対パスじゃないといけない
・'/' ではなく '\\'を使う必要がある
・..\\ などのかけあがりなどを含めてはいけない

となるようだ
認識あってますかね?
0262デフォルトの名無しさん2010/04/15(木) 11:06:02
>>258
The Windows API has many functions that also have Unicode versions to permit a maximum path length of approximately 32,000 characters composed of components up to 255 characters each in length.
0263デフォルトの名無しさん2010/04/15(木) 11:23:07
英語版のMSDNは詳しいですね・・・
日本語版はCreateFileからリンクもされていないし、そもそも詳細ページが翻訳されていない・・・
ttp://msdn.microsoft.com/ja-jp/library/aa365247%28v=VS.85%29.aspx

頑張って読んでみます
0264デフォルトの名無しさん2010/04/15(木) 11:52:30
面倒くさいからエラー出るまで適当にやって
エラーが出たらきちんと対処することにした
02651182010/04/15(木) 14:19:09
http://www.deai-0yen.net/girls-rori/src/1226851574824.jpg
0266デフォルトの名無しさん2010/04/15(木) 14:50:14
これ開くとキャッシュに画像が残るから単純所持違反でお縄って寸法ですね
0267デフォルトの名無しさん2010/04/15(木) 15:09:52
グロ貼んな
02681182010/04/15(木) 15:10:05
>>266
CreateFileでFILE_FLAG_NO_BUFFERINGすればええやろ
0269デフォルトの名無しさん2010/04/16(金) 11:56:04
質問です。

uintptr_t p = _beginthread
と走らせたスレッドが、終了しているかどうかを p を使って知る方法はないでしょうか?
0270デフォルトの名無しさん2010/04/16(金) 12:37:50
ppp
0271デフォルトの名無しさん2010/04/16(金) 12:47:28
>>269
無い
pが有効なカーネルオブジェクトのハンドルでない場合 終了した
pが有効なカーネルオブジェクトのハンドルである場合 終了した後ハンドルが再利用されたかもしくは終了していない

ただしCREATE_SUSPENDで_beginthreadしてHANDLE_FLAG_PROTECT_FROM_CLOSEフラグをセットすれば普通に判定可能
0272デフォルトの名無しさん2010/04/16(金) 13:07:50
>>271
はあ?
WaitForSingleObject って知ってる?
質問スレで嘘書いててんじゃねーよ
0273デフォルトの名無しさん2010/04/16(金) 13:23:27
_begintheadは何を返し、何をなすか。
スレッド終了時に何をしているか
を調べなされ。

ていうか、VCスレで訊いた方が良いぞ。
処理系依存だし。
0274デフォルトの名無しさん2010/04/16(金) 13:53:35
過去スレほじくってたら WinAPIスレでたまに話題にあがってるな

_beginthread は スレッド終了時に戻りのハンドルを CloseHandle しやがりますので
_beginthreadex 使えぇぇ とか
0275デフォルトの名無しさん2010/04/16(金) 13:54:31
socketでsrcポートとdstポートを指定する方法をおしえてください
0276デフォルトの名無しさん2010/04/16(金) 14:06:55
CloseHandleしやがるからこそ、WaitForSingleObjectで終了しているのかを監視できるんとちゃうん?
0277デフォルトの名無しさん2010/04/16(金) 14:16:43
>>276
いや
スレッド終了時にシグナルになるから WaitForSingleObjectで終了しているのか判断できる

CloseHande しやがる場合
_beginthread で得られた戻りが WaitForSingleObject で確認するまでの間に
ハンドルの再利用の可能性を否定できないから嫌らしいワケ

CloseHande されない場合、確認側が明示的に CloseHandle するまでの間
ハンドルの衝突を防ぐことができるから より確実だ ということさ
0278デフォルトの名無しさん2010/04/16(金) 14:18:58
なるほど。
スレッドが終了する前にWaitForできるとは限らないもんな

今ちょっと実験してみたが、スレッドが既に終了している状態でWaitForすると、
WAIT_FAILED を吐いた上で、GetLastErrorは ERROR_INVALID_HANDLE だわ。無効なハンドル。

再利用がどれくらいの頻度で行われるのかもついでに試してみたら、意外と再利用されまくるのね。
ハンドルが簡単にかぶるわ
0279デフォルトの名無しさん2010/04/16(金) 14:29:40
質問です。
プラットフォームSDK/win32 で CreateFile を使った場合、
戻された HANDLE からファイルを closeするにはどうしたら良いのでしょうか。

MSDN の該当ページ ( http://msdn.microsoft.com/ja-jp/library/cc429198.aspx ) を見ると、

>解説
>CreateFile が返したオブジェクトハンドルを閉じるには、 関数を使います。

とだけ書かれていて、「どの関数」 かが明示されていません。 ご存知の方、よろしくお願い致します。


02802792010/04/16(金) 14:33:12
・・・って、書き込みをした直後に上の方のレスを見て、もしやと思いテストして見た所、
いきなり上手くいきました・・・ すみませんでした。

http://msdn.microsoft.com/ja-jp/library/cc429605.aspx

>解説
>CloseHandle 関数は、次のオブジェクトのハンドルを閉じます。
>?ファイル
0281デフォルトの名無しさん2010/04/16(金) 14:39:26
Win32APIを弄りだして最初に面食らう一つがCloseHandle。
0282デフォルトの名無しさん2010/04/16(金) 14:45:54
日本語ページはクソ

http://msdn.microsoft.com/en-us/library/aa363858(VS.85).aspx
0283デフォルトの名無しさん2010/04/16(金) 14:49:00
>>279
>>CreateFile が返したオブジェクトハンドルを閉じるには、 関数を使います。
>とだけ書かれていて、「どの関数」 かが明示されていません。

クソワロタwwwwwww マジで日本語版MSDN死んでいいよwwww 嫌がらせだろこれww
0284デフォルトの名無しさん2010/04/16(金) 14:57:26
When an application is finished using the object handle returned by CreateFile,
use the CloseHandle function to close the handle.

機械翻訳の過程で CloseHandle を close hande と置き換え→すっとばし発生 なのかねw
0285デフォルトの名無しさん2010/04/16(金) 15:04:31
MSDN見るなら英語版にしろって言う人時々いるけど、これまさにその1例になりそうな話だなww
そして何かのコピペになりそうだw

問い「これはどうしたらいいのですか?」
答え「関数を使います」

0286デフォルトの名無しさん2010/04/16(金) 15:06:33
関数呼び出しにに必要な構造体とか関数ポインタ型へのリンクがないだけでも
使いものにならないのに。
0287デフォルトの名無しさん2010/04/16(金) 15:23:47
>>271
すいません、調べてみても
HANDLE_FLAG_PROTECT_FROM_CLOSE
を使う必要性が感じられないのですが。

そもそも_beginthread はCREATE_SUSPENDが使えませんし。

総合すると _beginthreadex を使えばOK
ということになりそうなのですが、exを使った場合でも
HANDLE_FLAG_PROTECT_FROM_CLOSE
の出番はありますでしょうか?
0288デフォルトの名無しさん2010/04/16(金) 15:25:13
いまだにVC6使ってる俺は2001年10月版の日本語MSDN使ってるけど
ちゃんと

CreateFile が返したオブジェクトハンドルを閉じるには、CloseHandle 関数を使います。

てなってるな。劣化してるのかな?
0289デフォルトの名無しさん2010/04/16(金) 15:33:56
>>287
>>271は良くわかっていない初心者だから放置していいよ。
exから得たハンドル使えば解決。
0290デフォルトの名無しさん2010/04/16(金) 15:35:36
>>287
無い。 が、終了確認後に CloseHandle してやらないとまずい。

_beginthread
○ スレッド終了時に自動的にハンドルをクローズする(リソース漏れは自動回避される)
 そのかわり 終了判定は困難
 「終了確認前にスレッドが終了しているか否か」 で判定の意味が変化してしまう
 # そして、終了確認側で既にスレッドが終了しているか否かを知る術は?… と自己矛盾な記述に…

_beginthreadex
○ スレッド終了後もハンドルは維持され終了判定は容易。
 だが、自前でハンドルをクローズしないと漏れ漏れ
0291デフォルトの名無しさん2010/04/16(金) 15:36:27
>>287
CREATE_SUSPENDが使えないなら新規スレッド側で待機
_beginthreadexを使うなら必要ない
0292デフォルトの名無しさん2010/04/16(金) 16:17:33
すいません、何度も細かく聞いて申し訳ないのですが。

_beginthreadexで作ったスレッドには、解放すべきものが二つある。
1・_endthreadex で解放する「何か」
2・ CloseHandleで解放する「スレッドの生死などを確認するなどに利用する、何か」

1は、スレッド用の関数を抜ければ自動で呼ばれるので、きちんと抜ける場合は呼んでも呼ばなくても良い

2は、明示的にクローズしてやる必要がある。
スレッドを作った側でクローズしても、スレッド側でクローズしてもOK(だけど二重にクローズしないようにな!)
また、スレッドが生きている間にクローズしても(生死確認などができなくなるだけで)問題ない。

という認識正しいでしょうか?
0293デフォルトの名無しさん2010/04/16(金) 16:21:35
>>292
1 おけ
2 おけ  生死判断したいなら、生死判断した後にクローズ(おおよそ スレッドを作った側ではある)
0294デフォルトの名無しさん2010/04/16(金) 16:40:50
ありがとうございます。

exじゃない版は、連絡用の「何か」とスレッド用の「何か」が分離されていないから色々扱いづらかったんですね
ex版を使うべきっていう意見を正しく理解できたと思います。
0295デフォルトの名無しさん2010/04/16(金) 16:45:05
>>294
「何か」=「_begintheadがCreateThreadを呼んで返された『スレッドハンドル』」な
0296デフォルトの名無しさん2010/04/16(金) 16:58:09
>>294
スレッド用の何かというが、exでもランタイムが使うTLSなんてユーザー側に見せてないだろ
分離できてないのはお前の頭じゃね?
0297デフォルトの名無しさん2010/04/16(金) 17:03:03
だから「何か」って表現してんだろ
0298デフォルトの名無しさん2010/04/16(金) 17:28:55
>>296
インストール時にCRTのソースもインストールしておくと実装が見れるが
TLS だけじゃなく、浮動小数点周辺や構造化例外(C++ の例外をうまくスレッド別に配送)の面倒を見てるね

ま、ランタイムにかかわる表面には出てこない何かとひとくくりの表現で良いんでない? (1の何かに関して)
0299デフォルトの名無しさん2010/04/16(金) 20:45:03
最近打ち合わせでは分かり切ったことは飛ばして話を進めているのに
知識として持っててあたりまえのことを質問する馬鹿が増えた
03001182010/04/16(金) 21:13:46
そうかあ。

 俺、ブラやぱんつに興味ないんだ。
 スリップが透けてるといいと思うけど、いないしな。
 下着なしも、もっといないしな。
 透けてなくていいよ。
0301デフォルトの名無しさん2010/04/18(日) 16:42:20
質問
環境はWin7、VC6++でダイアログベースのアプリです。
マウスオーバーでダイアログを非表示にして、表示されていた位置からマウスを
離すと再びダイアログを表示させることはできますか?

非表示はWM_MOUSEMOVEのときにShowWindow(SW_HIDE)でできるんですが
マウスを離して表示させるのはどうやったらできるでしょうか。
0302デフォルトの名無しさん2010/04/18(日) 16:47:07
>>301
やった事無いけどパッと思いつく方法としては、
その非表示のタイミングでマウスをSetCaptureしつつ、Screen座標ひろっておいて、
移動中、一定距離離れたタイミングで再び表示&ReleaseCaptureしてやるとか

きちんと動作確認して、不意な操作や例外的な対処もしないとマズいけど
0303デフォルトの名無しさん2010/04/18(日) 16:49:07
WM_MOUSEMOVE (1回目はマウスをキャプチャするだけ)
SetCapture
ShowWindow(SW_HIDE)

WM_MOUSEMOVE (2回目はHIDE中に呼ばれていればマウスキャプチャをリリース)
ReleaseCapture
ShowWindow(SW_SHOW)
0304デフォルトの名無しさん2010/04/18(日) 16:58:01
>>302,303
回答ありがとうございます。
SetCapture試してみます。
0305デフォルトの名無しさん2010/04/18(日) 17:23:35
>>304 じゃないけど試してみた
使い方間違ってるのかもしれないけど
Hide した直後から WM_MOUSEMOVE が来なくなってるみたいだw
Release しようにもマウス座標が取れないw
0306デフォルトの名無しさん2010/04/18(日) 17:34:16
>>305
304です
同じくうまくいきませんでした。

SetCapture後にHideしたらかってにReleaseされて
Hide後にSetCaptureした場合はキャプチャされないような動きです。
0307デフォルトの名無しさん2010/04/18(日) 17:36:58
TrackMouseEventとWM_MOUSELEAVEを使ったらいけるんでない?
0308デフォルトの名無しさん2010/04/18(日) 17:54:07
LayeredWindowにして
alphablendを0にして
translatedにするといいかも
0309デフォルトの名無しさん2010/04/18(日) 17:59:07
× translated
○ transparent
0310デフォルトの名無しさん2010/04/18(日) 18:05:09
SetCapture関数はフォアグラウンドウィンドウでしか使えなかった筈なので、
フォアグランドで且つオーナーなウィンドウがSetCaptureしてやればいいと思うよ。
例えばGetDesktopWindow()で取得したHWNDをSetCapture()に渡すとか。
03113042010/04/18(日) 18:38:44
>>307
Hideした瞬間にWM_MOUSELEAVEが来てしまいました。
そのときのWM_MOUSELEAVEを無視するとして
ダイアログがあった場所から離れてもWM_MOUSELEAVEはこないようです。

>>308
透明ウィンドウにするという発想ですか。なるほど・・
半透明にもできたりしてそれはそれでよさそうです。

>>310
デスクトップのHWNDをSetCaptureに渡してみましたが、
渡さない場合と同じくWM_MOUSEMOVEがこないようです。。
ん〜、いけるような気はするのですが。
0312デフォルトの名無しさん2010/04/18(日) 19:27:25
>>310
それだとSetCaptureしたあとのマウスイベントがDesktopWindowの方に逝っちゃう
0313デフォルトの名無しさん2010/04/18(日) 19:36:54
とりあえずアイコン化(最小化)するっていう手もあるかもね
自分で戻さないといけないみたいだけど
0314デフォルトの名無しさん2010/04/19(月) 02:26:36
コントロールを透明化したら、下のコントロールじゃなくてデスクトップまで透けてしまった
0315デフォルトの名無しさん2010/04/19(月) 03:13:04
荒れてないときのWIN32スレはすごいぬ、天才ばっかりだぬ
0316デフォルトの名無しさん2010/04/19(月) 03:24:02
単純にタイマーでカーソル位置を監視ってのじゃ駄目かな…
0317デフォルトの名無しさん2010/04/19(月) 03:32:37
TrackMouseEvent で MOUSELEAVE は無視して MOUSEMOVE を見れば良いと思う
0318デフォルトの名無しさん2010/04/19(月) 07:08:01
TrackMouseEvent で WM_MOUSEMOVE はこないようです
0319デフォルトの名無しさん2010/04/19(月) 08:27:38
面倒だからフックしろよ
0320デフォルトの名無しさん2010/04/19(月) 10:17:08
フックだ、チンだ、あーらのびちゃった
03211182010/04/19(月) 14:06:18
>>320
↑
2ちゃんの画一的なコメント 乙
0322デフォルトの名無しさん2010/04/19(月) 14:49:52
DrawIconExでマウスカーソルを縮小してHDCに埋め込みたいんだが、
beamのアイコンがつぶれてしまう。
なんかいい方法ない?
0323デフォルトの名無しさん2010/04/19(月) 14:53:10
>HDCに埋め込みたい
関係無いけど、この表現に物凄い違和感

0324デフォルトの名無しさん2010/04/19(月) 17:52:12
塗り込みたい
03251182010/04/19(月) 18:15:19
ネトウヨうぜえ
03263042010/04/19(月) 20:23:25
>>316
一応その方法で行くことにしてうまく実現できました。

今回のやりたいことを実装してるツールがVectorにあったので、
Spy++で見てみるとそれもTimerでやってるみたいだったので
真似することにしました。
0327デフォルトの名無しさん2010/04/20(火) 16:17:39
ノートPCで現在AC電源か、バッテリーを使ってるかを識別できるAPIを教えてください
03281182010/04/20(火) 16:52:02
ノートPCかデスクトップを判別するAPIが無いから不可能
0329デフォルトの名無しさん2010/04/20(火) 16:57:10
http://www.microsoft.com/japan/whdc/system/pnppwr/wmi/wmi-acpi.mspx
0330デフォルトの名無しさん2010/04/20(火) 17:00:46
相変わらず糞の役にも立たないゴミ共だなww
GetSystemPowerStatusであっさり出来たわ役立たず共
03311182010/04/20(火) 17:25:45
>>330
おまえがな
0332デフォルトの名無しさん2010/04/20(火) 17:39:21
お前はアホー知恵袋でオナニーでもしてろゴミ
03331182010/04/20(火) 17:49:42
>>332
おまえがな
0334デフォルトの名無しさん2010/04/20(火) 18:38:04
何だか近頃無用のレスと自己主張をしていて他人を多少なりとも面倒くさい気持ちにさせるだけのために存在するんだろうと思わせる何かをよく見かけるが

それすら全くどうでもいい
0335デフォルトの名無しさん2010/04/20(火) 18:47:02
何てどうでもいいレス
0336デフォルトの名無しさん2010/04/20(火) 18:54:52
結局、質問スレに書き込んでも自己解決が一番最適な方法だ、というオチ。
他人に質問する前にテディベアに質問しなさい、てやつですな。
書き込んだ質問の内容でググればあっさり見つかったりするしね。
0337デフォルトの名無しさん2010/04/20(火) 18:57:13
質問です。

HeapAllocとかHeapFreeとかのフラグ、HEAP_NO_SERIALIZEの説明の「相互排他」って何ですか?
ググッた結果、マルチスレッドであちこちからメモリ確保するときに、何かしてくれる?と思うのですが、
その「何か」がよく分かりません。

>HEAP_NO_SERIALIZE:この関数がヒープにアクセスしている間、相互排他を行わないようにします。
 ↑この一文を分かりやすく解説してください。
03381182010/04/20(火) 19:40:01
>HEAP_NO_SERIALIZE:この関数が動的に確保した領域にアクセスしている間、他のスレッドからもアクセス可能になる。
0339デフォルトの名無しさん2010/04/20(火) 19:49:08
クリティカルセクションを使わない
0340デフォルトの名無しさん2010/04/20(火) 19:50:05
なんかところどころレスが空欄になってるんだが
0341デフォルトの名無しさん2010/04/20(火) 20:42:04
キチガイが居るだけだ
気にするな
03421182010/04/20(火) 20:48:34
↑
おまえがな
0343デフォルトの名無しさん2010/04/20(火) 21:00:50
「ファイルを開く」DLGでUNCなどのMAX_PATHを越える深いパスを扱えるようにするにはどうするのですか?
ちなみに cygwin を用いて深いディレクトリ、ファイルは生成できます・・・
0344デフォルトの名無しさん2010/04/21(水) 10:18:37
タスクマネージャーのプロセスシートに自作アプリを列挙させないようにするにはどうしたらいいですか?
0345デフォルトの名無しさん2010/04/21(水) 10:49:53
>>343
UNICODEで開発
>>344
ダイアログスタイルで開発
0346デフォルトの名無しさん2010/04/21(水) 11:03:34
>>344
MFCを使ってダイアログベースで作ってます。
0347デフォルトの名無しさん2010/04/21(水) 11:07:46
常駐プログラム隠蔽テクニック でぐぐる
0348デフォルトの名無しさん2010/04/21(水) 11:09:47
なんだ、結局しらねーんだw
0349デフォルトの名無しさん2010/04/21(水) 11:13:08
他所様のプロセスにインジェクションして寄生すれば
0350デフォルトの名無しさん2010/04/21(水) 13:01:02
>>345
>UNICODEで開発

343です。
当初私もそう思っていました。
UNICODE版のGetOpenFileNameWを使っているのですが、
開くDLG(コモンダイアログ)内部でMessageBoxを表示しているようです。
OFNHookProcも試したのですが、CDN_FILEOKが呼び出されません。
WndProc をHOOKして[OK]ボタンや[ファイル名DBLCLK]を横取りしないといけないのでしょうか?
0351デフォルトの名無しさん2010/04/21(水) 16:29:38
IPヘルパAPIでDOSコマンドのroute printで表示される
Persistent Routesリストの取得方法を教えてくださいください
0352デフォルトの名無しさん2010/04/21(水) 16:48:48
たぶん隠しAPIのAllocateAndGetIpForwardTableFromStackを使う
0353デフォルトの名無しさん2010/04/21(水) 17:02:10
ぐぐっても出てきません><
0354デフォルトの名無しさん2010/04/21(水) 17:02:42
regmonで見た限りではAPIではなくレジストリを直接読み書きしている模様
System\CurrentControlSet\Services\Tcpip\Parameters\PersistentRoutes
System\CurrentControlSet\Services\Vxd\MSTCP\PersistentRoutes
0355デフォルトの名無しさん2010/04/21(水) 17:10:51
>>354
ありがとうございます。
確かにレジストリに存在しました!
これを弄くり倒します。
0356デフォルトの名無しさん2010/04/21(水) 17:15:33
あ、そういやこれで確かにリストは取得できるけど
route add ができない><
いやレジストリに追加しただけでは実際にルート処理されないですよねこれ?
0357デフォルトの名無しさん2010/04/21(水) 17:20:53
ちなみにPersistentRoutesを検索してみたら3箇所でてきた。
んで>>354の2つ目のServicesの中にVxdは存在しませんですた。
とりあえず、レジストリエディタで適当にルートぶち込んでみっかなあ
0358デフォルトの名無しさん2010/04/21(水) 17:46:07
おっと!!!
そういやActiveアレには普通にaddできるんだから
レジストリに追加しといてヘルパapiでActiveにaddすりゃーいいってことか!!!
レジストリにかいときゃリブったらちゃんとアレされたのは確認できたし

いやはや>>354に感謝
0359デフォルトの名無しさん2010/04/21(水) 17:54:26
vxdはwindows98等
自分なら裏でroute.exeを実行する
0360デフォルトの名無しさん2010/04/21(水) 18:20:35
>>359
vxdありがとう。
ちなみに最初はShellExecuteでroute.exeを実行してaddやdeleteをやってたんだけど
ヘルパAPIなるものでActiveの操作は普通にできたからPersistentもいけるんじゃないかなとかおもって
深みにざっくり嵌ったわけですよ

ぶっちゃけレジストリ弄くるのも不本意なんだがAPIでできないっぽいからそこは曲げてアレ
0361デフォルトの名無しさん2010/04/21(水) 23:42:23
GDI+のImageクラスでbmpファイルを読み込み、
CreateCompatibleBitmapで作成した領域に描画して、
BitBltの背景色を利用して白黒の1bitモノクロ画像に変換しようとしたところ、
GDI+で読み込んだビットマップがうまく変換されませんでした。

ちなみにCreateCompatibleBitmapのところをCreateDIBSectionすると期待どうりに変換されるのは分かったのですが、
どうしてCreateCompatibleBitmapだと変換できないのかが理由が分かりませんでした。

言語はC++でMFCなどは使用していません。

理由が分かる方がいましたら教えてください。
0362デフォルトの名無しさん2010/04/22(木) 00:01:31
背景色指定が合っていないんじゃないか?
GetPixelで返ってきた実際の値を使わないと駄目、とかありそう。
素直にDIBSection使っといた方が良い気がするけど。
03633612010/04/22(木) 05:46:16
>>362
有難うございます。
GetPixelで取得した値を使用してみても駄目でした。
なぜCreateCompatibleBitmapだとSetBkColorで設定した色が変換されないのかが分からないままです。
0364デフォルトの名無しさん2010/04/22(木) 07:15:17
パレット
0365デフォルトの名無しさん2010/04/22(木) 10:35:43
パレット
0366デフォルトの名無しさん2010/04/22(木) 12:39:06
プディング
0367デフォルトの名無しさん2010/04/22(木) 12:57:16
パンナコッタ
0368デフォルトの名無しさん2010/04/22(木) 13:50:04
なんてこった
03691182010/04/22(木) 14:32:00
黙れゴミ共
03701182010/04/22(木) 14:33:04
>>368
>>367
爆笑、お前面白すぎ、
エンタに出てる芸人以上じゃね?
久々にわらかしてもらったわw
03711182010/04/22(木) 14:33:46
>>369
おまえがな
0372デフォルトの名無しさん2010/04/22(木) 15:02:55
どこに書いたらいいかと思ったけど、Windows系の質問なのでこちらにしました。
シリアルポート com1とかが他アプリから開いたイベントを取得したいのですがどうすればよろしいでしょうか?

案としては
CrateFile("com1" ・・・
で開いて閉じてを繰り返し開の失敗したら開かれてるとする。
 デメリット:ちょっとカッコ悪いし、もし開いて閉じる間に空いてが開こうとすると相手側がエラーになる
 
LoadLibraryのhook
 デメリット;comのオープン方法がCreateFileで開かれなかった場合。他にもAPIありますよね?

なんてのを考えてるんですが、他に良い案ないでしょうか?
0373デフォルトの名無しさん2010/04/22(木) 15:20:26
フィルタドライバを作成して、IRP_MJ_CREATEを捕まえる
0374デフォルトの名無しさん2010/04/22(木) 15:29:19
返答ありがとうございます。
フィルタドライバですか、経験なかったです。
調べてみるとちょっと敷居高そうですが、チャレンジしてみます。
ありがとうございました。
0375デフォルトの名無しさん2010/04/22(木) 15:52:04
RegEnumValueでキーの値を取得しているのですが
登録されている数分ループするのですが正常に値が取得できないのがあります。
4個登録されていてループは5回目で抜けるのでそこはOKなんですが
データも3個までは正常にとれてますが4個目は何故かNULLになっています。
どうしてですか?
0376デフォルトの名無しさん2010/04/22(木) 15:58:10
できましたおさわがせしましたごみすみませんどもでしたしね。
0377デフォルトの名無しさん2010/04/22(木) 17:39:34
おいおい、せっかくYahoo!知恵袋のアカウント変えたのにまだいるのか118もどき。
相変わらず118を名乗る理由がよくわからんがな。
03781182010/04/22(木) 17:48:52
↑
お前の発言ワケワカラン
0379デフォルトの名無しさん2010/04/22(木) 20:50:13
>>343
>>345
>>350
Given up
0380デフォルトの名無しさん2010/04/22(木) 21:58:23
>>378
んじゃいいや笑
まぁ見づらいからあんま無駄レスすんなよ。

以上無駄レスでした。
0381デフォルトの名無しさん2010/04/22(木) 22:09:49
UNICODE, _UNICODE指定でビルドすればいいんじゃないのん?
03821182010/04/22(木) 22:19:48
>>380
黙れゴミ
0383デフォルトの名無しさん2010/04/22(木) 22:57:50
    ヘ⌒ヽフ
   ( ・ω・) �d�d
   / ~つと)
03841182010/04/22(木) 23:05:49
www
03851182010/04/22(木) 23:12:21
VS2010もう入れた?
03861182010/04/22(木) 23:14:12
VS2020もう入れた?
03871182010/04/22(木) 23:26:03
VS2010インストールしたよ。
03881182010/04/22(木) 23:29:10
したよ。
03891182010/04/22(木) 23:40:53
俺はまだ。ダウンロードはしたけどな。
03901182010/04/23(金) 00:38:00
あw
0391118 ◆ToxyFMVOts 2010/04/23(金) 01:00:03
お前らいい加減にしろ
03921192010/04/23(金) 01:03:05
↑
お前キモイ
0393118 ◆ToxyFMVOts 2010/04/23(金) 01:52:01
自分語り 乙w
0394デフォルトの名無しさん2010/04/23(金) 03:23:48
質問。ウインドウのクラス化なんですが、

lpfnWndProcにstaticなメンバ関数をセットして、そこでGetWindowLongでポインタを取得しようと思ったんですけど
CreateWindowをコールした時点でstaticなメンバ関数が呼ばれてしまいます
0395デフォルトの名無しさん2010/04/23(金) 09:26:14
>>394
lpfnWndProc が static メンバ関数へのポインタだから
CreateWindow 時にコールバックされるのは lpfnWndProc で指示された static メンバ関数となるのは必然

質問の要点が不明だが… その後オブジェクト側へ配送したいという欲求か? (C++を想定)

class A {
 static class A* m_pThis;
 static LRESULT my_proc(HWND,UINT,WPARAM,LPARAM);
 virtual LRESULT wnd_proc(HWND,UINT,WPARAM,LPARAM);
};

CreateWindow する前に m_pThis = "対象obj"
my_proc内:
 GetWindowLong してない? yes) m_pThis をセットし、"対象obj"  no) そのまま "対象obj"
 "対象obj" -> wnd_proc() で配送
マルチスレッド対応するなら m_pThis を TLS で分離

MFCは GetWindowLong枠に objを仕込まず スレッド別で HWND⇔obj のマップテーブルを使ってる
ATL/WTLはサンク使ってる。
0396デフォルトの名無しさん2010/04/23(金) 21:02:44
Core i7 で物理コア数を取得したいのですが、
CPUID や GetProcessAffinityMask では論理コア数しか取得出来ません。
もしかすると私のやり方が悪いのかもしれませんが…。
どなたか物理コア数の取得方法を教えて下さいませんでしょうか。
0397デフォルトの名無しさん2010/04/23(金) 21:19:28
GetSystemInfoで物理コア数が取れないか?
論理プロセッサ数が欲しけりゃ別API使えってわざわざ書いてる位だし。
0398デフォルトの名無しさん2010/04/23(金) 21:33:45
>>397
SYSTEM_INFO sysinfo;
GetSystemInfo(&sysinfo);
printf("dwNumberOfProcessors %d\n", sysinfo.dwNumberOfProcessors);

ご回答ありがとうございます。
上記の様にした所、8の数値が返ってきました。
Core i7 860 の物理コアは4のはずなので、
多分論理コア数かと思われます。
0399デフォルトの名無しさん2010/04/23(金) 21:39:50
>>395
どうもありがとう。
ちなみにイベント発生毎に毎回GetWindowLongするのって重いんですか?気にするほどでもないですか
04001182010/04/23(金) 21:40:55
ハイパースレッドってOSから見たら物理CPUに見えるんじゃないの?
0401118 ◆ToxyFMVOts 2010/04/23(金) 21:42:11
>>400
118をNG登録した
0402118■ToxyFMVOts2010/04/23(金) 21:48:20
自分の回答が読めないじゃん。
0403118 ◆ToxyFMVOts 2010/04/23(金) 22:04:19
>>402
ヒント:正規表現
0404118 ◆LHct4pvbDE 2010/04/23(金) 22:11:13
つーかニセモノウザイよ。
0405118 ◆CzRT9/fh7c 2010/04/23(金) 22:11:41
お前が偽物じゃね?
0406�T�T82010/04/23(金) 22:15:02
俺が偽者だ!
0407ll82010/04/23(金) 22:16:48
そうだな
0408118 ◆ToxyFMVOts 2010/04/23(金) 22:51:02
マジ低脳共がウザすぎる
0409戦闘力118のゴミ2010/04/23(金) 23:14:29
数字コテもトリップ付ける知恵を身に付けたが、
数字コテ自体の弱いところを突付かれたな。
もう誰が本物かはどうでもいい。
なぜならば、俺たちが数字コテだからだ。
04101182010/04/23(金) 23:23:35
CPUIDで取るしかないんかね。
0411118 ◆ToxyFMVOts 2010/04/23(金) 23:23:40
↑誰かこのゴミ回収しとけ
0412118 ◆CB.8kw7Ixg 2010/04/23(金) 23:35:05
なんでトリップ割れたんだろ?
0413118 ◆HC9IbFdEiw 2010/04/23(金) 23:38:09
知らんがな。
0414(^q^) ◆HC9IbFdEiw 2010/04/23(金) 23:50:54
実は大概の酉はググればでてきちゃう
0415デフォルトの名無しさん2010/04/23(金) 23:51:36
更に言うと◆HC9IbFdEiwの酉は
#811
0416118 ◆CzRT9/fh7c 2010/04/23(金) 23:56:58
マジ偽物うぜぇ
0417118 ◆c37UjiIGfA 2010/04/24(土) 00:04:35
もうコレで行くわ
これなら単細胞共にはわかんねーだろ
0418118 ◆c37UjiIGfA 2010/04/24(土) 00:07:33
ばればれわろたwwww
#1180
0419118 ◆l9Zkhsj0XQ 2010/04/24(土) 00:09:54
↑このゴミを処分することを許可する
0420118 ◆rIKVz7F.VU 2010/04/24(土) 00:13:09

            ∩_ 
           〈〈〈 ヽ
          〈⊃  }
   ∩___∩  |   |
   | ノ      ヽ !   !
  /  ●   ● |  /
  |    ( _●_)  ミ/ こいつ最高にアホ
 彡、   |∪|  / 何様のつもりですか
/ __  ヽノ /
(___)   /
0421118 ◆S1/9LO44a2 2010/04/24(土) 00:15:37
これは俺ものるしかない
0422391 ◆CB.8kw7Ixg 2010/04/24(土) 00:25:25
118を語るやちらは消えろ
俺が本物
0423118 ◆9VHTWNxbY2 2010/04/24(土) 00:30:22
いやいや某でござる
0424デフォルトの名無しさん2010/04/24(土) 00:31:10
>>410
GetLogicalProcessorInformationで一応できるけど、
Vistaより前は無理だからCPUID使っとけって書いてるな。
0425118 ◆5aHxUR0jw6 2010/04/24(土) 03:41:41
>>422
は?てめえになんざ興味ねぇよ
失せろ391
04261182010/04/24(土) 07:39:51
↑
興味ないのにその喰いつきはなんなんでしょうかw
0427118 ◆NYAN/2wQEQ 2010/04/24(土) 08:31:47
ここネタスレだったのか
今まで全く気付かなかった
迂闊だった
0428デフォルトの名無しさん2010/04/24(土) 12:36:42
今までアプリのセットアップにInstallShield 6.3を使っていたのですが
諸事情で自分でセットアッププログラムを自前で作り直すことになりました。

で、インストール処理自体は問題ないのですが、インストール後にOSの再起動が
必要なので、ExitWindowsExを呼び出すようにしたのですが、たまに見る
「ウィンドウステーションがシャットダウン中であるためアプリケーションが初期化に失敗しました。」
のエラーダイアログが頻繁に出るようになりました。

他のアプリが出しているエラーだし、無視しても問題ないことは分かっているのですが
どうも気持ち悪いのと、InstallShieldを使っているときには見なかったので
何か回避する方法があるのかなと思っています。

ちなみに、ShellExecuteで"shutdown -r"を呼び出してもやはりエラーダイアログは
出てしまいました。
DOSプロンプトから呼び出したときには見たことがないのに、なぜなんでしょう。
0429デフォルトの名無しさん2010/04/24(土) 12:53:13
元に戻したいのか
解決したいのか
結局どっちなんだ?
0430118 ◆pOL/VRNq6Y 2010/04/24(土) 12:59:02
普通にWindows Installer使えよ
0431デフォルトの名無しさん2010/04/24(土) 21:03:28
ShowWindow(hWnd,SW_HIDE); でウインドウを隠してから
↓
ShowWindow(hWnd,SW_SHOWNORMAL);
SetWindowPos(hWnd, HWND_TOP, 0, 0, 0, 0,SWP_NOSIZE | SWP_NOMOVE);

でどのウインドウよりもZ軸が上になって表示されると思ったんですが、
他のウインドウの下にある状態で表示されてしまいます。記述が間違っているんでしょうか?
0432118 ◆pOL/VRNq6Y 2010/04/24(土) 21:17:17
HWND_TOPMOSTだろ
04334312010/04/24(土) 21:44:12
TOPMOSTだと常にどのウインドウよりも一番上になってしまいました。
通常状態でZ軸の一番上に持ってこようと思っています。
0434デフォルトの名無しさん2010/04/24(土) 21:49:06
>>433
http://www.google.co.jp/search?hl=ja&q=win32+Z%E3%82%AA%E3%83%BC%E3%83%80%E3%83%BC
0435118 ◆pOL/VRNq6Y 2010/04/24(土) 22:21:35
よくわからんのだけど、一時的に最前面に持ってきたい、ってこと?
制限はあるけど、SetForegroundWindow()でいいんじゃね?
0436デフォルトの名無しさん2010/04/24(土) 22:43:36
>>435
できました、ありがとうございます。
何故431で駄目だったのかは謎です
0437118 ◆pOL/VRNq6Y 2010/04/24(土) 22:56:21
よくやった!
0438デフォルトの名無しさん2010/04/25(日) 11:58:05
ChangeMenuのAPIの詳細が知りたいです。教えてください。お願いします.
0439118 ◆ayPjxbmM2c 2010/04/25(日) 12:13:31
そんなAPIない。
0440デフォルトの名無しさん2010/04/25(日) 19:11:03
char folder[100]="C:\\project";

CreateWindow("STATIC",folder…);
でフォルダ名を表示させてるんですけど、ものすごい長いパスでも表示できるようにしたいです。
CreateWindow("EDIT" にしてもパスがボックス以上の長さで表示されません、→ボタンを押したら続きが
表示されるようにしたいのですがどうすれば良いのでしょう。
0441デフォルトの名無しさん2010/04/25(日) 19:38:01
CreateWindowW
0442デフォルトの名無しさん2010/04/25(日) 19:39:29
そうなるように自分で書け。ツールチップ使うなりなんなり自分の都合で
04434402010/04/25(日) 20:25:56
パラメータ不足でES_AUTOHSCROLLを追加してできました。
ツールチップという方法もあるとは、自分で調べる癖をもっと持たないと駄目ですね
0444デフォルトの名無しさん2010/04/26(月) 09:47:06
p
04451182010/04/26(月) 11:07:48
誰か構ってくれ〜     ゚∩              :ノノ ゚                し′
   ,,------ 、      ノノ              ∪           ∩
  /: ____▽,,,,,,_ヽ    。:∪・      ⊂ヽ                  ノノ           :∩
  } i:ェェヮi ト.ェェ:-i { /⌒Y⌒\  プ   :):)                 じ           :ノノ 。
  ヾ::/イ__l丶 r'1ノ   ノ     )     じ         :∩ 。                ( (
  .}::l: ゝ--イ l:: {^\ビチグソ |        .       ヽヽ                  ヽj
   ト!;_`二´_,,;!イ|  |    ノ  :|         ∩      じ
   |  |__三___|  |_/|   |         ノノ                 ∩           :∩
   |  |      ヽ|  ト'   |   |/^ヽ     じ                 :ノノ ∵         :ヽヽ
   |  |         |  |_/ ヽ__人_ノ                       ∪             し′
  ⊆, っ      とーっ
0446デフォルトの名無しさん2010/04/26(月) 13:18:02
>>424
>>396です。118ではないです。
GetLogicalProcessorInformationを使ってみました所、
物理コア数の4が取得出来ました。
ですがおっしゃってる通り、古いOSでは使えないのですね。
XPもSP2以前だとダメな様でした。

CPUIDだと、IntelはCPUID(4)のEAX(bit31-26)以外に、
コア数を取得出来る所があるのでしょうか?
もしご存じであれば教えて頂ければ幸いです。
04471182010/04/26(月) 16:42:11
もしご存じであれば教えて頂ければ幸いです。
↑
俺のために動けってかw
なんでintelのデベロッパマニュアル読まないの?
0448デフォルトの名無しさん2010/04/26(月) 20:14:55
ここでの説明を見たのですがダイアログはPCの解像度に関係なく同じような位置で表示されるんですよね。
ttp://wisdom.sakura.ne.jp/system/winapi/win32/win84.html

座標系は文字サイズを基準としているそうですが、解像度の比率では無いのに
何故解像度に影響されないレイアウトになるんでしょう。
フォントの文字サイズはどの解像度でも一緒だと思うんですが、文字サイズが何を指しているのか解りません。
04491182010/04/26(月) 20:34:37
>>448
文字サイズ=ポイント
1 pt = 0.352 778 mm
0450デフォルトの名無しさん2010/04/26(月) 20:34:37
まじかるにゃんにゃんは良いよね〜

>>448
解像度には思いっきり影響されるだろ。
高解像度だとその分全体に占める割合が小さくなるし。
別にダイアログが勝手に大きくなったりはしないぞ。
それよりも、文字サイズ基準の関係でDPIの設定が反映されるのが特徴だな。
96から120にしてやれば、大きさもそれなりに広がる。
レンダリングの関係で120にしたら文字が切れてしまうのもよくある話w
04514482010/04/26(月) 20:53:08
ダイアログの大きさは、どの解像度でも一定な文字サイズを基準に取ってる。
だから解像度の違いにより、ダイアログの大きさが崩れることなく表示できる。
ダイアログの大きさは一定なので低解像度だと画面をはみ出して表示されないことがある。
-----
x には X座標、y には Y座標をそれぞれ
ウィンドウのクライアント座標でダイアログの左上の位置を指定します とありますが
こちらは解像度単位で、設定した値によっては始めからウインドウの端も表示されないことはあるんですか?

どの解像度でも真中に表示するには使用しているPCの解像度を取得して2で割って
SetWindowPos をすれば良いのでしょうか?
0452デフォルトの名無しさん2010/04/26(月) 21:04:43
ど真ん中に出されたら邪魔くさくてしょうがない
0453デフォルトの名無しさん2010/04/26(月) 21:37:45
>>451
WindowsSDKのリソースコンパイラの所に
リソーススクリプトの記述方法が全部書いてあるから。
0454デフォルトの名無しさん2010/04/26(月) 23:13:49
>>452
エロビデオ見てて良いシーンで一時停止すると
再生の→ボタンが画面の真ん中に出て来て
邪魔をする漏れのプレイヤー
04551182010/04/27(火) 02:26:21
   ○
     O
      o                       と
       。 ,. -ー冖'⌒'ー-、             思
       ,ノ         \            う
       / ,r‐へへく⌒'¬、  ヽ          キ
       {ノ へ.._、 ,,/~`  〉  }    ,r=-、  モ
      /プ?`y'¨Y´?ヽ?}j=く    /,ミ=/  ヲ
    ノ /レ'>-〈_ュ`ー‐'  リ,イ}    〃 /   タ
   / _勺 イ;;∵r;==、、∴'∵; シ    〃 /    で
  ,/ └' ノ \   こ¨`    ノ{ー--、〃__/    あ
  人__/ー┬ 个-、__,,.. ‐'´ 〃`ァーァー\   っ
. /   |/ |::::::|、       〃 /:::::/    ヽ  た
/   |   |::::::|\、_________/'   /:::::/〃
0456デフォルトの名無しさん2010/04/27(火) 06:59:37
tesst
0457デフォルトの名無しさん2010/04/27(火) 13:32:18
Windowsのログイン時のパスワードを変更する
プログラムて作成することはできますか?
ハックとかではなく、自分のTOOL上からパスワード変更をしたいと考えています。
0458デフォルトの名無しさん2010/04/27(火) 13:52:33
#include <lm.h>

NetUserChangePassword()
04591182010/04/27(火) 23:49:22
#pragma pack(push,1)
04601182010/04/28(水) 10:34:52
ppp
0461デフォルトの名無しさん2010/04/28(水) 23:36:21
SJISで表現できない文字を含むフォルダ、ファイル名をA系のAPIでアクセスしようと思ったら
8.3形式にしてアクセスするしかないんでしょうか?例えば
   ,
Andre (eの上に ' がつく文字)というファイルを
FindFirstFile(便利な変換関数("Andre"), ...)としてアクセスする手段はないですよね。
0462デフォルトの名無しさん2010/04/29(木) 05:39:44
>>461
8.3形式のファイル名はどうやって得るつもりなの?
GetShortPathName()を使うならUnicode版を使わなきゃならないし、
それが出来る環境ならそもそもA系APIを使う意味がないんじゃ?
0463デフォルトの名無しさん2010/04/29(木) 11:07:57
仲介DLLからローカルフックでアプリの WM_KEYDOWN, WM_KEYUP を横取りして処理し、アプリには渡さないようにしたいのですが
キーボードプロシージャからDLL側のスレッドに PostThreadMessage() すると
なぜかアプリ側に WM_KEY* メッセージが素通りしてしまいます。
PostThreadMessage() で投げているのはユーザ定義メッセージなので、WM_KEY* とは全く無関係なはずだと思うのですが
何故こういうことが起こるのでしょうか?PostThreadMessage() はそういう仕様のものなんでしょうか?

キーボードプロシージャのソースを示します。
DLL側で生成したスレッドはウィンドウを持ちませんが、事前に PeekThreadMessage(&msg, 0, 0, 0, PM_NOREMOVE) を呼んでいるので
メッセージキューは生成されているはずだと思います。
--------------------
HHOOK hHook;
UINT thread_id; // DLL側で生成したスレッドのID

LRESULT CALLBACK KeyBoardProc(int code, WPARAM wp, LPARAM lp)
{
  if(code < 0 || code == HC_NOREMOVE) return CallNextHookEx(hHook, code, wp, lp);

  // これを行うとなぜか WM_KEY* が素通りしてしまう
  // コメントアウトすると WM_KEY* は望み通り遮断される
  PostThreadMessage(thread_id, WM_APP+1, wp, lp);

  return TRUE; // アプリに WM_KEY* を渡さない
}
--------------------

仕様上やむを得ないのであればメッセージキューに相当するものを自作しようかと考えているのですが
標準のメッセージキューで可能ならそれに越したことはないので、詳しい方の知恵をお借りしたいです。
0464デフォルトの名無しさん2010/04/29(木) 11:14:38
PeekThreadMessage(&msg, 0, 0, 0, PM_NOREMOVE) は

PeekMessage(&msg, 0, 0, 0, PM_NOREMOVE) の誤りです。すみません。
0465デフォルトの名無しさん2010/04/29(木) 12:11:37
>>462
いちいち取得しなくても、ソースを書く段階で「最初から知っていた」というケースもある
汎用性はなくなるけど特定の業務に使うアプリなら決め打ちで問題ないこともある
0466118 ◆ayPjxbmM2c 2010/04/29(木) 12:22:36
>>465
じゃ、直接指定しろよ。
0467デフォルトの名無しさん2010/04/29(木) 18:32:54
SJISで表現できないから困ってるんじゃないのかと
04681182010/04/29(木) 19:16:56
int i = 10;
int * p = &i;//int型ポインタpにiのアドレスを代入する
簡単。
char str1[] = "abcde";
char * str2 = "abcde";
上と下は同じでどっちを使ってもいい。
0469デフォルトの名無しさん2010/04/29(木) 19:34:33
やばい、>>468 見てちょっと可愛いと思ってしまった
0470デフォルトの名無しさん2010/04/29(木) 20:09:32
468にツッコミたくて仕方がないが、それ以前になんでそんな書き込みをしたのか
気になってしょうがない。どこかの誤爆?
0471デフォルトの名無しさん2010/04/29(木) 21:30:31
ただのキチガだから触れるな
0472デフォルトの名無しさん2010/04/30(金) 00:28:31
118 はいろんなところで見かける
04731182010/04/30(金) 02:24:22
真の118 >>118
偽の118 トリップ全部、sage
>>468>>459>>378>>370
>>300>>240>>186
>>176>>149>>190


04741182010/04/30(金) 03:01:53
なんだこいつうぜえ
04751182010/04/30(金) 09:58:59
ppp
04761182010/04/30(金) 10:05:06
おはよう、おまいら。今起きたところなんで過去10時間の書き込みは全部偽物だぜ。
04771182010/04/30(金) 10:57:54
漏れも偽者でつ
0478デフォルトの名無しさん2010/04/30(金) 12:16:25
現在のIMEの状態を取得するAPIを教えてください。

指定したハンドルのではなくて、IME自体の状態を取得したいのですが
0479デフォルトの名無しさん2010/04/30(金) 12:46:28
それ俺も知りたいが
IMEってやっかいだよな
下手に関わるとwineでまともに動かなくなるし
0480デフォルトの名無しさん2010/04/30(金) 12:48:47
今調べてたんだけど
WM_IME_〜メッセージとかでどうですかね?
0481デフォルトの名無しさん2010/04/30(金) 12:49:52
あ、ハンドルがわからないか・・・
0482デフォルトの名無しさん2010/04/30(金) 12:50:39
レジストリかどっかにIMEの現在の状態って書いてないですか?
0483デフォルトの名無しさん2010/04/30(金) 15:04:41
毎回レジストリなんかに書かれるとでも?
・・・本当に書かれてたら笑うが
0484デフォルトの名無しさん2010/04/30(金) 17:20:46
IMEの状態を表示するツールなら知ってる
0485デフォルトの名無しさん2010/04/30(金) 18:42:03
IME自体の状態って言うけど
IMEの状態ってウィンドウごとに保持されてるんじゃないの?
0486デフォルトの名無しさん2010/04/30(金) 21:42:26
IMEの状態を取得する方法がわからないから、IMEがONのままスリープすると、
復帰したときにATOKはおかしくなることがある。
MS-IMEも昔はおかしくなったんだけど、最近になってようやくきちんと復帰するようになった。
0487デフォルトの名無しさん2010/05/01(土) 02:16:39
IMEの有効・無効なら、グローバルフックしてWM_IME_STATUSを捕まえるでおk
0488デフォルトの名無しさん2010/05/01(土) 11:40:28
複数のウィンドウを用意してるなかで、片方が普段非表示なんだが
もう片方がクリックされたら、クリックされたマウス上に表示するようにしてる
それで、ウィンドウは両方ともダブルクリックに対応してるんだけど
片方がダブルクリックされると、最初のクリックでもう片方が表示、その結果WM_LDBLCLKが来ないんだが
綺麗な解決方法無いかな?
0489デフォルトの名無しさん2010/05/01(土) 11:52:20
表示を遅延させてみるとか
0490デフォルトの名無しさん2010/05/01(土) 14:38:20
>>489
�d。遅延なら何とかなりそう
0491デフォルトの名無しさん2010/05/01(土) 15:53:08
>>488
試してみたけど、普通にWM_LBUTTONDBLCLKきたよ?
非表示のウインドウを表示させるコードに問題があるんじゃないの?
表示させるときにSWP_NOACTIVATEとか、SW_SHOWNA使ってる?
0492デフォルトの名無しさん2010/05/01(土) 19:59:55
>>491
うぉぉぉ。有難う!
普通にSW_SHOW使ってました
0493デフォルトの名無しさん2010/05/01(土) 23:44:22
GetWindowPlacement
GetClientRect
GetWindowRect

の違いがわかりません。
どれも、領域の左上、右下の座標を取得することができるようですが・・・

どう違うんでしょうか?
0494デフォルトの名無しさん2010/05/01(土) 23:46:03
調べろよw
0495デフォルトの名無しさん2010/05/02(日) 00:11:33
回答できるほどの知識はないようですねw
0496デフォルトの名無しさん2010/05/02(日) 00:17:32
センスなさすぎw
0497118 ◆ayPjxbmM2c 2010/05/02(日) 00:17:53
あるわけないだろ。
0498デフォルトの名無しさん2010/05/02(日) 00:25:43
知識ないから質問するだけ無駄
0499デフォルトの名無しさん2010/05/02(日) 00:27:50
ただのキチガだから触れるな
0500デフォルトの名無しさん2010/05/02(日) 00:30:03
GetWindowPlacement - 通常、最小化、最大化の位置情報
GetClientRect - クライアント領域の位置情報
GetWindowRect - ウィンドウ領域の位置情報
0501デフォルトの名無しさん2010/05/02(日) 01:52:03
GetWindowPlacement - 各ウィンドウ情報取得
GetClientRect - クライアント上に描画している矩形を取得
GetWindowRect - ウィンドウ上に描画している矩形を取得
05021182010/05/02(日) 03:17:58
あなたは知らないのですか?
05031182010/05/02(日) 08:58:19
<おみやげ>が<のらドワーフのさと>にあることを。
0504デフォルトの名無しさん2010/05/02(日) 10:14:26
複数のウィンドウ(AとBと略)を最前面表示にしてるんだが
Aは常に最前面、しかしBは更にAより最前面って出来ない?
0505デフォルトの名無しさん2010/05/02(日) 10:16:20
可。
0506118 ◆ayPjxbmM2c 2010/05/02(日) 10:44:32
質問文にすでに矛盾があるんだが。
0507デフォルトの名無しさん2010/05/02(日) 11:30:06
悔しいが >>506 の突っ込みでワロタ
0508デフォルトの名無しさん2010/05/02(日) 12:46:07
おれは読解力の無さに呆れた
0509118 ◆88ZPSwqsm6 2010/05/02(日) 12:58:18
AをBのオーナーにしとけばいいな。
0510デフォルトの名無しさん2010/05/02(日) 13:09:46
それだとオーナー関係にしないと駄目じゃない?
0511デフォルトの名無しさん2010/05/02(日) 13:11:19
途中で送信してしまったorz

オーナーにせずに解決策ってある?
0512デフォルトの名無しさん2010/05/02(日) 13:22:24
それしかないとも言う。
アプリのメッセージボックスの自己主張が激しかった
Win95/NT4.0時代の悪夢を繰り返さないための仕様。
0513デフォルトの名無しさん2010/05/02(日) 13:26:59
>>504
適当なイベント(Activateなど)をトリガに
毎回EnumでZオーダーをチェックし
BがAの背面に回っていたら
A、Bの順にTopmostする
0514デフォルトの名無しさん2010/05/03(月) 03:38:49
winapiで立方体の表示はできないの?
0515デフォルトの名無しさん2010/05/03(月) 03:42:03
やろうと思えばできる。自分で計算して描画すれば。
DrawCube みたいな関数をイメージしてるなら、そんな物は無い
05161182010/05/03(月) 04:19:42
>>514
3D->2D変換

typedef struct type3d {
float x,y,z;
} POINT3D;

typedef struct type2d {
float x,y;
}

void convert3dto2d(p3 *POINT3D, p2 *POINT2D)
{
float vp = 0.7;

p2->x = p3->x * (vp / p3->z);
p2->y = p3->y * (vp / p3->z );
}
0517デフォルトの名無しさん2010/05/03(月) 04:56:57
↑
何言語?
糞いい加減なレスすんなや、ボケ
0518デフォルトの名無しさん2010/05/03(月) 05:10:26
>>516
滅茶苦茶過ぎてワロタ
0519デフォルトの名無しさん2010/05/03(月) 10:31:17
あるゲームを解析したいと考えています
どうやるかというとHPが100以下になったら回復アイテムを
自動で使うというものを作りたいです

そこで、起動しているexeのメモリの内容を参照するAPIって
何があるのでしょうか?
0520デフォルトの名無しさん2010/05/03(月) 10:39:31
坊やはお帰り
0521118 ◆1oKmZSIAF. 2010/05/03(月) 10:43:46
ReadProcessMemory()
0522デフォルトの名無しさん2010/05/03(月) 11:35:11
いつから釣りだらけのスレになったのか
元からかw
0523デフォルトの名無しさん2010/05/03(月) 12:59:13
         \   ∩─ー、    ====
           \/ ● 、_ `ヽ   ======
           / \( ●  ● |つ
           |   X_入__ノ   ミ   そんな餌で俺様が釣られクマ――
            、 (_/   ノ /⌒l
            /\___ノ゙_/  /  =====
            〈         __ノ  ====
            \ \_    \
             \___)     \   ======   (´⌒
                \   ___ \__  (´⌒;;(´⌒;;
                  \___)___)(´;;⌒  (´⌒;;  ズザザザ
0524デフォルトの名無しさん2010/05/03(月) 18:01:45
特定のプロセスのみ、ShellExecute() のプログラムの検索パスを変更することは可能でしょうか?
SetEnvironment() で path を新たに設定しなおして、その後 ShellExecute() を実行してみたんですが
古いパスしか見てくれないようで困っています
0525デフォルトの名無しさん2010/05/03(月) 18:06:17
>>524
環境変数を継承するオプション無かった?なかったら、CreateProcessでごにょごにょする。
0526118 ◆4BcWhWACFc 2010/05/03(月) 18:06:47
なんか勘違いしてるような気がする。

もう少し具体的にやりたいことと、やってみたことを説明してみ。
0527デフォルトの名無しさん2010/05/03(月) 19:29:35
524です
notepad.exe とか memo.txt とかのファイル名が書かれたテキストファイルを読み
適当なタイミングでそのプログラムをShellExecuteで起動する32ビットアプリを作っています
64ビット環境下で動く時に、%SystemRoot%\Sysnative を優先して実行ファイルの探索パスとして使えると、
64ビット版のアプリが起動できるのではないかと思い実装を試みていました
多分、ShellExecute のパスを変えるには、親玉の explorer.exe の環境変数を変更しないとだめで、
そこを書き換えている期間は他のアプリにも影響が出てしまうのでこの方針はまずそうです
素直に64ビット版のShellExecuteのプロセスを用意しようと思います
0528118 ◆4BcWhWACFc 2010/05/03(月) 19:35:37
それ、環境変数関係ないだろ。フォルダリダイレクションだし。
素直に、フルパスで起動すればいいんじゃね?
0529デフォルトの名無しさん2010/05/03(月) 19:51:42
実行ファイルだけならCreateProcessなどでフルパス指定で呼べばいいんですが
memo.txt や a.bat のようなファイル名指定による ShellExecute でSystem32配下のアプリが呼ばれるときの挙動を変えたかったんです
0530118 ◆4BcWhWACFc 2010/05/03(月) 19:56:27
exe以外なら、FindExecutableで関連づけられたアプリを取得して、
必要に応じてSysnativeにパスを変えて、CreateProcessすればいいだろ?
0531デフォルトの名無しさん2010/05/03(月) 19:58:29
おれの周りにも最近64がちらついてきた
面倒な世の中になってきたなあ
05321182010/05/03(月) 20:12:45
>>531
ニンテンドウ64
0533デフォルトの名無しさん2010/05/03(月) 20:53:44
>>530
これでいけそうです。ありがとうございます!
0534デフォルトの名無しさん2010/05/04(火) 13:31:49
x86向けとx64向けの両方のバイナリをはき出すにあたって
ソースコードを同一にする方法って言うか注意事項って言うか
そういうのがまとまったサイトってないのかな。
0535デフォルトの名無しさん2010/05/04(火) 13:36:35
これやらなけりゃ問題ない。
void* p;
int a=(int)p;
0536118 ◆tfxvx8WXZ2 2010/05/04(火) 13:42:38
ポインタサイズだけだからな・・・。
0537デフォルトの名無しさん2010/05/04(火) 13:45:08
if (sizof(int) != sizof(int*)) {
#error 無理です。
}
0538デフォルトの名無しさん2010/05/04(火) 14:13:04
>>537
それじゃ常にエラー出るだろw
0539デフォルトの名無しさん2010/05/04(火) 14:21:17
確かに常にエラー出るなw
0540デフォルトの名無しさん2010/05/04(火) 15:44:10
x64でビルドしようかと思ってたけどノートパソで走らなくなるからx86にしたことがある。
0541デフォルトの名無しさん2010/05/04(火) 21:26:09
ソースはともかくバイナリを同一にしたい
副次ストリームとか使ってなんとか一緒にできないものか
foo.exe(32ビット版) が起動た時OSが64ビットだったら foo64.exe を呼び出す、みたいな間抜けなやり方しか思いつかん
0542デフォルトの名無しさん2010/05/04(火) 21:43:04
>>541
PEフォーマットが複数バイナリを格納できない以上、それは無理ってもんでしょ。
0543118 ◆tfxvx8WXZ2 2010/05/04(火) 22:08:22
>>541
SysInternalのツールとかは、そういう風にやってるね。
0544デフォルトの名無しさん2010/05/04(火) 22:11:35
Visual Studio には spy ツールがありますよね
あれって、たとえば、特定のEXEにあたっちすることまでは
わかったのですが、
そのEXEが発行するAPIとか取得できるのかな?

やりたいことは、
EXEがあり、このEXEは、Widnowsのハードウエアにかかわる
DLL(API)を使っています。
このdevice.dll に対して、どのようなAPIが発行を要求したかしらべたいのです。
0545デフォルトの名無しさん2010/05/04(火) 22:13:03
何故かコクヨのノートに書かれた夏休みの絵日記が浮かんだ
0546118 ◆uKObk31oqA 2010/05/04(火) 22:16:02
SPY++は、メッセージのやりとりを確認するツール。
API呼び出しを確認したければ、API Monitorかデバッガでアタッチ、
あるいは、ラッパ生成ツールでも使うことになる。

詳細はググレ。
0547デフォルトの名無しさん2010/05/04(火) 22:16:52
>>544
昔、dependency walkerってのがあったけど、
今もあんの?
0548デフォルトの名無しさん2010/05/04(火) 22:20:10
横から >>544 を書き直すと、

今手元に、とある dll とそれを利用している exe があります。
この dll について、公開されている関数の中で、この exe が
今どの関数を使用しているかを知る方法はありませんか?
ご教示の程よろしくお願い致します。

こんな感じか
0549118 ◆uKObk31oqA 2010/05/04(火) 22:24:30
>>547
VSには含まれなくなったけど、フリーのやつが落とせる。
05505472010/05/04(火) 22:40:32
>>549
探してみる
0551デフォルトの名無しさん2010/05/04(火) 22:46:49
Volume Shadow Copy Serviceを使って使用中のファイルのコピーをしたいのですが
どこかに良いサンプルありませんか
0552デフォルトの名無しさん2010/05/04(火) 22:55:31
今手元に、とあるWindows で準備されている、 dll とそれを利用している exe(他社開発 VisualC++で) があります。
この dll について、公開されている関数の中で、この exe が
今dllのどの関数を使用しているかを知る簡単な方法はありませんか?

イメージ的には、他社開発のアプリ上のボタンを押したら、
どのDLLのどの関数を呼び出したかを知りたいです。

アプリ上にそういったトレースファイルをはく使用であればいいのですが、
そういう使用がないので、なんらかの方法で知りたいと思います。

ご教示の程よろしくお願い致します。
0553118 ◆uKObk31oqA 2010/05/04(火) 23:00:19
インポートリンクされてれば、Dumpbin /IMPORTS でインポートしてる関数はわかる。
何かをした時点で、ってことであれば、>>546
0554デフォルトの名無しさん2010/05/05(水) 01:40:43
>>546


>>553

>SPY++は、メッセージのやりとりを確認するツール。
>API呼び出しを確認したければ、API Monitorかデバッガでアタッチ

情報ありがとうございます。
API モニター等調べています。

Win32とは直接関係ないですが、上の”メッセージ”とありますが、
現在Visual C++ 2008 のフォームアプリを勉強しているのですが、
ほとんど、(昔のVBみたいで、)あまり、メッセージがでてきません。
この理由というのがいまいちよくわかってないのですが、なにかヒントありますでしょうか?
0555118 ◆uKObk31oqA 2010/05/05(水) 01:41:59
それは C++/CLI だからだろ。
普通にWin32アプリを作れば、嫌でも出てくるよ。
0556デフォルトの名無しさん2010/05/05(水) 01:51:36
>>555

2ch、やっぱり、すごい、疑問がすぐ解決する。。
0557デフォルトの名無しさん2010/05/05(水) 02:09:49
Win32 API /Win XP Sp3 での総数はいくらぐらいなのでしょうか?
ネットでさがしてもわかりませんでした。
また、そのリスト等、ネットにありますでしょうか?
0558118 ◆1oKmZSIAF. 2010/05/05(水) 02:13:54
ない。
0559デフォルトの名無しさん2010/05/05(水) 02:19:56
全部のヘッダ覗いて数えれば確実
・・・そもそもどこまでを指してwin32APIと呼ぶのかって話もあるが
0560デフォルトの名無しさん2010/05/05(水) 02:32:23
system32にあるdllの各エクスポート数を調べるとか
0561デフォルトの名無しさん2010/05/05(水) 02:44:11
>>556
暇な廃人が常駐してるからな
0562デフォルトの名無しさん2010/05/05(水) 03:02:06

>560 :デフォルトの名無しさん:2010/05/05(水) 02:32:23
>system32にあるdllの各エクスポート数を調べるとか

このDLLのエキスポート数についてもう少しわかりやすく解説願えないでしょうか?

DLLはAPIを集めた、関数群であるあたり、までは理解しております。
0563118 ◆1oKmZSIAF. 2010/05/05(水) 03:11:55
とりあえず、Dumpbin /EXPORTS してみれば?
0564デフォルトの名無しさん2010/05/05(水) 03:16:27
>>563
ありがとう。DLL内の情報が得られる EXEが、VSにあるみたいですね!
いろいろ読んで試してみます。

ttp://www.crystal-creation.com/software/technical-information/programming/dotnet/dotnet-compact-framework/cpp-dll.htm
0565デフォルトの名無しさん2010/05/05(水) 03:17:58
そもそもなんでそんなリストが必要なのかと
マイクロソフト出版か何かが出してた鬼みたいな厚さのAPI本でも多分全部網羅はしてなかったような
あと、箱入りVCにはレンガくらいの厚さがあるAPI本入ってるけど
0566デフォルトの名無しさん2010/05/05(水) 03:40:12
DLLがエクスポートしていても、非公開扱いだったり、
APIといいつつ、単なるマクロでDLLではエクスポートされていない場合もあるよ。
諦めたほうがいい。
0567デフォルトの名無しさん2010/05/05(水) 08:10:41
名前だけ分かっても手が出ないし
DNSAPIとか
0568デフォルトの名無しさん2010/05/05(水) 08:52:28
>>567
DNSAPI.dll のことか?

普通に MSDN 見ればわかると思うが...
http://msdn.microsoft.com/en-us/library/ms682100(v=VS.85).aspx
0569デフォルトの名無しさん2010/05/05(水) 09:01:53
DnsGetCacheDataTableとかどこ探しても載ってないもんよ
0570デフォルトの名無しさん2010/05/05(水) 16:29:20
まあ、非公開のエクスポートはあるだろう。
DnsGetCacheDataTable なんて、どう見ても内部向けだろうし。
0571デフォルトの名無しさん2010/05/05(水) 20:39:12
そもそも非公開ってどうやって判別するのよ
0572デフォルトの名無しさん2010/05/05(水) 21:05:42
ドキュメントも読まずに判断なんて出来ないと思うの
そしてそれが何かの説明も読まずに使うバカはいないと思うの
0573118 ◆1oKmZSIAF. 2010/05/05(水) 21:25:31
ときたまいるけどね。MSDNを見ないで、どっかの素人サイト見てるようなやつ。
0574デフォルトの名無しさん2010/05/05(水) 22:20:21
MSDNも日本語のサイトは糞だな
英語のMSDN見ないと話にならない
05751182010/05/06(木) 02:30:04
>>574
お前K&Rも原著じゃないとっていうタイプだろ?
融通がきかない頭が固い
死後硬直かよ
0576デフォルトの名無しさん2010/05/06(木) 02:34:51
>お前K&Rも原著じゃないとっていうタイプだろ?

そのとおりです
よくわかりましたね
0577デフォルトの名無しさん2010/05/06(木) 03:02:36
英語版見た方がいいのは事実じゃないの
日本語版だとバッファサイズがヌル文字含むのかとか書いてないことがあるし
0578デフォルトの名無しさん2010/05/06(木) 06:15:06
日本語版は、関数呼び出しに必要な構造体や関数ポインタ型へのリンクが
なくて使いづらいんだよな。
0579デフォルトの名無しさん2010/05/06(木) 06:53:21
WS_SIZEBOXだと境界線が出るんですが
クライアント領域がサイズ変更可能で境界線を持たないウインドウはどうすれば作成できますか?
0580デフォルトの名無しさん2010/05/06(木) 08:19:26
そういう場合はサイズ変更は自分でやる
0581デフォルトの名無しさん2010/05/06(木) 09:05:15
他のウィンドウが自分のウィンドウに重なってるかを調べる方法って
定期的に列挙してZオーダーの確認するしかない?
0582デフォルトの名無しさん2010/05/06(木) 09:12:53
Zオーダーの確認でも分からない場合があります
0583デフォルトの名無しさん2010/05/06(木) 09:14:42
自分のウィンドウのZオーダー間、ウィンドウのスクリーン座標を取って被ってるかの確認かな
他のあるかい?
0584デフォルトの名無しさん2010/05/06(木) 09:23:38
1ピクセルラインのリージョン採って無効確認
0585デフォルトの名無しさん2010/05/06(木) 09:40:43
子プロセスを作る時に不可視で作るのはどうすればいい?
0586デフォルトの名無しさん2010/05/06(木) 10:02:04
>>575
>>279-285を読んでもそう言うなら*馬鹿*以外の何物でもない。

> 解説
> CreateFile が返したオブジェクトハンドルを閉じるには、 関数を使います。
0587デフォルトの名無しさん2010/05/06(木) 10:10:59
質問です。
ファイルコピーをする場合、
・fopen_s等で開いて、自力でコピー
・system("copy を使う
があると思いますが、
エクスプローラーのコピーを、プログラムから気軽に使う方法はないでしょうか?

ファイルのコピー経過(今どれくらいコピーが終わったか)などを表示するのが目的です。
0588118 ◆1oKmZSIAF. 2010/05/06(木) 10:14:42
>>587
SHFileOperation
0589デフォルトの名無しさん2010/05/06(木) 10:31:15
>>588
ありがとうございます
ばっちりでした
0590デフォルトの名無しさん2010/05/06(木) 14:05:46
>>585
綺麗な手では無理

どろくさくやるなら
 CreateProcess → 戻りのプロセスID取得
 ウィンドウ列挙して、GetWindowThreadProcessId でプロセスID取って一致したら
 ShowWindow(SW_HIDE) する
こういう手順になるかな?
0591デフォルトの名無しさん2010/05/06(木) 14:10:25
>585
関数を使います。
0592デフォルトの名無しさん2010/05/06(木) 14:39:00
>>591
自分で答えいってるがな
0593デフォルトの名無しさん2010/05/06(木) 15:33:50
>>585
STARTUPINFOのwShowWindowにSW_HIDE指定すれば済む話じゃなくて?

ちなみに、プロセスが作成されて最初のShowWindowはSTARTUPINFOで
状態が指定されていれば、それが強要される。
0594118 ◆1oKmZSIAF. 2010/05/06(木) 15:37:16
その指定が有効にならないアプリはごまんとある、って話でしょ。
0595デフォルトの名無しさん2010/05/06(木) 15:44:42
>>593
そのアプリが最初に呼び出すShowWindowがSW_DEFAULTだかなんだかっての指定してないと効かない
0596デフォルトの名無しさん2010/05/06(木) 15:46:16
WinMain からいきなり DialogBox で窓駆動するようなのは
STARTUPINFO 効かないんじゃないかな
0597デフォルトの名無しさん2010/05/06(木) 15:48:13
As noted in the discussion of the nCmdShow parameter, the nCmdShow value is ignored in the first call to ShowWindow
if the program that launched the application specifies startup information in the structure.
In this case, ShowWindow uses the information specified in the STARTUPINFO structure to show the window.
On subsequent calls, the application must call ShowWindow with nCmdShow set to SW_SHOWDEFAULT
to use the startup information provided by the program that launched the application.
This behavior is designed for the following situations:
0598デフォルトの名無しさん2010/05/06(木) 16:05:01
>>595
SW_DEFAULTは関係ないよ。

nCmdShow
ウィンドウの表示方法を指定します。アプリケーションがほかのプログラムから STARTUPINFO 構造体を渡して起動された場合、初めて ShowWindow 関数を呼び出したときには、このパラメータは無視されます。
0599デフォルトの名無しさん2010/05/06(木) 16:11:02
孫プロセスなら子プロセスのWindowStationを非表示にすれば
0600デフォルトの名無しさん2010/05/06(木) 16:14:04
>>596
ダイアログベースのアプリケーションでも表示状態の指定はできるけど、
それとは別にダイアログベースのアプリケーションのメインウインドウは
不可視にできないという制限があるから、SW_HIDEは駄目かもね。
06011182010/05/06(木) 19:29:30
>>597
日本語でおk
0602デフォルトの名無しさん2010/05/06(木) 20:01:39
この程度は読めなきゃAPI使ったプログラム書けんだろ
0603デフォルトの名無しさん2010/05/06(木) 21:44:15
ウィンドウプロシージャ自身から UpdateWindow() を呼んだときの挙動ってどうなるんですか?
たとえば、WM_KEYDOWN が来たら UpdateWindow() した場合は

WM_KEYDOWN が来る
↓
UpdateWindow() を呼ぶ (A)
↓
WM_PAINT を引数としてウィンドウプロシージャが呼ばれる
↓
WM_PAINT を処理する
↓
WM_KEYDOWN の (A) へ制御が戻る

という感じになるんでしょうか?
0604デフォルトの名無しさん2010/05/06(木) 21:53:23
UpdateWindow() は内部的に 登録されたアプリケーション(クラス)に
WM_PAINT を送信する

>WM_PAINT を引数としてウィンドウプロシージャが呼ばれる
のではなくて
ウィンドウプロシージャにWM_PAINTメッセージが送信される

WM_KEYDOWNへの処理には戻らない
なぜなら WM_KEYDOWNメッセージはウィンドウプロシージャに送信されていない
0605デフォルトの名無しさん2010/05/06(木) 21:59:29
CALLBACK が邪魔になっているであろう

単純に WinProc( MSG msg )
{
switch( msg )
{
case WM_PAINT:
brea;
case WM_KEYDOWN:
break;
}
}
と考えればよろし
0606デフォルトの名無しさん2010/05/06(木) 21:59:50
>>604
でも、MSDNだと UpdateWindow() はメッセージキューを無視して WM_PAINT を送ると書いてありますよね?
ということは、WM_PAINT の処理が終わるまでブロックするんじゃないかと思うんですが、そうではないんでしょうか?
メッセージキューの先頭に WM_PAINT を入れるということですか?
0607デフォルトの名無しさん2010/05/06(木) 22:02:10
ああ、勘違いしていた
printf( でも試してみれば?
0608デフォルトの名無しさん2010/05/06(木) 22:08:41
RedrawWindow
http://msdn.microsoft.com/ja-jp/library/ms536136.aspxhttp://msdn.microsoft.com/ja-jp/library/cc428944.aspxhttp://msdn.microsoft.com/ja-jp/library/ms536136.aspx

ウィンドウのクライアント領域にある、指定された長方形またはリージョンを更新します。
コピー

BOOL RedrawWindow(
HWND hWnd, // ウィンドウのハンドル
CONST RECT *lprcUpdate, // 更新したい長方形
HRGN hrgnUpdate, // 更新したいリージョンのハンドル
UINT flags // 再描画フラグからなる配列
);

WM_PAINT 使わなくてもこの関数を使えば画面の最更新はできる
0609デフォルトの名無しさん2010/05/06(木) 22:11:27
>>608
リンクミス
http://msdn.microsoft.com/ja-jp/library/cc410559.aspx
0610デフォルトの名無しさん2010/05/06(木) 22:12:24
関連して
InvalidateRect
もある
0611デフォルトの名無しさん2010/05/06(木) 22:16:56
>>603
半端な知識で出鱈目教えてる奴が来てるようだから、この時間のレスは信用しない方が良いよ。
0612デフォルトの名無しさん2010/05/06(木) 22:28:35
失敗ばかり恐れ何もしない奴はだまってて
0613デフォルトの名無しさん2010/05/06(木) 22:30:10
>>604
処理には戻らないって、関数が終わったら戻ってるじゃん
そういう事を >>603 の(A)は言ってるんじゃないの?
UpdateWindow関数っていつから goto になったんだww
0614デフォルトの名無しさん2010/05/06(木) 22:30:47
なんかごちゃごちゃ書いてるやつがいるけど
603はそんなこと聞いてないだろう。

処理が終わればWM_KEYDOWNの残りの処理に戻るだろ。
第一、戻らないと困るだろ。
0615デフォルトの名無しさん2010/05/06(木) 22:33:10
>>614
たしかな根拠があるのか?
0616デフォルトの名無しさん2010/05/06(木) 22:34:25
gotoじゃねぇよ
イベントドリブンだ
どっちが半端な知識なんだろうね
0617デフォルトの名無しさん2010/05/06(木) 22:36:12
人に聞かずにspy++用いて試せば分かるんじゃねーの?
0618デフォルトの名無しさん2010/05/06(木) 22:41:22
メッセージ送信、受信のスケジューリングは保障されていない
OSによる挙動が変わる可能性もある
0619デフォルトの名無しさん2010/05/06(木) 22:46:18
603ですがこんなの書いて試してみました
http://codepad.org/iZGdWEcN

"bar" が表示されるのは "UpdateWindow() start" と "UpdateWindow() end" の間だけなので、
どうやら UpdateWindow() はブロックするみたいですね。
WM_PAINT のハンドラ内で Sleep() した場合も "UpdateWindow() start", "UpdateWindow() end" の表示間隔が
明らかに長くなるので、たぶんブロックするのは間違いないんじゃないかと思います。

もしかしたら>>618さんの仰るように環境依存なのかもしれないですけど、
ブロックする環境がある以上は一応それを考慮しようと思います。色々ありがとうございました。
0620デフォルトの名無しさん2010/05/06(木) 22:47:39
>>619のコードが一部抜けちゃいましたが
グローバル変数として
const char* p = "foo";
と最初に定義しています。
0621デフォルトの名無しさん2010/05/06(木) 22:55:24
>>616
いつから gotoになったんだって一文がどういう意味かわからないのか
どっちが半端な知識なんだろうね、じゃねぇよびっくりするぐらい頭悪いなお前
0622デフォルトの名無しさん2010/05/06(木) 22:59:04
あまりにもレベルが低すぎて文章を解読できませんでした
0623デフォルトの名無しさん2010/05/06(木) 23:15:00
いろいろ交錯しているけれど、最初に戻ってみれば単純な事。
>>604はびっくりするほど頭が悪い。これが真実。
0624デフォルトの名無しさん2010/05/06(木) 23:21:41
>>619
614ですが、
ブロックなんていう問題か?
自分でメッセージキューから一個一個取り出して処理してる最中だからだろ。
(UpdateWidow()はキューを通さない)
0625デフォルトの名無しさん2010/05/06(木) 23:26:56
>>624
MSDNにもありますが「キューを通さない」というのがどういう意味なのかよくわからなかったんです。
Windowsのメッセージキューについてはあまりよく知らなかったので。

WM_PAINTの処理が終わるまでブロックするのか、メッセージキューの先頭にWM_PAINTを割り込ませるのか、
それとも別にスレッドを作って処理するのか、などと考えてました。
0626デフォルトの名無しさん2010/05/07(金) 00:43:13
キューにある WM_KEYDOWN を引っ張ってきて CALLBACK 開始
 CALLBACK内
  UpdateWindow() 呼ぶ
 CALLBACK終了
次にキューに溜まっているメッセージを引っ張ってくる

キューを通す場合:
キューにある WM_KEYDOWN を引っ張ってきて CALLBACK 開始
 CALLBACK内
  UpdateWindow() のようなものを呼ぶ → キューに WM_PAINT を割りこます
  (PostMessageみたいなもの)
 CALLBACK終了
次にキューに溜まっているメッセージである WM_PAINT を引っ張って CALLBACK 開始

キューを通さない場合:
キューにある WM_KEYDOWN を引っ張ってきて CALLBACK 開始
 CALLBACK内
  UpdateWindow() のようなものを呼ぶ
   お膳立てして CALLBACK を再帰呼び出し
   CALLBACK内(2)
    <WM_PAINT 処理>
   CALLBACK終了(2)
 CALLBACK終了

おおざっぱにこう違う
0627デフォルトの名無しさん2010/05/07(金) 01:09:33
WM_PAINTは「sent」されるので、その説明はダメ。
0628118 ◆4BcWhWACFc 2010/05/07(金) 01:14:02
sentされる、ってなんだよw
0629デフォルトの名無しさん2010/05/07(金) 01:36:16
>>118
日本語版msdnしか読まない馬鹿は引っ込んでろ。
06301182010/05/07(金) 02:28:00
呼んだ?
06311182010/05/07(金) 04:45:31
>>629
うわあ
0632デフォルトの名無しさん2010/05/07(金) 07:42:29
gccしかしらないアホがいます
0633デフォルトの名無しさん2010/05/07(金) 08:02:35
答えているのを見ると
それをバカにして自分があたかもそいつより上だという優越感にひたりたいです
0634デフォルトの名無しさん2010/05/07(金) 20:09:02
私は選ばれし者です
下等生物のあわれなやりとりを見ているととても胸がスーッとし
自分より以下の存在を確認することによって自分の存在がとても尊いものだと認識させられます
0635デフォルトの名無しさん2010/05/07(金) 21:20:01
具体的な話だけをチョイスして読んで、あとは気になるレスをヒントに自分で掘り下げて
実験するようにすれば脂身の多いスレであっても正解に辿り付けるから大丈夫
0636デフォルトの名無しさん2010/05/07(金) 21:43:13
ツールチップが表示された後に、キー入力とかが在ったら
表示したツールチップを消したいんだが、ShowWindowで消すのは駄目だよね?
TTN_POPとか受け取りたいから、うまい消し方在ったら教えてください
0637デフォルトの名無しさん2010/05/07(金) 22:00:55
>>636
TTM_POP
0638デフォルトの名無しさん2010/05/07(金) 22:32:18
>>637
有難うございます。解決しました
0639デフォルトの名無しさん2010/05/07(金) 23:10:59
一つのウィンドウ上に、別のウィンドウが重なっているかを
スクリーン座標から判定したいんだが
簡単に判別する方法無いかな?
UnionRectとか使ってみたけど、どうもうまくいかない
0640デフォルトの名無しさん2010/05/07(金) 23:12:49
>>634
かもめのジョナさん
0641デフォルトの名無しさん2010/05/07(金) 23:14:13
>>639
どっかで同じ質問してる香具師がいたな
マルチか
0642デフォルトの名無しさん2010/05/07(金) 23:18:45
>>581じゃねーの
0643デフォルトの名無しさん2010/05/07(金) 23:27:33
Zオーダーとスクリーン座標の両方を調べないと、重なっているかどうかはわからないのでは
0644デフォルトの名無しさん2010/05/07(金) 23:33:05
>>643
それだけじゃまだ不足
0645デフォルトの名無しさん2010/05/07(金) 23:38:41
カンマ付き数値 123,456みたいにするAPIを教えてください。
0646118 ◆4BcWhWACFc 2010/05/07(金) 23:44:35
wsprintf()
0647デフォルトの名無しさん2010/05/07(金) 23:46:17
>>646
あれー?
それでできるんですか!!
すんまんせん。書式はどうやって書けばいいのですか・・・
06481182010/05/07(金) 23:51:21
>>646
wsprintf()ゎ遅い
0649デフォルトの名無しさん2010/05/07(金) 23:53:08
んじゃ軽くてカンマ付き数値できるAPIをさっさと教えて
0650デフォルトの名無しさん2010/05/07(金) 23:54:51
cout
0651デフォルトの名無しさん2010/05/07(金) 23:57:14
知らないならレスするなよクズ
0652118 ◆4BcWhWACFc 2010/05/08(土) 00:00:03
あれ。wsprintf() じゃダメだっけか?
06531182010/05/08(土) 00:04:13
>>649
char *konma3(int m)
{
char s[274];
char e[277];
wsprintf(s, "%d",m);
m=0;
while(*s){
*e++=*s++,m++;
if (m%3) *e++=',';
}
return e;
}
0654デフォルトの名無しさん2010/05/08(土) 00:05:35
>>639
使うならUnionRectじゃなくて、IntersectRectじゃないのか?
0655デフォルトの名無しさん2010/05/08(土) 00:05:52
GetNumberFormat()
0656デフォルトの名無しさん2010/05/08(土) 00:07:46
軽くはないけど>>645のためのAPIって無かったっけ?
言語設定に従ってフォーマットするやつ。
0657デフォルトの名無しさん2010/05/08(土) 00:13:40
wsprintfでできれば一番いいんだけど

簡単なのない?
0658デフォルトの名無しさん2010/05/08(土) 00:14:39
GetNumberFormatもめんどくせえなあ
0659デフォルトの名無しさん2010/05/08(土) 00:37:47
早く教えろよ
0660デフォルトの名無しさん2010/05/08(土) 01:38:16
あるウィンドウ(A)にアクセラレータキーを設定し、
Aが最前面に無い状態で設定したキーが押されても
Aで受け取って処理出来るようにするには、
キーボードフックしか方法はありませんでしょうか?
0661118 ◆4BcWhWACFc 2010/05/08(土) 01:51:35
最前面 != フォーカスを持っている、だから、フォーカスさえ持ってれば
処理できるよ。

フォーカスがない、ってことであれば、ホットキーかフック。
0662デフォルトの名無しさん2010/05/08(土) 01:58:28
>>660
while(1)でキー監視したり
RegisterHotKeyで登録したりかな
06636602010/05/08(土) 02:04:41
最前面とフォーカスを勘違いしていたようです。
RegisterHotKey()を試してみたいと思います。

わかりやすいご説明ありがとうございました。
0664デフォルトの名無しさん2010/05/08(土) 03:35:08
NSISとinno Setupのスレッドありませんか
06651182010/05/08(土) 03:35:43
>>661

得意げに !=←使うやつってなに?
俺Cとかできるの、すごいでしょ!ってアピールしてんのw
0666デフォルトの名無しさん2010/05/08(土) 04:21:33
Cは業界標準なので。趣味じゃないので。
0667デフォルトの名無しさん2010/05/08(土) 04:44:59
屁が出る
06681182010/05/08(土) 05:32:10
>>667
orz=3
0669デフォルトの名無しさん2010/05/08(土) 07:57:24
≠のほうが分かりやすい
06701182010/05/08(土) 08:07:59
!=よりこっちががわかりやすいです><

10 IF 1<>2 THEN GOTO 0
0671デフォルトの名無しさん2010/05/08(土) 08:11:33
!=がわかりやすい
06721182010/05/08(土) 08:32:36
>>671

絶対わかりにくい。


10 A=10:B=5
20 IF A!=10 THEN B=A
30 PRINT B
RUN
10
OK
■
0673デフォルトの名無しさん2010/05/08(土) 08:32:39
私は選ばれし者です
!= という記号を使っている低俗な愚民どもを見るのは
私の理想論からおおきくはずれ、おろかな記号表現は滅されるべきだ
0674デフォルトの名無しさん2010/05/08(土) 09:03:38
<>と!=が同じ意味のPHPは空気の読める子
0675デフォルトの名無しさん2010/05/08(土) 09:14:03
A.exe (GUIアプリ:他人作成) から
B.exe (コンソールアプリ:自分作成) が起動される仕組みになっていて、
A.exe とのやりとりに B.exe の標準入出力が占有されている場合
B.exe 側が単独でコンソールウィンドウを開いて文字出力する方法を教えてください。
0676118 ◆MNk6ialHnk 2010/05/08(土) 10:47:24
AllocConsole関数のリファレンスを見る限り無理じゃない?
06776752010/05/08(土) 11:26:20
>>676
そうですか。
ウィンドウを生成して(リッチ)エディットコントロールの利用を検討してみます。
ありがとうございました。
0678デフォルトの名無しさん2010/05/08(土) 11:37:17
別にウインドウ作るよりは単独でコンソールウィンドウ開く方が簡単そうに思うけど
0679デフォルトの名無しさん2010/05/08(土) 11:38:49
不可視での起動方法を聞いた>>585です。
無事にStartupInfoを使って不可視での起動が出来ました。

ありがとうございました。
0680デフォルトの名無しさん2010/05/08(土) 15:35:38
>>677
別にコンソール作らんでも、使われてないコンソールを使えば?
CONをOpenFile

>>679
非表示のことだったの
0681デフォルトの名無しさん2010/05/08(土) 17:14:20
スレッドAが変数iをインクリメントして、スレッドBがそれを読み取る場合、InterlockedIncrement()は必要ですか?
素人考えでは、インクリメント中にスレッドBがiを読んだとしても、
読み取られる値はiまたはi+1にしかならないはずなので、普通に++iで問題ないだろうと思ったのですが
0682デフォルトの名無しさん2010/05/08(土) 17:24:46
べ、べつにウィンドウを登録するなっ!
なんて言ってないんだからねっ!!
0683デフォルトの名無しさん2010/05/08(土) 17:29:07
どうしたの?
0684デフォルトの名無しさん2010/05/08(土) 17:52:11
>>681
その条件で、その値に関してだけなら問題無い。
スレッドBからアウトオブオーダーに絡むような参照をするなら話は別だけど。
例えば、iが+1されているなら、どこどこの変数は既に更新済みのはず、とか。
0685デフォルトの名無しさん2010/05/08(土) 18:29:40
>>684
マルチスレッドど素人なので、いろいろ調べてきました
InterlockedIncrement()はメモリバリアを生成するってMSDNに書いてありますね。

スレッドAで
hoge=1; ++i;
みたいなことをすると、書いた順番に実行されるとは限らないから、hogeをスレッドBで参照するのはまずい、ということでしょうか。
それだと多分まずそうなので、InterlockedIncrement()を使うことにします。ありがとうございました。
06866752010/05/08(土) 19:12:50
>>678
>>680
>>682も?
CreateFileでCONOUT$を指定してハンドルを取得し
WriteFile/WriteConsoleを利用することで
希望通りの動作をさせることができました。
ありがとうございました。
0687デフォルトの名無しさん2010/05/08(土) 19:52:40
ファイルの存在を調べたいんだけど、
fopen_s で開いて開けたらOKってしてたら、
別プロセスでロックされているとエラーが返ってきてしまいました。

何とかOKで返すロジックを組みたいんですが、
何かいいAPIなり応用なりを教えてエロい人!!
0688デフォルトの名無しさん2010/05/08(土) 20:01:31
FindFirstFile
0689デフォルトの名無しさん2010/05/08(土) 20:03:53
>>687
PathFileExists
0690118 ◆X4wDaRuYzw 2010/05/08(土) 20:05:10
PathFileExists
06916872010/05/08(土) 23:06:43
>>688
なるほど、Find系APIもあった!

>>689, 690
PathFileExists!shlwapi.h は見なかったなぁーthx!!
0692デフォルトの名無しさん2010/05/09(日) 01:49:50
VS2008にてマウスの右クリックをフックするプログラムを作成しています。

SetWindowsHookEx()を使用してWM_MOUSEをフックするDLLを作成し、
作ったアプリはWindows7では特に問題無く動作しますが、XPでは実行ファイルから起動すると
画面がフリーズしたような状態になりログオフするまで直りません。

ただし、XPにてVSのメニュー、デバッグ開始またはデバッグなしで実行から
起動した場合、なぜかフリーズしたような状態にはなりません。

何が原因なのでしょうか?
正直Windows7を今後メインで使うから別にいいじゃんと逃げたくなってきていますが・・・
0693デフォルトの名無しさん2010/05/09(日) 03:42:46
7専用アプリでいいよ
どうせ俺は使わないし
0694デフォルトの名無しさん2010/05/09(日) 07:31:59
>>692
7専用でいいよ
XPだけど使わないから
0695デフォルトの名無しさん2010/05/09(日) 09:11:27
>デバッグ開始またはデバッグなしで実行から
>起動した場合、なぜかフリーズしたような状態にはなりません

リリースとの構成の違いをつぶさに観察してみるとか、
あとあほみたいだけど、OSに処理返してる所がちゃんと書かれてるかも一応流れ確認するとか
0696デフォルトの名無しさん2010/05/09(日) 09:46:48
バグがあるプログラムが特定の条件下でまぐれで動く事は良くある事。
そんな常識もしらない素人が作るプログラムは他人は使わないから、7専用でいいよ。
0697デフォルトの名無しさん2010/05/09(日) 09:52:22
VSから起動って、Release版でもそうなるのか?
0698デフォルトの名無しさん2010/05/09(日) 11:24:44
>692
多分Lunaのバグが原因。
06996922010/05/09(日) 12:27:24
>697
Release版でもDebug版でも実行ファイルから起動するとフリーズ状態になります。
VS経由じゃなくても、例えばOllyDbg等のデバッガ経由して起動した場合問題無い

>697
何らかのバグがあるのは分かりきっていますが、
意図通りに動く条件がこれまで見たことが無いものなのでバグの特定方法が分からず
アドバイスを求めました・・・
0700デフォルトの名無しさん2010/05/09(日) 12:46:25
真面目にそれはちょっとソース見ないとわからないかも
いやマジで
0701デフォルトの名無しさん2010/05/09(日) 12:53:55
メモリ破壊してるのかもしれない
Win7使ったりデバッガ経由したりしたら
XP直とは多少メモリの配置が変わって
問題なくなるとか
07026922010/05/09(日) 13:45:39
原因は依然分かりませんが、逃げる方法だけは見つけました。
フックをかけるところで下記のようにWH_MOUSEのみをフックしていましたが、

::SetWindowsHookEx( WH_MOUSE
, (HOOKPROC)CMouseHook::MouseProc
, GetThisHInst()
, 0 );

WH_GETMESSAGEをフックするように変更し、
プロシジャーのなかで右クリックイベントの判定を行うように変えたらフリーズは
無くなりました。

とりあえずこれで問題無くなりましたが、根本原因が分からず気持ち悪いです・・・
0703デフォルトの名無しさん2010/05/09(日) 14:31:46
現象が再現できる最小のコードを見つけるといいよ
0704デフォルトの名無しさん2010/05/09(日) 16:39:38
早く教えてくれ
0705デフォルトの名無しさん2010/05/09(日) 17:05:16
>>704
>>700
0706デフォルトの名無しさん2010/05/09(日) 17:24:01
>>701
FTHはまぢいらねー
なんであんな機能増やした
0707デフォルトの名無しさん2010/05/09(日) 17:26:57
ぐだぐだほざいてねーでさっさとおしエロよ
0708デフォルトの名無しさん2010/05/09(日) 17:28:33
FTHってなんだ
0709デフォルトの名無しさん2010/05/09(日) 17:30:58
Fault Tolerant Heapだろ
Windows7から入ったメモリ破壊監視機構
0710デフォルトの名無しさん2010/05/09(日) 17:35:44
これか
ttp://re-thinkthings.spaces.live.com/Blog/cns!1C5AE98DA3645F42!732.entry
0711デフォルトの名無しさん2010/05/09(日) 17:58:27
すげぇけど無駄な機能
0712692 ◆CIlmPyxysI 2010/05/09(日) 18:06:55
Fault Tolerant HeapをDisableにしてみましたが、Win7では意図通りに動きました。
Vistaでも動いたからこれが直接の原因ではないようです。
メモリ破壊の可能性はまだ否定できませんが・・・

ちなみに704と707は自分ではないです
0713デフォルトの名無しさん2010/05/10(月) 03:36:33
ネットで他人の書いたコードを見てると

::MessageBox()

みたいにコロン2つを付けてることがありますが、これはどういう意味なんでしょうか?
大域関数だよ、ってことを明示したいってだけですか?
0714デフォルトの名無しさん2010/05/10(月) 03:59:33
>>713
MFCで大域関数じゃないMessageBox()があるんだ・・・
0715デフォルトの名無しさん2010/05/10(月) 05:03:39
>>714
MFCですか!使ったことないので全然気付きませんでした。ありがとうございます。
今後使うハメになるかもしれないので、一応コロン付ける習慣をつけておこうと思います。
0716デフォルトの名無しさん2010/05/10(月) 05:34:02
あるいはVisual Studioのインテリセンスなど補完機能使うために::を打っているという場合もある。
0717デフォルトの名無しさん2010/05/10(月) 06:20:19
>>714
迷惑な話ですね
0718デフォルトの名無しさん2010/05/10(月) 07:31:54
引数の数が違うけどな。
普通はAfxMessageBoxの方を使うし。
07191182010/05/10(月) 20:16:48
なんで足フェチは足を舐めるんだろう
手フェチは手を舐めるんだろうか
鼻フェチは鼻をなめるんだろうか

足フェチだけじゃね?
舐める欲求が強いのわ
0720デフォルトの名無しさん2010/05/10(月) 20:35:11
俺は指なめられるの好き
0721デフォルトの名無しさん2010/05/10(月) 20:35:47
ナデナデシテー
0722デフォルトの名無しさん2010/05/10(月) 21:29:42
放置プレイフェチは放置を舐める
0723デフォルトの名無しさん2010/05/12(水) 17:56:26
UDP通信なんだけど、1つのPCでソフトを2つで同じポート使って
通信ってできますか?
当然ながら後に立ち上げたソフトはポートのオープンに失敗するんですが
0724デフォルトの名無しさん2010/05/12(水) 17:59:20
Windows7 64bitの環境で動作するDirectShow/MediaFoundation対応の
メディアプレイヤーを作ろうとして、下調べをしているのですが、
.tsや.flv/.swfを再生させるTopology/Filtergraphの構築方法がわかりません。

topoedit/grapheditどちらでもグラフが構築できないようです。
WMPは何をやって再生しているのでしょうか?
0725デフォルトの名無しさん2010/05/12(水) 18:25:19
>>723
Loopback Adapterの追加でやれた気がするけど詳細忘れた
名前を変えて複数入れるとかだと思う
0726デフォルトの名無しさん2010/05/12(水) 18:40:08
>>723
IPアドレスを追加しる
07271182010/05/12(水) 23:23:40
>>726
IPアドレスになってオマエの家に忍び込みたいヨォぉ
0728デフォルトの名無しさん2010/05/13(木) 09:37:47
>>725-726
普段は2台のPCで親、子のソフトで通信してますが
これを1台のPCで親と子ソフトを起動して通信させたいのですが
07297262010/05/13(木) 09:41:51
>>728
俺はもう面倒だから回答しないけど
だれか親切な人が教えてくれるだろう
0730デフォルトの名無しさん2010/05/13(木) 09:42:54
>>723
>1つのPCでソフトを2つで同じポート使って通信ってできますか?
無理
0731デフォルトの名無しさん2010/05/13(木) 09:46:45
分からないなら答えないでください
うざいだけです
0732デフォルトの名無しさん2010/05/13(木) 09:52:41
>>729-731
知らないならレスしないで下さいよ。

最近知ったかが多くて困る
0733デフォルトの名無しさん2010/05/13(木) 10:00:06
ポートが1234だとして
127.0.0.1:1234
と
192.168.xx.xx:1234
で通信出来ないか?
0734デフォルトの名無しさん2010/05/13(木) 10:15:14
>>733
socketで作成したハンドルをバインドする時にすでにポートが他で開かれていたらエラーになるんですが・・・
他のやり方するんですか?
0735デフォルトの名無しさん2010/05/13(木) 10:21:37
分からないなら質問しないでください
うざいだけです
0736デフォルトの名無しさん2010/05/13(木) 10:21:43
先にワイルドカードでバインドされたポートでも、IPアドレス指定すればバインド出来る。
0737デフォルトの名無しさん2010/05/13(木) 10:25:49
>>735
みもふたもないこといわないでよ><

>>736
何やら光が見えてきそうです。
すんません。ワイルドカードでバインドはどうやってやるんですか?
0738デフォルトの名無しさん2010/05/13(木) 10:47:26
>>736
ワイルドカードってIPのことですよね?
何かサックリできた気がしますが、
あとにワイルドアレを指定して開いてもbindでエラーにならなかったですが

>>733
すんません。意味わかりました。
bindするときってアドレスはANY指定だったんですが
これが重要だったんですね。これをアレしたらできました。

0739デフォルトの名無しさん2010/05/13(木) 11:12:42
あ、よくよく考えたら重要な問題がww
これ確かに先に127.0.0.1の1234でアレして、
次に192.168.1.10の1234でアレはうまくいったのですが
これsendtoすると自分で取っちゃうつーアレが・・・
うーん、この辺の仕組みってどうすれば・・・
0740デフォルトの名無しさん2010/05/13(木) 11:13:05
>>736は嘘だった。忘れて。
0741デフォルトの名無しさん2010/05/13(木) 11:16:48
>これsendtoすると自分で取っちゃうつーアレが・・・
だから無理だって言ってるだろ
0742デフォルトの名無しさん2010/05/13(木) 11:20:17
>>740
でもヒントになったありがとう

>>741
いや、できますた。
127.0.0.1でアレした方は192.168.1.10に送信し
192.168.1.10でアレした方は127.0.01にアレしたらあっさりでけますた。
もしやとおもってやてみたけどできてよかた。

っていうか、この方法なら従来のロジックを変えることなくできるからこれいいわあ〜
あー、こんな方法があったなんて知らなかったほんとみんなありがとう。
0743デフォルトの名無しさん2010/05/13(木) 11:20:38
面倒臭いから一方を仮想マシンの中で実行しなよ。
0744デフォルトの名無しさん2010/05/13(木) 11:26:17
>>743
そうやって逃げてばかりじゃダメなんだって!!

つーか、更に問題発生
ブロードキャストがうまくいかん
127.0.0.1の方はブロードキャスト受け取れないどうしよう
0745デフォルトの名無しさん2010/05/13(木) 11:34:12
解決策?
�@ブロードキャストされたデータを受け取ったら127.0.0.1宛てにコピーして送信
�ANICを2枚挿してリンクローカルじゃないプライベートアドレスを2つ作る
�B諦める
0746デフォルトの名無しさん2010/05/13(木) 11:43:27
SO_REUSEPORT
0747デフォルトの名無しさん2010/05/13(木) 11:44:01
>>745
�@PC1台で2つソフトをアレしてはいますが、更に他にPCあってそっちにも子ソフトがいるので
 これやっちゃうと、数人が127.0.0.1に送ることになるのでNG
�Aハード的な対策はNGなんですよ・・
�B(´・ω・`) ショボーン

っていうか、今回に限り127.0.0.1は親としアレすると
ブロードキャストは受けなくても問題はないから諦めるって方向になりますが
(親はブロードキャスト出すだけなので)
子は出すし受け取るので今回のアレではアレです。

しかしながら今回の実験で同じPCで同ポートアレができることがわかったのは大収穫です。
ほんとありがとう
0748デフォルトの名無しさん2010/05/13(木) 12:18:12
スレチ
0749デフォルトの名無しさん2010/05/13(木) 12:42:50
自分がバカだってことを全世界に晒してしまって、おかしくなってるんでしょう。
0750デフォルトの名無しさん2010/05/13(木) 13:40:38
知らないくせに煽る事しかできない馬鹿に言われたくねえww
0751デフォルトの名無しさん2010/05/13(木) 13:42:25
知ってるくせに解決できないキチガイに言われたくねぇww
0752デフォルトの名無しさん2010/05/13(木) 13:43:28
お前のついてけない話題になったからって僻むなよ
みっともねー奴だなあ
0753デフォルトの名無しさん2010/05/13(木) 13:44:27
いいから黙れ馬鹿共。スレチだっつってんだろksg
0754デフォルトの名無しさん2010/05/13(木) 13:46:06
仮想NICでアレコレ手を考えてた俺
07557552010/05/13(木) 15:22:27
アイコンエディターを作りたいんですが、
編集した画像をどうやってアイコンファイルとして作成できるんですか?
なんか便利なAPIが用意されてたりするんでしょうか?
0756デフォルトの名無しさん2010/05/13(木) 15:27:10
機能自体はGDI+にあるはず
0757デフォルトの名無しさん2010/05/13(木) 17:53:20
>>747が>>723>>118と同一人物として
 文面からしか判断できないので間違っている可能性の方が高いが,,,
もう少し他人の労力に対して感謝の意を表す努力をした方が良い。
あなたがどの程度の前提や考察をしたうえで、質問をしているかは
読み手には書いてあること以上は判らない。

 前後のやり取りを見るとそれなりの知識はあるようだが、あなたの質問に対して
100%最適化された答えが返ってくる保証もなければ、その前提となる条件が
全て明示されている訳でもない。

 個々の使用条件でも、どの性能を優先するかによって構成や安全率の
取り方は変わってくる。
論理上無駄でも、安全や人間の犯しやすいミスに対する保険などに対する考え方
の違いで設計が変わったとしても何の不思議も無い。

 実際の設計は、あなたが考えているほど単純明快ではないよ。
0758デフォルトの名無しさん2010/05/13(木) 17:54:36
>>757
遅レスでしつこいですね。
0759デフォルトの名無しさん2010/05/13(木) 18:07:03
↑この辺のバカは別人だと思う
07601182010/05/13(木) 19:05:21
             /)
           ///)
          /,.=゙''"/   
   /     i f ,.r='"-‐'つ____   こまけぇこたぁいいんだよ!!
  /      /   _,.-‐'~/⌒  ⌒\
    /   ,i   ,二ニ⊃( ●). (●)\
   /    ノ    il゙フ::::::⌒(__人__)⌒::::: \
      ,イ「ト、  ,!,!|     |r┬-|     |
     / iトヾヽ_/ィ"\      `ー'´     /
0761デフォルトの名無しさん2010/05/13(木) 22:17:57
PCに接続されているusbカメラの名前を
全て取得したいのですが、どのような関数を使えばいいのでしょうか?
どなたか分かる方おられましたらよろしくお願いします。
07621182010/05/13(木) 22:33:51
>>761
SetupDiEnumDeviceInterfaces
0763デフォルトの名無しさん2010/05/13(木) 22:35:15
EnumlateConnectedByUsbOnMyPersonalComputer
じゃダメかしらん?
0764デフォルトの名無しさん2010/05/13(木) 22:35:39
nagee-----------------
0765デフォルトの名無しさん2010/05/13(木) 22:42:06
何のジョークかと思った
07667612010/05/13(木) 22:49:56
>>762
>>763
ありがとうございます!
早速使い方を調べて使ってみたいと思います。

EnumlateConnectedByUsbOnMyPersonalComputer
もググって調べてみたのですが、ヒットしませんでした。
色々調べてみます。
0767118 ◆X4wDaRuYzw 2010/05/13(木) 22:54:58
enumerate だし。
0768デフォルトの名無しさん2010/05/13(木) 23:25:36
なんだジョークなのか
07691182010/05/13(木) 23:39:58
おめエラーうぜええええええええ
審問に答えないカスどもどっかいけよ!!!!!!!!
雑談はなれ合いはラウンジでやれーーーーーー
マイタじゃねえんだよここゎ
ボケがえ^^^^^^^^^
沢村以下だな
!
0770デフォルトの名無しさん2010/05/13(木) 23:41:27
だれ猫(第44講座)そのままコピってコンパイルしてたんだが、
brc32 sdk44.rc sdk44.exe
を実行すると
Error sdk44.rc 10 42: Expecting END
って出る。brc32ではリンクしてくれない場合があるらしいから
brcc32からやってみたが、同じエラーが出る。
リソースファイルは以下
06MYPOPUP MENU DISCARDABLE
07BEGIN
08 POPUP "表示されません"
09 BEGIN
10 MENUITEM "終了\tShift + Ctrl + X", IDM_END
11 POPUP "オプション"
12 BEGIN
13 MENUITEM "猫の絵\tF1", IDM_CAT
14 MENUITEM "犬の絵\tF2", IDM_DOG
15 MENUITEM "ネズミの絵\tF3", IDM_RAT
16 MENUITEM "消去\tEsc", IDM_CLR
17 END
18 END
19END
ヘッダーは、
#define IDM_END 100
(以下省略)
聞きたいのは、1) brc32が悪いのか、だれ猫の間違いなのか?
2) きちんとリンクできる別の方法はあるか?(統合環境を使うなど)
0771デフォルトの名無しさん2010/05/13(木) 23:44:08
沢村懐かしいな
お前そんな頃からいるのかよ
0772デフォルトの名無しさん2010/05/13(木) 23:45:35
ヒント: 118は一人ではない
0773デフォルトの名無しさん2010/05/14(金) 00:33:23
>>770
>Error sdk44.rc 10 42: Expecting END
そのエラーはIDM_ENDが未定義だから
rcの冒頭でIDM_〜をdefineしたhをインクルードしましょ

>1)
ttp://www.6809.net/tenk/html/prog/bcc55fre.htm
TurboC無料版に付属していたbrc32はリンクが出来なかった記憶がある
>brc32
でバージョン確認してみて

>2)
出来るのが普通だよ。
Win環境ならVC++EEにResEditでいいんじゃないかな。
0774デフォルトの名無しさん2010/05/14(金) 11:28:59
ビットマップについて質問させてください。
16ビットのビットマップを作成しました。
これに対して、赤色(255,0,0)のブラシとペンでRectangleで描画したとします。
このときピクセルにセットされるのはメモリを見ると007Cでした。
この値を描画する前に知る手段はあるのでしょうか?
自前で計算と思ったのですが、16ビットで描画されるとき
RGBが555なのか565なのか変わる場合があるのか自分にはわからないので
質問させていただきました。
0775デフォルトの名無しさん2010/05/14(金) 12:08:07
777
0776デフォルトの名無しさん2010/05/14(金) 12:12:01
自分でビットマップを作成したので、BITMAPINFOHEADERについて
もう少し調べた方がよさそうです。失礼しました。
0777デフォルトの名無しさん2010/05/14(金) 12:12:57
777
0778デフォルトの名無しさん2010/05/14(金) 13:56:08
777
0779デフォルトの名無しさん2010/05/14(金) 15:17:17
そろそろUDPでsrcポートとdstポートを逆にして送る方法教えてくれよ
0780デフォルトの名無しさん2010/05/15(土) 20:10:06
C++ の本かって、WinMain とウインドープロシージャの構成、主にWin32プログラムを見ながら勉強しております。
フォーム上のボタンをおしたら、リストボックスに処理結果等の文字列を表示させたいと考えています。
ボタンを押したらというのは、 そこで、メッセージを拾えばいいと思うのですが、リストボックスに表示させるには具体的にどうやればいいのでしょうか?また、こういったPGは、MFC等を使うのが、一般的なのでしょうか?
0781デフォルトの名無しさん2010/05/15(土) 20:13:47
GetWindowText(hEdit, szBuf, 64);
SetWindowText(hEdit, "");

こんなんでよければ
0782デフォルトの名無しさん2010/05/15(土) 20:17:34
>>781 にプラスして、さらにこんなサイトを見れば
http://wisdom.sakura.ne.jp/system/winapi/win32/index.html
0783デフォルトの名無しさん2010/05/15(土) 20:23:40
GUIアプリ作りたかったらC#にしようぜ
今からC++&Win32APIなんてマゾすぎる
0784デフォルトの名無しさん2010/05/15(土) 20:31:04
RES ありがとうございます。

私は、VB等ならわかりますが、C#は使ったことがありません。

やりたいことは、Windowsが用意しているDLL 内の関数を使って、制御したり
するプログラムです。ただし、Windows のフォームアプリとして作りたいと
思っています。例えば、外部から、そのデバイスに接続があれば、フォーム上で通知したり、フォーム上のテキストボックスに入れた値を用いて、デバイス
に値を渡して、通信させるといったプログラムです。

こういったPGの場合、vb とC#を比べた場合どちらが優れているでしょうか?
0785118 ◆X4wDaRuYzw 2010/05/15(土) 21:04:09
どちらにせよスレ違い。VB or C#スレに行け。
0786デフォルトの名無しさん2010/05/15(土) 21:20:50
>>784
Windowsが用意しているwin32API関数群を使って何かしたい、
そしてウィンドウはフォーム(ダイアログ)形式でって話ならば、例えば
Visual C++ 2008 Express か、 2010 で、かつ フリーウェアの ResEdit を使って
ダイアログとして作ってしまうって手がある。 CreateDialog 関数を使って基本的なウィンドウを作り、
コントロールをリソースとして配置してしまえば、若干コーディングを省略できて、かつ GUI で各種コントロールを配置できて楽。

ちなみに、C# や VB で win32APIを呼び出す事も出来るけど、そんな事するくらいなら
上記方法で VC++ 使ってやっても特に難しい事は無いぜ。 ・・・ただし C++ が普通に理解出来ている事が大前提だけど
0787デフォルトの名無しさん2010/05/15(土) 22:51:43
>>786
> フリーウェアの ResEdit を使って
>ダイアログとして作ってしまうって手がある。 CreateDialog 関数を使って
>基本的なウィンドウを作り、
>コントロールをリソースとして配置してしまえば、若干コーディングを省略>できて、かつ GUI で各種コントロールを配置できて楽。

貴重な実践的なテクニックについて教えてもらい感謝です。


>ちなみに、C# や VB で win32APIを呼び出す事も出来るけど、そんな事する>くらいなら
>上記方法で VC++ 使ってやっても特に難しい事は無いぜ。 


VB,VC比較した、開発のイメージがなんとなくつかめました。
0788デフォルトの名無しさん2010/05/17(月) 11:09:43
SetEvent(),ResetEvent()でシグナル、非シグナル状態に変更しています。
今、カーネルオブジェクトがシグナルか非シグナルの状態を取得する方法ってどうすればいいでしょうか?
0789デフォルトの名無しさん2010/05/17(月) 11:13:33
WaitForSingleObject
07907882010/05/17(月) 11:27:35
>>789 返信ありがとうございます。

こういう感じでしょうか?
DWORD nRet = WaitForSingleObject(hSignal,0);
if(nRet == WAIT_OBJECT_0) {
  //シグナル状態
}
else if(WAIT_TIMEOUT) {
  //非シグナル状態
}
0791デフォルトの名無しさん2010/05/17(月) 11:30:49
それで合ってる
0792デフォルトの名無しさん2010/05/17(月) 11:42:00
>>791
ありがとうございました。
0793デフォルトの名無しさん2010/05/17(月) 14:15:25
Windows7でウィンドウがスナップしてるかどうかって、どうやって調べるんでしょうか?
また、ウィンドウをプログラム側からスナップさせるにはどうすればいいんでしょうか?
検索してみたけどユーザー向けの説明か、無効にする方法ばかりで・・・
0794デフォルトの名無しさん2010/05/17(月) 14:19:42
むり
0795デフォルトの名無しさん2010/05/17(月) 15:08:37
つーかスナップって何のこと?
0796デフォルトの名無しさん2010/05/17(月) 15:13:07
>>795
ウインドウをドラッグして・・・
 マウスカーソルを画面上端へくっつける 最大化する
 マウスカーソルを画面右端へくっつける ウィンドウが画面右半分のサイズになる
 マウスカーソルを画面左端へくっつける ウィンドウが画面左半分のサイズになる

ウィンドウの端をドラッグして・・・
 マウスカーソルを画面上端・下端へくっつける 縦方向だけ最大化する

それぞれの状態から、ウィンドウをドラッグして動かすと元のサイズに戻る

 
0797デフォルトの名無しさん2010/05/17(月) 15:13:30
下げ忘れた…
0798デフォルトの名無しさん2010/05/17(月) 15:47:32
ありがとう
要するに7の機能なのね
利点がさっぱり判らんけど
0799デフォルトの名無しさん2010/05/17(月) 16:51:42
スナップと言うとウィンドウが画面端に吸い付くのを指すと思っていたが
7だとなんかよくわからん機能になってるんだな
0800デフォルトの名無しさん2010/05/17(月) 18:32:18
そういうのって隠しスタイルビットとか立ってるんじゃね?
spyで調べるとか
0801デフォルトの名無しさん2010/05/17(月) 19:05:14
ShowWindowにフラグ追加してくれればよかったのにな
0802デフォルトの名無しさん2010/05/17(月) 23:56:05
GetCurrentHwProfile()で取得できるGUIDは実行する毎に値が変わりますか?
08037932010/05/18(火) 02:34:36
>>800
残念ながら特に変化しないようです
0804デフォルトの名無しさん2010/05/18(火) 03:22:05
>>803
Win7入れてないから詳しくないんだけど
>マウスカーソルを画面上端へくっつける 最大化する
と
従来の最大化がイコールで
>ウィンドウをドラッグして動かすと元のサイズに戻る
という仕様なら
GetWindowPlacement
SystemParametersInfo
GetWindowRect
あたりのAPIを使って対処はできると思う

そうでないなら別のフラグを持ってるという事なので
Win7拡張APIのヘッダに
locとかposとかマッチしそうなワードでGrepしてみるといいかもね
0805デフォルトの名無しさん2010/05/18(火) 10:09:15
特定のアプリケーションに「F12キーを押す」というメッセージを送信したいです

そこで、SendMessage()関数がありますが、
その特定のアプリケーションのHWNDハンドルをどうやって取得したらいいでしょうか?
0806デフォルトの名無しさん2010/05/18(火) 10:14:13
特定のアプリケーションのThreadIDを全て取得しEnumThreadWindows
0807デフォルトの名無しさん2010/05/18(火) 10:15:56
EnumWindows
0808デフォルトの名無しさん2010/05/18(火) 10:55:38
FindWindowを見つけたので

char cls[256] = "ストップウォッチD";
HWND hwnd;
hwnd = FindWindow( cls, NULL );

としても hwnd には 0 が代入されます
何が原因なのでしょうか?
0809デフォルトの名無しさん2010/05/18(火) 11:02:33
>>808
クラス名が違うんじゃね?
GetLastErrorで何がおかしいか調べろ
0810デフォルトの名無しさん2010/05/18(火) 11:12:30
トップレベルではない
セッションが異なる
0811デフォルトの名無しさん2010/05/18(火) 11:14:38
セッションってなんぞ?
0812デフォルトの名無しさん2010/05/18(火) 11:15:18
HWND hwnd;
UINT msg;
WPARAM wParam;
LPARAM lParam;

char cls[256] = "notepad";

hwnd = FindWindow( cls, NULL );

msg = WM_CHAR;
wParam = VK_TAB;
lParam = 0;
SendMessage( hwnd, msg, wParam, lParam );

ノートパッドではうまくいきました
次にタブキー入力を送信したいのですが またうまくいきません
0813デフォルトの名無しさん2010/05/18(火) 11:17:18
msg = WM_KEYDOWN
にも変えましたがうまくいかないです
0814デフォルトの名無しさん2010/05/18(火) 11:30:23
>>813
英語のMSDNをよく読むと、SendされるメッセージとPostされるメッセージが
明確に区別されている。
どっちで送っても平気なメッセージもあるが、WM_KEYDOWNはPostしないと駄目。
(TranslateMessageの都合があるので)
0815デフォルトの名無しさん2010/05/18(火) 11:42:44
hwnd = FindWindow( cls, NULL );

EnableWindow( hwnd, true );
msg = WM_KEYDOWN;
wParam = VK_TAB;
lParam = 0;
// SendMessage( hwnd, msg, wParam, lParam );
PostMessage( hwnd, msg, wParam, lParam );

アクティブにしPostしてみましたが、ダメでした
0816デフォルトの名無しさん2010/05/18(火) 11:48:26
アクティブにしてもいいならSendInputを使った方が
0817デフォルトの名無しさん2010/05/18(火) 12:01:56
SendInput
08181182010/05/18(火) 12:03:30
おまえらまだAPIつかってるのか
いい加減anci準拠のプログ作れよww
0819デフォルトの名無しさん2010/05/18(火) 12:14:10
msg = WM_CHAR;
wParam = 0x00000061;
lParam = 0x001E0001;
PostMessage( hwnd, msg, wParam, lParam );

msg = WM_KEYDOWN;
wParam = 0x00000041;
lParam = 0x001E0001;
PostMessage( hwnd, msg, wParam, lParam );

msg = WM_KEYUP;
wParam = 0x00000041;
lParam = 0xC01E0001;
PostMessage( hwnd, msg, wParam, lParam );

SPY++ 使ってそのままの値をコード化したのですが、想定どおりにいかないです
SnedInput もどうやって そのキーをアプリケーションに送るのでしょうか?
0820デフォルトの名無しさん2010/05/18(火) 12:29:14
UINT SendInput(
UINT nInputs, // 入力イベントの数
LPINPUT pInputs, // 挿入する入力イベントの配列
int cbSize // 構造体のサイズ
);
のINPUT構造体ってなにをインクルードするんでしょうか?
windows.h インクルードしてるんですが、コンパイルエラーでして
0821デフォルトの名無しさん2010/05/18(火) 12:33:08
なんかそろそろ釣りでした。とか言い出しそう
0822デフォルトの名無しさん2010/05/18(火) 12:41:25
#define _WIN32_WINNT 0x0500
定義したらいけました
ありがとうございました
0823デフォルトの名無しさん2010/05/18(火) 13:12:56
ちなみに 118 とは別人です
データベース乙というか張り込み乙としか
0824デフォルトの名無しさん2010/05/18(火) 13:15:24
WM_*使う方法ではダメなの?
SendInputでできてもあんまうれしくないんだけど
0825デフォルトの名無しさん2010/05/18(火) 13:43:19
何がしたいのか分からないけど
SendMessage(
FindWindowEx(FindWindow("notepad",NULL),NULL,"Edit",NULL),
WM_CHAR,VK_TAB,NULL);
じゃだめなん?
0826デフォルトの名無しさん2010/05/18(火) 16:02:58
805じゃないけどできた
805がアホなだけだと思う
0827デフォルトの名無しさん2010/05/18(火) 16:12:24
で?
0828デフォルトの名無しさん2010/05/18(火) 20:45:58
質問です
アプリ起動時に指定されたDLLが必要なんですがどこにおけばいいんですか?
いつも実行ファイルと同じ場所にコピーしておいています
0829デフォルトの名無しさん2010/05/18(火) 21:00:57
DLL 検索でググると・・
0830デフォルトの名無しさん2010/05/18(火) 22:20:56
>>828
OSとか設定で微妙に検索順は違うが、
少なくとも実行ファイルのディレクトリは最優先だから、それでいい。
0831デフォルトの名無しさん2010/05/19(水) 00:21:33
DLLが無いとエラーが出るから、それをミロ←何処におけばいいか書いてある
0832デフォルトの名無しさん2010/05/19(水) 10:52:34
Windowsのサービスプログラムを作成しています。
サービスのプログラム側から、ログインユーザが存在するのかを判定したいのですが
方法がわかりません。ご存知の方がいましたら教えていただけないでしょうか?
0833デフォルトの名無しさん2010/05/19(水) 13:20:01
explorer.exe(正確にはログインシェル)が立ち上がってるかで判定できる
0834デフォルトの名無しさん2010/05/19(水) 14:12:58
WTSEnumerateSessions
0835デフォルトの名無しさん2010/05/19(水) 21:40:58
SetWindowTextの第2引数にNULL指定したらコントロールのテキストはクリアされるんですか?
0836デフォルトの名無しさん2010/05/19(水) 21:42:53
そんなことはどこにも書いていない

lpString
新しいウィンドウタイトルまたはコントロールのテキストとして使われる、NULL で終わる文字列へのポインタを指定します。
0837デフォルトの名無しさん2010/05/19(水) 21:43:04
MSDNライブラリが2000切り始めよった
0838デフォルトの名無しさん2010/05/19(水) 21:44:04
>>835
何故マニュアルを読まないのか?
0839デフォルトの名無しさん2010/05/19(水) 21:52:36
>>838
MSDNは読みましたが、NULLでクリアを意図しているコードを見たもので…
クリアするときはNULL文字を指定すればいいですよね?
0840デフォルトの名無しさん2010/05/19(水) 21:57:14
MSDNよりそのわけのわからんコードを信用する理由は何?

仕様はどうでもいい、ただ挙動が知りたいって事なら実験結果がすべてだろ。
それに従って好きにしろよ。
ただし、そんな糞コードは誰にも使わせるな。
0841デフォルトの名無しさん2010/05/19(水) 22:24:55
>>839
NULLの場合の挙動は知らないが、"\0"(NUL文字)は空文字列だからクリアできるに決まっとる

>>840
過去のバージョンで既定となっている動作でMSですら使っていそうならはそうほいほいと変更できないんじゃないか
0842デフォルトの名無しさん2010/05/19(水) 22:28:22
1.SetText( hWnd, "" )
2.SetText( hWnd, "\0" )
3.SetText( hWnd, NULL )

1と2は同じだが、3は明らかに意味が異なる
文字列は常にアドレスを持つのだ
0843デフォルトの名無しさん2010/05/19(水) 22:49:00
WM_SETTEXTに反応するコントロールなら、ね
08441182010/05/20(木) 02:07:12
>>842
ハァ?
NULLだってアドレスだろ?
どこもさしていないことが保証されている。

4.SetText( hWnd, '\0')
0845デフォルトの名無しさん2010/05/20(木) 08:21:54
>>844
> 4.SetText( hWnd, '\0')
> 4.SetText( hWnd, '\0')
> 4.SetText( hWnd, '\0')
> 4.SetText( hWnd, '\0')
> 4.SetText( hWnd, '\0')
> 4.SetText( hWnd, '\0')
> 4.SetText( hWnd, '\0')
バカ発見 www
0846デフォルトの名無しさん2010/05/20(木) 17:18:13
実行ファイル(自分)のパスを取得する方法を探しています。

アプリ内で起動している、自分のパスを取得する必要があります。

今までGetModuleFileName()で特に問題なく取得できていたのですが、
PC起動時に自動的に起動できるようにレジストリ登録したところ、
(HKLM\Software\Microsoft\Windows\CurrentVersion\Run)
GetModuleFileName()で取得したパスがC:\Windows\system32\XXXXに変わりました。

正確に(いかなる場合でも)自分のファイルのパスを取得する方法をご存知の方がいましたら教えていただけないでしょうか?
0847デフォルトの名無しさん2010/05/20(木) 17:25:06
>>846
hModuleにNULL入れたんじゃない?
0848デフォルトの名無しさん2010/05/20(木) 19:33:35
VC++EE2008,2010両方で試したのですが
GetSystemMetrics(SM_XVIRTUALSCREEN) が
error C2065: 'SM_XVIRTUALSCREEN' : 定義されていない識別子です。
となり、コンパイル出来なくなってしまいました。
マルチディスプレイ対応のために座標を取得するコードなのですが、
最近のコンパイラではどうやっても動かせないのでしょうか。
0849デフォルトの名無しさん2010/05/20(木) 19:39:51
それはコンパイラの問題では無くてSDKの問題だという事に思い至らない人は
有料の開発ツールを使いましょう。
0850デフォルトの名無しさん2010/05/20(木) 19:47:40
FindFirstFileで [000] [0000] という2つのファイルがあった場合
00?0 では後者しかヒットしませんが 000? だと前者もヒットします
終端の?を正しく評価して貰うことは出来ないんでしょうか
0851デフォルトの名無しさん2010/05/20(木) 20:18:54
ハァ?
0852デフォルトの名無しさん2010/05/20(木) 20:31:01
FindFirstFile のワイルドカードルールが気に入らないなら
全ファイル列挙しつつ自前で文字列をマッチする
0853デフォルトの名無しさん2010/05/20(木) 22:28:04
やっぱそれしかないのか
実を言うと質問した時点でもう自前のコードは書き上げちゃってたんだけど
どうにもこの変な仕様が気になって何か自分の見落としがあるのかと思って質問してみたんだ
終端かそうでないかで評価の仕方が違うというのは何か気持ち悪いけどこういう仕様なんだな
ありがと
0854デフォルトの名無しさん2010/05/20(木) 22:44:29
> やっぱそれしかないのか
そんな事は無い。MSに入社してAPIの仕様変更を決定できるまでに出世すれば可能。
08551182010/05/20(木) 23:18:35
>>850
エクスプーローラーのファイル検索でどうなるか確かめれ
0856デフォルトの名無しさん2010/05/21(金) 00:00:36
リージョンでウィンドウの形変えてるプログラム組んだんだが
俺のPCでは動いても、友達のPCでは形が変わらなかった
それで、コード周りを調べたら
SetWindowRgn( hwnd, hrgn, TRUE );
DeleteObject( hrgn );
と書いていたんだが、環境によってはDeleteObjectで元に戻ってしまう?
SetWindowRgnで渡したhrgnは、システムが保持するのは知ってたけど
削除しても動いてたから、削除してました
0857デフォルトの名無しさん2010/05/21(金) 00:53:26
>>856
SetWindowRgn 関数が成功すると、システムは、パラメータ hRgn で指定したリージョンを所有します。
システムは、このリージョンのコピーを作成しません。
したがって、これ以降はこのリージョンハンドルに対して関数を呼び出すべきではありません。
特に、このリージョンハンドルを削除しないでください。
必要がなくなると、システムはこのリージョンハンドルを自動的に削除します。
0858デフォルトの名無しさん2010/05/21(金) 07:00:13
ただ関数と書かれるとSetWindowRgn 関数のことだと思ってしまうが
実はDeleteObject関数のことなんだよな
0859デフォルトの名無しさん2010/05/21(金) 07:29:21
試しに実行してみたらDeleteしても動くな
元の形に戻るのかは分からないが、仕様で削除するなとあるからDeleteObjectの行を消すべき
0860デフォルトの名無しさん2010/05/21(金) 11:29:00
他プロセスのRICHED20Aに対してEM_GETLINEを使ったときに
なぜか一行の半分くらいしか文字列が取得されなくて困ってます

そのプロセスには三つのRICHED20Aが含まれていますが
そのうち一つは正常、あとの二つで問題が起きます

症状からすると文字数とバイト数を混同してるからだと思うのですが
SendMessageWとSendMessageAを使い分けてもダメでした

いろいろ試してみましたが解決の糸口すら掴めません
もし宜しければこの無能な私に救いの手をお願いします
0861デフォルトの名無しさん2010/05/21(金) 11:48:36
>>860
バッファサイズの指定をしてないか、間違えてるんでしょう。
0862デフォルトの名無しさん2010/05/21(金) 11:51:05
>>861
ああ、書き忘れましたがバッファサイズはちゃんと指定してあります
0863デフォルトの名無しさん2010/05/21(金) 11:52:20
>>862
バッファサイズの指定を間違えてるんでしょう。
0864デフォルトの名無しさん2010/05/21(金) 12:21:01
まさか例えば日本語20文字に対して char のサイズで20バイトのバッファとっていて
それでちゃんと設定してるつもりとかそういう
08658602010/05/21(金) 13:35:47
バッファはかなり余分に取ってあります

言葉が足りなかったようなのでもう少し付け加えると
取得したい行の長さに関わらず必ず半分程度しか取得できないのです

例えば「あいうえ」という行であれば「あい」まで
「あいうえおかきく」という行であれば「あいうえ」までというようにです
0866デフォルトの名無しさん2010/05/21(金) 13:56:07
メモリウィンドウで見るとどうなってるか調べた方がいいかもしれん
08678662010/05/21(金) 14:01:58
つかVS使用前提じゃなかったねこのスレ スルーしてくれ
0868デフォルトの名無しさん2010/05/21(金) 14:27:21
>>865
もう君を哀れむことしか出来ない
0869デフォルトの名無しさん2010/05/21(金) 14:40:42
>>865
バッファサイズの指定を間違えてるんでしょう。
0870 ◆iHbaz.yrr2 2010/05/21(金) 15:08:04
>>865
バッファサイズの指定を間違えてるんでしょう。
0871デフォルトの名無しさん2010/05/21(金) 15:17:46
>>865
その部分だけソース
08728602010/05/21(金) 15:30:35
バッファの指定を間違えているということはありません
バッファサイズは固定してあるので
もし皆さんの仰るようにバッファサイズの指定が問題であれば
「あいうえおかきく」の時に「あいうえ」が取得できて
「あいうえ」の時に「あい」しか取得できないはずがないからです

それに最初にも書きましたが
対象のプロセスが持つ三つのリッチエディットのうち一つは同じ方法で上手く動くのです

ソースは家に帰ってから出しても良いのですが
本当に普通にバッファを確保→先頭にバッファサイズを書込み→SendMessageしてるだけで
特に見せるような特別なことは何もしていません
どこにでもあるサンプルソースと全く同じです
0873デフォルトの名無しさん2010/05/21(金) 15:35:34
下手の考え休むに似たり
百聞は一見に如かず
愚者は経験に学び賢者は歴史に学ぶ
0874デフォルトの名無しさん2010/05/21(金) 15:36:05
>>872
バッファサイズの指定を間違えてるんでしょう。
0875 ◆iHbaz.yrr2 2010/05/21(金) 16:15:11
umm
The return value is the number of TCHARs copied.
0876デフォルトの名無しさん2010/05/21(金) 17:22:58
>>872
お前の頭が間違いなんでしょう
08778602010/05/21(金) 18:46:13
自我崩壊しました
08781182010/05/21(金) 18:49:37

double _fastcall ReadEMText(HWND hwndeditbox, void *buffer, double size) {
double textlengh = GetWindowTextLength(hwndeditbox);
if (textlengh > size) {
GetWindowText(hwndeditbox, buffer, size);
} else {
ZeroMemory(buffer, size);
return textlengh;
}
0879デフォルトの名無しさん2010/05/21(金) 18:50:39
2バイト文字で文字数にバイト数指定すると半分になるよ
08800x35c2010/05/21(金) 19:21:00
こんな感じなんですが
??? ReadEMText(HWND hwndeditbox, std::vector<TCHAR>& buffer) {
????
GetWindowText(hwndeditbox, buffer, ??);
????
}
どうしたらいでしょうか?
0881デフォルトの名無しさん2010/05/21(金) 19:36:58
文字が半分しか取れないんです

バッファが足りない、指定が間違ってるだろ

バッファも十分にあります
指定も間違っていません

ソース見せろよ

自我崩壊しました ← いまここ
0882デフォルトの名無しさん2010/05/21(金) 19:50:37

ReadEMText に一致する情報は見つかりませんでした。

検索のヒント:
0883デフォルトの名無しさん2010/05/21(金) 19:53:58
てか、ReadEMTextの定義か。
中身が、GetWindowTextって何よw
08848482010/05/21(金) 20:31:06
Windows SDKをダウンロードしてWinUser.hを調べたところ
#define _WIN32_WINNT 0x0500
とすればコンパイルが通る事がわかりました。(以前は0x0400で問題なかった)
ありがとうございました。
0885デフォルトの名無しさん2010/05/21(金) 20:34:10
Linuxが今でも使われてる理由が分かってきたきがする
0886デフォルトの名無しさん2010/05/21(金) 21:07:47
ttp://kissho.xii.jp/1/src/1jyou114029.png

このソフトのように、処理モジュールごとにウィンドウ(ダイアログ?)を設けて設定できるようなプログラムを組みたいのですが、
どのようにすればよいでしょうか?

ttp://wisdom.sakura.ne.jp/system/winapi/win32/win88.html

このページで説明されているモードレスダイアログを使うのでしょうか?

ご助言よろしくお願いします。 m(_ _)m
0887デフォルトの名無しさん2010/05/21(金) 21:16:49
>>884
本来マルチモニタサポートはWin98/2000からだけど、
Win9xのサポートを打ち切ったから2000からに書き換えたのかもしれんね。
ちなみに、sdkddkver.hに0x0500のような定数が定義されているので、
そっちを使うとマニア受けする。
0888デフォルトの名無しさん2010/05/21(金) 21:22:33
>>886
そのソフト知らないけど、なんとなくMDIなんじゃなかろうかと思った
0889デフォルトの名無しさん2010/05/21(金) 21:51:52
>>886
一見スマートに見えるけど、中身はガタガタっておちだろうな
いろんなやり方が考えられる
0890デフォルトの名無しさん2010/05/21(金) 21:54:49
歴史が長いからガタガタでも、恐らく変なことはしてないだろう
0891デフォルトの名無しさん2010/05/21(金) 22:14:08
>>886
普通はツールウィンドウ(WS_POPUPとWS_EX_TOOLWINDOWを持たせたウィンドウ)を使う。
そのスクショはAviUtilだと思うけど、Spy++で確認したらそうなってる。
画像編集ソフトなんかでも良く見るタイプ
08928862010/05/21(金) 23:07:14
>>888
MDIというと、OfficeやPhotoshopみたいに、>>886のソフトよりは機能豊富(ウィンドウサイズの変更、
描画できるクライアント領域など)なウィンドウというイメージがあります・・・
そこまでは必要なく、>>886みたいに各種値を設定できるだけで十分なんです。
あと、MDIって、親ウィンドウの枠の中に複数存在するカタチじゃありませんでしたっけ??

>>889
>>890
中身は分かりませんが、とても使い易い上に、独自の処理をプラグインフィルタとして開発できたりと
拡張性、柔軟性も高いです。
作者のKENくんさんはとても技術力の高い方では、と思います。

>>891
>Spy++で確認したらそうなってる。
調べられるんですね!
ツールウィンドウのスタイルがあることは知っていましたが、シンプルなウィンドウ?くらいの認識しかありませんでした。
画像編集ソフトでよく使われるんですね。

ツールウィンドウスタイルで組むことにします。
みなさん、ご助言ありがとうございました。 m(_ _)m
0893デフォルトの名無しさん2010/05/21(金) 23:08:09
PDFを読み込んでjpgかmpegにするAPIを教えてください
0894デフォルトの名無しさん2010/05/21(金) 23:51:26
ありますん
0895デフォルトの名無しさん2010/05/22(土) 00:09:04
え、マジ?
0896デフォルトの名無しさん2010/05/22(土) 16:29:21
CreateWindowで作ったボタンを押したときにボタンを移動させたいんだけどどうすればいいですか?
0897デフォルトの名無しさん2010/05/22(土) 18:35:02
ボタンを移動させるコードをかけばいい
0898デフォルトの名無しさん2010/05/22(土) 18:45:55
念力を磨く
0899デフォルトの名無しさん2010/05/22(土) 19:18:46
>>893
なんでそんなピンポイントの個人的な都合を満たすような関数が
OSのAPIにあると思ったんだよw
0900デフォルトの名無しさん2010/05/22(土) 19:20:00
>>896
「ボタンもウィンドウ」 だから、移動のメッセージ投げればいんじゃね
0901デフォルトの名無しさん2010/05/22(土) 19:38:45
>>899
そんなピンポイントってのが気になって、「pdf jpeg 変換」でぐぐったら
結構対処法が出て来る。Windows の API ではないけどネ。
世の中、同類の多さにびっくり。
0902デフォルトの名無しさん2010/05/22(土) 19:52:09
方法とAPIじゃレイヤーがだいぶ違う。
「彼女を作る」で検索すると結構ヒットするけど、彼女を作るAPIはおそらく存在しない。
0903デフォルトの名無しさん2010/05/22(土) 20:44:35
CreateGirlfriend
0904デフォルトの名無しさん2010/05/22(土) 21:56:07
CreateLover
0905デフォルトの名無しさん2010/05/22(土) 22:02:09
>>903
サブクラス
>>904
スーパークラス
0906デフォルトの名無しさん2010/05/22(土) 22:05:15
DiveToThe2DWorld
0907デフォルトの名無しさん2010/05/22(土) 22:12:00
>>903
アクセス違反

>>904
メモリ不足
0908デフォルトの名無しさん2010/05/22(土) 22:36:24
そこはスペック不足と言え
0909デフォルトの名無しさん2010/05/22(土) 23:00:19
じゃあメモリを増設すればいいんだな!
0910デフォルトの名無しさん2010/05/22(土) 23:13:48
すいません
DestroyCherryBoyで注意すべきことはありますか?
0911デフォルトの名無しさん2010/05/22(土) 23:16:30
ネットに繋がっていると、API呼び出し直後に通報される。
0912デフォルトの名無しさん2010/05/22(土) 23:26:21
それを破棄するなんてとんでもない!
0913デフォルトの名無しさん2010/05/22(土) 23:29:52
GetWomanStatusで相手が素人かプロかを事前にチェックしとかないと正常に動作しない
0914デフォルトの名無しさん2010/05/22(土) 23:31:41
DestroyCherryBoyって(自分じゃなくて余所にいる)チェリーボーイをDestroyするって意味だろww
0915デフォルトの名無しさん2010/05/22(土) 23:37:50
コールする側はCWomanである必要があるということか
0916デフォルトの名無しさん2010/05/23(日) 01:26:56
BoyをDestroyしたら殺人ですがな
Cherryだけを消さないと

そういうAPIはありますか?環境はVista 64bitです。
0917デフォルトの名無しさん2010/05/23(日) 01:31:18
Win7から対応じゃなかったっけ?
MSもセコいよなぁ。
0918デフォルトの名無しさん2010/05/23(日) 02:16:58
つまんね
鬱病予備軍だな
09198962010/05/23(日) 05:28:07
みなさんありがとうございます
質問を変えます
座標x:100 y:100にボタンが存在するかを判定することはできますか?
0920デフォルトの名無しさん2010/05/23(日) 05:39:15
>>913
Access DeniedになってしまうからCherryBoyなんだろ?
0921デフォルトの名無しさん2010/05/23(日) 07:59:37
もういいよつまらない
0922デフォルトの名無しさん2010/05/23(日) 09:05:45
>>919
ttp://msdn.microsoft.com/ja-jp/library/cc364874.aspx
0923デフォルトの名無しさん2010/05/23(日) 09:34:55
>>922
その座標のウインドウハンドルを取得してウインドウクラスを確認する
0924デフォルトの名無しさん2010/05/23(日) 09:57:24
セキュリティレベルを下げればアクセスできるぜ?
0925デフォルトの名無しさん2010/05/23(日) 15:42:48
下げんな
0926デフォルトの名無しさん2010/05/23(日) 16:12:58
上げて落とす
0927デフォルトの名無しさん2010/05/23(日) 16:34:14
予想どおり^q^
0928デフォルトの名無しさん2010/05/23(日) 18:52:45
myplugin.dllの設定を同一ディレクトリの
myplugin.iniから読みたいんですが
dll内のコードから自身のdllのフルパス名を取得する方法があったら教えてください。
0929デフォルトの名無しさん2010/05/23(日) 18:56:31
GetModuleFileName
0930デフォルトの名無しさん2010/05/23(日) 19:26:19
ありがとうございます。
0931デフォルトの名無しさん2010/05/25(火) 09:05:35
win32apiのプログラムでコンソールから起動してコンソールにHello Worldと表示するにはどうしたらいいですか
0932デフォルトの名無しさん2010/05/25(火) 09:10:18
AllocConsoleとかそこらへん
0933デフォルトの名無しさん2010/05/25(火) 09:16:44
出力されません。何がまずいのでしょうか。。
#include <windows.h>
#include <stdio.h>

int WINAPI WinMain(HINSTANCE hInst,
HINSTANCE hPrevInst,
LPSTR lpCmdLine,
int nCmdShow)
{
AllocConsole();
freopen("CONOUT$", "w", stdout); //標準出力をコンソールにする
freopen("CONIN$", "r", stdin); //標準出力をコンソールにする
printf("Hello World!!\n");

return 0;
}
0934デフォルトの名無しさん2010/05/25(火) 10:31:00
>>933
#include <windows.h>
#include <stdio.h>

int WINAPI WinMain(HINSTANCE hInst,
HINSTANCE hPrevInst,
LPSTR lpCmdLine,
int nCmdShow)
{
AllocConsole();
freopen("CON", "w", stdout); //標準出力をコンソールにする
freopen("CON", "r", stdin); //標準出力をコンソールにする
printf("Hello World!!\n");

getchar();
return 0;
}
0935デフォルトの名無しさん2010/05/25(火) 10:44:23
>>934
それでやったら新規にウィンドウが出てきてそこに出力されました。
そうじゃなくてコマンドプロンプトから実行して新規ウィンドウを開かずにその
コマンドプロンプトのウィンドウに出力されてほしいんですが。
0936デフォルトの名無しさん2010/05/25(火) 11:00:00
氏んでほしい
0937デフォルトの名無しさん2010/05/25(火) 11:06:27
GetStdHandle()
0938デフォルトの名無しさん2010/05/25(火) 14:53:07
>>935
ならK&RのHello Worldでいい
0939デフォルトの名無しさん2010/05/25(火) 16:29:19
>>935
だって自分でコンソールプロセス開いて書き出そうとしてるんだから、そうなるんじゃないの?
単純に今のコンソールで表示したかったら、
単に

略 {
printf("Hello World!!\n");
return 0;
}

でいいんじゃないの?
0940デフォルトの名無しさん2010/05/25(火) 18:14:11
>>935
サブシステムをコンソールにしとけでなきゃAttachConsole
0941デフォルトの名無しさん2010/05/26(水) 07:49:33
コンソールアプリケーションのプロジェクト作れとかそういうレベルじゃ
0942デフォルトの名無しさん2010/05/26(水) 09:45:58
#include <stdio.h>

void main()
{
 printf("Hello Hell!");
}
09431182010/05/26(水) 10:07:39
>>942
void mainねえ
0944デフォルトの名無しさん2010/05/26(水) 10:12:14
ppp
0945デフォルトの名無しさん2010/05/26(水) 11:30:38
>>942 はJava出身
まだC/C++自体書きなれていないと推測
0946デフォルトの名無しさん2010/05/26(水) 11:43:11
Java出身なら
void main(){
 printf("Hello HELL!");
}
って書くと思うよ
0947デフォルトの名無しさん2010/05/26(水) 12:26:20
設定で「マルチバイト文字を使う」にして
char ほげ[];その後ほげに文字列を入れて、ウォッチでも入ってることは確認しています
そして
LRESULT Wm_CreateProc(HWND hwnd,LPCREATESTRUCT cs){
CreateWindow("BUTTON",ほげ,〜
と言う感じでコンパイルは通っているのですがボタンの名前にはほげの文字列は入っていません
なぜなのでしょうか?
0948デフォルトの名無しさん2010/05/26(水) 16:55:53
>>947
とりあえず全部のソース張れ
問題はお前が隠してる部分にある
0949デフォルトの名無しさん2010/05/26(水) 17:01:44
すいませんもうできてました
ほんとその通りでした
0950デフォルトの名無しさん2010/05/26(水) 17:07:47
100マイクロくらいの制度のタイマー教えて
timeSetEventって1ミリだから、
0951デフォルトの名無しさん2010/05/26(水) 17:13:53
ぐぐれかす
0952デフォルトの名無しさん2010/05/26(水) 17:25:55
知らないならレスするなよかす
0953デフォルトの名無しさん2010/05/26(水) 17:32:34
知らないならそのままで師ねよカス
0954デフォルトの名無しさん2010/05/26(水) 17:33:53
知らぬなら、鳴かせてみしょう、ほととぎす
0955デフォルトの名無しさん2010/05/26(水) 17:36:47
ゴミしかいねえのかよここw
0956デフォルトの名無しさん2010/05/26(水) 17:37:29
早く答えろ
オナニーの時間なんだよ
0957デフォルトの名無しさん2010/05/26(水) 17:45:34
http://pc11.2ch.net/test/read.cgi/prog/1274017218/
0958デフォルトの名無しさん2010/05/26(水) 17:47:28
ゴミっていわれると気持ちいいお!
0959デフォルトの名無しさん2010/05/26(水) 17:47:31
ここ昔はもうちょいまともだったんだけどな。
今は煽るだけのゴミしかいなくなってるw
0960デフォルトの名無しさん2010/05/26(水) 17:53:06
カスよばわりする人には答えませんーw−
0961デフォルトの名無しさん2010/05/26(水) 17:55:04
PropertySheet関数からウィザードダイアログの呼び出しに付いてですが、
ダイアログの位置を変えたいのですが上手く行きません
PropSheetProcのPSCB_PRECREATEで変更を試みたのですが、
サイズなどは変えることができますが位置は無反応なんです

詳しい人よろしくです(´・ω・`)
0962デフォルトの名無しさん2010/05/26(水) 18:01:46
ぐぐれかす
0963デフォルトの名無しさん2010/05/26(水) 18:02:52
散々ぐぐりましたよ。。。
0964デフォルトの名無しさん2010/05/26(水) 18:26:44
ウィザードのダイアログのコールバック関数のWM_INITDIALOGで普通に位置を変えれました
勘違いしててシートのダイアログの位置を変えてたみたいです
申し訳ないです(´・ω・`)
0965デフォルトの名無しさん2010/05/26(水) 18:35:11
VC++でスタティックライブラリを作るときってwin32コンソール用とwin32用とでは違いがあるんでしょうか?
0966デフォルトの名無しさん2010/05/26(水) 18:41:26
>>965
くわしく
0967デフォルトの名無しさん2010/05/26(水) 18:42:46
ぐぐれかすぼけ
0968デフォルトの名無しさん2010/05/26(水) 18:46:41
調べたらどちらでもいいみたいでしたが
0969デフォルトの名無しさん2010/05/26(水) 18:51:42
どっちでもいいよ。
つかそのLIBのソースで呼び出す関数で決めたら
設定の手間が省けるだけだけど
0970デフォルトの名無しさん2010/05/26(水) 19:04:03
うそぴょん
0971デフォルトの名無しさん2010/05/27(木) 04:17:22
>>950
QueryPerformanceCounter
でぐぐれ
精度はハード依存
09721182010/05/27(木) 04:40:16
難易度的に松竹梅のどのレベルを希望するん?
それ以前に、キミの前の書き込みが三ヶ月以上前だと気付いています?
こんな過疎スレにレスする人が居るわけがない!と、思いませんでしたか?
0973デフォルトの名無しさん2010/05/27(木) 07:42:25
電波ゆんゆん
0974デフォルトの名無しさん2010/05/27(木) 14:35:17
createwindowでボタンを作成し
プログラム内でそのボタンを押すことは可能ですか?
09751182010/05/27(木) 14:43:33
>>974
はい
0976デフォルトの名無しさん2010/05/27(木) 14:44:50
かかってこいうじむしども
09771182010/05/27(木) 15:05:21
>>976
スウィートホームでもやってろ>かずお
0978デフォルトの名無しさん2010/05/27(木) 15:07:36
おらおらどうしたごみども
0979デフォルトの名無しさん2010/05/27(木) 15:11:52
ウインドウを登録して表示するだけの最小コード書ける?
0980デフォルトの名無しさん2010/05/27(木) 15:20:14
今やったらググらないと書けそうもないぜ ググったらコピペで済むか( ´ω`)
0981デフォルトの名無しさん2010/05/27(木) 15:21:30
100文字以内で
0982デフォルトの名無しさん2010/05/27(木) 15:22:08
>>980
書けないならレスしないで下さい。ウザいだけです。
0983デフォルトの名無しさん2010/05/27(木) 15:23:41
「かける?」 という質問なのだから、「かけない」も正しい回答。
0984デフォルトの名無しさん2010/05/27(木) 15:24:25
ウインドウクラスではなくウインドウを登録?
何に登録するの?
0985デフォルトの名無しさん2010/05/27(木) 15:31:34
口だけのゴミが多いなあ・・・
0986デフォルトの名無しさん2010/05/27(木) 15:38:26
はとや・・・うわっなにをする!
0987デフォルトの名無しさん2010/05/27(木) 15:40:55
ここに点「フ」がある
そしてここには点「マ」がある
フ点と・・・うわっなにをする!
0988デフォルトの名無しさん2010/05/27(木) 17:46:36
次スレ立てたよ
http://pc12.2ch.net/test/read.cgi/tech/1274949734/l50
0989デフォルトの名無しさん2010/05/27(木) 17:50:36
もうここには屑しかいないから必要ないんじゃない?
質問しても煽るだけのゴミしかいないし・・・
0990デフォルトの名無しさん2010/05/27(木) 18:02:16
>>989
煽る人が出るのは大抵、煽られる側に何らかの問題があります。
0991デフォルトの名無しさん2010/05/27(木) 18:11:00
>>990みたいなゴミがいるから煽る奴が絶えないんだよね。。。
0992デフォルトの名無しさん2010/05/27(木) 18:15:19
まあ態度が悪いと煽りたくはなるな
0993デフォルトの名無しさん2010/05/27(木) 18:18:17
4月に江藤議員が、10年前の例を挙げて100億の予算を組んでくれと訴えてたが
赤松は「10年前は結局35億で済んだので〜」(ニヤニヤ)

【口蹄疫】平成22年4月22日衆議院農林水産委員会 自民党 江藤拓議員
http://www.nicovideo.jp/watch/sm10603447

【赤松口蹄疫】2010/5/20 衆・本会議 自由民主党 江藤拓議員
http://www.nicovideo.jp/watch/sm10781423

【口蹄疫】赤松「隠してないで土地を出せ」(本音が出ちゃった)
http://www.nicovideo.jp/watch/sm10843509
http://www.youtube.com/watch?v=4D5M41ZhBGE
0994デフォルトの名無しさん2010/05/27(木) 18:42:26
こりゃ煽られても文句は言えないな
0995デフォルトの名無しさん2010/05/27(木) 18:46:51
>>988
GJ!
乙
レス数が950を超えています。1000を超えると書き込みができなくなります。