トップページ⇒tech
1001コメント299KB

Win32API質問箱 Build38

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2005/12/06(火) 00:59:05
スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。
やさしいお兄さんたちが答えてくれるかも。

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

■注意
・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。
・日本語版MSDN Online Libraryは不完全です。英語版(http://msdn.microsoft.com)の利用推奨。
・APIフックなど高度な事をしたい場合はできるだけAdvencedWindowsを読みましょう。
・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで。
0002デフォルトの名無しさん2005/12/06(火) 00:59:26
-過去スレ
37 ttp://pc8.2ch.net/test/read.cgi/tech/1131884991/
36 ttp://pc8.2ch.net/test/read.cgi/tech/1128951330/
35 ttp://pc8.2ch.net/test/read.cgi/tech/1125850096/
34 ttp://pc8.2ch.net/test/read.cgi/tech/1122723009/
33 ttp://pc8.2ch.net/test/read.cgi/tech/1120153520/
0003デフォルトの名無しさん2005/12/06(火) 01:00:18
32 ttp://pc8.2ch.net/test/read.cgi/tech/1117271829/
31 ttp://pc8.2ch.net/test/read.cgi/tech/1114762194/
30 ttp://pc8.2ch.net/test/read.cgi/tech/1112345886/
29 ttp://pc8.2ch.net/test/read.cgi/tech/1110281860/
28 ttp://pc5.2ch.net/test/read.cgi/tech/1108199304/
27 ttp://pc5.2ch.net/test/read.cgi/tech/1106103119/
26 ttp://pc5.2ch.net/test/read.cgi/tech/1104109858/
25 ttp://pc5.2ch.net/test/read.cgi/tech/1101393155/
24 ttp://pc5.2ch.net/test/read.cgi/tech/1098967135/
23 ttp://pc5.2ch.net/test/read.cgi/tech/1095534704/
22 ttp://pc5.2ch.net/test/read.cgi/tech/1092524669/
21 ttp://pc5.2ch.net/test/read.cgi/tech/1090422324/
20 ttp://pc5.2ch.net/test/read.cgi/tech/1088140233/
19 ttp://pc5.2ch.net/test/read.cgi/tech/1084697545/
18 ttp://pc5.2ch.net/test/read.cgi/tech/1081702990/
17 ttp://pc5.2ch.net/test/read.cgi/tech/1077470361/
16 ttp://pc2.2ch.net/test/read.cgi/tech/1073830065/★
15 ttp://pc2.2ch.net/test/read.cgi/tech/1069339866/★
14 ttp://pc5.2ch.net/tech/kako/1065/10653/1065328397.html
13 ttp://pc5.2ch.net/tech/kako/1059/10595/1059549320.html
12 ttp://pc5.2ch.net/tech/kako/1056/10560/1056033645.html
11 ttp://pc5.2ch.net/tech/kako/1052/10526/1052651750.html
10 ttp://pc5.2ch.net/tech/kako/1047/10478/1047819779.html
9 ttp://pc5.2ch.net/tech/kako/1044/10449/1044929160.html
8 ttp://pc5.2ch.net/tech/kako/1040/10409/1040964626.html
7 ttp://pc3.2ch.net/tech/kako/1036/10366/1036654893.html
6 ttp://pc3.2ch.net/tech/kako/1032/10325/1032548635.html
5 ttp://pc3.2ch.net/tech/kako/1028/10285/1028580373.html
4 ttp://pc3.2ch.net/tech/kako/1023/10233/1023361418.html
3 ttp://pc.2ch.net/tech/kako/1017/10170/1017072275.html
2 ttp://pc.2ch.net/tech/kako/1006/10067/1006783012.html
1 ttp://pc.2ch.net/tech/kako/991/991576947.html
0004デフォルトの名無しさん2005/12/06(火) 01:00:59
- MSDN Online
http://www.microsoft.com/japan/msdn/
- 猫でもわかるプログラミング
http://www.kumei.ne.jp/c_lang/
- Platform SDK Update
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/
- Google
http://www.google.com/

- Windows® Server 2003 SP1 Platform SDK Full Download
http://www.microsoft.com/downloads/details.aspx?familyid=EBA0128F-A770-45F1-86F3-7AB010B398A3&displaylang=en
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/XPSP2FULLInstall.htm
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/psdk-full.htm

- Win32 API入門
http://wisdom.sakura.ne.jp/system/winapi/
- Win32 プログラミング入門
http://www7.plala.or.jp/keny01/windows/win32/

- 書籍
Advanced Windows
http://www.amazon.co.jp/exec/obidos/ASIN/4756138055

-おまけ
dat落ちしている過去スレが見れるかも。Build19が見たい人、余裕のある人は●でも買ってやってくれ。
http://makimo.to/cgi-bin/search/search.cgi?q=Win32API&andor=AND&sf=2&H=&view=table&shw=&D=tech
0005・∀・)っ-●○◎- ◆Pu/ODYSSEY 2005/12/06(火) 01:10:07
19ってこれでいいの?同じディレクトリにdatも上げとくね。
http://trip.jp.land.to/2ch-log/tech/1084697545.html
0006デフォルトの名無しさん2005/12/06(火) 01:20:20
FindFirstFile()などでフォルダ内のファイル名を取得したいのですが、
このAPIが返すファイル名リスト(実際はリスト構造にはなってませんが)
は日付が最新のものから順に入っているのでしょうか?
そうでない場合、日付順にファイル名を取得する良いAPIはありますか?
0007デフォルトの名無しさん2005/12/06(火) 01:23:22
>>6
順番は不定。
自分でソート。
0008・∀・)っ-●○◎- ◆Pu/ODYSSEY 2005/12/06(火) 01:23:23
>>6
たしかASCII順(ただし大文字小文字区別なし)
構造体の配列に溜め込んで日付でソートするといいよ
000962005/12/06(火) 01:28:06
ありがとうございます。
ということはいったん全部吸い上げてから調べないといけないんですね。
フォルダは所属しているファイルのうちどれが最新か知ってるはずだと
思うのですが、そういうAPIが無いのは意外でした。
0010・∀・)っ-●○◎- ◆Pu/ODYSSEY 2005/12/06(火) 01:35:05
ありません。

