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

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

Win32API質問箱 Build87

1 :デフォルトの名無しさん: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/

2 :デフォルトの名無しさん: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/

3 :デフォルトの名無しさん: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/

4 :デフォルトの名無しさん: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


5 :デフォルトの名無しさん:2010/03/28(日) 10:30:28
999 名前:デフォルトの名無しさん[sage] 投稿日:2010/03/28(日) 10:19:24
hoge((bool)0,(HANDLE)0)
みたいなことはしてもいいと思う

HANDLEってvoid*だぞ
キャストする意味がない

6 :デフォルトの名無しさん:2010/03/28(日) 10:31:47
あ、ごめん
ソースコードの解読のしやすさの話ね

7 :デフォルトの名無しさん:2010/03/28(日) 11:50:36
ダイアログボックス呼び出しCreateDialog、リソーススクリプトに内容を記述、ダイアログ表示。
ウインドウ名や内容に ”文字” では無く、Char変数の内容を表示させたいのですができますかね?


8 :デフォルトの名無しさん:2010/03/28(日) 12:41:46
日本語でおk

9 :デフォルトの名無しさん:2010/03/28(日) 13:22:44
SetWindowText
WM_SETTEXT

10 ::2010/03/28(日) 14:05:42
>>9
できました、ありがとうございます。
ダイアログボックス自体は変数の表示はできないって事なんですね。

11 :デフォルトの名無しさん:2010/03/28(日) 18:20:20
GdiplusのGraphics::Clearに矩形でクリッピングしたいんですが、何か方法ないですか?
Clearの直前にSetClipしても反映されませんでした。

12 :デフォルトの名無しさん:2010/03/29(月) 00:36:13
>>10
日本語でおk

13 :デフォルトの名無しさん:2010/03/29(月) 00:39:27
>>10
ヒント:「システム」ダイアログ

14 :デフォルトの名無しさん:2010/03/30(火) 00:53:48
とあるプラグイン(DLL)をロードした際、
そのプラグインは特定の条件化(バージョンチェックなど)で
不整合が発生した場合、自らをアンロードしたいのですが、
何か良いやり方はありませんか?

あるのであれば教えて頂きたいです。

15 :デフォルトの名無しさん:2010/03/30(火) 01:22:24
>>14
DLLをアンロードするAPIはFreeLibraryがあるが
DLLが自分自身をアンロードするのは普通にはできないと思う。

16 :デフォルトの名無しさん:2010/03/30(火) 01:27:37
dllmainでFALSEを返す

17 :14:2010/03/30(火) 01:34:37
>>16
それができない状況です。

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

フラグか何か持って処理をさせないという微妙な方式を採用するしかないのかな。
とりあえずもう少し意見があるかも知れないのでしばらく待ってみます。

18 :デフォルトの名無しさん:2010/03/30(火) 01:39:25
>>17
ロードする方のプロセスに手を入れられるなら、
そっちでアンロードするように実装すべき。

19 :デフォルトの名無しさん:2010/03/30(火) 02:28:03
TeminateProcessが実行された後って、普通はシステムがリソース全て開放することが保証されているよね?
でも、通知領域にアイコン持つプロセスにそれを実行したとき、通知領域のアイコンが表示されたままになる。
これはアイコンリソースが開放されてないからじゃないの?

20 :デフォルトの名無しさん:2010/03/30(火) 06:52:32
はい

21 :デフォルトの名無しさん:2010/03/30(火) 07:17:30
CPU名を簡単に取得する方法を教えてください

22 :デフォルトの名無しさん:2010/03/30(火) 07:49:53
>>19
通知領域はexplorer.exeのプロセス内だ

23 :デフォルトの名無しさん:2010/03/30(火) 20:22:50
>>14
FreeLibraryAndExitThread

24 :デフォルトの名無しさん:2010/03/30(火) 21:02:18
スレッドなのね

25 :デフォルトの名無しさん: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

26 :デフォルトの名無しさん:2010/03/31(水) 00:37:45
>>21
プロンプト出してユーザー自身に使ってるCPU名を入れさせろ

27 :デフォルトの名無しさん:2010/03/31(水) 08:28:25
>>21
mov eax,80000002h;...80000004h
cpuid


28 :デフォルトの名無しさん: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);

29 :デフォルトの名無しさん:2010/03/31(水) 19:41:15
最後の間違えた
s/printf/_tprintf/

30 :デフォルトの名無しさん:2010/03/31(水) 19:42:41
numの宣言も忘れたがもういいや

31 :デフォルトの名無しさん:2010/04/01(木) 07:59:58
例えば
LARGE_INTEGER liX = 0;
ではなく、
LARGE_INTEGER liX = { 0 };
とするのは、なぜなんでしょうか?
LARGE_INTEGERが共用体だからですか?

32 :デフォルトの名無しさん:2010/04/01(木) 09:15:37
>>31
ttp://akky.cjb.net/mfc/initstru.html

33 :デフォルトの名無しさん:2010/04/01(木) 09:44:53
LARGE_INTEGER共用体の最初の要素が構造体だから

34 :デフォルトの名無しさん:2010/04/01(木) 13:21:57
>>32
あー
そういう意味だったんですね


35 :デフォルトの名無しさん:2010/04/01(木) 16:44:10
vc++9.0でのお話なのですが、
ZeroMemory()という関数は純粋なWindowsAPIではないという認識でよろしいでしょうか?
宣言をたどっていくと…RtlZeroMemory(WinNT.h)→memset(String.h)になってるので…
CRT依存したくない場合は、自作するのがベターって事ですかね。

36 :デフォルトの名無しさん:2010/04/01(木) 17:31:36
kernel32.dllにはRtlZeroMemoryがありkernel32.libには__imp__RtlZeroMemory@8があるので宣言さえすれば使える
#undefしてもよいしマクロ展開させないためにスペースをあけてもよい
RtlZeroMemory (


37 :デフォルトの名無しさん:2010/04/01(木) 17:42:13
>>36
ありがとうございます。スッキリしました!

38 :デフォルトの名無しさん:2010/04/01(木) 18:20:17
SecureZeroMemoryとかなんとか

39 :デフォルトの名無しさん:2010/04/01(木) 22:03:28
SecureZeroMemoryは高速化版がある

40 :デフォルトの名無しさん:2010/04/02(金) 09:48:57
exe や dll が .NET マネージコード化案マネージコード化を判別する方法ありますか?

41 :デフォルトの名無しさん:2010/04/02(金) 10:03:30
定義次第。

42 :デフォルトの名無しさん:2010/04/02(金) 10:35:51
確実ではないが一般に
mscoreee.dll:_CorDllMain,_CorExeMain系関数をインポートしていればマネージドコードを含む
さらにその他のdllもインポートしている場合マネージド/アンマネージド混在の可能性が高い
何もインポートしていないならマネージド/アンマネージドに無関係なデータ/リソースモジュールの可能性が高い
それ以外の場合はアンマネージドモジュールの可能性が高い

COM参照など間接的な物はほぼ判定不能

43 :デフォルトの名無しさん:2010/04/02(金) 11:23:59
んー、そうですか。
ちょっとがんばってみます。

マネージドコードで判断するときは
リフレクション使ってファイル読んだときに
アンマネージドであれば例外を出してくれる陽南でかんたんにわかるようなんですけどね。

44 :デフォルトの名無しさん:2010/04/02(金) 17:57:26
ngenが.netアセンブリの判定やってるから参考にしてみれば
しらんけど

45 :デフォルトの名無しさん:2010/04/02(金) 19:15:52
フックDLLを書いてるときにふと気になったけど
共有セクションってどこまで適用されるの?ウィンドウステーション?

46 :デフォルトの名無しさん:2010/04/03(土) 07:01:16
あるプロセスが開いてるファイルハンドルを取得して、強制的にクローズするにはどうすればいいの?

47 :デフォルトの名無しさん:2010/04/04(日) 23:46:00
質問です。IDE(VC++2008 Express)固有の話なのですが、
とあるクラスを作成後、動作確認中、作成した自作クラスのコンストラクタ内の処理の途中で
ブレイクポイントを仕掛けたのですが、どうもブレイクしてくれません。

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

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



48 :デフォルトの名無しさん:2010/04/04(日) 23:46:53
おい
殺されたいのかお前は
スレタイ100回声に出して読め

49 :デフォルトの名無しさん:2010/04/05(月) 00:10:28
>>48
ゴメン。しかも自分の勘違いだった

50 :デフォルトの名無しさん:2010/04/05(月) 00:21:32
まぁまぁ

51 :デフォルトの名無しさん:2010/04/05(月) 03:49:34
Win32APIじゃ無いかもしれないけど、現在接続しているUSBカメラの焦点距離を知る方法
ってありませんか?

52 :デフォルトの名無しさん:2010/04/05(月) 06:21:07
はい

53 :デフォルトの名無しさん:2010/04/05(月) 13:00:20
あります

54 :デフォルトの名無しさん:2010/04/05(月) 13:14:04
この辺かな
WIA_DPC_FOCUS_DISTANCE/WIA_DPC_FOCAL_LENGTH

55 :デフォルトの名無しさん:2010/04/05(月) 14:30:07
DOSコマンドのroute printで表示される情報と同じものを取得するAPIを教えてください

56 :デフォルトの名無しさん:2010/04/05(月) 15:05:38
ありません


57 :デフォルトの名無しさん:2010/04/05(月) 15:09:28
知らないならレスしないで下さい。ウザいだけです。。。

58 :デフォルトの名無しさん:2010/04/05(月) 15:20:51
煽っても何も出て来ませんよ

59 :デフォルトの名無しさん:2010/04/05(月) 15:27:24
http://www.wmifun.net/sample/win32_ip4routetable.html
http://www.geekpage.jp/programming/iphlpapi/

60 :デフォルトの名無しさん:2010/04/05(月) 15:28:22
scanfで数字を複数受け取るにはどうするの?

61 :デフォルトの名無しさん:2010/04/05(月) 15:36:40
>>60
>>48

62 :デフォルトの名無しさん:2010/04/05(月) 15:53:29
>>58
でてきましたよどじ

>>59
ありがとうございますありがとうございます。
あなたは神です。こんな糞まみれのスレで初めてみた神です。

63 :デフォルトの名無しさん:2010/04/05(月) 15:53:59
知らないならレスしないで下さい。ウザいだけです。。。



64 :デフォルトの名無しさん:2010/04/05(月) 15:55:04
コンソールプログラムとDOSプログラムを混同するな

65 :デフォルトの名無しさん:2010/04/05(月) 16:00:05
うるさいブタ共だなあ

66 :デフォルトの名無しさん:2010/04/05(月) 16:17:46
>>59
これ Win32API じゃないだろ

67 :デフォルトの名無しさん:2010/04/05(月) 16:59:17
>>66
いや参考になった。
へるぱAPIで取得できました。

しかし、しかし。
Presistent Routesだけ欲しい場合に判断に困ってます。
dwForwardProto辺りで何とか識別できそうかなっておもってたんですがダメっぽいですぅ

68 :デフォルトの名無しさん:2010/04/05(月) 17:16:27
ttp://www.youtube.com/watch?v=_NO0AdDjMnY

69 :デフォルトの名無しさん:2010/04/05(月) 17:25:29
っていうか、GetIpForwardTableじゃUSBとかのLANで接続してないとPersistent Routesを取れないや
まあ接続されてないんだからActive Routesに表示されないのは当然なんだが・・・
これPersistent Routesを取得する方法をさっさと教えてください。

70 :デフォルトの名無しさん: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)
このように取得する方法ってありますか?


71 :デフォルトの名無しさん:2010/04/05(月) 20:22:01
>>70
管理共有でもなきゃ、その記述が間違い。

72 :デフォルトの名無しさん:2010/04/05(月) 20:22:28
って見てみたら管理共有じゃん。

73 :デフォルトの名無しさん:2010/04/05(月) 20:23:25
まずは落ち着け

74 :デフォルトの名無しさん:2010/04/05(月) 20:28:43
そこのサイトの説明は適当過ぎだな。
偶々Cドライブを「C$」という名前で共有した結果なだけだろうに。

75 :デフォルトの名無しさん:2010/04/05(月) 20:29:46
XP VC++2008、他プロセスの指定メモリアドレスの内容を見たいのだけど
そのプロセスハンドル取得してReadProcessMemory使ってもうまく表示してくれません
GetLastErrorみたらERROR_ACCESS_DENIEDって出たけどOpenProcessToken等の操作で変わるものでも無いので
どうすれば表示されるのか分からないので教えてください


76 :デフォルトの名無しさん:2010/04/05(月) 20:35:52
どうすればって、普通にやればできるだろ。

77 :デフォルトの名無しさん:2010/04/05(月) 20:37:28
単にReadableじゃないのでは

78 :デフォルトの名無しさん:2010/04/05(月) 20:41:56
単にアドレスがおかしいとか。

79 :デフォルトの名無しさん:2010/04/05(月) 20:44:24
・ハンドルのアクセス権の問題
・指定アドレスの有効性の問題
・指定アドレスのアクセス権の問題

どれかしかない

80 :デフォルトの名無しさん:2010/04/05(月) 20:46:23
まとめると、>>75が悪い、ってことだな。

81 :デフォルトの名無しさん:2010/04/06(火) 11:28:50
ヘルパーAPIでPersistent Routesのリスト取得や追加や削除を教えてえええええええええええ><
Active Routesに対してならできるがそれじゃ意味がないぽ><

82 :デフォルトの名無しさん:2010/04/06(火) 23:32:12
WMIのWin32_IP4PersistedRouteTableでも使えば

83 :デフォルトの名無しさん:2010/04/07(水) 04:30:11
アプリの実行環境がコンソールかGUIかってのはAPIとは直接関係ないだろ。
どっちでも同じAPIを呼んで同じ情報が取得できるはず。

84 :デフォルトの名無しさん:2010/04/07(水) 16:36:08
mmsystem.hをインクルードすると大量のエラーが出てコンパイルできません。
コンパイラはicl 11.0、OSはWindows XP 64bitです。

85 :デフォルトの名無しさん:2010/04/07(水) 19:09:19
デスクトップのディスプレイの明るさを変えるapiはありませんか?ノートPCならIOCTLのブライトネストでかえれるらしいのですが。osはxpです

86 :デフォルトの名無しさん:2010/04/07(水) 19:29:55
VGAの色補正ならドライバをリバースエンジニアリングすれば出来ない事もないけど
ディスプレイの調整は、そのインターフェースがあるなんて聞いた事無い

87 :デフォルトの名無しさん:2010/04/07(水) 19:42:22
ある

88 :デフォルトの名無しさん:2010/04/07(水) 20:21:20
>>85
Vista以降ならある。

89 :デフォルトの名無しさん:2010/04/08(木) 08:30:15
ありがとうございます。xpにはやはりなさそうですか。助かりました。

90 :デフォルトの名無しさん:2010/04/08(木) 12:05:40
FindNextFile() でCドライブ配下の全てのファイルをカウントするだけのプログラムを作成してみました。
PC起動時の初回と2回目以降に実行し他場合、処理速度が100倍ぐらい違うのですが、どうしてでしょうか?

91 :デフォルトの名無しさん:2010/04/08(木) 12:11:31
Cache

92 :デフォルトの名無しさん:2010/04/08(木) 12:52:23
WinMainでDialogBoxを呼び出してモーダルダイアログを出します。
そのモーダルダイアログのボタンを押したときモードレスダイアログを出したいのですが、
メッセージループが表面上にないので、IsDialogMessage() 関数を追加する方法が分かりません。
どうようにすればいいでしょうか?


93 :デフォルトの名無しさん:2010/04/08(木) 13:47:10
メッセージループを追加する

94 :92:2010/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;
}

>メッセージループを追加する
どこに追加すればいいでしょう…


95 :デフォルトの名無しさん:2010/04/08(木) 15:55:17
ダイアログプロシージャ内
それで問題があるならスレッドを起動する

96 :92:2010/04/08(木) 17:15:01
いやその。。。
ダイアログプロシージャ内に入ったときはDispatchMessageが呼ばれているし、
スレッド立てたらメインスレッドのメッセージは読めないと思うんですが。。。



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

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

メッセージループ内
 MainProc側
  何らかのトリガーで SubProc側生成

98 :デフォルトの名無しさん:2010/04/08(木) 20:20:06
リモートのIPアドレスからコンピューター名を得る方法ありますか?
自分も相手もWindows(XP以降)です
正しくはコンピューター名じゃなくてUNC名ですが


99 :デフォルトの名無しさん:2010/04/08(木) 20:21:33
>どこに追加すればいいでしょう…

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

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

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

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

読める

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

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




101 :デフォルトの名無しさん:2010/04/08(木) 20:35:06
メッセージループとイベントループってどっちが正しいの?

102 :デフォルトの名無しさん:2010/04/08(木) 21:14:40
>>101 用語の話ってことなら、win32的にはメッセージループじゃね?
で、そのメッセージって何?って聞かれたなら、それは各種イベントって感じ


103 :デフォルトの名無しさん:2010/04/08(木) 22:17:25
>98
IPアドレス→MACアドレス→マシン名
ARPとNetBIOS(NBT)とか?

104 :デフォルトの名無しさん:2010/04/08(木) 22:17:56
イベントループなんて聞いたことないな

イベントで思いつくのはイベントハンドラだな。

105 :デフォルトの名無しさん:2010/04/08(木) 22:40:33
自己解決しました

106 :デフォルトの名無しさん:2010/04/08(木) 23:20:09
>>105
解決したときはどうやって解決したか書いておくと
後の人のためになるよ。


107 :デフォルトの名無しさん:2010/04/08(木) 23:27:10
2chでの「自己解決しました」だけの書き込みは99.9%赤の他人。

108 :デフォルトの名無しさん:2010/04/09(金) 04:45:12
   ┌─┐
   │●│
   └─┤
   _   ∩
  ( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘      おっぱい!おっぱい!


109 :デフォルトの名無しさん:2010/04/09(金) 05:08:12
SetLayeredWindowAttributesでクライアント領域を透過させて
そこに表示する文字もSetBkModeで透過させることができたんですが
CreateFontで作成した文字列だと文字の周りにデフォルトの背景色が出てしまって
透過できないんですがどうすればいいですか

110 :デフォルトの名無しさん:2010/04/09(金) 07:35:47
自己解決しました。

111 :デフォルトの名無しさん:2010/04/09(金) 08:28:52
デフォルトの背景色をα値にするとか

112 :デフォルトの名無しさん:2010/04/09(金) 09:29:03
http://wisdom.sakura.ne.jp/system/winapi/win32/win21.html

113 :デフォルトの名無しさん:2010/04/09(金) 09:44:12
ヘルパーAPIでPersistent Routesのリスト取得や追加や削除を教えてくださいよ

114 :デフォルトの名無しさん:2010/04/09(金) 10:14:13
http://msdn.microsoft.com/en-us/library/aa366071(v=VS.85).aspx

115 :デフォルトの名無しさん:2010/04/09(金) 10:24:54
いや
何度も書かれている
お前の目が節穴だっただけ

大抵の人はフィルタを通して物(この場合スレの書き込み)を見てしまう
大事なことが書かれていてもそれに気付くためには
本人がそれを受け入れるための準備が必要なんだ

116 :デフォルトの名無しさん:2010/04/09(金) 10:54:45
>>113 お前まだそれやってたのか
まさか全部人に聞かないと書けない=コピペしか出来ない奴なのか


117 :デフォルトの名無しさん: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 ) );


118 :デフォルトの名無しさん: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すると成功するんです。
なんなんでしょうか。。。。

119 :デフォルトの名無しさん:2010/04/09(金) 14:04:46
>>118
マルチ乙
返事がこなさそうって失礼にも程がある



120 :デフォルトの名無しさん:2010/04/09(金) 14:08:30
まぁ来ないけどね

121 :デフォルトの名無しさん:2010/04/09(金) 14:39:57
ahoo!知恵遅れ袋で聞くってアホとしか

122 :118:2010/04/09(金) 14:57:11
フック関連のは何度か質問してるんですがYahoo!知恵袋は一度も返事が来ません。
私の質問履歴にないのは全部そのまま消えていくからですorz
なんでしょうかね。めんどくさいのかわからないのか。
マルチなんぞに返答をくれる方お願いします。

キーイベントが発生したときのみエラーが起きているので、フックプロシージャかなんかに問題でもありますかね?
キーイベントの有無による違いはそれくらいだと思うんですが。

123 :デフォルトの名無しさん:2010/04/09(金) 15:52:19
>>118
開発環境は?
hHookはどこでどう宣言してる?

124 :デフォルトの名無しさん:2010/04/09(金) 16:01:20
ぐだぐだほざいてないでさっさと教えやがって下さいよ

125 :デフォルトの名無しさん:2010/04/09(金) 16:21:32
雑魚しかいないから教えれる奴がいないんだろw

126 :デフォルトの名無しさん:2010/04/09(金) 16:25:23
なんか数日前から騙って踊れるキチガイが1匹わいてるな

127 :デフォルトの名無しさん:2010/04/09(金) 16:38:54
16:25:23 にも基地外が沸いてるね

128 :デフォルトの名無しさん:2010/04/09(金) 17:31:09
ここまで俺の自演

129 :デフォルトの名無しさん:2010/04/09(金) 17:51:33

2ちゃんの画一的なコメント 乙


130 :デフォルトの名無しさん:2010/04/09(金) 18:01:47
別の症状だと思うがsmss.exeなど入力のないシステムプロセスにフックしたまま解除不能になった事ならある
case DLL_PROCESS_ATACH:
if (!GetModuleHandle("USER32.DLL") return FALSE;

131 :デフォルトの名無しさん:2010/04/09(金) 18:07:58
>>118
WM_KEYHOOKのプロシージャでResetHookを呼んでいるんだろうけど
SendMessageしたらいかんだろ。

132 :デフォルトの名無しさん:2010/04/09(金) 19:05:15
>117
1) bindのsin_portを0にする
2) bindやめてconnect呼ぶ。(後続するsendtoはsendに変える)
1,2の好きな方を選んだら?

133 :デフォルトの名無しさん:2010/04/09(金) 20:08:04
WM_KEYHOOKを受け取ったウィンドウプロシージャで
何をやってるか示さないと答えようがないわけだが
まぁ>>131の可能性が高そうだけど

