Win32API質問箱 Build87
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001デフォルトの名無しさん
2010/03/28(日) 10:23:58やさしいお兄さんやお姉さんたちが答えてくれるかも。
「知らないならレスしないで下さい。ウザイだけです。 」なんて言わないでねっ!
過去スレ、関連リンクは>>2-10くらい。
■注意
・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。
・日本語版MSDN Online Libraryは不完全です。英語版( http://msdn.microsoft.com/en-us/library/ )の利用推奨。
・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。
・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで
- Win32API質問箱 wiki
http://wiki.livedoor.jp/program1/d/FrontPage
Win32API質問箱 Build86
http://pc12.2ch.net/test/read.cgi/tech/1265350980/
0002デフォルトの名無しさん
2010/03/28(日) 10:25:0484 ttp://pc12.2ch.net/test/read.cgi/tech/1259478896/
83 ttp://pc12.2ch.net/test/read.cgi/tech/1256891725/
82 ttp://pc12.2ch.net/test/read.cgi/tech/1253699773/
81 ttp://pc12.2ch.net/test/read.cgi/tech/1249140049/
80 ttp://pc12.2ch.net/test/read.cgi/tech/1244057140/
79 ttp://pc12.2ch.net/test/read.cgi/tech/1240411224/
78 ttp://pc12.2ch.net/test/read.cgi/tech/1238289377/
77 ttp://pc12.2ch.net/test/read.cgi/tech/1235494464/
76 ttp://pc11.2ch.net/test/read.cgi/tech/1233622578/
75 ttp://pc11.2ch.net/test/read.cgi/tech/1231423602/
74 ttp://pc11.2ch.net/test/read.cgi/tech/1229239827/
73 ttp://pc11.2ch.net/test/read.cgi/tech/1227934931/
72 ttp://pc11.2ch.net/test/read.cgi/tech/1226575789/
71 ttp://pc11.2ch.net/test/read.cgi/tech/1224745158/
70 ttp://pc11.2ch.net/test/read.cgi/tech/1221446107/
69 ttp://pc11.2ch.net/test/read.cgi/tech/1217687038/
68 ttp://pc11.2ch.net/test/read.cgi/tech/1215348804/
67 ttp://pc11.2ch.net/test/read.cgi/tech/1212931246/
66 ttp://pc11.2ch.net/test/read.cgi/tech/1210775622/
65 ttp://pc11.2ch.net/test/read.cgi/tech/1208847084/
64 ttp://pc11.2ch.net/test/read.cgi/tech/1207099291/
63 ttp://pc11.2ch.net/test/read.cgi/tech/1204600558/
62 ttp://pc11.2ch.net/test/read.cgi/tech/1202060403/
61 ttp://pc11.2ch.net/test/read.cgi/tech/1199514664/
0003デフォルトの名無しさん
2010/03/28(日) 10:25:4459 ttp://pc11.2ch.net/test/read.cgi/tech/1194701996/
58 ttp://pc11.2ch.net/test/read.cgi/tech/1191781463/
57 ttp://pc11.2ch.net/test/read.cgi/tech/1189255282/
56 ttp://pc11.2ch.net/test/read.cgi/tech/1186989201/
55 ttp://pc11.2ch.net/test/read.cgi/tech/1184853465/
54 ttp://pc11.2ch.net/test/read.cgi/tech/1181645965/
53 ttp://pc11.2ch.net/test/read.cgi/tech/1178882828/
52 ttp://pc11.2ch.net/test/read.cgi/tech/1176828891/
51 ttp://pc11.2ch.net/test/read.cgi/tech/1174416295/
50 ttp://pc11.2ch.net/test/read.cgi/tech/1171721448/
49 ttp://pc10.2ch.net/test/read.cgi/tech/1168708801/
48 ttp://pc10.2ch.net/test/read.cgi/tech/1166172047/
47 ttp://pc8.2ch.net/test/read.cgi/tech/1163375772/
46 ttp://pc8.2ch.net/test/read.cgi/tech/1159158014/
45 ttp://pc8.2ch.net/test/read.cgi/tech/1156032806/
44 ttp://pc8.2ch.net/test/read.cgi/tech/1151501925/
43 ttp://pc8.2ch.net/test/read.cgi/tech/1148005509/
42 ttp://pc8.2ch.net/test/read.cgi/tech/1144962549/
41 ttp://pc8.2ch.net/test/read.cgi/tech/1141392216/
40 ttp://pc8.2ch.net/test/read.cgi/tech/1138893959/
39 ttp://pc8.2ch.net/test/read.cgi/tech/1136673250/
38 ttp://pc8.2ch.net/test/read.cgi/tech/1133798345/
37 ttp://pc8.2ch.net/test/read.cgi/tech/1131884991/
36 ttp://pc8.2ch.net/test/read.cgi/tech/1128951330/
35 ttp://pc8.2ch.net/test/read.cgi/tech/1125850096/
34 ttp://pc8.2ch.net/test/read.cgi/tech/1122723009/
33 ttp://pc8.2ch.net/test/read.cgi/tech/1120153520/
32 ttp://pc8.2ch.net/test/read.cgi/tech/1117271829/
31 ttp://pc8.2ch.net/test/read.cgi/tech/1114762194/
0004デフォルトの名無しさん
2010/03/28(日) 10:26:2729 ttp://pc8.2ch.net/test/read.cgi/tech/1110281860/
28 ttp://pc5.2ch.net/test/read.cgi/tech/1108199304/
27 ttp://pc5.2ch.net/test/read.cgi/tech/1106103119/
26 ttp://pc5.2ch.net/test/read.cgi/tech/1104109858/
25 ttp://pc5.2ch.net/test/read.cgi/tech/1101393155/
24 ttp://pc5.2ch.net/test/read.cgi/tech/1098967135/
23 ttp://pc5.2ch.net/test/read.cgi/tech/1095534704/
22 ttp://pc5.2ch.net/test/read.cgi/tech/1092524669/
21 ttp://pc5.2ch.net/test/read.cgi/tech/1090422324/
20 ttp://pc5.2ch.net/test/read.cgi/tech/1088140233/
19 ttp://pc5.2ch.net/test/read.cgi/tech/1084697545/
18 ttp://pc5.2ch.net/test/read.cgi/tech/1081702990/
17 ttp://pc5.2ch.net/test/read.cgi/tech/1077470361/
16 ttp://pc2.2ch.net/test/read.cgi/tech/1073830065/★
15 ttp://pc2.2ch.net/test/read.cgi/tech/1069339866/★
14 ttp://pc5.2ch.net/tech/kako/1065/10653/1065328397.html
13 ttp://pc5.2ch.net/tech/kako/1059/10595/1059549320.html
12 ttp://pc5.2ch.net/tech/kako/1056/10560/1056033645.html
11 ttp://pc5.2ch.net/tech/kako/1052/10526/1052651750.html
10 ttp://pc5.2ch.net/tech/kako/1047/10478/1047819779.html
9 ttp://pc5.2ch.net/tech/kako/1044/10449/1044929160.html
8 ttp://pc5.2ch.net/tech/kako/1040/10409/1040964626.html
7 ttp://pc3.2ch.net/tech/kako/1036/10366/1036654893.html
6 ttp://pc3.2ch.net/tech/kako/1032/10325/1032548635.html
5 ttp://pc3.2ch.net/tech/kako/1028/10285/1028580373.html
4 ttp://pc3.2ch.net/tech/kako/1023/10233/1023361418.html
3 ttp://pc.2ch.net/tech/kako/1017/10170/1017072275.html
2 ttp://pc.2ch.net/tech/kako/1006/10067/1006783012.html
1 ttp://pc.2ch.net/tech/kako/991/991576947.html
0005デフォルトの名無しさん
2010/03/28(日) 10:30:28hoge((bool)0,(HANDLE)0)
みたいなことはしてもいいと思う
HANDLEってvoid*だぞ
キャストする意味がない
0006デフォルトの名無しさん
2010/03/28(日) 10:31:47ソースコードの解読のしやすさの話ね
0007デフォルトの名無しさん
2010/03/28(日) 11:50:36ウインドウ名や内容に ”文字” では無く、Char変数の内容を表示させたいのですができますかね?
0008デフォルトの名無しさん
2010/03/28(日) 12:41:460009デフォルトの名無しさん
2010/03/28(日) 13:22:44WM_SETTEXT
0011デフォルトの名無しさん
2010/03/28(日) 18:20:20Clearの直前にSetClipしても反映されませんでした。
0012デフォルトの名無しさん
2010/03/29(月) 00:36:13日本語でおk
0013デフォルトの名無しさん
2010/03/29(月) 00:39:27ヒント:「システム」ダイアログ
0014デフォルトの名無しさん
2010/03/30(火) 00:53:48そのプラグインは特定の条件化(バージョンチェックなど)で
不整合が発生した場合、自らをアンロードしたいのですが、
何か良いやり方はありませんか?
あるのであれば教えて頂きたいです。
0015デフォルトの名無しさん
2010/03/30(火) 01:22:24DLLをアンロードするAPIはFreeLibraryがあるが
DLLが自分自身をアンロードするのは普通にはできないと思う。
0016デフォルトの名無しさん
2010/03/30(火) 01:27:37001714
2010/03/30(火) 01:34:37それができない状況です。
>>15
自分自身をアンロードはやはりできないですか。。
ExitProcess()しちゃうとプロセス自身が落ちてしまいますよね・・
フラグか何か持って処理をさせないという微妙な方式を採用するしかないのかな。
とりあえずもう少し意見があるかも知れないのでしばらく待ってみます。
0018デフォルトの名無しさん
2010/03/30(火) 01:39:25ロードする方のプロセスに手を入れられるなら、
そっちでアンロードするように実装すべき。
0019デフォルトの名無しさん
2010/03/30(火) 02:28:03でも、通知領域にアイコン持つプロセスにそれを実行したとき、通知領域のアイコンが表示されたままになる。
これはアイコンリソースが開放されてないからじゃないの?
0020デフォルトの名無しさん
2010/03/30(火) 06:52:320021デフォルトの名無しさん
2010/03/30(火) 07:17:300022デフォルトの名無しさん
2010/03/30(火) 07:49:53通知領域はexplorer.exeのプロセス内だ
0023デフォルトの名無しさん
2010/03/30(火) 20:22:50FreeLibraryAndExitThread
0024デフォルトの名無しさん
2010/03/30(火) 21:02:180025デフォルトの名無しさん
2010/03/30(火) 23:15:24CPU名を取得するにはどうしたらよいのでしょうか?
738 名前:デフォルトの名無しさん[sage] 投稿日:2010/03/19(金) 15:41:47
>>737
WMI使うのが簡単。
739 名前:デフォルトの名無しさん[] 投稿日:2010/03/19(金) 16:18:58
めんどくせーから、ソース晒してくれ
740 名前:デフォルトの名無しさん[] 投稿日:2010/03/19(金) 16:29:46
>>738
簡単なサンプルを教えていただけないでしょうか?
741 名前:デフォルトの名無しさん[sage] 投稿日:2010/03/19(金) 16:31:24
とりあえずおぱいうp
0026デフォルトの名無しさん
2010/03/31(水) 00:37:45プロンプト出してユーザー自身に使ってるCPU名を入れさせろ
0027デフォルトの名無しさん
2010/03/31(水) 08:28:25mov eax,80000002h;...80000004h
cpuid
0028デフォルトの名無しさん
2010/03/31(水) 19:39:55unsigned char index;
int reg[4];
for(index = 0, num = 0x80000002L; num <= 0x80000004L; index += 4, num++)
{
__cpuid(reg,num);
memcpy(&name[index],reg,sizeof(int) * 4);
}
name[48] = '\0';
printf(_T("%hs\n"),name);
0029デフォルトの名無しさん
2010/03/31(水) 19:41:15s/printf/_tprintf/
0030デフォルトの名無しさん
2010/03/31(水) 19:42:410031デフォルトの名無しさん
2010/04/01(木) 07:59:58LARGE_INTEGER liX = 0;
ではなく、
LARGE_INTEGER liX = { 0 };
とするのは、なぜなんでしょうか?
LARGE_INTEGERが共用体だからですか?
0032デフォルトの名無しさん
2010/04/01(木) 09:15:37ttp://akky.cjb.net/mfc/initstru.html
0033デフォルトの名無しさん
2010/04/01(木) 09:44:530034デフォルトの名無しさん
2010/04/01(木) 13:21:57あー
そういう意味だったんですね
0035デフォルトの名無しさん
2010/04/01(木) 16:44:10ZeroMemory()という関数は純粋なWindowsAPIではないという認識でよろしいでしょうか?
宣言をたどっていくと…RtlZeroMemory(WinNT.h)→memset(String.h)になってるので…
CRT依存したくない場合は、自作するのがベターって事ですかね。
0036デフォルトの名無しさん
2010/04/01(木) 17:31:36#undefしてもよいしマクロ展開させないためにスペースをあけてもよい
RtlZeroMemory (
0037デフォルトの名無しさん
2010/04/01(木) 17:42:13ありがとうございます。スッキリしました!
0038デフォルトの名無しさん
2010/04/01(木) 18:20:170039デフォルトの名無しさん
2010/04/01(木) 22:03:280040デフォルトの名無しさん
2010/04/02(金) 09:48:570041デフォルトの名無しさん
2010/04/02(金) 10:03:300042デフォルトの名無しさん
2010/04/02(金) 10:35:51mscoreee.dll:_CorDllMain,_CorExeMain系関数をインポートしていればマネージドコードを含む
さらにその他のdllもインポートしている場合マネージド/アンマネージド混在の可能性が高い
何もインポートしていないならマネージド/アンマネージドに無関係なデータ/リソースモジュールの可能性が高い
それ以外の場合はアンマネージドモジュールの可能性が高い
COM参照など間接的な物はほぼ判定不能
0043デフォルトの名無しさん
2010/04/02(金) 11:23:59ちょっとがんばってみます。
マネージドコードで判断するときは
リフレクション使ってファイル読んだときに
アンマネージドであれば例外を出してくれる陽南でかんたんにわかるようなんですけどね。
0044デフォルトの名無しさん
2010/04/02(金) 17:57:26しらんけど
0045デフォルトの名無しさん
2010/04/02(金) 19:15:52共有セクションってどこまで適用されるの?ウィンドウステーション?
0046デフォルトの名無しさん
2010/04/03(土) 07:01:160047デフォルトの名無しさん
2010/04/04(日) 23:46:00とあるクラスを作成後、動作確認中、作成した自作クラスのコンストラクタ内の処理の途中で
ブレイクポイントを仕掛けたのですが、どうもブレイクしてくれません。
※正確には、コンストラクタと、publicメンバ関数の2箇所にブレイクポイントをしかけました。
しかしコンストラクタのブレイクポイントは無視され、publicメンバの方だけで止まります。
これは仕様なんでしょうか。ご存知の方いらっしゃいましたらよろしくお願いいたします。
0048デフォルトの名無しさん
2010/04/04(日) 23:46:53殺されたいのかお前は
スレタイ100回声に出して読め
0049デフォルトの名無しさん
2010/04/05(月) 00:10:28ゴメン。しかも自分の勘違いだった
0050デフォルトの名無しさん
2010/04/05(月) 00:21:320051デフォルトの名無しさん
2010/04/05(月) 03:49:34ってありませんか?
0052デフォルトの名無しさん
2010/04/05(月) 06:21:070053デフォルトの名無しさん
2010/04/05(月) 13:00:200054デフォルトの名無しさん
2010/04/05(月) 13:14:04WIA_DPC_FOCUS_DISTANCE/WIA_DPC_FOCAL_LENGTH
0055デフォルトの名無しさん
2010/04/05(月) 14:30:070056デフォルトの名無しさん
2010/04/05(月) 15:05:380057デフォルトの名無しさん
2010/04/05(月) 15:09:280058デフォルトの名無しさん
2010/04/05(月) 15:20:510059デフォルトの名無しさん
2010/04/05(月) 15:27:24http://www.geekpage.jp/programming/iphlpapi/
0060デフォルトの名無しさん
2010/04/05(月) 15:28:220061デフォルトの名無しさん
2010/04/05(月) 15:36:40>>48
0062デフォルトの名無しさん
2010/04/05(月) 15:53:29でてきましたよどじ
>>59
ありがとうございますありがとうございます。
あなたは神です。こんな糞まみれのスレで初めてみた神です。
0063デフォルトの名無しさん
2010/04/05(月) 15:53:590064デフォルトの名無しさん
2010/04/05(月) 15:55:040065デフォルトの名無しさん
2010/04/05(月) 16:00:050066デフォルトの名無しさん
2010/04/05(月) 16:17:46これ Win32API じゃないだろ
0067デフォルトの名無しさん
2010/04/05(月) 16:59:17いや参考になった。
へるぱAPIで取得できました。
しかし、しかし。
Presistent Routesだけ欲しい場合に判断に困ってます。
dwForwardProto辺りで何とか識別できそうかなっておもってたんですがダメっぽいですぅ
0068デフォルトの名無しさん
2010/04/05(月) 17:16:270069デフォルトの名無しさん
2010/04/05(月) 17:25:29まあ接続されてないんだからActive Routesに表示されないのは当然なんだが・・・
これPersistent Routesを取得する方法をさっさと教えてください。
0070デフォルトの名無しさん
2010/04/05(月) 19:20:14引数やDnDでファイル名を取得するとき、
ローカルのファイルだと C:\file.ext
ネットワーク上のファイルだと \\PCNAME\share\file.ext
で受け取りますよね。
UNCが説明されているあるサイトで \\PCNAME\C:\file.ext
のような表記を見かけたのですが、
(http://e-words.jp/w/UNC.html)
このように取得する方法ってありますか?
0071デフォルトの名無しさん
2010/04/05(月) 20:22:01管理共有でもなきゃ、その記述が間違い。
0072デフォルトの名無しさん
2010/04/05(月) 20:22:280073デフォルトの名無しさん
2010/04/05(月) 20:23:250074デフォルトの名無しさん
2010/04/05(月) 20:28:43偶々Cドライブを「C$」という名前で共有した結果なだけだろうに。
0075デフォルトの名無しさん
2010/04/05(月) 20:29:46そのプロセスハンドル取得してReadProcessMemory使ってもうまく表示してくれません
GetLastErrorみたらERROR_ACCESS_DENIEDって出たけどOpenProcessToken等の操作で変わるものでも無いので
どうすれば表示されるのか分からないので教えてください
0076デフォルトの名無しさん
2010/04/05(月) 20:35:520077デフォルトの名無しさん
2010/04/05(月) 20:37:280078デフォルトの名無しさん
2010/04/05(月) 20:41:560079デフォルトの名無しさん
2010/04/05(月) 20:44:24・指定アドレスの有効性の問題
・指定アドレスのアクセス権の問題
どれかしかない
0080デフォルトの名無しさん
2010/04/05(月) 20:46:230081デフォルトの名無しさん
2010/04/06(火) 11:28:50Active Routesに対してならできるがそれじゃ意味がないぽ><
0082デフォルトの名無しさん
2010/04/06(火) 23:32:120083デフォルトの名無しさん
2010/04/07(水) 04:30:11どっちでも同じAPIを呼んで同じ情報が取得できるはず。
0084デフォルトの名無しさん
2010/04/07(水) 16:36:08コンパイラはicl 11.0、OSはWindows XP 64bitです。
0085デフォルトの名無しさん
2010/04/07(水) 19:09:190086デフォルトの名無しさん
2010/04/07(水) 19:29:55ディスプレイの調整は、そのインターフェースがあるなんて聞いた事無い
0087デフォルトの名無しさん
2010/04/07(水) 19:42:220088デフォルトの名無しさん
2010/04/07(水) 20:21:20Vista以降ならある。
0089デフォルトの名無しさん
2010/04/08(木) 08:30:150090デフォルトの名無しさん
2010/04/08(木) 12:05:40PC起動時の初回と2回目以降に実行し他場合、処理速度が100倍ぐらい違うのですが、どうしてでしょうか?
0091デフォルトの名無しさん
2010/04/08(木) 12:11:310092デフォルトの名無しさん
2010/04/08(木) 12:52:23そのモーダルダイアログのボタンを押したときモードレスダイアログを出したいのですが、
メッセージループが表面上にないので、IsDialogMessage() 関数を追加する方法が分かりません。
どうようにすればいいでしょうか?
0093デフォルトの名無しさん
2010/04/08(木) 13:47:10009492
2010/04/08(木) 15:51:22INT_PTR CALLBACK SubProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp) {
switch (msg) {
case WM_CLOSE:
DestroyWindow(hWnd);
return TRUE;
}
return FALSE;
}
INT_PTR CALLBACK MainProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp) {
switch (msg) {
case WM_INITDIALOG:
CreateDialog((HINSTANCE)GetWindowLong(hWnd, GWL_HINSTANCE), "SubDLG", hWnd, SubProc);
return TRUE;
case WM_CLOSE:
EndDialog(hWnd, TRUE);
return TRUE;
}
return FALSE;
}
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hprev, LPSTR cmd, int show) {
DialogBox(hInst, "MyDLG1", NULL, MainProc);
return EXIT_SUCCESS;
}
>メッセージループを追加する
どこに追加すればいいでしょう…
0095デフォルトの名無しさん
2010/04/08(木) 15:55:17それで問題があるならスレッドを起動する
009692
2010/04/08(木) 17:15:01ダイアログプロシージャ内に入ったときはDispatchMessageが呼ばれているし、
スレッド立てたらメインスレッドのメッセージは読めないと思うんですが。。。
0097デフォルトの名無しさん
2010/04/08(木) 17:51:17> WinMainでDialogBoxを呼び出してモーダルダイアログを出します。
これを止めて
モードレスダイアログ MainProc側 生成 → メッセージループ (EndDialog() 呼び出しの確認だけ ちょこっと工夫)
メッセージループ内
MainProc側
何らかのトリガーで SubProc側生成
0098デフォルトの名無しさん
2010/04/08(木) 20:20:06自分も相手もWindows(XP以降)です
正しくはコンピューター名じゃなくてUNC名ですが
0099デフォルトの名無しさん
2010/04/08(木) 20:21:33どこでもいい
君のプログラムにとって必要な場所に追加する
>ダイアログプロシージャ内に入ったときはDispatchMessageが呼ばれているし、
DispatchMessageから呼ばれたプロシジャの中でDispatchMessageを呼んではいけないという規則は無い
自分でイベントループを回すとはそういうこと
>スレッド立てたらメインスレッドのメッセージは読めないと思うんですが。。。
読める
010092
2010/04/08(木) 20:28:31WinMainのモーダルダイアログを、モードレスにし、自分でメッセージループを回すことで、
サブ側もタブストップ効くようになりました。
ありがとうございました。
0101デフォルトの名無しさん
2010/04/08(木) 20:35:060102デフォルトの名無しさん
2010/04/08(木) 21:14:40で、そのメッセージって何?って聞かれたなら、それは各種イベントって感じ
0103デフォルトの名無しさん
2010/04/08(木) 22:17:25IPアドレス→MACアドレス→マシン名
ARPとNetBIOS(NBT)とか?
0104デフォルトの名無しさん
2010/04/08(木) 22:17:56イベントで思いつくのはイベントハンドラだな。
0105デフォルトの名無しさん
2010/04/08(木) 22:40:330106デフォルトの名無しさん
2010/04/08(木) 23:20:09解決したときはどうやって解決したか書いておくと
後の人のためになるよ。
0107デフォルトの名無しさん
2010/04/08(木) 23:27:100108デフォルトの名無しさん
2010/04/09(金) 04:45:12│●│
└─┤
_ ∩
( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘ おっぱい!おっぱい!
0109デフォルトの名無しさん
2010/04/09(金) 05:08:12そこに表示する文字もSetBkModeで透過させることができたんですが
CreateFontで作成した文字列だと文字の周りにデフォルトの背景色が出てしまって
透過できないんですがどうすればいいですか
0110デフォルトの名無しさん
2010/04/09(金) 07:35:470111デフォルトの名無しさん
2010/04/09(金) 08:28:520112デフォルトの名無しさん
2010/04/09(金) 09:29:030113デフォルトの名無しさん
2010/04/09(金) 09:44:120114デフォルトの名無しさん
2010/04/09(金) 10:14:130115デフォルトの名無しさん
2010/04/09(金) 10:24:54何度も書かれている
お前の目が節穴だっただけ
大抵の人はフィルタを通して物(この場合スレの書き込み)を見てしまう
大事なことが書かれていてもそれに気付くためには
本人がそれを受け入れるための準備が必要なんだ
0116デフォルトの名無しさん
2010/04/09(金) 10:54:45まさか全部人に聞かないと書けない=コピペしか出来ない奴なのか
0117デフォルトの名無しさん
2010/04/09(金) 12:10:03そのときに、ポートを5000を使って送信する時に
srcポートとdstポートが同じになってしまいます。
これをsrcは自動?割り振りでdstが指定したポート番号になる方法を教えてください。
オープンはこんな感じで行っています。
struct sockaddr_in sa;
SocketHandle = ::socket( AF_INET, SOCK_DGRAM, 0 );
sa.sin_family = AF_INET;
sa.sin_addr.s_addr = INADDR_ANY;
sa.sin_port = ::htons( iPort );
::bind( SocketHandle, (struct sockaddr *)&sa, sizeof( sa ) );
0118デフォルトの名無しさん
2010/04/09(金) 13:55:33http://detail.chiebukuro.yahoo.co.jp/qa/question_detail.php?qid=1239071767
UnhookWindowsHookExがいくらやっても失敗します。
http://ir9.jp/prog/ayu/datlog/tech_win32api/1069339866/1069339866_02.html
の411のかたも同じ状況だったようですが解決されなかったようですね。
メインプロセスからSetWindowsHookExを呼んで、同プロセス内でUnhookWindowsHookExを解除するところで失敗します。
エラーコードを吐かせてみたところやはりフックハンドルが無効というものでした。
しかし、フックハンドルの値もint型にキャストして吐かせてみたところ、
Set〜から最後までずっと同じ値をとっていました。
フックは正常に作動しているので解除できないと気持ち悪いです。
しかし失敗のメッセージが表示されたあとは、フックが解除されているんです。
さらにキーフックが起こっていない状態でUnhookすると成功するんです。
なんなんでしょうか。。。。
0119デフォルトの名無しさん
2010/04/09(金) 14:04:46マルチ乙
返事がこなさそうって失礼にも程がある
0120デフォルトの名無しさん
2010/04/09(金) 14:08:300121デフォルトの名無しさん
2010/04/09(金) 14:39:570122118
2010/04/09(金) 14:57:11私の質問履歴にないのは全部そのまま消えていくからですorz
なんでしょうかね。めんどくさいのかわからないのか。
マルチなんぞに返答をくれる方お願いします。
キーイベントが発生したときのみエラーが起きているので、フックプロシージャかなんかに問題でもありますかね?
キーイベントの有無による違いはそれくらいだと思うんですが。
0123デフォルトの名無しさん
2010/04/09(金) 15:52:19開発環境は?
hHookはどこでどう宣言してる?
0124デフォルトの名無しさん
2010/04/09(金) 16:01:200125デフォルトの名無しさん
2010/04/09(金) 16:21:320126デフォルトの名無しさん
2010/04/09(金) 16:25:230127デフォルトの名無しさん
2010/04/09(金) 16:38:540128デフォルトの名無しさん
2010/04/09(金) 17:31:090129デフォルトの名無しさん
2010/04/09(金) 17:51:332ちゃんの画一的なコメント 乙
0130デフォルトの名無しさん
2010/04/09(金) 18:01:47case DLL_PROCESS_ATACH:
if (!GetModuleHandle("USER32.DLL") return FALSE;
0131デフォルトの名無しさん
2010/04/09(金) 18:07:58WM_KEYHOOKのプロシージャでResetHookを呼んでいるんだろうけど
SendMessageしたらいかんだろ。
0132デフォルトの名無しさん
2010/04/09(金) 19:05:151) bindのsin_portを0にする
2) bindやめてconnect呼ぶ。(後続するsendtoはsendに変える)
1,2の好きな方を選んだら?
0133デフォルトの名無しさん
2010/04/09(金) 20:08:04何をやってるか示さないと答えようがないわけだが
まぁ>>131の可能性が高そうだけど
0134デフォルトの名無しさん
2010/04/09(金) 23:24:48GetDriveTypeではリムーバブルって返って来るだけで、フロッピーではないかも知れませんし、
SetupDiEnumDeviceInfoとSetupDiGetDeviceRegistryPropertyでQueryDosDeviceで得た文字列と同じものを探して関連付けようと試みましたがヒットしないです...。
QueryDosDeviceでは"\Device\Floppy0"が返って来ましたが、SetupDiGetDeviceRegistryPropertyではフロッピー系は"\Device\FloppyPDO0"が見つかっただけでした
0135デフォルトの名無しさん
2010/04/09(金) 23:41:090136118
2010/04/09(金) 23:58:31ん?ドライブレター変えたらどうすんの???
責任取れるの?
0137デフォルトの名無しさん
2010/04/10(土) 02:26:34なんだてめぇ
0138134
2010/04/10(土) 03:20:140139デフォルトの名無しさん
2010/04/10(土) 08:58:460140デフォルトの名無しさん
2010/04/10(土) 14:15:55\DosDevices\〜からパス取り出して
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enumからそのパスを開いて
ClassGUIDとかで区別できると思うけど
>>135
ねぇPC98版Windowsって知ってる?
0141デフォルトの名無しさん
2010/04/10(土) 14:17:580142デフォルトの名無しさん
2010/04/10(土) 14:18:260143デフォルトの名無しさん
2010/04/10(土) 14:20:210144デフォルトの名無しさん
2010/04/10(土) 14:46:36といちいち設定させるUIでも作った方が確実
アホな自動認識よりはユーザーもそっちを選ぶ
0145デフォルトの名無しさん
2010/04/10(土) 14:57:10Windows98もNTもPC98版が存在したが、いったいなにをどうしておきたいんだ?
0146デフォルトの名無しさん
2010/04/10(土) 18:40:57http://support.microsoft.com/kb/163920/en
0147デフォルトの名無しさん
2010/04/10(土) 20:54:37これってひょっとして名前付きのカーネルオブジェクトならなんでもいいって事?
OpenJobObjectとか
0148デフォルトの名無しさん
2010/04/10(土) 20:55:180149118
2010/04/10(土) 21:35:09WinMainの2つ目の引数を使えばええやん
そのためにあるのだよ
0150デフォルトの名無しさん
2010/04/10(土) 21:39:480151デフォルトの名無しさん
2010/04/10(土) 21:40:08hPrevInstance
アプリケーションの前のインスタンスのハンドルが入ります。
Win32 アプリケーションでは、常に NULL です。
0152デフォルトの名無しさん
2010/04/10(土) 22:02:37自分はそう解釈して、CreateFileMappingで二重起動時にアクティブにしたいWindowハンドル入れて使ってる。
勝手解釈なんで、有識者にほんとに問題ないか聞きたい。
0153デフォルトの名無しさん
2010/04/10(土) 22:03:28Openは使うなよ、全般的に
0154デフォルトの名無しさん
2010/04/10(土) 22:11:010155デフォルトの名無しさん
2010/04/10(土) 22:36:140156デフォルトの名無しさん
2010/04/10(土) 22:39:50どういうこと?
0157デフォルトの名無しさん
2010/04/10(土) 22:48:39坊や何の意味がわからないのだね?
0158デフォルトの名無しさん
2010/04/10(土) 22:55:54なんかおかしくなってた
つまり、libファイルをリンクして、共有セクションのあるDLLが常にロードされるようにしておく
0159118
2010/04/10(土) 23:04:48レジストリにキーを作るくらいダメ解答ばかりやな。
0160デフォルトの名無しさん
2010/04/10(土) 23:07:56でもそれ同じパスにあるDLLがロードされないとだめだろ
0161デフォルトの名無しさん
2010/04/10(土) 23:08:34意味内よねw
0162118
2010/04/10(土) 23:31:400163デフォルトの名無しさん
2010/04/10(土) 23:35:540164デフォルトの名無しさん
2010/04/10(土) 23:49:260165デフォルトの名無しさん
2010/04/11(日) 00:52:400166デフォルトの名無しさん
2010/04/11(日) 14:19:59これが出来ると vc と gcc でソース共通にできそうなのですが。
メニューバーは簡単だった。
0167デフォルトの名無しさん
2010/04/11(日) 20:09:36│●│
└─┤
_ ∩
( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘ おっぱい!おっぱい!
0168118
2010/04/11(日) 22:11:36SendMessageんとことその他いろいろ変えてみたらまぁそこは解決できたっす。
しかし次の問題点。
メインウィンドウのハンドルをWM_CREATE時にDLL側に渡してるんですよ。
それがメインウィンドウがアクティブなときは大丈夫なんだけど、
アクティブじゃなくなるとそのウィンドウハンドルがどっかいくそうです。笑
WM_CREATEで一度しか渡してないのにghWndの値が勝手に変わってるみたいっす。
勝手にってのはありえないけど、実際俺はghWndの値をその一度しかセットしてないのにNULLになってるんですよ。
WM_CREATEのところはただ単に関数でghWndにウィンドウハンドルを渡すだけですので省略しますね。
HWND ghWnd;
LRESULT CALLBACK MyHookProc (int nCode, WPARAM wp, LPARAM lp)
{
if (nCode<0)
_goto ret;
else if (ghWnd==NULL)
_MessageBox(NULL, "ウィンドウハンドルがないっす笑", "DLL", MB_OK);
else if (wp==VK_ESCAPE)
_PostMessage(ghWnd, WM_KEYHOOK, (WPARAM)0, (LPARAM)0);
ret:
_return CallNextHookEx(hHook, nCode, wp, lp);
}
0169デフォルトの名無しさん
2010/04/11(日) 22:27:090170デフォルトの名無しさん
2010/04/11(日) 22:33:080171118
2010/04/11(日) 22:43:58わからないので具体的にお願いします。
どうすればウィンドウハンドルを保持しつづけられますか?
http://www.kumei.ne.jp/c_lang/sdk2/sdk_163.htm
とか見る限りだとグローバル変数はDLLが開放されるまで値が保持されると思うんですが。
0172デフォルトの名無しさん
2010/04/11(日) 22:48:000173デフォルトの名無しさん
2010/04/11(日) 22:53:44共有したいならセグメントを共有するよう指定してやる必要がある
#pragma data_seg("Shared")
HWND ghWnd = NULL;
#pragma data_seg()
#pragma comment(linker, "/section:Shared,rws")
0174デフォルトの名無しさん
2010/04/11(日) 22:59:49サンプルに毛を生えらかした程度の事で
ハマっちゃう人の気持ちって分かる人は少ないから
全ソースうpってみたら?
0175デフォルトの名無しさん
2010/04/11(日) 22:59:490176118
2010/04/11(日) 23:07:58(建前)
わかんねえなられすすんな
俺の質問に答えてりゃいいんだよ!!!
(本音)
こいつらつかえねー
0177デフォルトの名無しさん
2010/04/11(日) 23:14:17失せろ
0178デフォルトの名無しさん
2010/04/11(日) 23:19:12すっげえわかるw
いわゆる想定外
0179118
2010/04/11(日) 23:22:53そうします。
書き方がやばくて恥ずかしいのであまり晒したくなかったのですが。w
現段階でのソースです。
http://space.geocities.jp/classcircle/MonitorDown.c
http://space.geocities.jp/classcircle/test.c
test.cがDLLのソースで、MonitorDownがメインのソースです。
モニターの電源を、Escが押される、もしくは停止ボタンが押されるまで、メッセージを送り続けることで消そうとしています。
BreakPointは簡単にメッセージボックスを表示させるマクロです。
他にわからない点があったら言ってください。
ボタンが異常に小さいのはリソースからそのまま移植したからです。
0180デフォルトの名無しさん
2010/04/11(日) 23:32:40全ソース
↑意味分かる?日本語だよ
無意味な略語や隠語を使いたがる人がいるけど
そのタイプの構ってさんなのかな?
0181118
2010/04/11(日) 23:39:59BCCですがMakeファイルの使い方知らないんでバッチで代用してます。
http://space.geocities.jp/classcircle/MonitorDown.zip
自作のライブラリっぽいものとヘッダファイルもあわせてこれで全部のはずです。
0182デフォルトの名無しさん
2010/04/11(日) 23:41:460183118
2010/04/11(日) 23:43:20あぁなんかそこ警告出ました。
0184デフォルトの名無しさん
2010/04/11(日) 23:47:11/ ▼▼▼ ヽ
| (●) (●) |
| 三 (_又_)三|
\__ ^_/
/ `ー(Ω)- ' ヽ
i ,イ= ヽ i
U |三 ノU
⊂ニヽ ,r-.、 イ
(,,ノ .ヽ,,)
0185118
2010/04/11(日) 23:47:30メモリマップトファイル?とやらを勉強してから出直してきます。
お騒がせしました。と、ありがとうございました。
0186118
2010/04/11(日) 23:51:03なんだよ、かまってちゃんか
0187デフォルトの名無しさん
2010/04/11(日) 23:52:42>WM_CREATEで一度しか渡してないのに
WM_ACTIVATEAPPのコードは何なんだ。
0188デフォルトの名無しさん
2010/04/12(月) 02:32:02これって符号どうなるの?
0189デフォルトの名無しさん
2010/04/12(月) 03:02:460190118
2010/04/12(月) 03:19:44apiよりキャストの勉強しようず
0191デフォルトの名無しさん
2010/04/12(月) 03:26:38キャストしたからといって符号が変わる訳ではない
0192デフォルトの名無しさん
2010/04/12(月) 10:45:41Unicode非対応のライブラリで扱う必要があります。
とりあえず、GetShortPathNameで8.3形式に変換して渡せば問題ないよう
なのですが、この関数で得た8.3形式のパスに現在のコードページで扱えない
文字が含まれないという確証がありません。
そもそも「8.3形式」とは何なのかをズバリ記述したドキュメントはないものでしょうか?
0193デフォルトの名無しさん
2010/04/12(月) 11:38:01ファイル名は拡張子をのぞいて最長8文字
9文字以上の場合、aaaaaa~1.txt ってかんじで省略される。
ただそれだけ。
だからそのシナリオで8.3形式に変換する意味はない。
0194192
2010/04/12(月) 12:14:22> The DOS filenames are in the OEM character set.
という記述があるのですが、これをMS自身のドキュメントで確認したいんですよね。
0195デフォルトの名無しさん
2010/04/12(月) 12:28:56http://msdn.microsoft.com/en-us/library/aa363807%28VS.85%29.aspx
http://msdn.microsoft.com/en-us/library/ff553060%28VS.85%29.aspx
0196デフォルトの名無しさん
2010/04/12(月) 12:45:48CreateFont()で高さを↓で指定したのと同じように
-MulDiv(Size, GetDeviceCaps(hDC, LOGPIXELSY), 72)
Gdiplus::Font()でサイズを指定して同じ大きさにしたいんですが
普通にGdiplus::UnitPoint にしてサイズを指定しただけでは
サイズによっては大きさが結構違ってしまいます。
どう指定すればいいでしょうか?
0197デフォルトの名無しさん
2010/04/12(月) 13:00:07http://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」なのか?
0198192
2010/04/12(月) 13:14:24う〜ん、自分がやってることの裏付けが取れれば十分なので、
そこまで追究するつもりもないのですが……
いかにも問題が起きそうですね、それ。
0199デフォルトの名無しさん
2010/04/12(月) 13:24:18ntfsではオプションだしexfatには存在すらしない
0200デフォルトの名無しさん
2010/04/12(月) 13:37:08「開く」で関連付けされているファイルを自作アプリで開くようにしてるのですが
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 ...のフルパスファイル名が入ってます。
0201196
2010/04/12(月) 13:59:16ぐぐってもわかんないや…
0202デフォルトの名無しさん
2010/04/12(月) 14:27:19自己レスです
3番目のオプションに0ではなくて FILE_SHARE_READ を指定したら開けるように
なりました。
0203196
2010/04/13(火) 00:11:37指定してたフォント名が正しくなかった…(スペース入れ忘れ)
でもCreateFontの方はそれを考慮してくれてて
狙ったフォントが表示されていたけど
Gdiplus::Fontの方はそれは考慮されず
違うフォントが表示されていたからフォントサイズが違ってました…
完全に一人相撲でした… スレ汚しすんません!
0204デフォルトの名無しさん
2010/04/13(火) 16:42:01オープン(読み込み状態)することは可能でしょうか?
失敗時にGetLastError() で確認したところ 32 (別プロセスが使用してるためアクセスできない)
を返しています。
CreateFileのパラメータは以下になります。
CreateFile(_T("path"), GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
0205デフォルトの名無しさん
2010/04/13(火) 16:57:46これでダメなら諦めろ
0206デフォルトの名無しさん
2010/04/13(火) 17:14:27そのパラメータも試してみましたが、無理でした。
ファイルの中身をチェックするTOOLを作成してるので、どうしても読み込みたいのですが・・・
0207デフォルトの名無しさん
2010/04/13(火) 21:24:460208デフォルトの名無しさん
2010/04/13(火) 21:38:43ロックの意味がなくなるので薦めないけど
いったん開いてダメだったら強制的にロック解除して開きなおせばいいんじゃない?
0209デフォルトの名無しさん
2010/04/13(火) 21:42:240210デフォルトの名無しさん
2010/04/13(火) 21:57:48出来るよ
0211デフォルトの名無しさん
2010/04/13(火) 21:58:560212デフォルトの名無しさん
2010/04/13(火) 22:09:29http://d.hatena.ne.jp/higepon/20060321/1142909616
http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200512/05120047.txt
0213デフォルトの名無しさん
2010/04/13(火) 22:17:100214デフォルトの名無しさん
2010/04/13(火) 22:48:220215デフォルトの名無しさん
2010/04/13(火) 22:53:200216デフォルトの名無しさん
2010/04/13(火) 22:56:590217デフォルトの名無しさん
2010/04/14(水) 00:29:44OSが掴んでるんだからそんなことはできないと考えるのが普通じゃない?
0218デフォルトの名無しさん
2010/04/14(水) 01:19:55HDDに専用のパーティションを作る方式にした方が安全だし速いだろうに。
ファイルとして他のデータと同列に格納されてるんだから、
非公開のアクセス手段があると考えた方が自然だと思うんだけど。
0219118
2010/04/14(水) 01:43:13ramdiskでも使ってろ
0220デフォルトの名無しさん
2010/04/14(水) 01:50:540221デフォルトの名無しさん
2010/04/14(水) 07:35:290222デフォルトの名無しさん
2010/04/14(水) 11:02:560223118
2010/04/14(水) 13:14:420224デフォルトの名無しさん
2010/04/14(水) 14:36:29これだからLinux脳は
0225デフォルトの名無しさん
2010/04/14(水) 14:47:090226デフォルトの名無しさん
2010/04/14(水) 15:53:48ファイルパスを正規化する方法はないでしょうか?
".."や"."を解決し、なるべく綺麗なパスにする方法です。
例えば
"data/hoge/.././sub/"
を
"data/sub/"
にしてくれるような感じです。
PathCanonicalize がそれに一番近いと思ったのですが、
"..\\test" を "\\test" に変えてしまったり( "..\\test"はそのままで良い")
"test\\..\\hoge" を "\\hoge" に変えてしまったり( "hoge" になってほしい)
どうも挙動が不自然です。
特に先頭に '\\'をつけられてしまうと、fopenなどがうまく動作しません…。
0227デフォルトの名無しさん
2010/04/14(水) 16:00:01とか
0228デフォルトの名無しさん
2010/04/14(水) 16:11:44単純に「\.\」は「\」に置換して、あとは正規表現で「hoge\..\」みたいなパターンを前から順番に削除してけばいいだけじゃん
0229デフォルトの名無しさん
2010/04/14(水) 16:28:20いえ、単に PathCanonicalize みたいなAPIが用意されていたので、APIがあればと思ったのです。
\\ から始まるネットワークアドレスとか、c:\とか、そういう「知らない人は知らない」パスもありますし、自分自身がそれらのパス表記法を全て知っている自信はまったくないもので。
「\.\」も、SJISだと問題がありますしね。
0230デフォルトの名無しさん
2010/04/14(水) 16:34:02みたいなのもあるなー
0231デフォルトの名無しさん
2010/04/14(水) 16:51:56それって実在する可能性のあるパス表記法ですか?
途中に ":" が入っていることなんてあるんでしょうか?
0232118
2010/04/14(水) 17:08:130233デフォルトの名無しさん
2010/04/14(水) 17:29:410234デフォルトの名無しさん
2010/04/14(水) 17:30:020235デフォルトの名無しさん
2010/04/14(水) 17:34:39人の話も信用しないタコスケのためのURL
http://tokyo.cool.ne.jp/chokuto/urawaza/api/CreateFile.html
0236118
2010/04/14(水) 17:47:050237デフォルトの名無しさん
2010/04/14(水) 17:52:120238デフォルトの名無しさん
2010/04/14(水) 17:52:57レスありがとうございました。
>>235参考にさせていただきます。
0239デフォルトの名無しさん
2010/04/14(水) 17:56:160240118
2010/04/14(水) 18:05:18矢印厨うぜー
0241デフォルトの名無しさん
2010/04/14(水) 19:59:13少なくとも
>>228
>単純に「\.\」は「\」に置換して、
の言うことは聞いては駄目!!
0242118
2010/04/14(水) 20:15:53じゃ、てめぇが代案示しなよ
非難ばっかするな
0243デフォルトの名無しさん
2010/04/14(水) 20:25:40>242
0244デフォルトの名無しさん
2010/04/14(水) 20:26:240246デフォルトの名無しさん
2010/04/14(水) 20:41:090247デフォルトの名無しさん
2010/04/14(水) 20:50:290248118
2010/04/14(水) 21:23:41localhost:8080
0249デフォルトの名無しさん
2010/04/14(水) 21:39:000250デフォルトの名無しさん
2010/04/15(木) 01:36:47UNCってファイル用のAPIで普通にオープンとかできるの?
0251デフォルトの名無しさん
2010/04/15(木) 01:42:170252デフォルトの名無しさん
2010/04/15(木) 03:24:420253デフォルトの名無しさん
2010/04/15(木) 06:27:15つまみ以外の場所をクリックしたら即座にその値を設定したいのですが、その方法が分かりません。
具体的に言うと、つまみがPageSizeの幅づつ移動するのでなく、
MediaPlayerのように一瞬でつまみがカーソル位置に移動して欲しいのです。
どうしたらいいでしょう。
0254デフォルトの名無しさん
2010/04/15(木) 06:30:58それUNCと違う。
0255デフォルトの名無しさん
2010/04/15(木) 06:52:02代替ストリーム
ファイル名とかフォルダ名の後ろに「:ファイル名」
0256デフォルトの名無しさん
2010/04/15(木) 07:29:27地味に困る
0257118
2010/04/15(木) 09:58:35普通に開ける
0258デフォルトの名無しさん
2010/04/15(木) 10:53:09そう考えていた時期が僕にもありました
ttp://mist.clueup.org/blogs/1/archive/2007/12/13/Windows-File-name-length-limit.aspx
実際はいけねーんだよ
どうなってんだか・・・;;
0259デフォルトの名無しさん
2010/04/15(木) 11:02:21各要素はファイルシステム依存
FATやNTFSは255文字
fsutil fsinfo volumeinfoでコンポーネント最大長を確認できる
0260デフォルトの名無しさん
2010/04/15(木) 11:03:520261デフォルトの名無しさん
2010/04/15(木) 11:04:02全体が32767文字までいけても、ファイル名だけの長さにも制限があると
ありがとう!
あと、どうやら \\?\ をつけた場合
・絶対パスじゃないといけない
・'/' ではなく '\\'を使う必要がある
・..\\ などのかけあがりなどを含めてはいけない
となるようだ
認識あってますかね?
0262デフォルトの名無しさん
2010/04/15(木) 11:06:02The Windows API has many functions that also have Unicode versions to permit a maximum path length of approximately 32,000 characters composed of components up to 255 characters each in length.
0263デフォルトの名無しさん
2010/04/15(木) 11:23:07日本語版はCreateFileからリンクもされていないし、そもそも詳細ページが翻訳されていない・・・
ttp://msdn.microsoft.com/ja-jp/library/aa365247%28v=VS.85%29.aspx
頑張って読んでみます
0264デフォルトの名無しさん
2010/04/15(木) 11:52:30エラーが出たらきちんと対処することにした
0265118
2010/04/15(木) 14:19:090266デフォルトの名無しさん
2010/04/15(木) 14:50:140267デフォルトの名無しさん
2010/04/15(木) 15:09:520268118
2010/04/15(木) 15:10:05CreateFileでFILE_FLAG_NO_BUFFERINGすればええやろ
0269デフォルトの名無しさん
2010/04/16(金) 11:56:04uintptr_t p = _beginthread
と走らせたスレッドが、終了しているかどうかを p を使って知る方法はないでしょうか?
0270デフォルトの名無しさん
2010/04/16(金) 12:37:500271デフォルトの名無しさん
2010/04/16(金) 12:47:28無い
pが有効なカーネルオブジェクトのハンドルでない場合 終了した
pが有効なカーネルオブジェクトのハンドルである場合 終了した後ハンドルが再利用されたかもしくは終了していない
ただしCREATE_SUSPENDで_beginthreadしてHANDLE_FLAG_PROTECT_FROM_CLOSEフラグをセットすれば普通に判定可能
0272デフォルトの名無しさん
2010/04/16(金) 13:07:50はあ?
WaitForSingleObject って知ってる?
質問スレで嘘書いててんじゃねーよ
0273デフォルトの名無しさん
2010/04/16(金) 13:23:27スレッド終了時に何をしているか
を調べなされ。
ていうか、VCスレで訊いた方が良いぞ。
処理系依存だし。
0274デフォルトの名無しさん
2010/04/16(金) 13:53:35_beginthread は スレッド終了時に戻りのハンドルを CloseHandle しやがりますので
_beginthreadex 使えぇぇ とか
0275デフォルトの名無しさん
2010/04/16(金) 13:54:310276デフォルトの名無しさん
2010/04/16(金) 14:06:550277デフォルトの名無しさん
2010/04/16(金) 14:16:43いや
スレッド終了時にシグナルになるから WaitForSingleObjectで終了しているのか判断できる
CloseHande しやがる場合
_beginthread で得られた戻りが WaitForSingleObject で確認するまでの間に
ハンドルの再利用の可能性を否定できないから嫌らしいワケ
CloseHande されない場合、確認側が明示的に CloseHandle するまでの間
ハンドルの衝突を防ぐことができるから より確実だ ということさ
0278デフォルトの名無しさん
2010/04/16(金) 14:18:58スレッドが終了する前にWaitForできるとは限らないもんな
今ちょっと実験してみたが、スレッドが既に終了している状態でWaitForすると、
WAIT_FAILED を吐いた上で、GetLastErrorは ERROR_INVALID_HANDLE だわ。無効なハンドル。
再利用がどれくらいの頻度で行われるのかもついでに試してみたら、意外と再利用されまくるのね。
ハンドルが簡単にかぶるわ
0279デフォルトの名無しさん
2010/04/16(金) 14:29:40プラットフォームSDK/win32 で CreateFile を使った場合、
戻された HANDLE からファイルを closeするにはどうしたら良いのでしょうか。
MSDN の該当ページ ( http://msdn.microsoft.com/ja-jp/library/cc429198.aspx ) を見ると、
>解説
>CreateFile が返したオブジェクトハンドルを閉じるには、 関数を使います。
とだけ書かれていて、「どの関数」 かが明示されていません。 ご存知の方、よろしくお願い致します。
0280279
2010/04/16(金) 14:33:12いきなり上手くいきました・・・ すみませんでした。
http://msdn.microsoft.com/ja-jp/library/cc429605.aspx
>解説
>CloseHandle 関数は、次のオブジェクトのハンドルを閉じます。
>?ファイル
0281デフォルトの名無しさん
2010/04/16(金) 14:39:260282デフォルトの名無しさん
2010/04/16(金) 14:45:54http://msdn.microsoft.com/en-us/library/aa363858(VS.85).aspx
0283デフォルトの名無しさん
2010/04/16(金) 14:49:00>>CreateFile が返したオブジェクトハンドルを閉じるには、 関数を使います。
>とだけ書かれていて、「どの関数」 かが明示されていません。
クソワロタwwwwwww マジで日本語版MSDN死んでいいよwwww 嫌がらせだろこれww
0284デフォルトの名無しさん
2010/04/16(金) 14:57:26use the CloseHandle function to close the handle.
機械翻訳の過程で CloseHandle を close hande と置き換え→すっとばし発生 なのかねw
0285デフォルトの名無しさん
2010/04/16(金) 15:04:31そして何かのコピペになりそうだw
問い「これはどうしたらいいのですか?」
答え「関数を使います」
0286デフォルトの名無しさん
2010/04/16(金) 15:06:33使いものにならないのに。
0287デフォルトの名無しさん
2010/04/16(金) 15:23:47すいません、調べてみても
HANDLE_FLAG_PROTECT_FROM_CLOSE
を使う必要性が感じられないのですが。
そもそも_beginthread はCREATE_SUSPENDが使えませんし。
総合すると _beginthreadex を使えばOK
ということになりそうなのですが、exを使った場合でも
HANDLE_FLAG_PROTECT_FROM_CLOSE
の出番はありますでしょうか?
0288デフォルトの名無しさん
2010/04/16(金) 15:25:13ちゃんと
CreateFile が返したオブジェクトハンドルを閉じるには、CloseHandle 関数を使います。
てなってるな。劣化してるのかな?
0289デフォルトの名無しさん
2010/04/16(金) 15:33:56>>271は良くわかっていない初心者だから放置していいよ。
exから得たハンドル使えば解決。
0290デフォルトの名無しさん
2010/04/16(金) 15:35:36無い。 が、終了確認後に CloseHandle してやらないとまずい。
_beginthread
○ スレッド終了時に自動的にハンドルをクローズする(リソース漏れは自動回避される)
そのかわり 終了判定は困難
「終了確認前にスレッドが終了しているか否か」 で判定の意味が変化してしまう
# そして、終了確認側で既にスレッドが終了しているか否かを知る術は?… と自己矛盾な記述に…
_beginthreadex
○ スレッド終了後もハンドルは維持され終了判定は容易。
だが、自前でハンドルをクローズしないと漏れ漏れ
0291デフォルトの名無しさん
2010/04/16(金) 15:36:27CREATE_SUSPENDが使えないなら新規スレッド側で待機
_beginthreadexを使うなら必要ない
0292デフォルトの名無しさん
2010/04/16(金) 16:17:33_beginthreadexで作ったスレッドには、解放すべきものが二つある。
1・_endthreadex で解放する「何か」
2・ CloseHandleで解放する「スレッドの生死などを確認するなどに利用する、何か」
1は、スレッド用の関数を抜ければ自動で呼ばれるので、きちんと抜ける場合は呼んでも呼ばなくても良い
2は、明示的にクローズしてやる必要がある。
スレッドを作った側でクローズしても、スレッド側でクローズしてもOK(だけど二重にクローズしないようにな!)
また、スレッドが生きている間にクローズしても(生死確認などができなくなるだけで)問題ない。
という認識正しいでしょうか?
0293デフォルトの名無しさん
2010/04/16(金) 16:21:351 おけ
2 おけ 生死判断したいなら、生死判断した後にクローズ(おおよそ スレッドを作った側ではある)
0294デフォルトの名無しさん
2010/04/16(金) 16:40:50exじゃない版は、連絡用の「何か」とスレッド用の「何か」が分離されていないから色々扱いづらかったんですね
ex版を使うべきっていう意見を正しく理解できたと思います。
0295デフォルトの名無しさん
2010/04/16(金) 16:45:05「何か」=「_begintheadがCreateThreadを呼んで返された『スレッドハンドル』」な
0296デフォルトの名無しさん
2010/04/16(金) 16:58:09スレッド用の何かというが、exでもランタイムが使うTLSなんてユーザー側に見せてないだろ
分離できてないのはお前の頭じゃね?
0297デフォルトの名無しさん
2010/04/16(金) 17:03:030298デフォルトの名無しさん
2010/04/16(金) 17:28:55インストール時にCRTのソースもインストールしておくと実装が見れるが
TLS だけじゃなく、浮動小数点周辺や構造化例外(C++ の例外をうまくスレッド別に配送)の面倒を見てるね
ま、ランタイムにかかわる表面には出てこない何かとひとくくりの表現で良いんでない? (1の何かに関して)
0299デフォルトの名無しさん
2010/04/16(金) 20:45:03知識として持っててあたりまえのことを質問する馬鹿が増えた
0300118
2010/04/16(金) 21:13:46俺、ブラやぱんつに興味ないんだ。
スリップが透けてるといいと思うけど、いないしな。
下着なしも、もっといないしな。
透けてなくていいよ。
0301デフォルトの名無しさん
2010/04/18(日) 16:42:20環境はWin7、VC6++でダイアログベースのアプリです。
マウスオーバーでダイアログを非表示にして、表示されていた位置からマウスを
離すと再びダイアログを表示させることはできますか?
非表示はWM_MOUSEMOVEのときにShowWindow(SW_HIDE)でできるんですが
マウスを離して表示させるのはどうやったらできるでしょうか。
0302デフォルトの名無しさん
2010/04/18(日) 16:47:07やった事無いけどパッと思いつく方法としては、
その非表示のタイミングでマウスをSetCaptureしつつ、Screen座標ひろっておいて、
移動中、一定距離離れたタイミングで再び表示&ReleaseCaptureしてやるとか
きちんと動作確認して、不意な操作や例外的な対処もしないとマズいけど
0303デフォルトの名無しさん
2010/04/18(日) 16:49:07SetCapture
ShowWindow(SW_HIDE)
WM_MOUSEMOVE (2回目はHIDE中に呼ばれていればマウスキャプチャをリリース)
ReleaseCapture
ShowWindow(SW_SHOW)
0304デフォルトの名無しさん
2010/04/18(日) 16:58:01回答ありがとうございます。
SetCapture試してみます。
0305デフォルトの名無しさん
2010/04/18(日) 17:23:35使い方間違ってるのかもしれないけど
Hide した直後から WM_MOUSEMOVE が来なくなってるみたいだw
Release しようにもマウス座標が取れないw
0306デフォルトの名無しさん
2010/04/18(日) 17:34:16304です
同じくうまくいきませんでした。
SetCapture後にHideしたらかってにReleaseされて
Hide後にSetCaptureした場合はキャプチャされないような動きです。
0307デフォルトの名無しさん
2010/04/18(日) 17:36:580308デフォルトの名無しさん
2010/04/18(日) 17:54:07alphablendを0にして
translatedにするといいかも
0309デフォルトの名無しさん
2010/04/18(日) 17:59:07○ transparent
0310デフォルトの名無しさん
2010/04/18(日) 18:05:09フォアグランドで且つオーナーなウィンドウがSetCaptureしてやればいいと思うよ。
例えばGetDesktopWindow()で取得したHWNDをSetCapture()に渡すとか。
0311304
2010/04/18(日) 18:38:44Hideした瞬間にWM_MOUSELEAVEが来てしまいました。
そのときのWM_MOUSELEAVEを無視するとして
ダイアログがあった場所から離れてもWM_MOUSELEAVEはこないようです。
>>308
透明ウィンドウにするという発想ですか。なるほど・・
半透明にもできたりしてそれはそれでよさそうです。
>>310
デスクトップのHWNDをSetCaptureに渡してみましたが、
渡さない場合と同じくWM_MOUSEMOVEがこないようです。。
ん〜、いけるような気はするのですが。
0312デフォルトの名無しさん
2010/04/18(日) 19:27:25それだとSetCaptureしたあとのマウスイベントがDesktopWindowの方に逝っちゃう
0313デフォルトの名無しさん
2010/04/18(日) 19:36:54自分で戻さないといけないみたいだけど
0314デフォルトの名無しさん
2010/04/19(月) 02:26:360315デフォルトの名無しさん
2010/04/19(月) 03:13:040316デフォルトの名無しさん
2010/04/19(月) 03:24:020317デフォルトの名無しさん
2010/04/19(月) 03:32:370318デフォルトの名無しさん
2010/04/19(月) 07:08:010319デフォルトの名無しさん
2010/04/19(月) 08:27:380320デフォルトの名無しさん
2010/04/19(月) 10:17:080321118
2010/04/19(月) 14:06:18↑
2ちゃんの画一的なコメント 乙
0322デフォルトの名無しさん
2010/04/19(月) 14:49:52beamのアイコンがつぶれてしまう。
なんかいい方法ない?
0323デフォルトの名無しさん
2010/04/19(月) 14:53:10関係無いけど、この表現に物凄い違和感
0324デフォルトの名無しさん
2010/04/19(月) 17:52:120325118
2010/04/19(月) 18:15:190326304
2010/04/19(月) 20:23:25一応その方法で行くことにしてうまく実現できました。
今回のやりたいことを実装してるツールがVectorにあったので、
Spy++で見てみるとそれもTimerでやってるみたいだったので
真似することにしました。
0327デフォルトの名無しさん
2010/04/20(火) 16:17:390328118
2010/04/20(火) 16:52:020329デフォルトの名無しさん
2010/04/20(火) 16:57:100330デフォルトの名無しさん
2010/04/20(火) 17:00:46GetSystemPowerStatusであっさり出来たわ役立たず共
0331118
2010/04/20(火) 17:25:45おまえがな
0332デフォルトの名無しさん
2010/04/20(火) 17:39:210333118
2010/04/20(火) 17:49:42おまえがな
0334デフォルトの名無しさん
2010/04/20(火) 18:38:04それすら全くどうでもいい
0335デフォルトの名無しさん
2010/04/20(火) 18:47:020336デフォルトの名無しさん
2010/04/20(火) 18:54:52他人に質問する前にテディベアに質問しなさい、てやつですな。
書き込んだ質問の内容でググればあっさり見つかったりするしね。
0337デフォルトの名無しさん
2010/04/20(火) 18:57:13HeapAllocとかHeapFreeとかのフラグ、HEAP_NO_SERIALIZEの説明の「相互排他」って何ですか?
ググッた結果、マルチスレッドであちこちからメモリ確保するときに、何かしてくれる?と思うのですが、
その「何か」がよく分かりません。
>HEAP_NO_SERIALIZE:この関数がヒープにアクセスしている間、相互排他を行わないようにします。
↑この一文を分かりやすく解説してください。
0338118
2010/04/20(火) 19:40:010339デフォルトの名無しさん
2010/04/20(火) 19:49:080340デフォルトの名無しさん
2010/04/20(火) 19:50:050341デフォルトの名無しさん
2010/04/20(火) 20:42:04気にするな
0342118
2010/04/20(火) 20:48:34おまえがな
0343デフォルトの名無しさん
2010/04/20(火) 21:00:50ちなみに cygwin を用いて深いディレクトリ、ファイルは生成できます・・・
0344デフォルトの名無しさん
2010/04/21(水) 10:18:370345デフォルトの名無しさん
2010/04/21(水) 10:49:53UNICODEで開発
>>344
ダイアログスタイルで開発
0346デフォルトの名無しさん
2010/04/21(水) 11:03:34MFCを使ってダイアログベースで作ってます。
0347デフォルトの名無しさん
2010/04/21(水) 11:07:460348デフォルトの名無しさん
2010/04/21(水) 11:09:470349デフォルトの名無しさん
2010/04/21(水) 11:13:080350デフォルトの名無しさん
2010/04/21(水) 13:01:02>UNICODEで開発
343です。
当初私もそう思っていました。
UNICODE版のGetOpenFileNameWを使っているのですが、
開くDLG(コモンダイアログ)内部でMessageBoxを表示しているようです。
OFNHookProcも試したのですが、CDN_FILEOKが呼び出されません。
WndProc をHOOKして[OK]ボタンや[ファイル名DBLCLK]を横取りしないといけないのでしょうか?
0351デフォルトの名無しさん
2010/04/21(水) 16:29:38Persistent Routesリストの取得方法を教えてくださいください
0352デフォルトの名無しさん
2010/04/21(水) 16:48:480353デフォルトの名無しさん
2010/04/21(水) 17:02:100354デフォルトの名無しさん
2010/04/21(水) 17:02:42System\CurrentControlSet\Services\Tcpip\Parameters\PersistentRoutes
System\CurrentControlSet\Services\Vxd\MSTCP\PersistentRoutes
0355デフォルトの名無しさん
2010/04/21(水) 17:10:51ありがとうございます。
確かにレジストリに存在しました!
これを弄くり倒します。
0356デフォルトの名無しさん
2010/04/21(水) 17:15:33route add ができない><
いやレジストリに追加しただけでは実際にルート処理されないですよねこれ?
0357デフォルトの名無しさん
2010/04/21(水) 17:20:53んで>>354の2つ目のServicesの中にVxdは存在しませんですた。
とりあえず、レジストリエディタで適当にルートぶち込んでみっかなあ
0358デフォルトの名無しさん
2010/04/21(水) 17:46:07そういやActiveアレには普通にaddできるんだから
レジストリに追加しといてヘルパapiでActiveにaddすりゃーいいってことか!!!
レジストリにかいときゃリブったらちゃんとアレされたのは確認できたし
いやはや>>354に感謝
0359デフォルトの名無しさん
2010/04/21(水) 17:54:26自分なら裏でroute.exeを実行する
0360デフォルトの名無しさん
2010/04/21(水) 18:20:35vxdありがとう。
ちなみに最初はShellExecuteでroute.exeを実行してaddやdeleteをやってたんだけど
ヘルパAPIなるものでActiveの操作は普通にできたからPersistentもいけるんじゃないかなとかおもって
深みにざっくり嵌ったわけですよ
ぶっちゃけレジストリ弄くるのも不本意なんだがAPIでできないっぽいからそこは曲げてアレ
0361デフォルトの名無しさん
2010/04/21(水) 23:42:23CreateCompatibleBitmapで作成した領域に描画して、
BitBltの背景色を利用して白黒の1bitモノクロ画像に変換しようとしたところ、
GDI+で読み込んだビットマップがうまく変換されませんでした。
ちなみにCreateCompatibleBitmapのところをCreateDIBSectionすると期待どうりに変換されるのは分かったのですが、
どうしてCreateCompatibleBitmapだと変換できないのかが理由が分かりませんでした。
言語はC++でMFCなどは使用していません。
理由が分かる方がいましたら教えてください。
0362デフォルトの名無しさん
2010/04/22(木) 00:01:31GetPixelで返ってきた実際の値を使わないと駄目、とかありそう。
素直にDIBSection使っといた方が良い気がするけど。
0363361
2010/04/22(木) 05:46:16有難うございます。
GetPixelで取得した値を使用してみても駄目でした。
なぜCreateCompatibleBitmapだとSetBkColorで設定した色が変換されないのかが分からないままです。
0364デフォルトの名無しさん
2010/04/22(木) 07:15:170365デフォルトの名無しさん
2010/04/22(木) 10:35:430366デフォルトの名無しさん
2010/04/22(木) 12:39:060367デフォルトの名無しさん
2010/04/22(木) 12:57:160368デフォルトの名無しさん
2010/04/22(木) 13:50:040369118
2010/04/22(木) 14:32:000371118
2010/04/22(木) 14:33:46おまえがな
0372デフォルトの名無しさん
2010/04/22(木) 15:02:55シリアルポート com1とかが他アプリから開いたイベントを取得したいのですがどうすればよろしいでしょうか?
案としては
CrateFile("com1" ・・・
で開いて閉じてを繰り返し開の失敗したら開かれてるとする。
デメリット:ちょっとカッコ悪いし、もし開いて閉じる間に空いてが開こうとすると相手側がエラーになる
LoadLibraryのhook
デメリット;comのオープン方法がCreateFileで開かれなかった場合。他にもAPIありますよね?
なんてのを考えてるんですが、他に良い案ないでしょうか?
0373デフォルトの名無しさん
2010/04/22(木) 15:20:260374デフォルトの名無しさん
2010/04/22(木) 15:29:19フィルタドライバですか、経験なかったです。
調べてみるとちょっと敷居高そうですが、チャレンジしてみます。
ありがとうございました。
0375デフォルトの名無しさん
2010/04/22(木) 15:52:04登録されている数分ループするのですが正常に値が取得できないのがあります。
4個登録されていてループは5回目で抜けるのでそこはOKなんですが
データも3個までは正常にとれてますが4個目は何故かNULLになっています。
どうしてですか?
0376デフォルトの名無しさん
2010/04/22(木) 15:58:100377デフォルトの名無しさん
2010/04/22(木) 17:39:34相変わらず118を名乗る理由がよくわからんがな。
0378118
2010/04/22(木) 17:48:52お前の発言ワケワカラン
0380デフォルトの名無しさん
2010/04/22(木) 21:58:23んじゃいいや笑
まぁ見づらいからあんま無駄レスすんなよ。
以上無駄レスでした。
0381デフォルトの名無しさん
2010/04/22(木) 22:09:490382118
2010/04/22(木) 22:19:48黙れゴミ
0383デフォルトの名無しさん
2010/04/22(木) 22:57:50( ・ω・) �d�d
/ ~つと)
0384118
2010/04/22(木) 23:05:490385118
2010/04/22(木) 23:12:210386118
2010/04/22(木) 23:14:120387118
2010/04/22(木) 23:26:030388118
2010/04/22(木) 23:29:100389118
2010/04/22(木) 23:40:530390118
2010/04/23(金) 00:38:000391118 ◆ToxyFMVOts
2010/04/23(金) 01:00:030392119
2010/04/23(金) 01:03:05お前キモイ
0393118 ◆ToxyFMVOts
2010/04/23(金) 01:52:010394デフォルトの名無しさん
2010/04/23(金) 03:23:48lpfnWndProcにstaticなメンバ関数をセットして、そこでGetWindowLongでポインタを取得しようと思ったんですけど
CreateWindowをコールした時点でstaticなメンバ関数が呼ばれてしまいます
0395デフォルトの名無しさん
2010/04/23(金) 09:26:14lpfnWndProc が static メンバ関数へのポインタだから
CreateWindow 時にコールバックされるのは lpfnWndProc で指示された static メンバ関数となるのは必然
質問の要点が不明だが… その後オブジェクト側へ配送したいという欲求か? (C++を想定)
class A {
static class A* m_pThis;
static LRESULT my_proc(HWND,UINT,WPARAM,LPARAM);
virtual LRESULT wnd_proc(HWND,UINT,WPARAM,LPARAM);
};
CreateWindow する前に m_pThis = "対象obj"
my_proc内:
GetWindowLong してない? yes) m_pThis をセットし、"対象obj" no) そのまま "対象obj"
"対象obj" -> wnd_proc() で配送
マルチスレッド対応するなら m_pThis を TLS で分離
MFCは GetWindowLong枠に objを仕込まず スレッド別で HWND⇔obj のマップテーブルを使ってる
ATL/WTLはサンク使ってる。
0396デフォルトの名無しさん
2010/04/23(金) 21:02:44CPUID や GetProcessAffinityMask では論理コア数しか取得出来ません。
もしかすると私のやり方が悪いのかもしれませんが…。
どなたか物理コア数の取得方法を教えて下さいませんでしょうか。
0397デフォルトの名無しさん
2010/04/23(金) 21:19:28論理プロセッサ数が欲しけりゃ別API使えってわざわざ書いてる位だし。
0398デフォルトの名無しさん
2010/04/23(金) 21:33:45SYSTEM_INFO sysinfo;
GetSystemInfo(&sysinfo);
printf("dwNumberOfProcessors %d\n", sysinfo.dwNumberOfProcessors);
ご回答ありがとうございます。
上記の様にした所、8の数値が返ってきました。
Core i7 860 の物理コアは4のはずなので、
多分論理コア数かと思われます。
0399デフォルトの名無しさん
2010/04/23(金) 21:39:50どうもありがとう。
ちなみにイベント発生毎に毎回GetWindowLongするのって重いんですか?気にするほどでもないですか
0400118
2010/04/23(金) 21:40:550401118 ◆ToxyFMVOts
2010/04/23(金) 21:42:11118をNG登録した
0402118■ToxyFMVOts
2010/04/23(金) 21:48:200403118 ◆ToxyFMVOts
2010/04/23(金) 22:04:19ヒント:正規表現
0404118 ◆LHct4pvbDE
2010/04/23(金) 22:11:130405118 ◆CzRT9/fh7c
2010/04/23(金) 22:11:410406�T�T8
2010/04/23(金) 22:15:020407ll8
2010/04/23(金) 22:16:480408118 ◆ToxyFMVOts
2010/04/23(金) 22:51:020409戦闘力118のゴミ
2010/04/23(金) 23:14:29数字コテ自体の弱いところを突付かれたな。
もう誰が本物かはどうでもいい。
なぜならば、俺たちが数字コテだからだ。
0410118
2010/04/23(金) 23:23:350411118 ◆ToxyFMVOts
2010/04/23(金) 23:23:400412118 ◆CB.8kw7Ixg
2010/04/23(金) 23:35:050413118 ◆HC9IbFdEiw
2010/04/23(金) 23:38:090414(^q^) ◆HC9IbFdEiw
2010/04/23(金) 23:50:540415デフォルトの名無しさん
2010/04/23(金) 23:51:36#811
0416118 ◆CzRT9/fh7c
2010/04/23(金) 23:56:580417118 ◆c37UjiIGfA
2010/04/24(土) 00:04:35これなら単細胞共にはわかんねーだろ
0418118 ◆c37UjiIGfA
2010/04/24(土) 00:07:33#1180
0419118 ◆l9Zkhsj0XQ
2010/04/24(土) 00:09:540420118 ◆rIKVz7F.VU
2010/04/24(土) 00:13:09∩_
〈〈〈 ヽ
〈⊃ }
∩___∩ | |
| ノ ヽ ! !
/ ● ● | /
| ( _●_) ミ/ こいつ最高にアホ
彡、 |∪| / 何様のつもりですか
/ __ ヽノ /
(___) /
0421118 ◆S1/9LO44a2
2010/04/24(土) 00:15:370422391 ◆CB.8kw7Ixg
2010/04/24(土) 00:25:25俺が本物
0423118 ◆9VHTWNxbY2
2010/04/24(土) 00:30:220424デフォルトの名無しさん
2010/04/24(土) 00:31:10GetLogicalProcessorInformationで一応できるけど、
Vistaより前は無理だからCPUID使っとけって書いてるな。
0425118 ◆5aHxUR0jw6
2010/04/24(土) 03:41:41は?てめえになんざ興味ねぇよ
失せろ391
0426118
2010/04/24(土) 07:39:51興味ないのにその喰いつきはなんなんでしょうかw
0427118 ◆NYAN/2wQEQ
2010/04/24(土) 08:31:47今まで全く気付かなかった
迂闊だった
0428デフォルトの名無しさん
2010/04/24(土) 12:36:42諸事情で自分でセットアッププログラムを自前で作り直すことになりました。
で、インストール処理自体は問題ないのですが、インストール後にOSの再起動が
必要なので、ExitWindowsExを呼び出すようにしたのですが、たまに見る
「ウィンドウステーションがシャットダウン中であるためアプリケーションが初期化に失敗しました。」
のエラーダイアログが頻繁に出るようになりました。
他のアプリが出しているエラーだし、無視しても問題ないことは分かっているのですが
どうも気持ち悪いのと、InstallShieldを使っているときには見なかったので
何か回避する方法があるのかなと思っています。
ちなみに、ShellExecuteで"shutdown -r"を呼び出してもやはりエラーダイアログは
出てしまいました。
DOSプロンプトから呼び出したときには見たことがないのに、なぜなんでしょう。
0429デフォルトの名無しさん
2010/04/24(土) 12:53:13解決したいのか
結局どっちなんだ?
0430118 ◆pOL/VRNq6Y
2010/04/24(土) 12:59:020431デフォルトの名無しさん
2010/04/24(土) 21:03:28↓
ShowWindow(hWnd,SW_SHOWNORMAL);
SetWindowPos(hWnd, HWND_TOP, 0, 0, 0, 0,SWP_NOSIZE | SWP_NOMOVE);
でどのウインドウよりもZ軸が上になって表示されると思ったんですが、
他のウインドウの下にある状態で表示されてしまいます。記述が間違っているんでしょうか?
0432118 ◆pOL/VRNq6Y
2010/04/24(土) 21:17:170433431
2010/04/24(土) 21:44:12通常状態でZ軸の一番上に持ってこようと思っています。
0434デフォルトの名無しさん
2010/04/24(土) 21:49:06http://www.google.co.jp/search?hl=ja&q=win32+Z%E3%82%AA%E3%83%BC%E3%83%80%E3%83%BC
0435118 ◆pOL/VRNq6Y
2010/04/24(土) 22:21:35制限はあるけど、SetForegroundWindow()でいいんじゃね?
0436デフォルトの名無しさん
2010/04/24(土) 22:43:36できました、ありがとうございます。
何故431で駄目だったのかは謎です
0437118 ◆pOL/VRNq6Y
2010/04/24(土) 22:56:210438デフォルトの名無しさん
2010/04/25(日) 11:58:050439118 ◆ayPjxbmM2c
2010/04/25(日) 12:13:310440デフォルトの名無しさん
2010/04/25(日) 19:11:03CreateWindow("STATIC",folder…);
でフォルダ名を表示させてるんですけど、ものすごい長いパスでも表示できるようにしたいです。
CreateWindow("EDIT" にしてもパスがボックス以上の長さで表示されません、→ボタンを押したら続きが
表示されるようにしたいのですがどうすれば良いのでしょう。
0441デフォルトの名無しさん
2010/04/25(日) 19:38:010442デフォルトの名無しさん
2010/04/25(日) 19:39:290443440
2010/04/25(日) 20:25:56ツールチップという方法もあるとは、自分で調べる癖をもっと持たないと駄目ですね
0444デフォルトの名無しさん
2010/04/26(月) 09:47:060445118
2010/04/26(月) 11:07:48,,------ 、 ノノ ∪ ∩
/: ____▽,,,,,,_ヽ 。:∪・ ⊂ヽ ノノ :∩
} i:ェェヮi ト.ェェ:-i { /⌒Y⌒\ プ :):) じ :ノノ 。
ヾ::/イ__l丶 r'1ノ ノ ) じ :∩ 。 ( (
.}::l: ゝ--イ l:: {^\ビチグソ | . ヽヽ ヽj
ト!;_`二´_,,;!イ| | ノ :| ∩ じ
| |__三___| |_/| | ノノ ∩ :∩
| | ヽ| ト' | |/^ヽ じ :ノノ ∵ :ヽヽ
| | | |_/ ヽ__人_ノ ∪ し′
⊆, っ とーっ
0446デフォルトの名無しさん
2010/04/26(月) 13:18:02>>396です。118ではないです。
GetLogicalProcessorInformationを使ってみました所、
物理コア数の4が取得出来ました。
ですがおっしゃってる通り、古いOSでは使えないのですね。
XPもSP2以前だとダメな様でした。
CPUIDだと、IntelはCPUID(4)のEAX(bit31-26)以外に、
コア数を取得出来る所があるのでしょうか?
もしご存じであれば教えて頂ければ幸いです。
0447118
2010/04/26(月) 16:42:11↑
俺のために動けってかw
なんでintelのデベロッパマニュアル読まないの?
0448デフォルトの名無しさん
2010/04/26(月) 20:14:55ttp://wisdom.sakura.ne.jp/system/winapi/win32/win84.html
座標系は文字サイズを基準としているそうですが、解像度の比率では無いのに
何故解像度に影響されないレイアウトになるんでしょう。
フォントの文字サイズはどの解像度でも一緒だと思うんですが、文字サイズが何を指しているのか解りません。
0449118
2010/04/26(月) 20:34:37文字サイズ=ポイント
1 pt = 0.352 778 mm
0450デフォルトの名無しさん
2010/04/26(月) 20:34:37>>448
解像度には思いっきり影響されるだろ。
高解像度だとその分全体に占める割合が小さくなるし。
別にダイアログが勝手に大きくなったりはしないぞ。
それよりも、文字サイズ基準の関係でDPIの設定が反映されるのが特徴だな。
96から120にしてやれば、大きさもそれなりに広がる。
レンダリングの関係で120にしたら文字が切れてしまうのもよくある話w
0451448
2010/04/26(月) 20:53:08だから解像度の違いにより、ダイアログの大きさが崩れることなく表示できる。
ダイアログの大きさは一定なので低解像度だと画面をはみ出して表示されないことがある。
-----
x には X座標、y には Y座標をそれぞれ
ウィンドウのクライアント座標でダイアログの左上の位置を指定します とありますが
こちらは解像度単位で、設定した値によっては始めからウインドウの端も表示されないことはあるんですか?
どの解像度でも真中に表示するには使用しているPCの解像度を取得して2で割って
SetWindowPos をすれば良いのでしょうか?
0452デフォルトの名無しさん
2010/04/26(月) 21:04:430453デフォルトの名無しさん
2010/04/26(月) 21:37:45WindowsSDKのリソースコンパイラの所に
リソーススクリプトの記述方法が全部書いてあるから。
0454デフォルトの名無しさん
2010/04/26(月) 23:13:49エロビデオ見てて良いシーンで一時停止すると
再生の→ボタンが画面の真ん中に出て来て
邪魔をする漏れのプレイヤー
0455118
2010/04/27(火) 02:26:21O
o と
。 ,. -ー冖'⌒'ー-、 思
,ノ \ う
/ ,r‐へへく⌒'¬、 ヽ キ
{ノ へ.._、 ,,/~` 〉 } ,r=-、 モ
/プ?`y'¨Y´?ヽ?}j=く /,ミ=/ ヲ
ノ /レ'>-〈_ュ`ー‐' リ,イ} 〃 / タ
/ _勺 イ;;∵r;==、、∴'∵; シ 〃 / で
,/ └' ノ \ こ¨` ノ{ー--、〃__/ あ
人__/ー┬ 个-、__,,.. ‐'´ 〃`ァーァー\ っ
. / |/ |::::::|、 〃 /:::::/ ヽ た
/ | |::::::|\、_________/' /:::::/〃
0456デフォルトの名無しさん
2010/04/27(火) 06:59:370457デフォルトの名無しさん
2010/04/27(火) 13:32:18プログラムて作成することはできますか?
ハックとかではなく、自分のTOOL上からパスワード変更をしたいと考えています。
0458デフォルトの名無しさん
2010/04/27(火) 13:52:33NetUserChangePassword()
0459118
2010/04/27(火) 23:49:220460118
2010/04/28(水) 10:34:520461デフォルトの名無しさん
2010/04/28(水) 23:36:218.3形式にしてアクセスするしかないんでしょうか?例えば
,
Andre (eの上に ' がつく文字)というファイルを
FindFirstFile(便利な変換関数("Andre"), ...)としてアクセスする手段はないですよね。
0462デフォルトの名無しさん
2010/04/29(木) 05:39:448.3形式のファイル名はどうやって得るつもりなの?
GetShortPathName()を使うならUnicode版を使わなきゃならないし、
それが出来る環境ならそもそもA系APIを使う意味がないんじゃ?
0463デフォルトの名無しさん
2010/04/29(木) 11:07:57キーボードプロシージャからDLL側のスレッドに PostThreadMessage() すると
なぜかアプリ側に WM_KEY* メッセージが素通りしてしまいます。
PostThreadMessage() で投げているのはユーザ定義メッセージなので、WM_KEY* とは全く無関係なはずだと思うのですが
何故こういうことが起こるのでしょうか?PostThreadMessage() はそういう仕様のものなんでしょうか?
キーボードプロシージャのソースを示します。
DLL側で生成したスレッドはウィンドウを持ちませんが、事前に PeekThreadMessage(&msg, 0, 0, 0, PM_NOREMOVE) を呼んでいるので
メッセージキューは生成されているはずだと思います。
--------------------
HHOOK hHook;
UINT thread_id; // DLL側で生成したスレッドのID
LRESULT CALLBACK KeyBoardProc(int code, WPARAM wp, LPARAM lp)
{
if(code < 0 || code == HC_NOREMOVE) return CallNextHookEx(hHook, code, wp, lp);
// これを行うとなぜか WM_KEY* が素通りしてしまう
// コメントアウトすると WM_KEY* は望み通り遮断される
PostThreadMessage(thread_id, WM_APP+1, wp, lp);
return TRUE; // アプリに WM_KEY* を渡さない
}
--------------------
仕様上やむを得ないのであればメッセージキューに相当するものを自作しようかと考えているのですが
標準のメッセージキューで可能ならそれに越したことはないので、詳しい方の知恵をお借りしたいです。
0464デフォルトの名無しさん
2010/04/29(木) 11:14:38PeekMessage(&msg, 0, 0, 0, PM_NOREMOVE) の誤りです。すみません。
0465デフォルトの名無しさん
2010/04/29(木) 12:11:37いちいち取得しなくても、ソースを書く段階で「最初から知っていた」というケースもある
汎用性はなくなるけど特定の業務に使うアプリなら決め打ちで問題ないこともある
0466118 ◆ayPjxbmM2c
2010/04/29(木) 12:22:36じゃ、直接指定しろよ。
0467デフォルトの名無しさん
2010/04/29(木) 18:32:540468118
2010/04/29(木) 19:16:56int * p = &i;//int型ポインタpにiのアドレスを代入する
簡単。
char str1[] = "abcde";
char * str2 = "abcde";
上と下は同じでどっちを使ってもいい。
0469デフォルトの名無しさん
2010/04/29(木) 19:34:330470デフォルトの名無しさん
2010/04/29(木) 20:09:32気になってしょうがない。どこかの誤爆?
0471デフォルトの名無しさん
2010/04/29(木) 21:30:310472デフォルトの名無しさん
2010/04/30(金) 00:28:310473118
2010/04/30(金) 02:24:22偽の118 トリップ全部、sage
>>468>>459>>378>>370
>>300>>240>>186
>>176>>149>>190
0474118
2010/04/30(金) 03:01:530475118
2010/04/30(金) 09:58:590476118
2010/04/30(金) 10:05:060477118
2010/04/30(金) 10:57:540478デフォルトの名無しさん
2010/04/30(金) 12:16:25指定したハンドルのではなくて、IME自体の状態を取得したいのですが
0479デフォルトの名無しさん
2010/04/30(金) 12:46:28IMEってやっかいだよな
下手に関わるとwineでまともに動かなくなるし
0480デフォルトの名無しさん
2010/04/30(金) 12:48:47WM_IME_〜メッセージとかでどうですかね?
0481デフォルトの名無しさん
2010/04/30(金) 12:49:520482デフォルトの名無しさん
2010/04/30(金) 12:50:390483デフォルトの名無しさん
2010/04/30(金) 15:04:41・・・本当に書かれてたら笑うが
0484デフォルトの名無しさん
2010/04/30(金) 17:20:460485デフォルトの名無しさん
2010/04/30(金) 18:42:03IMEの状態ってウィンドウごとに保持されてるんじゃないの?
0486デフォルトの名無しさん
2010/04/30(金) 21:42:26復帰したときにATOKはおかしくなることがある。
MS-IMEも昔はおかしくなったんだけど、最近になってようやくきちんと復帰するようになった。
0487デフォルトの名無しさん
2010/05/01(土) 02:16:390488デフォルトの名無しさん
2010/05/01(土) 11:40:28もう片方がクリックされたら、クリックされたマウス上に表示するようにしてる
それで、ウィンドウは両方ともダブルクリックに対応してるんだけど
片方がダブルクリックされると、最初のクリックでもう片方が表示、その結果WM_LDBLCLKが来ないんだが
綺麗な解決方法無いかな?
0489デフォルトの名無しさん
2010/05/01(土) 11:52:200490デフォルトの名無しさん
2010/05/01(土) 14:38:20�d。遅延なら何とかなりそう
0491デフォルトの名無しさん
2010/05/01(土) 15:53:08試してみたけど、普通にWM_LBUTTONDBLCLKきたよ?
非表示のウインドウを表示させるコードに問題があるんじゃないの?
表示させるときにSWP_NOACTIVATEとか、SW_SHOWNA使ってる?
0492デフォルトの名無しさん
2010/05/01(土) 19:59:55うぉぉぉ。有難う!
普通にSW_SHOW使ってました
0493デフォルトの名無しさん
2010/05/01(土) 23:44:22GetClientRect
GetWindowRect
の違いがわかりません。
どれも、領域の左上、右下の座標を取得することができるようですが・・・
どう違うんでしょうか?
0494デフォルトの名無しさん
2010/05/01(土) 23:46:030495デフォルトの名無しさん
2010/05/02(日) 00:11:330496デフォルトの名無しさん
2010/05/02(日) 00:17:320497118 ◆ayPjxbmM2c
2010/05/02(日) 00:17:530498デフォルトの名無しさん
2010/05/02(日) 00:25:430499デフォルトの名無しさん
2010/05/02(日) 00:27:500500デフォルトの名無しさん
2010/05/02(日) 00:30:03GetClientRect - クライアント領域の位置情報
GetWindowRect - ウィンドウ領域の位置情報
0501デフォルトの名無しさん
2010/05/02(日) 01:52:03GetClientRect - クライアント上に描画している矩形を取得
GetWindowRect - ウィンドウ上に描画している矩形を取得
0502118
2010/05/02(日) 03:17:580503118
2010/05/02(日) 08:58:190504デフォルトの名無しさん
2010/05/02(日) 10:14:26Aは常に最前面、しかしBは更にAより最前面って出来ない?
0505デフォルトの名無しさん
2010/05/02(日) 10:16:200506118 ◆ayPjxbmM2c
2010/05/02(日) 10:44:320507デフォルトの名無しさん
2010/05/02(日) 11:30:060508デフォルトの名無しさん
2010/05/02(日) 12:46:070509118 ◆88ZPSwqsm6
2010/05/02(日) 12:58:180510デフォルトの名無しさん
2010/05/02(日) 13:09:460511デフォルトの名無しさん
2010/05/02(日) 13:11:19オーナーにせずに解決策ってある?
0512デフォルトの名無しさん
2010/05/02(日) 13:22:24アプリのメッセージボックスの自己主張が激しかった
Win95/NT4.0時代の悪夢を繰り返さないための仕様。
0513デフォルトの名無しさん
2010/05/02(日) 13:26:59適当なイベント(Activateなど)をトリガに
毎回EnumでZオーダーをチェックし
BがAの背面に回っていたら
A、Bの順にTopmostする
0514デフォルトの名無しさん
2010/05/03(月) 03:38:490515デフォルトの名無しさん
2010/05/03(月) 03:42:03DrawCube みたいな関数をイメージしてるなら、そんな物は無い
0516118
2010/05/03(月) 04:19:423D->2D変換
typedef struct type3d {
float x,y,z;
} POINT3D;
typedef struct type2d {
float x,y;
}
void convert3dto2d(p3 *POINT3D, p2 *POINT2D)
{
float vp = 0.7;
p2->x = p3->x * (vp / p3->z);
p2->y = p3->y * (vp / p3->z );
}
0517デフォルトの名無しさん
2010/05/03(月) 04:56:57何言語?
糞いい加減なレスすんなや、ボケ
0518デフォルトの名無しさん
2010/05/03(月) 05:10:26滅茶苦茶過ぎてワロタ
0519デフォルトの名無しさん
2010/05/03(月) 10:31:17どうやるかというとHPが100以下になったら回復アイテムを
自動で使うというものを作りたいです
そこで、起動しているexeのメモリの内容を参照するAPIって
何があるのでしょうか?
0520デフォルトの名無しさん
2010/05/03(月) 10:39:310521118 ◆1oKmZSIAF.
2010/05/03(月) 10:43:460522デフォルトの名無しさん
2010/05/03(月) 11:35:11元からかw
0523デフォルトの名無しさん
2010/05/03(月) 12:59:13\/ ● 、_ `ヽ ======
/ \( ● ● |つ
| X_入__ノ ミ そんな餌で俺様が釣られクマ――
、 (_/ ノ /⌒l
/\___ノ゙_/ / =====
〈 __ノ ====
\ \_ \
\___) \ ====== (´⌒
\ ___ \__ (´⌒;;(´⌒;;
\___)___)(´;;⌒ (´⌒;; ズザザザ
0524デフォルトの名無しさん
2010/05/03(月) 18:01:45SetEnvironment() で path を新たに設定しなおして、その後 ShellExecute() を実行してみたんですが
古いパスしか見てくれないようで困っています
0525デフォルトの名無しさん
2010/05/03(月) 18:06:17環境変数を継承するオプション無かった?なかったら、CreateProcessでごにょごにょする。
0526118 ◆4BcWhWACFc
2010/05/03(月) 18:06:47もう少し具体的にやりたいことと、やってみたことを説明してみ。
0527デフォルトの名無しさん
2010/05/03(月) 19:29:35notepad.exe とか memo.txt とかのファイル名が書かれたテキストファイルを読み
適当なタイミングでそのプログラムをShellExecuteで起動する32ビットアプリを作っています
64ビット環境下で動く時に、%SystemRoot%\Sysnative を優先して実行ファイルの探索パスとして使えると、
64ビット版のアプリが起動できるのではないかと思い実装を試みていました
多分、ShellExecute のパスを変えるには、親玉の explorer.exe の環境変数を変更しないとだめで、
そこを書き換えている期間は他のアプリにも影響が出てしまうのでこの方針はまずそうです
素直に64ビット版のShellExecuteのプロセスを用意しようと思います
0528118 ◆4BcWhWACFc
2010/05/03(月) 19:35:37素直に、フルパスで起動すればいいんじゃね?
0529デフォルトの名無しさん
2010/05/03(月) 19:51:42memo.txt や a.bat のようなファイル名指定による ShellExecute でSystem32配下のアプリが呼ばれるときの挙動を変えたかったんです
0530118 ◆4BcWhWACFc
2010/05/03(月) 19:56:27必要に応じてSysnativeにパスを変えて、CreateProcessすればいいだろ?
0531デフォルトの名無しさん
2010/05/03(月) 19:58:29面倒な世の中になってきたなあ
0532118
2010/05/03(月) 20:12:45ニンテンドウ64
0533デフォルトの名無しさん
2010/05/03(月) 20:53:44これでいけそうです。ありがとうございます!
0534デフォルトの名無しさん
2010/05/04(火) 13:31:49ソースコードを同一にする方法って言うか注意事項って言うか
そういうのがまとまったサイトってないのかな。
0535デフォルトの名無しさん
2010/05/04(火) 13:36:35void* p;
int a=(int)p;
0536118 ◆tfxvx8WXZ2
2010/05/04(火) 13:42:380537デフォルトの名無しさん
2010/05/04(火) 13:45:08#error 無理です。
}
0538デフォルトの名無しさん
2010/05/04(火) 14:13:04それじゃ常にエラー出るだろw
0539デフォルトの名無しさん
2010/05/04(火) 14:21:170540デフォルトの名無しさん
2010/05/04(火) 15:44:100541デフォルトの名無しさん
2010/05/04(火) 21:26:09副次ストリームとか使ってなんとか一緒にできないものか
foo.exe(32ビット版) が起動た時OSが64ビットだったら foo64.exe を呼び出す、みたいな間抜けなやり方しか思いつかん
0542デフォルトの名無しさん
2010/05/04(火) 21:43:04PEフォーマットが複数バイナリを格納できない以上、それは無理ってもんでしょ。
0543118 ◆tfxvx8WXZ2
2010/05/04(火) 22:08:22SysInternalのツールとかは、そういう風にやってるね。
0544デフォルトの名無しさん
2010/05/04(火) 22:11:35あれって、たとえば、特定のEXEにあたっちすることまでは
わかったのですが、
そのEXEが発行するAPIとか取得できるのかな?
やりたいことは、
EXEがあり、このEXEは、Widnowsのハードウエアにかかわる
DLL(API)を使っています。
このdevice.dll に対して、どのようなAPIが発行を要求したかしらべたいのです。
0545デフォルトの名無しさん
2010/05/04(火) 22:13:030546118 ◆uKObk31oqA
2010/05/04(火) 22:16:02API呼び出しを確認したければ、API Monitorかデバッガでアタッチ、
あるいは、ラッパ生成ツールでも使うことになる。
詳細はググレ。
0547デフォルトの名無しさん
2010/05/04(火) 22:16:52昔、dependency walkerってのがあったけど、
今もあんの?
0548デフォルトの名無しさん
2010/05/04(火) 22:20:10今手元に、とある dll とそれを利用している exe があります。
この dll について、公開されている関数の中で、この exe が
今どの関数を使用しているかを知る方法はありませんか?
ご教示の程よろしくお願い致します。
こんな感じか
0549118 ◆uKObk31oqA
2010/05/04(火) 22:24:30VSには含まれなくなったけど、フリーのやつが落とせる。
0551デフォルトの名無しさん
2010/05/04(火) 22:46:49どこかに良いサンプルありませんか
0552デフォルトの名無しさん
2010/05/04(火) 22:55:31この dll について、公開されている関数の中で、この exe が
今dllのどの関数を使用しているかを知る簡単な方法はありませんか?
イメージ的には、他社開発のアプリ上のボタンを押したら、
どのDLLのどの関数を呼び出したかを知りたいです。
アプリ上にそういったトレースファイルをはく使用であればいいのですが、
そういう使用がないので、なんらかの方法で知りたいと思います。
ご教示の程よろしくお願い致します。
0553118 ◆uKObk31oqA
2010/05/04(火) 23:00:19何かをした時点で、ってことであれば、>>546
0554デフォルトの名無しさん
2010/05/05(水) 01:40:43>>553
>SPY++は、メッセージのやりとりを確認するツール。
>API呼び出しを確認したければ、API Monitorかデバッガでアタッチ
情報ありがとうございます。
API モニター等調べています。
Win32とは直接関係ないですが、上の”メッセージ”とありますが、
現在Visual C++ 2008 のフォームアプリを勉強しているのですが、
ほとんど、(昔のVBみたいで、)あまり、メッセージがでてきません。
この理由というのがいまいちよくわかってないのですが、なにかヒントありますでしょうか?
0555118 ◆uKObk31oqA
2010/05/05(水) 01:41:59普通にWin32アプリを作れば、嫌でも出てくるよ。
0556デフォルトの名無しさん
2010/05/05(水) 01:51:362ch、やっぱり、すごい、疑問がすぐ解決する。。
0557デフォルトの名無しさん
2010/05/05(水) 02:09:49ネットでさがしてもわかりませんでした。
また、そのリスト等、ネットにありますでしょうか?
0558118 ◆1oKmZSIAF.
2010/05/05(水) 02:13:540559デフォルトの名無しさん
2010/05/05(水) 02:19:56・・・そもそもどこまでを指してwin32APIと呼ぶのかって話もあるが
0560デフォルトの名無しさん
2010/05/05(水) 02:32:230561デフォルトの名無しさん
2010/05/05(水) 02:44:11暇な廃人が常駐してるからな
0562デフォルトの名無しさん
2010/05/05(水) 03:02:06>560 :デフォルトの名無しさん:2010/05/05(水) 02:32:23
>system32にあるdllの各エクスポート数を調べるとか
このDLLのエキスポート数についてもう少しわかりやすく解説願えないでしょうか?
DLLはAPIを集めた、関数群であるあたり、までは理解しております。
0563118 ◆1oKmZSIAF.
2010/05/05(水) 03:11:550564デフォルトの名無しさん
2010/05/05(水) 03:16:27ありがとう。DLL内の情報が得られる EXEが、VSにあるみたいですね!
いろいろ読んで試してみます。
ttp://www.crystal-creation.com/software/technical-information/programming/dotnet/dotnet-compact-framework/cpp-dll.htm
0565デフォルトの名無しさん
2010/05/05(水) 03:17:58マイクロソフト出版か何かが出してた鬼みたいな厚さのAPI本でも多分全部網羅はしてなかったような
あと、箱入りVCにはレンガくらいの厚さがあるAPI本入ってるけど
0566デフォルトの名無しさん
2010/05/05(水) 03:40:12APIといいつつ、単なるマクロでDLLではエクスポートされていない場合もあるよ。
諦めたほうがいい。
0567デフォルトの名無しさん
2010/05/05(水) 08:10:41DNSAPIとか
0568デフォルトの名無しさん
2010/05/05(水) 08:52:28DNSAPI.dll のことか?
普通に MSDN 見ればわかると思うが...
http://msdn.microsoft.com/en-us/library/ms682100(v=VS.85).aspx
0569デフォルトの名無しさん
2010/05/05(水) 09:01:530570デフォルトの名無しさん
2010/05/05(水) 16:29:20DnsGetCacheDataTable なんて、どう見ても内部向けだろうし。
0571デフォルトの名無しさん
2010/05/05(水) 20:39:120572デフォルトの名無しさん
2010/05/05(水) 21:05:42そしてそれが何かの説明も読まずに使うバカはいないと思うの
0573118 ◆1oKmZSIAF.
2010/05/05(水) 21:25:310574デフォルトの名無しさん
2010/05/05(水) 22:20:21英語のMSDN見ないと話にならない
0575118
2010/05/06(木) 02:30:04お前K&Rも原著じゃないとっていうタイプだろ?
融通がきかない頭が固い
死後硬直かよ
0576デフォルトの名無しさん
2010/05/06(木) 02:34:51そのとおりです
よくわかりましたね
0577デフォルトの名無しさん
2010/05/06(木) 03:02:36日本語版だとバッファサイズがヌル文字含むのかとか書いてないことがあるし
0578デフォルトの名無しさん
2010/05/06(木) 06:15:06なくて使いづらいんだよな。
0579デフォルトの名無しさん
2010/05/06(木) 06:53:21クライアント領域がサイズ変更可能で境界線を持たないウインドウはどうすれば作成できますか?
0580デフォルトの名無しさん
2010/05/06(木) 08:19:260581デフォルトの名無しさん
2010/05/06(木) 09:05:15定期的に列挙してZオーダーの確認するしかない?
0582デフォルトの名無しさん
2010/05/06(木) 09:12:530583デフォルトの名無しさん
2010/05/06(木) 09:14:42他のあるかい?
0584デフォルトの名無しさん
2010/05/06(木) 09:23:380585デフォルトの名無しさん
2010/05/06(木) 09:40:430586デフォルトの名無しさん
2010/05/06(木) 10:02:04>>279-285を読んでもそう言うなら*馬鹿*以外の何物でもない。
> 解説
> CreateFile が返したオブジェクトハンドルを閉じるには、 関数を使います。
0587デフォルトの名無しさん
2010/05/06(木) 10:10:59ファイルコピーをする場合、
・fopen_s等で開いて、自力でコピー
・system("copy を使う
があると思いますが、
エクスプローラーのコピーを、プログラムから気軽に使う方法はないでしょうか?
ファイルのコピー経過(今どれくらいコピーが終わったか)などを表示するのが目的です。
0588118 ◆1oKmZSIAF.
2010/05/06(木) 10:14:42SHFileOperation
0589デフォルトの名無しさん
2010/05/06(木) 10:31:15ありがとうございます
ばっちりでした
0590デフォルトの名無しさん
2010/05/06(木) 14:05:46綺麗な手では無理
どろくさくやるなら
CreateProcess → 戻りのプロセスID取得
ウィンドウ列挙して、GetWindowThreadProcessId でプロセスID取って一致したら
ShowWindow(SW_HIDE) する
こういう手順になるかな?
0591デフォルトの名無しさん
2010/05/06(木) 14:10:25関数を使います。
0592デフォルトの名無しさん
2010/05/06(木) 14:39:00自分で答えいってるがな
0593デフォルトの名無しさん
2010/05/06(木) 15:33:50STARTUPINFOのwShowWindowにSW_HIDE指定すれば済む話じゃなくて?
ちなみに、プロセスが作成されて最初のShowWindowはSTARTUPINFOで
状態が指定されていれば、それが強要される。
0594118 ◆1oKmZSIAF.
2010/05/06(木) 15:37:160595デフォルトの名無しさん
2010/05/06(木) 15:44:42そのアプリが最初に呼び出すShowWindowがSW_DEFAULTだかなんだかっての指定してないと効かない
0596デフォルトの名無しさん
2010/05/06(木) 15:46:16STARTUPINFO 効かないんじゃないかな
0597デフォルトの名無しさん
2010/05/06(木) 15:48:13if the program that launched the application specifies startup information in the structure.
In this case, ShowWindow uses the information specified in the STARTUPINFO structure to show the window.
On subsequent calls, the application must call ShowWindow with nCmdShow set to SW_SHOWDEFAULT
to use the startup information provided by the program that launched the application.
This behavior is designed for the following situations:
0598デフォルトの名無しさん
2010/05/06(木) 16:05:01SW_DEFAULTは関係ないよ。
nCmdShow
ウィンドウの表示方法を指定します。アプリケーションがほかのプログラムから STARTUPINFO 構造体を渡して起動された場合、初めて ShowWindow 関数を呼び出したときには、このパラメータは無視されます。
0599デフォルトの名無しさん
2010/05/06(木) 16:11:020600デフォルトの名無しさん
2010/05/06(木) 16:14:04ダイアログベースのアプリケーションでも表示状態の指定はできるけど、
それとは別にダイアログベースのアプリケーションのメインウインドウは
不可視にできないという制限があるから、SW_HIDEは駄目かもね。
0601118
2010/05/06(木) 19:29:30日本語でおk
0602デフォルトの名無しさん
2010/05/06(木) 20:01:390603デフォルトの名無しさん
2010/05/06(木) 21:44:15たとえば、WM_KEYDOWN が来たら UpdateWindow() した場合は
WM_KEYDOWN が来る
↓
UpdateWindow() を呼ぶ (A)
↓
WM_PAINT を引数としてウィンドウプロシージャが呼ばれる
↓
WM_PAINT を処理する
↓
WM_KEYDOWN の (A) へ制御が戻る
という感じになるんでしょうか?
0604デフォルトの名無しさん
2010/05/06(木) 21:53:23WM_PAINT を送信する
>WM_PAINT を引数としてウィンドウプロシージャが呼ばれる
のではなくて
ウィンドウプロシージャにWM_PAINTメッセージが送信される
WM_KEYDOWNへの処理には戻らない
なぜなら WM_KEYDOWNメッセージはウィンドウプロシージャに送信されていない
0605デフォルトの名無しさん
2010/05/06(木) 21:59:29単純に WinProc( MSG msg )
{
switch( msg )
{
case WM_PAINT:
brea;
case WM_KEYDOWN:
break;
}
}
と考えればよろし
0606デフォルトの名無しさん
2010/05/06(木) 21:59:50でも、MSDNだと UpdateWindow() はメッセージキューを無視して WM_PAINT を送ると書いてありますよね?
ということは、WM_PAINT の処理が終わるまでブロックするんじゃないかと思うんですが、そうではないんでしょうか?
メッセージキューの先頭に WM_PAINT を入れるということですか?
0607デフォルトの名無しさん
2010/05/06(木) 22:02:10printf( でも試してみれば?
0608デフォルトの名無しさん
2010/05/06(木) 22:08:41http://msdn.microsoft.com/ja-jp/library/ms536136.aspxhttp://msdn.microsoft.com/ja-jp/library/cc428944.aspxhttp://msdn.microsoft.com/ja-jp/library/ms536136.aspx
ウィンドウのクライアント領域にある、指定された長方形またはリージョンを更新します。
コピー
BOOL RedrawWindow(
HWND hWnd, // ウィンドウのハンドル
CONST RECT *lprcUpdate, // 更新したい長方形
HRGN hrgnUpdate, // 更新したいリージョンのハンドル
UINT flags // 再描画フラグからなる配列
);
WM_PAINT 使わなくてもこの関数を使えば画面の最更新はできる
0609デフォルトの名無しさん
2010/05/06(木) 22:11:27リンクミス
http://msdn.microsoft.com/ja-jp/library/cc410559.aspx
0610デフォルトの名無しさん
2010/05/06(木) 22:12:24InvalidateRect
もある
0611デフォルトの名無しさん
2010/05/06(木) 22:16:56半端な知識で出鱈目教えてる奴が来てるようだから、この時間のレスは信用しない方が良いよ。
0612デフォルトの名無しさん
2010/05/06(木) 22:28:350613デフォルトの名無しさん
2010/05/06(木) 22:30:10処理には戻らないって、関数が終わったら戻ってるじゃん
そういう事を >>603 の(A)は言ってるんじゃないの?
UpdateWindow関数っていつから goto になったんだww
0614デフォルトの名無しさん
2010/05/06(木) 22:30:47603はそんなこと聞いてないだろう。
処理が終わればWM_KEYDOWNの残りの処理に戻るだろ。
第一、戻らないと困るだろ。
0615デフォルトの名無しさん
2010/05/06(木) 22:33:10たしかな根拠があるのか?
0616デフォルトの名無しさん
2010/05/06(木) 22:34:25イベントドリブンだ
どっちが半端な知識なんだろうね
0617デフォルトの名無しさん
2010/05/06(木) 22:36:120618デフォルトの名無しさん
2010/05/06(木) 22:41:22OSによる挙動が変わる可能性もある
0619デフォルトの名無しさん
2010/05/06(木) 22:46:18http://codepad.org/iZGdWEcN
"bar" が表示されるのは "UpdateWindow() start" と "UpdateWindow() end" の間だけなので、
どうやら UpdateWindow() はブロックするみたいですね。
WM_PAINT のハンドラ内で Sleep() した場合も "UpdateWindow() start", "UpdateWindow() end" の表示間隔が
明らかに長くなるので、たぶんブロックするのは間違いないんじゃないかと思います。
もしかしたら>>618さんの仰るように環境依存なのかもしれないですけど、
ブロックする環境がある以上は一応それを考慮しようと思います。色々ありがとうございました。
0620デフォルトの名無しさん
2010/05/06(木) 22:47:39グローバル変数として
const char* p = "foo";
と最初に定義しています。
0621デフォルトの名無しさん
2010/05/06(木) 22:55:24いつから gotoになったんだって一文がどういう意味かわからないのか
どっちが半端な知識なんだろうね、じゃねぇよびっくりするぐらい頭悪いなお前
0622デフォルトの名無しさん
2010/05/06(木) 22:59:040623デフォルトの名無しさん
2010/05/06(木) 23:15:00>>604はびっくりするほど頭が悪い。これが真実。
0624デフォルトの名無しさん
2010/05/06(木) 23:21:41614ですが、
ブロックなんていう問題か?
自分でメッセージキューから一個一個取り出して処理してる最中だからだろ。
(UpdateWidow()はキューを通さない)
0625デフォルトの名無しさん
2010/05/06(木) 23:26:56MSDNにもありますが「キューを通さない」というのがどういう意味なのかよくわからなかったんです。
Windowsのメッセージキューについてはあまりよく知らなかったので。
WM_PAINTの処理が終わるまでブロックするのか、メッセージキューの先頭にWM_PAINTを割り込ませるのか、
それとも別にスレッドを作って処理するのか、などと考えてました。
0626デフォルトの名無しさん
2010/05/07(金) 00:43:13CALLBACK内
UpdateWindow() 呼ぶ
CALLBACK終了
次にキューに溜まっているメッセージを引っ張ってくる
キューを通す場合:
キューにある WM_KEYDOWN を引っ張ってきて CALLBACK 開始
CALLBACK内
UpdateWindow() のようなものを呼ぶ → キューに WM_PAINT を割りこます
(PostMessageみたいなもの)
CALLBACK終了
次にキューに溜まっているメッセージである WM_PAINT を引っ張って CALLBACK 開始
キューを通さない場合:
キューにある WM_KEYDOWN を引っ張ってきて CALLBACK 開始
CALLBACK内
UpdateWindow() のようなものを呼ぶ
お膳立てして CALLBACK を再帰呼び出し
CALLBACK内(2)
<WM_PAINT 処理>
CALLBACK終了(2)
CALLBACK終了
おおざっぱにこう違う
0627デフォルトの名無しさん
2010/05/07(金) 01:09:330628118 ◆4BcWhWACFc
2010/05/07(金) 01:14:020629デフォルトの名無しさん
2010/05/07(金) 01:36:16日本語版msdnしか読まない馬鹿は引っ込んでろ。
0630118
2010/05/07(金) 02:28:000631118
2010/05/07(金) 04:45:31うわあ
0632デフォルトの名無しさん
2010/05/07(金) 07:42:290633デフォルトの名無しさん
2010/05/07(金) 08:02:35それをバカにして自分があたかもそいつより上だという優越感にひたりたいです
0634デフォルトの名無しさん
2010/05/07(金) 20:09:02下等生物のあわれなやりとりを見ているととても胸がスーッとし
自分より以下の存在を確認することによって自分の存在がとても尊いものだと認識させられます
0635デフォルトの名無しさん
2010/05/07(金) 21:20:01実験するようにすれば脂身の多いスレであっても正解に辿り付けるから大丈夫
0636デフォルトの名無しさん
2010/05/07(金) 21:43:13表示したツールチップを消したいんだが、ShowWindowで消すのは駄目だよね?
TTN_POPとか受け取りたいから、うまい消し方在ったら教えてください
0637デフォルトの名無しさん
2010/05/07(金) 22:00:55TTM_POP
0638デフォルトの名無しさん
2010/05/07(金) 22:32:18有難うございます。解決しました
0639デフォルトの名無しさん
2010/05/07(金) 23:10:59スクリーン座標から判定したいんだが
簡単に判別する方法無いかな?
UnionRectとか使ってみたけど、どうもうまくいかない
0640デフォルトの名無しさん
2010/05/07(金) 23:12:49かもめのジョナさん
0641デフォルトの名無しさん
2010/05/07(金) 23:14:13どっかで同じ質問してる香具師がいたな
マルチか
0642デフォルトの名無しさん
2010/05/07(金) 23:18:450643デフォルトの名無しさん
2010/05/07(金) 23:27:330644デフォルトの名無しさん
2010/05/07(金) 23:33:05それだけじゃまだ不足
0645デフォルトの名無しさん
2010/05/07(金) 23:38:410646118 ◆4BcWhWACFc
2010/05/07(金) 23:44:350647デフォルトの名無しさん
2010/05/07(金) 23:46:17あれー?
それでできるんですか!!
すんまんせん。書式はどうやって書けばいいのですか・・・
0648118
2010/05/07(金) 23:51:21wsprintf()ゎ遅い
0649デフォルトの名無しさん
2010/05/07(金) 23:53:080650デフォルトの名無しさん
2010/05/07(金) 23:54:510651デフォルトの名無しさん
2010/05/07(金) 23:57:140652118 ◆4BcWhWACFc
2010/05/08(土) 00:00:030653118
2010/05/08(土) 00:04:13char *konma3(int m)
{
char s[274];
char e[277];
wsprintf(s, "%d",m);
m=0;
while(*s){
*e++=*s++,m++;
if (m%3) *e++=',';
}
return e;
}
0654デフォルトの名無しさん
2010/05/08(土) 00:05:35使うならUnionRectじゃなくて、IntersectRectじゃないのか?
0655デフォルトの名無しさん
2010/05/08(土) 00:05:520656デフォルトの名無しさん
2010/05/08(土) 00:07:46言語設定に従ってフォーマットするやつ。
0657デフォルトの名無しさん
2010/05/08(土) 00:13:40簡単なのない?
0658デフォルトの名無しさん
2010/05/08(土) 00:14:390659デフォルトの名無しさん
2010/05/08(土) 00:37:470660デフォルトの名無しさん
2010/05/08(土) 01:38:16Aが最前面に無い状態で設定したキーが押されても
Aで受け取って処理出来るようにするには、
キーボードフックしか方法はありませんでしょうか?
0661118 ◆4BcWhWACFc
2010/05/08(土) 01:51:35処理できるよ。
フォーカスがない、ってことであれば、ホットキーかフック。
0662デフォルトの名無しさん
2010/05/08(土) 01:58:28while(1)でキー監視したり
RegisterHotKeyで登録したりかな
0663660
2010/05/08(土) 02:04:41RegisterHotKey()を試してみたいと思います。
わかりやすいご説明ありがとうございました。
0664デフォルトの名無しさん
2010/05/08(土) 03:35:080666デフォルトの名無しさん
2010/05/08(土) 04:21:330667デフォルトの名無しさん
2010/05/08(土) 04:44:590669デフォルトの名無しさん
2010/05/08(土) 07:57:240670118
2010/05/08(土) 08:07:5910 IF 1<>2 THEN GOTO 0
0671デフォルトの名無しさん
2010/05/08(土) 08:11:330672118
2010/05/08(土) 08:32:36絶対わかりにくい。
10 A=10:B=5
20 IF A!=10 THEN B=A
30 PRINT B
RUN
10
OK
■
0673デフォルトの名無しさん
2010/05/08(土) 08:32:39!= という記号を使っている低俗な愚民どもを見るのは
私の理想論からおおきくはずれ、おろかな記号表現は滅されるべきだ
0674デフォルトの名無しさん
2010/05/08(土) 09:03:380675デフォルトの名無しさん
2010/05/08(土) 09:14:03B.exe (コンソールアプリ:自分作成) が起動される仕組みになっていて、
A.exe とのやりとりに B.exe の標準入出力が占有されている場合
B.exe 側が単独でコンソールウィンドウを開いて文字出力する方法を教えてください。
0676118 ◆MNk6ialHnk
2010/05/08(土) 10:47:240678デフォルトの名無しさん
2010/05/08(土) 11:37:170679デフォルトの名無しさん
2010/05/08(土) 11:38:49無事にStartupInfoを使って不可視での起動が出来ました。
ありがとうございました。
0680デフォルトの名無しさん
2010/05/08(土) 15:35:38別にコンソール作らんでも、使われてないコンソールを使えば?
CONをOpenFile
>>679
非表示のことだったの
0681デフォルトの名無しさん
2010/05/08(土) 17:14:20素人考えでは、インクリメント中にスレッドBがiを読んだとしても、
読み取られる値はiまたはi+1にしかならないはずなので、普通に++iで問題ないだろうと思ったのですが
0682デフォルトの名無しさん
2010/05/08(土) 17:24:46なんて言ってないんだからねっ!!
0683デフォルトの名無しさん
2010/05/08(土) 17:29:070684デフォルトの名無しさん
2010/05/08(土) 17:52:11その条件で、その値に関してだけなら問題無い。
スレッドBからアウトオブオーダーに絡むような参照をするなら話は別だけど。
例えば、iが+1されているなら、どこどこの変数は既に更新済みのはず、とか。
0685デフォルトの名無しさん
2010/05/08(土) 18:29:40マルチスレッドど素人なので、いろいろ調べてきました
InterlockedIncrement()はメモリバリアを生成するってMSDNに書いてありますね。
スレッドAで
hoge=1; ++i;
みたいなことをすると、書いた順番に実行されるとは限らないから、hogeをスレッドBで参照するのはまずい、ということでしょうか。
それだと多分まずそうなので、InterlockedIncrement()を使うことにします。ありがとうございました。
0686675
2010/05/08(土) 19:12:50>>680
>>682も?
CreateFileでCONOUT$を指定してハンドルを取得し
WriteFile/WriteConsoleを利用することで
希望通りの動作をさせることができました。
ありがとうございました。
0687デフォルトの名無しさん
2010/05/08(土) 19:52:40fopen_s で開いて開けたらOKってしてたら、
別プロセスでロックされているとエラーが返ってきてしまいました。
何とかOKで返すロジックを組みたいんですが、
何かいいAPIなり応用なりを教えてエロい人!!
0688デフォルトの名無しさん
2010/05/08(土) 20:01:310689デフォルトの名無しさん
2010/05/08(土) 20:03:53PathFileExists
0690118 ◆X4wDaRuYzw
2010/05/08(土) 20:05:100691687
2010/05/08(土) 23:06:43なるほど、Find系APIもあった!
>>689, 690
PathFileExists!shlwapi.h は見なかったなぁーthx!!
0692デフォルトの名無しさん
2010/05/09(日) 01:49:50SetWindowsHookEx()を使用してWM_MOUSEをフックするDLLを作成し、
作ったアプリはWindows7では特に問題無く動作しますが、XPでは実行ファイルから起動すると
画面がフリーズしたような状態になりログオフするまで直りません。
ただし、XPにてVSのメニュー、デバッグ開始またはデバッグなしで実行から
起動した場合、なぜかフリーズしたような状態にはなりません。
何が原因なのでしょうか?
正直Windows7を今後メインで使うから別にいいじゃんと逃げたくなってきていますが・・・
0693デフォルトの名無しさん
2010/05/09(日) 03:42:46どうせ俺は使わないし
0694デフォルトの名無しさん
2010/05/09(日) 07:31:597専用でいいよ
XPだけど使わないから
0695デフォルトの名無しさん
2010/05/09(日) 09:11:27>起動した場合、なぜかフリーズしたような状態にはなりません
リリースとの構成の違いをつぶさに観察してみるとか、
あとあほみたいだけど、OSに処理返してる所がちゃんと書かれてるかも一応流れ確認するとか
0696デフォルトの名無しさん
2010/05/09(日) 09:46:48そんな常識もしらない素人が作るプログラムは他人は使わないから、7専用でいいよ。
0697デフォルトの名無しさん
2010/05/09(日) 09:52:220698デフォルトの名無しさん
2010/05/09(日) 11:24:44多分Lunaのバグが原因。
0699692
2010/05/09(日) 12:27:24Release版でもDebug版でも実行ファイルから起動するとフリーズ状態になります。
VS経由じゃなくても、例えばOllyDbg等のデバッガ経由して起動した場合問題無い
>697
何らかのバグがあるのは分かりきっていますが、
意図通りに動く条件がこれまで見たことが無いものなのでバグの特定方法が分からず
アドバイスを求めました・・・
0700デフォルトの名無しさん
2010/05/09(日) 12:46:25いやマジで
0701デフォルトの名無しさん
2010/05/09(日) 12:53:55Win7使ったりデバッガ経由したりしたら
XP直とは多少メモリの配置が変わって
問題なくなるとか
0702692
2010/05/09(日) 13:45:39フックをかけるところで下記のようにWH_MOUSEのみをフックしていましたが、
::SetWindowsHookEx( WH_MOUSE
, (HOOKPROC)CMouseHook::MouseProc
, GetThisHInst()
, 0 );
WH_GETMESSAGEをフックするように変更し、
プロシジャーのなかで右クリックイベントの判定を行うように変えたらフリーズは
無くなりました。
とりあえずこれで問題無くなりましたが、根本原因が分からず気持ち悪いです・・・
0703デフォルトの名無しさん
2010/05/09(日) 14:31:460704デフォルトの名無しさん
2010/05/09(日) 16:39:380705デフォルトの名無しさん
2010/05/09(日) 17:05:16>>700
0706デフォルトの名無しさん
2010/05/09(日) 17:24:01FTHはまぢいらねー
なんであんな機能増やした
0707デフォルトの名無しさん
2010/05/09(日) 17:26:570708デフォルトの名無しさん
2010/05/09(日) 17:28:330709デフォルトの名無しさん
2010/05/09(日) 17:30:58Windows7から入ったメモリ破壊監視機構
0710デフォルトの名無しさん
2010/05/09(日) 17:35:44ttp://re-thinkthings.spaces.live.com/Blog/cns!1C5AE98DA3645F42!732.entry
0711デフォルトの名無しさん
2010/05/09(日) 17:58:270712692 ◆CIlmPyxysI
2010/05/09(日) 18:06:55Vistaでも動いたからこれが直接の原因ではないようです。
メモリ破壊の可能性はまだ否定できませんが・・・
ちなみに704と707は自分ではないです
0713デフォルトの名無しさん
2010/05/10(月) 03:36:33::MessageBox()
みたいにコロン2つを付けてることがありますが、これはどういう意味なんでしょうか?
大域関数だよ、ってことを明示したいってだけですか?
0714デフォルトの名無しさん
2010/05/10(月) 03:59:33MFCで大域関数じゃないMessageBox()があるんだ・・・
0715デフォルトの名無しさん
2010/05/10(月) 05:03:39MFCですか!使ったことないので全然気付きませんでした。ありがとうございます。
今後使うハメになるかもしれないので、一応コロン付ける習慣をつけておこうと思います。
0716デフォルトの名無しさん
2010/05/10(月) 05:34:020717デフォルトの名無しさん
2010/05/10(月) 06:20:19迷惑な話ですね
0718デフォルトの名無しさん
2010/05/10(月) 07:31:54普通はAfxMessageBoxの方を使うし。
0719118
2010/05/10(月) 20:16:48手フェチは手を舐めるんだろうか
鼻フェチは鼻をなめるんだろうか
足フェチだけじゃね?
舐める欲求が強いのわ
0720デフォルトの名無しさん
2010/05/10(月) 20:35:110721デフォルトの名無しさん
2010/05/10(月) 20:35:470722デフォルトの名無しさん
2010/05/10(月) 21:29:420723デフォルトの名無しさん
2010/05/12(水) 17:56:26通信ってできますか?
当然ながら後に立ち上げたソフトはポートのオープンに失敗するんですが
0724デフォルトの名無しさん
2010/05/12(水) 17:59:20メディアプレイヤーを作ろうとして、下調べをしているのですが、
.tsや.flv/.swfを再生させるTopology/Filtergraphの構築方法がわかりません。
topoedit/grapheditどちらでもグラフが構築できないようです。
WMPは何をやって再生しているのでしょうか?
0725デフォルトの名無しさん
2010/05/12(水) 18:25:19Loopback Adapterの追加でやれた気がするけど詳細忘れた
名前を変えて複数入れるとかだと思う
0726デフォルトの名無しさん
2010/05/12(水) 18:40:08IPアドレスを追加しる
0727118
2010/05/12(水) 23:23:40IPアドレスになってオマエの家に忍び込みたいヨォぉ
0728デフォルトの名無しさん
2010/05/13(木) 09:37:47普段は2台のPCで親、子のソフトで通信してますが
これを1台のPCで親と子ソフトを起動して通信させたいのですが
0730デフォルトの名無しさん
2010/05/13(木) 09:42:54>1つのPCでソフトを2つで同じポート使って通信ってできますか?
無理
0731デフォルトの名無しさん
2010/05/13(木) 09:46:45うざいだけです
0732デフォルトの名無しさん
2010/05/13(木) 09:52:41知らないならレスしないで下さいよ。
最近知ったかが多くて困る
0733デフォルトの名無しさん
2010/05/13(木) 10:00:06127.0.0.1:1234
と
192.168.xx.xx:1234
で通信出来ないか?
0734デフォルトの名無しさん
2010/05/13(木) 10:15:14socketで作成したハンドルをバインドする時にすでにポートが他で開かれていたらエラーになるんですが・・・
他のやり方するんですか?
0735デフォルトの名無しさん
2010/05/13(木) 10:21:37うざいだけです
0736デフォルトの名無しさん
2010/05/13(木) 10:21:430737デフォルトの名無しさん
2010/05/13(木) 10:25:49みもふたもないこといわないでよ><
>>736
何やら光が見えてきそうです。
すんません。ワイルドカードでバインドはどうやってやるんですか?
0738デフォルトの名無しさん
2010/05/13(木) 10:47:26ワイルドカードってIPのことですよね?
何かサックリできた気がしますが、
あとにワイルドアレを指定して開いてもbindでエラーにならなかったですが
>>733
すんません。意味わかりました。
bindするときってアドレスはANY指定だったんですが
これが重要だったんですね。これをアレしたらできました。
0739デフォルトの名無しさん
2010/05/13(木) 11:12:42これ確かに先に127.0.0.1の1234でアレして、
次に192.168.1.10の1234でアレはうまくいったのですが
これsendtoすると自分で取っちゃうつーアレが・・・
うーん、この辺の仕組みってどうすれば・・・
0740デフォルトの名無しさん
2010/05/13(木) 11:13:050741デフォルトの名無しさん
2010/05/13(木) 11:16:48だから無理だって言ってるだろ
0742デフォルトの名無しさん
2010/05/13(木) 11:20:17でもヒントになったありがとう
>>741
いや、できますた。
127.0.0.1でアレした方は192.168.1.10に送信し
192.168.1.10でアレした方は127.0.01にアレしたらあっさりでけますた。
もしやとおもってやてみたけどできてよかた。
っていうか、この方法なら従来のロジックを変えることなくできるからこれいいわあ〜
あー、こんな方法があったなんて知らなかったほんとみんなありがとう。
0743デフォルトの名無しさん
2010/05/13(木) 11:20:380744デフォルトの名無しさん
2010/05/13(木) 11:26:17そうやって逃げてばかりじゃダメなんだって!!
つーか、更に問題発生
ブロードキャストがうまくいかん
127.0.0.1の方はブロードキャスト受け取れないどうしよう
0745デフォルトの名無しさん
2010/05/13(木) 11:34:12�@ブロードキャストされたデータを受け取ったら127.0.0.1宛てにコピーして送信
�ANICを2枚挿してリンクローカルじゃないプライベートアドレスを2つ作る
�B諦める
0746デフォルトの名無しさん
2010/05/13(木) 11:43:270747デフォルトの名無しさん
2010/05/13(木) 11:44:01�@PC1台で2つソフトをアレしてはいますが、更に他にPCあってそっちにも子ソフトがいるので
これやっちゃうと、数人が127.0.0.1に送ることになるのでNG
�Aハード的な対策はNGなんですよ・・
�B(´・ω・`) ショボーン
っていうか、今回に限り127.0.0.1は親としアレすると
ブロードキャストは受けなくても問題はないから諦めるって方向になりますが
(親はブロードキャスト出すだけなので)
子は出すし受け取るので今回のアレではアレです。
しかしながら今回の実験で同じPCで同ポートアレができることがわかったのは大収穫です。
ほんとありがとう
0748デフォルトの名無しさん
2010/05/13(木) 12:18:120749デフォルトの名無しさん
2010/05/13(木) 12:42:500750デフォルトの名無しさん
2010/05/13(木) 13:40:380751デフォルトの名無しさん
2010/05/13(木) 13:42:250752デフォルトの名無しさん
2010/05/13(木) 13:43:28みっともねー奴だなあ
0753デフォルトの名無しさん
2010/05/13(木) 13:44:270754デフォルトの名無しさん
2010/05/13(木) 13:46:060755755
2010/05/13(木) 15:22:27編集した画像をどうやってアイコンファイルとして作成できるんですか?
なんか便利なAPIが用意されてたりするんでしょうか?
0756デフォルトの名無しさん
2010/05/13(木) 15:27:100757デフォルトの名無しさん
2010/05/13(木) 17:53:20文面からしか判断できないので間違っている可能性の方が高いが,,,
もう少し他人の労力に対して感謝の意を表す努力をした方が良い。
あなたがどの程度の前提や考察をしたうえで、質問をしているかは
読み手には書いてあること以上は判らない。
前後のやり取りを見るとそれなりの知識はあるようだが、あなたの質問に対して
100%最適化された答えが返ってくる保証もなければ、その前提となる条件が
全て明示されている訳でもない。
個々の使用条件でも、どの性能を優先するかによって構成や安全率の
取り方は変わってくる。
論理上無駄でも、安全や人間の犯しやすいミスに対する保険などに対する考え方
の違いで設計が変わったとしても何の不思議も無い。
実際の設計は、あなたが考えているほど単純明快ではないよ。
0758デフォルトの名無しさん
2010/05/13(木) 17:54:36遅レスでしつこいですね。
0759デフォルトの名無しさん
2010/05/13(木) 18:07:030760118
2010/05/13(木) 19:05:21///)
/,.=゙''"/
/ i f ,.r='"-‐'つ____ こまけぇこたぁいいんだよ!!
/ / _,.-‐'~/⌒ ⌒\
/ ,i ,二ニ⊃( ●). (●)\
/ ノ il゙フ::::::⌒(__人__)⌒::::: \
,イ「ト、 ,!,!| |r┬-| |
/ iトヾヽ_/ィ"\ `ー'´ /
0761デフォルトの名無しさん
2010/05/13(木) 22:17:57全て取得したいのですが、どのような関数を使えばいいのでしょうか?
どなたか分かる方おられましたらよろしくお願いします。
0762118
2010/05/13(木) 22:33:51SetupDiEnumDeviceInterfaces
0763デフォルトの名無しさん
2010/05/13(木) 22:35:15じゃダメかしらん?
0764デフォルトの名無しさん
2010/05/13(木) 22:35:390765デフォルトの名無しさん
2010/05/13(木) 22:42:060766761
2010/05/13(木) 22:49:56>>763
ありがとうございます!
早速使い方を調べて使ってみたいと思います。
EnumlateConnectedByUsbOnMyPersonalComputer
もググって調べてみたのですが、ヒットしませんでした。
色々調べてみます。
0767118 ◆X4wDaRuYzw
2010/05/13(木) 22:54:580768デフォルトの名無しさん
2010/05/13(木) 23:25:360769118
2010/05/13(木) 23:39:58審問に答えないカスどもどっかいけよ!!!!!!!!
雑談はなれ合いはラウンジでやれーーーーーー
マイタじゃねえんだよここゎ
ボケがえ^^^^^^^^^
沢村以下だな
!
0770デフォルトの名無しさん
2010/05/13(木) 23:41:27brc32 sdk44.rc sdk44.exe
を実行すると
Error sdk44.rc 10 42: Expecting END
って出る。brc32ではリンクしてくれない場合があるらしいから
brcc32からやってみたが、同じエラーが出る。
リソースファイルは以下
06MYPOPUP MENU DISCARDABLE
07BEGIN
08 POPUP "表示されません"
09 BEGIN
10 MENUITEM "終了\tShift + Ctrl + X", IDM_END
11 POPUP "オプション"
12 BEGIN
13 MENUITEM "猫の絵\tF1", IDM_CAT
14 MENUITEM "犬の絵\tF2", IDM_DOG
15 MENUITEM "ネズミの絵\tF3", IDM_RAT
16 MENUITEM "消去\tEsc", IDM_CLR
17 END
18 END
19END
ヘッダーは、
#define IDM_END 100
(以下省略)
聞きたいのは、1) brc32が悪いのか、だれ猫の間違いなのか?
2) きちんとリンクできる別の方法はあるか?(統合環境を使うなど)
0771デフォルトの名無しさん
2010/05/13(木) 23:44:08お前そんな頃からいるのかよ
0772デフォルトの名無しさん
2010/05/13(木) 23:45:350773デフォルトの名無しさん
2010/05/14(金) 00:33:23>Error sdk44.rc 10 42: Expecting END
そのエラーはIDM_ENDが未定義だから
rcの冒頭でIDM_〜をdefineしたhをインクルードしましょ
>1)
ttp://www.6809.net/tenk/html/prog/bcc55fre.htm
TurboC無料版に付属していたbrc32はリンクが出来なかった記憶がある
>brc32
でバージョン確認してみて
>2)
出来るのが普通だよ。
Win環境ならVC++EEにResEditでいいんじゃないかな。
0774デフォルトの名無しさん
2010/05/14(金) 11:28:5916ビットのビットマップを作成しました。
これに対して、赤色(255,0,0)のブラシとペンでRectangleで描画したとします。
このときピクセルにセットされるのはメモリを見ると007Cでした。
この値を描画する前に知る手段はあるのでしょうか?
自前で計算と思ったのですが、16ビットで描画されるとき
RGBが555なのか565なのか変わる場合があるのか自分にはわからないので
質問させていただきました。
0775デフォルトの名無しさん
2010/05/14(金) 12:08:070776デフォルトの名無しさん
2010/05/14(金) 12:12:01もう少し調べた方がよさそうです。失礼しました。
0777デフォルトの名無しさん
2010/05/14(金) 12:12:570778デフォルトの名無しさん
2010/05/14(金) 13:56:080779デフォルトの名無しさん
2010/05/14(金) 15:17:170780デフォルトの名無しさん
2010/05/15(土) 20:10:06フォーム上のボタンをおしたら、リストボックスに処理結果等の文字列を表示させたいと考えています。
ボタンを押したらというのは、 そこで、メッセージを拾えばいいと思うのですが、リストボックスに表示させるには具体的にどうやればいいのでしょうか?また、こういったPGは、MFC等を使うのが、一般的なのでしょうか?
0781デフォルトの名無しさん
2010/05/15(土) 20:13:47SetWindowText(hEdit, "");
こんなんでよければ
0782デフォルトの名無しさん
2010/05/15(土) 20:17:34http://wisdom.sakura.ne.jp/system/winapi/win32/index.html
0783デフォルトの名無しさん
2010/05/15(土) 20:23:40今からC++&Win32APIなんてマゾすぎる
0784デフォルトの名無しさん
2010/05/15(土) 20:31:04私は、VB等ならわかりますが、C#は使ったことがありません。
やりたいことは、Windowsが用意しているDLL 内の関数を使って、制御したり
するプログラムです。ただし、Windows のフォームアプリとして作りたいと
思っています。例えば、外部から、そのデバイスに接続があれば、フォーム上で通知したり、フォーム上のテキストボックスに入れた値を用いて、デバイス
に値を渡して、通信させるといったプログラムです。
こういったPGの場合、vb とC#を比べた場合どちらが優れているでしょうか?
0785118 ◆X4wDaRuYzw
2010/05/15(土) 21:04:090786デフォルトの名無しさん
2010/05/15(土) 21:20:50Windowsが用意しているwin32API関数群を使って何かしたい、
そしてウィンドウはフォーム(ダイアログ)形式でって話ならば、例えば
Visual C++ 2008 Express か、 2010 で、かつ フリーウェアの ResEdit を使って
ダイアログとして作ってしまうって手がある。 CreateDialog 関数を使って基本的なウィンドウを作り、
コントロールをリソースとして配置してしまえば、若干コーディングを省略できて、かつ GUI で各種コントロールを配置できて楽。
ちなみに、C# や VB で win32APIを呼び出す事も出来るけど、そんな事するくらいなら
上記方法で VC++ 使ってやっても特に難しい事は無いぜ。 ・・・ただし C++ が普通に理解出来ている事が大前提だけど
0787デフォルトの名無しさん
2010/05/15(土) 22:51:43> フリーウェアの ResEdit を使って
>ダイアログとして作ってしまうって手がある。 CreateDialog 関数を使って
>基本的なウィンドウを作り、
>コントロールをリソースとして配置してしまえば、若干コーディングを省略>できて、かつ GUI で各種コントロールを配置できて楽。
貴重な実践的なテクニックについて教えてもらい感謝です。
>ちなみに、C# や VB で win32APIを呼び出す事も出来るけど、そんな事する>くらいなら
>上記方法で VC++ 使ってやっても特に難しい事は無いぜ。
VB,VC比較した、開発のイメージがなんとなくつかめました。
0788デフォルトの名無しさん
2010/05/17(月) 11:09:43今、カーネルオブジェクトがシグナルか非シグナルの状態を取得する方法ってどうすればいいでしょうか?
0789デフォルトの名無しさん
2010/05/17(月) 11:13:330790788
2010/05/17(月) 11:27:35こういう感じでしょうか?
DWORD nRet = WaitForSingleObject(hSignal,0);
if(nRet == WAIT_OBJECT_0) {
//シグナル状態
}
else if(WAIT_TIMEOUT) {
//非シグナル状態
}
0791デフォルトの名無しさん
2010/05/17(月) 11:30:490792デフォルトの名無しさん
2010/05/17(月) 11:42:00ありがとうございました。
0793デフォルトの名無しさん
2010/05/17(月) 14:15:25また、ウィンドウをプログラム側からスナップさせるにはどうすればいいんでしょうか?
検索してみたけどユーザー向けの説明か、無効にする方法ばかりで・・・
0794デフォルトの名無しさん
2010/05/17(月) 14:19:420795デフォルトの名無しさん
2010/05/17(月) 15:08:370796デフォルトの名無しさん
2010/05/17(月) 15:13:07ウインドウをドラッグして・・・
マウスカーソルを画面上端へくっつける 最大化する
マウスカーソルを画面右端へくっつける ウィンドウが画面右半分のサイズになる
マウスカーソルを画面左端へくっつける ウィンドウが画面左半分のサイズになる
ウィンドウの端をドラッグして・・・
マウスカーソルを画面上端・下端へくっつける 縦方向だけ最大化する
それぞれの状態から、ウィンドウをドラッグして動かすと元のサイズに戻る
0797デフォルトの名無しさん
2010/05/17(月) 15:13:300798デフォルトの名無しさん
2010/05/17(月) 15:47:32要するに7の機能なのね
利点がさっぱり判らんけど
0799デフォルトの名無しさん
2010/05/17(月) 16:51:427だとなんかよくわからん機能になってるんだな
0800デフォルトの名無しさん
2010/05/17(月) 18:32:18spyで調べるとか
0801デフォルトの名無しさん
2010/05/17(月) 19:05:140802デフォルトの名無しさん
2010/05/17(月) 23:56:050804デフォルトの名無しさん
2010/05/18(火) 03:22:05Win7入れてないから詳しくないんだけど
>マウスカーソルを画面上端へくっつける 最大化する
と
従来の最大化がイコールで
>ウィンドウをドラッグして動かすと元のサイズに戻る
という仕様なら
GetWindowPlacement
SystemParametersInfo
GetWindowRect
あたりのAPIを使って対処はできると思う
そうでないなら別のフラグを持ってるという事なので
Win7拡張APIのヘッダに
locとかposとかマッチしそうなワードでGrepしてみるといいかもね
0805デフォルトの名無しさん
2010/05/18(火) 10:09:15そこで、SendMessage()関数がありますが、
その特定のアプリケーションのHWNDハンドルをどうやって取得したらいいでしょうか?
0806デフォルトの名無しさん
2010/05/18(火) 10:14:130807デフォルトの名無しさん
2010/05/18(火) 10:15:560808デフォルトの名無しさん
2010/05/18(火) 10:55:38char cls[256] = "ストップウォッチD";
HWND hwnd;
hwnd = FindWindow( cls, NULL );
としても hwnd には 0 が代入されます
何が原因なのでしょうか?
0809デフォルトの名無しさん
2010/05/18(火) 11:02:33クラス名が違うんじゃね?
GetLastErrorで何がおかしいか調べろ
0810デフォルトの名無しさん
2010/05/18(火) 11:12:30セッションが異なる
0811デフォルトの名無しさん
2010/05/18(火) 11:14:380812デフォルトの名無しさん
2010/05/18(火) 11:15:18UINT msg;
WPARAM wParam;
LPARAM lParam;
char cls[256] = "notepad";
hwnd = FindWindow( cls, NULL );
msg = WM_CHAR;
wParam = VK_TAB;
lParam = 0;
SendMessage( hwnd, msg, wParam, lParam );
ノートパッドではうまくいきました
次にタブキー入力を送信したいのですが またうまくいきません
0813デフォルトの名無しさん
2010/05/18(火) 11:17:18にも変えましたがうまくいかないです
0814デフォルトの名無しさん
2010/05/18(火) 11:30:23英語のMSDNをよく読むと、SendされるメッセージとPostされるメッセージが
明確に区別されている。
どっちで送っても平気なメッセージもあるが、WM_KEYDOWNはPostしないと駄目。
(TranslateMessageの都合があるので)
0815デフォルトの名無しさん
2010/05/18(火) 11:42:44EnableWindow( hwnd, true );
msg = WM_KEYDOWN;
wParam = VK_TAB;
lParam = 0;
// SendMessage( hwnd, msg, wParam, lParam );
PostMessage( hwnd, msg, wParam, lParam );
アクティブにしPostしてみましたが、ダメでした
0816デフォルトの名無しさん
2010/05/18(火) 11:48:260817デフォルトの名無しさん
2010/05/18(火) 12:01:560818118
2010/05/18(火) 12:03:30いい加減anci準拠のプログ作れよww
0819デフォルトの名無しさん
2010/05/18(火) 12:14:10wParam = 0x00000061;
lParam = 0x001E0001;
PostMessage( hwnd, msg, wParam, lParam );
msg = WM_KEYDOWN;
wParam = 0x00000041;
lParam = 0x001E0001;
PostMessage( hwnd, msg, wParam, lParam );
msg = WM_KEYUP;
wParam = 0x00000041;
lParam = 0xC01E0001;
PostMessage( hwnd, msg, wParam, lParam );
SPY++ 使ってそのままの値をコード化したのですが、想定どおりにいかないです
SnedInput もどうやって そのキーをアプリケーションに送るのでしょうか?
0820デフォルトの名無しさん
2010/05/18(火) 12:29:14UINT nInputs, // 入力イベントの数
LPINPUT pInputs, // 挿入する入力イベントの配列
int cbSize // 構造体のサイズ
);
のINPUT構造体ってなにをインクルードするんでしょうか?
windows.h インクルードしてるんですが、コンパイルエラーでして
0821デフォルトの名無しさん
2010/05/18(火) 12:33:080822デフォルトの名無しさん
2010/05/18(火) 12:41:25定義したらいけました
ありがとうございました
0823デフォルトの名無しさん
2010/05/18(火) 13:12:56データベース乙というか張り込み乙としか
0824デフォルトの名無しさん
2010/05/18(火) 13:15:24SendInputでできてもあんまうれしくないんだけど
0825デフォルトの名無しさん
2010/05/18(火) 13:43:19SendMessage(
FindWindowEx(FindWindow("notepad",NULL),NULL,"Edit",NULL),
WM_CHAR,VK_TAB,NULL);
じゃだめなん?
0826デフォルトの名無しさん
2010/05/18(火) 16:02:58805がアホなだけだと思う
0827デフォルトの名無しさん
2010/05/18(火) 16:12:240828デフォルトの名無しさん
2010/05/18(火) 20:45:58アプリ起動時に指定されたDLLが必要なんですがどこにおけばいいんですか?
いつも実行ファイルと同じ場所にコピーしておいています
0829デフォルトの名無しさん
2010/05/18(火) 21:00:570830デフォルトの名無しさん
2010/05/18(火) 22:20:56OSとか設定で微妙に検索順は違うが、
少なくとも実行ファイルのディレクトリは最優先だから、それでいい。
0831デフォルトの名無しさん
2010/05/19(水) 00:21:330832デフォルトの名無しさん
2010/05/19(水) 10:52:34サービスのプログラム側から、ログインユーザが存在するのかを判定したいのですが
方法がわかりません。ご存知の方がいましたら教えていただけないでしょうか?
0833デフォルトの名無しさん
2010/05/19(水) 13:20:010834デフォルトの名無しさん
2010/05/19(水) 14:12:580835デフォルトの名無しさん
2010/05/19(水) 21:40:580836デフォルトの名無しさん
2010/05/19(水) 21:42:53lpString
新しいウィンドウタイトルまたはコントロールのテキストとして使われる、NULL で終わる文字列へのポインタを指定します。
0837デフォルトの名無しさん
2010/05/19(水) 21:43:040838デフォルトの名無しさん
2010/05/19(水) 21:44:04何故マニュアルを読まないのか?
0839デフォルトの名無しさん
2010/05/19(水) 21:52:36MSDNは読みましたが、NULLでクリアを意図しているコードを見たもので…
クリアするときはNULL文字を指定すればいいですよね?
0840デフォルトの名無しさん
2010/05/19(水) 21:57:14仕様はどうでもいい、ただ挙動が知りたいって事なら実験結果がすべてだろ。
それに従って好きにしろよ。
ただし、そんな糞コードは誰にも使わせるな。
0841デフォルトの名無しさん
2010/05/19(水) 22:24:55NULLの場合の挙動は知らないが、"\0"(NUL文字)は空文字列だからクリアできるに決まっとる
>>840
過去のバージョンで既定となっている動作でMSですら使っていそうならはそうほいほいと変更できないんじゃないか
0842デフォルトの名無しさん
2010/05/19(水) 22:28:222.SetText( hWnd, "\0" )
3.SetText( hWnd, NULL )
1と2は同じだが、3は明らかに意味が異なる
文字列は常にアドレスを持つのだ
0843デフォルトの名無しさん
2010/05/19(水) 22:49:000844118
2010/05/20(木) 02:07:12ハァ?
NULLだってアドレスだろ?
どこもさしていないことが保証されている。
4.SetText( hWnd, '\0')
0845デフォルトの名無しさん
2010/05/20(木) 08:21:54> 4.SetText( hWnd, '\0')
> 4.SetText( hWnd, '\0')
> 4.SetText( hWnd, '\0')
> 4.SetText( hWnd, '\0')
> 4.SetText( hWnd, '\0')
> 4.SetText( hWnd, '\0')
> 4.SetText( hWnd, '\0')
バカ発見 www
0846デフォルトの名無しさん
2010/05/20(木) 17:18:13アプリ内で起動している、自分のパスを取得する必要があります。
今までGetModuleFileName()で特に問題なく取得できていたのですが、
PC起動時に自動的に起動できるようにレジストリ登録したところ、
(HKLM\Software\Microsoft\Windows\CurrentVersion\Run)
GetModuleFileName()で取得したパスがC:\Windows\system32\XXXXに変わりました。
正確に(いかなる場合でも)自分のファイルのパスを取得する方法をご存知の方がいましたら教えていただけないでしょうか?
0847デフォルトの名無しさん
2010/05/20(木) 17:25:06hModuleにNULL入れたんじゃない?
0848デフォルトの名無しさん
2010/05/20(木) 19:33:35GetSystemMetrics(SM_XVIRTUALSCREEN) が
error C2065: 'SM_XVIRTUALSCREEN' : 定義されていない識別子です。
となり、コンパイル出来なくなってしまいました。
マルチディスプレイ対応のために座標を取得するコードなのですが、
最近のコンパイラではどうやっても動かせないのでしょうか。
0849デフォルトの名無しさん
2010/05/20(木) 19:39:51有料の開発ツールを使いましょう。
0850デフォルトの名無しさん
2010/05/20(木) 19:47:4000?0 では後者しかヒットしませんが 000? だと前者もヒットします
終端の?を正しく評価して貰うことは出来ないんでしょうか
0851デフォルトの名無しさん
2010/05/20(木) 20:18:540852デフォルトの名無しさん
2010/05/20(木) 20:31:01全ファイル列挙しつつ自前で文字列をマッチする
0853デフォルトの名無しさん
2010/05/20(木) 22:28:04実を言うと質問した時点でもう自前のコードは書き上げちゃってたんだけど
どうにもこの変な仕様が気になって何か自分の見落としがあるのかと思って質問してみたんだ
終端かそうでないかで評価の仕方が違うというのは何か気持ち悪いけどこういう仕様なんだな
ありがと
0854デフォルトの名無しさん
2010/05/20(木) 22:44:29そんな事は無い。MSに入社してAPIの仕様変更を決定できるまでに出世すれば可能。
0855118
2010/05/20(木) 23:18:35エクスプーローラーのファイル検索でどうなるか確かめれ
0856デフォルトの名無しさん
2010/05/21(金) 00:00:36俺のPCでは動いても、友達のPCでは形が変わらなかった
それで、コード周りを調べたら
SetWindowRgn( hwnd, hrgn, TRUE );
DeleteObject( hrgn );
と書いていたんだが、環境によってはDeleteObjectで元に戻ってしまう?
SetWindowRgnで渡したhrgnは、システムが保持するのは知ってたけど
削除しても動いてたから、削除してました
0857デフォルトの名無しさん
2010/05/21(金) 00:53:26SetWindowRgn 関数が成功すると、システムは、パラメータ hRgn で指定したリージョンを所有します。
システムは、このリージョンのコピーを作成しません。
したがって、これ以降はこのリージョンハンドルに対して関数を呼び出すべきではありません。
特に、このリージョンハンドルを削除しないでください。
必要がなくなると、システムはこのリージョンハンドルを自動的に削除します。
0858デフォルトの名無しさん
2010/05/21(金) 07:00:13実はDeleteObject関数のことなんだよな
0859デフォルトの名無しさん
2010/05/21(金) 07:29:21元の形に戻るのかは分からないが、仕様で削除するなとあるからDeleteObjectの行を消すべき
0860デフォルトの名無しさん
2010/05/21(金) 11:29:00なぜか一行の半分くらいしか文字列が取得されなくて困ってます
そのプロセスには三つのRICHED20Aが含まれていますが
そのうち一つは正常、あとの二つで問題が起きます
症状からすると文字数とバイト数を混同してるからだと思うのですが
SendMessageWとSendMessageAを使い分けてもダメでした
いろいろ試してみましたが解決の糸口すら掴めません
もし宜しければこの無能な私に救いの手をお願いします
0861デフォルトの名無しさん
2010/05/21(金) 11:48:36バッファサイズの指定をしてないか、間違えてるんでしょう。
0862デフォルトの名無しさん
2010/05/21(金) 11:51:05ああ、書き忘れましたがバッファサイズはちゃんと指定してあります
0863デフォルトの名無しさん
2010/05/21(金) 11:52:20バッファサイズの指定を間違えてるんでしょう。
0864デフォルトの名無しさん
2010/05/21(金) 12:21:01それでちゃんと設定してるつもりとかそういう
0865860
2010/05/21(金) 13:35:47言葉が足りなかったようなのでもう少し付け加えると
取得したい行の長さに関わらず必ず半分程度しか取得できないのです
例えば「あいうえ」という行であれば「あい」まで
「あいうえおかきく」という行であれば「あいうえ」までというようにです
0866デフォルトの名無しさん
2010/05/21(金) 13:56:070867866
2010/05/21(金) 14:01:580868デフォルトの名無しさん
2010/05/21(金) 14:27:21もう君を哀れむことしか出来ない
0869デフォルトの名無しさん
2010/05/21(金) 14:40:42バッファサイズの指定を間違えてるんでしょう。
バッファサイズの指定を間違えてるんでしょう。
0871デフォルトの名無しさん
2010/05/21(金) 15:17:46その部分だけソース
0872860
2010/05/21(金) 15:30:35バッファサイズは固定してあるので
もし皆さんの仰るようにバッファサイズの指定が問題であれば
「あいうえおかきく」の時に「あいうえ」が取得できて
「あいうえ」の時に「あい」しか取得できないはずがないからです
それに最初にも書きましたが
対象のプロセスが持つ三つのリッチエディットのうち一つは同じ方法で上手く動くのです
ソースは家に帰ってから出しても良いのですが
本当に普通にバッファを確保→先頭にバッファサイズを書込み→SendMessageしてるだけで
特に見せるような特別なことは何もしていません
どこにでもあるサンプルソースと全く同じです
0873デフォルトの名無しさん
2010/05/21(金) 15:35:34百聞は一見に如かず
愚者は経験に学び賢者は歴史に学ぶ
0874デフォルトの名無しさん
2010/05/21(金) 15:36:05バッファサイズの指定を間違えてるんでしょう。
0876デフォルトの名無しさん
2010/05/21(金) 17:22:58お前の頭が間違いなんでしょう
0877860
2010/05/21(金) 18:46:130878118
2010/05/21(金) 18:49:37double _fastcall ReadEMText(HWND hwndeditbox, void *buffer, double size) {
double textlengh = GetWindowTextLength(hwndeditbox);
if (textlengh > size) {
GetWindowText(hwndeditbox, buffer, size);
} else {
ZeroMemory(buffer, size);
return textlengh;
}
0879デフォルトの名無しさん
2010/05/21(金) 18:50:3908800x35c
2010/05/21(金) 19:21:00??? ReadEMText(HWND hwndeditbox, std::vector<TCHAR>& buffer) {
????
GetWindowText(hwndeditbox, buffer, ??);
????
}
どうしたらいでしょうか?
0881デフォルトの名無しさん
2010/05/21(金) 19:36:58バッファが足りない、指定が間違ってるだろ
バッファも十分にあります
指定も間違っていません
ソース見せろよ
自我崩壊しました ← いまここ
0882デフォルトの名無しさん
2010/05/21(金) 19:50:37ReadEMText に一致する情報は見つかりませんでした。
検索のヒント:
0883デフォルトの名無しさん
2010/05/21(金) 19:53:58中身が、GetWindowTextって何よw
0884848
2010/05/21(金) 20:31:06#define _WIN32_WINNT 0x0500
とすればコンパイルが通る事がわかりました。(以前は0x0400で問題なかった)
ありがとうございました。
0885デフォルトの名無しさん
2010/05/21(金) 20:34:100886デフォルトの名無しさん
2010/05/21(金) 21:07:47このソフトのように、処理モジュールごとにウィンドウ(ダイアログ?)を設けて設定できるようなプログラムを組みたいのですが、
どのようにすればよいでしょうか?
ttp://wisdom.sakura.ne.jp/system/winapi/win32/win88.html
このページで説明されているモードレスダイアログを使うのでしょうか?
ご助言よろしくお願いします。 m(_ _)m
0887デフォルトの名無しさん
2010/05/21(金) 21:16:49本来マルチモニタサポートはWin98/2000からだけど、
Win9xのサポートを打ち切ったから2000からに書き換えたのかもしれんね。
ちなみに、sdkddkver.hに0x0500のような定数が定義されているので、
そっちを使うとマニア受けする。
0888デフォルトの名無しさん
2010/05/21(金) 21:22:33そのソフト知らないけど、なんとなくMDIなんじゃなかろうかと思った
0889デフォルトの名無しさん
2010/05/21(金) 21:51:52一見スマートに見えるけど、中身はガタガタっておちだろうな
いろんなやり方が考えられる
0890デフォルトの名無しさん
2010/05/21(金) 21:54:490891デフォルトの名無しさん
2010/05/21(金) 22:14:08普通はツールウィンドウ(WS_POPUPとWS_EX_TOOLWINDOWを持たせたウィンドウ)を使う。
そのスクショはAviUtilだと思うけど、Spy++で確認したらそうなってる。
画像編集ソフトなんかでも良く見るタイプ
0892886
2010/05/21(金) 23:07:14MDIというと、OfficeやPhotoshopみたいに、>>886のソフトよりは機能豊富(ウィンドウサイズの変更、
描画できるクライアント領域など)なウィンドウというイメージがあります・・・
そこまでは必要なく、>>886みたいに各種値を設定できるだけで十分なんです。
あと、MDIって、親ウィンドウの枠の中に複数存在するカタチじゃありませんでしたっけ??
>>889
>>890
中身は分かりませんが、とても使い易い上に、独自の処理をプラグインフィルタとして開発できたりと
拡張性、柔軟性も高いです。
作者のKENくんさんはとても技術力の高い方では、と思います。
>>891
>Spy++で確認したらそうなってる。
調べられるんですね!
ツールウィンドウのスタイルがあることは知っていましたが、シンプルなウィンドウ?くらいの認識しかありませんでした。
画像編集ソフトでよく使われるんですね。
ツールウィンドウスタイルで組むことにします。
みなさん、ご助言ありがとうございました。 m(_ _)m
0893デフォルトの名無しさん
2010/05/21(金) 23:08:090894デフォルトの名無しさん
2010/05/21(金) 23:51:260895デフォルトの名無しさん
2010/05/22(土) 00:09:040896デフォルトの名無しさん
2010/05/22(土) 16:29:210897デフォルトの名無しさん
2010/05/22(土) 18:35:020898デフォルトの名無しさん
2010/05/22(土) 18:45:550899デフォルトの名無しさん
2010/05/22(土) 19:18:46なんでそんなピンポイントの個人的な都合を満たすような関数が
OSのAPIにあると思ったんだよw
0900デフォルトの名無しさん
2010/05/22(土) 19:20:00「ボタンもウィンドウ」 だから、移動のメッセージ投げればいんじゃね
0901デフォルトの名無しさん
2010/05/22(土) 19:38:45そんなピンポイントってのが気になって、「pdf jpeg 変換」でぐぐったら
結構対処法が出て来る。Windows の API ではないけどネ。
世の中、同類の多さにびっくり。
0902デフォルトの名無しさん
2010/05/22(土) 19:52:09「彼女を作る」で検索すると結構ヒットするけど、彼女を作るAPIはおそらく存在しない。
0903デフォルトの名無しさん
2010/05/22(土) 20:44:350904デフォルトの名無しさん
2010/05/22(土) 21:56:070905デフォルトの名無しさん
2010/05/22(土) 22:02:09サブクラス
>>904
スーパークラス
0906デフォルトの名無しさん
2010/05/22(土) 22:05:150907デフォルトの名無しさん
2010/05/22(土) 22:12:00アクセス違反
>>904
メモリ不足
0908デフォルトの名無しさん
2010/05/22(土) 22:36:240909デフォルトの名無しさん
2010/05/22(土) 23:00:190910デフォルトの名無しさん
2010/05/22(土) 23:13:48DestroyCherryBoyで注意すべきことはありますか?
0911デフォルトの名無しさん
2010/05/22(土) 23:16:300912デフォルトの名無しさん
2010/05/22(土) 23:26:210913デフォルトの名無しさん
2010/05/22(土) 23:29:520914デフォルトの名無しさん
2010/05/22(土) 23:31:410915デフォルトの名無しさん
2010/05/22(土) 23:37:500916デフォルトの名無しさん
2010/05/23(日) 01:26:56Cherryだけを消さないと
そういうAPIはありますか?環境はVista 64bitです。
0917デフォルトの名無しさん
2010/05/23(日) 01:31:18MSもセコいよなぁ。
0918デフォルトの名無しさん
2010/05/23(日) 02:16:58鬱病予備軍だな
0919896
2010/05/23(日) 05:28:07質問を変えます
座標x:100 y:100にボタンが存在するかを判定することはできますか?
0920デフォルトの名無しさん
2010/05/23(日) 05:39:15Access DeniedになってしまうからCherryBoyなんだろ?
0921デフォルトの名無しさん
2010/05/23(日) 07:59:370922デフォルトの名無しさん
2010/05/23(日) 09:05:45ttp://msdn.microsoft.com/ja-jp/library/cc364874.aspx
0923デフォルトの名無しさん
2010/05/23(日) 09:34:55その座標のウインドウハンドルを取得してウインドウクラスを確認する
0924デフォルトの名無しさん
2010/05/23(日) 09:57:240925デフォルトの名無しさん
2010/05/23(日) 15:42:480926デフォルトの名無しさん
2010/05/23(日) 16:12:580927デフォルトの名無しさん
2010/05/23(日) 16:34:140928デフォルトの名無しさん
2010/05/23(日) 18:52:45myplugin.iniから読みたいんですが
dll内のコードから自身のdllのフルパス名を取得する方法があったら教えてください。
0929デフォルトの名無しさん
2010/05/23(日) 18:56:310930デフォルトの名無しさん
2010/05/23(日) 19:26:190931デフォルトの名無しさん
2010/05/25(火) 09:05:350932デフォルトの名無しさん
2010/05/25(火) 09:10:180933デフォルトの名無しさん
2010/05/25(火) 09:16:44#include <windows.h>
#include <stdio.h>
int WINAPI WinMain(HINSTANCE hInst,
HINSTANCE hPrevInst,
LPSTR lpCmdLine,
int nCmdShow)
{
AllocConsole();
freopen("CONOUT$", "w", stdout); //標準出力をコンソールにする
freopen("CONIN$", "r", stdin); //標準出力をコンソールにする
printf("Hello World!!\n");
return 0;
}
0934デフォルトの名無しさん
2010/05/25(火) 10:31:00#include <windows.h>
#include <stdio.h>
int WINAPI WinMain(HINSTANCE hInst,
HINSTANCE hPrevInst,
LPSTR lpCmdLine,
int nCmdShow)
{
AllocConsole();
freopen("CON", "w", stdout); //標準出力をコンソールにする
freopen("CON", "r", stdin); //標準出力をコンソールにする
printf("Hello World!!\n");
getchar();
return 0;
}
0935デフォルトの名無しさん
2010/05/25(火) 10:44:23それでやったら新規にウィンドウが出てきてそこに出力されました。
そうじゃなくてコマンドプロンプトから実行して新規ウィンドウを開かずにその
コマンドプロンプトのウィンドウに出力されてほしいんですが。
0936デフォルトの名無しさん
2010/05/25(火) 11:00:000937デフォルトの名無しさん
2010/05/25(火) 11:06:270938デフォルトの名無しさん
2010/05/25(火) 14:53:07ならK&RのHello Worldでいい
0939デフォルトの名無しさん
2010/05/25(火) 16:29:19だって自分でコンソールプロセス開いて書き出そうとしてるんだから、そうなるんじゃないの?
単純に今のコンソールで表示したかったら、
単に
略 {
printf("Hello World!!\n");
return 0;
}
でいいんじゃないの?
0940デフォルトの名無しさん
2010/05/25(火) 18:14:11サブシステムをコンソールにしとけでなきゃAttachConsole
0941デフォルトの名無しさん
2010/05/26(水) 07:49:330942デフォルトの名無しさん
2010/05/26(水) 09:45:58void main()
{
printf("Hello Hell!");
}
0944デフォルトの名無しさん
2010/05/26(水) 10:12:140945デフォルトの名無しさん
2010/05/26(水) 11:30:38まだC/C++自体書きなれていないと推測
0946デフォルトの名無しさん
2010/05/26(水) 11:43:11void main(){
printf("Hello HELL!");
}
って書くと思うよ
0947デフォルトの名無しさん
2010/05/26(水) 12:26:20char ほげ[];その後ほげに文字列を入れて、ウォッチでも入ってることは確認しています
そして
LRESULT Wm_CreateProc(HWND hwnd,LPCREATESTRUCT cs){
CreateWindow("BUTTON",ほげ,〜
と言う感じでコンパイルは通っているのですがボタンの名前にはほげの文字列は入っていません
なぜなのでしょうか?
0948デフォルトの名無しさん
2010/05/26(水) 16:55:53とりあえず全部のソース張れ
問題はお前が隠してる部分にある
0949デフォルトの名無しさん
2010/05/26(水) 17:01:44ほんとその通りでした
0950デフォルトの名無しさん
2010/05/26(水) 17:07:47timeSetEventって1ミリだから、
0951デフォルトの名無しさん
2010/05/26(水) 17:13:530952デフォルトの名無しさん
2010/05/26(水) 17:25:550953デフォルトの名無しさん
2010/05/26(水) 17:32:340954デフォルトの名無しさん
2010/05/26(水) 17:33:530955デフォルトの名無しさん
2010/05/26(水) 17:36:470956デフォルトの名無しさん
2010/05/26(水) 17:37:29オナニーの時間なんだよ
0957デフォルトの名無しさん
2010/05/26(水) 17:45:340958デフォルトの名無しさん
2010/05/26(水) 17:47:280959デフォルトの名無しさん
2010/05/26(水) 17:47:31今は煽るだけのゴミしかいなくなってるw
0960デフォルトの名無しさん
2010/05/26(水) 17:53:060961デフォルトの名無しさん
2010/05/26(水) 17:55:04ダイアログの位置を変えたいのですが上手く行きません
PropSheetProcのPSCB_PRECREATEで変更を試みたのですが、
サイズなどは変えることができますが位置は無反応なんです
詳しい人よろしくです(´・ω・`)
0962デフォルトの名無しさん
2010/05/26(水) 18:01:460963デフォルトの名無しさん
2010/05/26(水) 18:02:520964デフォルトの名無しさん
2010/05/26(水) 18:26:44勘違いしててシートのダイアログの位置を変えてたみたいです
申し訳ないです(´・ω・`)
0965デフォルトの名無しさん
2010/05/26(水) 18:35:110966デフォルトの名無しさん
2010/05/26(水) 18:41:26くわしく
0967デフォルトの名無しさん
2010/05/26(水) 18:42:460968デフォルトの名無しさん
2010/05/26(水) 18:46:410969デフォルトの名無しさん
2010/05/26(水) 18:51:42つかそのLIBのソースで呼び出す関数で決めたら
設定の手間が省けるだけだけど
0970デフォルトの名無しさん
2010/05/26(水) 19:04:030971デフォルトの名無しさん
2010/05/27(木) 04:17:22QueryPerformanceCounter
でぐぐれ
精度はハード依存
0972118
2010/05/27(木) 04:40:16それ以前に、キミの前の書き込みが三ヶ月以上前だと気付いています?
こんな過疎スレにレスする人が居るわけがない!と、思いませんでしたか?
0973デフォルトの名無しさん
2010/05/27(木) 07:42:250974デフォルトの名無しさん
2010/05/27(木) 14:35:17プログラム内でそのボタンを押すことは可能ですか?
0976デフォルトの名無しさん
2010/05/27(木) 14:44:500978デフォルトの名無しさん
2010/05/27(木) 15:07:360979デフォルトの名無しさん
2010/05/27(木) 15:11:520980デフォルトの名無しさん
2010/05/27(木) 15:20:140981デフォルトの名無しさん
2010/05/27(木) 15:21:300982デフォルトの名無しさん
2010/05/27(木) 15:22:08書けないならレスしないで下さい。ウザいだけです。
0983デフォルトの名無しさん
2010/05/27(木) 15:23:410984デフォルトの名無しさん
2010/05/27(木) 15:24:25何に登録するの?
0985デフォルトの名無しさん
2010/05/27(木) 15:31:340986デフォルトの名無しさん
2010/05/27(木) 15:38:260987デフォルトの名無しさん
2010/05/27(木) 15:40:55そしてここには点「マ」がある
フ点と・・・うわっなにをする!
0988デフォルトの名無しさん
2010/05/27(木) 17:46:36http://pc12.2ch.net/test/read.cgi/tech/1274949734/l50
0989デフォルトの名無しさん
2010/05/27(木) 17:50:36質問しても煽るだけのゴミしかいないし・・・
0990デフォルトの名無しさん
2010/05/27(木) 18:02:16煽る人が出るのは大抵、煽られる側に何らかの問題があります。
0991デフォルトの名無しさん
2010/05/27(木) 18:11:000992デフォルトの名無しさん
2010/05/27(木) 18:15:190993デフォルトの名無しさん
2010/05/27(木) 18:18:17赤松は「10年前は結局35億で済んだので〜」(ニヤニヤ)
【口蹄疫】平成22年4月22日衆議院農林水産委員会 自民党 江藤拓議員
http://www.nicovideo.jp/watch/sm10603447
【赤松口蹄疫】2010/5/20 衆・本会議 自由民主党 江藤拓議員
http://www.nicovideo.jp/watch/sm10781423
【口蹄疫】赤松「隠してないで土地を出せ」(本音が出ちゃった)
http://www.nicovideo.jp/watch/sm10843509
http://www.youtube.com/watch?v=4D5M41ZhBGE
0994デフォルトの名無しさん
2010/05/27(木) 18:42:260995デフォルトの名無しさん
2010/05/27(木) 18:46:51GJ!
乙
レス数が950を超えています。1000を超えると書き込みができなくなります。