Windowsエクスプローラは、FindFirstFile/FindNextFileで取ってきた結果を
リストビューコントロールに一覧表示してるだけですよ。
0011デフォルトの名無しさん2005/12/06(火) 01:36:59
> フォルダは所属しているファイルのうちどれが最新か知ってるはずだと思う

これどっから来たんだろう
001262005/12/06(火) 01:37:12
そうでしたか。
勉強になりました。ありがとうございました。
0013デフォルトの名無しさん2005/12/06(火) 01:37:48
>>9
フォルダは知らないだろw
0014デフォルトの名無しさん2005/12/06(火) 01:38:33
>>8
FAT32だと物理的順序だったと思う
0015142005/12/06(火) 01:39:56
ごめんFAT32でなくてWin9x系だったかも
001662005/12/06(火) 01:40:52
unixのディレクトリとWindowsのフォルダは同じ概念でしょうか?
0017デフォルトの名無しさん2005/12/06(火) 01:41:59
DOS時代はディレクトリって呼んでたよ
0018デフォルトの名無しさん2005/12/06(火) 01:42:21
>>8
NTFSだとそうかもしれんが、それ以外だとそうとは限らん。
確実なのはディスク上の順番で返すということだけ。
0019デフォルトの名無しさん2005/12/06(火) 03:46:46
>>17
フォルダは概念、ディレクトリは実体。
例えば「デスクトップ」はフォルダ、"c:/Doc.../user/デスクトップ/"はディレクトリ。
0020デフォルトの名無しさん2005/12/06(火) 04:11:09
>>1
乙
0021デフォルトの名無しさん2005/12/06(火) 11:12:48
>> Build37-990
コントロールをサブクラス化して、メッセージを処理するなり親ウィンドウに渡すなりすれば?
0022デフォルトの名無しさん2005/12/06(火) 12:14:34
SendInput関数で スペースはVK_SPACEなどで表現できますが マウスの左クリックはどの様に表現すればよいのでしょうか。
0023デフォルトの名無しさん2005/12/06(火) 12:18:41
>>22
WM_LBUTTONDOWN
直接SendMessegeする手もあるけど。
0024デフォルトの名無しさん2005/12/06(火) 12:18:42
>>22
ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/userinput/keyboardinput/keyboardinputreference/keyboardinputfunctions/sendinput.asp
よく嫁。特にINPUT構造体。
0025222005/12/06(火) 12:29:43
>>23-24
ヽ(^o^)丿サンクス!
0026デフォルトの名無しさん2005/12/06(火) 16:59:44
前スレ990で、1000ゲッターに流されてしまったため(笑)、再度でつ。