134 :デフォルトの名無しさん:2010/04/09(金) 23:24:48
ドライブレターからフロッピードライブか否かを判別する方法はないですか?
GetDriveTypeではリムーバブルって返って来るだけで、フロッピーではないかも知れませんし、
SetupDiEnumDeviceInfoとSetupDiGetDeviceRegistryPropertyでQueryDosDeviceで得た文字列と同じものを探して関連付けようと試みましたがヒットしないです...。

QueryDosDeviceでは"\Device\Floppy0"が返って来ましたが、SetupDiGetDeviceRegistryPropertyではフロッピー系は"\Device\FloppyPDO0"が見つかっただけでした

135 :デフォルトの名無しさん:2010/04/09(金) 23:41:09
フロッピーはAドライブだろ常考

136 :118:2010/04/09(金) 23:58:31
>>135
ん?ドライブレター変えたらどうすんの???
責任取れるの?



137 :デフォルトの名無しさん:2010/04/10(土) 02:26:34
>>136
なんだてめぇ

138 :134:2010/04/10(土) 03:20:14
なんかDeviceIoControlとIOCTL_DISK_GET_MEDIA_TYPESで簡単に識別できるみたいです ノシ

139 :デフォルトの名無しさん:2010/04/10(土) 08:58:46
思いつきの裏技だがシェルアイコンのインデックスで判定するとかw

140 :デフォルトの名無しさん:2010/04/10(土) 14:15:55
HKEY_LOCAL_MACHINE\SYSTEM\MountedDevicesを開いて
\DosDevices\〜からパス取り出して
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enumからそのパスを開いて
ClassGUIDとかで区別できると思うけど

>>135
ねぇPC98版Windowsって知ってる?

141 :デフォルトの名無しさん:2010/04/10(土) 14:17:58
Windows3.x 以前のは Windows じゃないことにしておこう

142 :デフォルトの名無しさん:2010/04/10(土) 14:18:26
知らん。

143 :デフォルトの名無しさん:2010/04/10(土) 14:20:21
あと3ヶ月だねぇ。

144 :デフォルトの名無しさん:2010/04/10(土) 14:46:36
ユーザーにドライブの正体は何ですか
といちいち設定させるUIでも作った方が確実
アホな自動認識よりはユーザーもそっちを選ぶ

145 :デフォルトの名無しさん:2010/04/10(土) 14:57:10
>>141
Windows98もNTもPC98版が存在したが、いったいなにをどうしておきたいんだ?

146 :デフォルトの名無しさん:2010/04/10(土) 18:40:57
質問者当人の>>138で終わった話なのに何やってるんだ?
http://support.microsoft.com/kb/163920/en

147 :デフォルトの名無しさん:2010/04/10(土) 20:54:37
アプリの二重起動を防ぐのにMutexを使っていたけど、
これってひょっとして名前付きのカーネルオブジェクトならなんでもいいって事?

OpenJobObjectとか

148 :デフォルトの名無しさん:2010/04/10(土) 20:55:18
OpenじゃなかったCreateか

149 :118:2010/04/10(土) 21:35:09
>>148
WinMainの2つ目の引数を使えばええやん
そのためにあるのだよ


150 :デフォルトの名無しさん:2010/04/10(土) 21:39:48
16bit時代の方ですか?

151 :デフォルトの名無しさん:2010/04/10(土) 21:40:08
ネタだよな。

hPrevInstance
アプリケーションの前のインスタンスのハンドルが入ります。
Win32 アプリケーションでは、常に NULL です。

152 :デフォルトの名無しさん:2010/04/10(土) 22:02:37
>>147
自分はそう解釈して、CreateFileMappingで二重起動時にアクティブにしたいWindowハンドル入れて使ってる。
勝手解釈なんで、有識者にほんとに問題ないか聞きたい。

153 :デフォルトの名無しさん:2010/04/10(土) 22:03:28
>>147
Openは使うなよ、全般的に

154 :デフォルトの名無しさん:2010/04/10(土) 22:11:01
さすがイミフな質問するだけあって回答も廃クオリティ

155 :デフォルトの名無しさん:2010/04/10(土) 22:36:14
共有セクションを入れたDLLを静的リンクして、共有セクションにある変数を見るとか

156 :デフォルトの名無しさん:2010/04/10(土) 22:39:50
>DLLを静的リンク
どういうこと?

157 :デフォルトの名無しさん:2010/04/10(土) 22:48:39
>>154
坊や何の意味がわからないのだね?

158 :デフォルトの名無しさん:2010/04/10(土) 22:55:54
>>156
なんかおかしくなってた
つまり、libファイルをリンクして、共有セクションのあるDLLが常にロードされるようにしておく

159 :118:2010/04/10(土) 23:04:48
全部ダメ。0点。

レジストリにキーを作るくらいダメ解答ばかりやな。


160 :デフォルトの名無しさん:2010/04/10(土) 23:07:56
>>155
でもそれ同じパスにあるDLLがロードされないとだめだろ

161 :デフォルトの名無しさん:2010/04/10(土) 23:08:34
>>158
意味内よねw

162 :118:2010/04/10(土) 23:31:40
にゃあ

163 :デフォルトの名無しさん:2010/04/10(土) 23:35:54
ダイナミックなんとかライブラリ

164 :デフォルトの名無しさん:2010/04/10(土) 23:49:26
共有セクションをDLLにする必要はなぜ

165 :デフォルトの名無しさん:2010/04/11(日) 00:52:40
EXE内にしたらコピーするだけで回避出来るぜ

166 :デフォルトの名無しさん:2010/04/11(日) 14:19:59
リソース無しでプロパティシート作るには?
これが出来ると vc と gcc でソース共通にできそうなのですが。
メニューバーは簡単だった。


167 :デフォルトの名無しさん:2010/04/11(日) 20:09:36
   ┌─┐
   │●│
   └─┤
   _   ∩
  ( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘      おっぱい!おっぱい!

168 :118:2010/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);
}

169 :デフォルトの名無しさん:2010/04/11(日) 22:27:09
DLLの使い方くらい勉強しようぜ

170 :デフォルトの名無しさん:2010/04/11(日) 22:33:08
頭ぶつけて死んだ方が早そう

171 :118:2010/04/11(日) 22:43:58
>>169
わからないので具体的にお願いします。
どうすればウィンドウハンドルを保持しつづけられますか?
http://www.kumei.ne.jp/c_lang/sdk2/sdk_163.htm
とか見る限りだとグローバル変数はDLLが開放されるまで値が保持されると思うんですが。

172 :デフォルトの名無しさん:2010/04/11(日) 22:48:00
大抵のバグは本人が問題ないと思って省略しているところにある

173 :デフォルトの名無しさん:2010/04/11(日) 22:53:44
グローバル変数といえどもプロセス間では共有されないのは分かってるんだろうか
共有したいならセグメントを共有するよう指定してやる必要がある
#pragma data_seg("Shared")
HWND ghWnd = NULL;
#pragma data_seg()
#pragma comment(linker, "/section:Shared,rws")

174 :デフォルトの名無しさん:2010/04/11(日) 22:59:49
>>171
サンプルに毛を生えらかした程度の事で
ハマっちゃう人の気持ちって分かる人は少ないから
全ソースうpってみたら?


175 :デフォルトの名無しさん:2010/04/11(日) 22:59:49
口調もコードも全てか低脳臭くて^^;

176 :118:2010/04/11(日) 23:07:58
>>175
(建前)
わかんねえなられすすんな
俺の質問に答えてりゃいいんだよ!!!

(本音)
こいつらつかえねー


177 :デフォルトの名無しさん:2010/04/11(日) 23:14:17
>>176
失せろ

178 :デフォルトの名無しさん:2010/04/11(日) 23:19:12
>>172
すっげえわかるw
いわゆる想定外

179 :118:2010/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は簡単にメッセージボックスを表示させるマクロです。
他にわからない点があったら言ってください。
ボタンが異常に小さいのはリソースからそのまま移植したからです。

180 :デフォルトの名無しさん:2010/04/11(日) 23:32:40
>>179
全ソース
↑意味分かる?日本語だよ
無意味な略語や隠語を使いたがる人がいるけど
そのタイプの構ってさんなのかな?

181 :118:2010/04/11(日) 23:39:59
プロジェクト的な意味ですか?
BCCですがMakeファイルの使い方知らないんでバッチで代用してます。
http://space.geocities.jp/classcircle/MonitorDown.zip
自作のライブラリっぽいものとヘッダファイルもあわせてこれで全部のはずです。

182 :デフォルトの名無しさん:2010/04/11(日) 23:41:46
bccって#pragma data_segとかサポートしてたっけ?

183 :118:2010/04/11(日) 23:43:20
>>182
あぁなんかそこ警告出ました。


