Win32API質問箱 Build30

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

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

■注意
・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう
・日本語版MSDN Online Libraryは不完全です。英語版(http://msdn.microsoft.com)の利用推奨
・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう
・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで
2デフォルトの名無しさん:皇紀2665/04/01(金) 17:59:02
3デフォルトの名無しさん:皇紀2665/04/01(金) 17:59:12
-過去スレ
Build29: http://pc8.2ch.net/test/read.cgi/tech/1110281860/
Build28:http://pc5.2ch.net/test/read.cgi/tech/1108199304/
Build27:http://pc5.2ch.net/test/read.cgi/tech/1106103119/
Build26:http://pc5.2ch.net/test/read.cgi/tech/1104109858/
Build25:http://pc5.2ch.net/test/read.cgi/tech/1101393155/
Build24:ttp://pc5.2ch.net/test/read.cgi/tech/1098967135/
Build23:ttp://pc5.2ch.net/test/read.cgi/tech/1095534704/
Build22:ttp://pc5.2ch.net/test/read.cgi/tech/1092524669/
Build21:ttp://pc5.2ch.net/test/read.cgi/tech/1090422324/
Build20:ttp://pc5.2ch.net/test/read.cgi/tech/1088140233/
Build19:ttp://pc5.2ch.net/test/read.cgi/tech/1084697545/
Build18:ttp://pc5.2ch.net/test/read.cgi/tech/1081702990/
Build17:ttp://pc5.2ch.net/test/read.cgi/tech/1077470361/
Build16:ttp://pc2.2ch.net/test/read.cgi/tech/1073830065/
Build15:ttp://pc2.2ch.net/test/read.cgi/tech/1069339866/
Build14:ttp://pc5.2ch.net/tech/kako/1065/10653/1065328397.html
Build13:ttp://pc5.2ch.net/tech/kako/1059/10595/1059549320.html
Build12:ttp://pc5.2ch.net/tech/kako/1056/10560/1056033645.html
Build11:ttp://pc5.2ch.net/tech/kako/1052/10526/1052651750.html
Build10:ttp://pc5.2ch.net/tech/kako/1047/10478/1047819779.html
Build9:ttp://pc5.2ch.net/tech/kako/1044/10449/1044929160.html
Build8:ttp://pc5.2ch.net/tech/kako/1040/10409/1040964626.html
Build7:ttp://pc3.2ch.net/tech/kako/1036/10366/1036654893.html
Build6:ttp://pc3.2ch.net/tech/kako/1032/10325/1032548635.html
Build5:ttp://pc3.2ch.net/tech/kako/1028/10285/1028580373.html
Build4:ttp://pc3.2ch.net/tech/kako/1023/10233/1023361418.html
Build3:ttp://pc.2ch.net/tech/kako/1017/10170/1017072275.html
Build2:ttp://pc.2ch.net/tech/kako/1006/10067/1006783012.html
Build1:ttp://pc.2ch.net/tech/kako/991/991576947.html
(★は「いやーごめんなさい。」に巻き込まれた模様
4デフォルトの名無しさん:皇紀2665/04/01(金) 18:01:34
ん…>>2のMSDNに英語版のリンク書くの忘れた…。
5前スレ966:int 2ch =05/04/02(土) 01:51:00
前スレ966です。
いろいろとソースをいじっていて気づいたことがあります。
cmd.exeのExitProcessをフックできない、と書きましたが、
そもそもcmd.exeのプロセス内にフックDLLが注入されていないようです。

SetWindowsHookEx( WH_GETMESSAGE, GetMsgProc, hModule, 0);
↑でフックをセットして、フックDLLのDLL_PROCESS_ATTACHの所で、
GetCurrentProcessId( )で取得したプロセスIDをOutputDebugString( )で出力してみたのですが、
cmd.exeのプロセスIDが表示されませんでした。
cmd.exeだけ特殊なのでしょうか。

それとも、フックの仕方が間違っているのでしょうか。

ご助言いただけたらと思います。
よろしくお願いします。
6デフォルトの名無しさん:int 2ch =05/04/02(土) 01:58:53 BE:18900623-###
ホックって読んでました><
7デフォルトの名無しさん:int 2ch =05/04/02(土) 02:57:15
>>5
cmd.exeはGetMessage()を呼んでないと思うよ。
8デフォルトの名無しさん:int 2ch =05/04/02(土) 03:46:45
TCHAR(wchar)をcharに変換したい場合はどうすればいいのでしょうか?
9デフォルトの名無しさん:int 2ch =05/04/02(土) 04:01:13
>>8
その二つで検索してみれ
自分で解決するのも勉強だ
んだ
10デフォルトの名無しさん:int 2ch =05/04/02(土) 04:57:01
一応今は、
char *c = (char*)malloc(sizeof(TCHAR) * _tcslen(str) + 1);
sprintf((char*)c, "%S", str);
っていう風にやってるんですが、これより効率的な方法はあるんですか?
11デフォルトの名無しさん:int 2ch =05/04/02(土) 04:57:28
あ、sprintfのcharキャストは要らないですね。そこはミスです。
12デフォルトの名無しさん:int 2ch =05/04/02(土) 05:18:39
>>10
いったい何がやりたいの?
その2行のコード、無茶苦茶だぞ。
13デフォルトの名無しさん:int 2ch =05/04/02(土) 05:25:04
UnicodeからMBCSに変換したい、ということだとしたら、
そのようにTCHARや_tcslenを使うのは間違い。


14デフォルトの名無しさん:int 2ch =05/04/02(土) 05:31:49
WideCharToMultiByte
15デフォルトの名無しさん:int 2ch =05/04/02(土) 10:35:31
ListViewで アイコン一覧とコメント(名称) のリストを作成したく

LV_ITEM item;
item.mask= LVIF_TEXT | LVIF_IMAGE | LVIF_PARAM;


という感じでリストビューを表示したのはよいのですが、
項目が増えると、右にスクロール(水平スクロールバーが表示される)してしまいます。

下に項目が増えていく(垂直スクロールバーのみが表示される)ように設定するには
どうすればよいのでしょうか。教えてください
16デフォルトの名無しさん:int 2ch =05/04/02(土) 11:12:47
>>10
すごいコードだ。最近のこのスレでNo1じゃないのか
17デフォルトの名無しさん:int 2ch =05/04/02(土) 11:28:08
C++相談室で回答を得られましたので
http://pc8.2ch.net/test/read.cgi/tech/1106527792/n757-761
具体的な実装方法を模索していたところ以下のレスを発見しました。

908 名前:デフォルトの名無しさん :03/09/29 17:37
最初にくるメッセージが何であれ、
ATLのメッセージハンドリングっぽくすればいいだろうに。

...
wcex.lpfnWndProc = WndProc1st; //最初のコールバックを設定。
...
Mgr::Instance().SetData( ::GetCurrentThreadId(), this ); // データ一時保存
CreateWindowEx( ... ); // ウィンドウ作成
...

LRESULT CALLBACK WndProc1st( .... )
{
 void * p = Mgr::Instance().GetData( ::GetCurrentThreadId() ); // データ取得
 SetWindowLongPtr( hWnd, GWLP_USERDATA, (LONG_PTR)p ); // なんか処理

 // WndProc を本来のものに変更
 SetWindowLongPtr( hWnd, GWLP_WNDPROC, (LONG_PTR)WndProc );
 return WndProc( hWnd, uMsg, wParam, lParam );
}

LRESULT CALLBACK WndProc( .... )
{
... // なんか処理
};

Mgr::Instance().Get/SetData() で this を渡す方法よりも
よりシンプルに実現する方法、思いつかれる方はいますか?
18デフォルトの名無しさん:int 2ch =05/04/02(土) 11:48:23
外部を経由するしかないと思う
↑のコードは一般化された「外部を経由する」パターンだから
シンプルにしたとしても結局同じことになるよ
19デフォルトの名無しさん:int 2ch =05/04/02(土) 12:14:05
>>17
CREATESTRUCTのlpCreateParamsにthisを持たせるとか
20デフォルトの名無しさん:int 2ch =05/04/02(土) 12:34:42
関数の引数で、例えばMSGのポインタを扱いたい場合、
void hogea(MSG*);
と、
void hogeb(PMSG);
とやるのはどちらが推奨されるんでしょうか?
21デフォルトの名無しさん:int 2ch =05/04/02(土) 12:46:41
PMSG
22デフォルトの名無しさん:int 2ch =05/04/02(土) 13:09:50
しかしPCMSGとかはないから、そういうときは結局 const MSG *などと書かなければならない。
23デフォルトの名無しさん:int 2ch =05/04/02(土) 13:15:49
>>19
それはできない。
なぜならCreateWindowExを呼んだ後、ウィンドウプロシージャへ来る1番最初のメッセージは
WM_CREATEでもなくWM_NCCREATEでもなくWM_GETMINMAXINFOだから。
24デフォルトの名無しさん:2005/04/02(土) 18:21:06
なければ作ればいいじゃない。
25デフォルトの名無しさん:2005/04/02(土) 19:21:43
>>15 はスルーされているが、マルチ?
猫でも・・・の Windows SDK 109 章は見たのかな。
この質問見て、自分の UnLha のファイル・リストにアイコン付けたら、見当ての
ファイルが探しやすいかと気がついた。
26デフォルトの名無しさん:2005/04/02(土) 19:40:03
>>19
素敵な方法ありがとうございます
さっそく試してみましたら成功しました!

>>23
メインウインドウとコントロールの両方でWM_GETMINMAXINFOを捕捉してみましたが、
メインウインドウにしか投げられてきませんでした。

最大化・最小化に関係のないコントロールなら>>19さんの方法でも良いのかもしれないですね。

みなさんありがとうございます。
27デフォルトの名無しさん:2005/04/02(土) 23:09:10
hSmile = LoadImage((HINSTANCE)GetWindowLong(hWnd,GWL_HINSTANCE),
MAKEINTRESOURCE(IDB_SMILE),IMAGE_BITMAP,
0,0,LR_LOADFROMFILE);
上のようなソースをコンパイルしたところ。

error C2440: '=' : 'void *' から 'struct HBITMAP__ *' に変換することはできません。

というエラーメッセージが出てしまいます。
どこが駄目なのでしょうか?原因を教えてください。お願いします。
28デフォルトの名無しさん:2005/04/02(土) 23:20:15
>>27
C++ではvoid *から他のポインタ型への変換をするにはstatic_castが必要。
HANDLEはvoid *のtypedefだし、それ以外のハンドルは全てなんらかのポインタからのtypedef。
29デフォルトの名無しさん:2005/04/02(土) 23:20:25
hSmile = (HBITMAP*)LoadImage(
30デフォルトの名無しさん:2005/04/02(土) 23:20:55
motoi

hSmile = (HBITMAP)LoadImage(
31デフォルトの名無しさん:2005/04/02(土) 23:21:59
>>30
通りましたorz
32デフォルトの名無しさん:2005/04/02(土) 23:44:47
キャストとかの例題をテンプレに追加した方がいいんでないか?
スレが立つ度に見る気がする。
33デフォルトの名無しさん:2005/04/02(土) 23:56:05
メンバ関数がコールバックに使えません、とか?
3427:2005/04/03(日) 00:49:03
先ほどはありがとうございました。
すみません。。もうひとつ質問があります。
LRESULT CALLBACK WndProc(HWND hWnd,UINT msg,WPARAM wp,LPARAM lp){
HDC hdc;
PAINTSTRUCT ps;
static HDC hMemDC;
static HBITMAP hSmile;
static BITMAP bitmap;
switch(msg){
case WM_PAINT:
hdc = BeginPaint(hWnd,&ps);
hMemDC = CreateCompatibleDC(hdc);
hSmile = (HBITMAP)LoadImage((HINSTANCE)GetWindowLong(
hWnd,GWL_HINSTANCE),
MAKEINTRESOURCE(IDB_SMILE),IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
SelectObject(hMemDC,hSmile);
GetObject(hSmile,(int)sizeof(MAKEINTRESOURCE(IDB_SMILE)),&bitmap);
BitBlt(hdc,0,0,bitmap.bmWidth,bitmap.bmHeight,hMemDC,0,0,SRCCOPY);
DeleteDC(hMemDC);
DeleteObject(hSmile);
EndPaint(hWnd,&ps);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return (DefWindowProc(hWnd,msg,wp,lp));
}
return 0;
}
上記のソースはコンパイルは通るものの、目的の画像が描画されません。(クライアント領域には何も描画されませんでした。)
考えてみたのですがどこが悪いのか全然分かりません。どなたか原因を教えてください。お願いします。
35デフォルトの名無しさん:2005/04/03(日) 01:05:23
>>34
hSmileがNULLならその引数に問題あり
リソース関係の引数に矛盾や間違いがないか確かめて見たら?
36デフォルトの名無しさん:2005/04/03(日) 01:18:27
LR_LOADFROMFILE なのに MAKEINTRESOURCE(IDB_SMILE) なところとか。
37デフォルトの名無しさん:2005/04/03(日) 01:27:57
次は「描画する度にメモリ消費が増えます」と来ると予想。
3827:2005/04/03(日) 01:29:53
35さんの言うようにhSmileがNULLでした。
36さんの言うようにLR_LOADFROMFILEはおかしいと思ったので、LR_DEFAULTCOLORに変更。
hSmileがNULLではなくなったようですが、まだ画像が表示されませんorz
39デフォルトの名無しさん:2005/04/03(日) 01:34:24
>>38
頼むからAPIの戻り値を見て成功してるかどうか調べてから質問してくれ。
40デフォルトの名無しさん:2005/04/03(日) 01:43:26
>>38
LR_DEFAULTCOLOR?
LR_CREATEDIBSECTIONじゃなかった
4127:2005/04/03(日) 02:05:06
GetObject(hSmile,(int)sizeof(MAKEINTRESOURCE(IDB_SMILE)),&bitmap);

GetObject(hSmile,(int)sizeof(BITMAP),&bitmap);
にしたら描画ができました!
みなさん、ありがとうございました。
42デフォルトの名無しさん:2005/04/03(日) 13:19:32
タスクバーにでてるアプリの名前や情報を取得できるAPIってありますか?
タスクバーにでてるアプリを楽に切り替えできるようにしたいのですが。
43デフォルトの名無しさん:2005/04/03(日) 13:22:43
無いので頑張ってFindWindowExで潜っていく。
ついでにタスクバーの仕様はOSのバージョンで結構ころころ変わってる。
44デフォルトの名無しさん:2005/04/03(日) 16:37:42
スクリーンキーボードを作ろうとしているのですが、
SendInputを使用して実現しようとしています。

フラグにKEYEVENTF_UNICODEを用い、
どのキーボード配列でも入力可能にしたいのですが、
UNICODEを使用すると入力された文字が変換待ちの全角になってしまいます。
Windowsのコントロールパネル内のキーボードを英語既定にするとうまくいくのですが、、、
IMEが関係しているのでしょうか?
45デフォルトの名無しさん:2005/04/03(日) 18:06:35
特殊フォルダをドラッグ&ドロップ出来るようにするにはどうしたらいいのでしょうか?
DragAcceptFilesを使って試してみましたが出来ませんでした。
46デフォルトの名無しさん:2005/04/03(日) 18:44:09
>>42
EnumWindow
47デフォルトの名無しさん:2005/04/03(日) 18:50:05
48デフォルトの名無しさん:2005/04/03(日) 19:00:49
BitBlt系のラスタオペレーションコードの
数値の法則?はどうなっているのでしょうか。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/289.txt

例えば、http://www14.big.or.jp/~ken1/tech/tech9.htmlの
//↑のラスタオペレーションでNOT演算とSRCANDの作業が一度にできる
と書いてある0x220326の数値はどうやって出したのでしょうか。
49デフォルトの名無しさん:2005/04/03(日) 19:19:09
Ternary Raster Operations
5025:ListView+Icon:2005/04/03(日) 23:19:52
>>15
今まで ListBox だった dialog の pane を ListView に変えて、ファイル名の
表示を icon 付きに出来ました。
ListView の属性を、最初「小さなアイコン」で指定すると、item の追加で確かに
横へ追加されました。この属性を「レポート」にすると、縦のみの追加になりました。
また、「カラムにヘッダをつけない」にチェックを入れて、処理コードの方でも
何もしないと、内容の表示自体が出なかったのですが、処理コードの方には見だし
を挿入するようにしたら、期待通りになりました。(見だし挿入では、幅の指定は
ListView の RECT の幅から、垂直スクロールの幅を引いたものを使用。見だしの
文字列は表示はされないので、ダミー。)
選択された行は、(猫でも...にあるように)ListView_GetNextItem() で得られ
ました。
51デフォルトの名無しさん:2005/04/04(月) 00:32:17
Unix系OSのgettimeofdayをエミュレートするのに
ファイルタイムAPIを使うのはいかがなもんなんでしょう?

QueryPerformanceFrequencyがあんまり重すぎるんで
このあいだwebで見つけたGetSystemTimeAsFileTimeを使って
エミュレートする方法を採用したんですが。

今取り組んでるのがそこそこタイミング精度に厳しいソフトなんで
このままでいいのか元に戻した方がいいのか迷ってます。

ご教授よろしくお願いします。
52デフォルトの名無しさん:2005/04/04(月) 00:33:12
特定のファイル、フォルダに作成日時とか更新日時を任意にセットする方法はありますでしょうか・・
53デフォルトの名無しさん:2005/04/04(月) 01:27:55
メインウィンドウにダイアログをCHILDとして貼り付けているのですが
そのダイアログでWM_LBUTTONDOWNメッセージを取得することができません。
どなたか教えていただけると助かります。
54デフォルトの名無しさん:2005/04/04(月) 02:02:03
>>52
SetFileTimeという、まんまの名前のAPIがあるわけだが。
ちょっとは自分で調べたか?
55デフォルトの名無しさん:2005/04/04(月) 02:16:01
>>54
すみません
ありがとうございます
次からは気をつけます
56デフォルトの名無しさん:2005/04/04(月) 02:20:48
>52
)ノ SetFileTime
57デフォルトの名無しさん:2005/04/04(月) 02:38:06
>>53
その説明では、わかる人は神様しかいないと思うが...
まさか、ダイアログに貼り付けてあるコントロール部分
クリックしてるんじゃないだろね
58デフォルトの名無しさん:2005/04/04(月) 02:56:49
>57
すみません。説明不足でした。
貼り付けている子ダイアログにはコントロールは貼り付けておらず、
単純にダイアログの領域をクリックしたときのイベントを取得したいと思っています。
ダイアログの作成にはCreateDialog()を使用しています。

CreateDialog(hInst, (LPCTSTR)IDD_MAIN_CENTER, hWnd, (DLGPROC)DlgProc);
その後、

LRESULT CALLBACK DlgProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_LBUTTONDOWN:
// ここにイベントが入って来ない。
break;




といった状況です。
VCリソースエディタでの設定などがわるいのでしょうか・・・
ご教授いただけると大変助かります。。
59デフォルトの名無しさん:2005/04/04(月) 03:02:51
>>58
作成したダイアログのハンドルがNULLでないかいひょっとして
NULLであれば(LPCTSTR)IDD_MAIN_CENTERを
MAKEINTRESOURCE(IDD_MAIN_CENTER)にかえてごらん
6048:2005/04/04(月) 03:08:25
>>49
理解できました。キーワードをありがとうございました。
61デフォルトの名無しさん:2005/04/04(月) 03:08:35
>59
作成したダイアログはきちんとハンドルが取れていました。
MAKEINTRESOURCEで試してもイベントはとれませんでした。
WM_SIZEなどのイベントは取得できるのですが、、、
62デフォルトの名無しさん:2005/04/04(月) 03:35:55
>>61
ひょっとして、ShowWindowしてないんじゃありませんか?
ShowWindowしてないと多分こないと思いますけど
63デフォルトの名無しさん:2005/04/04(月) 03:42:45
>62
ShowWindowもしているのですが・・・
通常Windowに子ダイアログを貼り付けて
ダイアログのメッセージプロシージャで
WM_LBUTTONDOWNなどは何の問題もなく受け取れるのでしょうか?
64デフォルトの名無しさん:2005/04/04(月) 03:53:05
>>63
私の場合も同じ事やってますけど
バンバン来ますよメッセージ
CreateWinodowをオーバーラップウィンドウ作って
それにCreateDialogでインスタンスと親ウィンドウのハンドル渡してます
ダイアログのリソースはChildに設定してあとは何もチェックしてません
正常に動くサンプルを見つけてそれを改造するかたちにしたら
良いのではないでしょうか
私は行き詰った時は、そうしてます
お役に立ちそうもなくてすみません
ではおやすみなさい
65デフォルトの名無しさん:2005/04/04(月) 03:53:46
>62
度々申し訳ありません。
実は、このダイアログを作成しているクラスの基底クラスで
オーナードローをしているのですが、そこに原因がありました。。。
お騒がせしてすみません。
ご回答ありがとうございました。
6642:2005/04/04(月) 04:39:02
>>46
レスありがとうございます。
EnumWindowでウィンドウの列挙をやってみたのですが、この場合タスクバーに表示されてるアプリだけでなく、
タスクトレイにでてるようなアプリも列挙されますよね?
タスクマネージャの一つ目のタブに表示されてるアプリを取得したいのですが。

http://support.microsoft.com/kb/175030/JA/

 一般的なプログラミング タスクの 1 つに、実行中のすべての "アプリケーション" の列挙があります。
Windows タスク マネージャが良い例で、このプログラムでは 2 つの方法で "アプリケーション" の一覧が表示されます。
タスク マネージャの 1 つ目のタブには、デスクトップ上のすべての "アプリケーション ウィンドウ" の一覧が表示されます。
2 つ目のタブには、システム内のすべての "プロセス" の一覧が表示されます。この資料では、これらの両方のタスクを実行する方法について詳しく説明します。
 プロセスの列挙と、デスクトップ上のトップレベル ウィンドウの列挙では、トップレベル ウィンドウを列挙する方が比較的簡単です。
トップレベル ウィンドウを列挙するには、EnumWindows() 関数を使用します。



この資料にかいてある「デスクトップ上のすべての "アプリケーション ウィンドウ" の一覧」を表示したいのですが、
この資料ではその方法がEnumWindowを使用した方法で解説してあります。
すでにかいたようにEnumWindowを使用してやってみたのですが、タスクマネージャの一つ目のタブに表示さてる
アプリだけを取得することはできなかったんです。どうすればいいでしょうか
67デフォルトの名無しさん:2005/04/04(月) 07:42:56
>51
GetSystemTimeAsFileTimeは、変数の精度は100ns単位だけど、
実際は15ms単位くらいで増えていくことが多い(64回/秒しか変化しない)。
GetSystemTimeAdjustmentを呼べば、実際の精度が判る。
そうなら、timeBeginPeriod(1);して、timeGetTime()を呼んだ方がマシ。

QueryPerformanceCounterがあまりに重い、ってホント?
68デフォルトの名無しさん:2005/04/04(月) 10:11:39
for( hwnd = GetWindow( GetDesktopWindow(), GW_CHILD );
NULL != hwnd;
hwnd = GetWindow( hwnd, GW_HWNDNEXT ) ) {
if( IsWindow( hwnd ) && IsWindowVisible( hwnd ) &&
(style = GetWindowStyle( hwnd ) & WS_CAPTION) == WS_CAPTION && !(style & WS_POPUP) ) {
// ウィンドウハンドル列挙
}
}
69デフォルトの名無しさん:2005/04/04(月) 10:24:42
>>51
QueryPerformanceCounterは、デュアルCPUのマシンでも、高々1000クロックくらいだったよ。

これでも重いというのであれば、OSを介さずに、RDTSC命令を直に叩いて取得するのはどう?
ただし、CPUが複数ある場合、それぞれのCPUが別々にカウントしているので、
値がズレているので注意。

70デフォルトの名無しさん:2005/04/04(月) 10:28:12
////////////////////////////////////////////////////////////////////////////////////////////////////////////SpecialSample2
// 全てのトップレベルウインドウを列挙し、情報を表示
////////////////////////////////////////////////////////////////////////////////////////////////////////////SpecialSample2
//コールバック関数はWindowの数だけ呼び出されるので、
BOOL CALLBACK EnumWindowProc(HWND hWnd, LPARAM lParam)
{
if( IsWindowVisible( hWnd )
&& GetWindow(hWnd, GW_OWNER)==NULL){
charpszWindowText[256];
charpszClassName[256];
//Windowタイトル取得
GetWindowText(hWnd, pszWindowText, sizeof(pszWindowText));
//クラス名取得 シェルの場合は「Progman」となる。
GetClassName(hWnd, pszClassName, sizeof(pszClassName));

DWORD dwProcessId;
//WindowのプロセスIDとスレッドIDを得る
DWORD dwThreadId = GetWindowThreadProcessId(hWnd, &dwProcessId);

TRACE("pszWindowText = %s, pszClassName = %s dwProcessId = %d, dwThreadId = %d \n", pszWindowText, pszClassName, dwProcessId, dwThreadId);
}
return TRUE;
}
void CShareDlg::OnButton56()
{
//コールバック関数EnumWindowProcを指定してEnumWindowを行う。
EnumWindows(EnumWindowProc, NULL);
//処理の流れがすっ飛んでしまうのだ。

}

71デフォルトの名無しさん:2005/04/04(月) 10:30:01
////////////////////////////////////////////////////////////
// CTestDlg メッセージ ハンドラ
BOOL CTestDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// "バージョン情報..." メニュー項目をシステム
・・・
// TODO: 特別な初期化を行う時はこの場所に追加してください。
///////////////////////////////////////////
// 現在起動しているウィンドウの一覧を取得する
// 自分の親、つまり、トップウィンドウを取得し、
// その一覧をリストボックスに入れる
CWnd *pWnd = AfxGetMainWnd()->GetWindow( GW_HWNDFIRST);
CString strwork;
while( pWnd != NULL){
// オーナーがいない
// 表示してるウィンドウ
// タイトルがあるもの
if( pWnd->GetOwner() == NULL &&
pWnd->GetWindowTextLength() != 0 &&
pWnd->IsWindowVisible() == TRUE){
pWnd->GetWindowText( strwork);
m_lstWnd.AddString( strwork);
}
pWnd = pWnd->GetWindow( GW_HWNDNEXT);
}
return TRUE; // TRUE を返すとコントロールに設定・・・
}
72デフォルトの名無しさん:2005/04/04(月) 11:20:09
画像を表示する時、ウィンドウハンドルの部分をNULLにしてもいいのでしょうか。
hDC = GetDC(NULL);
hDCBack = CreateCompatibleDC(hDC);
ReleaseDC(NULL, hDC);
DeleteDC(hDCBack);
73デフォルトの名無しさん:2005/04/04(月) 11:23:44
GetDCの解説を読め。
74デフォルトの名無しさん:2005/04/04(月) 12:31:38
>>72 の質問を見て思い出したんですけど、GetDC() の場合はいいとして、
実際には NULL を指定できるのに、説明には書かれていないことってありますよね。
例えば、SetWindowText() の第2引数とか。
 (a) SetWindowText(hWnd, TEXT(""));
 (b) SetWindowText(hWnd, NULL);
厳密には (a) のように指定すべきだと思うのですが、(b) のようなコードもよく見かけます。
実は NULL を指定してもいいってどこかに書かれていたりしますか?
75デフォルトの名無しさん:2005/04/04(月) 13:10:21
7674:2005/04/04(月) 14:00:51
>>75
どうもありがとうございます。
んー、確かに「NULL を指定しても問題はなさそうだ」ということは言えると思うのですが、
解説として明記されている箇所が見つからない限り、まだちょっと不安は残りますよね。
サンプルコードを書いた人が使い方を誤っているという可能性もなくはないですし…。
まあ、そんなことを言い始めると突っ込みどころが多くてキリがないんですが…。
77デフォルトの名無しさん:2005/04/04(月) 14:17:25
タブページのタイトル上で右クリックされたとき、どのページのタイトルか判別する方法はあるでしょうか?
78デフォルトの名無しさん:2005/04/04(月) 14:25:13
それはごく普通のタブ切り替えアクションじゃないのか?
7951:2005/04/04(月) 15:34:21
>>67,69
情報ありがとうございます。なるほど15ms間隔じゃキツいですね。

それと、重いってのはどうやら勘違い(表現違い)でした。
重いのではなくて、タイムスケジューラが作動している間はずっと
CPU使用率が常に100%になってしまってます。(音楽系ソフトです)

実際そんなに忙しくはないけど忙しそうに見える…みたいな感じで。
これってつまり、GetSystemTimeAsFileTimeが10msくらいの間隔で
サボってたっていう証拠なんでしょうか?計測した方がよさそうですね。

ちなみに最終的にはunix系のgettimeofday()にあわせて
timeval構造体のtv_sec, tv_usec(どちらもlong型)に変換してます。
80デフォルトの名無しさん:2005/04/04(月) 19:42:25
このスレには勘違いをしている香具師がいるようです。

A 質問をろくに読まずにgoogleで調べてアドレス貼り付ける香具師 ←お手上げ

B 的確な答えだが、偉そうに書いている香具師 ←人間的に(ry

C 「調べろ」「勉強しなおしてこい」といった意味のないレス

D 俺みたいな香具師
81デフォルトの名無しさん:2005/04/04(月) 19:57:21
E 嘘テクを教える香具師

F 何でもかんでもAdvancedWindows嫁と言う香具師(俺


こんなとこで質問する暇があったらAdvancedWindows嫁よ
82デフォルトの名無しさん:2005/04/04(月) 20:08:14
何を期待してるんだ?
83デフォルトの名無しさん:2005/04/04(月) 20:08:51
>>82みたいなアフォ
84デフォルトの名無しさん:2005/04/04(月) 20:09:16
一家に一冊AdvancedWindows

 読者の声----AdvancedWindowsのおかげで競馬で連戦連勝です。
85デフォルトの名無しさん:2005/04/04(月) 21:02:20
AdvancedWindowsのおかげで彼女も出来てウハウハです
86デフォルトの名無しさん:2005/04/04(月) 22:43:27
AdvancedWindows のおかげで魔法少女になれました。
87デフォルトの名無しさん:2005/04/04(月) 22:48:56
AdvancedWindowsのおかげで包丁裁きが前よりも良くなりました。
88デフォルトの名無しさん:2005/04/04(月) 22:52:51 BE:67338645-#








             あ             っ             そ







89デフォルトの名無しさん:2005/04/04(月) 23:06:53
くまぼくじょ う
90デフォルトの名無しさん:2005/04/04(月) 23:35:30
Win98DOS窓上でexeclp()してmoreなどに出力を渡していたコマンドが
WinXPコマンドプロンプト上ではうまく動作しません。
コマンドプロンプトではどうしたらよいのでしょうか?
91デフォルトの名無しさん:2005/04/05(火) 03:15:17
>>2 のWin32 API入門を参考にしながら
MDIアプリケーションを作っているのですが
ステータスバーの実装のところでつまづきました。
子ウィンドウには問題なくステータスバーをつけることができるのですが、
親ウインドウにステータスバーをつけようとすると子ウィンドウが開かなくなります。
メッセージ処理部分の
case WM_SIZE:
SendMessage(hStatus , msg , wp , lp);
をコメントにするとステータスバーは再描画されませんが
子ウィンドウはでるようになるのでこの部分が悪さを
しているようなのですが、どうすればいいのかがわかりません。orz
92デフォルトの名無しさん:2005/04/05(火) 04:53:17
ステータスバーのウィンドハンドルって特殊なんだよたしか
93デフォルトの名無しさん:2005/04/05(火) 11:54:33
GetObjectの第一引数が、HDCであるバージョンのがありましたら教えてください。
94デフォルトの名無しさん:2005/04/05(火) 11:55:15
VerQueryValueで返ってくる言語コード(こういうやつ0x0401)を、
英語表記に置き換えたいのですが、対応表ってないのでしょうか?
結構調べてみましたが、みつかりません。
95デフォルトの名無しさん:2005/04/05(火) 12:38:58
【質問】
.NET Frameworkって普及してるの?
96デフォルトの名無しさん:2005/04/05(火) 12:40:25
>>93
何を期待してるのか知らんが、んなもんない。
9793:2005/04/05(火) 13:21:23
>>96
ありがとうございます。
グラフィック系Win32APIは、HDCに置き換えて作業するものが多いから、
グラフィック計ユーザー関数の引数に、HBITMAPではなくHDCで渡すものがあって、
HDCで出来たらなと思いました。
98デフォルトの名無しさん:2005/04/05(火) 13:36:28
>>95
Windows Updateで、よくわからずにインストールしちゃってる人は多数いる予感。

俺は一度、馬鹿上司に、勝手にインストールされたことあるよ。
むやみにWindows Updateするだけでも問題なのに、なぜそんなものを入れるか、と。
99デフォルトの名無しさん:2005/04/05(火) 13:46:12
素直に入れとけ
100デフォルトの名無しさん:2005/04/05(火) 15:08:52
>97
GetCurrentObject?
10193:2005/04/05(火) 17:32:23
>>100
それっぽいです。ありがとうございます。
102デフォルトの名無しさん:2005/04/05(火) 18:02:19
今ローカルにあるサーバと通信をするプログラムを作っているんですが、
ちょっと困ったことになりました。質問させてください。

Win32アプリからCreateProcess()でサーバプログラム(server.exeとしておきます)を
起動した場合と、コマンドラインからserver.exeなどと打って起動した場合で、
前者はレスポンスが早く、後者はレスポンスが遅くなってしまいます。

両者に何か違いはあるのでしょうか?原因がよく分かりません。。
通信の際に何か別の(OSの)プロセスを介しているから遅くなっているとか?
103デフォルトの名無しさん:2005/04/05(火) 18:14:39
違いねぇ…
環境変数?
あと、カレントディレクトリが変わるってのは?
104デフォルトの名無しさん:2005/04/05(火) 18:16:53
デバッグビルドを動かしてるとか?
さもなきゃ同名の別プログラムとか。
105102:2005/04/05(火) 18:33:55
お早い返事どうも。

>>103
レスポンスに影響しそうな環境変数というと何があるんでしょう?
カレントディレクトリはどちらも間違いなく同じ位置です。
そもそも、カレントディレクトリが間違っていれば
起動に失敗してしまうサーバですので。。

>>104
今確認してみましたが、これも間違いなく同じプログラムが動作してます。

実は言うと、そのサーバを起動するプログラム(MFC)は自分で作ったものではなくて
自分以外の人間が作ったものなんです。もしかしたら何か全く別の原因なのかも。
CreateProcess()の前に何か小細工でもしてあるんでしょうか?

ちなみに体感的に50msほどの遅れです。
106デフォルトの名無しさん:2005/04/05(火) 18:35:50
0.05秒の差を感知できるお前は天才

と言う事で
107デフォルトの名無しさん:2005/04/05(火) 18:39:18
プライオリティが高くなってるとか。
108デフォルトの名無しさん:2005/04/05(火) 18:41:27
以前、wcharをcharに変換する事で質問したものですが、
その時にWideCharToMultiByteを使えばいい事を
教えて頂いて早速試したのですが、WideCharToMultiByteを使った場合、
wcharでUCS2だったものが、SJISに変換されてしまいます。
wcharをUCS2のままcharに変換できないのでしょうか?
wcharから、上位8bit下位8bitずつとって自分でcharにする以外の方法はないのでしょうか?
109102:2005/04/05(火) 18:52:05
>>106
1桁間違えました。その10倍です。

>>107
タスクマネージャから優先度をリアルタイムに変えても同じみたいです。
他にも何かプライオリティを設定する方法があるんでしょうか?

今サーバにメッセージをダンプさせてみたところ、
サーバの処理速度が遅くなっているだけだったみたいです。
通信に関係ないとなるとますます謎です。
110デフォルトの名無しさん:2005/04/05(火) 19:03:42
>108
何のためにwcharをcharにする必要があるんだ?
UTF-16LE形式のままsendしたい、と言うような話なら、キャストして終わりだ。
111デフォルトの名無しさん:2005/04/05(火) 19:04:15
>109
何が500ms遅れるの?
112102:2005/04/05(火) 19:04:29
>>107
あ、やっぱり優先度関係が濃厚っぽいです。
ProcessWaker使ってプロセスツリーの状態を調べてみたところ
コマンドラインから起動させた場合は、エクスプローラの下で
プロセスが起動しているのに対して、MFCアプリからの起動だと
全く別で、よりrootに近い方のノードから派生してました。

しかも前者が優先度42に対して後者は8になってました。これが原因ぽいです。
エクスプローラの外側に優先度の高いプロセスを生成するってどうやるんでしょう?

質問のレベルが低くてすみません。
113102:2005/04/05(火) 19:05:39
>>111
音声処理サーバなので、出音が遅れます。説明不足でした。
114デフォルトの名無しさん:2005/04/05(火) 19:11:53
>>110

確かにcastで実現できたのですが、アスキー文字が0x00 0x20とかになってしまって・・・。
wcharをcharに変換するってかなりおかしな事なのでしょうか?
115デフォルトの名無しさん:2005/04/05(火) 19:13:53
では、そのcharのcharsetは何なんだ。Shift_JISでは不満なようだが。
116デフォルトの名無しさん:2005/04/05(火) 19:26:43
>>114
アスキー文字を1バイトで表現したいんなら、Shift_JISなりUTF-8なり
を使うべし。素人が変な符号化方式を設計しちゃダメだよ。

117デフォルトの名無しさん:2005/04/05(火) 19:28:03
>>115

wcharのままのcharsetがいいのですが。
単にwcharを1byteずつ扱いたいんです。
何か私がとんだ勘違いをしているのかな????
118117:2005/04/05(火) 19:31:37
あれ、wcharのエンコーディングはUCS-2ですよね?
119デフォルトの名無しさん:2005/04/05(火) 19:33:05
>>117
だから、char*にキャストすればいいやん。
アスキー文字が 0x20 0x00 みたいになることの何が不都合なんだ。

もうちょっと上のレベルで「なんでcharで扱いたいのか」を書いたほう
がいいよ。

120デフォルトの名無しさん:2005/04/05(火) 19:33:22
>>118
で、なぜ0x00 0x60になるのが疑問なんだ?
121デフォルトの名無しさん:2005/04/05(火) 19:35:46
違うよ。MSのwchar_tはUCS4のUTF-16。
その証拠にサロゲートペアがサポートされてる。
122117:2005/04/05(火) 19:41:47
すいません、渡しがいろいろと勘違いしてたようです。
顔洗って出直してきます。
123117:2005/04/05(火) 19:42:43
しかも、最後に誤字。鬱だ氏のうorz
124102:2005/04/05(火) 19:49:37
あ、プロセスツリーの位置もあんまし関係ないみたい。
特別なサーバプロセスとして起動させてるのかなとか思ってたけど…。
もし何か思い当たることがある方がいましたら、その時はお願いします。

もうすこし調べてみたいと思います。お騒がせしました。
125デフォルトの名無しさん:2005/04/05(火) 20:26:47
>>121
・・・おいおい、違うんじゃないか?
126121:2005/04/05(火) 20:31:58
どのあたりが?
127102:2005/04/05(火) 20:41:33
>>103
環境変数の違いでした!バカだなオレ・・・。
::SetEnvironmentVariable()の行を見落としてました。
ほんとに助かりました。このご恩は一生忘れません。
128デフォルトの名無しさん:2005/04/05(火) 20:58:12
サービスプログラムでユーザーの偽装を行った後に、ユーザの偽装を
行ったプロセスやスレッドが終了しても、対話的に操作をしている
人がユーザを偽装し続けるには、どうすれば良いですか?
129デフォルトの名無しさん:2005/04/05(火) 21:07:42
>>126
UCS-4もUTF-16も文字符号化形式の一つだから並び立つ事がない点じゃない?
UCS-4はUTF-32と互換性の高い32(31)ビット固定符号化形式。
サロゲートペアはUnicodeの基本BMP面以外をUTF-16で表現する時に使用する仕組み。
130121:2005/04/05(火) 21:44:46
UCS-4は符号化文字集合(CCS)としての意味も持ちますよ。
「4オクテット正規形式は、4オクテットの符号化文字集合として使用でき、
この場合に、UCS-4と呼ぶ」(JIS X0221-1 5.国際符号化文字集合の全体構造)
131デフォルトの名無しさん:2005/04/05(火) 23:06:38
>>130
君が本来、答えるべきはワイド文字のサポート領域ではなく、
WindowsAPIのUnicode版が返す文字だろう。
何しろ、このスレはWindowsAPIスレなのだから。
間違いを認めたくないのはわかるが潔い態度も必要だ。
132デフォルトの名無しさん:2005/04/05(火) 23:28:40
おまえがな
133デフォルトの名無しさん:2005/04/05(火) 23:34:29
「Windowsの事しか知らない厨房だから、それ以上の一般的なこと言われてもわかりません」
と素直に言え。
134デフォルトの名無しさん:2005/04/06(水) 02:04:02
>>121は消えろよ。これ以上荒らすな。
MSのwchar_tは、UCS-2LEだよ。cygwinのgnuは違う。
135118:2005/04/06(水) 02:15:41
やっぱ、UCS-2で合ってますよね?
結局のところどうなんでしょうか。
別にそんなに重要ではないのだけど。
136デフォルトの名無しさん:2005/04/06(水) 03:16:10
SDKの範疇じゃないかもしれんが
コントロールパネルのサウンド設定でWindowsの起動音とか指定できるが、
あれを独自アプリでやるにはどうすればいい?
137121:2005/04/06(水) 07:45:41
 だから、サロゲートペアが出てくる時点で、CCSがUCS-2なわけねーのよ。
UCS-2はBMPしか使えないんだから。
 まあ、サロゲートをサポートしない、NTとか9Xみたいなのは、
UCS-2といってもいいけど。
 LEっていう限定もなぁ。WindowsはIntelの石だけで動く訳じゃなかったし。
138デフォルトの名無しさん:2005/04/06(水) 08:41:44
>>117
UTF-8へ変換したいってことか?
139デフォルトの名無しさん:2005/04/06(水) 12:42:47
>>136
HKEY_CURRENT_USER\AppEvents\Schemes\Apps
140デフォルトの名無しさん:2005/04/06(水) 14:11:40
俺からみると121の言っていることが正しい。
WM_UNICHARの記述でも見れば?
141デフォルトの名無しさん:2005/04/06(水) 14:12:07
ポップアップメニューってクライアント領域でしかでないですよね。
これをどこでも表示させるようなことってできないんでしょうか。
他とかぶるとまずいんで右クリック+ホイールとか特別な入力で。
142デフォルトの名無しさん:2005/04/06(水) 14:26:16
ええー?desktopならどこでも出るよ?と思っていた
143デフォルトの名無しさん:2005/04/06(水) 14:27:19
TrackPopupMenuなら画面上の好きな位置にメニューだしまくれるが?
144デフォルトの名無しさん:2005/04/06(水) 14:33:29
グローバルなポップアップメニューって嫌だと思いつつ...
SetWindowsHookEx
145141:2005/04/06(水) 14:35:05
すいません。説明のしかたが悪かったです。
ポップアップメニューの場所じゃなくて、それをだす方法です。
右クリックでそのアプリのポップアップメニューだせるのはクライアント領域だけですよね。
それをクライアント領域だけでなく、例えばどこでも右クリック+ホイールで自分のポップアップメニューを
だすみたいな方法がないのかと思ったんです。
146デフォルトの名無しさん:2005/04/06(水) 14:39:18
>>145
144の続き...
ただしSetWindowsHookExを使いこなすスキルがないのならば、
RegisterHotKeyで妥協できない?
こっちの方が楽だから。
147141:2005/04/06(水) 15:15:18
>>144=146
丁寧にありがとうございます。
RegisterHotKeyのほうが簡単そうですね。Keyを使わないとならないのが痛いですが。
今いろいろと資料読んでます。
148デフォルトの名無しさん:2005/04/06(水) 15:22:02
ディスプレイをスタンバイ状態にする方法を教えて下さい
149デフォルトの名無しさん:2005/04/06(水) 15:23:16
>>146
必要なスキルや工数の少なさもさることながら、
自分がやりたい機能を十分に吟味すると、
RegisterHotKeyで十分な機能が得られるという結論に達することもあると思う。

というか、SetWindowsHookEx()による解決は大げさである場合が多いと思う。
150デフォルトの名無しさん:2005/04/06(水) 15:23:19
OSはみんなのためにあることをお忘れなく・・・
151デフォルトの名無しさん:2005/04/06(水) 15:23:23 BE:52406993-
ディスプレイケーブルを引っこ抜く
152148:2005/04/06(水) 15:26:07
すみませんそれは勘弁して下さい
153デフォルトの名無しさん:2005/04/06(水) 15:34:40 BE:34937892-
PCをシャットダウンする
154デフォルトの名無しさん:2005/04/06(水) 15:38:37
どうしても人を信用出来ない奴が一人いるようだな。
155デフォルトの名無しさん:2005/04/06(水) 15:50:02
>>148
WM_SYSCOMMANDでSC_MONITORPOWER
156148:2005/04/06(水) 15:54:29
>>155
ありがとうござます!
157デフォルトの名無しさん:2005/04/06(水) 16:12:06
うー嫌なアプリだ
158デフォルトの名無しさん:2005/04/06(水) 16:32:46
プライベートなクラスを持つダイアログボックスのウィンドウプロシージャの
WM_CREATE に初期化パラメータを渡す方法があれば教えてください。
つまり、CreateDialog() 系のAPIが内部で呼び出している CreateWindowEx() の
lpParam に NULL 以外の値を渡す方法を知りたいのです。
159デフォルトの名無しさん:2005/04/06(水) 16:33:59
>>158
CreateDialogParam()
160158:2005/04/06(水) 16:51:53
>>159
レスをありがとうございます。
でも、ダイアログボックスプロシージャの WM_INITDIALOG ではなく、
ウィンドウプロシージャの WM_CREATE に初期化パラメータを渡したいのです。
念のため CreateDialogParam() も試してみたのですが、渡されたのはやはり 0(NULL) でした…。
161デフォルトの名無しさん:2005/04/06(水) 17:01:23
>>160
なんでWM_INITDIALOGでは駄目なの?
162デフォルトの名無しさん:2005/04/06(水) 17:03:04
>>160
キミの環境ではDlgProcでWM_CREATEを取得できるのかね?
163デフォルトの名無しさん:2005/04/06(水) 17:36:11
Sleepって、コールしたスレッドだけとめるんだっけ?
164デフォルトの名無しさん:2005/04/06(水) 17:37:16
意味和漢ね
165デフォルトの名無しさん:2005/04/06(水) 17:43:02
Sleepして他のスレッドが止まったら大変だな。
166デフォルトの名無しさん:2005/04/06(水) 17:50:12
使いどころ難しくてつかえねぇじゃんw
167158:2005/04/06(水) 18:01:21
>>161
WM_INITDIALOG が絶対に駄目というわけではないのですが、
何らかのエラーが発生したときに正当な手段ではウィンドウの
作成拒否(WM_CREATE に -1 を返すような動作)ができないことと、
DlgProc と WndProc の間でローカルな変数が共有しづらいという
事情があって、できれば WM_CREATE で初期化を行いたいのです。

>>162
DlgProc ではなく、WndProc の中です。ダイアログテンプレートで
CLASS 指定を行い、ウィンドウプロシージャを定義した場合の話です。
一般に「ダイアログベースのウィンドウ」と言われているやつです。
168デフォルトの名無しさん:2005/04/06(水) 18:04:12
Sleepみたいな石鹸、花王石鹸ほわいと〜♪

コーヒーにはSleep
169デフォルトの名無しさん:2005/04/06(水) 18:18:42
>>167
だからDlgProcでしょ?

例えばCreateDialogParamなら、
HWND CreateDialogParam(
HINSTANCE hInstance, // アプリケーションのインスタンスのハンドル
LPCTSTR lpTemplateName, // ダイアログボックステンプレートを指定します
HWND hWndParent, // オーナーウィンドウのハンドル
DLGPROC lpDialogFunc, // ダイアログボックスプロシージャへのポインタ
LPARAM dwInitParam // 初期値
);

WndProcではない。
170デフォルトの名無しさん:2005/04/06(水) 18:30:42
>>169
>>167が言ってるのは、ダイアログエディタで、
クラス名指定(リソースIDにあらず)したダイアログリソースを使って、
CreateWindowEx()で上記クラス名を指定して作ったウィンドウのことじゃない?
171デフォルトの名無しさん:2005/04/06(水) 18:40:09
169の無知がばれた瞬間ですた
172デフォルトの名無しさん:2005/04/06(水) 18:40:15
ちがうだろ
173デフォルトの名無しさん:2005/04/06(水) 18:57:26
モーダルダイアログからモーダルダイアログを呼び出したいのですが、
どうしたらいいですか?
MFCにはDoModal()ってのがあるのですが、
SDKでは
174デフォルトの名無しさん:2005/04/06(水) 19:01:39
DialogBox()
175158:2005/04/06(水) 19:02:47
>>169
いえ、確かに CreateDialog〜() で指定するのは DlgProc ですが、
ウィンドウクラスを登録し、ダイアログテンプレートの CLASS にそのクラス名を
指定すると、自分で定義した WndProc が呼ばれるようになり、
そこに WM_CREATE も飛んでくるようになるのです。
ネット上で例を挙げるとするなら、↓ここに書かれている方法です。
ttp://wisdom.sakura.ne.jp/system/winapi/win32/win89.html
もしペゾルド本をお持ちでしたら、11.2.3 から書かれている方法です。

>>170
だいたいその通りなのですが…ダイアログの作成は CreateWindowEx() ではなく、
CreateDialog〜() でおこなっています。ひょっとして、CreateWindowEx() に
ダイアログリソースを指定してダイアログを作成することができるのですか?
もしできるのなら、それで >>158 はめでたく解決するのですが…。
176デフォルトの名無しさん:2005/04/06(水) 19:06:24
>>170
こんなことできんの?初耳なんだが。
177デフォルトの名無しさん:2005/04/06(水) 19:31:27
>>175
ちょっと質問なんだが、CreatePropertySheetPageでもいける?
178デフォルトの名無しさん:2005/04/06(水) 19:38:41
Old New thingで、Dialogの出来る仕組みが解説されてたから、
自前でテンプレートからコントロールをCreateWindowしてまわれればええんとちゃう?
179158:2005/04/06(水) 20:01:26
>>177
CreatePropertySheetPage() にも適用できますよ。
ていうか、質問者がいつの間にか回答者になってるし…w

>>178
なるほど、ありがとうございます。確かにそれならうまくいきそうですが…
私の中では最終手段という位置付けになりそうです。
180デフォルトの名無しさん:2005/04/06(水) 20:18:07
マイコンピュータなどの特殊オブジェクトのドラッグ&ドロップを受け付けるウインドウを作成するにはどうしたらよいのでしょうか?
181デフォルトの名無しさん:2005/04/06(水) 20:28:35
>>178
The Old New Thingだね。
でもそこの英語は読みづらくてかなわない。
182デフォルトの名無しさん:2005/04/06(水) 20:28:45
>>180
COMを使うことになるんだが、とりあえず RegisterDragDrop て関数を
調べてくれ。
183180:2005/04/06(水) 20:54:03
>>182
サンクス さっそく調べてみます。
184デフォルトの名無しさん:2005/04/07(木) 03:22:51
ダイアログリソースを抜き出して参考にしたいのですがそういうツールはありますか?
185デフォルトの名無しさん:2005/04/07(木) 03:51:47
たんに見るだけなら、VC++でも見れるよ。
実行ファイルを開くときにリソースを指定すれば、リソースを覗ける。
186デフォルトの名無しさん:2005/04/07(木) 10:29:05
どちらに質問してよいのかわからなかったので、とりあえずこちらで質問させてください。
180さんの質問に近いかもしれません。

エクスプローラ(またはデスクトップ上)の任意のファイルを
エクスプローラ(またはデスクトップ上)の任意フォルダに対して
ドラッグ&ドロップした時に、ある特定の拡張子のファイルしかコピー(移動)させないような制御を
行うことは可能でしょうか。

制御としては、ドラッグでコピー(移動)できないようにする他に、
マウスカーソルを変更するなどを実装させたいと思っています。

現在VC++でCOMを利用して開発をしているのですがシェル拡張でいけるかなと思いきや、
そう簡単に行うことができず・・・。
宜しくお願い致します。
187デフォルトの名無しさん:2005/04/07(木) 12:46:41
ファイルはエクスプローラ上にある訳ではないです
188186:2005/04/07(木) 12:53:18
>>187
あ、すみません。
お聞きしたいのは、エクスプローラからのイベント取得ではなく、
適当な場所においてあるファイルを、どこか別のフォルダに
ドラッグ&ドロップした時に何かイベントは取れないだろうか
というところです。
そのファイルとフォルダにはプログラムは介在していません。
わかりづらくてすみません。
189デフォルトの名無しさん:2005/04/07(木) 13:07:47
ドラッグ&ドロップした時にイベントは取れますよ
190デフォルトの名無しさん:2005/04/07(木) 13:10:44
191186:2005/04/07(木) 13:43:42
>>189
おおお!それはどのようなイベントが飛んでくるのでしょうか。

>>190
.NETには用意されているのですねー。
開発環境はVC++6.0なのですが、クラスライブラリは使用できるのでしょうか。
無知ですみません。


当初考えていたものはシェル拡張を使用する手法で、
ドロップハンドラを使用するものでした。
しかしこの場合、自作のアプリなどと連動させなければ(?)ハンドラが取れないため、
現在の所、うまくいかず頓挫しております。

常駐プログラムを増やしたくないので、プロセス監視などの方法は避けたいです。
192デフォルトの名無しさん:2005/04/07(木) 13:56:37
>>191
FindFirstChangeNotification
ReadDirectoryChangesW
をMSDNで参照してみれ
193デフォルトの名無しさん:2005/04/07(木) 15:54:46
ReadFile関数で

0123456
6543210

のtxtファイルを1バイトずつ読みこんで
配列に入れたいんですが
改行は'\n'で

0123456\n
6543210

15文字になるんですか?
194デフォルトの名無しさん:2005/04/07(木) 15:58:20
やってみれば?
195デフォルトの名無しさん:2005/04/07(木) 16:10:56
>>193
改行コードが\r\nかも知れない
196デフォルトの名無しさん:2005/04/07(木) 16:14:40
TreeCtrlの階層表示でチェックボックスをオンにする際に
ルート項目だけチェックボックスを表示しないことってできますか?
教えてください。
(TreeCtrl全体にチェックボックス属性がつくため無理?)
197デフォルトの名無しさん:2005/04/07(木) 16:52:32
>>196
オーナードロー
198デフォルトの名無しさん:2005/04/07(木) 17:52:48
コマンドラインの最大文字長を取得する方法はありますか?
199デフォルトの名無しさん:2005/04/07(木) 18:44:27
>>198
最初から1024じゃなかったけ?
200デフォルトの名無しさん:2005/04/07(木) 18:48:52
DialogBoxでつくられたモーダルダイアログを親として
モーダルダイアログをつくりたいのですが
普通にDialogBoxとやると固まります。
どうしたらいいですか?
201デフォルトの名無しさん:2005/04/07(木) 18:53:24
>>200
リソースエディタから、リストコントロール内のポップアップとかチャイルドとかのウィンドウ属性を変更する。・・はず
202デフォルトの名無しさん:2005/04/07(木) 18:57:27
>>199
MSDNでCreateProcess見たら、

> lpCommandLine
> The maximum length of this string is 32K characters.
> Windows�2000:��The maximum length of this string is MAX_PATH characters.

ってなってるけど、どうだろう。
203デフォルトの名無しさん:2005/04/07(木) 20:23:54
>>191
ドロップハンドラの何がいけないのかが分からない。
というかそれしか方法はないはずだが・・・
204デフォルトの名無しさん:2005/04/08(金) 03:23:51
>>203

>というかそれしか方法はないはずだが・・・

嘘を教えるなよ
205186=191:2005/04/08(金) 14:16:50
>>203
ドロップハンドラでいけるならそれに越したことはないのですが・・・。
何かそれについてご存知でしたら非常に申し訳ないのですが教えてください。

任意のファイルを任意のフォルダにドラッグ&ドロップした時に、特定の拡張子のもののみコピー・移動を許可する。
つまりはWindowsがつかんでいるイベントを横取りさせてくれよというイメージなんですが、それは流石に無理ですかねぇ・・・。
常駐プログラムは存在しないので、常時そのフォルダを監視するのは無理です。

何かご存知の方がいらっしゃいましたら、重ねて宜しくお願い致します。
206デフォルトの名無しさん:2005/04/08(金) 16:47:57
>>205
何を作ろうとしているのか良くわからないが...

例えば、エクスプローラからD&Dを実装した他のファイラへドラッグする、
もしくはその逆の場合、フックしたいということ?
207デフォルトの名無しさん:2005/04/08(金) 16:52:22
エクスプローラからエクスプローラのD&Dを奪いたいんだろ。
208デフォルトの名無しさん:2005/04/08(金) 16:56:49
対象を選ばずファイルのD&Dをフックしたいように読めたが。
209デフォルトの名無しさん:2005/04/08(金) 16:59:49
>>208
>任意のファイルを任意のフォルダに
これは普通、エクスプローラでの操作ってことじゃね?
別のファイラを想定しているようには読めないんだが。
210デフォルトの名無しさん:2005/04/08(金) 17:39:40
>>205
コマンドラインからコピーor移動汁!
211デフォルトの名無しさん:2005/04/08(金) 20:43:44
>>205
試してないがIDropTarget::DragEnterでDROPEFFECT_NONEを返せばいいのでは?
212デフォルトの名無しさん:2005/04/08(金) 20:53:48
RegisterDragDropをDLL INJECTIONで横取って
自分のプロキシを介するくらいしかないな。
213デフォルトの名無しさん:2005/04/08(金) 21:01:59
エクスプローラがRegisterDragDropを使っているとは限らな(ry
214SetErrorModeni:2005/04/08(金) 22:51:23
VB6でHDD→FDDへファイルコピーする際にエラーダイアログ抑制で

 lngOldErrorMode = SetErrorMode(SEM_FAILCRITICALERRORS)
 〜
 lngWin32apiResultCode = SetErrorMode(lngOldErrorMode)

をしています。
しかし書き込み中(ランプ点灯中)にFDを取り出すと自プロセスからではなく
システムからのエラーダイアログ(タイトルバー「Windows - ディスクが準備されていません」)がポップアップされます

疑問:
(1)マシンによっては、このエラーダイアログがポップアップされない。
  SetErrorModeとは別にエラーダイアログを抑制するレジストリ設定等があるのか?
(2)SetErrorModeをしても消すことができないエラーダイアログがあるのか?
(3)WinNT4.0ではそのエラーダイアログにフォーカスされているが、
  Win2kではフォーカスがあたらずどっかへとんでいる。その理由は?

過去ログを検索した結果似たような質問

http://pc.2ch.net/tech/kako/1023/10233/1023361418.html

がありますが解決に至っていないようです。

答えを知っている人、教えてください
215デフォルトの名無しさん:2005/04/08(金) 23:31:55
SetErrorModeはプロセスが起こしたエラーを制御する。
書き込み中にFDを取り出した場合はOSレベルのエラーになる。

マシンによって動作が違うのはOSのバージョンが違うからじゃないかな?
216デフォルトの名無しさん:2005/04/09(土) 08:02:06
>>214

できればプロセス及びシステムからのエラーダイアログをポップアップさせたくないのです。
(1)で記述したとおり、同じOSでもシステムからのエラーダイアログがポップアップされないマシンがあります。
システムからのエラーダイアログを抑制するレジストリ設定またはサービス設定などが存在するのでしょうか?
217デフォルトの名無しさん:2005/04/09(土) 09:19:54
もうすでにAPIの質問じゃなくなってるがな
218デフォルトの名無しさん:2005/04/09(土) 10:05:46
書き込み中にディスクを取り出さないなんて当たり前のことじゃないか。
そんなことする奴が悪い。
219デフォルトの名無しさん:2005/04/09(土) 10:21:19
書き込み中に取り出しボタン押したら感電する装置
220デフォルトの名無しさん:2005/04/09(土) 10:29:13
>>218
そう、当たり前のことなのです。わかりきっています

>>216
しかし(1)の現象を解決しなければ先へ進めません。
なぜ同じOSなのにシステムからのエラーダイアログがポップアップされたりされないのか?
その原因を究明し提示しなくてはなりません...orz


221デフォルトの名無しさん:2005/04/09(土) 10:31:27
仕様です。
222デフォルトの名無しさん:2005/04/09(土) 10:37:03
なんか、常駐してる別プロセスがいたんじゃないの?
223デフォルトの名無しさん:2005/04/09(土) 10:48:22
>>222

そうですね。その可能性も疑ってはいるのですが。
レジストリやサービスの内容をWebで検索してもシステムからのエラーダイアログを抑制するような設定は見つかりませんでしたし……。
しかし別プロセスがエラーダイアログを抑制するケースはありえるのでしょうか?

……APIの質問から離れてしまってごめんなさい
224デフォルトの名無しさん:2005/04/09(土) 11:38:33
>>223
VBのことはよく知らないけど、そのエラーメッセージってVBの
ランタイムが出してる可能性はないか?OSじゃなくてVBの話かも。
一応聞くけど、On Error〜とかでは処理できない?
225デフォルトの名無しさん:2005/04/09(土) 11:49:27
>>224

VBランタイムは関係ありません。というのもWeb検索したらVC++でも同現象が発生する書き込みを見つけたからです

http://forums.belution.com/ja/vc/000/133/05s.shtml

またシステムからのエラーダイアログはOn Error〜で処理できませんでした。
226デフォルトの名無しさん:2005/04/09(土) 13:10:23
>>225
つか、そこに対応策かいてあるじゃん。
227デフォルトの名無しさん:2005/04/09(土) 13:39:39
>>226

やりたいことが違います。
私はHDD→FDDへのファイルコピーの際、FDを取り出すとSetErrorModeしていてもシステムからエラーダイアログが
ポップアップされるのでそれを抑制したいのです

>>225
のURL先での書き込みではFD内のセットアップアプリを起動の際、FDを取り出すとシステムからエラーダイアログがポップアップされるという内容です。
その対応策としてFDの内容をHDにコピーしてそこから実行をかけるというものです
228デフォルトの名無しさん:2005/04/09(土) 13:45:08
>>227
Ejectボタンのない(SoftEjectな)FDDを使う。
229デフォルトの名無しさん:2005/04/09(土) 13:55:16
>>228

そうですね。そういうハード的な解決もありだと思います。
しかし「プログラムでは対応できません。だからハード的な解決しかありません」と
言えるような根拠がほしいのです。

>>214
>>216
で記述したように、同じOSでもシステムのエラーダイアログがポップアップされるされないがあるため、
その原因を究明しない限りハード的な解決方法への転換ができないのです
230デフォルトの名無しさん:2005/04/09(土) 14:47:02
>>229
同じOS、同じOSと繰り返すが、OSのバージョンとハードウェアを特定しないと話が進まないぞ。
231デフォルトの名無しさん:2005/04/09(土) 17:35:00
>>230

すみません。現象を確認したOSは
 Windows2000(SP4)
 WindowsNT4.0(SP6a)
です。

ひとつのOSに限りシステムからのエラーダイアログがポップアップされるされないではなく、
マシンによって異なるのです
232デフォルトの名無しさん:2005/04/09(土) 17:57:19

IShellView::CreateViewWindowで作成したウィンドウの閉じ方なんですが
ttp://www.codeproject.com/shell/explorer.asp
では、

PostMessage(CreateViewWindow()で得たハンドル, WM_QUIT, 0, 0);
IShellView::UIActivate(SVUIA_DEACTIVATE);
IShellView::DestroyViewWindow();
IShellViewインターフェースのRelease

とやってます。
UIActivateはSVUIA_DEACTIVATEの説明みて納豆君なのですが
WM_QUITをpostするということはMSDN探しても見つかりませんでした。
試しにWM_QUITをpostしないようにすると、メインウィンドウが閉じても
プロセスが終了しなくなったので必須なようです。
このことを説明してるところはないでしょうか?
233デフォルトの名無しさん:2005/04/09(土) 19:25:12
IEが現在表示しているアドレスはどのように取得すればいいですか?
234デフォルトの名無しさん:2005/04/09(土) 20:20:12
プロセスが起動されたときに、OSから通知を受けることは可能でしょうか?
235デフォルトの名無しさん:2005/04/09(土) 20:35:12
誰が?
236デフォルトの名無しさん:2005/04/09(土) 21:00:31
任意のプロセスが起動されたときに、
私のプログラムが通知を受けたいのです。
237デフォルトの名無しさん:2005/04/09(土) 21:03:15
二重起動の防止の方法って、
(1) FindWindow() でウィンドウの検索
(2) ミューテックスを作っておく
というのが定石だと思いますが、
ウィンドウを使わないプログラムでは (1) は使えない、
また、二重起動の防止のためだけにミューテックスを使いたくない。

ということで、自分の実行ファイル名と同じ名前のプログラムが
2つ以上起動されていれば、二重起動だ、という判定法のほうがありえるなー。
どうだろう?
238デフォルトの名無しさん:2005/04/09(土) 21:10:01
プロセスリストを取得してゴニョゴニョするより
余程Mutex使った方が無駄がないと思うがどうだろうか。
239デフォルトの名無しさん:2005/04/09(土) 21:12:06
>>238
ゴニョゴニョは起動時だけだが、
ミューテックスは終了するまで常時存在する。
起動を早くしたいのでなければ、ミューテックスのほうが無駄だろう。
240デフォルトの名無しさん:2005/04/09(土) 21:14:13
システムリソースを保持しつづけるからって無駄ことね。
それなら、どうぞ起動時にお調べください。
241デフォルトの名無しさん:2005/04/09(土) 21:16:26
起動時にプロセスリストを調べるコードが占めるメモリ

ミューテックス1個
242デフォルトの名無しさん:2005/04/09(土) 21:29:38
Mutexを使った多重起動防止には穴がなかったか。
243デフォルトの名無しさん:2005/04/09(土) 21:30:39
Mutexは名前がかち合う可能性がある
244デフォルトの名無しさん:2005/04/09(土) 21:31:27
同じ名前のMutexを生成するキラーアプリを常駐させておけば
嫌いなアプリの実行防止ができる
245デフォルトの名無しさん:2005/04/09(土) 21:38:17
多重起動防止無効化ツール = Mutex削除ツール(?)
http://www.sysinternals.com/ntw2k/freeware/handle.shtml

usage: handle [[-a] [-u] | [-c <handle>]] [-p <processname>|<pid>] [name]

-c Closes the specified handle (interpreted as a hexadecimal number).
You must specify the process by its PID.

246デフォルトの名無しさん:2005/04/09(土) 21:41:06
実行ファイル名の判定方法は、別パスにコピーしたものは判定できないってのがあるね。
ファイル名部分だけだと、名前がかち合う可能性があるかと。
247デフォルトの名無しさん:2005/04/09(土) 21:44:29
DLLの参照カウントを使うのがベストかな
248デフォルトの名無しさん:2005/04/09(土) 21:46:32
>>247
side-by-side
249デフォルトの名無しさん:2005/04/09(土) 21:51:39
ほぼ同時に複数のプロセスが起動された場合

プロセスAがMutex存在確認>存在しないので起動処理
プロセスBがMutex存在確認>存在しないので起動処理

プロセスAが起動処理でCreateMutex
プロセスBが起動処理でCreateMutex

という順番で処理されてしまうと同時起動してしまうとかだったような気がするんだが。
250デフォルトの名無しさん:2005/04/09(土) 21:52:57
>>249
おまえはCreateMutexの戻り値を調べないのか
251デフォルトの名無しさん:2005/04/09(土) 21:56:08
>>249
それ、OpenMutexを使ったいわゆる間違った多重起動判定方法。
正しくはいきなりCreateMutex使って、戻り値がERROR_ALREADY_EXISTSかを判定する。
252251:2005/04/09(土) 21:57:09
戻り値じゃなくて、GetLastErrorがERROR_ALREADY_EXISTSの間違い。orz
253デフォルトの名無しさん:2005/04/09(土) 22:52:12
>>214
2000から、フォーカスが勝手に移動しないように、仕様が変更されています。
254デフォルトの名無しさん:2005/04/09(土) 23:11:26
>>249
pugya-
255デフォルトの名無しさん:2005/04/10(日) 00:38:16
処理順がわかりません。

WM_CREATEの処理で
TrackPopupMenu(hMenu, TPM_TOPALIGN | TPM_LEFTALIGN,
curPos.x, curPos.y, 0, hWnd, NULL);
PostMessage(hWnd, WM_CLOSE, 0, 0);
これで"WM_COMMANDの処理->終了"と思っていたんですが
WM_COMMANDの処理はされず終了してしまいます。

TrackPopupMenu
SendMessage(hWnd, WM_CLOSE , 0, 0);
だと"WM_COMMANDの処理->終了"となるんですがなぜそうなるのかわかりません。

TrackPopupMenu
PostMessage(hWnd, WM_CLOSE, 0, 0);
PostMessage(hWnd, WM_USER + 1, 0, 0);
だと"WM_USER + 1->終了"になり

TrackPopupMenu
PostMessage(hWnd, WM_CLOSE, 0, 0);
MessageBox(NULL, "10", "情報", MB_OK);
PostMessage(hWnd, WM_USER + 1, 0, 0);
だと"終了"になります。
256デフォルトの名無しさん:2005/04/10(日) 01:13:11
>>253

確かにそうですね。Win2kになると「ウィンドウがフォアグラウンドに来ないで、タスクバー上で点滅」

http://homepage2.nifty.com/winfaq/w2k/hints.html

したりなどウィンドウ制御が変更されていますね
257デフォルトの名無しさん:2005/04/10(日) 01:26:02
「キラーアプリ」という言葉の使い方を間違っている香具師がいる件について
258デフォルトの名無しさん:2005/04/10(日) 02:00:11
仮想キーコードの値から名前を取得するAPIはないでしょうか?
259デフォルトの名無しさん:2005/04/10(日) 02:03:42
>>255
2000で試した結果。

1番目
WM_COMMANDが来た後WM_CLOSE。
TrackPopupMenuはWM_COMMANDをpostするようだ。
で、その後WM_CLOSEをpostしたのだから
メッセージキューに入れられた順に取り出されてるので予定通り。

2番目
WM_CLOSEの処理のみ。CreateWindowが失敗する。
WM_CLOSEがsendされその先でDestroyWindow()されウィンドウ破棄。
キュー中の自分宛メッセージ(WM_COMMAND)は破棄される。

3番目
WM_COMMAND->WM_CLOSE
WM_CLOSEでDestroyWindowされるため、その後のWM_USER + 1は破棄された。

4番目
WM_COMMAND->WM_CLOSE->CreateWindowが失敗する。
TrackPopupMenuがWM_COMMANDをpostし、WM_CLOSEをpost。
MessageBox中のメッセージループがWM_COMMANDを拾い処理。
さらにWM_CLOSEを拾いDestroyWindow。
親が破棄されるのでメッセージボックスも破棄される。
(TrackPopupMenuが返ってからWM_CLOSEが来るまで一瞬なので、メッセージボックスがチラっと見えるだけ)
260255:2005/04/10(日) 03:39:05
MessageBoxの中のメッセージループがWM_CLOSEなどを処理していることに気が付きませんでした。
MessageBoxを使っていたのが悪かったみたいです。
ありがとうございました。
261232:2005/04/10(日) 14:11:41
理由がわかりました。
IShellViewのDestroyViewWindow()をするとpostしたWM_QUITがメッセージキューからなくなり
メッセージループが終わらないためプロセスが終了しなかったようです。
DestroyViewWindow()したあとにPostQuitMessageを入れることでちゃんと終了するようになったけど
なぜDestroyViewWindow()がキュー中のWM_QUITを消すのか
このことが書かれた資料は見つかりません・・・
262デフォルトの名無しさん:2005/04/10(日) 17:05:50
他のプロセスのソケット通信を盗むにはどうすればいいですか?
263デフォルトの名無しさん:2005/04/10(日) 17:18:14
RAWソケットをフックするドライバ書く
お前には無理
264デフォルトの名無しさん:2005/04/10(日) 17:29:30
>>262
DLLをどの順で探すか、ということを勉強すれば、やり方がおのずとわかる。
265デフォルトの名無しさん:2005/04/10(日) 17:55:58
なんかぐぐっても出てこないんで質問します
ZeroMemory(&obj,sizeof(obj);
って何する関数なんですか?
どっか載ってるサイトがあったらお願いします
266デフォルトの名無しさん:2005/04/10(日) 17:59:00
すみません、ヘルプ見たら載ってましたorz
267デフォルトの名無しさん:2005/04/10(日) 18:11:55
>>265-266
関数名と引数を見れば一目瞭然だろうが
268デフォルトの名無しさん:2005/04/10(日) 18:15:15
知ってるからそう思うだけだ
269デフォルトの名無しさん:2005/04/10(日) 18:19:55
試してみれば一目瞭然だな。
270デフォルトの名無しさん:2005/04/10(日) 19:02:23
bzeroのほうがわかりやすいよね。
271デフォルトの名無しさん:2005/04/10(日) 19:10:05
いや、全然。
272デフォルトの名無しさん:2005/04/10(日) 19:41:09
>>265
http://msdn.microsoft.com/library/en-us/memory/base/zeromemory.asp

日本語のページだけ検索しても2番目に出てくるが。
http://www.google.co.jp/search?hl=ja&q=ZeroMemory&lr=lang_ja

実はmemsetを呼ぶただのマクロ。
ちゃんとKernel32.dllにRtlZeroMemoryとして実体もあるけど。
273デフォルトの名無しさん:2005/04/10(日) 20:12:26
274デフォルトの名無しさん:2005/04/10(日) 20:36:03
○| ̄|_
275デフォルトの名無しさん:2005/04/10(日) 20:56:35
誘導されてやってきました

今ファイラー作ってるんですが右クリックを押したままドロップすると
表示されるコンテキストメニューはどうやったら表示できるんですか
276デフォルトの名無しさん:2005/04/11(月) 03:49:29
277デフォルトの名無しさん:2005/04/11(月) 04:58:37
>>276
何がしたい?
278デフォルトの名無しさん:2005/04/11(月) 08:45:49
StretchDIBitsってやつで、ビットマップを印刷してますが、真っ黒になるときがあります。
対処方法はありますか?
279デフォルトの名無しさん:2005/04/11(月) 08:54:05
>>278
バグを修正する
280278:2005/04/11(月) 09:00:01
1台のプリンタだけなんで、バグじゃないと思うんですが。
ところで、画面のビットマップを取るとき、BitBltだと同じカラーですが、
減色するにはどうしたら良いですか?
281デフォルトの名無しさん:2005/04/11(月) 09:37:27
自分で減色汁。
282デフォルトの名無しさん:2005/04/11(月) 09:42:37
279=281=書くまでも無いことをわざわざ書くのはナゼ?
283デフォルトの名無しさん:2005/04/11(月) 09:43:22
>>282
ここもDirectX初心者スレみたくなってきたな
284デフォルトの名無しさん:2005/04/11(月) 10:40:59
>>282
オマエモナー
285デフォルトの名無しさん:2005/04/11(月) 16:37:27
キーボードの状態を取得する関数でGetKeyBoardState関数がありますが、これはこれを呼び出したスレッドでしか
監視しないんですね。
自スレッドにフォーカスが無い状態でのキー操作も監視したいのですが、メッセージをフックするいわゆる「通知型」ではなく、
自分で任意のタイミングで検出しに行く方法を取りたいのですが、GetKeyBoardStateの代わりに代用できるAPIって、やっぱりないですか?
286デフォルトの名無しさん:2005/04/11(月) 16:50:33
フックをかけるDLLを作成し、
任意のタイミングでDLLに問い合わせを行えばいいのでは?
287デフォルトの名無しさん:2005/04/11(月) 17:56:59
>>262
> 他のプロセスのソケット通信を盗むにはどうすればいいですか?
WinPcap ライブラリを使う。
288デフォルトの名無しさん:2005/04/11(月) 18:22:45
>>285
よく知らんのでキーワードだけ。
GetAsyncKeyState
AttachThreadInput
とかどう?
289285:2005/04/11(月) 18:47:38
説明が不足していた様ですので。。。
たとえば、ゲームパッドなんかだと、似たような処理をする場合フォーカスとか関係なしに判定できるじゃないですか。
ただ、GetKeyBoardStateだと自分にフォーカスが無いとキーを押してもシカト?っていうのを、何とかしたかった、という。
286さんのやり方は確実そうなのでそうしてみます。
回答していただいた方ありがとう。
290デフォルトの名無しさん:2005/04/11(月) 18:50:56
IDirectInput
291デフォルトの名無しさん:2005/04/11(月) 21:16:34
ほかのアプリのウィンドウをアクティブにする方法ってやっぱりSetWindowPosが一番適当なのでしょうか?
いろいろフラグを入れ替えてやってみてるのですがうまくアクティブになりません・・・。
292デフォルトの名無しさん:2005/04/11(月) 21:18:25
SetForegroundWindow
293デフォルトの名無しさん:2005/04/11(月) 21:39:44
Microsoft的に、勝手に(ユーザの入力なく)他のウインドウがアクティブになる
のは困る、ということで、SetForegroundWindowの仕様が変更されて、
前面には出なくなったんだよね、たしか。
294デフォルトの名無しさん:2005/04/11(月) 23:45:07
CryptAPIの使い方で悩んでいます。

ttp://nienie.com/~masapico/api_CryptSignHash.html
↑ここを参考に、というかそのままで実験しているのですが、
CryptSignHash()後に、SignLenを見ると64という値が戻ってきます。
MD5は128BITなので16が戻ってくるのではないかと思うのですが。
何か勘違いしているでしょうか?

ただ単純にある文字列のハッシュを取得したいだけです。
295デフォルトの名無しさん:2005/04/12(火) 00:11:40
>>294
CryptAPIは使ったことないのでそのサンプルを見て想像で答えるけど、
MD5は署名の入力のハッシュのアルゴリズムであって、署名のアルゴリ
ズムはRSAじゃないの?
296デフォルトの名無しさん:2005/04/12(火) 00:23:05
>>293
抜け道があるよ。

ずーっと何も入力しないでアイドルが続いた場合には、
SetForegroundWindowした時に、従来のように前面に出るようになってる。
それを悪用する。

アイドル時間の設定を0秒にしてから、SetForegroundWindowを呼ぶ。
んで、すぐに設定を元の値に戻す。

ただ、これでもうまくいかないこともあったような・・・。

具体的なコードは、以前に書いたものをなくしてしまったので、出せなくてごめん。
297デフォルトの名無しさん:2005/04/12(火) 00:49:35
>>296
AttachThreadInput
298デフォルトの名無しさん:2005/04/12(火) 08:17:05
ファイルのパスからファイルのディスク上のサイズ(Exploreで右クリックしてプロパティで表示される値)を取得するにはどうすればいいですか?
299デフォルトの名無しさん:2005/04/12(火) 09:19:31
>>298
GetFileSize
300デフォルトの名無しさん:2005/04/12(火) 09:55:34
他スレでもきいたのですが、ここで聞いたほうがいいとのことで
このスレで聞きます。
非アクティブ状態のメインウインドウで、ジョイパッド
の状態を取得したいのですが、わかりません。
ちなみにアクティブ状態ならジョイパッドを使用できる
状況にあります。
301デフォルトの名無しさん:2005/04/12(火) 09:58:51
DirectInput使えば?
302デフォルトの名無しさん:2005/04/12(火) 10:00:28
>>299
>298は「ディスク上のサイズ」と言ってるが。
303デフォルトの名無しさん:2005/04/12(火) 10:55:49
ファイルサイズを超えるクラスタサイズの倍数とかいわないようにね。
圧縮ファイルシステムを使った場合に当てはまらないから。
304デフォルトの名無しさん:2005/04/12(火) 11:15:25
すまんかった。使ったこと無いけどGetCompressedFileSizeでどうだい?
305デフォルトの名無しさん:2005/04/12(火) 11:15:27
一発で求めるAPIあるのかな・・・

GetFileAttributes辺りで圧縮されてるかどうか調べて、
GetCompressedFileSizeじゃダメかな?

通常のファイルのクラスタサイズ云々は、
SetupQuerySpaceRequiredOnDriveで何とか
306デフォルトの名無しさん:2005/04/12(火) 12:27:52
スパースファイルもあるでよ
307デフォルトの名無しさん:2005/04/12(火) 13:05:53
>>294
ただのMD5ハッシュなら、CryptCreateHash して CryptHashData でデータを追加して、
CryptGetHashParamでハッシュ値を取得、CryptDestroyHash, だよ。
308291:2005/04/12(火) 14:01:20
>>292,293,296,297
みなんさんレスありがとうございます。
SetForegroundWindowつかてみるとなぜか普通にアクティブになりました・・・。
以前ためしたときはうまくいかなかったのですが、なぜかできちゃいました。
でもヘルプよむと

>この旧バージョンからの変更により、アプリケーションは、ユーザーが他のウィンドウで作業しているときに
強制的にフォアグラウンドウィンドウを設定することはできなくなりました。

ってかかれてたんでこれのことでしょうか。なにか入力などをしているときには強制的にアクティブにできないということでしょうか。
これからまた不具合でてきそうですが・・。
309302:2005/04/12(火) 14:01:26
私も興味を覚えて調べてみたけど適当なAPIはないねぇ。
つーか、こうなると>298がそれを知りたい動機次第かな。
310デフォルトの名無しさん:2005/04/12(火) 14:05:51
>>308
どういう条件かはヘルプの解説に書いてるだろ。
回避策はGetForegroundWindowでぐぐれば出てくる。
311デフォルトの名無しさん:2005/04/12(火) 16:33:29
すいません、他で質問したんですがなかなかレス頂けないので失礼します。

リソースエディタで作ったダイアログの枠の大きさを
その中に配置されたコントロール群より小さくしたとき、
スクロールバーでスクロールさせてきちんと全体を見渡せるようにしたいんですが、
ダイアログのプロパティでスクロールバーを付けてるのに上手く機能しません。
スクロールバーをドラッグしても、離した瞬間に上とか左側に戻ってしまいます。

ウィンドウスタイルで何か指定する必要があるのか、
それともなにか手動でメッセージを送るとかする必要があるでしょうか?
どうしたらよいか教えてください。
312デフォルトの名無しさん:2005/04/12(火) 16:38:08
>>311
スクロールバーを動かしたときスクロールするコードを自分で書かなきゃだめよ。
313デフォルトの名無しさん:2005/04/12(火) 16:48:55
>>312
マジですか!?それは面倒ですね…
MFCのウィザードとか使った場合はそのへんは自動化してくれたりするんでしょうか?
SDK卒業した方がいいのだろうか…
ありがとうございました。。
314311:2005/04/12(火) 16:53:17
>>312
あ、でもコントロールとして中に配置したりしたスクロールバーじゃなくて、
ダイアログ自体のスタイルとしてのスクロールバーなんですが、
それでも、ですか?
315デフォルトの名無しさん:2005/04/12(火) 16:58:33
>>314
そう
316311:2005/04/12(火) 17:00:25
そうですか、わかりました。ありがとうございました。
317294:2005/04/12(火) 17:46:10
CryptAPIの件アドバイス有り難うございました。
アドバイスから色々試行錯誤して何とかMD5ハッシュらしき物は得られるようになりました。
しかし、Linux の md5sum が出力したHASHと自作のプログラムのHASH値が異なります。
再度アドバイス頂けないでしょうか?


HCRYPTPROV prov;
HCRYPTHASH hash;
BOOL bSuccess;
BYTE rgbResult[16];
char str[100];
int i;
DWORD cbResult = sizeof(rgbResult);
bSuccess = CryptAcquireContext(&prov, NULL, NULL, PROV_RSA_FULL, 0 );
bSuccess = CryptCreateHash(prov, CALG_MD5, NULL, 0, &hash);
memset( &str, 0, 100 );
sscanf( "abcdef", "%s",&str );
bSuccess = CryptHashData(hash, str, sizeof( str ), 0);
bSuccess = CryptGetHashParam(hash, HP_HASHVAL, rgbResult, &cbResult, 0);
if( bSuccess ){
for(i=0;i<cbResult;i++){
wsprintf( &str[i*2],"%02x",rgbResult[i] );
}
printf("%s\n", str );
}
CryptDestroyHash(hash);
318デフォルトの名無しさん:2005/04/12(火) 17:50:09
>>317
どんなふうに異なるんかな? 実例をどうぞ。

319デフォルトの名無しさん:2005/04/12(火) 17:54:26
つか、MD5ぐらいならRFCのソース丸パクリでいいじゃないか。
320デフォルトの名無しさん:2005/04/12(火) 18:02:58
linux の方でも100バイトのファイル作ってますか?
そううじゃないなら、
bSuccess = CryptHashData(hash, str, sizeof( str ), 0);

bSuccess = CryptHashData(hash, str, strlen( str ), 0);
に変えてみたら?
321294:2005/04/12(火) 18:18:37
>>320

> bSuccess = CryptHashData(hash, str, strlen( str ), 0);
>に変えてみたら?

ありがとうできました!!
文字列もsizeofで良いと思っていたので全く疑ってませんでした。
とても勉強になりました。
322デフォルトの名無しさん:2005/04/12(火) 19:02:30
>>321
工エエェェ(´д`)ェェエエ工
323デフォルトの名無しさん:2005/04/12(火) 19:18:14
文字列とバイナリデータの区別が付いていなかったのか……
324デフォルトの名無しさん:2005/04/12(火) 22:00:20
Eドライブのファイルを全部消す。
とかが出来るAPIとかクラスってないんですかね?
ファイル名指定するのしか見当たらないんですけど。
単純なようで複雑な処理が必要なのかな。
325デフォルトの名無しさん:2005/04/12(火) 22:10:19
FindFirstFileとFindNextFileで回せ。
326デフォルトの名無しさん:2005/04/12(火) 22:12:41
ShellExecute(NULL, TEXT("deltree /y e:\\"ってやれば楽チン。
クイックフォーマットでもいいと思う。
327デフォルトの名無しさん:2005/04/12(火) 22:16:49
100回死(ry
328デフォルトの名無しさん:2005/04/12(火) 22:34:16
そうかCreateProcessじゃないとコマンドプロンプトのウィンドウが隠せないな。
NT系にはDeltreeが無いかわりにRDに/Sを付けると同じことになるのか。

いや、そういう問題じゃないってのはわかっているよ。
329デフォルトの名無しさん:2005/04/12(火) 22:59:00
ShellExecuteExでも出来るぽ
330デフォルトの名無しさん:2005/04/12(火) 23:18:28
fread/fwriteで読み書きできるファイルサイズの上限ってあるのでしょうか?
また、上限はOS(XPと2000で違うとか)に依存しますか?
331デフォルトの名無しさん:2005/04/12(火) 23:20:57
2つのプロセス間でSendMessageを使って構造体を
渡すことってできますか?
332デフォルトの名無しさん:2005/04/12(火) 23:33:51
>>324
シェル系ので出来ないかなあ。
今、調べられないから完全に思いつきまで。
333デフォルトの名無しさん:2005/04/12(火) 23:36:22
>>331
WM_COPYDATA
334デフォルトの名無しさん:2005/04/13(水) 00:00:17
>>330
ある。ファイルシステムと開発環境に依存する。
OS依存はないと思う。
335330:2005/04/13(水) 00:24:48
>>334
BCCとNTFS5の場合には2TバイトまでOKという理解で良いでしょうか?
336デフォルトの名無しさん:2005/04/13(水) 01:05:52
>>324
SHFileOperation で出来そうな気がする。
ワイルドカードも使えるみたいだし。
337デフォルトの名無しさん:2005/04/13(水) 01:07:03
>>335
ヘッダ見てみたけど、BCC 5.5.1だったら、2GBまでじゃないかなぁ。
fseek等使わないで、freadやfwriteのみでなら2TBまで出来るかもしれんが。
338デフォルトの名無しさん:2005/04/13(水) 02:08:14
>>330
Win32 APIにはfread/fwriteは存在しません!!!

そんなこともわからないのかよ。
だから、自分でMSDNライブラリで調べられないんだよ。

339デフォルトの名無しさん:2005/04/13(水) 02:42:53
Excelを引数付きで起動したいんですけど、Excelがインストールされているパスを取得するAPIってあります?
『C:\Program Files・・・』で固定するとかだめだし、excel.exeをFindFileするとかもあまりスマートじゃないかと。

#一応、レジストリを見たらなんとなくは解るんですが、バージョンによって格納されている場所が違う気がします。
 私はOffice2000パーソナルしか持ってないんですが、他のバージョンにも対応したいと考えているのです。
340http:// 210-194-226-62.rev.home.ne.jp/~ss.jpg:2005/04/13(水) 02:50:07
ええけつしとるのぉ(*´Д`)ハァハァ



うはっwwwおkwww??
341デフォルトの名無しさん:2005/04/13(水) 03:25:52
freadのソースによると内部でどれくらい読み込んだかとかを
unsigned で勘定しているので2GBまでではないでしょうか?
342デフォルトの名無しさん:2005/04/13(水) 07:03:24
>339
Excel.ApplicationをCOM経由で起動させた方がいいとおもうが。
343デフォルトの名無しさん:2005/04/13(水) 07:08:14
>>338
なぜそんな細かいことを気にするのですか?
たまにスレタイからはずれた質問が投稿されてしまうことが
そんなに気に入らないのですか?

「スレ違いですよ」と正しいスレに誘導でもしてあげれば済むのに。
344デフォルトの名無しさん:2005/04/13(水) 07:08:47
>341
freadを一度呼んだときに、読み込める最大のサイズが2GBということだろう。
というか、32bitプロセスではそんなメモリの確保はほぼ無理だが。
345デフォルトの名無しさん:2005/04/13(水) 07:09:01
>>340>>338のケツの穴が小さいっていう指摘な。
346デフォルトの名無しさん:2005/04/13(水) 08:02:32
>>339
せこいけど、COMの設定のレジストリを見ると、モジュールのパスが書いてあるので、
たぶんそこと同じにあると見なして・・・

>>343
わからないかなぁ。

>>341さんが書いているように、fread/fwriteの仕様を確認すればいいのよ。
MSDNライブラリでCランタイムのマニュアル見ても書いてないので、
ソースを読まなきゃわからない。そしたら、ReadFileとかWriteFileに辿り着くでしょ。
347デフォルトの名無しさん:2005/04/13(水) 08:47:12
windowsx.hについて、

http://www.kumei.ne.jp/c_lang/sdk/sdk_33.htm

マクロにするかどうかは、全く趣味の問題です。
(本当は16ビットから32ビットに移行するとき重大な意味がありました。)

と記されてあったのですが、この『重大な意味』とは何ですか?

348デフォルトの名無しさん:2005/04/13(水) 09:02:44
猫に聞け。
349デフォルトの名無しさん:2005/04/13(水) 10:54:51
>347
WPARAMとかのサイズが変わったとかその辺の話かも。
350デフォルトの名無しさん:2005/04/13(水) 12:20:49
サービスプログラムを作ってます。
CreateService関数で登録は出来るのですが、管理ツールの
「サービス」で表示される「説明」欄にプログラムから文字列を
登録するにはどうしたら良いのかわかりません。
教えてエロい人
351デフォルトの名無しさん:2005/04/13(水) 13:12:24
知ってるけど、俺、エロくないんだ
ゴメンな、教えてあげる権利なくて
352デフォルトの名無しさん:2005/04/13(水) 13:39:19
>>350
行儀が悪くて良ければレジストリに直接書きに行けばいいと思う。
他のサービスのレジストリを見れば、だいたいわかる。
353デフォルトの名無しさん:2005/04/13(水) 14:09:56
>>350
MSDN LibraryのCreateServiceの説明のSee Alsoの中にあるそれらしい名前の
APIを調べてみる。なんとかConfig2とか。
354デフォルトの名無しさん:2005/04/13(水) 15:42:16
>>351
知ってる時点で尊敬するよ
>>352
>>353
ありがd Config2でやってみまふ
355デフォルトの名無しさん:2005/04/13(水) 18:38:31
>>347
Win16とWin32ではWPARAMとポインタ・ハンドルが32bit化されたので渡され方が違っているメッセージがある。
メッセージクラッカーを使えばWin16と32とで同じように扱えるように違いを吸収している。
例えばWM_COMMANDではHANDLE_WM_COMMANDの中身は違うがコメントのハンドラ関数の宣言は全く同じ。
/* void Cls_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify) */
Win16
#define HANDLE_WM_COMMAND(hwnd, wParam, lParam, fn) \
((fn)((hwnd), (int)(wParam), (HWND)LOWORD(lParam), (UINT)HIWORD(lParam)), 0L)
Win32
#define HANDLE_WM_COMMAND(hwnd, wParam, lParam, fn) \
((fn)((hwnd), (int)(LOWORD(wParam)), (HWND)(lParam), (UINT)HIWORD(wParam)), 0L)

だからメッセージクラッカーを使っていればWin32用に書き直す手間がその分だけ省けたということ。
356デフォルトの名無しさん:2005/04/13(水) 21:02:44
SDKで開発。タスクバーの上で右クリックしたらポップアップを出したいのですが
どのあたりで通知を受け取れるか、または判定すべきか教えてください。
WM_NOTIFYとWM_CONTEXTMENUに何か来てるようですが、ボタンを識別する方法が分かりませんでした。
357デフォルトの名無しさん:2005/04/13(水) 22:10:00
コマンドプロンプトに貼り付けできるAPIありせんか?
SendMessageのペーストだと(テキストボックス等じゃないから)出来ないみたいで…
358デフォルトの名無しさん:2005/04/13(水) 22:15:33
あります。
359デフォルトの名無しさん:2005/04/13(水) 22:21:52
>>357
あります
360357:2005/04/13(水) 22:24:30
>>358-359
すみません、APIの名前教えて頂ければ助かります。
361デフォルトの名無しさん:2005/04/13(水) 22:27:18
いやです
362デフォルトの名無しさん:2005/04/13(水) 22:32:49
教えなくても助からないだけなので別にいいや。
363357:2005/04/13(水) 22:51:03
>>360
いやです。
ってか名前を知らない
364デフォルトの名無しさん:2005/04/13(水) 22:52:22
>>363
なにこのバカ
365デフォルトの名無しさん:2005/04/13(水) 22:55:01
WriteConsoleInput
366357:2005/04/13(水) 22:56:31
>>364
あのバカだから質問してるんですけど。。。
バカって言った方がバカなんですよ
367デフォルトの名無しさん:2005/04/13(水) 23:05:42
>>366
じゃあお前がそれだな
368デフォルトの名無しさん:2005/04/13(水) 23:10:19
>>367
痛いなおまえ
369デフォルトの名無しさん:2005/04/13(水) 23:34:44
SignalObjectAndWaitがWin98、Meにもあるような話がWeb上に
あったので、動かしてみたら、即座に「1」を返して来やがった。
GetLastErrorしてみたら、ERROR_CALL_NOT_IMPLEMENTED。
エントリーがあるだけってか。勘弁してくれ。
370デフォルトの名無しさん:2005/04/14(木) 00:16:21
( ゚д゚)ハァ?
371356:2005/04/14(木) 04:34:12
やばい。>>356はタスクバーではなく、ツールバーのことでした。
なんか荒れてますが、いつもこうなんですか。
372デフォルトの名無しさん:2005/04/14(木) 08:36:37
>>366
バカは質問の仕方が下手だから、結局答えを引き出せない。
373デフォルトの名無しさん:2005/04/14(木) 09:09:56
>>372
馬鹿の国から馬鹿を宣伝しに来たような見事な馬鹿。
374デフォルトの名無しさん:2005/04/14(木) 11:09:27
>>373
根拠が書かれていないので無効ですね。
375デフォルトの名無しさん:2005/04/14(木) 11:25:10
>>374
馬鹿の一つ覚えのように 「バカ」 が使用されている。
376デフォルトの名無しさん:2005/04/14(木) 12:08:24
| 360 名前: 357 [sage] 投稿日: 2005/04/13(水) 22:24:30
| >>358-359
| すみません、APIの名前教えて頂ければ助かります。

| 363 名前: 357 [sage] 投稿日: 2005/04/13(水) 22:51:03
| >>360
| いやです。
| ってか名前を知らない

(;´Д`)
377デフォルトの名無しさん:2005/04/14(木) 12:12:38
        ∧∧  ミ _ ドスッ
        (   ,,)┌─┴┴─┐
       /   つ.  馬 鹿 │
     〜′ /´ └─┬┬─┘
      ∪ ∪      ││ _ε3
               ゛゛'゛'゛
378デフォルトの名無しさん:2005/04/14(木) 12:36:53
        ∧∧  ミ _ ドスッ
        (   ,,)┌─┴┴─┐
       /   つ ぬ る ぽ │
     〜′ /´ └─┬┬─┘
      ∪ ∪      ││ _ε3
               ゛゛'゛'゛
379デフォルトの名無しさん:2005/04/14(木) 12:55:17
>>376
お、それそれ。分かってるじゃん。
380デフォルトの名無しさん:2005/04/14(木) 13:03:04
        ∧∧  ミ _ ドスッ
        (   ,,)┌─┴┴─┐
       /   つ  が っ ! │
     〜′ /´ └─┬┬─┘
      ∪ ∪      ││ _ε3
               ゛゛'゛'゛
381デフォルトの名無しさん:2005/04/14(木) 17:11:08
代替の構成−ユーザの構成(固定IP)の取得方法がわからん。
382デフォルトの名無しさん:2005/04/14(木) 18:52:26
この流れだと「あら、そうですか」って返ってくると思われ。
383デフォルトの名無しさん:2005/04/14(木) 19:02:56
あら、そうですか
384デフォルトの名無しさん:2005/04/14(木) 19:27:50
あれま、そうでつか。
385デフォルトの名無しさん:2005/04/14(木) 19:57:21
あらま、そうでつか。 = でかまら、あつそう。
386デフォルトの名無しさん:2005/04/14(木) 20:51:59
>>385
なぜ = なんですか?
387デフォルトの名無しさん:2005/04/14(木) 21:17:51
でかまら、あつそう。 = うそ、まらでかあつ。
388デフォルトの名無しさん:2005/04/14(木) 21:19:04
case WM_PAINT:
hdc=BeginPaint(hWnd,&ps);
GetClientRect(hWnd,&rect);

for(nX=0;nX<=rect.right;nX++){
for(nY=0;nY<rect.bottom;nY++){
color=RGB((nX*0xFF/rect.right)*(nY*0xFF/rect.bottom),nX*0xFF/rect.right,nY*0xFF/rect.bottom);
SetPixel(hdc,nX,nY,color);

と入力したらすさまじい幾何学(?)模様がうかびあがってきました。
なんじゃこりゃああああ。
389デフォルトの名無しさん:2005/04/14(木) 21:23:39
うそ、まらでかあつ。  = かつまで、あらそう。

>>388
スマソ。大発見を書きたかったのか質問なのか判別できん。
390デフォルトの名無しさん:2005/04/14(木) 21:25:16
そうですか
391デフォルトの名無しさん:2005/04/14(木) 21:25:16
いや、日記だな。
392デフォルトの名無しさん:2005/04/14(木) 23:47:41
今コンソールアプリ(コマンドプロンプト上で動くプログラム)の
フロントエンドを作ろうとしています。
教えて欲しいのですが、コマンドプロンプト上のメッセージを取得して
ウィンドウ上のエディットボックスなどに表示させる
ということは可能でしょうか?
また、コマンドプロンプトを起動させずに(またはタスクバーに
表示させないように)コンソールアプリを実行させることはできるでしょうか?

環境はWindows XP、Visual C++.net 2003です。
お願いします。
393デフォルトの名無しさん:2005/04/14(木) 23:57:37
アプリケーションの標準出力への出力をエディットボックス等に出力することは可能だがコマンドプロンプトに出力されてしまったものでは無理。
後者は余裕で可能。
394デフォルトの名無しさん:2005/04/15(金) 00:03:02
>>393
ありがとうございます。

すみません、書き方悪かったですね。
もし可能であれば、その方法か、または使用すべきWin32 APIを教えていただけますか?
395392:2005/04/15(金) 00:14:43
GetStdHandle()のようなAPIがあるようですね。
もう少し自力でがんばってみます。
>>393
ヒントになりました。ありがとうございます。
396デフォルトの名無しさん:2005/04/15(金) 01:07:13
             /::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::\
            /:::::::::::::::::::ノ ̄ヘ::::::;―、::::::::::::::::::::::::ヘ
          /:::::::::::;-' ̄     ̄    ̄ヘーァ:::::::::i
          i:::::::::彡              ミ:::::::::::ヘ
          |:::::::メ   ........        ......,   ヾ:::::::::::|
          |:::ノ   /   ヽ    /   ヽ ミ::::::::::|
          |::| /    _       _    ヾ::::::l
          |::|    イ(:::)ヽ     イ(:::)メ    |::::::|
          |ノ i    `ー'ノ i    ヽ` ~    イ::イ
          | j }    ~~  ノ;            い
          ゝ:.:.{: . : .    γ    ,、 )、      i丿
          厶:.:.ヾ : .    ` ''`  ~   ヽ     ノつ
          /i:.:.:.:. : .       ,_    i    /
        /  ヘ:.:.:. : .  i   ハニエ!-!‐ヽ |    ,イゝ、__
      /|     ヘ:.: .  │〈.:.:.:.:.:.:.:.:.:.:ノ ノ    /   \:;:- 、 _
    /:;:;:;:;ヽ     ヽ   ! ヾエエEァ´     /      i:;:;:;:;:;:;:;\
  /:;:;:;:;:;:;:;:;:;:ヽ      \  ゝ、:::::::::::  '   ノ       |:;:;:;:;:;:;:;:;:;:;ヘ
/:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;ヽ      \        /       /:;:;:;:;:;:;:;:;:;:;:;:;:;i
:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:ヽ       ` ー--― '         /:;:;:;:;:;:;:;;:;:;:;:;:;:;:;:;ヽ
:;:;:;:;:;:;:;:;::;:;:;:;:;:;:;:;:;:;:;:;:;:;:;\                    /:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;;|
     質問にまともに答える気のない奴は質問スレに居座るな
           さっさと引っ越〜し♪♪しばくぞッッ♪♪♪♪

397デフォルトの名無しさん:2005/04/15(金) 06:54:45
まともに質問できないからそうなる
398デフォルトの名無しさん:2005/04/15(金) 08:31:06
まともな質問じゃない場合はどうすればいいんだ?
399デフォルトの名無しさん:2005/04/15(金) 11:55:22
>>392
コンソールのハンドルが取れるなら
ReadConsoleOutputCharacter あたりでなんとか出来そうなきもすい
400デフォルトの名無しさん:2005/04/15(金) 12:37:50
>>399
ウソつきがいます。
401デフォルトの名無しさん:2005/04/15(金) 21:30:38
Word にビットマップ画像を挿入して、編集したいです。
オブジェクトの挿入で「ビットマップ」を選択すると、
Windows に付属のペイントで編集できるようになりますが、
他のソフトで編集はできないのでしょうか?

Word にビットマップ画像オブジェクトを挿入して、
フリーのペイント系ソフトで編集できるようにすることはできますか?
そのソフトが OLE 対応していないと無理でしょうか。
402401:2005/04/15(金) 21:42:55
追記:
誤爆じゃないです。
レジストリをいじればできるとか、
こういう API を使ったツールを作ればできるとか、
そういう裏技があれば、教えていただければ、と。
403デフォルトの名無しさん:2005/04/15(金) 21:52:36
>>392
パイプを使うんだよ。
難易度高いけど、がんばって。
404デフォルトの名無しさん:2005/04/15(金) 23:12:15
ドラッグアンドドロップについてです。
DragAcceptFiles()関数でドロップを許可したあと、
DragFinish()関数を使わずに次々にドロップしてくいくと、どんどんメモリが食いつぶされていくんですか?
また、DragFinish()関数でメッセージを処理するまで、ドロップしたファイルの情報はメモリ上にあると保証されることになるんでしょうか?
405デフォルトの名無しさん:2005/04/16(土) 00:49:02
>>404
当然だろ。
406デフォルトの名無しさん:2005/04/16(土) 01:45:35
>>403
お前はできないんだよな。
407デフォルトの名無しさん:2005/04/16(土) 01:59:58
質問があります。
チェックするために、何度も実行→処理→確認→終了→実行→を繰り返していると、画像の描画の時、急に描画が遅くなることがあります。
これは、CPUに負担をかけすぎと言うことなのでしょうか?
また、この現象の対処法はありますか?
お願いします。
408デフォルトの名無しさん:2005/04/16(土) 02:01:02
>>407
チェックって何?
実行って何?
処理って何?
確認って何?
終了って何?
実行って何?
409デフォルトの名無しさん:2005/04/16(土) 02:06:35
>>407
再描画の指示はどうやってしてるのさ?
410デフォルトの名無しさん:2005/04/16(土) 02:28:08
つまり
詳しく
411デフォルトの名無しさん:2005/04/16(土) 05:05:59
>>311
お解りになりませんか?
日本の自動車業界の躍進が、逆に自らの首を絞めることに
なりかねないと言っているのです。

トヨタなど日本の自動車メーカーの快進撃が続く一方で、
来週には退潮が著しいGMも決算発表を予定しています。
GMの業績不振により、米国で保護主義的な政策論が勢いづけば、
日本企業が標的になるとの懸念も急速に増すことでしょう。

その上、GMやフォードの社債格付けが投機的等級に格下げされれば、
米債券市場で社債から米国債へと質への逃避が起きるでしょうから、
金利動向も読みにくくなります。
412デフォルトの名無しさん:2005/04/16(土) 05:07:06
すみません、誤爆しました。
413デフォルトの名無しさん:2005/04/16(土) 05:15:40
味わい深い誤爆だな。
414デフォルトの名無しさん:2005/04/16(土) 06:52:45
>>407-410
ガベコレだろ
415デフォルトの名無しさん:2005/04/16(土) 07:22:10
>>409
そこしかつっこむところないの?
416デフォルトの名無しさん:2005/04/16(土) 09:00:48
>>414
なんでオレが含まれているんだ?
417デフォルトの名無しさん:2005/04/16(土) 09:50:33
オレって言われてもどれか分かりません
418デフォルトの名無しさん:2005/04/16(土) 10:10:07
>>417
まじで?
419デフォルトの名無しさん:2005/04/16(土) 11:33:00
オレ=ぬるぽ
420デフォルトの名無しさん:2005/04/16(土) 11:43:07
>>419
解説求む
421デフォルトの名無しさん:2005/04/16(土) 12:53:45
>>415
じゃあお前が全部つっこめ
422デフォルトの名無しさん:2005/04/16(土) 13:04:29
>>421
つっこんだけど?
423デフォルトの名無しさん:2005/04/16(土) 13:34:18
もしかして>>408みたいなくだらんカキコのこと?
424デフォルトの名無しさん:2005/04/16(土) 13:49:03
>>420
対応に困るから反応するな
425デフォルトの名無しさん:2005/04/16(土) 13:57:42
>>423
うん。疑問に思わなかった?
426デフォルトの名無しさん:2005/04/16(土) 14:33:48
おまいらのレス見ると、2chってほんと暇人の集まりだとよく分かるよ。
俺もその中に入ってるんだがね。
427デフォルトの名無しさん:2005/04/16(土) 14:38:40
>>426
そういう自覚ある人ばかりだといいね。俺も自覚はしてるつもりだよ。
428デフォルトの名無しさん:2005/04/16(土) 14:51:41
InvalidateRect()とValidateRect()って何が違うんですか?
無効領域を有効化ってのがよくわからないんですが
429デフォルトの名無しさん:2005/04/16(土) 14:59:27
全然違うだろうに・・・
WM_PAINTあたり良く嫁
430デフォルトの名無しさん:2005/04/16(土) 15:02:26
InvalidateRect()が無効な領域を作ってWM_PAINTメッセージが出て
ValidateRect()は無効領域があったら有効化するんですか?
431デフォルトの名無しさん:2005/04/16(土) 15:02:32
>>428
無効領域の意味もわからないし、有効化の意味もわからない、ということですよね。

InvalidateRectで指定された矩形(あるいはウィンドウ全体)は、「無効領域」として記録されます。
自分のスレッドの所有するウィンドウに無効領域があると、次回そのスレッドで GetMessage を
呼び出したときに、他に処理すべきメッセージが無ければ、WM_PAINT メッセージが生成されます。

んでアプリはWM_PAINT メッセージ処理でBeginPaint を呼び出して、その無効領域の画面を更新し、
EndPaint を呼び出すと、無効領域はなくなります。

ここまでがWindowsの画面更新処理の基本。
InvalidateRectしなくても、ウィンドウを動かしたりしたときには自動的に無効領域が生成される。

ウィンドウ(またはその一部)の表示を更新したいからWM_PAINT生成してくれ、
てな意図で呼び出すのが InvalidateRect。即座に画面を更新したいときには、続けて
UpdateWindowを呼び出したりもする。

ウィンドウが移動されたりなんだりして無効領域が生成されてるかもしれないけど、
(例えば自前のタイマでバリバリ画面は更新しているから)WM_PAINTは要らないよ、
ってときに呼び出すのが ValidateRect。
432デフォルトの名無しさん:2005/04/16(土) 15:07:55
>>431
誰でも分かることを回答してあげるときって恥ずかしくない?
URL貼り付けて「読んどけ」って突き放すくらいでいいのに。
433428:2005/04/16(土) 15:11:50
>431
実に解りやすいです
ありがとうございました
434デフォルトの名無しさん:2005/04/16(土) 15:14:11
>>433
お前何様のつもり?「実に解かりやすい」だ?

平気で上司に向かって「なるほどー」とか言ってるだろ。
435デフォルトの名無しさん:2005/04/16(土) 15:33:12
>434
すみません;
上司も糞もリア房なんです
436デフォルトの名無しさん:2005/04/16(土) 15:41:22
「実に」って言うのはキモチワルイけど
偉そうに言うつもりが無いのは分かるんだからいいじゃん。
437デフォルトの名無しさん:2005/04/16(土) 15:46:44
>>436
「実に」がキモチワルイ点に同意してくれるならいいや。
438デフォルトの名無しさん:2005/04/16(土) 15:48:48
とても解りやすいです
なら問題無いですか?
439デフォルトの名無しさん:2005/04/16(土) 15:52:07
まあよしとするか
440デフォルトの名無しさん:2005/04/16(土) 15:53:00
とても解りやすかったです
か、
すごくよく解かりました
ぐらいじゃね?


それより>>435の「糞も」が気になる
441デフォルトの名無しさん:2005/04/16(土) 15:56:46
たしかに
442デフォルトの名無しさん:2005/04/16(土) 15:59:27
礼儀をわきまえてないやつは2ちゃんに来てほしくないね。
443デフォルトの名無しさん:2005/04/16(土) 16:01:19
>>442
( ゚д゚)y \_ ポロッ
444デフォルトの名無しさん:2005/04/16(土) 16:02:57
>>422 ( ´,_ゝ`)プッ
445444:2005/04/16(土) 16:07:05
間違い >>442
446デフォルトの名無しさん:2005/04/16(土) 16:08:08
おいおい、2chでも最低の礼儀が必要だろう?
447デフォルトの名無しさん:2005/04/16(土) 16:23:03
>>446
君はこっち。
http://www.1ch.tv/
448デフォルトの名無しさん:2005/04/16(土) 16:26:45
その前に言葉使いだろ
449デフォルトの名無しさん:2005/04/16(土) 17:03:36
>>440
小学生の作文じゃないんだから、
>解りやすかったです
はないだろ。
450デフォルトの名無しさん:2005/04/16(土) 17:04:53
>>449
小学生かもしれんぞ。
451デフォルトの名無しさん:2005/04/16(土) 17:20:28
って言うか上司に質問して答えを聞いたらなんて言うんだ?
当然例は言うだろうが礼儀としてなんかあるのか?
452デフォルトの名無しさん:2005/04/16(土) 17:24:59
板違い・・・
453デフォルトの名無しさん:2005/04/16(土) 17:27:33
>>434
> 平気で上司に向かって「なるほどー」とか言ってるだろ。

これって何かまずいの?
いつも言ってるけど。
454デフォルトの名無しさん:2005/04/16(土) 17:28:56
>>436
> 「実に」って言うのはキモチワルイけど
> 偉そうに言うつもりが無いのは分かるんだからいいじゃん。

「実に」の何がキモチワルくて、何が偉そうなのか、さっぱりわからん。
普通の言葉じゃん。
455デフォルトの名無しさん:2005/04/16(土) 17:38:08
誰か言っていたが、ここもDirectX初心者スレっぽくなってきたな

理想
 答えたい奴は答える
 答えたくない奴は質問を無視する

現実
 答えたい奴は答える
 答えたくない奴は邪魔をする
456デフォルトの名無しさん:2005/04/16(土) 17:42:19
>>453
おいおい。研修とかで習うような最低限のマナーだろうが。
457デフォルトの名無しさん:2005/04/16(土) 17:42:54
「大変参考になりました。ありがとうございます。」
とかがいいかもしれんが、上司気取りの奴もキモい。
質問スレだから感謝レスも大事だとは思うけど。
458デフォルトの名無しさん:2005/04/16(土) 17:43:00
>>455
で、お前さんはどうしたいの?
459デフォルトの名無しさん:2005/04/16(土) 17:43:30
>>457
なぜ上司に対するマナーを書いただけで上司気取りになるの?
460デフォルトの名無しさん:2005/04/16(土) 17:44:00
>>457
正しくはどう書くべきだったのか書けよ。
主張がはっきりしなすぎ。
461デフォルトの名無しさん:2005/04/16(土) 17:53:20
要するに「ご苦労サンクスコ」位で十分。
2chに何を期待しているんだ?
462デフォルトの名無しさん:2005/04/16(土) 17:55:40
>>461に大筋同意。
「実に…」もひっかかるけど、オレには>>434もひっかかる。
てかもう>>439で解決してるからいいじゃん。はーい、解散。
463デフォルトの名無しさん:2005/04/16(土) 17:57:49
ここは日本語マナースレになりました。
464デフォルトの名無しさん:2005/04/16(土) 17:58:19
ネットはそのようなものだねっとw
465デフォルトの名無しさん:2005/04/16(土) 17:58:52
>>462
うむ。お前の書き込みは何かムカつくものがあるが、
>>439を書いたのは俺だからよしとしよう。
466デフォルトの名無しさん:2005/04/16(土) 18:00:47
こんなどうでもいいことで罵り合うのも2chの醍醐味のうち。
467デフォルトの名無しさん:2005/04/16(土) 18:11:06
うむ
468デフォルトの名無しさん:2005/04/16(土) 18:28:40
>>456
> 研修とかで習うような最低限のマナーだろうが。

そんなの習ったことない。
どこの国の話?

>>457
> 「大変参考になりました。ありがとうございます。」

「なるほどー」と「大変参考になりました」では
ぜんぜん意味が違うんだけど。

そんな型はまりな表現ばかりしていると、
日本語の表現力が失われるよ。
469デフォルトの名無しさん:2005/04/16(土) 18:31:19
>>468
はいはい
470デフォルトの名無しさん:2005/04/16(土) 18:31:19
某掲示板で質問者のお礼が無いと暴言吐いた回答者がいたのを思い出した。
471デフォルトの名無しさん:2005/04/16(土) 18:32:01
どこが暴言なのかまったくわからん。
472デフォルトの名無しさん:2005/04/16(土) 18:33:04
口調が暴言だったのかも試練
473デフォルトの名無しさん:2005/04/16(土) 18:34:10
>>468
まったく相手にされてないところが失笑を誘って味があるw
474デフォルトの名無しさん:2005/04/16(土) 18:35:46
>>468
どこの国っつーか、普通に辞書にも載ってるようなことだよ。

なるほど【成る程・成程】
(副)
他人の主張や説などを聞いて△確かにそうだと同意する(そうであったかと納得する)ことを表わす。〔感動詞としても用いられる。ただし、目上の人に対しては言わない〕


Shin Meikai Kokugo Dictionary, 5th edition (C) Sanseido Co., Ltd. 1972,1974,1981,1989,1997
475デフォルトの名無しさん:2005/04/16(土) 18:36:51
元々知識がなくて質問した人間が教えてくれた人に対して
「なるほど」ってのはあり得ませんな。
476デフォルトの名無しさん:2005/04/16(土) 18:37:15
>>468
>そんな型はまりな表現ばかりしていると、
>日本語の表現力が失われるよ。

それはそうだがお前が言うセリフじゃない。
477473:2005/04/16(土) 18:38:35
おいおい、相手にされないところがいいって書いた後に
レスするなよw 俺がピエロじゃないか。
478デフォルトの名無しさん:2005/04/16(土) 18:41:43
そこがまた2chの醍醐味。
479デフォルトの名無しさん:2005/04/16(土) 18:42:25
>>468
わざとマナー違反なことをするのも「日本語の表現力」の
ためなんだー。なるほどーーーーー。

アーヒャッヒャッヒャッヒャッヒャッヒャッヒャ!腹いてーーーー!!
480468:2005/04/16(土) 18:54:02
>>474
> ただし、目上の人に対しては言わない

そうだったんだー
しらんかった
スマソ
481デフォルトの名無しさん:2005/04/16(土) 19:24:58
まったく、こんな常識もわかってないやつが2ちゃんやるなよ。
482デフォルトの名無しさん:2005/04/16(土) 19:25:41
で、正解は何なんだ?
483デフォルトの名無しさん:2005/04/16(土) 19:26:07
他の人より分かりやすいです
また教えて下さいね♪
484デフォルトの名無しさん:2005/04/16(土) 19:27:44
おまえら、目障り
そんなことどうでもええやん。
日本語のプログラム打ちたいならひまわりでもやってくれ
485デフォルトの名無しさん:2005/04/16(土) 19:49:14
>>484
>日本語のプログラム打ちたいならひまわりでもやってくれ
誰もそんなこと言っていない。
486デフォルトの名無しさん:2005/04/16(土) 19:56:14
つまり目上を「貴様」と呼びましょうってことで決着だな。
487デフォルトの名無しさん:2005/04/16(土) 20:11:01
で、WindowsAPIはどしたの?
488デフォルトの名無しさん:2005/04/16(土) 20:16:39
>>431 ← 素晴らしい人
>>432 ←かわいそうな人
489デフォルトの名無しさん:2005/04/16(土) 20:20:46
WinAPIでの敬語について話し合ってます
490デフォルトの名無しさん:2005/04/16(土) 20:21:20
>>488は鵜呑みにするヒト、進歩が無いヒトw
>>431は間違っている。
491デフォルトの名無しさん:2005/04/16(土) 20:21:29
>>487
>>1から目を通せ。
質問に答えられるヤツがほとんどいないことに気付くはず
492デフォルトの名無しさん:2005/04/16(土) 20:38:49
BOOL MannerCheck(LPSTR lpString)
493デフォルトの名無しさん:2005/04/16(土) 20:59:53
>>490は嘘だと分かってるのに放置して初心者に悪質なイヤガラセをしてる人。
本当に嘘だったらの話だが
494デフォルトの名無しさん:2005/04/16(土) 21:06:29
>>493
だって、Spyとか使えば分かるじゃん、ヒトに聞くようなものじゃない
495デフォルトの名無しさん:2005/04/16(土) 21:28:03
>>432
気に入らないならスルーすればいいじゃん。
バッカじゃねーの? (俺は除く)
496495:2005/04/16(土) 21:30:53
って書いたら負けな
497デフォルトの名無しさん:2005/04/16(土) 21:37:47
>>480
いや、いいんだ。
498デフォルトの名無しさん:2005/04/16(土) 21:43:13
>>496
ha ?
499デフォルトの名無しさん:2005/04/16(土) 21:45:36
興味のある人はX Windowではどうやってるか調べてみると
いいんじゃないすかね
実は似てたりして・・・
500デフォルトの名無しさん:2005/04/16(土) 21:59:16
>>494
Spy++で無効領域を確認することができるのですか?
501デフォルトの名無しさん:2005/04/16(土) 22:00:16
>>491
このスレの必要性はないと思うな、うん
502デフォルトの名無しさん:2005/04/16(土) 22:02:06
前スレあたりから粘着が常駐してね?ここ
503デフォルトの名無しさん:2005/04/16(土) 22:06:50
>>500
へえ?なんか他に裏業あるなら教えてマジデ。
504デフォルトの名無しさん:2005/04/16(土) 22:07:25
>>431 ← 先輩後輩に関わらずよく質問を受ける人
>>432 ← 誰も質問に来ない人
505デフォルトの名無しさん:2005/04/16(土) 22:44:36
>>431 ← 教えて君に付き纏われる前の俺
>>432 ← 教えて君から逃げ切った後の俺
506デフォルトの名無しさん:2005/04/16(土) 22:56:44
ExitWindowsEx(EWX_REBOOT | EWX_FORCE, SHTDN_REASON_MAJOR_OPERATINGSYSTEM | SHTDN_REASON_MINOR_MAINTENANCE);
507デフォルトの名無しさん:2005/04/16(土) 22:58:40
>>431 ← ぬるぽ
>>432 ← ニョキニョキ
508デフォルトの名無しさん:2005/04/16(土) 23:07:10
>>503
だから、Spy++で無効領域を確認することができるのですか?
509デフォルトの名無しさん:2005/04/16(土) 23:10:35
>>508
マジデいうなら、Spyを信用しろ
510デフォルトの名無しさん:2005/04/16(土) 23:34:34
>>431 ← スキルがあってみんなに頼りにされる人
>>432 ← スキルはあるがいっしょに仕事しずらい人
511デフォルトの名無しさん:2005/04/16(土) 23:39:04
さすが、どうでもいい内容に対するレスは多いな。
プログラム作れない連中ばっかりってのがよくわかる。
512デフォルトの名無しさん:2005/04/16(土) 23:39:45
×いっしょに仕事しずらい人
×いっしょに仕事しづらい人
513デフォルトの名無しさん:2005/04/16(土) 23:40:32
両方×かよ
514デフォルトの名無しさん:2005/04/17(日) 00:20:20
そろそろボクとAPIについて語らないか
515デフォルトの名無しさん:2005/04/17(日) 00:21:50
APIって何ですか?
516デフォルトの名無しさん:2005/04/17(日) 00:35:16
>>431 ← 深い知識を持ち良く理解している人
>>432 ← 経験はあるが中途半端にしか理解できてない人
517デフォルトの名無しさん:2005/04/17(日) 00:41:27
>>505
ここに粘着する意味ないじゃんw
518デフォルトの名無しさん:2005/04/17(日) 00:51:17
>>431 ← ハードゲイ住谷
>>431 ← (^ω^)
519デフォルトの名無しさん:2005/04/17(日) 00:57:43
LPARAMやWPARAMの"L"や"W"って何の略なの?
520デフォルトの名無しさん:2005/04/17(日) 01:00:24
WORD(16bit) LONG(32bit)
win16自体の名残
521デフォルトの名無しさん:2005/04/17(日) 01:14:11
おお!ありがと >>520
522デフォルトの名無しさん:2005/04/17(日) 03:18:43
HonoredBySendMessage()
523デフォルトの名無しさん:2005/04/17(日) 10:08:55
Visual Studio .net 2003を使っているものです。
リソースにBitmapや、waveを追加しようとしてもリソースビューで
recorce*
となるだけでその下が出てきません。
これはどうしてでしょうか?

DirectXスレで質問してしまって・・・
またスレ違いだった場合誘導お願いします。
524デフォルトの名無しさん:2005/04/17(日) 10:17:06
>>523
その書き込みがスレ違いだと思わない理由を教えてください。
525523:2005/04/17(日) 10:36:49
そうですね。本当にすいませんでした。m(_ _)m
526デフォルトの名無しさん:2005/04/17(日) 11:13:48
>>525
答えになってません。
527デフォルトの名無しさん:2005/04/17(日) 12:50:56
>>526
しつこいよ。

>>523の本心は

 知  テ  質  質 ヽ l ヽ、Ll {_/__ ノ/ ///;;/  /:l _,. -――‐、
  っ  ス  問  問   ヽト、   <_ノノノ/;;/ /:::ノ
  て  ト  文  文   |lヾ'', - ' ´  `ヽ、;;//::::/
  た  0  で  に    .| Y へ,_ ''  __,,. -'ヽヽ / ひ  成  お
  か 点  答 対   l | ,tt:ァ、ノ  ,.,、__  〈/  と  り  っ
  ? な   え し   >l ''  ノ ::  `ー'´ 、/;   り   立  と
  マ  の  る     / l、l  ,、ヽ',、     ノ//    登  た  会
  ヌ     と     | ,、 l  ノ三ヽ、   、//l     場  な  話
  ケ           l/  ',   ー-- `  // .|   ∫   い  が
              ノn  /.l _     //レ l    ∫  ア
ヽ_____,. -/⌒ヽ/ ヾ、_`ヽ _,,. // / ハ      ホ
  r'―‐-、  ヽr'=、、ヽ' /-、::::: : :   /// / ノ        が

だ。
528デフォルトの名無しさん:2005/04/17(日) 13:25:10
>>527
わろたヨ
529デフォルトの名無しさん:2005/04/17(日) 18:53:57
テラワロス
530デフォルトの名無しさん:2005/04/17(日) 20:01:51
CからAPIを使ってるのですが、フルスクリーンモードにはどうやってやるのでしょうか?
ググっても出てきません・・・。
APIでフルスクリーンは可能なんですか?
531デフォルトの名無しさん:2005/04/17(日) 20:03:58
>>530
フルスクリーンの定義がわからん。
解像度替えて全画面表示したいならIDirectDraw::SetDisplayMode。
ChangeDisplaySettingsでやるのは色々問題があるのでおすすめしない。というかやらないでくれ。
532デフォルトの名無しさん:2005/04/17(日) 20:16:37
>>531
ありがとうございます!
早速やってみます
533デフォルトの名無しさん:2005/04/17(日) 20:19:37
てかこれ、DirectXみたいですね、、、
ううっ。
534デフォルトの名無しさん:2005/04/17(日) 20:27:19
ScreenSizeと同じで、TopMostな、
ウインドウ装飾のないウインドウが作りたいとか?
535デフォルトの名無しさん:2005/04/17(日) 20:45:15
>>533
枠無しウィンドウ作ってIDirectDraw::SetCooperativeLevelにそのハンドル渡してやればDirectDrawを解像度切り替えのみに使える。
536デフォルトの名無しさん:2005/04/17(日) 21:42:39
いろいろありがとうございます。
Direct Xがきになっていろいろサイト見てたんですが、ゲームはやっぱりWin32APIより、Directの方がいいみたいですね。
Cしか使えないので、C++をやってDirect Drawから手を付けてみようと思います。
すいませんでした。
537デフォルトの名無しさん:2005/04/17(日) 22:02:08
本当にゲームだったのか
538デフォルトの名無しさん:2005/04/17(日) 22:06:43
>>531
昔、富士通FM-VシリーズのモニタがChangeDisplaySettings()に従わないとかいう話を聞いたけど
その辺の事情?
539デフォルトの名無しさん:2005/04/17(日) 22:19:25
>>538
いや、他のウィンドウの配置がずたぼろにされるからだろ。
540デフォルトの名無しさん:2005/04/17(日) 23:50:17
>>539
フルスクリーンモードを使いたいユーザーなんて、ゲーマーなんだから
ほかのウィンドウなんてそもそも開いてないだろうし、配置がずれても
気にしないだろ。
541デフォルトの名無しさん:2005/04/17(日) 23:51:25
うわ、またコイツか
542デフォルトの名無しさん:2005/04/17(日) 23:56:36
DLLを作っています。

タスクマネージャからプロセスを終了させる等したとき、
DLLMainが呼ばれずに、プロセスが終了します。

これは通常の動作だと思うのですが、
必ずDLLの終了処理を行わせるようにするには、
どうしたらよいのでしょうか。
543デフォルトの名無しさん:2005/04/18(月) 00:17:24
タスクマネージャからの終了はkill -9相当だから
そりゃむりだんべ
544542:2005/04/18(月) 00:29:41
ということは、何らかの方法で、終了処理を別プロセスに行わせるしかない、と。
545デフォルトの名無しさん:2005/04/18(月) 00:41:52
その別プロセスをタスクマネージャから終了されてな。
546デフォルトの名無しさん:2005/04/18(月) 01:34:38
ソフトウェアをEXEに対するドロップ起動でオープンさせたいのですが、
引数をargv,argcで取り込むと、ファイルのパスにスペースが含まれると
引数が分離してしまい正しい処理が出来ません。

ドロップしたファイルパスなどを取得する方法、APIなどがあったら教えてください
よろしくおねがいします

547デフォルトの名無しさん:2005/04/18(月) 01:36:10
引用符を使う
548デフォルトの名無しさん:2005/04/18(月) 01:45:48
GetCommandLine()の結果を自力で分解する
549デフォルトの名無しさん:2005/04/18(月) 01:56:05
よく知らんけど CommandLineToArgvW 使ったらどうなる?
550デフォルトの名無しさん:2005/04/18(月) 03:02:50
引用符を使う
551デフォルトの名無しさん:2005/04/18(月) 04:32:12
MFCを使用せずリソースからモードレスダイアログを作成して
その上にIEコンポーネントを作成したいのですが
ttp://www.nitoyon.com/vc/tips/ie_component.htm
を参考にしましたが、CreateWindowのところでNULLが返ってきます。

当方VC++.NETなのでCreateWindow("AtlAxWin71", "Shell.Explorer.2")と指定しましたがやはり作成できません。
最初にAtlAxWinInitも呼び出して成功しています。
環境のバージョンはそれぞれ
Microsoft Development Environment 2002 7.0.9486
Microsoft .NET Framework 1.0 1.0.3705
Microsoft Windows 2000 (Build 2195; Service Pack 4)
です。詳しい方ご教授お願いします。
552542:2005/04/18(月) 05:45:54
>>545
別プロセスの人は、サービスにするので、普通に起動したタスクマネージャからは殺せません。
553デフォルトの名無しさん:2005/04/18(月) 06:10:32
そして、そのサービスを停止させられてしまうわけだな。
554デフォルトの名無しさん:2005/04/18(月) 06:38:59
>551
まさかCoInitializeを呼んでいないオチではないか
555デフォルトの名無しさん:2005/04/18(月) 07:13:11
556デフォルトの名無しさん:2005/04/18(月) 07:18:47
Shell.Explorer.1
もしくは
Shell.Explorer
557デフォルトの名無しさん:2005/04/18(月) 08:10:17
558デフォルトの名無しさん:2005/04/18(月) 10:19:03
最初に
target = GetForegroundWindow();
とやって対象のウィンドウを決めて、以降そのウィンドウがフォアグラウンドかどうか調べるのに
hwndTmp = GetForegroundWindow();
if (hwndTmp == target){ ;;;;;;;;;;;;;;;;;; }
とやっているのですがもっとスマートな方法はありますか?
559デフォルトの名無しさん:2005/04/18(月) 10:24:39
if (target == GetForegroundWindw()) { ... }
560デフォルトの名無しさん:2005/04/18(月) 10:26:27
ジョークでよかった
561デフォルトの名無しさん:2005/04/18(月) 11:04:27
質問です。
ツールバーのインデックスをIDに変換したいのですが、
TB_COMMANDTOINDEXはあっても、その逆がありません。
この場合は、どのようにするのが常道なのでしょうか。
562デフォルトの名無しさん:2005/04/18(月) 11:17:39
>>561
ツールバーのボタン情報を一個ずつ調べるしかないでしょうな。
563デフォルトの名無しさん:2005/04/18(月) 11:42:13
こんなのだろ

int ToolBar_IndexToCommand(HWND hToolbar, int index)
{
TBBUTTON btn;
SendMessage(hToolBar, TB_GETBUTTON, index, &btn);
return btn.idCommand;
}

564551:2005/04/18(月) 13:20:54
>>556
作成できました。ありがとうございました。
開発環境のバージョンで登録されるクラス名も違うのね・・・('A`)
565デフォルトの名無しさん:2005/04/18(月) 19:03:43
音声を再生する一番標準的なAPIは何ですか?
マイクロソフトはどれを使うのを推奨していますか?
566デフォルトの名無しさん:2005/04/18(月) 19:18:28
play
567デフォルトの名無しさん:2005/04/18(月) 19:19:19
>>565
>一番標準的なAPIは何ですか?
「標準的」の基準を教えてください。

>マイクロソフトはどれを使うのを推奨していますか?
マイクロソフトに聞いてください。
もしくはマイクロソフトに聞かない理由を教えてください。
568デフォルトの名無しさん:2005/04/18(月) 19:58:37
秘技!! 質問返し!!!!11
569デフォルトの名無しさん:2005/04/18(月) 20:13:28
答えを返す前に疑問点があれば確認するのは
常識です。
570デフォルトの名無しさん:2005/04/18(月) 20:18:38
>>567
質問を変えて、
マイクロソフトが自社アプリで使用しているのはどのAPIですか?
例えばピンボールなどでどうでしょう。
571デフォルトの名無しさん:2005/04/18(月) 20:21:25
>>570
マイクロソフトに聞いてください。
もしくはマイクロソフトに聞かない理由を教えてください。
572デフォルトの名無しさん:2005/04/18(月) 20:24:29
(´-`).oO(・・・)
573デフォルトの名無しさん:2005/04/18(月) 20:25:32
>>570
ピンボールは多分DirectXを使ってるような気がする。
Office とかだと多分PlaySoundあたりのような気がする。
Windows Media Player だと DirectShow (and/or Windows Media)辺りを使ってる。
「サウンドレコーダー」はたぶん waveOut を使ってる。

どれでも好きなものを使えばいいと思う。
574デフォルトの名無しさん:2005/04/18(月) 20:25:38
質問を変えて、
このスレッドがある理由を教えてください。
575デフォルトの名無しさん:2005/04/18(月) 20:31:52
>>574
お母さんに聞いてください。
もしくはお母さんに聞かない理由を教えてください。
576デフォルトの名無しさん:2005/04/18(月) 20:40:05
>>573
まともに答えんなよ
つまらん質問する初心者厨はうぜえから潰せっての。
達人の質問しかいらねんだよ
善良気取りの糞野郎が!!!!!!!!!!!!!!1

!!!!!!!!!!!!111
577デフォルトの名無しさん:2005/04/18(月) 20:51:11
>>576
初心者厨と達人の定義を教えてください。
答えられない場合はその理由を教えてください。
578デフォルトの名無しさん:2005/04/18(月) 20:57:54
達人の質問… 釣りってことか?
579デフォルトの名無しさん:2005/04/18(月) 21:00:18
http://www.microsoft.com/speech/download/sdk51/
時代はこれ! Speech SDK これでゲーム作ってくれ>>565
580デフォルトの名無しさん:2005/04/18(月) 21:07:29
>>564
違う。最新版は常に".1"であると決まっている。
".2"以降は存在しない事もある。
581デフォルトの名無しさん:2005/04/18(月) 21:09:22
>>576
え?でもあなたは初心者の質問に答えるのが
精一杯ですよね。
582デフォルトの名無しさん:2005/04/18(月) 21:09:46
DirectMusic終わったの?
583デフォルトの名無しさん:2005/04/18(月) 21:15:00
漏れは MCI 派だな。
584デフォルトの名無しさん:2005/04/18(月) 21:21:47
>>564
基本的にはその程度のものなら Version Independent ProgID の "Shell.Explorer" を使うべきだと思う。

ただし、例えばバグ有りのVC 5.0 の ATL (Version Independent ProgIDにCLSIDを登録しないというバグがあった)で
作られたコンポーネントを相手にするときや、あえて厳密なバージョン番号を指定したい場合などは別。
(Outlookクライアントなんかを使うときはバージョン知りたくなることが多い)
585デフォルトの名無しさん:2005/04/18(月) 21:43:06
ここは質問をするスレであって、答えるスレではない。
答える奴はスレ違いの荒らし。
586デフォルトの名無しさん:2005/04/18(月) 21:55:01
587デフォルトの名無しさん:2005/04/18(月) 21:58:07
>>585
何と照らし合わせてそういう判断をしているの?
588585:2005/04/18(月) 22:06:21
批判は甘んじて受けるが、
それならここしばらく、ろくでもない返答ばかりする奴らも
頭悪そうなスレに行けよ
589デフォルトの名無しさん:2005/04/18(月) 22:11:34
>>588
>>587を教えて。
590585:2005/04/18(月) 22:18:58
答えをもらえないまま質問をするしかない状況で
深海の熱水噴出域の生態系のようなもの、
君たちはどうあるべきか。
先生は考えました
591デフォルトの名無しさん:2005/04/18(月) 22:21:48
あssp
592デフォルトの名無しさん:2005/04/18(月) 22:31:11
>>590
>>587を教えて。
593デフォルトの名無しさん:2005/04/18(月) 22:35:02
このスレすごいなぁ。
レスは600にも伸びようとしてるのに
有益な回答は10あるかないかじゃないの?
594デフォルトの名無しさん:2005/04/18(月) 22:40:40
>>593
そんなもんでしょ。
595585:2005/04/18(月) 22:48:26
>592
適者生存ということです。

あと、分からないということにはふたつあって、
論理を組み立てるとき、暗黙で使われる部品となる知識がないという問題ともうひとつ、
何が問題になっているのかが分かっていないということです。
あなたはどちらかですか? 自省してみてくださいね。
これは宿題にしておきます。先生からは以上です。
596デフォルトの名無しさん:2005/04/18(月) 22:52:48
>>595
あらら。全然分かってないようで。

>ここは質問をするスレであって、答えるスレではない。
>答える奴はスレ違いの荒らし。


私が聞いたのは、何と照らし合わせてこの2行が出てきたのか、
ということでした。

分からないのであればスルーして頂いて構いませんよ。
ムリに回答されると混乱しますので。
597デフォルトの名無しさん:2005/04/18(月) 22:56:23
>>595のような状態を、「頭が発散している」とでも言うのかな。
598デフォルトの名無しさん:2005/04/18(月) 22:58:27
急速にスレの質が低下してまいりました
599デフォルトの名無しさん:2005/04/18(月) 22:59:37
まあまあ。>>595はやば目だけど、下記サイトの管理人に
比べれば全然可愛いもんだよ。

ttp://www.enjoy.ne.jp/~hoboiwak/

プロ野球板で有名な奴なんだけどね。
一度こいつの相手をすれば、他の2ちゃねらーには
絶対腹が立たなくなるよ。>>595なんてホント可愛いもんだよ。
600デフォルトの名無しさん:2005/04/18(月) 23:00:16
>>598
は?元からでしょ。
601デフォルトの名無しさん:2005/04/18(月) 23:22:06
>>600
言いたかっただけだから気にするな
602デフォルトの名無しさん:2005/04/19(火) 00:31:43
元からじゃないぞ。

数スレ前は、普通に質問と回答があって、荒らしは少なかった。
603デフォルトの名無しさん:2005/04/19(火) 00:52:30
4月はこんなもんだって
604デフォルトの名無しさん:2005/04/19(火) 01:25:32
>>580
>>584
あーいえAtlAxWin71の方です。
ヘルプで調べたらAtlAxWinInitがAtlAxWin7を登録すると書いてあったので
それで指定すると成功しました。ProgIDはShell.Explorer.2の方はダメでした。
> 違う。最新版は常に".1"であると決まっている。
> ".2"以降は存在しない事もある。
> バグ有りのVC 5.0 の ATL
有益な情報どうもです。
ATL、COM関係は詳しくないんで、もう少し調べてみます。
605デフォルトの名無しさん:2005/04/19(火) 06:32:21
>>602
あっそう
606デフォルトの名無しさん:2005/04/19(火) 07:07:29
>>604
前にも書いたけどそこはベタ書きではなく
CAxWindow::GetWndClassName()で帰ってくる文字列を与えるべき。
607デフォルトの名無しさん:2005/04/19(火) 13:33:42
WininetAPIでHTTPSで通信を行い,サーバが仮証明書を利用した場合などに,
警告ダイアログボックス表示の禁止にしたいのですが、
どの関数をつかえばいいのでしょうか?
608高2:2005/04/19(火) 16:13:29
だいたいわかってきたので何か作りたいと思うのですが
何を作ればいいかまったくわかりません
目標がないと技術の上達もないと思います。

みなさんは、どんなものを最初に作りましたか?
609デフォルトの名無しさん:2005/04/19(火) 16:15:03
すれ違い
610高2:2005/04/19(火) 16:15:18
ごめんあさい
611デフォルトの名無しさん:2005/04/19(火) 16:15:20
>>399
簡単に出来そうなきもすい
http://www.kawasui.co.jp/goodsfamily/kimo.html
612デフォルトの名無しさん:2005/04/19(火) 16:19:19
リロードしてなかったよママン…
613デフォルトの名無しさん:2005/04/19(火) 16:23:24
>>607
セキュリティ上の理由により、そんなことしちゃダメです。
614デフォルトの名無しさん:2005/04/19(火) 21:14:38
とあるファイルがある物理デバイスの名前はどうやって取得するんですか?
615デフォルトの名無しさん:2005/04/19(火) 21:22:44
イベントログへの書き込みについて教えてください。

ttp://nienie.com/~masapico/api_RegisterEventSource.html
この辺のサイトを見るとなんとなくやり方は分かったのですが、
メッセージファイル(?)を作成してコンパイルしなければいけないと
書いてあります。

イベントログのメッセージだけでなく、イベントIDやFacilityも自由に
変えて書き込むツールを作りたいのですが、メッセージファイル(?)の
作成はともかく、コンパイルする必要があるのであれば、ツールから
実行することはできないように思います。

自由にメッセージを出力するようにするにはどうすればいいのでしょうか?
616デフォルトの名無しさん:2005/04/19(火) 21:28:45
どうせここにいるのはVB上がりで、その辺のAPIを使ったことない人が99.9%だから
0.1%ってのは君な。
617デフォルトの名無しさん:2005/04/19(火) 22:02:09
>>616
俺も
618デフォルトの名無しさん:2005/04/19(火) 22:04:09
>>616
俺漏れも
619デフォルトの名無しさん:2005/04/19(火) 22:12:32
>>616
オイラも
620デフォルトの名無しさん:2005/04/19(火) 22:16:52
エクスプローラのファイルアイコンと同等のファイルのD&Dを
アプリケーションのアイコンが提供するにはどうしたらよいですか?
右ドラッグでコピーと移動が選べるものも含めて再現したいと思います。
621デフォルトの名無しさん:2005/04/19(火) 22:27:54
>>620
IDropSourceインタフェースとIDropTargetインタフェース
622デフォルトの名無しさん:2005/04/19(火) 23:04:07
>>617-619
経験あるんだったら、ちゃんと答えてやれよな
623デフォルトの名無しさん:2005/04/19(火) 23:23:10
>>622
は?バカ?
624デフォルトの名無しさん:2005/04/19(火) 23:46:28
>>615
そう言うことは、やったこと無いから、あくまで予想になるけど、
イベントIDと対応するメッセージを外部に用意して、
メッセージファイル(DLL、EXE)内でIDとメッセージの対応付けを
動的に行えば出来るんでないかなぁ。

イベントソースには適当なアプリケーション、
メッセージファイルに上記ファイル(DLL、EXE)を指定すればいけそうな気がしないでもない。
出来たら出来たで便利そうだねこれ。
625デフォルトの名無しさん:2005/04/19(火) 23:51:56
>>621
D&Dだけじゃなくて
動作もエクスプローラのファイルアイコンと同等にしたいのですが
626625:2005/04/19(火) 23:55:12
真似て実装するということではなくて、
DLLなりCOMなりから再利用したいんです。
627デフォルトの名無しさん:2005/04/19(火) 23:55:58
>>625
アイコンは画像なんだから、動作も糞もない。
628デフォルトの名無しさん:2005/04/20(水) 00:00:10
>>626
そんならIShellFolder::CreateViewObject()でIShellViewを取得する。
629デフォルトの名無しさん:2005/04/20(水) 00:00:11
>>627はスルーね
630デフォルトの名無しさん:2005/04/20(水) 00:03:38
アイコンが動作するわけがない。
631デフォルトの名無しさん:2005/04/20(水) 00:07:46
>>630はスルーね
632デフォルトの名無しさん:2005/04/20(水) 00:09:38
説明がよくありませんでした
アプリケーション1があるファイルをあつかっているときに
エクスプローラのファイルアイコンのドラッグアンドドロップを受け付けるアプリケーション2に対して
アプリケーション1からアプリケーション2に
エクスプローラ同様のドラッグアンドドロップを行えるようにアプリケーション1を作りたいのですがどうしたらいいですか?
IDropSourceの何らかの実装を再利用するのかと思うのですが
633デフォルトの名無しさん:2005/04/20(水) 00:17:05
>>632
インタフェースに実装はないぞ。
OLEDnDのやりかた調べれば分かると思うがIDropSourceからCF_HDROPなデータを送りつければいい。
エクスプローラのアイコン云々がドラッグ時の物ならMSDNかPSDKでIDropTarget調べれ。
634デフォルトの名無しさん:2005/04/20(水) 00:21:35
>>633
揚げ足取ってんの?
635625:2005/04/20(水) 00:27:53
エクスプローラと同等に偽装しないといけないのは
IDataTargetのほうでした
でもどうするかはまだ分かりません
636625:2005/04/20(水) 00:28:27
IDataObjectでした
637デフォルトの名無しさん:2005/04/20(水) 00:41:05
>>634
話に付いて来れてないだろ
638デフォルトの名無しさん:2005/04/20(水) 00:58:23
>>637
そうかも
639デフォルトの名無しさん:2005/04/20(水) 01:01:46
>>615
メッセージ自体は自由に書けると思う。

ポイントは、
イベントビューワ等で表示する時点で、メッセージのリソースを参照している
ということ。

試しにイベントビューワでログを保存して、
メッセージのリソースをインストールしていないPCで、表示してみるといい。
640デフォルトの名無しさん:2005/04/20(水) 01:01:47
IDropTarget::DragEnter()のDWORD * pdwEffect
ようするに受け入れ側の実装に依存。
まともなアプリならドロップされたデータがファイルなら普通にエクスプローラと同じ動作をする。
641625:2005/04/20(水) 01:09:26
>>633
理解できました、ありがとうございます
642639:2005/04/20(水) 05:51:51
ごめん

×メッセージ自体は自由に書けると思う。
○イベント自体は自由に書けると思う。
643615:2005/04/20(水) 07:49:03
>>624
その対応付けを動的に行うってのはどうすればいいのでしょうか?


>>639
そうなんですよ。
DLLなんかの無いマシンでイベントログを読み込ませると
「DLLが見つかりませんでした〜」というメッセージが出ますよね。


DLLやEXEを事前に置いておかなければいけないということは、
イベントIDや種類(情報、警告など)は固定になってしまうのでしょうか?
もちろん、事前に何種類か作っておいて入れ替えるというのは可能でしょうが、
完全に自由に出力させるというのは無理でしょうか?
644デフォルトの名無しさん:2005/04/20(水) 08:22:11
なんで全部質問するの?
645デフォルトの名無しさん:2005/04/20(水) 08:50:10
SetCaretPosがうまく機能しません。なぜでしょうか?
646デフォルトの名無しさん:2005/04/20(水) 09:30:46
>>645
ソースは?
647デフォルトの名無しさん:2005/04/20(水) 09:37:31
ソースは秘密です
648デフォルトの名無しさん:2005/04/20(水) 09:44:57
あっそ。じゃあ誰も相手にしてくれないね。
649デフォルトの名無しさん:2005/04/20(水) 10:21:04
エディットコントロールのプロシージャでエディットコントロールが
生成される直前、またはされたあとに来るメッセージはなんでしょうか?教えてくださいお願いします
650デフォルトの名無しさん:2005/04/20(水) 10:37:29
Spy++というツールをご存知ですか?
651デフォルトの名無しさん:2005/04/20(水) 10:45:37
拾いすぎて何がなんだかわかりません
652デフォルトの名無しさん:2005/04/20(水) 11:00:45
WM_KILLFOCUSイベントを取得したとき
これをキャンセルしたいのですがどうしたらよいでしょうか?
653デフォルトの名無しさん:2005/04/20(水) 11:03:28
>>652
何でもかんでも質問していると上司や先輩等に
嫌がられませんか?

普通はここまで調べたけどここから先がよく分からない、
というところまでは最低提示しますよね。
654デフォルトの名無しさん:2005/04/20(水) 11:04:29
>>651
だから何?
655デフォルトの名無しさん:2005/04/20(水) 11:05:39
普通じゃないので提示することはできません
656デフォルトの名無しさん:2005/04/20(水) 11:13:40
>>655
じゃあ回答は付かないと思いますが、それでいいですか?
657デフォルトの名無しさん:2005/04/20(水) 11:43:49
>>643
IDは使う予定のものをあらかじめ全て用意しておく以外無いと思います。
ERROR等の種類はログ出力時に指定するものなので、これは関係ないですね。

具体的にやりたいことが知りたいところです。
658デフォルトの名無しさん:2005/04/20(水) 11:51:51
>>649
コントロールもウィンドウの一種である事はご存じか?
659デフォルトの名無しさん:2005/04/20(水) 11:55:22
>>658
あまり人を馬鹿にしないでください
660639:2005/04/20(水) 16:05:06
>>643
DLL見つからないエラーは出たっけ?

Windowsに標準添付のイベントビューワは、
何も言わずに、フォーマットせずに表示するよ。

で、基本的にイベントログの概念わかってないでしょ。

ログの容量を節約したり、自動化処理をしやすくしたり、多言語対応のために、
メッセージの固定部分を毎回書かずにリソースに定義して、
人間に見せる時にフォーマットして表示する、っていうものなの。

定義せずに何でも書きたければ、
%1s
とだけ書いたイベントログを定義してください。

.NET Frameworkについてるイベントログの機能も、そうやってますから。
661660:2005/04/20(水) 16:25:13
ま、私もよく分からず使ってるんですけどね。
結局動いてナンボでしょ。
662デフォルトの名無しさん:2005/04/20(水) 16:35:47
>>661
ゲイシさん、こんなとこに来ちゃダメ!!
663デフォルトの名無しさん:2005/04/20(水) 18:28:58
CoCreateInstanceなのですが、
このCoには何か深い意味があるのでしょうか?
664デフォルトの名無しさん:2005/04/20(水) 18:41:15
COM
665デフォルトの名無しさん:2005/04/20(水) 18:42:01
Component Objectの略かな?
666デフォルトの名無しさん:2005/04/20(水) 18:42:32
COM = Component Object Model
CoCreateInstance = Conponent Object Create Instance
667デフォルトの名無しさん:2005/04/20(水) 18:55:55
>>649
エディトコントロールに限らずウィンドウが作られるときには必ずWM_CREATEが送られる。
(その前にWM_NCCREATEなども送られるが)
共にCreateWindow(Ex)から帰ってくる前に送られるからもしサブクラス化してもこれらのメッセージは捕まえられない。
668615:2005/04/20(水) 21:45:53
イベントログが分かっているかと言われれば微妙ですが・・
そもそもメッセージコンパイラがよくわからないです。

それはともかく、このサイトを見てみたところ、全IDのDLLを事前に作っておけばよさそうです。
ttp://www.monyo.com/technical/products/evt_messages/

ソースがついていたので、これを見て自分好みに変えてみます。
669デフォルトの名無しさん:2005/04/20(水) 22:24:11
以下のような構造体で、bmpとmaskの両方にCreateCompatibleBitmapで
メモリを割り当てると、画像の表示速度が極端に遅くなります。
サイズは、共に512X512、ビット数はディスプレイと同じ16です。
また、表示の内容としては、正しく表示されます。

bmpの時だけだったり、両方の場合でも画像のサイズが
小さければ(96X128とか)それが起こりません。
またメモリの割り当てを、他の所で無駄にたくさんやってみても大丈夫でした。

極端に遅くなる原因は、ひとつの構造体にたくさんのメモリを使った事と
思われますが、メモリ量の制限とか決まり事があったり、
また原因が他にありそうなら、教えてください。

typedef struct
{
int sizeX, sizeY; //チップセットのサイズ
HBITMAP bmp; //チップセット 透過色が白 透過しない場合はそのままの画像
HBITMAP mask; //マスク 透過色が黒 透過しない場合は使わない
int spot; //どの位置の色を透過するか 正:左上 負:左下 0:色で透過する
COLORREF color; //透過する色の種類 0以上:透過する色 負:位置で透過する
}CURSOR_MAP_CHIPSET;
670デフォルトの名無しさん:2005/04/20(水) 22:37:09
へー、面白いな
671デフォルトの名無しさん:2005/04/20(水) 22:58:51
>>669
ちなみにその現象が起きたOSを教えてください。
672669:2005/04/20(水) 23:25:01
原因は違う場所にあるかもしれません。
いろいろパターンを変えて実験していた所、
maskを使わない場合でも遅くなってしまいました。

ただ、LoadImageでメモリの確保、画像の表示を行った時は、遅くならなく、
CreateCompatibleBitmapで確保したものにBitBltで表示した時は遅くなりました。
また、CreateCompatibleBitmapの前にGetDC作るhDCを、
NULLでやると遅くなるが、hWndでやると遅くなりませんでした。
しかし、またNULLに戻した所遅くなりませんでした。
何が原因かさっぱりです。

>>670
面白くないです・・。
ここらが原因と分かるまでにも、かなり時間がかかりました。

>>671
Meです。
673デフォルトの名無しさん:2005/04/21(木) 00:17:29
実際にBitBltしているあたりのコードも見せてもらえると追試出来るんだけどね。
俺はしないけど。
674デフォルトの名無しさん:2005/04/21(木) 00:21:51
>>672
プログラムよりデバック環境の影響のような気がするが。
IDEじゃなくて素の.exeでも起きるか?
675デフォルトの名無しさん:2005/04/21(木) 00:47:24
GDIでもビデオメモリに確保され、アクセらレーションが効くことがあるトカないトカ
と、どこかで見た記憶があるんだが思い出せない。
676669:2005/04/21(木) 01:05:35
>>673
ソースはここの物と殆ど同じです。
http://www14.big.or.jp/~ken1/tech/tech9.html
ただ、表示する物が原因ではないと思います。
CreateCompatibleBitmapだけした状態ので実験してみた所、
(表示内容は変な初期の物)遅いのは変わりませんでした。

>>674
VCのDebug、Release、BCCでコンパイルしましたが、同じ動作です。
ビットマップはリソースではなく、外部ファイルに置いています。

>>675
そのキーワードを元に調べてみたいと思います。
677デフォルトの名無しさん:2005/04/21(木) 01:06:55
やねうらお方面じゃね?
678669:2005/04/21(木) 01:30:41
>>677
なんの言葉だと思いましたが、人の名前ですかね。
サイトが見つかったので、調べてみたいと思います。
http://www.sun-inet.or.jp/~yaneurao/intensive/diw1.html
679デフォルトの名無しさん:2005/04/21(木) 02:26:35
FO特化とかやってる奴って計算できない馬鹿だろ?

たかだか氷ダメ38%のためにスキル19ポイントも無駄にするのは
全く馬鹿としか言い様がない。
680デフォルトの名無しさん:2005/04/21(木) 02:47:17
エクスプローラのスタートメニューやお気に入りなどで使われている、
アイコンつきポップアップメニューを再利用する方法はないでしょうか?
681デフォルトの名無しさん:2005/04/21(木) 05:31:44
各マシン固有というか一意の文字列もしくは数値を生成する方法はないでしょうか。
何度生成しても同じものが得られるようにしたいのですが。
いまのところLANカードのmacアドレスを考えているのですが、偽装もできるしLANのない機種もあるので、もっとよい方法を探しております。
682デフォルトの名無しさん:2005/04/21(木) 06:46:47
>>679
どうした?何怒ってるの?
683デフォルトの名無しさん:2005/04/21(木) 06:49:40
>>681
MSはこうやってるらしい
http://www.microsoft.com/japan/technet/prodtechnol/winxppro/evaluate/xpactiv.mspx#EBAA

要件によってはSIDとかOSのシリアル(取得する方法知らないけど)とか、
併用してもいいんじゃないだろうか。
684デフォルトの名無しさん:2005/04/21(木) 07:19:58
>>680
再利用?
自作アプリでスタートメニューと同じ物を表示させたいってこと?
685680:2005/04/21(木) 07:54:47
>>684
スタートメニューそのままじゃなくて自作アプリで
任意のフォルダなり、自分で項目を作ったり
D&D対応してて何気に高機能なので

クラス名が分かればできそうなんですけど
Spy++で見る前に消えちゃうんで
686デフォルトの名無しさん:2005/04/21(木) 08:57:23
ゲームのジョイスティックやキー入力をエミュレートすることは可能ですか。
マウスが使えるゲームは大抵 mouse_eventやkeybd_event でエミュレートできますが、
DirectInputを使っているのかキー入力エミュレートできないゲームがあります。
仮想ジョイスティックドライバなどを作らないという前提でぬるぽ。
687デフォルトの名無しさん:2005/04/21(木) 09:00:18
>>685
クラス名が分かっても、そんな説明しか書けない人に
書けるのかなぁ
688デフォルトの名無しさん:2005/04/21(木) 10:31:59
>>685
クラス名はToolbarWindow32だお。
なんとか出来たら教えてちょ。
689657:2005/04/21(木) 18:32:46
>>668
やるのは止めませんが本当にそういうことがやりたいのでしょうか。

仮に自作プログラムでプログラム内で整形した任意の文字列をイベントログに
出力したいという場合でも、メッセージが"%1"のIDを1個だけ作っておけばよい
と思います(推奨される方法ではないと思いますが)。

正直やりたいことが見えません……イベントログの仕組みのどのあたりが問題なんだか。
690デフォルトの名無しさん:2005/04/21(木) 20:33:45
>>689
分からないのに何を出ばっとるんだ?君は
691デフォルトの名無しさん:2005/04/21(木) 21:06:06
ワラタ
692デフォルトの名無しさん:2005/04/21(木) 23:11:35
#include <windows.h>
#include <stdio.h>
#include <wininet.h>
main(){
HINTERNET hInet,hUrl;
char szBuf[128],szUrl[128],*lpszSrc;
DWORD dwRead,dwTotal = 0;
HGLOBAL hMem;
printf("URL--- ");
gets(szUrl);
hInet = InternetOpen("nekodemowakaru",INTERNET_OPEN_TYPE_PRECONFIG,NULL,NULL,0);
if(hInet == NULL){
perror("オープンエラー");
return -2;}
hUrl = InternetOpenUrl(hInet,szUrl,NULL,0,0,0);
if(hUrl == NULL){
perror("URLオープンエラー\n");
InternetCloseHandle(hInet);
return -3;}
693692:2005/04/21(木) 23:12:29
hMem = GlobalAlloc(GHND,1);
lpszSrc = (char *)GlobalLock(hMem);
while(1){
InternetReadFile(
hUrl,szBuf,(DWORD)sizeof(szBuf)-1,&dwRead);
szBuf[dwRead] = '\0';
if(dwRead == 0)
break;
dwTotal += dwRead;
hMem = GlobalReAlloc(hMem,dwTotal,GMEM_MOVEABLE);
if(hMem = NULL){
perror("再アロケート失敗");}
lpszSrc = (char *)GlobalLock(hMem);
if(lpszSrc == NULL){
perror("メモリ確保に失敗");
break;}
strcat(lpszSrc,szBuf);}
printf("%s",lpszSrc);
GlobalUnlock(hMem);
GlobalFree(hMem);
InternetCloseHandle(hUrl);
InternetCloseHandle(hInet);
return 0;}
参考書を見て上のプログラムを作成したのですが、実行してURLを入れてみたところ"メモリ確保に失敗"のメッセージが出力されてしまいました。
考えてみたものの原因が分かりません。どなたか教えてください。お願いします。
694615:2005/04/21(木) 23:19:03
>>689
>やるのは止めませんが本当にそういうことがやりたいのでしょうか。

そうなんです。
アプリケーションを作ってそのアプリのエラーなどをイベントログに書き込みたい
のではなく、イベントログに書き込むテスト用のツールが作りたかったのです。

任意のソース、イベントIDで書き込むというのは出来たのですが、カテゴリ(分類)と
ユーザの指定の仕方が分かりません。

ヘルプ見るとユーザはユーザーのセキュリティ識別子を入れると書いてあります。
このSIDの取得の仕方が分かればなんとかなりそうですが、その取得方法が分かりません。。
カテゴリについては全く分からないです。
メッセージファイルに指定するのでしょうか?
695デフォルトの名無しさん:2005/04/21(木) 23:46:29
>>693
=
696デフォルトの名無しさん:2005/04/21(木) 23:48:35
>全IDのDLLを事前に作っておけばよさそうです。

まじですか
697デフォルトの名無しさん:2005/04/21(木) 23:51:21
>>693
if(hMem = NULL){
perror("再アロケート失敗");}
698デフォルトの名無しさん:2005/04/21(木) 23:52:33
hMemの値をデバッガやprintfで確認する、ということをしないのは何故だろう?
699デフォルトの名無しさん:2005/04/21(木) 23:56:42
>>694
LookupAccountName
カテゴリは何を指定してもいい。
700デフォルトの名無しさん:2005/04/21(木) 23:58:48
>>695
氏ね

>>697
もっと氏ね
701700:2005/04/22(金) 00:00:00
あ、ごめん。マジな指摘だったのか。
元ネタ読んでなかったわ。
まさかそんなレベルの質問とは思わなかったからさ。
すまん。
702692:2005/04/22(金) 00:11:55
>>965さん
>>967さん
どこが悪いのか分かりました。ありがとうございましたorz
703デフォルトの名無しさん:2005/04/22(金) 00:15:29
誤爆ですか?
704デフォルトの名無しさん:2005/04/22(金) 00:17:44
705692:2005/04/22(金) 00:19:06
吊ってきます。
706デフォルトの名無しさん:2005/04/22(金) 00:22:25
>>702
--
702 692  2005/04/22(金) 00:11:55

>>965さん
>>967さん
--
ネタか釣りか、天然なのか?
707デフォルトの名無しさん:2005/04/22(金) 01:09:20

 な に こ の レ ベ ル ひ っく す ぎー ーーーー

708デフォルトの名無しさん:2005/04/22(金) 01:10:06
自作自演だろ
709デフォルトの名無しさん:2005/04/22(金) 01:11:51
もうここの常連は駄目だけどさ、
質問しに来た君ならまだ間に合うと思うんだ。

もっとマシなスレに行ったほうがいいよ。
可能ならば2chよりもっと外へ

だから、ここに書いてはいけない。
君なら希望がもてるんだ。
君が最後の・・・・
710デフォルトの名無しさん:2005/04/22(金) 02:57:30
Windows XP で、ツリービューの親ウィンドウを SetParent() で変更し、
ツリービューの上でマウスの右クリックを行うと、
WM_CONTEXTMENU が新しい親でなく古い親の方に送られてしまうようです。
新しい親に送られるのが自然な動作だと思うのですが、これは仕様でしょうか?
仕様でないとすると、私の側にどのような不備が考えられるでしょうか?
なお、リストビューでは期待通り新しい親の方に送られているようです。
711デフォルトの名無しさん:2005/04/22(金) 07:11:14
>>709
どうした?
712初心者(免罪符):2005/04/22(金) 11:59:33
すいません、wsprintfで文字列「あ」を16進数の「82A0」に
変換した後、wsprintfで再び「あ」に戻したいのですがどうすればいいのでしょうか?教えてくださいお願いします
713デフォルトの名無しさん:2005/04/22(金) 12:06:00
イヤです
714デフォルトの名無しさん:2005/04/22(金) 12:13:39
strtol() 使え

const char *src = "あ";
char s[256];
// "82A0" に変換
wsprintf(s, "%02X%02X", src[0] & 0xFF, src[1] & 0xFF);
// "あ" に再変換
int i = strtol(s, NULL, 16);
wsprintf(s, "%c%c", i >> 8, i);
715デフォルトの名無しさん:2005/04/22(金) 12:15:10
wsprintf()じゃなくていいなら。
char foo[] = "82A0";
int bar = strtol(foo, NULL, 16);
printf("この時点でbarには(0x82a0)が入っている:%#x\n, bar);
char baz[3];
baz[0] = bar >> 8;
baz[1] = bar & 0xff;
baz[2] = '\0';
printf("これでbazには「あ」が入っている:%s\n", baz);
つーか、スレ違いっぽいな。
716デフォルトの名無しさん:2005/04/22(金) 14:20:54
>>694
まずイベントログへの書き込みを行うのに、メッセージリソースの有り無しは
関係ない(対応するIDがない、DLLそのものが無い場合でも問題ない)という
部分はよいでしょうか。

任意のソース・IDでイベントを書き込むために、事前にわざわざDLLを用意しておく
必要は無いはずです。

カテゴリに関しても出力するプログラムが勝手に好きな値を出力すればよいだけ
のようです(ただし1から始まる連番をつけるらしい)。

SIDはセキュリティ周りを調べると出てくるかも(よく分かりません)。


書き込みであれこれ苦労しているようですが、むしろイベントログを読み取って
表示するビュアーを開発した方がよいのではないでしょうか。自前のビュアー
であれば、どんなIDやカテゴリであっても自分の好きなように表示すればよいと思います。
717初心者(免罪符):2005/04/22(金) 14:59:11
>>714-715
できました。どうもです
718デフォルトの名無しさん:2005/04/22(金) 16:04:58
初心者(免罪符)
719デフォルトの名無しさん:2005/04/22(金) 17:45:43
NTFSのセキュリティの詳細設定画面(フォルダ→プロパティ→セキュリティ→詳細設定)
の「子オブジェクトに適用するアクセス許可エントリを親から取得し、それらをここで明示的に
定義されているものに含める」のオプションの値を取得したのですが、
なんかのAPI呼んだら取得できるのでしょうか?
720デフォルトの名無しさん:2005/04/22(金) 19:01:24
>>712
>初心者(免罪符)

死んだ方がいいよ。
721デフォルトの名無しさん:2005/04/22(金) 19:25:19
(´Д`;)オマエモナー
722デフォルトの名無しさん:2005/04/22(金) 19:28:13
>>719
GetFileSecurityあたりからたどっていって
ACE引っ張り出したら書いてないかな。(未確認)
723デフォルトの名無しさん:2005/04/22(金) 22:20:00
リソースのビットマップを表示するとき、(char *)IDB_BITMAP1
みたいにキャストして表示しますが、
IDB_BITMAP1の元のファイル名を、文字列型に代入する方法を教えてください。
以下の方法ではダメでした。

char chip[6][32] = {(char *)IDB_BITMAP1, (char *)IDB_BITMAP2, ...};
chip[0] = (char *)IDB_BITMAP1;
strcpy(chip[0], (char *)IDB_BITMAP1);
724デフォルトの名無しさん:2005/04/22(金) 22:52:07
>>723
リソースには「元ファイル名」は含まれていないので、APIで取り出すこともできません。
725723:2005/04/22(金) 23:06:24
>>724
分かりました。ありがとうございました。
726デフォルトの名無しさん:2005/04/22(金) 23:21:16
>>725
えー、それでいいのかよー
727デフォルトの名無しさん:2005/04/22(金) 23:28:46
直接リソースのセクション読み込め
728デフォルトの名無しさん:2005/04/22(金) 23:56:17
WH_MOUSEをセットしたフックプロシージャで、マウスクリックされたときの状態を知る方法ってないんでしょうか?
例えば左クリックダウンの状態で右クリックとか。
あとフックプロシージャではWM_MOUSEWHEELってうけとれないんでしょうか?
なぜか定義されてないっていわれるんですが。
729デフォルトの名無しさん:2005/04/23(土) 00:19:53
他プロセスのアカウント名(ユーザ名)の取得方法について(WindowsXP Home)

下のコードで、pid を与えてszAccountNameにアカウント名(ユーザ名)を取得したいのだが、
自分のプロセスとSYSTEMプロセスについてはOpenProcess()が成功するけど、他ユーザの
プロセスについてのOpenProcess()が失敗する。

プログラムは管理者権限があるアカウントで実行している。
いったいどこが悪いんだ?

HANDLE hProcess, hAccessToken;
UCHAR InfoBuffer[1000],szAccountName[200], szDomainName[200];
PTOKEN_USER pTokenUser = (PTOKEN_USER)InfoBuffer;
DWORD dwInfoBufferSize,dwAccountSize = 200, dwDomainSize = 200;
SID_NAME_USE snu;

hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, TRUE, pid);
if (hProcess == NULL) {
return NULL;
}

OpenProcessToken(hProcess,TOKEN_READ,&hAccessToken);

GetTokenInformation(hAccessToken,TokenUser,InfoBuffer, 1000, &dwInfoBufferSize);

LookupAccountSid(NULL, pTokenUser->User.Sid, (char *)szAccountName,
&dwAccountSize, (char *)szDomainName, &dwDomainSize, &snu);

CloseHandle(hProcess);

730デフォルトの名無しさん:2005/04/23(土) 00:20:23
フックの仕方が悪いんだろうな
それとヘッダの中身読む習慣つけような
731デフォルトの名無しさん:2005/04/23(土) 00:21:44
>>729
無茶苦茶だな
MSDNのサンプルでも読んでこい
732デフォルトの名無しさん:2005/04/23(土) 01:24:55
↓俺は質問には答えない。うせろ
733デフォルトの名無しさん:2005/04/23(土) 01:34:37
俺の話を聞け!
734デフォルトの名無しさん:2005/04/23(土) 01:43:23
ぉお〜れんのぅはんなぁしぃぅをぅきぃけぇ〜〜♪
735デフォルトの名無しさん:2005/04/23(土) 02:00:20
俺の話はぬるぽだ!
736デフォルトの名無しさん:2005/04/23(土) 02:17:11
頭おかしいんかお前ら
737デフォルトの名無しさん:2005/04/23(土) 03:11:54
メインウィンドウを持たない常駐アプリで、
ウィンドウメッセージを受け取るために作成する不可視のウィンドウはどれが普通ですか?

1) HWND_MESSAGEでメッセージ専用ウィンドウ
2) SW_HIDEで不可視ウィンドウ
3) それ以外
4) そもそもそんなウィンドウは不要
738デフォルトの名無しさん:2005/04/23(土) 03:18:57
>>728
GetKeyState使え>状態
MOUSEHOOKSTRUCTEX使え>ホイール
739デフォルトの名無しさん:2005/04/23(土) 06:13:44
メモリ内のデータにアクセスするのはどうすればよいのでしょうか?
740デフォルトの名無しさん:2005/04/23(土) 06:57:24
>>728
「〜ないんでしょうか」がなぜ失礼だと思わないのか
教えてください。
741デフォルトの名無しさん:2005/04/23(土) 08:40:59
>>739
こういう感じですか?
http://www.codeproject.com/threads/int64_memsteal.asp

パスワードクラッカーやBOTツール作るんですね!!! 頑張って下さい!応援してます
742デフォルトの名無しさん:2005/04/23(土) 08:45:28
>739
適当なアドレスを適当なポインタ型に変換して読み書きするだけ。
743デフォルトの名無しさん:2005/04/23(土) 10:38:37
モーダルな検索ダイアログを作成したいのですがどうすればいいか教えてください
744デフォルトの名無しさん:2005/04/23(土) 10:39:44
>>743
猫わか見ろ
745デフォルトの名無しさん:2005/04/23(土) 10:47:47
猫のはモードレスだと思うのですが
746デフォルトの名無しさん:2005/04/23(土) 10:54:23
ふつうに DialogBox() 使えばいいんじゃないのか?
747743:2005/04/23(土) 11:04:02
すいません、やっぱいいです
748デフォルトの名無しさん:2005/04/23(土) 11:25:44
>>744
猫わかだって!
a--hhyahhyahhyahhyahhyahhyahhyahhyahhyahhya!!wwww
749デフォルトの名無しさん:2005/04/23(土) 11:32:00
吸ってください。
750デフォルトの名無しさん:2005/04/23(土) 11:37:44
犬老
751デフォルトの名無しさん:2005/04/23(土) 11:47:29
ニャー
752デフォルトの名無しさん:2005/04/23(土) 12:00:26
CreateDialogでダイアログを2つ作ったのですが、
メッセージループを回すと正常に回ってないようです
(片方しか反応しない)
うまくダイアログを2つ動かす方法をおしえてください!
753デフォルトの名無しさん:2005/04/23(土) 12:01:03
ソース出せ
754デフォルトの名無しさん:2005/04/23(土) 12:02:03
つ[ウスター]
755デフォルトの名無しさん:2005/04/23(土) 12:03:01
756デフォルトの名無しさん:2005/04/23(土) 12:06:26
IsDialogMessage(hWnd..)のhWndが静的変数で、
複数のモーダルダイアログが自分勝手にその変数を書き換えているとか?
757デフォルトの名無しさん:2005/04/23(土) 12:34:14
猫わかって恥ずかしいの?
なんか本出してからサイトはなかなか更新されないみたいだね
758デフォルトの名無しさん:2005/04/23(土) 12:45:15
すいません、エディットコントロールのスクロールバーのつまみをクリックした場合の
SB_THUMBTRACKでの処理はふつうにできるのですがクリックしないで
SendMessage(hwnd, WM_VSCROLL,(WPARAM)SB_THUMBTRACK, 0);
のようにするとつまみが一番上に来てしまいます。なぜでしょうか?教えてください
759デフォルトの名無しさん:2005/04/23(土) 12:57:10
>>758
つまみが一番上に来るように書いてあるからです。
760デフォルトの名無しさん:2005/04/23(土) 14:13:58
>>754-755
面白くないですよ。

>>757
猫わかって略し方が恥ずかしい。
761758:2005/04/23(土) 14:42:19
原因がわかったのでもういいです
762デフォルトの名無しさん:2005/04/23(土) 15:05:12
>>761
そうそう。冷たい対応されるときは冷たくあしらってやれ!
763デフォルトの名無しさん:2005/04/23(土) 15:21:35
自分で0にしておいて、0になりましたって言われてもねぇ。
764デフォルトの名無しさん:2005/04/23(土) 15:46:38
>>763
頭大丈夫?わかってないんならでしゃばんなよ
765デフォルトの名無しさん:2005/04/23(土) 15:50:02
766デフォルトの名無しさん:2005/04/23(土) 15:51:10
767デフォルトの名無しさん:2005/04/23(土) 16:05:17
それをやるなら
>>766
>>764
で十分でしょ。わざわざ3つにする必要全然ないですけど。
768デフォルトの名無しさん:2005/04/23(土) 16:08:31
>>767
意味不明

>>759=>>763=>>765
769デフォルトの名無しさん:2005/04/23(土) 16:44:15
>>768
いや、全然意味は分かるけど?
770デフォルトの名無しさん:2005/04/23(土) 16:44:51
>>768
ギャハハ。途中から俺が割り込んだらすっかり混乱してやがるw
771デフォルトの名無しさん:2005/04/23(土) 16:47:12
なんだこの池沼は・・・
772デフォルトの名無しさん:2005/04/23(土) 16:57:00
>>771
>>768だろ?
773デフォルトの名無しさん:2005/04/23(土) 17:03:03
いつから池沼が湧くスレになったんだろここは・・・
774デフォルトの名無しさん:2005/04/23(土) 17:05:26
結局俺たちは、最後の最後まですれ違ったままになってしまった
その後、どういう偶然の結果か、回答者のいなくなったこのスレが巡り巡って俺の
775デフォルトの名無しさん:2005/04/23(土) 17:11:49
>>773
いつそうじゃなかったのか教えてくれよ。
776デフォルトの名無しさん:2005/04/23(土) 17:21:18
↓以下何も無かったかのように再開
777デフォルトの名無しさん:2005/04/23(土) 17:21:52
│    _、_
│  ヽ( ,_ノ`)ノ 残念 私のおいなりさんだ
│ へノ   /  
└→ ω ノ
       >
778デフォルトの名無しさん:2005/04/23(土) 18:47:47
>>737
何らかの操作を行うことでウィンドウを表示する可能性があるのなら(1)
表示させることが無ければ(2)
779デフォルトの名無しさん:2005/04/23(土) 19:38:58
急速にスレの質が上昇してまいりました
780デフォルトの名無しさん:2005/04/23(土) 20:41:49
だがそれがいい
781デフォルトの名無しさん:2005/04/23(土) 21:00:35
>>779
安心して。そんなことないから。
782デフォルトの名無しさん:2005/04/23(土) 22:04:04
そういえば、なぜ GetMessage( &msg, NULL, 0, 0 ) の
第二引数はいつも NULL なのですか?
783デフォルトの名無しさん:2005/04/23(土) 22:05:59
変えてみたら?
784デフォルトの名無しさん:2005/04/23(土) 22:08:53
というか、いつもじゃ無いし。
785デフォルトの名無しさん:2005/04/23(土) 22:46:14
>>782
hWnd メッセージの取得に使う(取得元)ウィンドウのハンドルを指定します。このウィンドウは、呼び出し側スレッドに所属していなければなりません。次の値には、特別な意味があります。
NULL:呼び出し側スレッドに所属する任意のウィンドウへ送信されたメッセージと、PostThreadMessage 関数を使って呼び出し側スレッドへポストされたスレッドメッセージを取得します。

http://www.microsoft.com/japan/msdn/library/ja/jpwinui/html/_win32_getmessage.asp?frame=true
786デフォルトの名無しさん:2005/04/23(土) 23:10:48
このようなサイトを見て頭が混乱したわけであります。じゃ、ウィンドウハンドル
をしていいのですね。
http://www.maa.spacetown.ne.jp/~fool/programer/memo/api32_memo.html
【つまり、GetMessageのhWndに真面目にウィンドウハンドルを入れると馬鹿を見る】
787デフォルトの名無しさん:2005/04/23(土) 23:22:48
世の中の大多数のWindowsソフトはGetDlgItem(無効なハンドル, 無効なID)やりまくりながら動いてる。
きちがいだ
788デフォルトの名無しさん:2005/04/24(日) 00:05:59
それで問題なく動いてしまうWindowsというOSは偉大だね!
789デフォルトの名無しさん:2005/04/24(日) 00:13:01
>>787みたいなことがあまりに普通に行われていることをMSは認識していて、
いろいろ策を講じている
790デフォルトの名無しさん:2005/04/24(日) 00:28:51
>787
ソースは?
791デフォルトの名無しさん:2005/04/24(日) 00:43:38
>>790
つ[ウスタ−]
792デフォルトの名無しさん:2005/04/24(日) 00:51:40
つ[濃口]
793デフォルトの名無しさん:2005/04/24(日) 00:53:18
3.1のころはそれで良く落ちてたんだよ
最近は不正なハンドル渡されたら無視してるけど
それだけでかなり安定するんだから不思議なもんだw
794デフォルトの名無しさん:2005/04/24(日) 03:50:24
専門書の初期の版で誤植や間違いがあるのはある程度は仕方がない。
ただ、正誤表をちゃんと出さないのは困る。
http://www.seshop.com/book/errata/
翔泳社は版ごとに整理して公開してる。
795737:2005/04/24(日) 04:23:31
>>778
最近スレが過疎気味で心配でしたが、回答ありがとうございます。
あと、ウィンドウを表示する可能性がなくても、タスクトレイにアイコンを入れてる場合は(TaskbarCreatedを待つ関係で)基本的にはトップレベルウィンドウにしておく方が良いみたいですね。
796739:2005/04/24(日) 07:45:32
>>741
うう、英語ですか・・頑張ります・・・
>パスワードクラッカーやBOTツール
それはもう超作りたいんですが・・・ゲームの改造です・・・すみません・・・orz

>>739
ですので、自分じゃないんです。他のブロックをいじろうと・・・

バカで申し訳ないですが、Windowsのメモリブロック管理構造?はどこでわかりますでしょうか・・・?(用語がわからない・・・)
797デフォルトの名無しさん:2005/04/24(日) 08:14:51
>>796
英語の文章は無視してコードだけを見るようにすれば何ともない。
798デフォルトの名無しさん:2005/04/24(日) 08:22:12
>>739
ゲームの改造なら
まず、ウィンドウを適当な方法でみっける→ウィンドウハンドルからPIDを得る→OpenProcess→WriteProcessMemoryでいんでね?
799デフォルトの名無しさん:2005/04/24(日) 09:22:16
>>798
出身どこ?「いんでね?」とか東京では誰も使いませんよ。
800デフォルトの名無しさん:2005/04/24(日) 09:32:12
>>799
俺使うよ。江戸っ子だけど。
801デフォルトの名無しさん:2005/04/24(日) 09:42:49
方言ではなくDQN言葉
802デフォルトの名無しさん:2005/04/24(日) 09:44:27
DQN言葉でもなんでも【いんでね】?
803デフォルトの名無しさん:2005/04/24(日) 09:47:22
漏れは江戸っ子じゃない東京もんだけど、いんでね?
804デフォルトの名無しさん:2005/04/24(日) 11:00:20
いんどね
805デフォルトの名無しさん:2005/04/24(日) 11:05:57
ダメでしょ
806デフォルトの名無しさん:2005/04/24(日) 11:06:16
去ぬ
807デフォルトの名無しさん:2005/04/24(日) 11:58:09
マウスメッセージやキーボードメッセージを全部真下のウィンドウに渡して
まるでそのウィンドウが存在しないかのように振る舞う方法があったはずなのですが
忘れてしまいました

リージョンは切りたくないです
やりたいことは半透明で最前面表示だけど、じゃまにはならないウィンドウを作ることです
808デフォルトの名無しさん:2005/04/24(日) 12:02:24
>>807
へー、面白いね。俺は分からないけどもし解決したら
教えて。
809デフォルトの名無しさん:2005/04/24(日) 12:04:43
忘れちまった悲しみよ
810807:2005/04/24(日) 12:15:24
どっかで見た覚えがあるんですが・・・
でもWindowFromPointとかで処理されるとおかしくなりそうだし、無理なのかな
811デフォルトの名無しさん:2005/04/24(日) 12:17:28
あーやったことあるんだけど・・・俺もわすれた・・・。
それこそ忘れるほどたいしたこと無い方法で出来たはずなんだけど・・・。
俺がやったときはキーボードまで透過できたかはわからないけど、
マウスイベントは透過してた。
812デフォルトの名無しさん:2005/04/24(日) 12:22:26
お前ら過去に書いたプログラムとかどう管理してんの?
813デフォルトの名無しさん:2005/04/24(日) 12:36:48
開発成果物はドキュメントも併せて全てVSSにぶっこんであるけど、
ただぶっこんであるだけ。ただの仕事の保険みたいなもん。
VSS使用以前の物についてはVSS入手後ぶち込んだ。

ツール系や自分用のナレッジのような物は管理してない。
むしろこっちが大事だろうからやらねばと思いつつ、早十ウン年。
814デフォルトの名無しさん:2005/04/24(日) 12:48:25
>>807
WS_EX_TRANSPARENT?
815デフォルトの名無しさん:2005/04/24(日) 12:54:04
>>799
東京人が使う言葉しか書いたらいけないという決まりでもあるの?
816デフォルトの名無しさん:2005/04/24(日) 13:00:40
>>799
こんにちは、東京都小笠原村沖ノ鳥島の人
817デフォルトの名無しさん:2005/04/24(日) 13:20:59
>>815
あるよ
818デフォルトの名無しさん:2005/04/24(日) 13:34:51
819デフォルトの名無しさん:2005/04/24(日) 13:43:36
>>812
WinCVS
820デフォルトの名無しさん:2005/04/24(日) 13:48:22
WinCVSはなんかクソっぽい臭いがするんだが
Tk使ってるからか
821デフォルトの名無しさん:2005/04/24(日) 13:54:00
VSSでいいじゃん。
822デフォルトの名無しさん:2005/04/24(日) 14:01:55
CVSはバイナリファイルの扱いが糞だった気がする
823デフォルトの名無しさん:2005/04/24(日) 14:17:48
漏れはCVS使っているが、WinCVSは個人用には使っていない。
バイナリファイルの扱いは確かにダメだが、個人ではバイナリファイルを管理しないので無問題。
824デフォルトの名無しさん:2005/04/24(日) 14:44:21
>>818
これ、ダイアログのフォルダ追加の意味がよくわからん。
フォルダをドラッグで入れた場合は大丈夫なんだけど、
フォルダ参照で追加しようとするとかならず失敗する。
それ以外はまあお手軽でいいんじゃないかな。
CVSの面倒な部分が排除されてるよ。

CVSは管理が面倒。
多人数で回したりコマンドライン大好きっ子な奴以外は使う必要ないな。
825デフォルトの名無しさん:2005/04/24(日) 15:29:05
>>821
「じゃん」って何処の言葉?
俺の住んでるところではあまり使われないが。
826デフォルトの名無しさん:2005/04/24(日) 15:32:22
>>825
名古屋に多い。
827デフォルトの名無しさん:2005/04/24(日) 15:43:58
じゃんは東京じゃん
828デフォルトの名無しさん:2005/04/24(日) 15:48:16
豆板じゃん
829デフォルトの名無しさん:2005/04/24(日) 16:00:21
はなわさん曰く神奈川らしいです
830デフォルトの名無しさん:2005/04/24(日) 16:30:24

               ,--─--. /ヽ ̄/
              /(ヽ) (イ)ヽ / ̄
             /ヽエエエエエメ
           /ヾ )。 | ,゚メ、
          (ニ] [ニ)'---回ン, ヽ_
             [ ̄ ̄]’ └─┘

           じゃんじゃじゃ〜ん
831デフォルトの名無しさん:2005/04/24(日) 16:52:53
急速にスレの質が低下してまいりました
832デフォルトの名無しさん:2005/04/24(日) 17:29:24
>>831
いや、いつもどおりでしょ
833デフォルトの名無しさん:2005/04/24(日) 19:39:43
ローカルフックとシステムフックってフックプロシージャをDLLにするだけの違い?
猫にかいてあるようにやってもできないぞ
834デフォルトの名無しさん:2005/04/24(日) 20:20:43
unsignedのデータ型の変数の文字列の長さを知りたいのですが
どうすればいいか教えてください。strlenで無理やりスタイルキャストしても正確に値が返りません
835デフォルトの名無しさん:2005/04/24(日) 20:28:03
>>834
C言語を勉強をし
さらに日本語を勉強してください。

私にはどちらが足りないのか判断しかねます。
836デフォルトの名無しさん:2005/04/24(日) 21:38:53
>>835
>>834の意味が分からないのには同感だけど、
あんたは分からないのになんで書き込むの?
放置以外ありえねーと思うんだけど。
おかげでオレのこんな無駄な書き込みが発生してしまい、
これに対して同様のツッコミも投稿されてしまうわけだ。
837デフォルトの名無しさん:2005/04/24(日) 21:44:20
>>834を俺が脳内補完解釈して回答。

WinAPIではそういう関数は存在しない。(俺の知る範囲では)
VCなら_scprintf()/_sctprintf()使え。

つうかこれ調べているときに初めてStrSafeの存在を知った。
DLLのことで悩む心配が要らないのは良いがBCCで使えないだろ。(ノД`)
838デフォルトの名無しさん:2005/04/24(日) 21:50:32
_scprintfなんてものがあったのかヨ
839デフォルトの名無しさん:2005/04/24(日) 21:57:41
>>837
うーん、言葉遣いがなってないですねぇ
840デフォルトの名無しさん:2005/04/24(日) 22:06:19
へえ、strsafe便利そうやん
platformsdk入れれば使えるみたいね
841834:2005/04/24(日) 22:09:19
直接配列の要素数カウントして引数で渡したのでもういいです
842デフォルトの名無しさん:2005/04/24(日) 22:15:00
>>841
そういうことかよ。
843デフォルトの名無しさん:2005/04/24(日) 22:33:59
そういうことも糞も834みてふつうにわからない時点で低脳すぎ。このスレもうだめだな
844デフォルトの名無しさん:2005/04/24(日) 22:40:29
っていうかここ2ヶ月ぐらいでめちゃくちゃスレが低脳化してないか?
いきなり低脳の煽り入るし。なんかプログラム板とは思えないんだけど・・・
845デフォルトの名無しさん:2005/04/24(日) 22:41:55
低いかどうかじゃなく、834見てわかるようなやつは異脳だ
846デフォルトの名無しさん:2005/04/24(日) 22:42:29
春は仕方ないだろ。
新入生、新社会人、新厨房ときたもんだ。
847デフォルトの名無しさん:2005/04/24(日) 22:45:30
新入生と新厨房の違いは何?
848デフォルトの名無しさん:2005/04/24(日) 22:53:49
新厨房は、新入生及び新社会人の一部。
849デフォルトの名無しさん:2005/04/24(日) 23:24:08
なんで厨房はAPIスレにくるんだろ。JAVAとかVBスレにでもいきゃいいのによ
850デフォルトの名無しさん:2005/04/24(日) 23:25:49
>>849
厨房だから
851デフォルトの名無しさん:2005/04/24(日) 23:30:47
>>849
JavaとかVBを使ってないから
852デフォルトの名無しさん:2005/04/24(日) 23:36:04
一人の人間がずっと自演している予感
853デフォルトの名無しさん:2005/04/24(日) 23:47:00
みんな理解しようと言う努力が足り無すぎ
834を脳内補足して俺が完璧な回答を・・・

strlen(typeid(a).name());
普通にstrlenで出来るが板違い棚。API関係ねー。
854デフォルトの名無しさん:2005/04/24(日) 23:57:32
そこはあえてlstrlenでAPIの話にしてやるとか。
855デフォルトの名無しさん:2005/04/25(月) 00:46:11
>>852 自分のことかい?
856デフォルトの名無しさん:2005/04/25(月) 00:47:38
>>853
板違いですか・・・
どの板が適切なのでしょうか?
857デフォルトの名無しさん:2005/04/25(月) 03:54:48
OS板かな
858デフォルトの名無しさん:2005/04/25(月) 10:41:06
CreateWindow(Ex)で子ウィンドウ(ボタンなどコントロール類ではなく普通の窓)を作り、
これを不可視にして、
かつマウスイベントなどはきちんと受け取りたい
のですが、どうしたらよいでしょうか。

例えば親ウィンドウの色と同化させて擬似的に見えなくするとかは都合が悪いです。
それ以外の方法がありましたら教えて下さい。お願いします。
859デフォルトの名無しさん:2005/04/25(月) 12:19:36
>>858
レイヤード ウィンドウとか
860デフォルトの名無しさん:2005/04/25(月) 12:37:19
すいません、どなたかお願いいたします。

fh=CreateFile(szFn,GENERIC_READ,0,NULL,OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,NULL); // ファイルオープン

lpBuf=GlobalAlloc(GPTR,GetFileSize(fh,NULL)); // バッファ確保

ReadFile(fh,lpBuf,GetFileSize(fh,NULL),&dummy,NULL);

lpInfo=(LPBITMAPINFO)(lpBuf+sizeof(BITMAPFILEHEADER));

offset=*(LPDWORD)(lpBuf+10); // ビットマップまでのオフセット
lpBMP=lpBuf+offset; // ビットマップバッファのポインタ

CloseHandle(fh);

これでビットマップを二つ読み込んで重ねてマスク部分を透過させているのですが
横幅が奇数などになるとうまく透過させることができません。
重ね方は3バイト見ていって0xff 0x00 0xffだったら描画しないとしています。
4の倍数じゃないとうまく表示されないのはわかっているのでがうまくできないのです。

どなたかいいサイト、参考書、やり方などご教授お願いします;;
861デフォルトの名無しさん:2005/04/25(月) 12:50:16
4バイトアラインメント
862デフォルトの名無しさん:2005/04/25(月) 14:42:51
>>858
親ウィンドウにWS_CLIPCHILDRENを指定しないようにして、
子ウィンドウのhbrBackgroundをNULLにしとけばいいんじゃね?

>>860
BMPはスキャンラインごとにDWORD境界にアライメントされている。
863デフォルトの名無しさん:2005/04/25(月) 21:19:28
コールバック関数をクラスのメンバにするのに
staticにもせずSetPropやGetWindowLongなども使わずにやる方法ってありますか?
864デフォルトの名無しさん:2005/04/25(月) 21:25:17
>>863
ATLのようにサンク関数を生成する。
mov ecx, hoge
jmp hoge::callback
みたいなコードをhogeを埋め込んで生成するっていう手法。
やり方がわからない場合には、少し周辺知識とか勉強する必要がある。
865デフォルトの名無しさん:2005/04/25(月) 21:44:20
>>864
人の書いたコードを見てるんですが、
そんなむずかしいっぽいことはしてないみたいです。
基底クラスでなにごともなさげに普通にvirtualでコールバック関数を宣言して、
派生クラスで実装してるみたいなんですが、他に考えられることはあるでしょうか。
866デフォルトの名無しさん:2005/04/25(月) 21:46:09
なら、やっぱりどっかにstaticなサンク関数があるんでないの。
というか、WNDPROCがどうなってるかくらい検索かければ判るだろ。
867デフォルトの名無しさん:2005/04/25(月) 21:53:04
「だろ」もういい加減やめよう。
868デフォルトの名無しさん:2005/04/25(月) 21:54:05
なんでだろ
869デフォルトの名無しさん:2005/04/25(月) 22:12:29
CreateProcessでコンソールのプログラムを起動しています。
このプログラムは普通に(DOSプロンプト/コマンドプロンプトで)起動すれば
Ctrl+Cで終了することになっています。

このCtrl+Cの動作は起動元のプロセスからはどうやったらいいんでしょうか?

勘でパイプからEOF(\z)を流せばいけるかと思ったのですがそれは無理でした。
870デフォルトの名無しさん:2005/04/25(月) 22:23:46
GenerateConsoleCtrlEvent
871デフォルトの名無しさん:2005/04/25(月) 22:31:00
>>866
staticな関数自体一個も無いようなのですが。
872デフォルトの名無しさん:2005/04/25(月) 22:34:12
WNDPROCとして何渡してるかたしかめてみ
873デフォルトの名無しさん:2005/04/25(月) 22:37:55
別にクラスのstaticメソッドでなくても、C的な「関数」を
使ったスタブもあろうに。
874デフォルトの名無しさん:2005/04/25(月) 22:39:03
>>872
普通にウィンドウハンドルと、UINTでメッセージと、WPARAM、LPARAMを
引数に持っていますが、
そういう事じゃないですか?
875デフォルトの名無しさん:2005/04/25(月) 22:44:32
……WNDCLASSのメンバのpfnWndProcはどの関数だ、ってことだよ……
876デフォルトの名無しさん:2005/04/25(月) 22:48:48
staticなメンバ関数とそうでない関数がどう違うのか知ってれば普通に渡せるはずないってわかるのに‥‥
877865:2005/04/25(月) 23:03:44
ものすごいアホな勘違いをしていたかもしれません。
ちょっとチェックをしてみます。結果がわかったら報告します。
とりあえず有難うございました。
878869:2005/04/25(月) 23:06:58
>>870
いけるようです。サンクスです。
879デフォルトの名無しさん:2005/04/26(火) 00:44:46
>>799
どこん方言ば喋ろうが勝手たいね。別によかどが。
880デフォルトの名無しさん:2005/04/26(火) 01:51:01
CreateMutexと
if( GetLastError() == ERROR_ALREADY_EXISTS
の判断で2重起動を防止するときに、
関連付けた拡張子からのダブルクリック起動だと、
2重起動とみなしてくれないのですが、どうしてでしょうか?
(EXEを起動させたのと、拡張子をダブルクリック起動したのと共存してしまう)

おしえてください
881863,865,877:2005/04/26(火) 05:59:43
報告します。
問題のコールバック関数は、本物のウィンドウと関連付けされているわけではなくて、
ただ単に普通の関数として定義されているだけで、
グローバルに定義されているメインウィンドウのコールバック関数のメッセージプロシージャから
普通の関数として呼ばれ、メッセージを丸投げされてるだけでした。

本物の子ウィンドウを作っているわけではなく、
メインウィンドウのメッセージをただ丸ごともらって、
それを自前で処理しているだけでした。

CALLBACKって付けただけでなんかOSから勝手に呼ばれるものかと思ってたんで(この辺の動きはよく理解してないのですが。)、
これが付いてる関数をクラスのメンバにしただけでコンパイルエラーになるのかと思ってたのですが、
特にウィンドウとも関連付けず、普通の関数と同じように定義し(ただCALLBACKと付けてみるだけ)
呼んでみたら普通に呼べました。

ただ、疑問なのは、じゃあなぜわざわざこのソースは「CALLBACK」とつけているのだろう?ということです。
普通の関数として動いてる(使ってる)だけみたいなので、付ける必要がないと思うのですが、
付けるのと付けないのでは何が違うのでしょうか?
882デフォルトの名無しさん:2005/04/26(火) 08:20:22
>>880
普通そんな挙動はしない。
そんだけの情報では回答は得られないと思う。
883デフォルトの名無しさん:2005/04/26(火) 08:24:00
>>881
> ただ、疑問なのは、じゃあなぜわざわざこのソースは
> 「CALLBACK」とつけているのだろう?ということです。

つれない答えで悪いが、ソース書いた人に訊けないのん?
オレはコピペしたか何かでたまたま付いちゃってるだけ
だと思うが。
884デフォルトの名無しさん:2005/04/26(火) 08:28:29
せっかくVCというIDEがあるんだから
CALLBACKの定義を検索すればよかったのに
885デフォルトの名無しさん:2005/04/26(火) 09:42:52
>>880
そんな裏技があるのかと思い、拡張子関連付けて試したが見事に防止された。
Mutex生成する位置が悪いのでは?
886デフォルトの名無しさん:2005/04/26(火) 09:48:42
GetCommandLine()で得た文字列でmutex生成してると予想
887デフォルトの名無しさん:2005/04/26(火) 09:50:07
.NET初心者ですが、質問があるのでよろしくお願いします。

目的:VB.NETでドットプリンタのトレイ番号を取得する。

状況:.NETのPrinterSettingクラスを使用してプリンタ情報を取得しようとしたが、
プリンタ固有となるトレイ番号はすべて同一番号(Custom)扱いとなるため、実現不可能。
    よってDeviceCapabilities関数のDC_BINSを使用することにし、VB6でテストを行ったところうまくいった。
    しかし、VB.NETに乗せ変えたところ、出力バッファに値が入ってこない。
    
現在のソース:
    
    ’---宣言
    Declare Function DeviceCapabilities Lib "winspool.drv" Alias "DeviceCapabilitiesA" ( _
ByVal pDevice As String, _
ByVal pPort As String, _
ByVal fwCapability As Long, _
ByVal pOutput As string, _
ByVal pDevMode As String) As Integer

Private Const DC_BINS As Integer = 6

 
888887:2005/04/26(火) 09:51:41
   ’---呼出
' バッファに必要なサイズを取得
    intSupportedBinsNeeded = _
DeviceCapabilities(strPrinterDeviceName, strPrinterPortName, intDeviceCapability, vbNullString, vbNullString)

' バッファを確保
ReDim intSupportedBins(intSupportedBinsNeeded - 1)

' 使用できる給紙方法を取得
intWin32apiResultCode = DeviceCapabilities(strPrinterDeviceName, _
strPrinterPortName, _
intDeviceCapability, _
intSupportedBins(0).ToString, _
vbNullString)


API宣言時のpOutput、pDevModeはVBではAnyで宣言されていました。
給紙方法取得時のintSupportedBins(0).ToStringがおかしそうです。
暗黙的な変換が出来ないため、string型にして渡していますが意味がないような気がします。
Web等で調べ、いろいろ試しましたがどうも解決できません。
よろしくお願いします。
889デフォルトの名無しさん:2005/04/26(火) 10:01:51
>>887
こっちはWin32ネイティブのAPIスレだから.NETスレ行ったほうがよろし。
890887:2005/04/26(火) 12:49:43
わかりました。ありがとうございます。
お邪魔致しました。
891デフォルトの名無しさん:2005/04/26(火) 13:34:49
俺はMutexでのチェックは成功していてFindWindowで失敗している説を
唱えてみる。

>>880
現在開いているファイル名をCaptionに表示していないか?
んでもって、FindWindowで初期状態のCaptionで検索してないか?
892デフォルトの名無しさん:2005/04/26(火) 13:45:21
>>880
コードが間違っているか、別のEXEが動いている。
893デフォルトの名無しさん:2005/04/26(火) 18:25:27
クライアント領域に表示したグラフィックをビットマップファイルに保存する方法を教えてください。
894デフォルトの名無しさん:2005/04/26(火) 18:36:23
>>893
うまいことやる。
895デフォルトの名無しさん:2005/04/26(火) 18:44:33
>>893
それくらいググって解決できないようじゃきのこれないぞ。
896デフォルトの名無しさん:2005/04/26(火) 18:45:15
Alt + PrintScr
897デフォルトの名無しさん:2005/04/26(火) 18:56:27
この先生きのこる
898デフォルトの名無しさん:2005/04/26(火) 19:12:23
>>893
ttp://www.sm.rim.or.jp/~shishido/
きのこって下さい
899デフォルトの名無しさん:2005/04/26(火) 21:38:30
newで割り当てた配列をdeleteしてもメモリリークが凄まじいのですがなぜですか?
900デフォルトの名無しさん:2005/04/26(火) 21:39:34
delete[]。すれ違い。
901デフォルトの名無しさん:2005/04/26(火) 21:41:50
[]の付け忘れとかそんな低次元の話じゃねぇよタコ。お前真性のアホか?
そんなんだったらコンパイルエラーでわかるだろうがボケ
902デフォルトの名無しさん:2005/04/26(火) 21:53:10
そんなんでコンパイルエラーは出ませんよ。
903デフォルトの名無しさん:2005/04/26(火) 22:13:15
901 晒し age
904デフォルトの名無しさん:2005/04/26(火) 22:14:52
うるせぇっつーの。配列で割り当てる以外にnew関数はつかわねぇんだよ
905デフォルトの名無しさん:2005/04/26(火) 22:17:13
ポカーン
906デフォルトの名無しさん:2005/04/26(火) 22:17:26
つstd::vector
907デフォルトの名無しさん:2005/04/26(火) 22:17:32
うほっ!、いいキテガイ!
908デフォルトの名無しさん:2005/04/26(火) 22:34:14
クラスの配列とかじゃないことを祈る
909デフォルトの名無しさん:2005/04/26(火) 23:07:46
>>881
コールバックであるということを明示的にするためにあえてつけるという選択肢もある。
910デフォルトの名無しさん:2005/04/27(水) 00:03:05
急速にスレの質が低下してまいりました
911デフォルトの名無しさん:2005/04/27(水) 00:13:35
プログラムで最小化ボタンを無効にしたいんだけどどうすりゃいいの?
912デフォルトの名無しさん:2005/04/27(水) 00:32:13
>>911 超FAQ
GetSystemMenu
EnableMenuItem / DeleteMenu
913デフォルトの名無しさん:2005/04/27(水) 12:27:13
>>899
藻前のメモリ管理がおかしいから。
914デフォルトの名無しさん:2005/04/27(水) 15:37:50
もう解決したから今更出てくんなよwwwwwww
メモリ管理だってwwwwwwカスはmallocでも使ってろよwwwwww
915デフォルトの名無しさん:2005/04/27(水) 15:51:30
急速にスレの質が低下してまいりました
916デフォルトの名無しさん:2005/04/27(水) 16:02:04
>>904
>new関数

そうか、newは関数だったのか。(プ

>>914
>メモリ管理だって
>mallocでも使ってろよ

malloc()系しか管理が必要ないと思ってるの?(プ
917デフォルトの名無しさん:2005/04/27(水) 16:18:12
うわぁ・・・香ばしい・・・関数に突っ込む奴なんてはじめてみたwwwwwwww
918デフォルトの名無しさん:2005/04/27(水) 16:23:18
おまけにmalloc()系しか管理が必要ってなんだろwwwwwwwww
超意味不明wwwwwwwwwwwwwお前みたいカスにはmallocがお似合いってことなんだがwwwwwwwwwwwwwwwwwwwwwwwwwwww
919デフォルトの名無しさん:2005/04/27(水) 16:33:01 BE:34939229-#
mallocを使う場合の方が(自分で書く必要のある)メモリ管理コストが大きいわけだが。
920デフォルトの名無しさん:2005/04/27(水) 17:01:53
急速にスレの質が急速に急速に低下してまいりました急速に
921デフォルトの名無しさん:2005/04/27(水) 17:31:15
ペタワロスw
922デフォルトの名無しさん:2005/04/27(水) 17:42:04
ピコワロスw
923デフォルトの名無しさん:2005/04/27(水) 17:52:02
ヨクトワロスw
924デフォルトの名無しさん:2005/04/27(水) 17:52:56
>>918
あなたのこと 嫌いじゃないの 嘘じゃないわ ほんとよ
ラ・ウスラ・デラ・ギポン・デ・リルカ・ニョキニョキ ニョキニョキ
925デフォルトの名無しさん:2005/04/27(水) 18:03:49
>>917
「operator new」をどう訳すと「new関数」になる訳?
926デフォルトの名無しさん:2005/04/27(水) 18:37:03
リーテ・ラトバリタ・ウルス アリアロス・バル・ネトリール
927デフォルトの名無しさん:2005/04/27(水) 21:34:35
sizeof を関数といってるようなもんだな。
928デフォルトの名無しさん:2005/04/27(水) 21:41:37
>>899-927
おまいら全員スレ違い
あっちいけ(`Д´)彡
929デフォルトの名無しさん:2005/04/27(水) 21:43:47
>>928
どっち?
930デフォルトの名無しさん:2005/04/27(水) 21:44:05
俺のreturn関数が黙ってないぜ
931デフォルトの名無しさん:2005/04/27(水) 21:44:40
>>926
シイテ イウナラバ ウィルス
アリアマル バグ ナクナリーヌ
932デフォルトの名無しさん:2005/04/27(水) 22:38:26
リストビューにチェックボックスをつけました。
チェックボックスを操作しようと思ったのですがチェックボックスのハンドルの取得方法が分かりません。
GetDlgItemを使うのかと思いましたが引数がおかしいのか上手くいきませんでした。
どうすればいいかご教授お願いします。
933デフォルトの名無しさん:2005/04/27(水) 22:48:48
チェックボックス作成したときの戻り値をウィンドウハンドルに代入。
終わり
934デフォルトの名無しさん:2005/04/28(木) 02:12:33
>>927
operatorは実装をオーバーライド出来るが、sizeofはできないから
全然違う。
935デフォルトの名無しさん:2005/04/28(木) 02:14:11
俺のif関数をお見舞いするぞ
936デフォルトの名無しさん:2005/04/28(木) 11:12:59
>>932
うろ覚えだが、notify じゃないの。間違っていたらゴメン。
937デフォルトの名無しさん
CPUがいくつ搭載されているかを調べる方法を教えてください。できればそれがHTかどうかもわかるとよいのですが。