WM_MOUSEMOVEメッセージについてなんですけど、 
マウスカーソルがスタティックテキスト(含むグループボックス)の子ウィンドウ上の時にはメッセージ来るようなんですが、 
他の子ウィンドウ(エディットコントロールやチェックボックスなど)上だとメッセージが来ないようなのです。 

うまくスタティック以外のウィンドウ上でのマウスカーソルの動きをキャッチする方法はないのでしょうか。 
0027デフォルトの名無しさん2005/12/06(火) 17:03:47
WM_NOTIFY
0028デフォルトの名無しさん2005/12/06(火) 18:09:17
>>27
それはコモンコントロールだけで、
エディットコントロールやチェックボックスなどでは来ませんし、
ステータスバーもクリックされないと親ウィンドウにWM_NOTIFYメッセージを発しませんが…
0029デフォルトの名無しさん2005/12/06(火) 22:04:15
リソースで定義したダイアログをDiagAとします。
このDiagAを作るあたってDialogBoxマクロを利用する訳ですが、
DialogBoxの引数にプロシージャを指定する部位がありますよね。

ダイアログが作られた時、プロシージャへWM_CREATEメッセージは発行されないのでしょうか?
0030デフォルトの名無しさん2005/12/06(火) 22:09:48
>>29
その通り
0031デフォルトの名無しさん2005/12/06(火) 22:11:58
ううん、とあるデータをダイアログが作られた時に、ダイアログのプロシージャから操作したいのですけど。
なんかいい方法ないでしょうか。
0032デフォルトの名無しさん2005/12/06(火) 22:17:02
>>31
WM_INITDIALOGメッセージだったかな。

聞いてることとずれてたらスマソ
0033デフォルトの名無しさん2005/12/06(火) 22:17:37
WM_INITDIALOG
0034デフォルトの名無しさん2005/12/06(火) 22:18:30
かぶった
0035デフォルトの名無しさん2005/12/06(火) 22:21:15
WM_INITDIALOGがダイアログ作成に発行されました。
ありがとうございます・・・
0036デフォルトの名無しさん2005/12/06(火) 22:57:29
>>26
>>21
親にPost
0037デフォルトの名無しさん2005/12/06(火) 23:00:04
>>36
ごめんあそばせ。
21さん見過ごしてました

どうもサンクスです。
0038前スレ9592005/12/07(水) 03:46:57
できました。デフォルトの戻り値を0にすればよかったようです。
UINT_PTR CALLBACK OFNHookProc(HWND hdlg, UINT msg, WPARAM wParam, LPARAM lParam)
{
    if (msg == WM_INITDIALOG)
    {
        SetWindowLong(hdlg, GWL_STYLE, GetWindowLongPtr(hdlg, GWL_STYLE) | WS_CLIPSIBLINGS);
        MoveWindow(hdlg, 30, 17, 300, 22, FALSE);
        CreateWindow("ComboBox", "", CBS_DROPDOWNLIST | WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_GROUP | WS_TABSTOP, 130, 0, 164, 100, hdlg, (HMENU)0x1000, Instance, 0);
    }
    return 0;
}
0039デフォルトの名無しさん2005/12/07(水) 09:18:22
質問です
IStreamを実装してMyStreamってクラスを作りたいのですが