184 :デフォルトの名無しさん:2010/04/11(日) 23:47:11
     |\__/|
   /  ▼▼▼ ヽ
   |   (●) (●) |
   |  三 (_又_)三|
   \__  ^_/
    / `ー(Ω)- ' ヽ
   i ,イ=      ヽ i
   U |三     ノU
  ⊂ニヽ ,r-.、  イ
     (,,ノ  .ヽ,,)

185 :118:2010/04/11(日) 23:47:30
これ使えないんですねo...rz
メモリマップトファイル?とやらを勉強してから出直してきます。
お騒がせしました。と、ありがとうございました。

186 :118:2010/04/11(日) 23:51:03
>>185
なんだよ、かまってちゃんか


187 :デフォルトの名無しさん:2010/04/11(日) 23:52:42
>>168
>WM_CREATEで一度しか渡してないのに
WM_ACTIVATEAPPのコードは何なんだ。

188 :デフォルトの名無しさん:2010/04/12(月) 02:32:02
メッセージクラッカマクロの返値 (LRESULT)(DWORD)(int) win32 の場合 (long)(unsigned long)(int)
これって符号どうなるの?

189 :デフォルトの名無しさん:2010/04/12(月) 03:02:46
どうもならない

190 :118:2010/04/12(月) 03:19:44
>>189
apiよりキャストの勉強しようず


191 :デフォルトの名無しさん:2010/04/12(月) 03:26:38
符号なんて利用する側の解釈の問題であって
キャストしたからといって符号が変わる訳ではない

192 :デフォルトの名無しさん:2010/04/12(月) 10:45:41
Shift-JISにない文字(♥だとかハングルだとか)を含むパスを
Unicode非対応のライブラリで扱う必要があります。
とりあえず、GetShortPathNameで8.3形式に変換して渡せば問題ないよう
なのですが、この関数で得た8.3形式のパスに現在のコードページで扱えない
文字が含まれないという確証がありません。

そもそも「8.3形式」とは何なのかをズバリ記述したドキュメントはないものでしょうか?

193 :デフォルトの名無しさん:2010/04/12(月) 11:38:01
古いファイルシステムの形式(というより制限かな)
ファイル名は拡張子をのぞいて最長8文字

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

だからそのシナリオで8.3形式に変換する意味はない。

194 :192:2010/04/12(月) 12:14:22
英語版Wikipediaの"8.3 filename"の項には
> The DOS filenames are in the OEM character set.
という記述があるのですが、これをMS自身のドキュメントで確認したいんですよね。

195 :デフォルトの名無しさん: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

196 :デフォルトの名無しさん:2010/04/12(月) 12:45:48
ここで質問していいのかわからないけどとりあえず書きます。

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

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

どう指定すればいいでしょうか?

197 :デフォルトの名無しさん: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」なのか?

198 :192:2010/04/12(月) 13:14:24
>>197
う〜ん、自分がやってることの裏付けが取れれば十分なので、
そこまで追究するつもりもないのですが……
いかにも問題が起きそうですね、それ。

199 :デフォルトの名無しさん:2010/04/12(月) 13:24:18
OEMコードページが異なるシステムで正常に読めないのは当然だし
ntfsではオプションだしexfatには存在すらしない

200 :デフォルトの名無しさん: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 ...のフルパスファイル名が入ってます。

201 :196:2010/04/12(月) 13:59:16
レンダリング時の画面モード?みたいなのがあるのかな…
ぐぐってもわかんないや…

202 :デフォルトの名無しさん:2010/04/12(月) 14:27:19
>>200
自己レスです
3番目のオプションに0ではなくて FILE_SHARE_READ を指定したら開けるように
なりました。

203 :196:2010/04/13(火) 00:11:37
自己解決!!
指定してたフォント名が正しくなかった…(スペース入れ忘れ)
でもCreateFontの方はそれを考慮してくれてて
狙ったフォントが表示されていたけど
Gdiplus::Fontの方はそれは考慮されず
違うフォントが表示されていたからフォントサイズが違ってました…

完全に一人相撲でした… スレ汚しすんません!

204 :デフォルトの名無しさん: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);


205 :デフォルトの名無しさん: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);
これでダメなら諦めろ

206 :デフォルトの名無しさん:2010/04/13(火) 17:14:27
>> 205
そのパラメータも試してみましたが、無理でした。
ファイルの中身をチェックするTOOLを作成してるので、どうしても読み込みたいのですが・・・

207 :デフォルトの名無しさん:2010/04/13(火) 21:24:46
無理なもんは無理。

208 :デフォルトの名無しさん:2010/04/13(火) 21:38:43
>>206
ロックの意味がなくなるので薦めないけど
いったん開いてダメだったら強制的にロック解除して開きなおせばいいんじゃない?

209 :デフォルトの名無しさん:2010/04/13(火) 21:42:24
強制的にロック解除なんてできんの?

210 :デフォルトの名無しさん:2010/04/13(火) 21:57:48
>>209
出来るよ


211 :デフォルトの名無しさん:2010/04/13(火) 21:58:56
どうやってやるのか教えてください!

212 :デフォルトの名無しさん: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


213 :デフォルトの名無しさん:2010/04/13(火) 22:17:10
pagefile.sys はどうやったらロックを解除できますか?

214 :デフォルトの名無しさん:2010/04/13(火) 22:48:22
ページファイル無効にして再起動したら外れてないか?

215 :デフォルトの名無しさん:2010/04/13(火) 22:53:20
そういうんじゃなくて、実行中にロックを外したいんだけど。

216 :デフォルトの名無しさん:2010/04/13(火) 22:56:59
死んだ方が早いから自殺しろ

217 :デフォルトの名無しさん:2010/04/14(水) 00:29:44
>215
OSが掴んでるんだからそんなことはできないと考えるのが普通じゃない?

218 :デフォルトの名無しさん:2010/04/14(水) 01:19:55
ページファイルって、どうしてファイルにしちゃったんだろうな。
HDDに専用のパーティションを作る方式にした方が安全だし速いだろうに。

ファイルとして他のデータと同列に格納されてるんだから、
非公開のアクセス手段があると考えた方が自然だと思うんだけど。

219 :118:2010/04/14(水) 01:43:13
>>218
ramdiskでも使ってろ

220 :デフォルトの名無しさん:2010/04/14(水) 01:50:54
ページファイルなんだから当たり前だろ。

221 :デフォルトの名無しさん:2010/04/14(水) 07:35:29
>非公開のアクセス手段があると考えた方が自然だと思うんだけど。

222 :デフォルトの名無しさん:2010/04/14(水) 11:02:56
素人の常識ほど危険なもんはない

223 :118:2010/04/14(水) 13:14:42
自分語り 乙w

224 :デフォルトの名無しさん:2010/04/14(水) 14:36:29
>>218
これだからLinux脳は

225 :デフォルトの名無しさん:2010/04/14(水) 14:47:09
別にLinuxもSolarisも*BSDもswapファイルも使えるだろ


226 :デフォルトの名無しさん:2010/04/14(水) 15:53:48
質問です。
ファイルパスを正規化する方法はないでしょうか?
".."や"."を解決し、なるべく綺麗なパスにする方法です。

例えば
"data/hoge/.././sub/"

"data/sub/"
にしてくれるような感じです。

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

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



227 :デフォルトの名無しさん:2010/04/14(水) 16:00:01
chdir して pwd を取得し直す
とか

228 :デフォルトの名無しさん:2010/04/14(水) 16:11:44
APIでやらないとだめ?
単純に「\.\」は「\」に置換して、あとは正規表現で「hoge\..\」みたいなパターンを前から順番に削除してけばいいだけじゃん

229 :デフォルトの名無しさん:2010/04/14(水) 16:28:20
>>228
いえ、単に PathCanonicalize みたいなAPIが用意されていたので、APIがあればと思ったのです。
\\ から始まるネットワークアドレスとか、c:\とか、そういう「知らない人は知らない」パスもありますし、自分自身がそれらのパス表記法を全て知っている自信はまったくないもので。

「\.\」も、SJISだと問題がありますしね。

230 :デフォルトの名無しさん:2010/04/14(水) 16:34:02
\\.\c:\hogehoge
みたいなのもあるなー

231 :デフォルトの名無しさん:2010/04/14(水) 16:51:56
>>230
それって実在する可能性のあるパス表記法ですか?
途中に ":" が入っていることなんてあるんでしょうか?

232 :118:2010/04/14(水) 17:08:13
>>230


233 :デフォルトの名無しさん:2010/04/14(水) 17:29:41
在るっつってるのに在るのか聞くとはこれいかに

234 :デフォルトの名無しさん:2010/04/14(水) 17:30:02
>>231


235 :デフォルトの名無しさん:2010/04/14(水) 17:34:39
検索も出来ない
人の話も信用しないタコスケのためのURL
http://tokyo.cool.ne.jp/chokuto/urawaza/api/CreateFile.html

236 :118:2010/04/14(水) 17:47:05
ビングレカス


237 :デフォルトの名無しさん:2010/04/14(水) 17:52:12
↑こっちまで恥ずかしくなるような低脳レスを繰り返すな

238 :デフォルトの名無しさん:2010/04/14(水) 17:52:57
信用していないのではなく「ある」が「引数として渡される可能性がある」という意味だと捉えたためです。
レスありがとうございました。
>>235参考にさせていただきます。

239 :デフォルトの名無しさん:2010/04/14(水) 17:56:16
"\\.\c:\" でググっても全然ひっかかりません><;

240 :118:2010/04/14(水) 18:05:18
>>237
矢印厨うぜー

241 :デフォルトの名無しさん:2010/04/14(水) 19:59:13
>>231
少なくとも
>>228
>単純に「\.\」は「\」に置換して、
の言うことは聞いては駄目!!


242 :118:2010/04/14(水) 20:15:53
>>241
じゃ、てめぇが代案示しなよ
非難ばっかするな


243 :デフォルトの名無しさん:2010/04/14(水) 20:25:40
>118
>242

244 :デフォルトの名無しさん:2010/04/14(水) 20:26:24
   

245 :118:2010/04/14(水) 20:37:21
>>243
>>239


246 :デフォルトの名無しさん:2010/04/14(水) 20:41:09
ドライブレターの直後以外でファイルパスの途中にコロンが入るのってどんなケース?

247 :デフォルトの名無しさん:2010/04/14(水) 20:50:29
ないと思う。あ。なんとかストリームってコロンだっけ。

248 :118:2010/04/14(水) 21:23:41
>>246
localhost:8080

249 :デフォルトの名無しさん:2010/04/14(水) 21:39:00
そういえば最近はWebDAVのアドレスなんかにも対応しないとだめだな

250 :デフォルトの名無しさん:2010/04/15(木) 01:36:47
>>248
UNCってファイル用のAPIで普通にオープンとかできるの?

251 :デフォルトの名無しさん:2010/04/15(木) 01:42:17
パスの先頭に\\?\UACとか付ければ開けるんでなかったか

252 :デフォルトの名無しさん:2010/04/15(木) 03:24:42
Alternate Data Stream

253 :デフォルトの名無しさん:2010/04/15(木) 06:27:15
トラックバー(スタイダー)の質問です。
つまみ以外の場所をクリックしたら即座にその値を設定したいのですが、その方法が分かりません。
具体的に言うと、つまみがPageSizeの幅づつ移動するのでなく、
MediaPlayerのように一瞬でつまみがカーソル位置に移動して欲しいのです。
どうしたらいいでしょう。

254 :デフォルトの名無しさん:2010/04/15(木) 06:30:58
>>250
それUNCと違う。

255 :デフォルトの名無しさん:2010/04/15(木) 06:52:02
>>247
代替ストリーム
ファイル名とかフォルダ名の後ろに「:ファイル名」

256 :デフォルトの名無しさん:2010/04/15(木) 07:29:27
そういえばWindows7からサブストリームがコマンドラインから開けなくなったよな
地味に困る

257 :118:2010/04/15(木) 09:58:35
>>250
普通に開ける

258 :デフォルトの名無しさん:2010/04/15(木) 10:53:09
\\?\ をCreateFileWに渡せば、32767文字までいける
そう考えていた時期が僕にもありました

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

実際はいけねーんだよ
どうなってんだか・・・;;

259 :デフォルトの名無しさん:2010/04/15(木) 11:02:21
フルパスで32000文字程度
各要素はファイルシステム依存
FATやNTFSは255文字
fsutil fsinfo volumeinfoでコンポーネント最大長を確認できる

260 :デフォルトの名無しさん:2010/04/15(木) 11:03:52
MAX_PATHの用法用量は正しくお使いください。

261 :デフォルトの名無しさん:2010/04/15(木) 11:04:02
なるほど
全体が32767文字までいけても、ファイル名だけの長さにも制限があると
ありがとう!

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

となるようだ
認識あってますかね?

262 :デフォルトの名無しさん: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.

263 :デフォルトの名無しさん:2010/04/15(木) 11:23:07
英語版のMSDNは詳しいですね・・・
日本語版はCreateFileからリンクもされていないし、そもそも詳細ページが翻訳されていない・・・
ttp://msdn.microsoft.com/ja-jp/library/aa365247%28v=VS.85%29.aspx

頑張って読んでみます

264 :デフォルトの名無しさん:2010/04/15(木) 11:52:30
面倒くさいからエラー出るまで適当にやって
エラーが出たらきちんと対処することにした

265 :118:2010/04/15(木) 14:19:09
http://www.deai-0yen.net/girls-rori/src/1226851574824.jpg

266 :デフォルトの名無しさん:2010/04/15(木) 14:50:14
これ開くとキャッシュに画像が残るから単純所持違反でお縄って寸法ですね

267 :デフォルトの名無しさん:2010/04/15(木) 15:09:52
グロ貼んな

268 :118:2010/04/15(木) 15:10:05
>>266
CreateFileでFILE_FLAG_NO_BUFFERINGすればええやろ


269 :デフォルトの名無しさん:2010/04/16(金) 11:56:04
質問です。

uintptr_t p = _beginthread
と走らせたスレッドが、終了しているかどうかを p を使って知る方法はないでしょうか?

270 :デフォルトの名無しさん:2010/04/16(金) 12:37:50
ppp

271 :デフォルトの名無しさん:2010/04/16(金) 12:47:28
>>269
無い
pが有効なカーネルオブジェクトのハンドルでない場合 終了した
pが有効なカーネルオブジェクトのハンドルである場合 終了した後ハンドルが再利用されたかもしくは終了していない

ただしCREATE_SUSPENDで_beginthreadしてHANDLE_FLAG_PROTECT_FROM_CLOSEフラグをセットすれば普通に判定可能

272 :デフォルトの名無しさん:2010/04/16(金) 13:07:50
>>271
はあ?
WaitForSingleObject って知ってる?
質問スレで嘘書いててんじゃねーよ

273 :デフォルトの名無しさん:2010/04/16(金) 13:23:27
_begintheadは何を返し、何をなすか。
スレッド終了時に何をしているか
を調べなされ。

ていうか、VCスレで訊いた方が良いぞ。
処理系依存だし。

274 :デフォルトの名無しさん:2010/04/16(金) 13:53:35
過去スレほじくってたら WinAPIスレでたまに話題にあがってるな

_beginthread は スレッド終了時に戻りのハンドルを CloseHandle しやがりますので
_beginthreadex 使えぇぇ とか

275 :デフォルトの名無しさん:2010/04/16(金) 13:54:31
socketでsrcポートとdstポートを指定する方法をおしえてください

276 :デフォルトの名無しさん:2010/04/16(金) 14:06:55
CloseHandleしやがるからこそ、WaitForSingleObjectで終了しているのかを監視できるんとちゃうん?

277 :デフォルトの名無しさん:2010/04/16(金) 14:16:43
>>276
いや
スレッド終了時にシグナルになるから WaitForSingleObjectで終了しているのか判断できる

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

CloseHande されない場合、確認側が明示的に CloseHandle するまでの間
ハンドルの衝突を防ぐことができるから より確実だ ということさ

278 :デフォルトの名無しさん:2010/04/16(金) 14:18:58
なるほど。
スレッドが終了する前にWaitForできるとは限らないもんな

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

再利用がどれくらいの頻度で行われるのかもついでに試してみたら、意外と再利用されまくるのね。
ハンドルが簡単にかぶるわ

279 :デフォルトの名無しさん:2010/04/16(金) 14:29:40
質問です。
プラットフォームSDK/win32 で CreateFile を使った場合、
戻された HANDLE からファイルを closeするにはどうしたら良いのでしょうか。

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

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

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




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

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

>解説
>CloseHandle 関数は、次のオブジェクトのハンドルを閉じます。
>?ファイル


281 :デフォルトの名無しさん:2010/04/16(金) 14:39:26
Win32APIを弄りだして最初に面食らう一つがCloseHandle。

282 :デフォルトの名無しさん:2010/04/16(金) 14:45:54
日本語ページはクソ

http://msdn.microsoft.com/en-us/library/aa363858(VS.85).aspx

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

クソワロタwwwwwww マジで日本語版MSDN死んでいいよwwww 嫌がらせだろこれww


284 :デフォルトの名無しさん: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

285 :デフォルトの名無しさん:2010/04/16(金) 15:04:31
MSDN見るなら英語版にしろって言う人時々いるけど、これまさにその1例になりそうな話だなww
そして何かのコピペになりそうだw

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



286 :デフォルトの名無しさん:2010/04/16(金) 15:06:33
関数呼び出しにに必要な構造体とか関数ポインタ型へのリンクがないだけでも
使いものにならないのに。

287 :デフォルトの名無しさん:2010/04/16(金) 15:23:47
>>271
すいません、調べてみても
HANDLE_FLAG_PROTECT_FROM_CLOSE
を使う必要性が感じられないのですが。

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

総合すると _beginthreadex を使えばOK
ということになりそうなのですが、exを使った場合でも
HANDLE_FLAG_PROTECT_FROM_CLOSE
の出番はありますでしょうか?

288 :デフォルトの名無しさん:2010/04/16(金) 15:25:13
いまだにVC6使ってる俺は2001年10月版の日本語MSDN使ってるけど
ちゃんと

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

てなってるな。劣化してるのかな?

289 :デフォルトの名無しさん:2010/04/16(金) 15:33:56
>>287
>>271は良くわかっていない初心者だから放置していいよ。
exから得たハンドル使えば解決。

290 :デフォルトの名無しさん:2010/04/16(金) 15:35:36
>>287
無い。 が、終了確認後に CloseHandle してやらないとまずい。

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

_beginthreadex
○ スレッド終了後もハンドルは維持され終了判定は容易。
 だが、自前でハンドルをクローズしないと漏れ漏れ

291 :デフォルトの名無しさん:2010/04/16(金) 15:36:27
>>287
CREATE_SUSPENDが使えないなら新規スレッド側で待機
_beginthreadexを使うなら必要ない

292 :デフォルトの名無しさん:2010/04/16(金) 16:17:33
すいません、何度も細かく聞いて申し訳ないのですが。

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

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

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

という認識正しいでしょうか?

293 :デフォルトの名無しさん:2010/04/16(金) 16:21:35
>>292
1 おけ
2 おけ  生死判断したいなら、生死判断した後にクローズ(おおよそ スレッドを作った側ではある)

294 :デフォルトの名無しさん:2010/04/16(金) 16:40:50
ありがとうございます。

exじゃない版は、連絡用の「何か」とスレッド用の「何か」が分離されていないから色々扱いづらかったんですね
ex版を使うべきっていう意見を正しく理解できたと思います。

295 :デフォルトの名無しさん:2010/04/16(金) 16:45:05
>>294
「何か」=「_begintheadがCreateThreadを呼んで返された『スレッドハンドル』」な

296 :デフォルトの名無しさん:2010/04/16(金) 16:58:09
>>294
スレッド用の何かというが、exでもランタイムが使うTLSなんてユーザー側に見せてないだろ
分離できてないのはお前の頭じゃね?

297 :デフォルトの名無しさん:2010/04/16(金) 17:03:03
だから「何か」って表現してんだろ

298 :デフォルトの名無しさん:2010/04/16(金) 17:28:55
>>296
インストール時にCRTのソースもインストールしておくと実装が見れるが
TLS だけじゃなく、浮動小数点周辺や構造化例外(C++ の例外をうまくスレッド別に配送)の面倒を見てるね

ま、ランタイムにかかわる表面には出てこない何かとひとくくりの表現で良いんでない? (1の何かに関して)

299 :デフォルトの名無しさん:2010/04/16(金) 20:45:03
最近打ち合わせでは分かり切ったことは飛ばして話を進めているのに
知識として持っててあたりまえのことを質問する馬鹿が増えた

300 :118:2010/04/16(金) 21:13:46
そうかあ。

 俺、ブラやぱんつに興味ないんだ。
 スリップが透けてるといいと思うけど、いないしな。
 下着なしも、もっといないしな。
 透けてなくていいよ。


301 :デフォルトの名無しさん:2010/04/18(日) 16:42:20
質問
環境はWin7、VC6++でダイアログベースのアプリです。
マウスオーバーでダイアログを非表示にして、表示されていた位置からマウスを
離すと再びダイアログを表示させることはできますか?

非表示はWM_MOUSEMOVEのときにShowWindow(SW_HIDE)でできるんですが
マウスを離して表示させるのはどうやったらできるでしょうか。

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

きちんと動作確認して、不意な操作や例外的な対処もしないとマズいけど


303 :デフォルトの名無しさん:2010/04/18(日) 16:49:07
WM_MOUSEMOVE (1回目はマウスをキャプチャするだけ)
SetCapture
ShowWindow(SW_HIDE)

WM_MOUSEMOVE (2回目はHIDE中に呼ばれていればマウスキャプチャをリリース)
ReleaseCapture
ShowWindow(SW_SHOW)


304 :デフォルトの名無しさん:2010/04/18(日) 16:58:01
>>302,303
回答ありがとうございます。
SetCapture試してみます。

305 :デフォルトの名無しさん:2010/04/18(日) 17:23:35
>>304 じゃないけど試してみた
使い方間違ってるのかもしれないけど
Hide した直後から WM_MOUSEMOVE が来なくなってるみたいだw
Release しようにもマウス座標が取れないw

306 :デフォルトの名無しさん:2010/04/18(日) 17:34:16
>>305
304です
同じくうまくいきませんでした。

SetCapture後にHideしたらかってにReleaseされて
Hide後にSetCaptureした場合はキャプチャされないような動きです。

307 :デフォルトの名無しさん:2010/04/18(日) 17:36:58
TrackMouseEventとWM_MOUSELEAVEを使ったらいけるんでない?

308 :デフォルトの名無しさん:2010/04/18(日) 17:54:07
LayeredWindowにして
alphablendを0にして
translatedにするといいかも

309 :デフォルトの名無しさん:2010/04/18(日) 17:59:07
× translated
○ transparent

310 :デフォルトの名無しさん:2010/04/18(日) 18:05:09
SetCapture関数はフォアグラウンドウィンドウでしか使えなかった筈なので、
フォアグランドで且つオーナーなウィンドウがSetCaptureしてやればいいと思うよ。
例えばGetDesktopWindow()で取得したHWNDをSetCapture()に渡すとか。

311 :304:2010/04/18(日) 18:38:44
>>307
Hideした瞬間にWM_MOUSELEAVEが来てしまいました。
そのときのWM_MOUSELEAVEを無視するとして
ダイアログがあった場所から離れてもWM_MOUSELEAVEはこないようです。

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

>>310
デスクトップのHWNDをSetCaptureに渡してみましたが、
渡さない場合と同じくWM_MOUSEMOVEがこないようです。。
ん〜、いけるような気はするのですが。

312 :デフォルトの名無しさん:2010/04/18(日) 19:27:25
>>310
それだとSetCaptureしたあとのマウスイベントがDesktopWindowの方に逝っちゃう

313 :デフォルトの名無しさん:2010/04/18(日) 19:36:54
とりあえずアイコン化(最小化)するっていう手もあるかもね
自分で戻さないといけないみたいだけど

314 :デフォルトの名無しさん:2010/04/19(月) 02:26:36
コントロールを透明化したら、下のコントロールじゃなくてデスクトップまで透けてしまった

315 :デフォルトの名無しさん:2010/04/19(月) 03:13:04
荒れてないときのWIN32スレはすごいぬ、天才ばっかりだぬ

316 :デフォルトの名無しさん:2010/04/19(月) 03:24:02
単純にタイマーでカーソル位置を監視ってのじゃ駄目かな…

317 :デフォルトの名無しさん:2010/04/19(月) 03:32:37
TrackMouseEvent で MOUSELEAVE は無視して MOUSEMOVE を見れば良いと思う

318 :デフォルトの名無しさん:2010/04/19(月) 07:08:01
TrackMouseEvent で WM_MOUSEMOVE はこないようです

319 :デフォルトの名無しさん:2010/04/19(月) 08:27:38
面倒だからフックしろよ

320 :デフォルトの名無しさん:2010/04/19(月) 10:17:08
フックだ、チンだ、あーらのびちゃった

321 :118:2010/04/19(月) 14:06:18
>>320

2ちゃんの画一的なコメント 乙


322 :デフォルトの名無しさん:2010/04/19(月) 14:49:52
DrawIconExでマウスカーソルを縮小してHDCに埋め込みたいんだが、
beamのアイコンがつぶれてしまう。
なんかいい方法ない?

323 :デフォルトの名無しさん:2010/04/19(月) 14:53:10
>HDCに埋め込みたい
関係無いけど、この表現に物凄い違和感



324 :デフォルトの名無しさん:2010/04/19(月) 17:52:12
塗り込みたい

325 :118:2010/04/19(月) 18:15:19
ネトウヨうぜえ

326 :304:2010/04/19(月) 20:23:25
>>316
一応その方法で行くことにしてうまく実現できました。

今回のやりたいことを実装してるツールがVectorにあったので、
Spy++で見てみるとそれもTimerでやってるみたいだったので
真似することにしました。

327 :デフォルトの名無しさん:2010/04/20(火) 16:17:39
ノートPCで現在AC電源か、バッテリーを使ってるかを識別できるAPIを教えてください

328 :118:2010/04/20(火) 16:52:02
ノートPCかデスクトップを判別するAPIが無いから不可能

329 :デフォルトの名無しさん:2010/04/20(火) 16:57:10
http://www.microsoft.com/japan/whdc/system/pnppwr/wmi/wmi-acpi.mspx

330 :デフォルトの名無しさん:2010/04/20(火) 17:00:46
相変わらず糞の役にも立たないゴミ共だなww
GetSystemPowerStatusであっさり出来たわ役立たず共

331 :118:2010/04/20(火) 17:25:45
>>330
おまえがな

332 :デフォルトの名無しさん:2010/04/20(火) 17:39:21
お前はアホー知恵袋でオナニーでもしてろゴミ

333 :118:2010/04/20(火) 17:49:42
>>332
おまえがな

334 :デフォルトの名無しさん:2010/04/20(火) 18:38:04
何だか近頃無用のレスと自己主張をしていて他人を多少なりとも面倒くさい気持ちにさせるだけのために存在するんだろうと思わせる何かをよく見かけるが

それすら全くどうでもいい

335 :デフォルトの名無しさん:2010/04/20(火) 18:47:02
何てどうでもいいレス

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

337 :デフォルトの名無しさん:2010/04/20(火) 18:57:13
質問です。

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

>HEAP_NO_SERIALIZE:この関数がヒープにアクセスしている間、相互排他を行わないようにします。
 ↑この一文を分かりやすく解説してください。


338 :118:2010/04/20(火) 19:40:01
>HEAP_NO_SERIALIZE:この関数が動的に確保した領域にアクセスしている間、他のスレッドからもアクセス可能になる。


339 :デフォルトの名無しさん:2010/04/20(火) 19:49:08
クリティカルセクションを使わない

340 :デフォルトの名無しさん:2010/04/20(火) 19:50:05
なんかところどころレスが空欄になってるんだが

341 :デフォルトの名無しさん:2010/04/20(火) 20:42:04
キチガイが居るだけだ
気にするな

342 :118:2010/04/20(火) 20:48:34

おまえがな


343 :デフォルトの名無しさん:2010/04/20(火) 21:00:50
「ファイルを開く」DLGでUNCなどのMAX_PATHを越える深いパスを扱えるようにするにはどうするのですか?
ちなみに cygwin を用いて深いディレクトリ、ファイルは生成できます・・・

344 :デフォルトの名無しさん:2010/04/21(水) 10:18:37
タスクマネージャーのプロセスシートに自作アプリを列挙させないようにするにはどうしたらいいですか?

345 :デフォルトの名無しさん:2010/04/21(水) 10:49:53
>>343
UNICODEで開発
>>344
ダイアログスタイルで開発

346 :デフォルトの名無しさん:2010/04/21(水) 11:03:34
>>344
MFCを使ってダイアログベースで作ってます。

347 :デフォルトの名無しさん:2010/04/21(水) 11:07:46
常駐プログラム隠蔽テクニック でぐぐる

348 :デフォルトの名無しさん:2010/04/21(水) 11:09:47
なんだ、結局しらねーんだw


349 :デフォルトの名無しさん:2010/04/21(水) 11:13:08
他所様のプロセスにインジェクションして寄生すれば

350 :デフォルトの名無しさん:2010/04/21(水) 13:01:02
>>345
>UNICODEで開発

343です。
当初私もそう思っていました。
UNICODE版のGetOpenFileNameWを使っているのですが、
開くDLG(コモンダイアログ)内部でMessageBoxを表示しているようです。
OFNHookProcも試したのですが、CDN_FILEOKが呼び出されません。
WndProc をHOOKして[OK]ボタンや[ファイル名DBLCLK]を横取りしないといけないのでしょうか?


351 :デフォルトの名無しさん:2010/04/21(水) 16:29:38
IPヘルパAPIでDOSコマンドのroute printで表示される
Persistent Routesリストの取得方法を教えてくださいください

352 :デフォルトの名無しさん:2010/04/21(水) 16:48:48
たぶん隠しAPIのAllocateAndGetIpForwardTableFromStackを使う

353 :デフォルトの名無しさん:2010/04/21(水) 17:02:10
ぐぐっても出てきません><

354 :デフォルトの名無しさん:2010/04/21(水) 17:02:42
regmonで見た限りではAPIではなくレジストリを直接読み書きしている模様
System\CurrentControlSet\Services\Tcpip\Parameters\PersistentRoutes
System\CurrentControlSet\Services\Vxd\MSTCP\PersistentRoutes

355 :デフォルトの名無しさん:2010/04/21(水) 17:10:51
>>354
ありがとうございます。
確かにレジストリに存在しました!
これを弄くり倒します。

356 :デフォルトの名無しさん:2010/04/21(水) 17:15:33
あ、そういやこれで確かにリストは取得できるけど
route add ができない><
いやレジストリに追加しただけでは実際にルート処理されないですよねこれ?

357 :デフォルトの名無しさん:2010/04/21(水) 17:20:53
ちなみにPersistentRoutesを検索してみたら3箇所でてきた。
んで>>354の2つ目のServicesの中にVxdは存在しませんですた。
とりあえず、レジストリエディタで適当にルートぶち込んでみっかなあ

358 :デフォルトの名無しさん:2010/04/21(水) 17:46:07
おっと!!!
そういやActiveアレには普通にaddできるんだから
レジストリに追加しといてヘルパapiでActiveにaddすりゃーいいってことか!!!
レジストリにかいときゃリブったらちゃんとアレされたのは確認できたし

いやはや>>354に感謝

359 :デフォルトの名無しさん:2010/04/21(水) 17:54:26
vxdはwindows98等
自分なら裏でroute.exeを実行する

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

ぶっちゃけレジストリ弄くるのも不本意なんだがAPIでできないっぽいからそこは曲げてアレ

361 :デフォルトの名無しさん:2010/04/21(水) 23:42:23
GDI+のImageクラスでbmpファイルを読み込み、
CreateCompatibleBitmapで作成した領域に描画して、
BitBltの背景色を利用して白黒の1bitモノクロ画像に変換しようとしたところ、
GDI+で読み込んだビットマップがうまく変換されませんでした。

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

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

理由が分かる方がいましたら教えてください。

362 :デフォルトの名無しさん:2010/04/22(木) 00:01:31
背景色指定が合っていないんじゃないか?
GetPixelで返ってきた実際の値を使わないと駄目、とかありそう。
素直にDIBSection使っといた方が良い気がするけど。

363 :361:2010/04/22(木) 05:46:16
>>362
有難うございます。
GetPixelで取得した値を使用してみても駄目でした。
なぜCreateCompatibleBitmapだとSetBkColorで設定した色が変換されないのかが分からないままです。

364 :デフォルトの名無しさん:2010/04/22(木) 07:15:17
パレット

365 :デフォルトの名無しさん:2010/04/22(木) 10:35:43
パレット

366 :デフォルトの名無しさん:2010/04/22(木) 12:39:06
プディング

367 :デフォルトの名無しさん:2010/04/22(木) 12:57:16
パンナコッタ

368 :デフォルトの名無しさん:2010/04/22(木) 13:50:04
なんてこった

369 :118:2010/04/22(木) 14:32:00
黙れゴミ共

370 :118:2010/04/22(木) 14:33:04
>>368
>>367
爆笑、お前面白すぎ、
エンタに出てる芸人以上じゃね?
久々にわらかしてもらったわw


371 :118:2010/04/22(木) 14:33:46
>>369
おまえがな


372 :デフォルトの名無しさん:2010/04/22(木) 15:02:55
どこに書いたらいいかと思ったけど、Windows系の質問なのでこちらにしました。
シリアルポート com1とかが他アプリから開いたイベントを取得したいのですがどうすればよろしいでしょうか?

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

なんてのを考えてるんですが、他に良い案ないでしょうか?


373 :デフォルトの名無しさん:2010/04/22(木) 15:20:26
フィルタドライバを作成して、IRP_MJ_CREATEを捕まえる

374 :デフォルトの名無しさん:2010/04/22(木) 15:29:19
返答ありがとうございます。
フィルタドライバですか、経験なかったです。
調べてみるとちょっと敷居高そうですが、チャレンジしてみます。
ありがとうございました。


375 :デフォルトの名無しさん:2010/04/22(木) 15:52:04
RegEnumValueでキーの値を取得しているのですが
登録されている数分ループするのですが正常に値が取得できないのがあります。
4個登録されていてループは5回目で抜けるのでそこはOKなんですが
データも3個までは正常にとれてますが4個目は何故かNULLになっています。
どうしてですか?

376 :デフォルトの名無しさん:2010/04/22(木) 15:58:10
できましたおさわがせしましたごみすみませんどもでしたしね。

377 :デフォルトの名無しさん:2010/04/22(木) 17:39:34
おいおい、せっかくYahoo!知恵袋のアカウント変えたのにまだいるのか118もどき。
相変わらず118を名乗る理由がよくわからんがな。

378 :118:2010/04/22(木) 17:48:52

お前の発言ワケワカラン

379 :デフォルトの名無しさん:2010/04/22(木) 20:50:13
>>343
>>345
>>350
Given up

380 :デフォルトの名無しさん:2010/04/22(木) 21:58:23
>>378
んじゃいいや笑
まぁ見づらいからあんま無駄レスすんなよ。

以上無駄レスでした。

381 :デフォルトの名無しさん:2010/04/22(木) 22:09:49
UNICODE, _UNICODE指定でビルドすればいいんじゃないのん?

382 :118:2010/04/22(木) 22:19:48
>>380
黙れゴミ

383 :デフォルトの名無しさん:2010/04/22(木) 22:57:50
    ヘ⌒ヽフ
   ( ・ω・) dd
   / ~つと)

384 :118:2010/04/22(木) 23:05:49
www

385 :118:2010/04/22(木) 23:12:21
VS2010もう入れた?

386 :118:2010/04/22(木) 23:14:12
VS2020もう入れた?

387 :118:2010/04/22(木) 23:26:03
VS2010インストールしたよ。

388 :118:2010/04/22(木) 23:29:10
したよ。

389 :118:2010/04/22(木) 23:40:53
俺はまだ。ダウンロードはしたけどな。

390 :118:2010/04/23(金) 00:38:00
あw

391 :118 ◆ToxyFMVOts :2010/04/23(金) 01:00:03
お前らいい加減にしろ


392 :119:2010/04/23(金) 01:03:05

お前キモイ

393 :118 ◆ToxyFMVOts :2010/04/23(金) 01:52:01
自分語り 乙w

394 :デフォルトの名無しさん:2010/04/23(金) 03:23:48
質問。ウインドウのクラス化なんですが、

lpfnWndProcにstaticなメンバ関数をセットして、そこでGetWindowLongでポインタを取得しようと思ったんですけど
CreateWindowをコールした時点でstaticなメンバ関数が呼ばれてしまいます


395 :デフォルトの名無しさん: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はサンク使ってる。

396 :デフォルトの名無しさん:2010/04/23(金) 21:02:44
Core i7 で物理コア数を取得したいのですが、
CPUID や GetProcessAffinityMask では論理コア数しか取得出来ません。
もしかすると私のやり方が悪いのかもしれませんが…。
どなたか物理コア数の取得方法を教えて下さいませんでしょうか。

397 :デフォルトの名無しさん:2010/04/23(金) 21:19:28
GetSystemInfoで物理コア数が取れないか?
論理プロセッサ数が欲しけりゃ別API使えってわざわざ書いてる位だし。

398 :デフォルトの名無しさん:2010/04/23(金) 21:33:45
>>397
SYSTEM_INFO sysinfo;
GetSystemInfo(&sysinfo);
printf("dwNumberOfProcessors %d\n", sysinfo.dwNumberOfProcessors);

ご回答ありがとうございます。
上記の様にした所、8の数値が返ってきました。
Core i7 860 の物理コアは4のはずなので、
多分論理コア数かと思われます。

399 :デフォルトの名無しさん:2010/04/23(金) 21:39:50
>>395
どうもありがとう。
ちなみにイベント発生毎に毎回GetWindowLongするのって重いんですか?気にするほどでもないですか

400 :118:2010/04/23(金) 21:40:55
ハイパースレッドってOSから見たら物理CPUに見えるんじゃないの?

401 :118 ◆ToxyFMVOts :2010/04/23(金) 21:42:11
>>400
118をNG登録した

402 :118■ToxyFMVOts:2010/04/23(金) 21:48:20
自分の回答が読めないじゃん。

403 :118 ◆ToxyFMVOts :2010/04/23(金) 22:04:19
>>402
ヒント:正規表現


404 :118 ◆LHct4pvbDE :2010/04/23(金) 22:11:13
つーかニセモノウザイよ。

405 :118 ◆CzRT9/fh7c :2010/04/23(金) 22:11:41
お前が偽物じゃね?

406 :TT8:2010/04/23(金) 22:15:02
俺が偽者だ!

407 :ll8:2010/04/23(金) 22:16:48
そうだな

408 :118 ◆ToxyFMVOts :2010/04/23(金) 22:51:02
マジ低脳共がウザすぎる

409 :戦闘力118のゴミ:2010/04/23(金) 23:14:29
数字コテもトリップ付ける知恵を身に付けたが、
数字コテ自体の弱いところを突付かれたな。
もう誰が本物かはどうでもいい。
なぜならば、俺たちが数字コテだからだ。

410 :118:2010/04/23(金) 23:23:35
CPUIDで取るしかないんかね。

411 :118 ◆ToxyFMVOts :2010/04/23(金) 23:23:40
↑誰かこのゴミ回収しとけ

412 :118 ◆CB.8kw7Ixg :2010/04/23(金) 23:35:05
なんでトリップ割れたんだろ?

413 :118 ◆HC9IbFdEiw :2010/04/23(金) 23:38:09
知らんがな。

414 :(^q^) ◆HC9IbFdEiw :2010/04/23(金) 23:50:54
実は大概の酉はググればでてきちゃう

415 :デフォルトの名無しさん:2010/04/23(金) 23:51:36
更に言うと◆HC9IbFdEiwの酉は
#811


416 :118 ◆CzRT9/fh7c :2010/04/23(金) 23:56:58
マジ偽物うぜぇ

417 :118 ◆c37UjiIGfA :2010/04/24(土) 00:04:35
もうコレで行くわ
これなら単細胞共にはわかんねーだろ

418 :118 ◆c37UjiIGfA :2010/04/24(土) 00:07:33
ばればれわろたwwww
#1180

419 :118 ◆l9Zkhsj0XQ :2010/04/24(土) 00:09:54
↑このゴミを処分することを許可する

420 :118 ◆rIKVz7F.VU :2010/04/24(土) 00:13:09

            ∩_ 
           〈〈〈 ヽ
          〈⊃  }
   ∩___∩  |   |
   | ノ      ヽ !   !
  /  ●   ● |  /
  |    ( _●_)  ミ/ こいつ最高にアホ
 彡、   |∪|  / 何様のつもりですか
/ __  ヽノ /
(___)   /


421 :118 ◆S1/9LO44a2 :2010/04/24(土) 00:15:37
これは俺ものるしかない

422 :391 ◆CB.8kw7Ixg :2010/04/24(土) 00:25:25
118を語るやちらは消えろ
俺が本物

423 :118 ◆9VHTWNxbY2 :2010/04/24(土) 00:30:22
いやいや某でござる

424 :デフォルトの名無しさん:2010/04/24(土) 00:31:10
>>410
GetLogicalProcessorInformationで一応できるけど、
Vistaより前は無理だからCPUID使っとけって書いてるな。

425 :118 ◆5aHxUR0jw6 :2010/04/24(土) 03:41:41
>>422
は?てめえになんざ興味ねぇよ
失せろ391

426 :118:2010/04/24(土) 07:39:51

興味ないのにその喰いつきはなんなんでしょうかw


427 :118 ◆NYAN/2wQEQ :2010/04/24(土) 08:31:47
ここネタスレだったのか
今まで全く気付かなかった
迂闊だった

428 :デフォルトの名無しさん:2010/04/24(土) 12:36:42
今までアプリのセットアップにInstallShield 6.3を使っていたのですが
諸事情で自分でセットアッププログラムを自前で作り直すことになりました。

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

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

ちなみに、ShellExecuteで"shutdown -r"を呼び出してもやはりエラーダイアログは
出てしまいました。
DOSプロンプトから呼び出したときには見たことがないのに、なぜなんでしょう。

429 :デフォルトの名無しさん:2010/04/24(土) 12:53:13
元に戻したいのか
解決したいのか
結局どっちなんだ?

430 :118 ◆pOL/VRNq6Y :2010/04/24(土) 12:59:02
普通にWindows Installer使えよ

431 :デフォルトの名無しさん: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軸が上になって表示されると思ったんですが、
他のウインドウの下にある状態で表示されてしまいます。記述が間違っているんでしょうか?


432 :118 ◆pOL/VRNq6Y :2010/04/24(土) 21:17:17
HWND_TOPMOSTだろ

433 :431:2010/04/24(土) 21:44:12
TOPMOSTだと常にどのウインドウよりも一番上になってしまいました。
通常状態でZ軸の一番上に持ってこようと思っています。


434 :デフォルトの名無しさん: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


435 :118 ◆pOL/VRNq6Y :2010/04/24(土) 22:21:35
よくわからんのだけど、一時的に最前面に持ってきたい、ってこと?
制限はあるけど、SetForegroundWindow()でいいんじゃね?

436 :デフォルトの名無しさん:2010/04/24(土) 22:43:36
>>435
できました、ありがとうございます。
何故431で駄目だったのかは謎です


437 :118 ◆pOL/VRNq6Y :2010/04/24(土) 22:56:21
よくやった!

438 :デフォルトの名無しさん:2010/04/25(日) 11:58:05
ChangeMenuのAPIの詳細が知りたいです。教えてください。お願いします.

439 :118 ◆ayPjxbmM2c :2010/04/25(日) 12:13:31
そんなAPIない。

440 :デフォルトの名無しさん:2010/04/25(日) 19:11:03
char folder[100]="C:\\project";

CreateWindow("STATIC",folder…);
でフォルダ名を表示させてるんですけど、ものすごい長いパスでも表示できるようにしたいです。
CreateWindow("EDIT" にしてもパスがボックス以上の長さで表示されません、→ボタンを押したら続きが
表示されるようにしたいのですがどうすれば良いのでしょう。

441 :デフォルトの名無しさん:2010/04/25(日) 19:38:01
CreateWindowW

442 :デフォルトの名無しさん:2010/04/25(日) 19:39:29
そうなるように自分で書け。ツールチップ使うなりなんなり自分の都合で


443 :440:2010/04/25(日) 20:25:56
パラメータ不足でES_AUTOHSCROLLを追加してできました。
ツールチップという方法もあるとは、自分で調べる癖をもっと持たないと駄目ですね

444 :デフォルトの名無しさん:2010/04/26(月) 09:47:06
p

445 :118:2010/04/26(月) 11:07:48
誰か構ってくれ〜     ゚∩              :ノノ ゚                し′
   ,,------ 、      ノノ              ∪           ∩
  /: ____▽,,,,,,_ヽ    。:∪・      ⊂ヽ                  ノノ           :∩
  } i:ェェヮi ト.ェェ:-i { /⌒Y⌒\  プ   :):)                 じ           :ノノ 。
  ヾ::/イ__l丶 r'1ノ   ノ     )     じ         :∩ 。                ( (
  .}::l: ゝ--イ l:: {^\ビチグソ |        .       ヽヽ                  ヽj
   ト!;_`二´_,,;!イ|  |    ノ  :|         ∩      じ
   |  |__三___|  |_/|   |         ノノ                 ∩           :∩
   |  |      ヽ|  ト'   |   |/^ヽ     じ                 :ノノ ∵         :ヽヽ
   |  |         |  |_/ ヽ__人_ノ                       ∪             し′
  ⊆, っ      とーっ