この場合、IStreamで定義されているメソッドを使うためには、
IMyStream* mystream = hoge();
mystream->QueryInterface(...);
でIStreamのインタフェイスを取得しないと使えないのでしょうか?

そして、もしIMyStream*から直接使うためには、
多少宣言がIStream*と重複しようが、
idlでReadやWrite等を再定義していくことになるのでしょうか?
0040デフォルトの名無しさん2005/12/07(水) 09:36:47
>>39
C++の入門書読んだ方がいいと思うお
0041デフォルトの名無しさん2005/12/07(水) 09:57:46
>>40
class MyStream :
 public CComObjectRootEx<CComSingleThreadModel>,
 public CComCoClass<MyStream, &CLSID_MyStream>,
 public IDispatchImpl<IMyStream, &IID_IMyStream, &LIBID_MyLib>,
 public IStream {};

C++的に考えれば、これはMyStreamのポインタでIStreamのメソッドを呼べることになりますよね

でもこれはあくまでCOMライブラリを作る際に派生させただけであって、
結局COMを扱う側から見たら
interface IMyStream : IDispatch {}
でしかないのだから、MyStreamでIStreamを幾ら実装しようと、
直接はIStreamのメンバを呼び出せない、ということでいいのかな?

ていうか微妙にWin32の話じゃなくてすみません
ATLスレに行った方がよかったのかな
0042デフォルトの名無しさん2005/12/07(水) 10:17:34
>>41
IStreamの各メンバはvirtual 〜 〜(〜) = 0;の抽象メソッド。
MyStreamはIStream派生クラスとして定義するからMyStreamをIStreamにキャストしてもMyStream上の実体を呼び出す。
0043デフォルトの名無しさん2005/12/07(水) 11:38:35
LRESULT CALLBACK WndProc()での
LRESUTLはtypedefされたC言語のデータ型と思っておいて良いですか?
0044デフォルトの名無しさん2005/12/07(水) 12:07:27
>>43
そうだよ。

>>41
ところでIMyStreamがIStreamから派生しているのであれば、
MyStreamはIStreamを継承する必要はないと思うが。
0045デフォルトの名無しさん2005/12/07(水) 12:31:05
>>44
すいません、また色々考え込んでしまって混乱してしまいました。。

IMyStreamはIStreamの派生ではありませんでした。
IMyStreamはプロジェクト構築時にデフォルトでIDLで
interface IMyStream : IDispatch {}
と定義されていました。

よく考えたらIDispatchの機能が必要がなければIDispatchから派生させる必要ないですね。
インタフェイスの継承をIDispatchからIStreamにすればよかったのかな、、
ちょっとこれから書き換えてきます。どうもありがとうございました
0046デフォルトの名無しさん2005/12/07(水) 12:42:55
ここで俺の妄想を発揮。

45は別にIMyStreamやIStreamを実装したいのではなく、
CreateStreamOnHGlobalとかSHCreateStreamOnFile(Ex)を活用するだけで十分ではないか?
0047デフォルトの名無しさん2005/12/07(水) 12:54:16
>>46
いあ、やろうとしてるのは、あるIStreamを食わせて加工出力するIStreamなんです。
COMは使うだけならあるにしても、作る側になったことは全然ないので
ATLとかの勉強ついでにやってる感じです。

で、とりあえずできたようです。本当にありがとうございました。
そしてなんか妄想まで働かしてもらってすみません。
0048デフォルトの名無しさん2005/12/07(水) 12:56:07
本人乙
0049デフォルトの名無しさん2005/12/07(水) 16:35:56
二つのテキストファイルが同じかどうかを
比較する関数を教えて下さい
0050デフォルトの名無しさん2005/12/07(水) 16:38:18
ねぇよ
0051デフォルトの名無しさん2005/12/07(水) 16:42:41
>>49
同じかどうかだけなら、ファイル開いてメモリにマッピングしてmemcmpするのが速い。