446 :デフォルトの名無しさん:2010/04/26(月) 13:18:02
>>424
>>396です。118ではないです。
GetLogicalProcessorInformationを使ってみました所、
物理コア数の4が取得出来ました。
ですがおっしゃってる通り、古いOSでは使えないのですね。
XPもSP2以前だとダメな様でした。

CPUIDだと、IntelはCPUID(4)のEAX(bit31-26)以外に、
コア数を取得出来る所があるのでしょうか?
もしご存じであれば教えて頂ければ幸いです。

447 :118:2010/04/26(月) 16:42:11
もしご存じであれば教えて頂ければ幸いです。

俺のために動けってかw
なんでintelのデベロッパマニュアル読まないの?

448 :デフォルトの名無しさん:2010/04/26(月) 20:14:55
ここでの説明を見たのですがダイアログはPCの解像度に関係なく同じような位置で表示されるんですよね。
ttp://wisdom.sakura.ne.jp/system/winapi/win32/win84.html

座標系は文字サイズを基準としているそうですが、解像度の比率では無いのに
何故解像度に影響されないレイアウトになるんでしょう。
フォントの文字サイズはどの解像度でも一緒だと思うんですが、文字サイズが何を指しているのか解りません。

449 :118:2010/04/26(月) 20:34:37
>>448
文字サイズ=ポイント
1 pt = 0.352 778 mm

450 :デフォルトの名無しさん:2010/04/26(月) 20:34:37
まじかるにゃんにゃんは良いよね〜

>>448
解像度には思いっきり影響されるだろ。
高解像度だとその分全体に占める割合が小さくなるし。
別にダイアログが勝手に大きくなったりはしないぞ。
それよりも、文字サイズ基準の関係でDPIの設定が反映されるのが特徴だな。
96から120にしてやれば、大きさもそれなりに広がる。
レンダリングの関係で120にしたら文字が切れてしまうのもよくある話w

451 :448:2010/04/26(月) 20:53:08
ダイアログの大きさは、どの解像度でも一定な文字サイズを基準に取ってる。
だから解像度の違いにより、ダイアログの大きさが崩れることなく表示できる。
ダイアログの大きさは一定なので低解像度だと画面をはみ出して表示されないことがある。
-----
x には X座標、y には Y座標をそれぞれ
ウィンドウのクライアント座標でダイアログの左上の位置を指定します とありますが
こちらは解像度単位で、設定した値によっては始めからウインドウの端も表示されないことはあるんですか?

どの解像度でも真中に表示するには使用しているPCの解像度を取得して2で割って
SetWindowPos をすれば良いのでしょうか?

452 :デフォルトの名無しさん:2010/04/26(月) 21:04:43
ど真ん中に出されたら邪魔くさくてしょうがない

453 :デフォルトの名無しさん:2010/04/26(月) 21:37:45
>>451
WindowsSDKのリソースコンパイラの所に
リソーススクリプトの記述方法が全部書いてあるから。

454 :デフォルトの名無しさん:2010/04/26(月) 23:13:49
>>452
エロビデオ見てて良いシーンで一時停止すると
再生の→ボタンが画面の真ん中に出て来て
邪魔をする漏れのプレイヤー

455 :118:2010/04/27(火) 02:26:21
   ○
     O
      o                       と
       。 ,. -ー冖'⌒'ー-、             思
       ,ノ         \            う
       / ,r‐へへく⌒'¬、  ヽ          キ
       {ノ へ.._、 ,,/~`  〉  }    ,r=-、  モ
      /プ?`y'¨Y´?ヽ?}j=く    /,ミ=/  ヲ
    ノ /レ'>-〈_ュ`ー‐'  リ,イ}    〃 /   タ
   / _勺 イ;;∵r;==、、∴'∵; シ    〃 /    で
  ,/ └' ノ \   こ¨`    ノ{ー--、〃__/    あ
  人__/ー┬ 个-、__,,.. ‐'´ 〃`ァーァー\   っ
. /   |/ |::::::|、       〃 /:::::/    ヽ  た
/   |   |::::::|\、_________/'   /:::::/〃

456 :デフォルトの名無しさん:2010/04/27(火) 06:59:37
tesst

457 :デフォルトの名無しさん:2010/04/27(火) 13:32:18
Windowsのログイン時のパスワードを変更する
プログラムて作成することはできますか?
ハックとかではなく、自分のTOOL上からパスワード変更をしたいと考えています。

458 :デフォルトの名無しさん:2010/04/27(火) 13:52:33
#include <lm.h>

NetUserChangePassword()


459 :118:2010/04/27(火) 23:49:22
#pragma pack(push,1)


460 :118:2010/04/28(水) 10:34:52
ppp

461 :デフォルトの名無しさん:2010/04/28(水) 23:36:21
SJISで表現できない文字を含むフォルダ、ファイル名をA系のAPIでアクセスしようと思ったら
8.3形式にしてアクセスするしかないんでしょうか?例えば
   ,
Andre (eの上に ' がつく文字)というファイルを
FindFirstFile(便利な変換関数("Andre"), ...)としてアクセスする手段はないですよね。

462 :デフォルトの名無しさん:2010/04/29(木) 05:39:44
>>461
8.3形式のファイル名はどうやって得るつもりなの?
GetShortPathName()を使うならUnicode版を使わなきゃならないし、
それが出来る環境ならそもそもA系APIを使う意味がないんじゃ?

463 :デフォルトの名無しさん: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* を渡さない
}
--------------------

仕様上やむを得ないのであればメッセージキューに相当するものを自作しようかと考えているのですが
標準のメッセージキューで可能ならそれに越したことはないので、詳しい方の知恵をお借りしたいです。

464 :デフォルトの名無しさん:2010/04/29(木) 11:14:38
PeekThreadMessage(&msg, 0, 0, 0, PM_NOREMOVE) は

PeekMessage(&msg, 0, 0, 0, PM_NOREMOVE) の誤りです。すみません。

465 :デフォルトの名無しさん:2010/04/29(木) 12:11:37
>>462
いちいち取得しなくても、ソースを書く段階で「最初から知っていた」というケースもある
汎用性はなくなるけど特定の業務に使うアプリなら決め打ちで問題ないこともある

466 :118 ◆ayPjxbmM2c :2010/04/29(木) 12:22:36
>>465
じゃ、直接指定しろよ。

467 :デフォルトの名無しさん:2010/04/29(木) 18:32:54
SJISで表現できないから困ってるんじゃないのかと

468 :118:2010/04/29(木) 19:16:56
int i = 10;
int * p = &i;//int型ポインタpにiのアドレスを代入する
簡単。
char str1[] = "abcde";
char * str2 = "abcde";
上と下は同じでどっちを使ってもいい。


469 :デフォルトの名無しさん:2010/04/29(木) 19:34:33
やばい、>>468 見てちょっと可愛いと思ってしまった


470 :デフォルトの名無しさん:2010/04/29(木) 20:09:32
468にツッコミたくて仕方がないが、それ以前になんでそんな書き込みをしたのか
気になってしょうがない。どこかの誤爆?

471 :デフォルトの名無しさん:2010/04/29(木) 21:30:31
ただのキチガだから触れるな

472 :デフォルトの名無しさん:2010/04/30(金) 00:28:31
118 はいろんなところで見かける

473 :118:2010/04/30(金) 02:24:22
真の118 >>118
偽の118 トリップ全部、sage
>>468>>459>>378>>370
>>300>>240>>186
>>176>>149>>190




474 :118:2010/04/30(金) 03:01:53
なんだこいつうぜえ

475 :118:2010/04/30(金) 09:58:59
ppp

476 :118:2010/04/30(金) 10:05:06
おはよう、おまいら。今起きたところなんで過去10時間の書き込みは全部偽物だぜ。

477 :118:2010/04/30(金) 10:57:54
漏れも偽者でつ

478 :デフォルトの名無しさん:2010/04/30(金) 12:16:25
現在のIMEの状態を取得するAPIを教えてください。

指定したハンドルのではなくて、IME自体の状態を取得したいのですが

479 :デフォルトの名無しさん:2010/04/30(金) 12:46:28
それ俺も知りたいが
IMEってやっかいだよな
下手に関わるとwineでまともに動かなくなるし

480 :デフォルトの名無しさん:2010/04/30(金) 12:48:47
今調べてたんだけど
WM_IME_〜メッセージとかでどうですかね?

481 :デフォルトの名無しさん:2010/04/30(金) 12:49:52
あ、ハンドルがわからないか・・・

482 :デフォルトの名無しさん:2010/04/30(金) 12:50:39
レジストリかどっかにIMEの現在の状態って書いてないですか?

483 :デフォルトの名無しさん:2010/04/30(金) 15:04:41
毎回レジストリなんかに書かれるとでも?
・・・本当に書かれてたら笑うが

484 :デフォルトの名無しさん:2010/04/30(金) 17:20:46
IMEの状態を表示するツールなら知ってる

485 :デフォルトの名無しさん:2010/04/30(金) 18:42:03
IME自体の状態って言うけど
IMEの状態ってウィンドウごとに保持されてるんじゃないの?

486 :デフォルトの名無しさん:2010/04/30(金) 21:42:26
IMEの状態を取得する方法がわからないから、IMEがONのままスリープすると、
復帰したときにATOKはおかしくなることがある。
MS-IMEも昔はおかしくなったんだけど、最近になってようやくきちんと復帰するようになった。

487 :デフォルトの名無しさん:2010/05/01(土) 02:16:39
IMEの有効・無効なら、グローバルフックしてWM_IME_STATUSを捕まえるでおk

488 :デフォルトの名無しさん:2010/05/01(土) 11:40:28
複数のウィンドウを用意してるなかで、片方が普段非表示なんだが
もう片方がクリックされたら、クリックされたマウス上に表示するようにしてる
それで、ウィンドウは両方ともダブルクリックに対応してるんだけど
片方がダブルクリックされると、最初のクリックでもう片方が表示、その結果WM_LDBLCLKが来ないんだが
綺麗な解決方法無いかな?

489 :デフォルトの名無しさん:2010/05/01(土) 11:52:20
表示を遅延させてみるとか

490 :デフォルトの名無しさん:2010/05/01(土) 14:38:20
>>489
d。遅延なら何とかなりそう

491 :デフォルトの名無しさん:2010/05/01(土) 15:53:08
>>488
試してみたけど、普通にWM_LBUTTONDBLCLKきたよ?
非表示のウインドウを表示させるコードに問題があるんじゃないの?
表示させるときにSWP_NOACTIVATEとか、SW_SHOWNA使ってる?

492 :デフォルトの名無しさん:2010/05/01(土) 19:59:55
>>491
うぉぉぉ。有難う!
普通にSW_SHOW使ってました

493 :デフォルトの名無しさん:2010/05/01(土) 23:44:22
GetWindowPlacement
GetClientRect
GetWindowRect

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

どう違うんでしょうか?

494 :デフォルトの名無しさん:2010/05/01(土) 23:46:03
調べろよw

495 :デフォルトの名無しさん:2010/05/02(日) 00:11:33
回答できるほどの知識はないようですねw

496 :デフォルトの名無しさん:2010/05/02(日) 00:17:32
センスなさすぎw

497 :118 ◆ayPjxbmM2c :2010/05/02(日) 00:17:53
あるわけないだろ。

498 :デフォルトの名無しさん:2010/05/02(日) 00:25:43
知識ないから質問するだけ無駄

499 :デフォルトの名無しさん:2010/05/02(日) 00:27:50
ただのキチガだから触れるな

500 :デフォルトの名無しさん:2010/05/02(日) 00:30:03
GetWindowPlacement - 通常、最小化、最大化の位置情報
GetClientRect - クライアント領域の位置情報
GetWindowRect - ウィンドウ領域の位置情報

501 :デフォルトの名無しさん:2010/05/02(日) 01:52:03
GetWindowPlacement - 各ウィンドウ情報取得
GetClientRect - クライアント上に描画している矩形を取得
GetWindowRect - ウィンドウ上に描画している矩形を取得

502 :118:2010/05/02(日) 03:17:58
あなたは知らないのですか?