でもさ、作ろうとしてるものなら既にコマンドとしてあると思うよ。
http://itpro.nikkeibp.co.jp/free/NT/WinKeyWord/20040805/1/comp.shtml
http://itpro.nikkeibp.co.jp/free/NT/WinKeyWord/20040805/1/fc.shtml

テンポラリファイルにリダイレクトして比較結果取り出すほうが早いかもな
まあ別にパイプでもいいけど。
0052デフォルトの名無しさん2005/12/07(水) 16:45:21
CreateFile
GetFileSize
xxxxAlloc
ReadFile
lstrcmp

0053492005/12/07(水) 17:22:21
SHELLでFC使って上手くいきました
あざーっす
0054デフォルトの名無しさん2005/12/07(水) 17:27:00
エディットコントロールの縁に陰みたいな奴つけるにはどうすればいいですか
0055デフォルトの名無しさん2005/12/07(水) 19:15:38
>>49-51
ファイルのHash値かmd5計算して比較するのが今風
0056デフォルトの名無しさん2005/12/07(水) 19:26:53
>>55
完全ハッシュでなければ衝突がありえるだろ。
0057デフォルトの名無しさん2005/12/07(水) 19:32:21
毎回ファイル読み込んでハッシュ値出せってか?
0058デフォルトの名無しさん2005/12/07(水) 19:33:33
コリジョンが発生してから調べなおせばいい。
同じファイルを何度と無く調べる、かつ各ファイルのそれなりの部分が同じとか言う場合にはまあ有効かな。
突発的にファイルを比較するだけなら無駄だけど。
0059デフォルトの名無しさん2005/12/07(水) 19:41:03
>>54
WS_EX_CLIENTEDGE
0060デフォルトの名無しさん2005/12/07(水) 21:55:20
Sleep()やWaitForSingleObject()
に出てくるマクロのINFINITEって何の略なんですか?
0061デフォルトの名無しさん2005/12/07(水) 21:57:08
>>60
略ではないです。
http://dic.yahoo.co.jp/bin/dsearch?dtype=1&p=INFINITE
0062デフォルトの名無しさん2005/12/07(水) 22:37:03
Infiniteも知らんのか・・
0063デフォルトの名無しさん2005/12/07(水) 23:40:59
中高で英語が1と2ばかりだった俺でも知ってるのに・・・
0064デフォルトの名無しさん2005/12/08(木) 02:47:51
マジレスすると知識量と学校の成績は関係ない
でもinfiniteくらいは、日常生活で1度は耳にしたことがあるはず
0065デフォルトの名無しさん2005/12/08(木) 07:23:53
日産の高級車のブランド名だな
0066デフォルトの名無しさん2005/12/08(木) 07:54:31
しかし finit が 有限 というのはあまり知られていない
0067デフォルトの名無しさん2005/12/08(木) 08:00:25
eが抜けてんぞ
0068デフォルトの名無しさん2005/12/08(木) 08:43:57
finit がフランス語だということはさらにほとんど知られていない
0069デフォルトの名無しさん2005/12/08(木) 08:56:03
Windowsのイベントログに関する事で質問です

通常2000とかXPには
システムイベントログ
アプリケーションログ
セキュリティログ
などがありますが、
それ以外のログを自前で生成し、
「コンピュータの管理(MMC)」に
追加することは可能でしょうか?
0070デフォルトの名無しさん2005/12/08(木) 09:03:56
finishやfinalと語源が一緒というのはあくまで俺の想像
0071デフォルトの名無しさん2005/12/08(木) 09:18:13
>>66がフランス語のfinitを出したとはとても思えない件
0072デフォルトの名無しさん2005/12/08(木) 09:21:38
finite state machine の検索結果のうち 日本語のページ 約 10,700 件

finit state machine の検索結果のうち 日本語のページ 約 250 件