503 :118:2010/05/02(日) 08:58:19
<おみやげ>が<のらドワーフのさと>にあることを。

504 :デフォルトの名無しさん:2010/05/02(日) 10:14:26
複数のウィンドウ(AとBと略)を最前面表示にしてるんだが
Aは常に最前面、しかしBは更にAより最前面って出来ない?

505 :デフォルトの名無しさん:2010/05/02(日) 10:16:20
可。

506 :118 ◆ayPjxbmM2c :2010/05/02(日) 10:44:32
質問文にすでに矛盾があるんだが。

507 :デフォルトの名無しさん:2010/05/02(日) 11:30:06
悔しいが >>506 の突っ込みでワロタ


508 :デフォルトの名無しさん:2010/05/02(日) 12:46:07
おれは読解力の無さに呆れた

509 :118 ◆88ZPSwqsm6 :2010/05/02(日) 12:58:18
AをBのオーナーにしとけばいいな。

510 :デフォルトの名無しさん:2010/05/02(日) 13:09:46
それだとオーナー関係にしないと駄目じゃない?

511 :デフォルトの名無しさん:2010/05/02(日) 13:11:19
途中で送信してしまったorz

オーナーにせずに解決策ってある?

512 :デフォルトの名無しさん:2010/05/02(日) 13:22:24
それしかないとも言う。
アプリのメッセージボックスの自己主張が激しかった
Win95/NT4.0時代の悪夢を繰り返さないための仕様。

513 :デフォルトの名無しさん:2010/05/02(日) 13:26:59
>>504
適当なイベント(Activateなど)をトリガに
毎回EnumでZオーダーをチェックし
BがAの背面に回っていたら
A、Bの順にTopmostする

514 :デフォルトの名無しさん:2010/05/03(月) 03:38:49
winapiで立方体の表示はできないの?

515 :デフォルトの名無しさん:2010/05/03(月) 03:42:03
やろうと思えばできる。自分で計算して描画すれば。
DrawCube みたいな関数をイメージしてるなら、そんな物は無い


516 :118:2010/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 );
}

517 :デフォルトの名無しさん:2010/05/03(月) 04:56:57

何言語?
糞いい加減なレスすんなや、ボケ

518 :デフォルトの名無しさん:2010/05/03(月) 05:10:26
>>516
滅茶苦茶過ぎてワロタ

519 :デフォルトの名無しさん:2010/05/03(月) 10:31:17
あるゲームを解析したいと考えています
どうやるかというとHPが100以下になったら回復アイテムを
自動で使うというものを作りたいです

そこで、起動しているexeのメモリの内容を参照するAPIって
何があるのでしょうか?

520 :デフォルトの名無しさん:2010/05/03(月) 10:39:31
坊やはお帰り

521 :118 ◆1oKmZSIAF. :2010/05/03(月) 10:43:46
ReadProcessMemory()

522 :デフォルトの名無しさん:2010/05/03(月) 11:35:11
いつから釣りだらけのスレになったのか
元からかw

523 :デフォルトの名無しさん:2010/05/03(月) 12:59:13
         \   ∩─ー、    ====
           \/ ● 、_ `ヽ   ======
           / \( ●  ● |つ
           |   X_入__ノ   ミ   そんな餌で俺様が釣られクマ――
            、 (_/   ノ /⌒l
            /\___ノ゙_/  /  =====
            〈         __ノ  ====
            \ \_    \
             \___)     \   ======   (´⌒
                \   ___ \__  (´⌒;;(´⌒;;
                  \___)___)(´;;⌒  (´⌒;;  ズザザザ


524 :デフォルトの名無しさん:2010/05/03(月) 18:01:45
特定のプロセスのみ、ShellExecute() のプログラムの検索パスを変更することは可能でしょうか?
SetEnvironment() で path を新たに設定しなおして、その後 ShellExecute() を実行してみたんですが
古いパスしか見てくれないようで困っています

525 :デフォルトの名無しさん:2010/05/03(月) 18:06:17
>>524
環境変数を継承するオプション無かった?なかったら、CreateProcessでごにょごにょする。

526 :118 ◆4BcWhWACFc :2010/05/03(月) 18:06:47
なんか勘違いしてるような気がする。

もう少し具体的にやりたいことと、やってみたことを説明してみ。

527 :デフォルトの名無しさん:2010/05/03(月) 19:29:35
524です
notepad.exe とか memo.txt とかのファイル名が書かれたテキストファイルを読み
適当なタイミングでそのプログラムをShellExecuteで起動する32ビットアプリを作っています
64ビット環境下で動く時に、%SystemRoot%\Sysnative を優先して実行ファイルの探索パスとして使えると、
64ビット版のアプリが起動できるのではないかと思い実装を試みていました
多分、ShellExecute のパスを変えるには、親玉の explorer.exe の環境変数を変更しないとだめで、
そこを書き換えている期間は他のアプリにも影響が出てしまうのでこの方針はまずそうです
素直に64ビット版のShellExecuteのプロセスを用意しようと思います

528 :118 ◆4BcWhWACFc :2010/05/03(月) 19:35:37
それ、環境変数関係ないだろ。フォルダリダイレクションだし。
素直に、フルパスで起動すればいいんじゃね?

529 :デフォルトの名無しさん:2010/05/03(月) 19:51:42
実行ファイルだけならCreateProcessなどでフルパス指定で呼べばいいんですが
memo.txt や a.bat のようなファイル名指定による ShellExecute でSystem32配下のアプリが呼ばれるときの挙動を変えたかったんです

530 :118 ◆4BcWhWACFc :2010/05/03(月) 19:56:27
exe以外なら、FindExecutableで関連づけられたアプリを取得して、
必要に応じてSysnativeにパスを変えて、CreateProcessすればいいだろ?

531 :デフォルトの名無しさん:2010/05/03(月) 19:58:29
おれの周りにも最近64がちらついてきた
面倒な世の中になってきたなあ

532 :118:2010/05/03(月) 20:12:45
>>531
ニンテンドウ64

533 :デフォルトの名無しさん:2010/05/03(月) 20:53:44
>>530
これでいけそうです。ありがとうございます!

534 :デフォルトの名無しさん:2010/05/04(火) 13:31:49
x86向けとx64向けの両方のバイナリをはき出すにあたって
ソースコードを同一にする方法って言うか注意事項って言うか
そういうのがまとまったサイトってないのかな。

535 :デフォルトの名無しさん:2010/05/04(火) 13:36:35
これやらなけりゃ問題ない。
void* p;
int a=(int)p;

536 :118 ◆tfxvx8WXZ2 :2010/05/04(火) 13:42:38
ポインタサイズだけだからな・・・。

537 :デフォルトの名無しさん:2010/05/04(火) 13:45:08
if (sizof(int) != sizof(int*)) {
#error 無理です。
}


538 :デフォルトの名無しさん:2010/05/04(火) 14:13:04
>>537
それじゃ常にエラー出るだろw

539 :デフォルトの名無しさん:2010/05/04(火) 14:21:17
確かに常にエラー出るなw

540 :デフォルトの名無しさん:2010/05/04(火) 15:44:10
x64でビルドしようかと思ってたけどノートパソで走らなくなるからx86にしたことがある。

541 :デフォルトの名無しさん:2010/05/04(火) 21:26:09
ソースはともかくバイナリを同一にしたい
副次ストリームとか使ってなんとか一緒にできないものか
foo.exe(32ビット版) が起動た時OSが64ビットだったら foo64.exe を呼び出す、みたいな間抜けなやり方しか思いつかん

542 :デフォルトの名無しさん:2010/05/04(火) 21:43:04
>>541
PEフォーマットが複数バイナリを格納できない以上、それは無理ってもんでしょ。

543 :118 ◆tfxvx8WXZ2 :2010/05/04(火) 22:08:22
>>541
SysInternalのツールとかは、そういう風にやってるね。

544 :デフォルトの名無しさん:2010/05/04(火) 22:11:35
Visual Studio には spy ツールがありますよね
あれって、たとえば、特定のEXEにあたっちすることまでは
わかったのですが、
そのEXEが発行するAPIとか取得できるのかな?

やりたいことは、
EXEがあり、このEXEは、Widnowsのハードウエアにかかわる
DLL(API)を使っています。
このdevice.dll に対して、どのようなAPIが発行を要求したかしらべたいのです。

545 :デフォルトの名無しさん:2010/05/04(火) 22:13:03
何故かコクヨのノートに書かれた夏休みの絵日記が浮かんだ


546 :118 ◆uKObk31oqA :2010/05/04(火) 22:16:02
SPY++は、メッセージのやりとりを確認するツール。
API呼び出しを確認したければ、API Monitorかデバッガでアタッチ、
あるいは、ラッパ生成ツールでも使うことになる。

詳細はググレ。

547 :デフォルトの名無しさん:2010/05/04(火) 22:16:52
>>544
昔、dependency walkerってのがあったけど、
今もあんの?

548 :デフォルトの名無しさん:2010/05/04(火) 22:20:10
横から >>544 を書き直すと、

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

こんな感じか

549 :118 ◆uKObk31oqA :2010/05/04(火) 22:24:30
>>547
VSには含まれなくなったけど、フリーのやつが落とせる。

550 :547:2010/05/04(火) 22:40:32
>>549
探してみる

551 :デフォルトの名無しさん:2010/05/04(火) 22:46:49
Volume Shadow Copy Serviceを使って使用中のファイルのコピーをしたいのですが
どこかに良いサンプルありませんか

552 :デフォルトの名無しさん:2010/05/04(火) 22:55:31
今手元に、とあるWindows で準備されている、 dll とそれを利用している exe(他社開発 VisualC++で) があります。
この dll について、公開されている関数の中で、この exe が
今dllのどの関数を使用しているかを知る簡単な方法はありませんか?

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

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

ご教示の程よろしくお願い致します。

553 :118 ◆uKObk31oqA :2010/05/04(火) 23:00:19
インポートリンクされてれば、Dumpbin /IMPORTS でインポートしてる関数はわかる。
何かをした時点で、ってことであれば、>>546

554 :デフォルトの名無しさん:2010/05/05(水) 01:40:43
>>546


>>553

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

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

Win32とは直接関係ないですが、上の”メッセージ”とありますが、
現在Visual C++ 2008 のフォームアプリを勉強しているのですが、
ほとんど、(昔のVBみたいで、)あまり、メッセージがでてきません。
この理由というのがいまいちよくわかってないのですが、なにかヒントありますでしょうか?

555 :118 ◆uKObk31oqA :2010/05/05(水) 01:41:59
それは C++/CLI だからだろ。
普通にWin32アプリを作れば、嫌でも出てくるよ。

556 :デフォルトの名無しさん:2010/05/05(水) 01:51:36
>>555

2ch、やっぱり、すごい、疑問がすぐ解決する。。

557 :デフォルトの名無しさん:2010/05/05(水) 02:09:49
Win32 API /Win XP Sp3 での総数はいくらぐらいなのでしょうか?
ネットでさがしてもわかりませんでした。
また、そのリスト等、ネットにありますでしょうか?

558 :118 ◆1oKmZSIAF. :2010/05/05(水) 02:13:54
ない。

559 :デフォルトの名無しさん:2010/05/05(水) 02:19:56
全部のヘッダ覗いて数えれば確実
・・・そもそもどこまでを指してwin32APIと呼ぶのかって話もあるが

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

561 :デフォルトの名無しさん:2010/05/05(水) 02:44:11
>>556
暇な廃人が常駐してるからな

562 :デフォルトの名無しさん:2010/05/05(水) 03:02:06

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

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

DLLはAPIを集めた、関数群であるあたり、までは理解しております。

563 :118 ◆1oKmZSIAF. :2010/05/05(水) 03:11:55
とりあえず、Dumpbin /EXPORTS してみれば?

564 :デフォルトの名無しさん: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

565 :デフォルトの名無しさん:2010/05/05(水) 03:17:58
そもそもなんでそんなリストが必要なのかと
マイクロソフト出版か何かが出してた鬼みたいな厚さのAPI本でも多分全部網羅はしてなかったような
あと、箱入りVCにはレンガくらいの厚さがあるAPI本入ってるけど

566 :デフォルトの名無しさん:2010/05/05(水) 03:40:12
DLLがエクスポートしていても、非公開扱いだったり、
APIといいつつ、単なるマクロでDLLではエクスポートされていない場合もあるよ。
諦めたほうがいい。

567 :デフォルトの名無しさん:2010/05/05(水) 08:10:41
名前だけ分かっても手が出ないし
DNSAPIとか

568 :デフォルトの名無しさん:2010/05/05(水) 08:52:28
>>567
DNSAPI.dll のことか?

普通に MSDN 見ればわかると思うが...
http://msdn.microsoft.com/en-us/library/ms682100(v=VS.85).aspx

569 :デフォルトの名無しさん:2010/05/05(水) 09:01:53
DnsGetCacheDataTableとかどこ探しても載ってないもんよ

570 :デフォルトの名無しさん:2010/05/05(水) 16:29:20
まあ、非公開のエクスポートはあるだろう。
DnsGetCacheDataTable なんて、どう見ても内部向けだろうし。

571 :デフォルトの名無しさん:2010/05/05(水) 20:39:12
そもそも非公開ってどうやって判別するのよ

572 :デフォルトの名無しさん:2010/05/05(水) 21:05:42
ドキュメントも読まずに判断なんて出来ないと思うの
そしてそれが何かの説明も読まずに使うバカはいないと思うの

573 :118 ◆1oKmZSIAF. :2010/05/05(水) 21:25:31
ときたまいるけどね。MSDNを見ないで、どっかの素人サイト見てるようなやつ。

574 :デフォルトの名無しさん:2010/05/05(水) 22:20:21
MSDNも日本語のサイトは糞だな
英語のMSDN見ないと話にならない

575 :118:2010/05/06(木) 02:30:04
>>574
お前K&Rも原著じゃないとっていうタイプだろ?
融通がきかない頭が固い
死後硬直かよ

576 :デフォルトの名無しさん:2010/05/06(木) 02:34:51
>お前K&Rも原著じゃないとっていうタイプだろ?

そのとおりです
よくわかりましたね

577 :デフォルトの名無しさん:2010/05/06(木) 03:02:36
英語版見た方がいいのは事実じゃないの
日本語版だとバッファサイズがヌル文字含むのかとか書いてないことがあるし

578 :デフォルトの名無しさん:2010/05/06(木) 06:15:06
日本語版は、関数呼び出しに必要な構造体や関数ポインタ型へのリンクが
なくて使いづらいんだよな。

579 :デフォルトの名無しさん:2010/05/06(木) 06:53:21
WS_SIZEBOXだと境界線が出るんですが
クライアント領域がサイズ変更可能で境界線を持たないウインドウはどうすれば作成できますか?

580 :デフォルトの名無しさん:2010/05/06(木) 08:19:26
そういう場合はサイズ変更は自分でやる

581 :デフォルトの名無しさん:2010/05/06(木) 09:05:15
他のウィンドウが自分のウィンドウに重なってるかを調べる方法って
定期的に列挙してZオーダーの確認するしかない?

582 :デフォルトの名無しさん:2010/05/06(木) 09:12:53
Zオーダーの確認でも分からない場合があります

583 :デフォルトの名無しさん:2010/05/06(木) 09:14:42
自分のウィンドウのZオーダー間、ウィンドウのスクリーン座標を取って被ってるかの確認かな
他のあるかい?

584 :デフォルトの名無しさん:2010/05/06(木) 09:23:38
1ピクセルラインのリージョン採って無効確認

585 :デフォルトの名無しさん:2010/05/06(木) 09:40:43
子プロセスを作る時に不可視で作るのはどうすればいい?

586 :デフォルトの名無しさん:2010/05/06(木) 10:02:04
>>575
>>279-285を読んでもそう言うなら*馬鹿*以外の何物でもない。

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

587 :デフォルトの名無しさん:2010/05/06(木) 10:10:59
質問です。
ファイルコピーをする場合、
・fopen_s等で開いて、自力でコピー
・system("copy を使う
があると思いますが、
エクスプローラーのコピーを、プログラムから気軽に使う方法はないでしょうか?

ファイルのコピー経過(今どれくらいコピーが終わったか)などを表示するのが目的です。

588 :118 ◆1oKmZSIAF. :2010/05/06(木) 10:14:42
>>587
SHFileOperation

589 :デフォルトの名無しさん:2010/05/06(木) 10:31:15
>>588
ありがとうございます
ばっちりでした

590 :デフォルトの名無しさん:2010/05/06(木) 14:05:46
>>585
綺麗な手では無理

どろくさくやるなら
 CreateProcess → 戻りのプロセスID取得
 ウィンドウ列挙して、GetWindowThreadProcessId でプロセスID取って一致したら
 ShowWindow(SW_HIDE) する
こういう手順になるかな?

591 :デフォルトの名無しさん:2010/05/06(木) 14:10:25
>585
関数を使います。

592 :デフォルトの名無しさん:2010/05/06(木) 14:39:00
>>591
自分で答えいってるがな

593 :デフォルトの名無しさん:2010/05/06(木) 15:33:50
>>585
STARTUPINFOのwShowWindowにSW_HIDE指定すれば済む話じゃなくて?

ちなみに、プロセスが作成されて最初のShowWindowはSTARTUPINFOで
状態が指定されていれば、それが強要される。

594 :118 ◆1oKmZSIAF. :2010/05/06(木) 15:37:16
その指定が有効にならないアプリはごまんとある、って話でしょ。

595 :デフォルトの名無しさん:2010/05/06(木) 15:44:42
>>593
そのアプリが最初に呼び出すShowWindowがSW_DEFAULTだかなんだかっての指定してないと効かない

596 :デフォルトの名無しさん:2010/05/06(木) 15:46:16
WinMain からいきなり DialogBox で窓駆動するようなのは
STARTUPINFO 効かないんじゃないかな

597 :デフォルトの名無しさん: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:

598 :デフォルトの名無しさん:2010/05/06(木) 16:05:01
>>595
SW_DEFAULTは関係ないよ。

nCmdShow
ウィンドウの表示方法を指定します。アプリケーションがほかのプログラムから STARTUPINFO 構造体を渡して起動された場合、初めて ShowWindow 関数を呼び出したときには、このパラメータは無視されます。

599 :デフォルトの名無しさん:2010/05/06(木) 16:11:02
孫プロセスなら子プロセスのWindowStationを非表示にすれば

600 :デフォルトの名無しさん:2010/05/06(木) 16:14:04
>>596
ダイアログベースのアプリケーションでも表示状態の指定はできるけど、
それとは別にダイアログベースのアプリケーションのメインウインドウは
不可視にできないという制限があるから、SW_HIDEは駄目かもね。

601 :118:2010/05/06(木) 19:29:30
>>597
日本語でおk

602 :デフォルトの名無しさん:2010/05/06(木) 20:01:39
この程度は読めなきゃAPI使ったプログラム書けんだろ

603 :デフォルトの名無しさん:2010/05/06(木) 21:44:15
ウィンドウプロシージャ自身から UpdateWindow() を呼んだときの挙動ってどうなるんですか?
たとえば、WM_KEYDOWN が来たら UpdateWindow() した場合は

WM_KEYDOWN が来る

UpdateWindow() を呼ぶ (A)

WM_PAINT を引数としてウィンドウプロシージャが呼ばれる

WM_PAINT を処理する

WM_KEYDOWN の (A) へ制御が戻る

という感じになるんでしょうか?

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

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

WM_KEYDOWNへの処理には戻らない
なぜなら WM_KEYDOWNメッセージはウィンドウプロシージャに送信されていない


605 :デフォルトの名無しさん:2010/05/06(木) 21:59:29
CALLBACK が邪魔になっているであろう

単純に WinProc( MSG msg )
{
switch( msg )
{
case WM_PAINT:
brea;
case WM_KEYDOWN:
break;
}
}
と考えればよろし

606 :デフォルトの名無しさん:2010/05/06(木) 21:59:50
>>604
でも、MSDNだと UpdateWindow() はメッセージキューを無視して WM_PAINT を送ると書いてありますよね?
ということは、WM_PAINT の処理が終わるまでブロックするんじゃないかと思うんですが、そうではないんでしょうか?
メッセージキューの先頭に WM_PAINT を入れるということですか?

607 :デフォルトの名無しさん:2010/05/06(木) 22:02:10
ああ、勘違いしていた
printf( でも試してみれば?

608 :デフォルトの名無しさん: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 使わなくてもこの関数を使えば画面の最更新はできる

609 :デフォルトの名無しさん:2010/05/06(木) 22:11:27
>>608
リンクミス
http://msdn.microsoft.com/ja-jp/library/cc410559.aspx


610 :デフォルトの名無しさん:2010/05/06(木) 22:12:24
関連して
InvalidateRect
もある

611 :デフォルトの名無しさん:2010/05/06(木) 22:16:56
>>603
半端な知識で出鱈目教えてる奴が来てるようだから、この時間のレスは信用しない方が良いよ。

612 :デフォルトの名無しさん:2010/05/06(木) 22:28:35
失敗ばかり恐れ何もしない奴はだまってて

613 :デフォルトの名無しさん:2010/05/06(木) 22:30:10
>>604
処理には戻らないって、関数が終わったら戻ってるじゃん
そういう事を >>603 の(A)は言ってるんじゃないの?
UpdateWindow関数っていつから goto になったんだww

614 :デフォルトの名無しさん:2010/05/06(木) 22:30:47
なんかごちゃごちゃ書いてるやつがいるけど
603はそんなこと聞いてないだろう。

処理が終わればWM_KEYDOWNの残りの処理に戻るだろ。
第一、戻らないと困るだろ。

615 :デフォルトの名無しさん:2010/05/06(木) 22:33:10
>>614
たしかな根拠があるのか?

616 :デフォルトの名無しさん:2010/05/06(木) 22:34:25
gotoじゃねぇよ
イベントドリブンだ
どっちが半端な知識なんだろうね

617 :デフォルトの名無しさん:2010/05/06(木) 22:36:12
人に聞かずにspy++用いて試せば分かるんじゃねーの?

618 :デフォルトの名無しさん:2010/05/06(木) 22:41:22
メッセージ送信、受信のスケジューリングは保障されていない
OSによる挙動が変わる可能性もある

619 :デフォルトの名無しさん: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さんの仰るように環境依存なのかもしれないですけど、
ブロックする環境がある以上は一応それを考慮しようと思います。色々ありがとうございました。

620 :デフォルトの名無しさん:2010/05/06(木) 22:47:39
>>619のコードが一部抜けちゃいましたが
グローバル変数として
const char* p = "foo";
と最初に定義しています。

621 :デフォルトの名無しさん:2010/05/06(木) 22:55:24
>>616
いつから gotoになったんだって一文がどういう意味かわからないのか
どっちが半端な知識なんだろうね、じゃねぇよびっくりするぐらい頭悪いなお前

622 :デフォルトの名無しさん:2010/05/06(木) 22:59:04
あまりにもレベルが低すぎて文章を解読できませんでした

623 :デフォルトの名無しさん:2010/05/06(木) 23:15:00
いろいろ交錯しているけれど、最初に戻ってみれば単純な事。
>>604はびっくりするほど頭が悪い。これが真実。

624 :デフォルトの名無しさん:2010/05/06(木) 23:21:41
>>619
614ですが、
ブロックなんていう問題か?
自分でメッセージキューから一個一個取り出して処理してる最中だからだろ。
(UpdateWidow()はキューを通さない)

625 :デフォルトの名無しさん:2010/05/06(木) 23:26:56
>>624
MSDNにもありますが「キューを通さない」というのがどういう意味なのかよくわからなかったんです。
Windowsのメッセージキューについてはあまりよく知らなかったので。

WM_PAINTの処理が終わるまでブロックするのか、メッセージキューの先頭にWM_PAINTを割り込ませるのか、
それとも別にスレッドを作って処理するのか、などと考えてました。

626 :デフォルトの名無しさん: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終了

おおざっぱにこう違う

627 :デフォルトの名無しさん:2010/05/07(金) 01:09:33
WM_PAINTは「sent」されるので、その説明はダメ。

628 :118 ◆4BcWhWACFc :2010/05/07(金) 01:14:02
sentされる、ってなんだよw

629 :デフォルトの名無しさん:2010/05/07(金) 01:36:16
>>118
日本語版msdnしか読まない馬鹿は引っ込んでろ。

630 :118:2010/05/07(金) 02:28:00
呼んだ?

631 :118:2010/05/07(金) 04:45:31
>>629
うわあ

632 :デフォルトの名無しさん:2010/05/07(金) 07:42:29
gccしかしらないアホがいます

633 :デフォルトの名無しさん:2010/05/07(金) 08:02:35
答えているのを見ると
それをバカにして自分があたかもそいつより上だという優越感にひたりたいです

634 :デフォルトの名無しさん:2010/05/07(金) 20:09:02
私は選ばれし者です
下等生物のあわれなやりとりを見ているととても胸がスーッとし
自分より以下の存在を確認することによって自分の存在がとても尊いものだと認識させられます

635 :デフォルトの名無しさん:2010/05/07(金) 21:20:01
具体的な話だけをチョイスして読んで、あとは気になるレスをヒントに自分で掘り下げて
実験するようにすれば脂身の多いスレであっても正解に辿り付けるから大丈夫


636 :デフォルトの名無しさん:2010/05/07(金) 21:43:13
ツールチップが表示された後に、キー入力とかが在ったら
表示したツールチップを消したいんだが、ShowWindowで消すのは駄目だよね?
TTN_POPとか受け取りたいから、うまい消し方在ったら教えてください

637 :デフォルトの名無しさん:2010/05/07(金) 22:00:55
>>636
TTM_POP

638 :デフォルトの名無しさん:2010/05/07(金) 22:32:18
>>637
有難うございます。解決しました

639 :デフォルトの名無しさん:2010/05/07(金) 23:10:59
一つのウィンドウ上に、別のウィンドウが重なっているかを
スクリーン座標から判定したいんだが
簡単に判別する方法無いかな?
UnionRectとか使ってみたけど、どうもうまくいかない

640 :デフォルトの名無しさん:2010/05/07(金) 23:12:49
>>634
かもめのジョナさん


641 :デフォルトの名無しさん:2010/05/07(金) 23:14:13
>>639
どっかで同じ質問してる香具師がいたな
マルチか


642 :デフォルトの名無しさん:2010/05/07(金) 23:18:45
>>581じゃねーの

643 :デフォルトの名無しさん:2010/05/07(金) 23:27:33
Zオーダーとスクリーン座標の両方を調べないと、重なっているかどうかはわからないのでは

644 :デフォルトの名無しさん:2010/05/07(金) 23:33:05
>>643
それだけじゃまだ不足

645 :デフォルトの名無しさん:2010/05/07(金) 23:38:41
カンマ付き数値 123,456みたいにするAPIを教えてください。

646 :118 ◆4BcWhWACFc :2010/05/07(金) 23:44:35
wsprintf()

647 :デフォルトの名無しさん:2010/05/07(金) 23:46:17
>>646
あれー?
それでできるんですか!!
すんまんせん。書式はどうやって書けばいいのですか・・・

648 :118:2010/05/07(金) 23:51:21
>>646
wsprintf()ゎ遅い

649 :デフォルトの名無しさん:2010/05/07(金) 23:53:08
んじゃ軽くてカンマ付き数値できるAPIをさっさと教えて

650 :デフォルトの名無しさん:2010/05/07(金) 23:54:51
cout

651 :デフォルトの名無しさん:2010/05/07(金) 23:57:14
知らないならレスするなよクズ

652 :118 ◆4BcWhWACFc :2010/05/08(土) 00:00:03
あれ。wsprintf() じゃダメだっけか?

653 :118:2010/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;
}

654 :デフォルトの名無しさん:2010/05/08(土) 00:05:35
>>639
使うならUnionRectじゃなくて、IntersectRectじゃないのか?

655 :デフォルトの名無しさん:2010/05/08(土) 00:05:52
GetNumberFormat()

656 :デフォルトの名無しさん:2010/05/08(土) 00:07:46
軽くはないけど>>645のためのAPIって無かったっけ?
言語設定に従ってフォーマットするやつ。

657 :デフォルトの名無しさん:2010/05/08(土) 00:13:40
wsprintfでできれば一番いいんだけど

簡単なのない?

658 :デフォルトの名無しさん:2010/05/08(土) 00:14:39
GetNumberFormatもめんどくせえなあ

659 :デフォルトの名無しさん:2010/05/08(土) 00:37:47
早く教えろよ

660 :デフォルトの名無しさん:2010/05/08(土) 01:38:16
あるウィンドウ(A)にアクセラレータキーを設定し、
Aが最前面に無い状態で設定したキーが押されても
Aで受け取って処理出来るようにするには、
キーボードフックしか方法はありませんでしょうか?

661 :118 ◆4BcWhWACFc :2010/05/08(土) 01:51:35
最前面 != フォーカスを持っている、だから、フォーカスさえ持ってれば
処理できるよ。

フォーカスがない、ってことであれば、ホットキーかフック。

662 :デフォルトの名無しさん:2010/05/08(土) 01:58:28
>>660
while(1)でキー監視したり
RegisterHotKeyで登録したりかな

663 :660:2010/05/08(土) 02:04:41
最前面とフォーカスを勘違いしていたようです。
RegisterHotKey()を試してみたいと思います。

わかりやすいご説明ありがとうございました。

664 :デフォルトの名無しさん:2010/05/08(土) 03:35:08
NSISとinno Setupのスレッドありませんか

665 :118:2010/05/08(土) 03:35:43
>>661

得意げに !=←使うやつってなに?
俺Cとかできるの、すごいでしょ!ってアピールしてんのw

666 :デフォルトの名無しさん:2010/05/08(土) 04:21:33
Cは業界標準なので。趣味じゃないので。

667 :デフォルトの名無しさん:2010/05/08(土) 04:44:59
屁が出る

668 :118:2010/05/08(土) 05:32:10
>>667
orz=3

669 :デフォルトの名無しさん:2010/05/08(土) 07:57:24
≠のほうが分かりやすい

670 :118:2010/05/08(土) 08:07:59
!=よりこっちががわかりやすいです><

10 IF 1<>2 THEN GOTO 0

671 :デフォルトの名無しさん:2010/05/08(土) 08:11:33
!=がわかりやすい

672 :118:2010/05/08(土) 08:32:36
>>671

絶対わかりにくい。


10 A=10:B=5
20 IF A!=10 THEN B=A
30 PRINT B
RUN
10
OK


673 :デフォルトの名無しさん:2010/05/08(土) 08:32:39
私は選ばれし者です
!= という記号を使っている低俗な愚民どもを見るのは
私の理想論からおおきくはずれ、おろかな記号表現は滅されるべきだ

674 :デフォルトの名無しさん:2010/05/08(土) 09:03:38
<>と!=が同じ意味のPHPは空気の読める子

675 :デフォルトの名無しさん:2010/05/08(土) 09:14:03
A.exe (GUIアプリ:他人作成) から
B.exe (コンソールアプリ:自分作成) が起動される仕組みになっていて、
A.exe とのやりとりに B.exe の標準入出力が占有されている場合
B.exe 側が単独でコンソールウィンドウを開いて文字出力する方法を教えてください。

676 :118 ◆MNk6ialHnk :2010/05/08(土) 10:47:24
AllocConsole関数のリファレンスを見る限り無理じゃない?

677 :675:2010/05/08(土) 11:26:20
>>676
そうですか。
ウィンドウを生成して(リッチ)エディットコントロールの利用を検討してみます。
ありがとうございました。

678 :デフォルトの名無しさん:2010/05/08(土) 11:37:17
別にウインドウ作るよりは単独でコンソールウィンドウ開く方が簡単そうに思うけど

679 :デフォルトの名無しさん:2010/05/08(土) 11:38:49
不可視での起動方法を聞いた>>585です。
無事にStartupInfoを使って不可視での起動が出来ました。

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

680 :デフォルトの名無しさん:2010/05/08(土) 15:35:38
>>677
別にコンソール作らんでも、使われてないコンソールを使えば?
CONをOpenFile

>>679
非表示のことだったの

681 :デフォルトの名無しさん:2010/05/08(土) 17:14:20
スレッドAが変数iをインクリメントして、スレッドBがそれを読み取る場合、InterlockedIncrement()は必要ですか?
素人考えでは、インクリメント中にスレッドBがiを読んだとしても、
読み取られる値はiまたはi+1にしかならないはずなので、普通に++iで問題ないだろうと思ったのですが

682 :デフォルトの名無しさん:2010/05/08(土) 17:24:46
べ、べつにウィンドウを登録するなっ!
なんて言ってないんだからねっ!!

683 :デフォルトの名無しさん:2010/05/08(土) 17:29:07
どうしたの?

684 :デフォルトの名無しさん:2010/05/08(土) 17:52:11
>>681
その条件で、その値に関してだけなら問題無い。
スレッドBからアウトオブオーダーに絡むような参照をするなら話は別だけど。
例えば、iが+1されているなら、どこどこの変数は既に更新済みのはず、とか。

685 :デフォルトの名無しさん:2010/05/08(土) 18:29:40
>>684
マルチスレッドど素人なので、いろいろ調べてきました
InterlockedIncrement()はメモリバリアを生成するってMSDNに書いてありますね。

スレッドAで
hoge=1; ++i;
みたいなことをすると、書いた順番に実行されるとは限らないから、hogeをスレッドBで参照するのはまずい、ということでしょうか。
それだと多分まずそうなので、InterlockedIncrement()を使うことにします。ありがとうございました。

686 :675:2010/05/08(土) 19:12:50
>>678
>>680
>>682も?
CreateFileでCONOUT$を指定してハンドルを取得し
WriteFile/WriteConsoleを利用することで
希望通りの動作をさせることができました。
ありがとうございました。

687 :デフォルトの名無しさん:2010/05/08(土) 19:52:40
ファイルの存在を調べたいんだけど、
fopen_s で開いて開けたらOKってしてたら、
別プロセスでロックされているとエラーが返ってきてしまいました。

何とかOKで返すロジックを組みたいんですが、
何かいいAPIなり応用なりを教えてエロい人!!

688 :デフォルトの名無しさん:2010/05/08(土) 20:01:31
FindFirstFile

689 :デフォルトの名無しさん:2010/05/08(土) 20:03:53
>>687
PathFileExists

690 :118 ◆X4wDaRuYzw :2010/05/08(土) 20:05:10
PathFileExists

691 :687:2010/05/08(土) 23:06:43
>>688
なるほど、Find系APIもあった!

>>689, 690
PathFileExists!shlwapi.h は見なかったなぁーthx!!

692 :デフォルトの名無しさん:2010/05/09(日) 01:49:50
VS2008にてマウスの右クリックをフックするプログラムを作成しています。

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

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

何が原因なのでしょうか?
正直Windows7を今後メインで使うから別にいいじゃんと逃げたくなってきていますが・・・

693 :デフォルトの名無しさん:2010/05/09(日) 03:42:46
7専用アプリでいいよ
どうせ俺は使わないし

694 :デフォルトの名無しさん:2010/05/09(日) 07:31:59
>>692
7専用でいいよ
XPだけど使わないから

695 :デフォルトの名無しさん:2010/05/09(日) 09:11:27
>デバッグ開始またはデバッグなしで実行から
>起動した場合、なぜかフリーズしたような状態にはなりません

リリースとの構成の違いをつぶさに観察してみるとか、
あとあほみたいだけど、OSに処理返してる所がちゃんと書かれてるかも一応流れ確認するとか


696 :デフォルトの名無しさん:2010/05/09(日) 09:46:48
バグがあるプログラムが特定の条件下でまぐれで動く事は良くある事。
そんな常識もしらない素人が作るプログラムは他人は使わないから、7専用でいいよ。

697 :デフォルトの名無しさん:2010/05/09(日) 09:52:22
VSから起動って、Release版でもそうなるのか?

698 :デフォルトの名無しさん:2010/05/09(日) 11:24:44
>692
多分Lunaのバグが原因。

699 :692:2010/05/09(日) 12:27:24
>697
Release版でもDebug版でも実行ファイルから起動するとフリーズ状態になります。
VS経由じゃなくても、例えばOllyDbg等のデバッガ経由して起動した場合問題無い

>697
何らかのバグがあるのは分かりきっていますが、
意図通りに動く条件がこれまで見たことが無いものなのでバグの特定方法が分からず
アドバイスを求めました・・・

700 :デフォルトの名無しさん:2010/05/09(日) 12:46:25
真面目にそれはちょっとソース見ないとわからないかも
いやマジで

701 :デフォルトの名無しさん:2010/05/09(日) 12:53:55
メモリ破壊してるのかもしれない
Win7使ったりデバッガ経由したりしたら
XP直とは多少メモリの配置が変わって
問題なくなるとか

702 :692:2010/05/09(日) 13:45:39
原因は依然分かりませんが、逃げる方法だけは見つけました。
フックをかけるところで下記のようにWH_MOUSEのみをフックしていましたが、

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

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

とりあえずこれで問題無くなりましたが、根本原因が分からず気持ち悪いです・・・

703 :デフォルトの名無しさん:2010/05/09(日) 14:31:46
現象が再現できる最小のコードを見つけるといいよ

704 :デフォルトの名無しさん:2010/05/09(日) 16:39:38
早く教えてくれ

705 :デフォルトの名無しさん:2010/05/09(日) 17:05:16
>>704
>>700

706 :デフォルトの名無しさん:2010/05/09(日) 17:24:01
>>701
FTHはまぢいらねー
なんであんな機能増やした

707 :デフォルトの名無しさん:2010/05/09(日) 17:26:57
ぐだぐだほざいてねーでさっさとおしエロよ

708 :デフォルトの名無しさん:2010/05/09(日) 17:28:33
FTHってなんだ

709 :デフォルトの名無しさん:2010/05/09(日) 17:30:58
Fault Tolerant Heapだろ
Windows7から入ったメモリ破壊監視機構

710 :デフォルトの名無しさん:2010/05/09(日) 17:35:44
これか
ttp://re-thinkthings.spaces.live.com/Blog/cns!1C5AE98DA3645F42!732.entry

711 :デフォルトの名無しさん:2010/05/09(日) 17:58:27
すげぇけど無駄な機能

712 :692 ◆CIlmPyxysI :2010/05/09(日) 18:06:55
Fault Tolerant HeapをDisableにしてみましたが、Win7では意図通りに動きました。
Vistaでも動いたからこれが直接の原因ではないようです。
メモリ破壊の可能性はまだ否定できませんが・・・

ちなみに704と707は自分ではないです

713 :デフォルトの名無しさん:2010/05/10(月) 03:36:33
ネットで他人の書いたコードを見てると

::MessageBox()

みたいにコロン2つを付けてることがありますが、これはどういう意味なんでしょうか?
大域関数だよ、ってことを明示したいってだけですか?

714 :デフォルトの名無しさん:2010/05/10(月) 03:59:33
>>713
MFCで大域関数じゃないMessageBox()があるんだ・・・

715 :デフォルトの名無しさん:2010/05/10(月) 05:03:39
>>714
MFCですか!使ったことないので全然気付きませんでした。ありがとうございます。
今後使うハメになるかもしれないので、一応コロン付ける習慣をつけておこうと思います。

716 :デフォルトの名無しさん:2010/05/10(月) 05:34:02
あるいはVisual Studioのインテリセンスなど補完機能使うために::を打っているという場合もある。

717 :デフォルトの名無しさん:2010/05/10(月) 06:20:19
>>714
迷惑な話ですね

718 :デフォルトの名無しさん:2010/05/10(月) 07:31:54
引数の数が違うけどな。
普通はAfxMessageBoxの方を使うし。

719 :118:2010/05/10(月) 20:16:48
なんで足フェチは足を舐めるんだろう
手フェチは手を舐めるんだろうか
鼻フェチは鼻をなめるんだろうか

足フェチだけじゃね?
舐める欲求が強いのわ

720 :デフォルトの名無しさん:2010/05/10(月) 20:35:11
俺は指なめられるの好き

721 :デフォルトの名無しさん:2010/05/10(月) 20:35:47
ナデナデシテー

722 :デフォルトの名無しさん:2010/05/10(月) 21:29:42
放置プレイフェチは放置を舐める

723 :デフォルトの名無しさん:2010/05/12(水) 17:56:26
UDP通信なんだけど、1つのPCでソフトを2つで同じポート使って
通信ってできますか?
当然ながら後に立ち上げたソフトはポートのオープンに失敗するんですが

724 :デフォルトの名無しさん:2010/05/12(水) 17:59:20
Windows7 64bitの環境で動作するDirectShow/MediaFoundation対応の
メディアプレイヤーを作ろうとして、下調べをしているのですが、
.tsや.flv/.swfを再生させるTopology/Filtergraphの構築方法がわかりません。

topoedit/grapheditどちらでもグラフが構築できないようです。
WMPは何をやって再生しているのでしょうか?

725 :デフォルトの名無しさん:2010/05/12(水) 18:25:19
>>723
Loopback Adapterの追加でやれた気がするけど詳細忘れた
名前を変えて複数入れるとかだと思う


726 :デフォルトの名無しさん:2010/05/12(水) 18:40:08
>>723
IPアドレスを追加しる

727 :118:2010/05/12(水) 23:23:40
>>726
IPアドレスになってオマエの家に忍び込みたいヨォぉ

728 :デフォルトの名無しさん:2010/05/13(木) 09:37:47
>>725-726
普段は2台のPCで親、子のソフトで通信してますが
これを1台のPCで親と子ソフトを起動して通信させたいのですが


729 :726:2010/05/13(木) 09:41:51
>>728
俺はもう面倒だから回答しないけど
だれか親切な人が教えてくれるだろう

730 :デフォルトの名無しさん:2010/05/13(木) 09:42:54
>>723
>1つのPCでソフトを2つで同じポート使って通信ってできますか?
無理


731 :デフォルトの名無しさん:2010/05/13(木) 09:46:45
分からないなら答えないでください
うざいだけです

732 :デフォルトの名無しさん:2010/05/13(木) 09:52:41
>>729-731
知らないならレスしないで下さいよ。

最近知ったかが多くて困る

733 :デフォルトの名無しさん:2010/05/13(木) 10:00:06
ポートが1234だとして
127.0.0.1:1234

192.168.xx.xx:1234
で通信出来ないか?

734 :デフォルトの名無しさん:2010/05/13(木) 10:15:14
>>733
socketで作成したハンドルをバインドする時にすでにポートが他で開かれていたらエラーになるんですが・・・
他のやり方するんですか?

735 :デフォルトの名無しさん:2010/05/13(木) 10:21:37
分からないなら質問しないでください
うざいだけです

736 :デフォルトの名無しさん:2010/05/13(木) 10:21:43
先にワイルドカードでバインドされたポートでも、IPアドレス指定すればバインド出来る。

737 :デフォルトの名無しさん:2010/05/13(木) 10:25:49
>>735
みもふたもないこといわないでよ><

>>736
何やら光が見えてきそうです。
すんません。ワイルドカードでバインドはどうやってやるんですか?

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

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



739 :デフォルトの名無しさん:2010/05/13(木) 11:12:42
あ、よくよく考えたら重要な問題がww
これ確かに先に127.0.0.1の1234でアレして、
次に192.168.1.10の1234でアレはうまくいったのですが
これsendtoすると自分で取っちゃうつーアレが・・・
うーん、この辺の仕組みってどうすれば・・・

740 :デフォルトの名無しさん:2010/05/13(木) 11:13:05
>>736は嘘だった。忘れて。

741 :デフォルトの名無しさん:2010/05/13(木) 11:16:48
>これsendtoすると自分で取っちゃうつーアレが・・・
だから無理だって言ってるだろ


742 :デフォルトの名無しさん:2010/05/13(木) 11:20:17
>>740
でもヒントになったありがとう

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

っていうか、この方法なら従来のロジックを変えることなくできるからこれいいわあ〜
あー、こんな方法があったなんて知らなかったほんとみんなありがとう。

743 :デフォルトの名無しさん:2010/05/13(木) 11:20:38
面倒臭いから一方を仮想マシンの中で実行しなよ。

744 :デフォルトの名無しさん:2010/05/13(木) 11:26:17
>>743
そうやって逃げてばかりじゃダメなんだって!!

つーか、更に問題発生
ブロードキャストがうまくいかん
127.0.0.1の方はブロードキャスト受け取れないどうしよう


745 :デフォルトの名無しさん:2010/05/13(木) 11:34:12
解決策?
@ブロードキャストされたデータを受け取ったら127.0.0.1宛てにコピーして送信
ANICを2枚挿してリンクローカルじゃないプライベートアドレスを2つ作る
B諦める

746 :デフォルトの名無しさん:2010/05/13(木) 11:43:27
SO_REUSEPORT

747 :デフォルトの名無しさん:2010/05/13(木) 11:44:01
>>745
@PC1台で2つソフトをアレしてはいますが、更に他にPCあってそっちにも子ソフトがいるので
 これやっちゃうと、数人が127.0.0.1に送ることになるのでNG
Aハード的な対策はNGなんですよ・・
B(´・ω・`) ショボーン

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