250件もあるのかよ
0073デフォルトの名無しさん2005/12/08(木) 20:37:29
vcでデバッグ中にイベントハンドルがシグナルなのか非シグナルなのか
知りたいんだけど、何かいい方法はないでしょうか?
0074デフォルトの名無しさん2005/12/08(木) 22:17:31
>>73
ProcessWalkerで見れたと思う。
0075デフォルトの名無しさん2005/12/09(金) 03:31:22
質問させてください。

C言語とAPIでMS-Word やメモ帳で入力されたキーを取得するプログラムを
組んでいます。グローバルフックで MW_KEYDOWN を取得する方法でやって
いるのですが、MS-Word の場合だけ、1回のキー入力に対して5回の
WM_KEYDOWN が来ます。WM_KEYDOWN メッセージの lParam の31バイト目を
チェックしてみたのですが、キーを押し続けたことによる連続メッセージ
ではないようです。また、MW_KEYUP でも同じく5回メッセージがきます。

1キーに対して1回のメッセージを受け取りたいのですが、よい方法は
ないでしょうか。よろしくお願いします。
0076デフォルトの名無しさん2005/12/09(金) 03:36:04
>>75
俺のPCにWord入ってないから試せないんだが、Spy++でも5回表示される?
あとWordのバージョンは?
0077デフォルトの名無しさん2005/12/09(金) 05:40:25
>>76

>>76

 レス遅れてすみません。Spy++ っていうのがググッたけどちょっとわからないん
ですが、BCC のコマンドラインコンパイラなんでたぶん使ってないと思います。
Word のバージョンは 2003 です。
 一応、フックしたキーをウインドウに表示するようにしているんですが、
 メモ帳やInternetExplorer に入力した場合、そのとおり別ウインドウにも
表示されるんですが(1キー入力に対して1文字)、WORDの場合だけ1入力に
たいして5回分表示されるんです。"aiu"だったら"aaaaaiiiiiuuuuu"という
具合です。ちなみに、Enter や Shift なども同じです。
 とりあえず、Spy++についてもう少しググッて見ます。
0078デフォルトの名無しさん2005/12/09(金) 06:40:04
>>77
Spy++はMSの開発環境についてくる便利なツール。
特定ウィンドウに送られたメッセージのログを表示することができる。

BorlandにもWinSight32っていう同じようなソフトあるんだけど、
無料のBCCに付いてくるのかは知らない。
0079デフォルトの名無しさん2005/12/09(金) 07:22:39
Winspector Spyっていうフリーのがあるよ
0080デフォルトの名無しさん2005/12/09(金) 08:29:54
>>79
使ってみた結構いいかも新米 thx
0081デフォルトの名無しさん2005/12/09(金) 12:16:13
C勉強してきてこれから窓プログラム入る
必要なのは脳とやる気だけでおk?
0082デフォルトの名無しさん2005/12/09(金) 12:31:43
あとは開発環境があれば完璧
0083デフォルトの名無しさん2005/12/09(金) 12:43:12
spyもなー
0084デフォルトの名無しさん2005/12/09(金) 14:58:33
>>81
MFC使えば楽だお
0085デフォルトの名無しさん2005/12/09(金) 16:27:56
DialogBox上にlogを表示させたいと思っています。
edit boxでやったら改行ができませんでした。
static textでやったら、改行はできましたが、自動スクロールができません。
両方とも必要なのですが、簡単に実現する方法はありませんでしょうか?
ありましたらお教えください
0086デフォルトの名無しさん2005/12/09(金) 16:29:31
>>79
特警ウィンスペクターを思い出した漏れはおこちゃまですか?
0087デフォルトの名無しさん2005/12/09(金) 16:39:28
>>85
style に ES_MULTILINE (+ WS_VSCROLL|WS_HSCROLL) で エディットCTRL生成
nLen = GetWindowTextLength(エディットCTRL);
EM_SETSEL で START:nLen END:nLen で末尾を選択
EM_REPLACESEL でLogとして追記したい文字列を渡す (改行したいなら CRLF を入れること)
0088デフォルトの名無しさん2005/12/09(金) 16:44:40
>>81
VCL使うともっと便利だお
0089デフォルトの名無しさん2005/12/09(金) 17:22:01
>>84
CでMFCが使えるかよ
0090デフォルトの名無しさん2005/12/09(金) 17:29:32
ビュアチェインに関してです
例えば現在4個のクリッポボードビュアA,B,C,Dが起動してるとします。
そしてそれぞれのビュアの順位はAを最上として
A B C Dとします。