しかしながら今回の実験で同じPCで同ポートアレができることがわかったのは大収穫です。
ほんとありがとう

748 :デフォルトの名無しさん:2010/05/13(木) 12:18:12
スレチ

749 :デフォルトの名無しさん:2010/05/13(木) 12:42:50
自分がバカだってことを全世界に晒してしまって、おかしくなってるんでしょう。

750 :デフォルトの名無しさん:2010/05/13(木) 13:40:38
知らないくせに煽る事しかできない馬鹿に言われたくねえww

751 :デフォルトの名無しさん:2010/05/13(木) 13:42:25
知ってるくせに解決できないキチガイに言われたくねぇww

752 :デフォルトの名無しさん:2010/05/13(木) 13:43:28
お前のついてけない話題になったからって僻むなよ
みっともねー奴だなあ

753 :デフォルトの名無しさん:2010/05/13(木) 13:44:27
いいから黙れ馬鹿共。スレチだっつってんだろksg

754 :デフォルトの名無しさん:2010/05/13(木) 13:46:06
仮想NICでアレコレ手を考えてた俺

755 :755:2010/05/13(木) 15:22:27
アイコンエディターを作りたいんですが、
編集した画像をどうやってアイコンファイルとして作成できるんですか?
なんか便利なAPIが用意されてたりするんでしょうか?

756 :デフォルトの名無しさん:2010/05/13(木) 15:27:10
機能自体はGDI+にあるはず

757 :デフォルトの名無しさん:2010/05/13(木) 17:53:20
>>747>>723>>118と同一人物として
 文面からしか判断できないので間違っている可能性の方が高いが,,,
もう少し他人の労力に対して感謝の意を表す努力をした方が良い。
あなたがどの程度の前提や考察をしたうえで、質問をしているかは
読み手には書いてあること以上は判らない。

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

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

 実際の設計は、あなたが考えているほど単純明快ではないよ。

758 :デフォルトの名無しさん:2010/05/13(木) 17:54:36
>>757
遅レスでしつこいですね。

759 :デフォルトの名無しさん:2010/05/13(木) 18:07:03
↑この辺のバカは別人だと思う


760 :118:2010/05/13(木) 19:05:21
             /)
           ///)
          /,.=゙''"/   
   /     i f ,.r='"-‐'つ____   こまけぇこたぁいいんだよ!!
  /      /   _,.-‐'~/⌒  ⌒\
    /   ,i   ,二ニ⊃( ●). (●)\
   /    ノ    il゙フ::::::⌒(__人__)⌒::::: \
      ,イ「ト、  ,!,!|     |r┬-|     |
     / iトヾヽ_/ィ"\      `ー'´     /

761 :デフォルトの名無しさん:2010/05/13(木) 22:17:57
PCに接続されているusbカメラの名前を
全て取得したいのですが、どのような関数を使えばいいのでしょうか?
どなたか分かる方おられましたらよろしくお願いします。

762 :118:2010/05/13(木) 22:33:51
>>761
SetupDiEnumDeviceInterfaces

763 :デフォルトの名無しさん:2010/05/13(木) 22:35:15
EnumlateConnectedByUsbOnMyPersonalComputer
じゃダメかしらん?

764 :デフォルトの名無しさん:2010/05/13(木) 22:35:39
nagee-----------------

765 :デフォルトの名無しさん:2010/05/13(木) 22:42:06
何のジョークかと思った

766 :761:2010/05/13(木) 22:49:56
>>762
>>763
ありがとうございます!
早速使い方を調べて使ってみたいと思います。

EnumlateConnectedByUsbOnMyPersonalComputer
もググって調べてみたのですが、ヒットしませんでした。
色々調べてみます。


767 :118 ◆X4wDaRuYzw :2010/05/13(木) 22:54:58
enumerate だし。

768 :デフォルトの名無しさん:2010/05/13(木) 23:25:36
なんだジョークなのか

769 :118:2010/05/13(木) 23:39:58
おめエラーうぜええええええええ
審問に答えないカスどもどっかいけよ!!!!!!!!
雑談はなれ合いはラウンジでやれーーーーーー
マイタじゃねえんだよここゎ
ボケがえ^^^^^^^^^
沢村以下だな


770 :デフォルトの名無しさん: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) きちんとリンクできる別の方法はあるか?(統合環境を使うなど)

771 :デフォルトの名無しさん:2010/05/13(木) 23:44:08
沢村懐かしいな
お前そんな頃からいるのかよ

772 :デフォルトの名無しさん:2010/05/13(木) 23:45:35
ヒント: 118は一人ではない


773 :デフォルトの名無しさん: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でいいんじゃないかな。


774 :デフォルトの名無しさん:2010/05/14(金) 11:28:59
ビットマップについて質問させてください。
16ビットのビットマップを作成しました。
これに対して、赤色(255,0,0)のブラシとペンでRectangleで描画したとします。
このときピクセルにセットされるのはメモリを見ると007Cでした。
この値を描画する前に知る手段はあるのでしょうか?
自前で計算と思ったのですが、16ビットで描画されるとき
RGBが555なのか565なのか変わる場合があるのか自分にはわからないので
質問させていただきました。

775 :デフォルトの名無しさん:2010/05/14(金) 12:08:07
777

776 :デフォルトの名無しさん:2010/05/14(金) 12:12:01
自分でビットマップを作成したので、BITMAPINFOHEADERについて
もう少し調べた方がよさそうです。失礼しました。

777 :デフォルトの名無しさん:2010/05/14(金) 12:12:57
777

778 :デフォルトの名無しさん:2010/05/14(金) 13:56:08
777

779 :デフォルトの名無しさん:2010/05/14(金) 15:17:17
そろそろUDPでsrcポートとdstポートを逆にして送る方法教えてくれよ

780 :デフォルトの名無しさん:2010/05/15(土) 20:10:06
C++ の本かって、WinMain とウインドープロシージャの構成、主にWin32プログラムを見ながら勉強しております。
フォーム上のボタンをおしたら、リストボックスに処理結果等の文字列を表示させたいと考えています。
ボタンを押したらというのは、 そこで、メッセージを拾えばいいと思うのですが、リストボックスに表示させるには具体的にどうやればいいのでしょうか?また、こういったPGは、MFC等を使うのが、一般的なのでしょうか?


781 :デフォルトの名無しさん:2010/05/15(土) 20:13:47
GetWindowText(hEdit, szBuf, 64);
SetWindowText(hEdit, "");

こんなんでよければ


782 :デフォルトの名無しさん:2010/05/15(土) 20:17:34
>>781 にプラスして、さらにこんなサイトを見れば
http://wisdom.sakura.ne.jp/system/winapi/win32/index.html


783 :デフォルトの名無しさん:2010/05/15(土) 20:23:40
GUIアプリ作りたかったらC#にしようぜ
今からC++&Win32APIなんてマゾすぎる

784 :デフォルトの名無しさん:2010/05/15(土) 20:31:04
RES ありがとうございます。

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

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

こういったPGの場合、vb とC#を比べた場合どちらが優れているでしょうか?

785 :118 ◆X4wDaRuYzw :2010/05/15(土) 21:04:09
どちらにせよスレ違い。VB or C#スレに行け。

786 :デフォルトの名無しさん:2010/05/15(土) 21:20:50
>>784
Windowsが用意しているwin32API関数群を使って何かしたい、
そしてウィンドウはフォーム(ダイアログ)形式でって話ならば、例えば
Visual C++ 2008 Express か、 2010 で、かつ フリーウェアの ResEdit を使って
ダイアログとして作ってしまうって手がある。 CreateDialog 関数を使って基本的なウィンドウを作り、
コントロールをリソースとして配置してしまえば、若干コーディングを省略できて、かつ GUI で各種コントロールを配置できて楽。

ちなみに、C# や VB で win32APIを呼び出す事も出来るけど、そんな事するくらいなら
上記方法で VC++ 使ってやっても特に難しい事は無いぜ。 ・・・ただし C++ が普通に理解出来ている事が大前提だけど


787 :デフォルトの名無しさん:2010/05/15(土) 22:51:43
>>786
> フリーウェアの ResEdit を使って
>ダイアログとして作ってしまうって手がある。 CreateDialog 関数を使って
>基本的なウィンドウを作り、
>コントロールをリソースとして配置してしまえば、若干コーディングを省略>できて、かつ GUI で各種コントロールを配置できて楽。

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


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


VB,VC比較した、開発のイメージがなんとなくつかめました。

788 :デフォルトの名無しさん:2010/05/17(月) 11:09:43
SetEvent(),ResetEvent()でシグナル、非シグナル状態に変更しています。
今、カーネルオブジェクトがシグナルか非シグナルの状態を取得する方法ってどうすればいいでしょうか?


789 :デフォルトの名無しさん:2010/05/17(月) 11:13:33
WaitForSingleObject

790 :788:2010/05/17(月) 11:27:35
>>789 返信ありがとうございます。

こういう感じでしょうか?
DWORD nRet = WaitForSingleObject(hSignal,0);
if(nRet == WAIT_OBJECT_0) {
  //シグナル状態
}
else if(WAIT_TIMEOUT) {
  //非シグナル状態
}


791 :デフォルトの名無しさん:2010/05/17(月) 11:30:49
それで合ってる

792 :デフォルトの名無しさん:2010/05/17(月) 11:42:00
>>791
ありがとうございました。

793 :デフォルトの名無しさん:2010/05/17(月) 14:15:25
Windows7でウィンドウがスナップしてるかどうかって、どうやって調べるんでしょうか?
また、ウィンドウをプログラム側からスナップさせるにはどうすればいいんでしょうか?
検索してみたけどユーザー向けの説明か、無効にする方法ばかりで・・・

794 :デフォルトの名無しさん:2010/05/17(月) 14:19:42
むり

795 :デフォルトの名無しさん:2010/05/17(月) 15:08:37
つーかスナップって何のこと?

796 :デフォルトの名無しさん:2010/05/17(月) 15:13:07
>>795
ウインドウをドラッグして・・・
 マウスカーソルを画面上端へくっつける 最大化する
 マウスカーソルを画面右端へくっつける ウィンドウが画面右半分のサイズになる
 マウスカーソルを画面左端へくっつける ウィンドウが画面左半分のサイズになる

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

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

 

797 :デフォルトの名無しさん:2010/05/17(月) 15:13:30
下げ忘れた…

798 :デフォルトの名無しさん:2010/05/17(月) 15:47:32
ありがとう
要するに7の機能なのね
利点がさっぱり判らんけど

799 :デフォルトの名無しさん:2010/05/17(月) 16:51:42
スナップと言うとウィンドウが画面端に吸い付くのを指すと思っていたが
7だとなんかよくわからん機能になってるんだな

800 :デフォルトの名無しさん:2010/05/17(月) 18:32:18
そういうのって隠しスタイルビットとか立ってるんじゃね?
spyで調べるとか

801 :デフォルトの名無しさん:2010/05/17(月) 19:05:14
ShowWindowにフラグ追加してくれればよかったのにな

802 :デフォルトの名無しさん:2010/05/17(月) 23:56:05
GetCurrentHwProfile()で取得できるGUIDは実行する毎に値が変わりますか?

803 :793:2010/05/18(火) 02:34:36
>>800
残念ながら特に変化しないようです

804 :デフォルトの名無しさん:2010/05/18(火) 03:22:05
>>803
Win7入れてないから詳しくないんだけど
>マウスカーソルを画面上端へくっつける 最大化する

従来の最大化がイコールで
>ウィンドウをドラッグして動かすと元のサイズに戻る
という仕様なら
GetWindowPlacement
SystemParametersInfo
GetWindowRect
あたりのAPIを使って対処はできると思う

そうでないなら別のフラグを持ってるという事なので
Win7拡張APIのヘッダに
locとかposとかマッチしそうなワードでGrepしてみるといいかもね

805 :デフォルトの名無しさん:2010/05/18(火) 10:09:15
特定のアプリケーションに「F12キーを押す」というメッセージを送信したいです

そこで、SendMessage()関数がありますが、
その特定のアプリケーションのHWNDハンドルをどうやって取得したらいいでしょうか?


806 :デフォルトの名無しさん:2010/05/18(火) 10:14:13
特定のアプリケーションのThreadIDを全て取得しEnumThreadWindows

807 :デフォルトの名無しさん:2010/05/18(火) 10:15:56
EnumWindows

808 :デフォルトの名無しさん:2010/05/18(火) 10:55:38
FindWindowを見つけたので

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

としても hwnd には 0 が代入されます
何が原因なのでしょうか?


809 :デフォルトの名無しさん:2010/05/18(火) 11:02:33
>>808
クラス名が違うんじゃね?
GetLastErrorで何がおかしいか調べろ

810 :デフォルトの名無しさん:2010/05/18(火) 11:12:30
トップレベルではない
セッションが異なる

811 :デフォルトの名無しさん:2010/05/18(火) 11:14:38
セッションってなんぞ?

812 :デフォルトの名無しさん: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 );

ノートパッドではうまくいきました
次にタブキー入力を送信したいのですが またうまくいきません

813 :デフォルトの名無しさん:2010/05/18(火) 11:17:18
msg = WM_KEYDOWN
にも変えましたがうまくいかないです

814 :デフォルトの名無しさん:2010/05/18(火) 11:30:23
>>813
英語のMSDNをよく読むと、SendされるメッセージとPostされるメッセージが
明確に区別されている。
どっちで送っても平気なメッセージもあるが、WM_KEYDOWNはPostしないと駄目。
(TranslateMessageの都合があるので)

815 :デフォルトの名無しさん: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してみましたが、ダメでした

816 :デフォルトの名無しさん:2010/05/18(火) 11:48:26
アクティブにしてもいいならSendInputを使った方が

817 :デフォルトの名無しさん:2010/05/18(火) 12:01:56
SendInput

818 :118:2010/05/18(火) 12:03:30
おまえらまだAPIつかってるのか
いい加減anci準拠のプログ作れよww

819 :デフォルトの名無しさん: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 もどうやって そのキーをアプリケーションに送るのでしょうか?

820 :デフォルトの名無しさん:2010/05/18(火) 12:29:14
UINT SendInput(
UINT nInputs, // 入力イベントの数
LPINPUT pInputs, // 挿入する入力イベントの配列
int cbSize // 構造体のサイズ
);
のINPUT構造体ってなにをインクルードするんでしょうか?
windows.h インクルードしてるんですが、コンパイルエラーでして

821 :デフォルトの名無しさん:2010/05/18(火) 12:33:08
なんかそろそろ釣りでした。とか言い出しそう

822 :デフォルトの名無しさん:2010/05/18(火) 12:41:25
#define _WIN32_WINNT 0x0500
定義したらいけました
ありがとうございました

823 :デフォルトの名無しさん:2010/05/18(火) 13:12:56
ちなみに 118 とは別人です
データベース乙というか張り込み乙としか

824 :デフォルトの名無しさん:2010/05/18(火) 13:15:24
WM_*使う方法ではダメなの?
SendInputでできてもあんまうれしくないんだけど

825 :デフォルトの名無しさん:2010/05/18(火) 13:43:19
何がしたいのか分からないけど
SendMessage(
FindWindowEx(FindWindow("notepad",NULL),NULL,"Edit",NULL),
WM_CHAR,VK_TAB,NULL);
じゃだめなん?

826 :デフォルトの名無しさん:2010/05/18(火) 16:02:58
805じゃないけどできた
805がアホなだけだと思う

827 :デフォルトの名無しさん:2010/05/18(火) 16:12:24
で?

828 :デフォルトの名無しさん:2010/05/18(火) 20:45:58
質問です
アプリ起動時に指定されたDLLが必要なんですがどこにおけばいいんですか?
いつも実行ファイルと同じ場所にコピーしておいています

829 :デフォルトの名無しさん:2010/05/18(火) 21:00:57
DLL 検索でググると・・

830 :デフォルトの名無しさん:2010/05/18(火) 22:20:56
>>828
OSとか設定で微妙に検索順は違うが、
少なくとも実行ファイルのディレクトリは最優先だから、それでいい。

831 :デフォルトの名無しさん:2010/05/19(水) 00:21:33
DLLが無いとエラーが出るから、それをミロ←何処におけばいいか書いてある

832 :デフォルトの名無しさん:2010/05/19(水) 10:52:34
Windowsのサービスプログラムを作成しています。
サービスのプログラム側から、ログインユーザが存在するのかを判定したいのですが
方法がわかりません。ご存知の方がいましたら教えていただけないでしょうか?

833 :デフォルトの名無しさん:2010/05/19(水) 13:20:01
explorer.exe(正確にはログインシェル)が立ち上がってるかで判定できる

834 :デフォルトの名無しさん:2010/05/19(水) 14:12:58
WTSEnumerateSessions

835 :デフォルトの名無しさん:2010/05/19(水) 21:40:58
SetWindowTextの第2引数にNULL指定したらコントロールのテキストはクリアされるんですか?

836 :デフォルトの名無しさん:2010/05/19(水) 21:42:53
そんなことはどこにも書いていない

lpString
新しいウィンドウタイトルまたはコントロールのテキストとして使われる、NULL で終わる文字列へのポインタを指定します。

837 :デフォルトの名無しさん:2010/05/19(水) 21:43:04
MSDNライブラリが2000切り始めよった

838 :デフォルトの名無しさん:2010/05/19(水) 21:44:04
>>835
何故マニュアルを読まないのか?

839 :デフォルトの名無しさん:2010/05/19(水) 21:52:36
>>838
MSDNは読みましたが、NULLでクリアを意図しているコードを見たもので…
クリアするときはNULL文字を指定すればいいですよね?

840 :デフォルトの名無しさん:2010/05/19(水) 21:57:14
MSDNよりそのわけのわからんコードを信用する理由は何?

仕様はどうでもいい、ただ挙動が知りたいって事なら実験結果がすべてだろ。
それに従って好きにしろよ。
ただし、そんな糞コードは誰にも使わせるな。

841 :デフォルトの名無しさん:2010/05/19(水) 22:24:55
>>839
NULLの場合の挙動は知らないが、"\0"(NUL文字)は空文字列だからクリアできるに決まっとる

>>840
過去のバージョンで既定となっている動作でMSですら使っていそうならはそうほいほいと変更できないんじゃないか

842 :デフォルトの名無しさん:2010/05/19(水) 22:28:22
1.SetText( hWnd, "" )
2.SetText( hWnd, "\0" )
3.SetText( hWnd, NULL )

1と2は同じだが、3は明らかに意味が異なる
文字列は常にアドレスを持つのだ

843 :デフォルトの名無しさん:2010/05/19(水) 22:49:00
WM_SETTEXTに反応するコントロールなら、ね

844 :118:2010/05/20(木) 02:07:12
>>842
ハァ?
NULLだってアドレスだろ?
どこもさしていないことが保証されている。

4.SetText( hWnd, '\0')

845 :デフォルトの名無しさん: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

846 :デフォルトの名無しさん:2010/05/20(木) 17:18:13
実行ファイル(自分)のパスを取得する方法を探しています。

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

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

正確に(いかなる場合でも)自分のファイルのパスを取得する方法をご存知の方がいましたら教えていただけないでしょうか?

847 :デフォルトの名無しさん:2010/05/20(木) 17:25:06
>>846
hModuleにNULL入れたんじゃない?

848 :デフォルトの名無しさん:2010/05/20(木) 19:33:35
VC++EE2008,2010両方で試したのですが
GetSystemMetrics(SM_XVIRTUALSCREEN) が
error C2065: 'SM_XVIRTUALSCREEN' : 定義されていない識別子です。
となり、コンパイル出来なくなってしまいました。
マルチディスプレイ対応のために座標を取得するコードなのですが、
最近のコンパイラではどうやっても動かせないのでしょうか。

849 :デフォルトの名無しさん:2010/05/20(木) 19:39:51
それはコンパイラの問題では無くてSDKの問題だという事に思い至らない人は
有料の開発ツールを使いましょう。

850 :デフォルトの名無しさん:2010/05/20(木) 19:47:40
FindFirstFileで [000] [0000] という2つのファイルがあった場合
00?0 では後者しかヒットしませんが 000? だと前者もヒットします
終端の?を正しく評価して貰うことは出来ないんでしょうか

851 :デフォルトの名無しさん:2010/05/20(木) 20:18:54
ハァ?

852 :デフォルトの名無しさん:2010/05/20(木) 20:31:01
FindFirstFile のワイルドカードルールが気に入らないなら
全ファイル列挙しつつ自前で文字列をマッチする

853 :デフォルトの名無しさん:2010/05/20(木) 22:28:04
やっぱそれしかないのか
実を言うと質問した時点でもう自前のコードは書き上げちゃってたんだけど
どうにもこの変な仕様が気になって何か自分の見落としがあるのかと思って質問してみたんだ
終端かそうでないかで評価の仕方が違うというのは何か気持ち悪いけどこういう仕様なんだな
ありがと

854 :デフォルトの名無しさん:2010/05/20(木) 22:44:29
> やっぱそれしかないのか
そんな事は無い。MSに入社してAPIの仕様変更を決定できるまでに出世すれば可能。

855 :118:2010/05/20(木) 23:18:35
>>850
エクスプーローラーのファイル検索でどうなるか確かめれ

856 :デフォルトの名無しさん:2010/05/21(金) 00:00:36
リージョンでウィンドウの形変えてるプログラム組んだんだが
俺のPCでは動いても、友達のPCでは形が変わらなかった
それで、コード周りを調べたら
SetWindowRgn( hwnd, hrgn, TRUE );
DeleteObject( hrgn );
と書いていたんだが、環境によってはDeleteObjectで元に戻ってしまう?
SetWindowRgnで渡したhrgnは、システムが保持するのは知ってたけど
削除しても動いてたから、削除してました

857 :デフォルトの名無しさん:2010/05/21(金) 00:53:26
>>856
SetWindowRgn 関数が成功すると、システムは、パラメータ hRgn で指定したリージョンを所有します。
システムは、このリージョンのコピーを作成しません。
したがって、これ以降はこのリージョンハンドルに対して関数を呼び出すべきではありません。
特に、このリージョンハンドルを削除しないでください。
必要がなくなると、システムはこのリージョンハンドルを自動的に削除します。

858 :デフォルトの名無しさん:2010/05/21(金) 07:00:13
ただ関数と書かれるとSetWindowRgn 関数のことだと思ってしまうが
実はDeleteObject関数のことなんだよな

859 :デフォルトの名無しさん:2010/05/21(金) 07:29:21
試しに実行してみたらDeleteしても動くな
元の形に戻るのかは分からないが、仕様で削除するなとあるからDeleteObjectの行を消すべき

860 :デフォルトの名無しさん:2010/05/21(金) 11:29:00
他プロセスのRICHED20Aに対してEM_GETLINEを使ったときに
なぜか一行の半分くらいしか文字列が取得されなくて困ってます

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

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

いろいろ試してみましたが解決の糸口すら掴めません
もし宜しければこの無能な私に救いの手をお願いします

861 :デフォルトの名無しさん:2010/05/21(金) 11:48:36
>>860
バッファサイズの指定をしてないか、間違えてるんでしょう。

862 :デフォルトの名無しさん:2010/05/21(金) 11:51:05
>>861
ああ、書き忘れましたがバッファサイズはちゃんと指定してあります

863 :デフォルトの名無しさん:2010/05/21(金) 11:52:20
>>862
バッファサイズの指定を間違えてるんでしょう。

864 :デフォルトの名無しさん:2010/05/21(金) 12:21:01
まさか例えば日本語20文字に対して char のサイズで20バイトのバッファとっていて
それでちゃんと設定してるつもりとかそういう

865 :860:2010/05/21(金) 13:35:47
バッファはかなり余分に取ってあります

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

例えば「あいうえ」という行であれば「あい」まで
「あいうえおかきく」という行であれば「あいうえ」までというようにです

866 :デフォルトの名無しさん:2010/05/21(金) 13:56:07
メモリウィンドウで見るとどうなってるか調べた方がいいかもしれん

867 :866:2010/05/21(金) 14:01:58
つかVS使用前提じゃなかったねこのスレ スルーしてくれ

868 :デフォルトの名無しさん:2010/05/21(金) 14:27:21
>>865
もう君を哀れむことしか出来ない

869 :デフォルトの名無しさん:2010/05/21(金) 14:40:42
>>865
バッファサイズの指定を間違えてるんでしょう。


870 : ◆iHbaz.yrr2 :2010/05/21(金) 15:08:04
>>865
バッファサイズの指定を間違えてるんでしょう。

871 :デフォルトの名無しさん:2010/05/21(金) 15:17:46
>>865
その部分だけソース

872 :860:2010/05/21(金) 15:30:35
バッファの指定を間違えているということはありません
バッファサイズは固定してあるので
もし皆さんの仰るようにバッファサイズの指定が問題であれば
「あいうえおかきく」の時に「あいうえ」が取得できて
「あいうえ」の時に「あい」しか取得できないはずがないからです

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

ソースは家に帰ってから出しても良いのですが
本当に普通にバッファを確保→先頭にバッファサイズを書込み→SendMessageしてるだけで
特に見せるような特別なことは何もしていません
どこにでもあるサンプルソースと全く同じです

873 :デフォルトの名無しさん:2010/05/21(金) 15:35:34
下手の考え休むに似たり
百聞は一見に如かず
愚者は経験に学び賢者は歴史に学ぶ

874 :デフォルトの名無しさん:2010/05/21(金) 15:36:05
>>872
バッファサイズの指定を間違えてるんでしょう。


875 : ◆iHbaz.yrr2 :2010/05/21(金) 16:15:11
umm
The return value is the number of TCHARs copied.

876 :デフォルトの名無しさん:2010/05/21(金) 17:22:58
>>872
お前の頭が間違いなんでしょう

877 :860:2010/05/21(金) 18:46:13
自我崩壊しました

878 :118:2010/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;
}

879 :デフォルトの名無しさん:2010/05/21(金) 18:50:39
2バイト文字で文字数にバイト数指定すると半分になるよ

880 :0x35c:2010/05/21(金) 19:21:00
こんな感じなんですが
??? ReadEMText(HWND hwndeditbox, std::vector<TCHAR>& buffer) {
????
GetWindowText(hwndeditbox, buffer, ??);
????
}
どうしたらいでしょうか?

881 :デフォルトの名無しさん:2010/05/21(金) 19:36:58
文字が半分しか取れないんです

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

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

ソース見せろよ

自我崩壊しました ← いまここ

882 :デフォルトの名無しさん:2010/05/21(金) 19:50:37

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

検索のヒント:

883 :デフォルトの名無しさん:2010/05/21(金) 19:53:58
てか、ReadEMTextの定義か。
中身が、GetWindowTextって何よw

884 :848:2010/05/21(金) 20:31:06
Windows SDKをダウンロードしてWinUser.hを調べたところ
#define _WIN32_WINNT 0x0500
とすればコンパイルが通る事がわかりました。(以前は0x0400で問題なかった)
ありがとうございました。

885 :デフォルトの名無しさん:2010/05/21(金) 20:34:10
Linuxが今でも使われてる理由が分かってきたきがする

886 :デフォルトの名無しさん: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

887 :デフォルトの名無しさん:2010/05/21(金) 21:16:49
>>884
本来マルチモニタサポートはWin98/2000からだけど、
Win9xのサポートを打ち切ったから2000からに書き換えたのかもしれんね。
ちなみに、sdkddkver.hに0x0500のような定数が定義されているので、
そっちを使うとマニア受けする。

888 :デフォルトの名無しさん:2010/05/21(金) 21:22:33
>>886
そのソフト知らないけど、なんとなくMDIなんじゃなかろうかと思った


889 :デフォルトの名無しさん:2010/05/21(金) 21:51:52
>>886
一見スマートに見えるけど、中身はガタガタっておちだろうな
いろんなやり方が考えられる

890 :デフォルトの名無しさん:2010/05/21(金) 21:54:49
歴史が長いからガタガタでも、恐らく変なことはしてないだろう

891 :デフォルトの名無しさん:2010/05/21(金) 22:14:08
>>886
普通はツールウィンドウ(WS_POPUPとWS_EX_TOOLWINDOWを持たせたウィンドウ)を使う。
そのスクショはAviUtilだと思うけど、Spy++で確認したらそうなってる。
画像編集ソフトなんかでも良く見るタイプ

892 :886:2010/05/21(金) 23:07:14
>>888
MDIというと、OfficeやPhotoshopみたいに、>>886のソフトよりは機能豊富(ウィンドウサイズの変更、
描画できるクライアント領域など)なウィンドウというイメージがあります・・・
そこまでは必要なく、>>886みたいに各種値を設定できるだけで十分なんです。
あと、MDIって、親ウィンドウの枠の中に複数存在するカタチじゃありませんでしたっけ??

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

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

ツールウィンドウスタイルで組むことにします。
みなさん、ご助言ありがとうございました。 m(_ _)m

893 :デフォルトの名無しさん:2010/05/21(金) 23:08:09
PDFを読み込んでjpgかmpegにするAPIを教えてください

894 :デフォルトの名無しさん:2010/05/21(金) 23:51:26
ありますん

895 :デフォルトの名無しさん:2010/05/22(土) 00:09:04
え、マジ?

896 :デフォルトの名無しさん:2010/05/22(土) 16:29:21
CreateWindowで作ったボタンを押したときにボタンを移動させたいんだけどどうすればいいですか?

897 :デフォルトの名無しさん:2010/05/22(土) 18:35:02
ボタンを移動させるコードをかけばいい

898 :デフォルトの名無しさん:2010/05/22(土) 18:45:55
念力を磨く

899 :デフォルトの名無しさん:2010/05/22(土) 19:18:46
>>893
なんでそんなピンポイントの個人的な都合を満たすような関数が
OSのAPIにあると思ったんだよw

900 :デフォルトの名無しさん:2010/05/22(土) 19:20:00
>>896
「ボタンもウィンドウ」 だから、移動のメッセージ投げればいんじゃね

901 :デフォルトの名無しさん:2010/05/22(土) 19:38:45
>>899
そんなピンポイントってのが気になって、「pdf jpeg 変換」でぐぐったら
結構対処法が出て来る。Windows の API ではないけどネ。
世の中、同類の多さにびっくり。

902 :デフォルトの名無しさん:2010/05/22(土) 19:52:09
方法とAPIじゃレイヤーがだいぶ違う。
「彼女を作る」で検索すると結構ヒットするけど、彼女を作るAPIはおそらく存在しない。

903 :デフォルトの名無しさん:2010/05/22(土) 20:44:35
CreateGirlfriend

904 :デフォルトの名無しさん:2010/05/22(土) 21:56:07
CreateLover

905 :デフォルトの名無しさん:2010/05/22(土) 22:02:09
>>903
サブクラス
>>904
スーパークラス

906 :デフォルトの名無しさん:2010/05/22(土) 22:05:15
DiveToThe2DWorld

907 :デフォルトの名無しさん:2010/05/22(土) 22:12:00
>>903
アクセス違反

>>904
メモリ不足

908 :デフォルトの名無しさん:2010/05/22(土) 22:36:24
そこはスペック不足と言え

909 :デフォルトの名無しさん:2010/05/22(土) 23:00:19
じゃあメモリを増設すればいいんだな!

910 :デフォルトの名無しさん:2010/05/22(土) 23:13:48
すいません
DestroyCherryBoyで注意すべきことはありますか?

911 :デフォルトの名無しさん:2010/05/22(土) 23:16:30
ネットに繋がっていると、API呼び出し直後に通報される。

912 :デフォルトの名無しさん:2010/05/22(土) 23:26:21
それを破棄するなんてとんでもない!

913 :デフォルトの名無しさん:2010/05/22(土) 23:29:52
GetWomanStatusで相手が素人かプロかを事前にチェックしとかないと正常に動作しない

914 :デフォルトの名無しさん:2010/05/22(土) 23:31:41
DestroyCherryBoyって(自分じゃなくて余所にいる)チェリーボーイをDestroyするって意味だろww

915 :デフォルトの名無しさん:2010/05/22(土) 23:37:50
コールする側はCWomanである必要があるということか

916 :デフォルトの名無しさん:2010/05/23(日) 01:26:56
BoyをDestroyしたら殺人ですがな
Cherryだけを消さないと

そういうAPIはありますか?環境はVista 64bitです。

917 :デフォルトの名無しさん:2010/05/23(日) 01:31:18
Win7から対応じゃなかったっけ?
MSもセコいよなぁ。

918 :デフォルトの名無しさん:2010/05/23(日) 02:16:58
つまんね
鬱病予備軍だな


919 :896:2010/05/23(日) 05:28:07
みなさんありがとうございます
質問を変えます
座標x:100 y:100にボタンが存在するかを判定することはできますか?

920 :デフォルトの名無しさん:2010/05/23(日) 05:39:15
>>913
Access DeniedになってしまうからCherryBoyなんだろ?

921 :デフォルトの名無しさん:2010/05/23(日) 07:59:37
もういいよつまらない

922 :デフォルトの名無しさん:2010/05/23(日) 09:05:45
>>919
ttp://msdn.microsoft.com/ja-jp/library/cc364874.aspx

923 :デフォルトの名無しさん:2010/05/23(日) 09:34:55
>>922
その座標のウインドウハンドルを取得してウインドウクラスを確認する

924 :デフォルトの名無しさん:2010/05/23(日) 09:57:24
セキュリティレベルを下げればアクセスできるぜ?

925 :デフォルトの名無しさん:2010/05/23(日) 15:42:48
下げんな

926 :デフォルトの名無しさん:2010/05/23(日) 16:12:58
上げて落とす

927 :デフォルトの名無しさん:2010/05/23(日) 16:34:14
予想どおり^q^

928 :デフォルトの名無しさん:2010/05/23(日) 18:52:45
myplugin.dllの設定を同一ディレクトリの
myplugin.iniから読みたいんですが
dll内のコードから自身のdllのフルパス名を取得する方法があったら教えてください。

929 :デフォルトの名無しさん:2010/05/23(日) 18:56:31
GetModuleFileName

930 :デフォルトの名無しさん:2010/05/23(日) 19:26:19
ありがとうございます。

931 :デフォルトの名無しさん:2010/05/25(火) 09:05:35
win32apiのプログラムでコンソールから起動してコンソールにHello Worldと表示するにはどうしたらいいですか

932 :デフォルトの名無しさん:2010/05/25(火) 09:10:18
AllocConsoleとかそこらへん

933 :デフォルトの名無しさん: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;
}

934 :デフォルトの名無しさん: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;
}

935 :デフォルトの名無しさん:2010/05/25(火) 10:44:23
>>934
それでやったら新規にウィンドウが出てきてそこに出力されました。
そうじゃなくてコマンドプロンプトから実行して新規ウィンドウを開かずにその
コマンドプロンプトのウィンドウに出力されてほしいんですが。

936 :デフォルトの名無しさん:2010/05/25(火) 11:00:00
氏んでほしい

937 :デフォルトの名無しさん:2010/05/25(火) 11:06:27
GetStdHandle()


938 :デフォルトの名無しさん:2010/05/25(火) 14:53:07
>>935
ならK&RのHello Worldでいい

939 :デフォルトの名無しさん:2010/05/25(火) 16:29:19
>>935
だって自分でコンソールプロセス開いて書き出そうとしてるんだから、そうなるんじゃないの?
単純に今のコンソールで表示したかったら、
単に

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

でいいんじゃないの?

940 :デフォルトの名無しさん:2010/05/25(火) 18:14:11
>>935
サブシステムをコンソールにしとけでなきゃAttachConsole

941 :デフォルトの名無しさん:2010/05/26(水) 07:49:33
コンソールアプリケーションのプロジェクト作れとかそういうレベルじゃ

942 :デフォルトの名無しさん:2010/05/26(水) 09:45:58
#include <stdio.h>

void main()
{
 printf("Hello Hell!");
}

943 :118:2010/05/26(水) 10:07:39
>>942
void mainねえ

944 :デフォルトの名無しさん:2010/05/26(水) 10:12:14
ppp

945 :デフォルトの名無しさん:2010/05/26(水) 11:30:38
>>942 はJava出身
まだC/C++自体書きなれていないと推測

946 :デフォルトの名無しさん:2010/05/26(水) 11:43:11
Java出身なら
void main(){
 printf("Hello HELL!");
}
って書くと思うよ

947 :デフォルトの名無しさん:2010/05/26(水) 12:26:20
設定で「マルチバイト文字を使う」にして
char ほげ[];その後ほげに文字列を入れて、ウォッチでも入ってることは確認しています
そして
LRESULT Wm_CreateProc(HWND hwnd,LPCREATESTRUCT cs){
CreateWindow("BUTTON",ほげ,〜
と言う感じでコンパイルは通っているのですがボタンの名前にはほげの文字列は入っていません
なぜなのでしょうか?

948 :デフォルトの名無しさん:2010/05/26(水) 16:55:53
>>947
とりあえず全部のソース張れ
問題はお前が隠してる部分にある

949 :デフォルトの名無しさん:2010/05/26(水) 17:01:44
すいませんもうできてました
ほんとその通りでした

950 :デフォルトの名無しさん:2010/05/26(水) 17:07:47
100マイクロくらいの制度のタイマー教えて
timeSetEventって1ミリだから、

951 :デフォルトの名無しさん:2010/05/26(水) 17:13:53
ぐぐれかす

952 :デフォルトの名無しさん:2010/05/26(水) 17:25:55
知らないならレスするなよかす

953 :デフォルトの名無しさん:2010/05/26(水) 17:32:34
知らないならそのままで師ねよカス

954 :デフォルトの名無しさん:2010/05/26(水) 17:33:53
知らぬなら、鳴かせてみしょう、ほととぎす

955 :デフォルトの名無しさん:2010/05/26(水) 17:36:47
ゴミしかいねえのかよここw

956 :デフォルトの名無しさん:2010/05/26(水) 17:37:29
早く答えろ
オナニーの時間なんだよ

957 :デフォルトの名無しさん:2010/05/26(水) 17:45:34
http://pc11.2ch.net/test/read.cgi/prog/1274017218/

958 :デフォルトの名無しさん:2010/05/26(水) 17:47:28
ゴミっていわれると気持ちいいお!

959 :デフォルトの名無しさん:2010/05/26(水) 17:47:31
ここ昔はもうちょいまともだったんだけどな。
今は煽るだけのゴミしかいなくなってるw

960 :デフォルトの名無しさん:2010/05/26(水) 17:53:06
カスよばわりする人には答えませんーw−

961 :デフォルトの名無しさん:2010/05/26(水) 17:55:04
PropertySheet関数からウィザードダイアログの呼び出しに付いてですが、
ダイアログの位置を変えたいのですが上手く行きません
PropSheetProcのPSCB_PRECREATEで変更を試みたのですが、
サイズなどは変えることができますが位置は無反応なんです

詳しい人よろしくです(´・ω・`)

962 :デフォルトの名無しさん:2010/05/26(水) 18:01:46
ぐぐれかす

963 :デフォルトの名無しさん:2010/05/26(水) 18:02:52
散々ぐぐりましたよ。。。

964 :デフォルトの名無しさん:2010/05/26(水) 18:26:44
ウィザードのダイアログのコールバック関数のWM_INITDIALOGで普通に位置を変えれました
勘違いしててシートのダイアログの位置を変えてたみたいです
申し訳ないです(´・ω・`)

965 :デフォルトの名無しさん:2010/05/26(水) 18:35:11
VC++でスタティックライブラリを作るときってwin32コンソール用とwin32用とでは違いがあるんでしょうか?

966 :デフォルトの名無しさん:2010/05/26(水) 18:41:26
>>965
くわしく

967 :デフォルトの名無しさん:2010/05/26(水) 18:42:46
ぐぐれかすぼけ

968 :デフォルトの名無しさん:2010/05/26(水) 18:46:41
調べたらどちらでもいいみたいでしたが

969 :デフォルトの名無しさん:2010/05/26(水) 18:51:42
どっちでもいいよ。
つかそのLIBのソースで呼び出す関数で決めたら
設定の手間が省けるだけだけど

970 :デフォルトの名無しさん:2010/05/26(水) 19:04:03
うそぴょん

971 :デフォルトの名無しさん:2010/05/27(木) 04:17:22
>>950
QueryPerformanceCounter
でぐぐれ
精度はハード依存

972 :118:2010/05/27(木) 04:40:16
難易度的に松竹梅のどのレベルを希望するん?
それ以前に、キミの前の書き込みが三ヶ月以上前だと気付いています?
こんな過疎スレにレスする人が居るわけがない!と、思いませんでしたか?

973 :デフォルトの名無しさん:2010/05/27(木) 07:42:25
電波ゆんゆん

974 :デフォルトの名無しさん:2010/05/27(木) 14:35:17
createwindowでボタンを作成し
プログラム内でそのボタンを押すことは可能ですか?

975 :118:2010/05/27(木) 14:43:33
>>974
はい

976 :デフォルトの名無しさん:2010/05/27(木) 14:44:50
かかってこいうじむしども

977 :118:2010/05/27(木) 15:05:21
>>976
スウィートホームでもやってろ>かずお

978 :デフォルトの名無しさん:2010/05/27(木) 15:07:36
おらおらどうしたごみども

979 :デフォルトの名無しさん:2010/05/27(木) 15:11:52
ウインドウを登録して表示するだけの最小コード書ける?


980 :デフォルトの名無しさん:2010/05/27(木) 15:20:14
今やったらググらないと書けそうもないぜ ググったらコピペで済むか( ´ω`)

981 :デフォルトの名無しさん:2010/05/27(木) 15:21:30
100文字以内で

982 :デフォルトの名無しさん:2010/05/27(木) 15:22:08
>>980
書けないならレスしないで下さい。ウザいだけです。

983 :デフォルトの名無しさん:2010/05/27(木) 15:23:41
「かける?」 という質問なのだから、「かけない」も正しい回答。

984 :デフォルトの名無しさん:2010/05/27(木) 15:24:25
ウインドウクラスではなくウインドウを登録?
何に登録するの?

985 :デフォルトの名無しさん:2010/05/27(木) 15:31:34
口だけのゴミが多いなあ・・・

986 :デフォルトの名無しさん:2010/05/27(木) 15:38:26
はとや・・・うわっなにをする!

987 :デフォルトの名無しさん:2010/05/27(木) 15:40:55
ここに点「フ」がある
そしてここには点「マ」がある
フ点と・・・うわっなにをする!

988 :デフォルトの名無しさん:2010/05/27(木) 17:46:36
次スレ立てたよ
http://pc12.2ch.net/test/read.cgi/tech/1274949734/l50

989 :デフォルトの名無しさん:2010/05/27(木) 17:50:36
もうここには屑しかいないから必要ないんじゃない?
質問しても煽るだけのゴミしかいないし・・・

990 :デフォルトの名無しさん:2010/05/27(木) 18:02:16
>>989
煽る人が出るのは大抵、煽られる側に何らかの問題があります。

991 :デフォルトの名無しさん:2010/05/27(木) 18:11:00
>>990みたいなゴミがいるから煽る奴が絶えないんだよね。。。

992 :デフォルトの名無しさん:2010/05/27(木) 18:15:19
まあ態度が悪いと煽りたくはなるな

993 :デフォルトの名無しさん: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

994 :デフォルトの名無しさん:2010/05/27(木) 18:42:26
こりゃ煽られても文句は言えないな

995 :デフォルトの名無しさん:2010/05/27(木) 18:46:51
>>988
GJ!


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

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)