例えばBがChangeClipboard()を実行しますと、AにはWM_CHANGECBCHAINが送られてきますよね。
WPARAMにはBのhWndが、LPARAMにはCのhWndが格納されているはずですので、
Aは自分の次のビュアのウィンドウハンドルを確認し、もしWPARAMと等しければAの次のビュアのハンドルを、
LPARAMのハンドルに入れ替えればいいと思います。
しかしBではなくCがChangeClipboard()を実行した場合どうしますか?もし上の手順をしてしまったら、
Aの次のビュアはDとなってしまい、Bの存在がまずい事になります・・・
かといってこのメッセージを無視し、実行するとBの次のウィンドウはCだが・・・Cのハンドルは無効
という事態になると思います。
長くなりましたが、上のような場合はSendMessageでBにWM_CHANGECBCHAINを送れば回避されます。※1
しかし、例えばA B C D E Fとチェインがあった場合、DがChangeClipboard()を実行し、Aが※1を実行するとなると
Cのハンドルを知る必要があるのです。ですが、WM_CHANGECBCHAINのパラメータにはDとEしかありません。
どうすればよろしいでしょうか・・
0091デフォルトの名無しさん2005/12/09(金) 17:31:33
※1もCとDは自分(最上)からすれば、何番目なのか予測不能でしたね・・すみません
0092デフォルトの名無しさん2005/12/09(金) 17:41:14
>>90
ChangeClipboardChainだよな。
> しかしBではなくCがChangeClipboard()を実行した場合どうしますか?もし上の手順をしてしまったら、
そのときにWPARAMの中身はCとなり、Aにとっての次であるBとは違うから、
「Aは自分の次のビュアのウィンドウハンドルを確認し、WPARAMと等しければ」という条件が成り立たない。
0093デフォルトの名無しさん2005/12/09(金) 17:43:29
>>87
ありがとうございます
ちょっとやってみます
0094デフォルトの名無しさん2005/12/09(金) 17:53:48
>>92
else if (hNextWnd) SendMessage(hNextWnd,msg,wParam,lParam);
と流していけばちゃんと修正されますね・・自己完結してすみません
0095732005/12/09(金) 19:14:32
>74さんありがとうございました。
無事に各ハンドルの状態を調べることが出来るようになりました。
0096デフォルトの名無しさん2005/12/09(金) 19:54:00
>>93です。
さっきのはうまくできましたが、また問題点が発生しました。。
入力が終了してenterを押すとボタンがおされたのと同じ処理をできるようにできませんか?
dialogでやる方法はわかったのですが,通常windowでやる方法がわかりません
0097デフォルトの名無しさん2005/12/09(金) 20:06:51
>>96
[Enter]にアクセラレーターを割り付けてしまう。
0098デフォルトの名無しさん2005/12/09(金) 21:16:43
VirtualAllocでRESERVEした量って、タスクマネージャの「仮想メモリ」
に出ると思ったら出ないのな・・・
0099デフォルトの名無しさん2005/12/09(金) 21:22:12
すんません。
CreateService()つかって、Windowsサービス作ってるのですが、
メールスロットでイベント起動される(サーバー側)ように
作りたいのだけど。イマイチよくわかりません。

もしかして、Windowsサービスには向かないの?
0100デフォルトの名無しさん2005/12/09(金) 21:24:37
ダメです
0101デフォルトの名無しさん2005/12/09(金) 22:10:55
>>76
>>78
>>79

Winspector を使ってしばらく調べてみようと思います。
ありがとうございました。
■ このスレッドは過去ログ倉庫に格納されています