Win32API質問箱 Build34

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

  ∧_∧
 ( ´∀`) < 0x22

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

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

-前スレ
Build33:http://pc8.2ch.net/test/read.cgi/tech/1120153520/
2デフォルトの名無しさん:2005/07/30(土) 20:30:44
3デフォルトの名無しさん:2005/07/30(土) 20:31:29
4デフォルトの名無しさん:2005/07/30(土) 20:32:09
5デフォルトの名無しさん:2005/07/30(土) 20:48:40
>>1-4


>>6-999
Advanced Windows の隅々まで穴が悪魔で嫁
6デフォルトの名無しさん:2005/07/30(土) 20:48:56
7デフォルトの名無しさん:2005/07/31(日) 03:59:31
ディレクトリを作成したいのですがCreateDirectoryを使おうとおもいます。
作成するディレクトリ名はユーザーに指定させ、すでにある場合は作成しません。
そのためCreateDirectoryを呼ぶ前にそのディレクトリがあるか調べたいです。
_statのようなANSI-CのものではなくCreateDirectoryと同じくWin32のAPIがよいです。
なにかよいものはありますか?
ちなみにFindFirstFileは面倒なのでいやです。一発で判定できるとうれしいです。
あと、もうひとつ。
ある文字列がパスとして有効かどうか判定するAPIはありますか?
たとえば、使ってはいけない文字が含まれていればFALSEが返るなど。
よろしくお願いします。
8デフォルトの名無しさん:2005/07/31(日) 04:06:43
>>7
GetFileAttributes
9デフォルトの名無しさん:2005/07/31(日) 04:45:22
>>7
直接的な答えは PathIsDirectory とか PathFileExists か。
でも、MakeSureDirectoryPathExists 使えばいいんじゃない?
後半は知らん。
10デフォルトの名無しさん:2005/07/31(日) 07:55:48
>>8-9
サンキューです。
11デフォルトの名無しさん:2005/07/31(日) 08:53:19
産休ですか?
12デフォルトの名無しさん:2005/07/31(日) 09:12:42
夏ですね
13デフォルトの名無しさん:2005/07/31(日) 12:28:32
dat落ちしている過去スレが見れます。
http://makimo.to/cgi-bin/search/search.cgi?q=Win32API&andor=AND&sf=2&H=&view=table&shw=&D=tech

次からテンプレに入れといてほしいな。
14デフォルトの名無しさん:2005/07/31(日) 12:55:07
>>13
2chは●の売り上げによって設備をレンタルしているので、
●を買って見てください
ということにしておいたほうがいいと思う。

にくちゃんねるは好きだけど、知っている人だけが使う、というのでいいと思う。
15デフォルトの名無しさん:2005/07/31(日) 15:16:07
>>13
part19が見られないわけだが。
16デフォルトの名無しさん:2005/07/31(日) 15:54:56
ふと思ったんだが、winnyのリストビューの中の進歩グラフってどうやって実現してるんだろ。。。
それ考えると47氏すげーな。
17デフォルトの名無しさん:2005/07/31(日) 16:03:32
>>47
タイーホ
18デフォルトの名無しさん:2005/07/31(日) 16:04:32
Winnyはすごいけどオーナードローはすごくない
19デフォルトの名無しさん:2005/07/31(日) 16:14:15
>>18
オーナードローか。。
リストビュー、オーナードローでその機能実現してるサンプルあるかな??
勉強してみたいんだけど。
20デフォルトの名無しさん:2005/07/31(日) 17:24:19
>>19
おまえ、検索ぐらいしてみたのか?
21デフォルトの名無しさん:2005/07/31(日) 17:38:38
>>19
進歩じゃなくて進捗な。
22デフォルトの名無しさん:2005/07/31(日) 18:14:50
>>20
リストビュー単体、オーナードロー単体はよくあるけど、漏れが探してみた感じでは
リストビューで進捗グラフ表示しているのはVB以外はなかった。
VC、sdkでは見つからないなぁ・・。
23デフォルトの名無しさん:2005/07/31(日) 18:19:59
Winny2だとVCLだろうからTCustomListView.OnCustomDrawItem/SubItemあたり使ってそうだな‥‥
24デフォルトの名無しさん:2005/07/31(日) 18:21:34
オーナードローのやり方さえ分かりゃ、後は好きにグラフなりなんなり描きゃいいと思うんだが。
別に両方同時にやってるサンプルは必要ないべ?
25デフォルトの名無しさん:2005/07/31(日) 18:47:05
>>23, 24
とりあえず、リストビューオーナードローで作ってみる。
情報トンクス。詰まったときは相談のってくらさい。
26デフォルトの名無しさん:2005/07/31(日) 18:53:08
トレードシステムつくろ

http://long2.fc2web.com/
27デフォルトの名無しさん:2005/07/31(日) 18:58:13
WinnyはWin32API的には凄くない。

セマフォの使い方が間違っていたり、etc・・・
28デフォルトの名無しさん:2005/07/31(日) 20:39:45
シリアルポートの /dev/ttyS1 を複数のプロセスから open して
入出力するときだけ flock かけるようなことを UNIX でやっているのですが、
同じことを Win32 でやろうとして、
CreateFile で COM? を共有で開こうとしても上手くいきません。
Win 的にはどういうやり方をすると良いでしょうか。
29デフォルトの名無しさん:2005/07/31(日) 20:55:07
>>28
CreateFile()のパラメータは?
適当に設定しておけば開けると思うのだけど。
#ダメだったらゴメン。
30デフォルトの名無しさん:2005/07/31(日) 20:55:51
BitBlt関数をSRCINVERTでマスク画像を表示させていたのですが、
急にマスクが掛からなくなりました。
BitBlt(hdc , 188 , 238 , 25 , 25 ,
hMem5 , 0 , 50 , SRCAND);
BitBlt(hdc , 188 , 238 , 25 , 25 ,
hMem6 , 0 , 0 , SRCINVERT);
なぜでしょうか?
分かりません。おながいします。
31デフォルトの名無しさん:2005/07/31(日) 20:58:22
>>30
マスクが死んでるんじゃないの?
それだけじゃ判断できん
32デフォルトの名無しさん:2005/07/31(日) 21:07:32
>>29
CreateFile("COM1", GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);

FILE_SHARE_* を取ると開けるのですが・・
33891:2005/07/31(日) 21:14:19
皆様こんばんは。前スレでAPIHookについて悩んでおりました者です。
強制終了が起こる原因が分かりましたのでご報告いたします。

まず、プログラムがクラッシュしていた原因は、
APIフック部ではなく、LogWrite関数、ログ記録部でした。
そして、ここでfwriteによって書き込みを行っているのですが、
このfwriteを連続して2回以上コールすると、クラッシュしてしまうようなのです。
なので、書き出すデータを一つの変数へまとめ、一度のfwriteで書き込みを行うよう修正しました。
以上です。
サポートしていただいた方々ありがとうございました。
また何かありましたら質問させていただきますのでその節はよろしくおねがいいたします。
34デフォルトの名無しさん:2005/07/31(日) 21:17:04
>31
レスdクス。
「マスクが死ぬ」とはどういう事ですか?
詳細きぼん
35デフォルトの名無しさん:2005/07/31(日) 21:21:00
ClipCursorでカーソル移動範囲を自ウィンドウ内に限定したいのですが、
カーソルが設定範囲に移動するものの、その後は自由に範囲外へ移動できてしまいます。
範囲外へのカーソル移動を阻害するにはどうすればいいのでしょうかorz

ClipCursorはウィンドウ生成時(VCLのTFormコンストラクタ内)にてGetWindowRectで取ったRECT構造体を渡しています。
OSはWidnows2000です。
36デフォルトの名無しさん:2005/07/31(日) 21:33:36
実モニタの最大解像度を取得する方法ってあるのでしょうか?
やりたいことは、最大解像度よりも大きな解像度を選択し仮想スクリーン
になっているときに、画面に中央部分を表示させるようにしたいんです。
とりあえず下記の方法で半ば強引にさせてます。

x = GetSystemMetrics( SM_CXSCREEN );
y = GetSystemMetrics( SM_CYSCREEN );
for( i=0; i<(y/2); i+=8 ){
SetCursorPos( i, i );
SetCursorPos( x-i, y-i );
}
3730:2005/07/31(日) 21:42:32
スマソ。
事故解決しますた。
普通画像とマスク画像が逆だった。
38デフォルトの名無しさん:2005/07/31(日) 22:14:53
とりあえずお約束
>>35
スパイウェアでも作って強制的にOKを押させたいんですか?
39デフォルトの名無しさん:2005/07/31(日) 22:19:37
>>38
使用用途を問うのはスレ違い
40デフォルトの名無しさん:2005/07/31(日) 22:29:42
>28
ms-help://MS.MSDNQTR.2003FEB.1041/devio/base/communications_resource_handles.htm
>The fdwShareMode parameter must be zero, opening the resource for exclusive access.
なので無理です。
4135:2005/07/31(日) 23:20:07
>>38
ゲームでウィンドウ外にカーソルが飛んで他のアプリに誤爆するのを防ぐためです。
マウス主体の操作の場合、これが結構ストレス貯まるので‥‥
42デフォルトの名無しさん:2005/07/31(日) 23:22:51
>>41
全画面表示にすればいいだけじゃないのか?
43デフォルトの名無しさん:2005/07/31(日) 23:23:47
>>35
本来のカーソルそのものは消して自前描画するのはどうかね?
マウスの移動メッセージのみを拾って。
44デフォルトの名無しさん:2005/07/31(日) 23:36:27
>>41
SetWindowsHookEx()を使い、WM_MOUSEMOVE拾って移動制限かけるのは?
4535:2005/07/31(日) 23:41:39
>>42
ウィンドウ前提のミニゲームなのでフルスクリーンは

>>43
自前描画してもカーソルが移動してクリックされれば他のアプリやデスクトップにマウスメッセージが

>>44
とりあえずそっちの方向でごまかしてみます

しかしなんでClipCursorが期待通りの動きをしないやらorz
46デフォルトの名無しさん:2005/08/01(月) 00:04:07
本当にClipCursorの動作がおかしいね。
とりあえずメッセージループの中などで毎度ClipCursorすれば・・ちょっと気持ち悪いけどね。
47デフォルトの名無しさん:2005/08/01(月) 00:09:18
>>45
>ClipCursorはウィンドウ生成時(VCLのTFormコンストラクタ内)にてGetWindowRectで取ったRECT構造体を渡しています。

ちゃんとスクリーン座標で渡してるか?
きちんとMSDNなり読んでからケチつけろよ。
4829:2005/08/01(月) 00:09:28
>>40
ふむ、MS-DOS以来の使用そのままか。
>>28
つーことで、素直に毎回open/closeかな。どっちみちデバイス制御周りは互換性ないから
戦略が違っても何とかなるでしょ?
49デフォルトの名無しさん:2005/08/01(月) 00:15:23
>>45
コンストラクタ内とかかいてあるんで、VCLはよく知らんけどウィンドウができる前に設定したりしてるんじゃね-の?
VC6(MFC)では以下のコードでちゃんと動いた。

View::OnLButtonDblClick()
{
 if(bClick){
  ::ClipCursor(NULL);
  bClick = FALSE;
 }else{
  RECT rc;
  GetWindowRect(&rc);
  ::ClipCursor(&rc);
  bClick=TRUE;
 }
}
50デフォルトの名無しさん:2005/08/01(月) 00:25:34
項目名の右にその項目の内容に関する文字列を表示する
リストボックスみたいな物を作りたいんですけど、
これってリストビューというやつが適してますか?
それともリストボックスで簡単にできますか?
51デフォルトの名無しさん:2005/08/01(月) 01:31:18
>>50
それはスレ違いジャマイカ?
52デフォルトの名無しさん:2005/08/01(月) 08:29:46
>>50
そんなもんも自分で選べないお前にはsprintf
53デフォルトの名無しさん:2005/08/01(月) 09:32:46
>>35
TFromのコンストラクタではまだウインドウ生成されてないぞ。
OnCreateでやれ。
54デフォルトの名無しさん:2005/08/01(月) 11:45:14
アプリが切り替わったときにClipCursorがリセットされるみたいだから、OnCreateでやっても駄目だべ。
やるならApplication.OnActivateか。
55デフォルトの名無しさん:2005/08/01(月) 17:09:52
Win2k以降のNT系OSでデバマネからの「ハードウェア変更後のスキャン」
と同等のことをさくっと行うのにはどうしたら良いですか?

デバマネ開いて右クリックして…はちょっとめんどくさいので…
56デフォルトの名無しさん:2005/08/01(月) 17:24:36
SetupDiなんちゃら
57デフォルトの名無しさん:2005/08/01(月) 17:28:06
>>55
SETUPAPI.DLL
CM_Locate_DevNode
CM_Reenumerate_DevNode
58デフォルトの名無しさん:2005/08/01(月) 17:33:41
リッチエディットコントロールで、指定した文字がある場所の行番号を得たい場合は
どうすればいいのでしょうか?
59デフォルトの名無しさん:2005/08/01(月) 17:42:12
確か前スレにあったぞ、そんな感じの質問
60デフォルトの名無しさん:2005/08/02(火) 02:13:54
他のウィンドウに隠れたウィンドウをキャプチャしたいです。
GetWindowDCとか試したんですが、前にあるウィンドウがかぶります。
ウィンドウを前に出さずにキャプチャする方法か無いでしょうか?
61デフォルトの名無しさん:2005/08/02(火) 03:07:28
EnumWindowsでウィンドウを列挙して力尽くで調べ上げてください。
62デフォルトの名無しさん:2005/08/02(火) 03:30:40
は?
63デフォルトの名無しさん:2005/08/02(火) 06:13:26
ヒント: WM_PRINT or PrintWindow or レイヤードウィンドウ
64デフォルトの名無しさん:2005/08/02(火) 06:22:19
ヒントにしてはずいぶん親切だな
65デフォルトの名無しさん:2005/08/02(火) 08:32:40
Requirements
Windows NT/2000/XP: Included in Windows XP and Windows Server 2003.
Windows 95/98/Me: Unsupported.
Header: Declared in Winspool.h; include Windows.h.
Library: Use Winspool.lib.

[゚Д゚]<
6660:2005/08/02(火) 16:43:27
ヒントありがとうございます。
---
HDC dcmem;
dcmem = CreateCompatibleDC(NULL);
SendMessage( hTargetWnd, WM_PRINT, (WPARAM), PRF_ERASEBKGND | PRF_CLIENT );
// hTargetWnd は対象のウィンドウ
---
と、したんですが取れていないっぽいです。
ビットマップを握らせてみたりしたんですけど、真っ黒(初期状態?)でした。
何か気をつけないといけない事とかありますか?
67デフォルトの名無しさん:2005/08/02(火) 20:48:07
W<_PRINTは対象のウィンドウがサポートしてるとは限らない。
サポートしてなければどうしようもない。
それこそ無理やりレイヤードウィンドウにでもしない限り
背面に回したままキャプチャは不可能
68デフォルトの名無しさん:2005/08/03(水) 01:00:02
30Mぐらいのファイルを大量に外付けのHDに
コピーしたいのですが、一番早いコピー方法を
教えてほしいとです。
よろしくお願い致します。
69デフォルトの名無しさん:2005/08/03(水) 01:49:52
DnD
70デフォルトの名無しさん:2005/08/03(水) 04:46:56
読み込みスレッドと書き込みスレッドを分ける
71デフォルトの名無しさん:2005/08/03(水) 07:51:15
CopyFileが最速だと思う
72デフォルトの名無しさん:2005/08/03(水) 09:15:11
ありがとうです。
SHFileOperationが最速だと思ってた・・・
CopyFileなのか〜。
73デフォルトの名無しさん:2005/08/03(水) 09:32:33
実測しろ
独自ルーチンのほうが速いかもしれんぞ
74デフォルトの名無しさん:2005/08/03(水) 10:00:25
でも少なくともSHFileOperationよりはCopyFileの方が早いだろうと思う。
75デフォルトの名無しさん:2005/08/03(水) 10:24:20
初めまして。
Windowsの右下の常駐アイコンが表示されるところ(時計とか表示されるところ)に
作成したプログラムを起動したときアイコンを表示させたいのですが
どのようにしたらいいか教えていただけないでしょうか。

MSDNで検索してもうまく見つけられませんでした。
76デフォルトの名無しさん:2005/08/03(水) 10:30:58
そんなもんググればすぐ見つかるのに・・・
77デフォルトの名無しさん:2005/08/03(水) 10:32:30
>>75
おまいさんが質問しなければいけないのは、

Windowsの右下の常駐アイコンが表示されるところ
(時計とか表示されるところ)

の呼び名じゃないか?
78デフォルトの名無しさん:2005/08/03(水) 10:33:08
>>75
あそこはタスクトレイと言うんだ。
そこに表示されるアイコンはトレイアイコンと言う。

ハイ、も一回検索。
7975:2005/08/03(水) 10:36:06
はい、検索してきます。^^;
8075:2005/08/03(水) 10:42:42
見つかりました。 みなさんありがとぉ^^
81デフォルトの名無しさん:2005/08/03(水) 11:32:24
>>75-80
なんか、この流れにワロス
8255:2005/08/03(水) 16:09:20
>>56-57
ありがとうございます。そこら辺をググったら
ttp://support.microsoft.com/default.aspx?scid=kb;ja;JP259697
が出てきたのでこれをそのままコピペしてやってみましたが「ハードウェア変更のスキャン」とは
同じ挙動ではないようです。
SCSIデバイスのホットスワップを行うのが目的なのですがSCSIデバイスの状態を変更後このコードを走らせても
反映されません

MinGWでコンパイルしているのがまずいのでしょうか…?
83デフォルトの名無しさん:2005/08/03(水) 16:19:30
>>82
こちらでは期待通り動いている。
84前スレ943:2005/08/03(水) 20:20:23
>>前スレ 945
おかげさまで解決しました。
CoInitializeSecurity()でバッチシでした。

質問
同一CPU上でアカウントAからアカウントBで動いている、COMサーバーに
接続するには?

解決方法
1 ImpersonateLoggedOnUserでスレッドのユーザ偽装。
2 CoInitializeSecurity()のdwCapabilitiesをEOAC_STATIC_CLOAKING またはEOAC_DYNAMIC_CLOAKING
3 CoCreateInstanceで偽装したユーザにつながる。
85デフォルトの名無しさん:2005/08/03(水) 22:34:46
グローバルフックでWM_IME_NOTIFYが来たときにGetCaretPos()でキャレットの位置を
取得したいのですが、画面上にキャレットがないときにもこの関数が成功してしまうみた
いなので困っています。
現在画面上にキャレットが表示されているかいないかを判別する方法はありますか?
86デフォルトの名無しさん:2005/08/03(水) 23:46:55
脊髄でレスだが、フォーカス持ってるウィンドウのクラス名で
判断できないかな?
8760:2005/08/04(木) 00:00:48
UpdateLayeredWindowの使い方がイマイチわかりません。
http://azumaya.s53.xrea.com/index.php?page=doc/win32api/layeredwindow
↑とか読んでやっているんですが、hdcsrcの握っているビットマップがそのまま対象ウィンドウにべた塗りされているようで、キャプチャまで至りません。
コード貼ると長いのでうpしました。
http://www.abenatsumi.net/up/big/source/big1464.zip

どなたか添削希望orz
88デフォルトの名無しさん:2005/08/04(木) 00:19:13
検索しても見つからなかったので質問します。

ウィンドウを4分割して使いたいのですが
4分割のやり方が書いてあるページ、書籍などありましたら教えていただけませんか?
よろしくお願いしますm(_ _)m
89デフォルトの名無しさん:2005/08/04(木) 00:33:24
>>88
自分で管理するんだよ、そういうコントロールがあるわけじゃない。
90デフォルトの名無しさん:2005/08/04(木) 00:47:15
>>84
CoCreateInstanceするスレッドを偽装するってこと?
CoCreateInstanceExってのもあるよ。
ところでなんのためにc/sでユーザ同一にしてんの?

質問ですが
OutputDebugStringした文字列見るCUIプログラムがあったと思うのですが
なんて名前でしょう?
91デフォルトの名無しさん:2005/08/04(木) 01:14:11
>>90
PlatformSDK付属のDbMonとかCUIだった気が
92デフォルトの名無しさん:2005/08/04(木) 01:18:47
>>88
MFCのCSplitterWndのソースとか??
93デフォルトの名無しさん:2005/08/04(木) 02:30:00
>>91
みつかった。ありがとう。
94デフォルトの名無しさん:2005/08/04(木) 03:23:08
>>89
>>92
ありがとうございます。
なにぶん初心者なもので、MFCのCSplitterWndは知りませんでした。
ソースを参考にしていろいろやってみたいと思います。
95デフォルトの名無しさん:2005/08/04(木) 03:32:56
>>78
http://blogs.msdn.com/oldnewthing/archive/2003/09/10/54831.aspx
海外だと"system tray"という俗称が広まってるようだが
日本の「タスクトレイ」はどこから広まったんだろうな
96デフォルトの名無しさん:2005/08/04(木) 04:14:55
sendinputでの入力ストリームをブロック出来るようですが
具体的にどうのようにすればブロック出来るか教えて頂け
ないでしょうか?
97デフォルトの名無しさん:2005/08/04(木) 04:15:42
VistaのWin32 API(WinFXではなく)の説明ってどこかにないのでしょうか。
β1ではWinFX自体別インストールなのにWinFXのドキュメントしかないって
なめてるのか?
98デフォルトの名無しさん:2005/08/04(木) 04:18:58
別にLonghornになったからってWin32の動作は変わらないと思うが。
過去との互換性は大事だから、
MSはできる限り動作を変えないようにがんがるはず。

まあ問題があったから動作を変えたものもあるけどね、
SetForegroundWindowとか。
99デフォルトの名無しさん:2005/08/04(木) 04:50:35
いやAPIがけっこう追加されてるはずなんだけど。
http://mikedimmick.blogspot.com/2004/07/changes-to-win32-api-in-longhorn_21.html
Win95に追加されたWin16 APIみたいに公開されずじまいで黒歴史になるんだろうか。
MicrosoftはWin32とWinFXの両方でVistaの全機能にアクセスできると
約束したはずなんだが…。
100デフォルトの名無しさん:2005/08/04(木) 05:15:52
Win16APIは追加されたんじゃなくて互換性のために残ってただけだろ
101デフォルトの名無しさん:2005/08/04(木) 05:25:33
Win95でWin16APIに拡張が施されたという意味だろ。
で、どういうのが追加されたわけ?
102デフォルトの名無しさん:2005/08/04(木) 05:55:59
公式にはGDI32にしかないとされているAPIの一部(ベジェなど)とか、
GDI/USERの32ビットヒープを見るためのToolhelp APIとか。
103デフォルトの名無しさん:2005/08/04(木) 07:17:38
メッセージキューに溜まっているメッセージの数を
取得するAPIってあるでしょうか?
APIでなくても何か方法があれば知りたいのですが・・・
よろしくお願いします。
104デフォルトの名無しさん:2005/08/04(木) 07:32:27
>>103
事前に調べるのは無理だろう。
まあ、あえてやろうと思えば(意味があるかどうか知らんがw)

for(i = 0; PeekMessage(&msg, NULL, 0, 0, PM_REMOVE); i++) ;
105103:2005/08/04(木) 08:14:20
なるほど、ありがとうございます。
処理が重すぎてメッセージが溜まるようなら調整するようにしようと思ったのですが、
他の方法を考えてみます(´Д⊂
10685:2005/08/04(木) 08:42:42
>>86
ありがとうございます。
最終手段としては考えていますが、それだとエディタやIE内のエディットボックスなど
判断できない場合があるのし、新しいアプリにも対応できないのでできれば他の方法がいいのですが。

根本的な解決方法はないのでしょうか?
107デフォルトの名無しさん:2005/08/04(木) 20:47:20
LoadBitmap() を使いたいのですが分からないことがあります。
リソースファイルに
nameID BITMAP filename
を書き加えて、
LoadBitmap(hInstance , "nameID");
みたいなかんじでwebサイトとかに載っているのですが、
うまくいきません。(BitBlt()とかで転送しても表示されない)

リソースファイルを作ったときにできたresource.hを
#inlcude "resource.h"
インクルードして
LoadBitmap(hInstance , MAKEINTRESOURCE(nameID)); とか
LoadBitmap(hInstance ,(LPCTSTR)nameID);
だったらうまくいきます。

というか、リソースファイルの記述が.Netじゃできなくて
別のエディタで書いてたりします。使い方とかも教えてほしいです。
長くてすいません。
108デフォルトの名無しさん:2005/08/04(木) 21:45:18
nameID BITMAP filename

"nameID" BITMAP filename

こうすればいいような希ガス。
109デフォルトの名無しさん:2005/08/04(木) 23:13:45
VC6です。実はMFC内のコードですが、こちらが適切と思いお邪魔致しました。
クリップボードのbitmapをファイルに保存したいです。ハンドルから直接データを
頂けるとラクなので以下のようにした(動作はしている)のですが、こういうやり方ってOKなんでしょうか?
Web上のみなさまはGetDIBitsを主に使っておられ、以下のようにしてる人は見当たらなかったもので・・・

BITMAPFILEHEADER bmfh;
/* bmfh.bfSize 以外に定型データ代入 */
::OpenClipboard(m_hWnd);
HBITMAP hBitmap = (HBITMAP)::GetClipboardData(CF_DIB); // 存在確認済み
GlobalLock(hBitmap);
const BITMAPINFOHEADER* pbmih = (BITMAPINFOHEADER*)hBitmap; // pbmih->biSizeImageの値が欲しいだけ
bmfh.bfSize = bmfh.bfOffBits + pbmih->biSizeImage;
/* (const void*)bmfh と (const void*)hBitmap をファイルに書込む、あるいは別の領域にコピー */
::GlobalUnlock(hBitmap);
::CloseClipboard();
110デフォルトの名無しさん:2005/08/05(金) 01:31:58
>>85
GetGUIThreadInfo
111デフォルトの名無しさん:2005/08/05(金) 09:32:47
アプリケーションの終了方法としては下記のプログラムは正しいでしょうか。
実際に正常に終了している様には見えますが 自信が持てません。^^;

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR lpCmdLine, int nCmdShow) {
  (省略)
HWND hwnd;
hwnd = CreateWindow ("Window 1", ・・・);
  (省略)
hyouji1 ((hwnd1);
return 0;
}

void hyouji1 (HWND hwnd1){
MSG msg;
  (省略)
  while(TRUE){
    if (PeekMessage(&msg, NULL, WM_MOUSEFIRST, WM_MOUSELAST, PM_NOREMOVE)){
    if (GetMessage(&msg, NULL, 0, 0) == 0) break;
     TranslateMessage(&msg);DispatchMessage(&msg);
    }
    else
    {
    (省略)  //左クリックが押されない限り 計算を続ける
    }
   }
}

LRESULT CALLBACK WndProc (HWND hwndBlack, UINT msg, WPARAM wp, LPARAM lp) {
switch (msg) {
case WM_LBUTTONDOWN: PostQuitMessage (0); return 0; //アプリ終了
return DefWindowProc (hwnd1, msg, wp, lp);
}
112デフォルトの名無しさん:2005/08/05(金) 09:43:18
そもそもそんな作り方をするのはおかしい。
それじゃウインドウがまったく反応せず、クリックしたら終了という、
何のためのGUIなんだかわからんプログラムになるんじゃないか?

それでいいなら、別にGUIにしなくたっていいじゃん。

GetMessageの戻り値の処理がそれだと多少まずい場合があるけど
それ以前に変だから。考え方が。
113デフォルトの名無しさん:2005/08/05(金) 10:06:32
>>111
PostQuitMessage()は普通WM_DESTROYが来たときに呼ぶ。
アプリケーションを終了させたいところではWM_CLOSEをPost/Sendする。

WM_CLOSEはウィンドウの×を押したときにも送られ、DefWindowProcへ送るとDestoyWindow()が呼ばれる。
そしてDestoyWindow()がWM_DESTROYを送る。

あとメッセージはPeekMessageしたあとGetMessageをしなくてもPeekMessageで全部受ければいいだろ。
MSG msg;
while (TRUE) {
    if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) {
        if (msg.message == WM_QUIT)
            break;
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    } else {
        (省略)  //左クリックが押されない限り 計算を続ける
    }
}
114111:2005/08/05(金) 11:21:12
>>112-113
ありがとうございます。
説明が足らない部分があったので補足すると、ウインドウは
hwnd = CreateWindow ("Window 1", NULL, WS_POPUP, 0, 0, 500, 300,NULL, NULL, hInstance, NULL);
という内容で、×マーク等の無いクライアント領域のみのウインドウです。
それで「クリックで終了」ということを考えました。

クリック後ウィンドウを閉じる処理をしてからWM_DESTROYを送るように変更してみます。
ホントにありがとうございました。

当たり前のように指摘されると あまりの自分の知識のなさに泣けてきます・・・・ うわ〜〜ん
でもがんばります^^
115デフォルトの名無しさん:2005/08/05(金) 11:34:24
>>114
WM_DESTORYはDestroyWindow()を呼んだ結果として起こるものであって、自分で送るものではない。
116デフォルトの名無しさん:2005/08/05(金) 11:54:18
ウインドウスタイルについて質問なのですが、
タイトル部、ウインドウの枠も無いウインドウを作る事は可能でしょうか、
CreateWindowExのウインドウスタイルを見るかがり目的の設定が無いと思うのですが、
ほかに方法はありますでしょうか、
以上です、よろしくお願いします。
117デフォルトの名無しさん:2005/08/05(金) 12:05:30
>>116
WS_CAPTIONを使うな。
118デフォルトの名無しさん:2005/08/05(金) 12:23:00
>>116
WS_POPUPかリュージョン使えばおk
119デフォルトの名無しさん:2005/08/05(金) 14:59:12
>>118
デキィタァー!
感謝です。

>WS_POPUPかリュージョン使えばおk
WS_POPUPの指定で目的は果たせて解決出来ました。ありがとうございます。
ところで「リュージョン」っていうのは何でしょうか、出来ましたら参考に教えていただけませんでしょうか。
よろしくお願いします。
120デフォルトの名無しさん:2005/08/05(金) 15:03:31
regionの間違いかと。
121デフォルトの名無しさん:2005/08/05(金) 15:03:59
illusionの間違いかと
122デフォルトの名無しさん:2005/08/05(金) 15:34:44
イリュージョンといえばおっぱいスライダー
123デフォルトの名無しさん:2005/08/05(金) 15:43:47
>>119
リージョンの間違え(´・ω・`)
Windowを好きな形に切り取るといったら判りやすいかも
http://www.kumei.ne.jp/c_lang/sdk4/sdk_338.htm
この辺を参考に
ペルソナウェアとかデスクトップアクセサリとかによく使われてるもの
124デフォルトの名無しさん:2005/08/05(金) 17:58:06
>>110
おっ!
たまに挙動がおかしいですがこれなら実用性に問題はなさそうです。
ありがとうございました。
125デフォルトの名無しさん:2005/08/05(金) 19:13:57
リージョンは古い。今なら、Layered Window。
ただし、まだ9X系列をサポートするつもりなら使えないけど。
126デフォルトの名無しさん:2005/08/05(金) 19:16:17
9xではリージョンを使ってWin2k以上ならLayered Windowという実装はアリでしょう
127デフォルトの名無しさん:2005/08/05(金) 19:43:54
こんばんは、よろしくお願いします。
ツールバーを非表示にしたいのですが、
HWND h = CreateToolbarEx(..)
で作ったツールバーを非表示にしたいと思うのですが、
SendMessage(h,・・・・・
書き方が分かりません。おしえてください。
128デフォルトの名無しさん:2005/08/05(金) 19:50:29
ShowWindow
129デフォルトの名無しさん:2005/08/05(金) 20:06:48
ウインドウに表示されたActiveX(Flash.ocx)のボタンの上にマウスカーソルが来た事を判断させたいのですが、
取り合えずDefWindowProcでやってみたのですが、ActiveXのボタンかどうかの判断は出来ませんでした。
何方か、解決方法ご存じありませんでしょうか。
よろしくお願いします。
130デフォルトの名無しさん:2005/08/05(金) 20:16:00
>>127です
>>128さんありがとうございます。
ShowWindowでできました。
131デフォルトの名無しさん:2005/08/05(金) 20:25:45
SetLayeredWindowAttributes で LWA_COLORKEY を指定したときに、
効果があったりなかったりして困っています
透明色の値は黒とは限らず例えば ChooseColor でユーザに選択させた値などです
LWA_ALPHA と混用していて、「効果がなかった」ときも微妙に色が変わったように見えます
どなたか、お心当たりがあれば教えてください

環境は Windows2000, VC6, cygwin g++ です
SDK は最新版です
132デフォルトの名無しさん:2005/08/06(土) 00:47:02
>>129
ActiveX側でWM_MOUSEOVER
133デフォルトの名無しさん:2005/08/06(土) 02:13:54
Flash.ocx側のWM_MOUSEOVERを勝手にキャッチできるの?
134デフォルトの名無しさん:2005/08/06(土) 02:41:31
un
135前スレ813:2005/08/06(土) 05:59:24
皆さん、ありがとうございます。
>>前スレ816
Win98なのですが、音は出ないみたいです。サウンドカードからも出ません。system()はcommand.com呼び出しですよね?
system("\a")だと、そういうコマンドがないので、「コマンドまたはファイル名が違います」となりますね・・・
NT系はsystem()でcmd.exeとかが呼び出されるのですか?

>>前スレ822
すみません、Win98です。WIN32.HLPにはNT系のところにサウンドカードのことが書かれてなかったのでわかりませんでした・・・
136デフォルトの名無しさん:2005/08/06(土) 07:39:08
> system("\a")
printf("\a") だろ
137前スレ816:2005/08/06(土) 08:09:46
>>135
Win2000 だと出る。
system("echo \a"); でどうだろか。これも Win2000 だと出る。

>>136
Winアプリだとそれじゃあ出ない。(少なくとも Win2000 では)
138デフォルトの名無しさん:2005/08/06(土) 08:24:04
まぁ確かに、標準出力が実際にはどこにも出力されないWinアプリじゃ>136じゃ鳴るわけないなぁ。
さて、command.comのechoはbellを処理できただろうか。
139デフォルトの名無しさん:2005/08/06(土) 08:43:00
リストボックスなどに標準装備されているスクロールバーの
ハンドルを取得するにはどうすれば良いのでしょうか
140デフォルトの名無しさん:2005/08/06(土) 08:51:16
VC++で64bitの定数はどのように記述すればいいのでしょうか?
141140:2005/08/06(土) 08:53:08
出来れば10進と16進の両方の記述を教えてください。
142デフォルトの名無しさん:2005/08/06(土) 08:55:24
普通に書けばいい
143デフォルトの名無しさん:2005/08/06(土) 08:58:06
たとえばこういうふうに。接尾辞はたぶんなくても平気だろう。(必要ならi64)
const long long FOO = 9223372036854775807;
const unsigned long long BAR = 0xffffffffffffffff;
VC6までならlong longはないから<windows.h>のLONGLONGとULONGLONGとかで。
144140:2005/08/06(土) 09:06:17
const UINT64HOGE=0xffffffffffffffff;
で、HOGE=0xffffffffに丸められてしまいます。
プロジェクトのプロパティの何かを変える必要があるのでしょうか?
私の環境はVS.Net2002です。お願いします。
145140:2005/08/06(土) 09:12:11
const UINT64 HOGE = 0xffffffffffffffffI64;
でも駄目でした。アカデミックパックだと出来ないのでしょうかねぇ。
146デフォルトの名無しさん:2005/08/06(土) 09:13:42
>>140
定数の書き方は limit.h を読んでみるといい
変数は __int64 型
147デフォルトの名無しさん:2005/08/06(土) 09:14:14
もとい limits.h
148デフォルトの名無しさん:2005/08/06(土) 09:18:42
>>144
符号なしだから0xffffffffffffffffui64じゃないか?
149デフォルトの名無しさん:2005/08/06(土) 09:30:55
>>144
「丸められて」をどう確認した?
出力に使った手段が32bit型しかサポートしていない可能性も‥‥
(BCBのiostreamとか)
150デフォルトの名無しさん:2005/08/06(土) 09:42:39
printfの指定を64ビットにしてないんだろ。

printf("%I64d\n", HOGE);
または
printf("%I64x\n", HOGE);
151140:2005/08/06(土) 09:55:08
やっぱりどうも出来ないので、上位と下位に分けて
ビットシフトとビットオアで間に合わせました。有難うございました。
const UINT64 HOGE_U =0x12345678;
const UINT64 HOGE_L =0x87654321;
UINT64 HOGE;
HOGE=HOGE_U<<32|HOGE_L;
152デフォルトの名無しさん:2005/08/06(土) 10:04:41
>>151
出来ないって何が?
その方法で何が出来るようになったんだ?
例えば 150 の指摘があたっていたら
それでもまだ失敗するはずだぞ
153デフォルトの名無しさん:2005/08/06(土) 10:05:17
ちなみに __int64 に対してはオーバーロード解決がサポートされないんだったよな
154デフォルトの名無しさん:2005/08/06(土) 10:10:05
>>151
それだったら0x12345678 << 32 | 0x87654321でもできそうな気がするが。
155デフォルトの名無しさん:2005/08/06(土) 11:33:50
#include <windows.h>
#include <iostream>

using namespace std ;

int main()
{
const UINT64 HOGE = 0xffffffffffffffff ;
printf("%I64u\n", HOGE) ;
printf("%I64x\n", HOGE) ;
cout << HOGE << endl ;
}

接尾辞もキャストも無しでちゃんと出るけどなぁ。
BCC5.6.4、vctk2003 で。
156デフォルトの名無しさん:2005/08/06(土) 16:07:56
const __int64 HOGE = 0xffffffffffffffffi64 ;


ヒント:mmintrin.h
157デフォルトの名無しさん:2005/08/06(土) 16:52:24
ちゃんと64ビット定数として書けばいい。

それがどーしても嫌というのなら、LARGE_INTEGER構造体・共用体を使う。
158デフォルトの名無しさん:2005/08/06(土) 18:22:53
単にVC++7.0の仕様かバグだったら笑える
159デフォルトの名無しさん:2005/08/06(土) 21:06:35
匿名パイプで子プロセスが書き込みを受け付けてない時に書き込み側へWriteFileするとスレッドが停止してしまうのですが、それを防ぐ方法はありますか?
160デフォルトの名無しさん:2005/08/06(土) 21:08:05
WriteFileの最後の引数つかうとか
161デフォルトの名無しさん:2005/08/06(土) 21:11:15
更に書き込み用のスレッド起こしてWaitForSingleObjectとか(アホげ
162デフォルトの名無しさん:2005/08/06(土) 21:14:30
以下のプログラム
const wchar_t* p = L"abcあいう";
::MessageBox( NULL, p, L"", MB_OK);
printf("error:%s\n", p);
printf("error:%S\n", p);
wprintf(L"error:%s\n", p);
wprintf(L"error:%S\n", p);
を実行すると
error:a
error:abc
error:abcerror:a
と化けます。(ダイアログには出る)
コンソールに正しく出すのはどうすればよろしい?
163159:2005/08/06(土) 21:30:12
>>160
パイプでWriteFileの最後の引数使うとWindows98ではエラーになるんですが・・・。
164デフォルトの名無しさん:2005/08/06(土) 21:51:07
>>162
#include <locale.h>
setlocale(LC_ALL, "");
165デフォルトの名無しさん:2005/08/06(土) 21:59:22
Win98では対処のしようがない。
ソケット使うとか、別にイベントを用意して手動でたてたりおろしたりするとか。
166デフォルトの名無しさん:2005/08/06(土) 22:02:49
子プロセスの状態の判別がわからないんなら
普通に書き込み専用のサブスレッド立ててタイムアウト指定が一番簡単だと思うけど
167162:2005/08/06(土) 22:07:19
>>164
ちゃんと出力されました。ありがとう。
168デフォルトの名無しさん:2005/08/06(土) 22:08:00
パイプ相手にタイムアウト指定ってどうすればできるの?
169デフォルトの名無しさん:2005/08/06(土) 22:11:03
>>163
なんのエラー?
170デフォルトの名無しさん:2005/08/06(土) 22:14:49
パイプじゃなくて、パイプへの書き込み用に起こしたスレッドにタイムアウト指定するの。
正確には、呼び出し側でWaitFor〜でタイムアウト時間指定して待機し、帰ってこなかったら
TerminateThreadとか。
171デフォルトの名無しさん:2005/08/06(土) 22:26:57
ms-help://MS.MSDNQTR.2003FEB.1041/fileio/base/writefile.htm
>Windows Me/98/95: For operations on files, disks, pipes, or mailslots,
>this parameter must be NULL; a pointer to an OVERLAPPED structure causes
>the call to fail. However, the function supports overlapped I/O on serial and parallel ports.
172デフォルトの名無しさん:2005/08/06(土) 22:38:18
>>171
ちゃんと日本語ヘルプにも載ってたわ。すまん。
Windows 95/98:非同期の書き込み操作を行う場合、FILE_FLAG_OVERLAPPED フラグを指定し CreateFile 関数を呼び出して開いた通信リソース、または socket と accept どちらかの関数が返したソケットのハンドルを指定します。
メールスロット、名前付きパイプ、ディスクファイルに対する非同期書き込み操作はサポートしていません。

173デフォルトの名無しさん:2005/08/07(日) 01:49:24
shell32.dllに入ってるファイルコピーとかのAVIリソースを使いたいんだけど、
どのようなAPIを使って取り出し、再生をすればいいのでしょうか。
174159:2005/08/07(日) 04:38:16
>>165-170
素直に名前ありのパイプを使用します。
ありがとうございました。
175139:2005/08/07(日) 08:40:41
|∀・)
176デフォルトの名無しさん:2005/08/07(日) 08:42:07
>>175
(・∀・)カエレ!!
177139:2005/08/07(日) 08:47:26
   ∧∧
   /⌒ヽ)
  i三 ∪
 ○三 |
  (/~∪
  三三
 三三
三三三
178 ◆Pu/ODYSSEY :2005/08/07(日) 09:10:11
WM_HSCROLL/WM_VSCROLLメッセージ拾ったときに各スクロールバーのハンドルが拾えるけど、それで大抵間に合うんでないの?
179デフォルトの名無しさん:2005/08/07(日) 09:15:33
>>173
うろお?hぉえだけど。
LoadLibrary
FindResource
LoadResource
LockResource
あたりでリソース読む。
再生はよくわからん。
普通にアニメーションコントロールを作りゃいいんじゃないの?
CreateWindowとかして。
180139:2005/08/07(日) 10:35:30
>>178
ありがとうございます。
スクロールバーがでるくらいリスト項目が十分にあれば
強制的にWM_VSCROLLを出させて、ハンドルを拾えました。

目的を書けばよかった。
リストボックス付随スクロールバーの外見を、
Webブラウザでスタイルを変更したときのスクロールバーの様に見せたかったんです。
181デフォルトの名無しさん:2005/08/07(日) 14:24:46
>>173
自分( 自作の.exeや.dll )で持っているリソースとまったく同じやり方でおk。
取得先が shell32.dll なだけ。
182デフォルトの名無しさん:2005/08/07(日) 17:47:08
こんにちは、質問です。
ディレクトリーが存在するかどうかを調べようと思い、
Directory.exists("mm\\");
とかきこみましたが、
Directory定義されていない識別子
と出ます。#include <io.h>
しています。
使い方を教えてください。
183デフォルトの名無しさん:2005/08/07(日) 17:51:54
>>182
何語だそれは。
184 ◆Pu/ODYSSEY :2005/08/07(日) 17:54:31
>>182
あーたそれCとC#がごっちゃになってまへん?

Win32APIならPathIsDirectoryっていう、そのまんまなAPI関数がありますわ。
#include <io.h>も不要。 むしろwindows.hのほうが必要。
185デフォルトの名無しさん:2005/08/07(日) 18:13:02
>>184さんありがとうございます。
PathIsDirectoryでできました。
でも、#include <shlwapi.h>やリンカの設定も必要でした?
186デフォルトの名無しさん:2005/08/07(日) 18:30:44
>>185
それでいいんだよ。
187デフォルトの名無しさん:2005/08/07(日) 19:04:41
>>186ありがとうございました
188173:2005/08/07(日) 22:05:53
>>179
ありがとうございます。そのへん調べてみます。

>>181
アイコンはExtractIcon(だったかな?)でやったことあるんだけど、
AVIは扱ったことないもんで。
BCB6使ってるんだけど、TAnimateコンポーネントはあまり
自由なことができなさそうなので、APIを使う方法を調べておこうかと
思いまして。
189デフォルトの名無しさん:2005/08/07(日) 22:27:58
>>188
確か、こんな感じでいけるよ。
HMODULE shell32.dllのモジュールハンドル = LoadLibrary("shell32.dll");
Animate_OpenEx(アニメーションコントロールのウィンドウハンドル, shell32.dllのモジュールハンドル, MAKEINTRESOURCE(shell32.dll内のリソースID));
Animate_Play(アニメーションコントロールのウィンドウハンドル, 0, -1, -1);
190デフォルトの名無しさん:2005/08/07(日) 23:07:59
SaveFileNameを使用したら、いきなり例外が発生して強制終了したので
tryブロックで囲んで例外をキャッチしようとしたら例外が発生しなくなった。(正常に動く)
で、またtryブロックを外したら例外が発生する・・・なぜ???
今までこんなことなかったのに不思議だ・・・
OpenFileNameではそんな現象は見られませんでした。
そんな経験ある方いますか?
ちなみにVC++.netです。
191デフォルトの名無しさん:2005/08/07(日) 23:13:54
catch(...)はアクセス違反等の構造化例外もキャッチしちゃうよ。
192190:2005/08/07(日) 23:20:02
>>191
キャッチしてくれるんならいいんだけど、
例外自体が発生しなくなってcatch(...)ブロックにも入らなくなったんで
おかしいなぁ〜・・・と。
とりあえず正常に動きはするみたいだけど、原因がわからないと
イマイチ気持ち悪くて・・・
193デフォルトの名無しさん:2005/08/07(日) 23:29:30
というか、SaveFileName を実行中に例外が発生したのか、
それとも別のところで発生したかは判明してんの?
SaveFileName は内部で SetErrorMode 使ってたりするから
(外から見て)例外は発生しにくいぞ。
194173:2005/08/08(月) 00:43:01
>>189
すみません、何語の話でしょう?(^^; BCB6のTAnimateクラスに
OpenExなんてメソッドはないっす。
TAnimateクラスのソースを眺めてみたんですが、まあ最終的には
そんな感じにはなってましたけど。
ACM_OPENとかのメッセージを使うらしいことはわかってきました。
とりあえず当面はサポートされてるアニメーションで間に合わせとくかな。
195デフォルトの名無しさん:2005/08/08(月) 00:48:27
>>194
Animate_OpenEx は WIN32API 。
TAnimateのクラスからウィンドウハンドルを取得すればそのまま使えると思うけど。
ただし、TAnimate がアニメーションコントロールのラッパーじゃない場合はうまく機能しない。
196173:2005/08/08(月) 01:29:59
>>195
なっっ!そうでしたか。
Platform SDKのヘルプで調べたら確かにありました。m(_ _)m
情報感謝です。
197デフォルトの名無しさん:2005/08/08(月) 04:32:41
リストビュー、あるいはリストビューを子に持つウインドウに対して、
拡張スタイルにWS_EX_COMPOSITEDを指定してやると、
WM_PAINTが発生しまくるわ、WM_NOTIFY(リストビューのNM_CASTUMDRAW)が飛んできまくるわで、
リストビューは表示されないし、
WM_PAINTが飛びすぎなので、当然レスポンスは著しく下がるし、CPU使用率が100%になるしと、

まともじゃない挙動になるのですが、
誰か詳しく分かりませんか?
198190:2005/08/08(月) 05:44:54
>>193
その関数しか呼び出してない部分で発生してるので
間違いないと思います。
う〜ん、もう少し調べてみるか。
失礼しますた。
199デフォルトの名無しさん:2005/08/08(月) 07:07:18
単にスタックぶっ壊してるんじゃないのか?
例外関係はスタック食うから、それで隠れてるだけって可能性も。
20097:2005/08/08(月) 23:26:06
とか言ってたらCreateSymbolicLinkのリファレンスキター
201デフォルトの名無しさん:2005/08/09(火) 03:00:14
>>197
当然OSはWindowsXPで、CS_OWNDCかCS_CLASSDCを指定しているんだろうな?
202デフォルトの名無しさん:2005/08/09(火) 03:52:29
ディレクトリの作成日時や更新日時を変更する方法を教えてください。
203デフォルトの名無しさん:2005/08/09(火) 05:04:28
ディレクトリの更新日時は、ちょっとしたことで変わります。
諦めたほうがいいかと。

SetFileTimeしてみた?
204197:2005/08/09(火) 06:14:13
>>201
MSDNだと、指定してはいけないことになっています。
今試してみたら、ウインドウが表示されなくなりますね。

いろいろ試してみたけど、やはり自前でダブルバッファ処理をしたほうがましですね。
Vistaに期待しようかな。
205デフォルトの名無しさん:2005/08/09(火) 06:32:42
206デフォルトの名無しさん:2005/08/09(火) 08:31:17
ありがとー。
これで書庫のディレクトリの日時の復元が出来そうです
207デフォルトの名無しさん:2005/08/09(火) 20:31:42
C++スレで書き込んだら、APIスレで書き込んでくれと言われたのでやってきました。
どなたか、教えてください

自分で作ったアプリケーションをノンアクティブ状態でジョイパッドを使用できる状態にしたいのですが、どうすれば
よろしいでしょうか?ダイレクトインプットを使えば簡単なのですが、どうも難しすぎて私の手には負えません。
それ以外で方法はないでしょうか?

もう一つ質問があるのですが、自分で作ったアプリケーション以外で新規に起動したアプリのウィンドウハンドルを
取得したいのですが、どうすればいいのですか?

一度に二つも質問してすみません
208129:2005/08/09(火) 20:44:17
レスポンス遅れてすいません。
129で次の質問したものです。

>ウインドウに表示されたActiveX(Flash.ocx)のボタンの上にマウスカーソルが来た事を判断させたいのですが、
>取り合えずDefWindowProcでやってみたのですが、ActiveXのボタンかどうかの判断は出来ませんでした。
>何方か、解決方法ご存じありませんでしょうか。
>よろしくお願いします。

>132
>ActiveX側でWM_MOUSEOVER

レスありがとうございます。
自分は、CAxWindowを使ってFlash.ocxを呼んでるんですが、
とりあえずこのウインドウに流れてるメッセージを片っ端から表示してみたんですが、
WM_MOUSEOVERを含め、それらしい(あやしそうな)メッセージはどうも来ないようなんです。
もしかして全然間違ってますか?
出来ましたら、もう少し具体的に教え頂けると助かります。
以上です、引き続きよろしくお願いします。
209デフォルトの名無しさん:2005/08/09(火) 20:49:36
LWA_COLORKEY | LWA_ALPHA って、機種依存つおい?
210デフォルトの名無しさん:2005/08/09(火) 20:55:08
>>207
両方フックでいけそうな予感

>>209
機種依存よりOS依存だろ
211デフォルトの名無しさん:2005/08/09(火) 20:58:10
>>210
NT系 2000 以後限定でも?
212デフォルトの名無しさん:2005/08/09(火) 20:59:03
よーするに、GetDeviceCaps で問い合わせるような性質の問題があるかってことなんだけどさ・・・・
213デフォルトの名無しさん:2005/08/09(火) 21:06:25
あまり使われてない機能はデバイスドライバの実装が手抜きな可能性がある罠
さすがにGDIではあまりないけどDirectXだとゴロゴロ
214デフォルトの名無しさん:2005/08/09(火) 21:34:41
>>210
返事ありがとうございます。フックを使って具体的にどうすればいいのか
教えて頂ければうれしいです。
215デフォルトの名無しさん:2005/08/09(火) 22:08:01
>>214
やりたいことと同じことをやっている、
オープンソースのソフトのソースコードを見れ。
216デフォルトの名無しさん:2005/08/09(火) 22:12:56
 
217デフォルトの名無しさん:2005/08/09(火) 22:13:04
>>208
そのFlash.ocxは自分で作ったActiveXコントロール?
いまいち作りが不明なんだけど。
どういう風にやったのか詳細を。
つか、スレ違いっぽいのでMFCスレのがいいかも試練。
218デフォルトの名無しさん:2005/08/09(火) 22:16:38
質問です。
特定のウィンドウのみををクリップボードにコピーする方法を教えてください
219デフォルトの名無しさん:2005/08/09(火) 22:19:13
>>217
名前から考えるに自作じゃなくてMacromedia(現Adobe)のFlash Playerのコントロール
だから>>133みたいに聞いたんだが
220デフォルトの名無しさん:2005/08/09(火) 22:23:16
あぁ、そうか。
じゃ、ActiveX側がそのイベント発行して無いと無理だな。
221デフォルトの名無しさん:2005/08/10(水) 02:02:28
>>218
ウィンドウをクリップボードにコピーすることなど出来ない。
222 ◆Pu/ODYSSEY :2005/08/10(水) 02:09:17
ALT+PrintScreen
とボケてみる
223デフォルトの名無しさん:2005/08/10(水) 06:44:17
PrintWindowとSetClipboardDataでなんとか
224129、208:2005/08/10(水) 10:21:37
217さん、219さん、220さん
レスありがとうございます。
説明不足ですいません、219さんのおっしゃる通りです。

>220
>あぁ、そうか。
>じゃ、ActiveX側がそのイベント発行して無いと無理だな。
importした時に吐き出されるFlash.tlhを見るとイベントでは、次の三つが用意されているんですが、
OnReadyStateChange、OnProgress、FSCommand
それぞれ捕まえて挙動を見てみたんですがどれもダメでした。
ん〜、無理なんですかねぇ〜。
225デフォルトの名無しさん:2005/08/10(水) 11:54:52
>>224
メッセージフックで良いと思う。
SetWindowsHookExとかその類をキーワードにして
SDK見たり検索したりしてみてごらん。
226デフォルトの名無しさん:2005/08/10(水) 15:19:26
馬鹿だな、InsideWindows見ればいいのに・・・
227デフォルトの名無しさん:2005/08/10(水) 16:53:33
質問なのですが、現在ひとつのウィンドウにレバーコントロールつけている状況です。
そこでレバーコントロールの右下にスクロールバーを出して、レバーコントロール以下の
文字列をスクロールさせたいと思っているのですが、どうしてもスクロールバーが
レバーコントロールの部分まで重なってしまいます。スクロールバーを初期位置に出す
WS_OVERLAPPEDWINDOW | WS_VSCROLLではなく、
スクロールバーの初期位置を任意の座標に出すにはどうすればいいのでしょうか?
開発環境は、VC++、SDKです。よろしくお願いします。
228デフォルトの名無しさん:2005/08/10(水) 16:55:48
MFCだろ、WINAPIはZオーダーしか気にしてないよ、場違い
229デフォルトの名無しさん:2005/08/10(水) 17:01:03
228は気違い
230デフォルトの名無しさん:2005/08/10(水) 18:55:04
>>227
子ウィンドウとしてスクロールバーコントロールを配置するか、
レバーを除外した部分を子ウィンドウにして、
そっちのスクロールバーを使うか。
231デフォルトの名無しさん:2005/08/10(水) 19:36:29
>>230
返事ありがとうございます。
子ウィンドウとしてスクロールバーを作る方法でいこうと思います。
これで解決しそうです。でも、ウィンドウサイズを可変するとちらつくのが気になるところ・・。
232デフォルトの名無しさん:2005/08/10(水) 20:12:04
>>231
スクロールバーを、モードレスダイアログボックスに配置しては?
233デフォルトの名無しさん:2005/08/10(水) 23:11:27
どうでもいいけどクメイの間違いだからレバーと言うのやめれ
234デフォルトの名無しさん:2005/08/10(水) 23:21:25
>>231
親ウインドウの背景を再描画しないようにすれば解決する…はず。
235デフォルトの名無しさん:2005/08/11(木) 07:55:48
CriticalSectionで同期をとる場合、
既にロックされているかどうかを
処理を止めずに知るにはどうすれば良いのでしょうか?
236デフォルトの名無しさん:2005/08/11(木) 08:21:19
>>235
TryEnterCriticalSection

MSDNよめばEnterCriticalSectionからリンク貼られているぞ。
237デフォルトの名無しさん:2005/08/11(木) 08:30:00
すみません、説明不足でした。
既にロックされているかどうかを、処理を止めずに、かつロックせずに知りたいのです。
238デフォルトの名無しさん:2005/08/11(木) 08:33:33
>>237
むり。
クリティカルセクションでやりたければ、
TryEnter〜で確かめて、自分がクリティカルセクションつかんだら、
すぐにLeave〜するぐらいなもの。
239デフォルトの名無しさん:2005/08/11(木) 08:39:39
そうですか…。Try&Leaveだとコストが高いですね。
Mutexの方を検討してみます。ありがとうございました。
240デフォルトの名無しさん:2005/08/11(木) 08:47:53
似たようなもんですが
241デフォルトの名無しさん:2005/08/11(木) 08:48:06
ミューテックスだと遅いがな……。
242デフォルトの名無しさん:2005/08/11(木) 09:51:50
>>233
レバーってrebar controlのことか!
243デフォルトの名無しさん:2005/08/11(木) 11:53:40
手動リセットイベント使った方がよくね?
244デフォルトの名無しさん:2005/08/11(木) 12:14:58
>>237
>既にロックされているかどうかを、処理を止めずに、かつロックせずに知りたいのです。

それってあまり役に立たないAPIだと思う。
APIから戻ってきて次のコードを実行するときには
もうロックの状態が変更されてるかも知れないわけだし
245デフォルトの名無しさん:2005/08/11(木) 12:47:22
こんにちは、

プリプロセッサによる条件文を記述しようとしているのですが、
Windows環境でのビルドだと、指定したインクルード(#include "MyWinApp.h")がされるようにしたいのです。
プリプロセッサに何をしていすればいいのでしょーか?

よろしくお願いします。

#ifdef ?
#include "MyWinApp.h"
#else
#include "MyApp.h"
#endif
246デフォルトの名無しさん:2005/08/11(木) 12:54:15
>>245
どのコンパイラか言わないのに答えられるわけがない。
というか普通そういうコンパイラ依存の特殊なのは、コンパイラ付属のヘルプに書いてあるもんだが。
247デフォルトの名無しさん:2005/08/11(木) 13:00:22
>>246
失礼しました。
開発環境はVCです。
248デフォルトの名無しさん:2005/08/11(木) 13:13:19
249デフォルトの名無しさん:2005/08/11(木) 13:13:56
250デフォルトの名無しさん:2005/08/11(木) 13:14:03
>>245
マルチすなや。移動するなら断ってからに汁。
つーか、どうしてWin32APIの問題だと思ったんだ? 更にスレ違いだがね。

>>246
スレ違いなんだからぬるーしる。
251デフォルトの名無しさん:2005/08/11(木) 13:30:00
>>247
VCスレ池
252デフォルトの名無しさん:2005/08/11(木) 17:49:48
>>235

察するに、CriticalSectionで囲まれた部分が何か重い処理を必要としていて、
もしこの部分を他のスレッドが使用していたら、待つのに時間がかかるから
他のスレッドはその処理を実行するのを一時あきらめよう、っていうことかな?

bool g_bEnter = false;
void f1()
{
EnterCriticalSection(&cs);
bEnter = true;

bEnter = false;
LeaveCriticalSecion(&cs);
}
void f2()
{
EnterCriticalSection(&cs);
bEnter = true;

bEnter = false;
LeaveCriticalSecion(&cs);
}
としときゃ、bEnterを調べることによってロックされているかわかるんじゃない?
まあ多少穴はあるが、用は足りるのでは?
253デフォルトの名無しさん:2005/08/11(木) 18:06:39
長時間ロックするリソースを複数のスレッドで触るのは良くないです。
スレッド分割の設計を見直したほうがいいと思う。
254デフォルトの名無しさん:2005/08/11(木) 18:22:13
スレ違いですが、シューティングゲームを作ろうと思っています。
WM_TIMERの時に最小限の範囲(rect)をInvalidateRectして
WM_ERASEBKGNDも使ってます。
しかし、それでもちらつきがとれません。
どうすればいいでしょうか?
255デフォルトの名無しさん:2005/08/11(木) 18:23:50
GUIなどを担当するプライマリスレッドがあって、
プライマリスレッドがワーカースレッドを作って何か処理させる、というモデルなんじゃないの?
ワーカースレッドがひとつ動いてる間は、新たなワーカースレッドを作って処理させるためのボタン
なりメニューなりをDisableにして禁止したい、というケースじゃないかと想像してるんだが。
これは普通に、あっていいと思うけど。
256デフォルトの名無しさん:2005/08/11(木) 18:26:13
>>254
スレ違いといいつつ書き込む馬鹿に教える事など無い
257デフォルトの名無しさん:2005/08/11(木) 18:27:42
まあまあ。
>>254
それはゲーム屋(俺は違うが)はみんな知ってるダブルバッファリング処理をしてないからだね。
ゲームならWind32APIを直接使わずに、DirectX9.0c SDKを使う方がいいと思うよ。
258デフォルトの名無しさん:2005/08/11(木) 18:29:43
スレ違いというより鼬害。
259254:2005/08/11(木) 18:53:35
>257
dクス。ついにDirectXか
260デフォルトの名無しさん:2005/08/11(木) 19:13:14
ついにDirectXか
ついにDirectXか
ついにDirectXか
ついにDirectXか

今更DirectXか、だろ
261デフォルトの名無しさん:2005/08/11(木) 19:32:13
Win32API を使用して、WindowsNTのIPアドレスを自動変更する
プログラムを作成したいのですが、IPアドレスエディットコントロールで
どうしてもIPを拾えず、変更も出来ません。
何かうまい方法はないでしょうか?

262デフォルトの名無しさん:2005/08/11(木) 19:34:12
IPアドレスエディットコントロールは、
ただ、ネットワークの設定画面なんかでよくある
IPアドレス入力に特化したエディットコントロールってだけですから
263デフォルトの名無しさん:2005/08/11(木) 19:38:38
>>255
じゃぁロックの設計が良くない。

本当にロックしないといけないのは、
ワーカースレッドが触っている対象物ではなく、
ワーカースレッドが動いているかどうかを管理している部分だろう。
264261:2005/08/11(木) 19:40:23
ちょっと聞き方が悪かったです==;
2000やXPではIP取得し変更をかけられたんですが
NTで使える命令が知りたかったのですが・・
265263:2005/08/11(木) 19:41:01
管理している部分で、アトミックな操作が必要な部分だけをロックする。
そうすりゃ、ロック待ちの時間はとても短くなるでしょ。
266デフォルトの名無しさん:2005/08/11(木) 19:49:55
よくわからないが、ひょっとすると、WindowsのIP変更ダイアログを
自動で出現させて、そこのIPアドレスエディットコントロールを弄る、という
話なのか?
267261:2005/08/11(木) 20:01:01
NTで下記の命令が使えないみたいです。

NicSet.IpAddress
NicSet.IpSubnet
NicSet.DefaultIpGateway
NicSet.DNSServerSearchOrder

NTでは無理なのでしょうか?
268デフォルトの名無しさん:2005/08/11(木) 20:16:02
.NETか
269デフォルトの名無しさん:2005/08/11(木) 20:23:46
>>267
よーわからんが、本当にNicSetってWin32APIの一部なの?
MSDNで検索してもそれらの関数ひとつもヒットしないんだが。
270デフォルトの名無しさん:2005/08/11(木) 20:43:35
WMIだべ。
271デフォルトの名無しさん:2005/08/11(木) 20:45:16
>>237
そういう API があるかどうか以前に、本質的に無理だろ?
「ロックされていない」という返却値を受け取った直後にロックされたらどうするんだよ
272デフォルトの名無しさん:2005/08/11(木) 20:47:35
>>269
NicSetはインスタンス名だろう
ググったら同じ名前で宣言しとるVBソースとかあったし
そんなとこから引っ張ってきてんじゃないか?

>>267
ち な み に API で は あ り ま せ ん
273デフォルトの名無しさん:2005/08/11(木) 20:56:52
WMIって便利な仕組みをWIN2Kで実装したんで使って〜
って2000が出てきたときにMS方面から聞いた記憶がある。
274デフォルトの名無しさん:2005/08/11(木) 21:08:44
まぁ、動かん言うことはNTには無いということだろう
275デフォルトの名無しさん:2005/08/12(金) 07:32:31
意味不明のコンパイルエラーがでると思ったら
richedit.hに
#define wReserved wEffects
の一文が
276デフォルトの名無しさん:2005/08/12(金) 10:37:43
OSが勝手に開放してもかまわないようなメモリ領域をアロケートすることってできないですか?
どうでもいい高速化のためのキャッシュデータに使ったりして
スワップしそうならその領域を勝手に開放して新規の確保には失敗するとか。
277デフォルトの名無しさん:2005/08/12(金) 10:45:57
>>276
キャッシュ用のメモリは、
確保する最大サイズを指定した独自のヒープから確保するようにすれば?
278デフォルトの名無しさん:2005/08/12(金) 10:53:14
あるかないか、あるならなんというAPIかという質問なんですが。
279デフォルトの名無しさん:2005/08/12(金) 10:54:47
>>276>>278
そういったものはない。
280デフォルトの名無しさん:2005/08/12(金) 10:55:34
ヤバイ。winAPIヤバイ。まじでヤバイよ、マジヤバイ。
winAPIヤバイ。
まず広い。もう広いなんてもんじゃない。超広い。
広いとかっても
「東京ドーム20個ぶんくらい?」
とか、もう、そういうレベルじゃない。
何しろ無限。スゲェ!なんか単位とか無いの。何坪とか何?fとかを超越してる。無限だし超広い。
しかも膨張してるらしい。ヤバイよ、膨張だよ。
だって普通は地球とか膨張しないじゃん。だって自分の部屋の廊下がだんだん伸びてったら困るじゃん。トイレとか超遠いとか困るっしょ。
通学路が伸びて、一年のときは徒歩10分だったのに、三年のときは自転車で二時間とか泣くっしょ。
だから地球とか膨張しない。話のわかるヤツだ。
けど宇宙はヤバイ。そんなの気にしない。膨張しまくり。最も遠くから到達する光とか比較してもよくわかんないくらい遠い。ヤバすぎ。
無限っていたけど、もしかしたら有限かもしんない。でも有限って事にすると
「じゃあ、宇宙の端の外側ってナニよ?」
って事になるし、それは誰もわからない。ヤバイ。誰にも分からないなんて凄すぎる。
あと超寒い。約1ケルビン。摂氏で言うと−272℃。ヤバイ。寒すぎ。バナナで釘打つ暇もなく死ぬ。怖い。
それに超何も無い。超ガラガラ。それに超のんびり。億年とか平気で出てくる。億年て。小学生でも言わねぇよ、最近。
なんつっても宇宙は馬力が凄い。無限とか平気だし。
うちらなんて無限とかたかだか積分計算で出てきただけで上手く扱えないから有限にしたり、fと置いてみたり、演算子使ったりするのに、
宇宙は全然平気。無限を無限のまま扱ってる。凄い。ヤバイ。
とにかく貴様ら、宇宙のヤバさをもっと知るべきだと思います。
そんなヤバイ宇宙に出て行ったハッブルとか超偉い。もっとがんばれ。超がんばれ。
281デフォルトの名無しさん:2005/08/12(金) 10:57:29
宇宙のままになっている所を直せよ。
282デフォルトの名無しさん:2005/08/12(金) 11:19:40
こんにちは

リッチエディットでSetOptions(ECOOP_OR,ECO_NOHIDESEL);を指定すると、
スクロールバーの表示がおかしくなるのですが、
このような不具合をご存知な人はいますか?
283デフォルトの名無しさん:2005/08/12(金) 11:55:46
>>278
キャッシュに使ってる最中にOSが勝手に解放したらどうなるのか考えたら
そんなものがあるわけないことくらい分かるだろ
284デフォルトの名無しさん:2005/08/12(金) 12:30:49
だよな
285282:2005/08/12(金) 12:55:38
あげますあげます
286デフォルトの名無しさん:2005/08/12(金) 12:59:12
こめんとああうしろあうしろあう
287デフォルトの名無しさん:2005/08/12(金) 16:46:13
pMsgBox = GetProcAddress(LoadLibrary("user32.dll"),"MessageBoxA");

このように一度ロードしたDLLを開放せず何度もロードを繰り返して大丈夫でしょうか?
同じDLLでLoadLibraryを繰り返し実行してみたところ何度実行してもインスタンスハンドルが変わらなかったので、
一度メモリにロードされたものは再度ロードしようとしても実際はロードされないのだと思いますが・・・。
288デフォルトの名無しさん:2005/08/12(金) 17:15:12
C/C++プログラマは、大丈夫と明言されていない場合は危険性があって当たり前と覚悟するクセをつけること。
289デフォルトの名無しさん:2005/08/12(金) 17:30:17
ロジとかM$のマウスについてるチルトホイールの左右は検出できませんか。
point32解析するしかないのかなぁ
290デフォルトの名無しさん:2005/08/12(金) 17:40:05
>>288
dクス。
エラー処理は手抜きせず呼んだあとはちゃんと開放するようにします。
291デフォルトの名無しさん:2005/08/12(金) 18:17:43
CreateToolhelp32Snapshotだとsvchostとかのフルパスは取得出来ないのですか?
エクスプローラが親プロセスになってるプログラムなら取得出来るのですが…。
292デフォルトの名無しさん:2005/08/12(金) 19:30:36
>>287
既にロード済みであることがわかっている場合はGetModuleHandle()。
LoadLibrary()とFreeLibrary()は参照カウンタを使っているとAdvanced Windowsに書いてあったような気がする。
293デフォルトの名無しさん:2005/08/12(金) 19:39:04
>>291
普通に取れると思うけど。
294デフォルトの名無しさん:2005/08/12(金) 19:46:34
質問:
スクリーンセーバとか、作るとき、IMEを消したいんですが、
そんなAPI関数ありましたっけ? 
それとも何か他の方法が、、、?
295デフォルトの名無しさん:2005/08/12(金) 19:49:07
なんでこのスレはフックの話が多いの?

ウィルスとかトロイの木馬とか作ってる香具師ばっかりなのか?
296デフォルトの名無しさん:2005/08/12(金) 19:50:51
ソース持ってる組織に入れない人が寂しがるスレなのさ
297デフォルトの名無しさん:2005/08/12(金) 19:58:39
>>294
無い。別の方法を使う。「VC++ 立川さん」でググれ。
298294:2005/08/12(金) 20:14:30
>>297
ググッた。 出た。 わかた。 
ありがと。 この立川さんって人すごいね?
299デフォルトの名無しさん:2005/08/12(金) 21:00:29
>>289
ただの横スクロール
300デフォルトの名無しさん:2005/08/12(金) 21:11:16
>>295
使用用途の話はスレ違い。
だが、フックやプロセスメモリアクセスはイヤンな用途しか使い道がないような希ガス。
というよりその関数や機能自体そんな目的で作られてるようにも思える。
301デフォルトの名無しさん:2005/08/12(金) 21:16:11
>というよりその関数や機能自体そんな目的で作られてるようにも思える。

アフォか
302デフォルトの名無しさん:2005/08/12(金) 21:34:13
SetWindowPosでWindowが移動出来ないんです。
SetWindowPos( m_hWnd , rect , SWP_NOSIZE);
って感じで実装してるんですが、rect内容が変わってる事、戻り値が0になってること、フラグの組み合わせなど
確認したんですが、どれもダメで。
何がいけないんでしょう?、ん〜わかんない。
よろしくお願いします。
303デフォルトの名無しさん:2005/08/12(金) 21:45:04
>>293
たぶん制限ユーザーなんだろう。
304デフォルトの名無しさん:2005/08/12(金) 22:09:21
>>301
フック系関数やReadProcessMemory、WriteProcessMemoryの使い道を述べよ
305デフォルトの名無しさん:2005/08/12(金) 22:19:12
>>304
ウイルス...
306デフォルトの名無しさん:2005/08/12(金) 22:20:35
デバッガ
307デフォルトの名無しさん:2005/08/12(金) 22:21:18
> フック系関数
MFCのソースでも見ろ
> ReadProcessMemory、WriteProcessMemory
MSDNの分類見れば自明
308デフォルトの名無しさん:2005/08/12(金) 22:23:00
>>304
デバッガ
309デフォルトの名無しさん:2005/08/12(金) 23:39:39
デバッガを作っているわけでも、
CBTを作っているわけでもないのに、
それらのAPIを使うのは、
行儀が悪いよね。
310デフォルトの名無しさん:2005/08/12(金) 23:47:25
それらのAPIがスパイウェアやウイルスのためにあるのはもはや明確
311デフォルトの名無しさん:2005/08/12(金) 23:50:53
DeleteFileなんてAPIがあるからウイルスにファイルを消されるんだ。
ReadFileなんてAPIがあるからウイルスに(ry
312デフォルトの名無しさん:2005/08/12(金) 23:52:57
BitBltなんてAPIがあるから山田にスクリーンショットを(ry
313デフォルトの名無しさん:2005/08/12(金) 23:57:44
そいや、前スレの終わりごろに、Winnyをクラックしようとしてる香具師がいたな。

アプリケーションのファイルやレジストリのアクセスを監視したければ、
Sysinternalsのツールのようなやり方をすべきで、
フックしたりすべきじゃないんだよな。
314デフォルトの名無しさん:2005/08/13(土) 00:01:38
>>311>>312
DeleteFileもReadFileもBitBltもウイルス以外に使い道は広い。
だがWriteProcessMemoryなんてデバッガとウイルスとクラックツールぐらいしか使い道がない。
デバッガ作れるような技術がある奴ならWriteProcessMemory相当のコードは書けると思うが。
それにデバッガ作る奴なんてそれほど多くない。
これはMSが厨房向けに容易にウイルスが作成できる環境を提供してると思われ。
315デフォルトの名無しさん:2005/08/13(土) 00:07:55
> デバッガ作れるような技術がある奴ならWriteProcessMemory相当のコードは
> 書けると思うが。
ReadFileがなくてもファイルを読めるのか? (メモリマップトファイルを使えば
読めるがそういう話じゃなくて)
APIってそういうものだろ
316デフォルトの名無しさん:2005/08/13(土) 00:09:02
> これはMSが厨房向けに容易にウイルスが作成できる環境を提供してると思われ。
それでMSにどういう得があるんだよ
デンパ垂れ流すのもたいがいにしろ
317デフォルトの名無しさん:2005/08/13(土) 00:12:19
>>313
WOW64のファイルシステムリダイレクションやレジストリリダイレクションが
ユーザーモードで実装されていることについてはどうお考えですか
318デフォルトの名無しさん:2005/08/13(土) 00:34:44
MSマウスの左右のサイドキーが押された時に発生するメッセージは何でしょうか?
また、発生するメッセージを調べるにはどうしたらいいのでしょうか?
319デフォルトの名無しさん:2005/08/13(土) 00:53:42
>>318
つ [Spy++]
320 ◆Pu/ODYSSEY :2005/08/13(土) 01:10:28
あれってXBUTTONだと思ったが違ったっけ?
第4・第5とも同じメッセージが割り当てられてるから、PARAM値を見ないと判定できないんじゃなかったっけ。
321291:2005/08/13(土) 01:22:09
制限ユーザーじゃないんだけどなー。
何故かC:\からのフルパスが取れるのは一部だけ…
322デフォルトの名無しさん:2005/08/13(土) 01:43:24
んーAdministratorだとフルパスが取れたからそうなのかと思ったけど外してたか
323デフォルトの名無しさん:2005/08/13(土) 02:37:19
>>317
この話といったいどんな関係が?

それらはフックすることでAPIコール前に調整しているのではなく、
APIコールした後にOSのモジュール内で調整しているんですよ。
324デフォルトの名無しさん:2005/08/13(土) 02:44:38
>>323
> この話といったいどんな関係が?
「フックしたりすべきじゃない」と考える論拠によるのでお聞かせ願えますか
325デフォルトの名無しさん:2005/08/13(土) 02:51:22
>>291
どうやってる?
具体的にコードを示したほうがいいぞ。

エスパー能力を発揮すると・・・
PROCESSENTRY32構造体のszExeFileを見てたりする?

EnumProcessModulesして、
GetModuleFileNameExしたらどう?
326デフォルトの名無しさん:2005/08/13(土) 02:54:45
>>324
それじゃわからない。
もっと詳しく、この話とどう関係するのか説明してよ。

どうしてWOW64だとフックしなきゃいけないの?
327デフォルトの名無しさん:2005/08/13(土) 03:22:14
317じゃないが。

>>304
OSからしてソース非公開である以上、アプリがソース公開されているはずもなく、
ソースのない状況でもアプリをメンテナンスする必要性(あるいは需要)がある以上、
フックのような仕組みは必要悪として存在せざるをえない。
(バイナリパッチが使えないシチュエーションも存在する)

>>313
カーネルモードドライバでやるべきってのは間違い。
その程度の用途でいちいちカーネルモードにコード突っ込んでるようじゃ、
とてもじゃないが安定したシステムなんか望めない。
皆がSysintarnalsレベルの技術者ではない。

まあ、Server系ではフック類は無効になってるとかしたほうがいいとは、個人的には思うけどな。
あくまで「パソコン」としてのWindowsに必要なだけで、「サーバ」にはいらんだろうし。
328デフォルトの名無しさん:2005/08/13(土) 04:28:15
>>327
なるほど、フィルタドライバだとカーネルモードになるってことか。

バグがなくても危険きわまりないAPIフックと、
バグがなければ安定するフィルタドライバ、
どっちを選ぶかというと・・・後者でしょ。

なんだかんだ言ってるけど、やってることはクラックなんですよ。
329デフォルトの名無しさん:2005/08/13(土) 04:57:13
>>328
ダウト。ありえない仮定を持ち出すのは詭弁の第一歩だよ。

APIフックでコケるのはフックかけられる側プロセスだけで、
その程度でシステムダウンするほどNTカーネルはやわじゃない。
(9xは現代的OSじゃないのでしらん)
カーネルモードドライバはコケればほぼ確実にシステムごともっていく。

これはバグがどの程度あるにしたところで、変わらない事実。

> やってることはクラックなんですよ。
だから何。カーネルモードでやろうがどこでやろうが、クラックはクラックだが?

クラックかクラックじゃないかなんて、技術に対する解釈の相違にすぎんよ。
少なくともスレ違いだ。
330デフォルトの名無しさん:2005/08/13(土) 05:21:38
どうでもいいの
331デフォルトの名無しさん:2005/08/13(土) 05:35:08
あれ?
332デフォルトの名無しさん:2005/08/13(土) 05:44:59
英語版しかAPIヘルプを持っていないので四苦八苦しましたが、デバッグ機能についておおよそ理解しました。
しかし、わからないことがあります。

1. ブレークポイントを利用してデバッギーを停止させたいわけですが、APIヘルプにはデバッギー側からDebugBreak()をコールする方法しか載っていません。
INT 3やDRxを利用したい場合、システムのサポートは一切ないのでしょうか・・・?
だとすると、
INT 3 -> ReadProcessMemory()/WriteProcessMemory()を使う
DRx -> SetThreadContext()/GetThreadContext()を使う
ということでいいのでしょうか?

2. 一般の(アプリケーションの)デバッガではデバッギーをロードした時にはEIPはPEヘッダのエントリポイントになっています。
しかしCreateProcess()でCREATE_SUSPENDEDを指定した場合や、DEBUG_PROCESSを指定した場合(初期ブレークポイント例外イベントまでContinue)、スレッドコンテキストを取得してもそのような位置にはなっていません。
まあ待ちループ中なので当たり前と言えば当たり前かもしれませんが・・・
デバッガはどうやって「頭出し」を行っているのでしょうか?まさかPEヘッダを解析してエントリポイントにINT 3やDRxを仕掛けているとか・・・?
ちなみにWin98です。
333332:2005/08/13(土) 05:55:09
あっ私は前スレ608です。
334デフォルトの名無しさん:2005/08/13(土) 07:23:30
>>329
おぃおぃ詭弁だとレッテルはって誤魔化すのはヤメれ。

APIフック
バグがあると危険
バグがなくても危険

フィルタドライバ
バグがあると危険
バグがなければ安全


ちなみにSysinternalsのFilemonはクラックじゃないぞ。
OSが備えている機能を意図した通りに使っているからね。

それに対して、他のプロセスに任意のDLLを割り込ませるのはクラックだろう。
335デフォルトの名無しさん:2005/08/13(土) 08:03:27
>>334
詭弁に反論する意味がないのは自明だと思うので、無視させてもらう。
336デフォルトの名無しさん:2005/08/13(土) 08:10:30
>>335


フックだってグローバルにやれば、バグがあったら大惨事だ。
そんなに安全だっていうなら、APIをフックするDLLを、
レジストリの
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windowsの
AppInit_DLLs
に設定してみ。
337デフォルトの名無しさん:2005/08/13(土) 08:17:22
何かさ、クラックっていう言葉のニュアンスがオレが思ってるのと違う。
技術の内容じゃなくて、悪意のあるのがクラックかとオモテタヨ。
このごろは説明書に載ってない使い方をするとクラックなんですか。
くわばらくわばら。
338デフォルトの名無しさん:2005/08/13(土) 08:18:51
>>336
バグがなければ安全
→事実に対して仮定を持ち出す

ちなみにSysinternalsのFilemonはクラックじゃないぞ。
フックだってグローバルにやれば、バグがあったら大惨事だ。
→ごくまれな反例をとりあげる

詭弁のガイドラインくらい読もうぜ。
まあそうでなくても、常識的なWindowsプログラマなら、お前さんの事なんか信用しないけどな。
おおっと、こう言ってしまうと
→主観で決め付ける
に該当してしまうな。悪い悪いwww

もう黙るわ。
339デフォルトの名無しさん:2005/08/13(土) 08:25:31
>>337
大抵のソフトの説明書には使用することによって発生した損害は一切負わない
とかって免責があるからどんな使い方しても問題無いんじゃない?w

ただ俺が思うのはフリーソフトなら免責ってのはわかるが
シェアなのにその免責っておかしくね?
それこそクラックしたくなる罠
340デフォルトの名無しさん:2005/08/13(土) 08:38:46
>>337
いや、悪意あるだろ。

自分の書いたプログラムのプロセス空間に、
勝手にスレッド起こされたり、
勝手にDLL読み込ませられたり、
勝手にAPIをフックされたりしたら、
嫌だろ。

だいたいあれだろ、Winnyの動作を変えたくてクラックしようとしてるんだろ。
ただでさえWinnyやってるだけで人間の屑なのに、それをクラックするなんて・・・。
341デフォルトの名無しさん:2005/08/13(土) 08:40:22
>>338
> 詭弁のガイドラインくらい読もうぜ。

笑わせてくれるな。

ガイドラインがどういうものか、わかってないだろ。
342デフォルトの名無しさん:2005/08/13(土) 08:41:49
>>340みたいな奴に限ってかちゅ〜しゃが手放せないんだよな
343デフォルトの名無しさん:2005/08/13(土) 08:44:16
>>341
説明ヨロ
344デフォルトの名無しさん:2005/08/13(土) 08:47:16
>>339
基本的には包丁を使用することによって発生した損害をメーカが負う必要は必ずしもないのと一緒だが
それに便乗してメーカ側の怠慢による結果までどさくさまぎれに免責しようって傾向はあるな
345デフォルトの名無しさん:2005/08/13(土) 08:52:03
クオリティ低ス…
346デフォルトの名無しさん:2005/08/13(土) 09:13:36
>>340
俺は別に自分の作ったソフトがクラックされてもかまわんけど?
むしろそうやって変な動作をさせられたほうが普段見えないバグを発見してくれてよかったりする。
ある程度想定外のことをされてもまともに動くようにはしてるが。
Winnyは元々挙動に問題があるからそれを修正しようとしてるのであって不正な動作をさせようとしてるわけではないだろ。
ディスクの負荷が高すぎるからWriteFileなんかをフックして特殊なバッファリング機能をつけるとか。
47氏がタイーホされて開発が継続できないからバグや不具合の修正はユーザーの仕事。
それでいいじゃないか。
347デフォルトの名無しさん:2005/08/13(土) 09:23:45
>ある程度想定外のことをされてもまともに動くようにはしてるが。
それは無駄なコスト。
16連打クリックとか物理メモリ8MBとかそういう「想定外」ならともかく
フックなんぞされたときの動作まで保証する必要はないだろ。
348デフォルトの名無しさん:2005/08/13(土) 09:30:23
>>347
そりゃあ変な関数にすり替えられちゃダメだが。
フックできなくしてあるのではなくてフックされたら困るような設計はしてないということ。
349デフォルトの名無しさん:2005/08/13(土) 09:38:43
勝手に妙な前提条件付けて否定しにかかる変な奴がいるな
350デフォルトの名無しさん:2005/08/13(土) 09:41:28
>>348
行儀良いフックに限って言うなら、
そのフックによって挙動がおかしくなる設計というのを想像できないが。
351デフォルトの名無しさん:2005/08/13(土) 10:45:22
暗号関係のAPIを学んでいるんですが、
一部の関数に、

CP〜とCrypt〜という、プレフィクスの違うものがあるのですが、
これはどちらを使えばいいのでしょうか?

なぜかCrypt〜のほうがぐぐるとヒットしやすいのですが。
MSDNだとCPのほうが分かりやすいリンクを貼られていたりもします。
どちらも説明は同じような意味のことが書いてあるのですが……。
352デフォルトの名無しさん:2005/08/13(土) 10:52:19
勝手にしろよ
353351:2005/08/13(土) 10:54:03
すみません。
自己解決しました
MSDNもっとよく読むべきだったOrz
354デフォルトの名無しさん:2005/08/13(土) 11:12:33
Winny厨はダウソ板にカエレ!

フックなんていうイヤラシイことは人に聞かずに自力でヤレ!

自信過剰なフックは事故のもと。安易にフックするな。

人様のプログラムに悪さする暇があったら、自分でアプリを作れ。
355デフォルトの名無しさん:2005/08/13(土) 11:16:48
フックが危ないならフィルタドライバ使えばいいじゃない
356デフォルトの名無しさん:2005/08/13(土) 11:50:41
何が目的かなんてどうでもいいよ。APIの良し悪しについて語るスレじゃないし。技術的な質問に対して答えるだけ。
質問者の目的を邪推してくだらん話をグダグダ続けてないで、もっと有意義なスレにしましょう。↓
357デフォルトの名無しさん:2005/08/13(土) 12:25:08
Winnyのフックのしかたを教えてください。
なんかIATがないんですけど。
358デフォルトの名無しさん:2005/08/13(土) 12:26:31
359デフォルトの名無しさん:2005/08/13(土) 12:33:07
>>357
「Winnyのフックの仕方」はなんとなくスレ違いじゃね?
ついでだからマジレスするとtelockのアンパッカーを探してください。
360デフォルトの名無しさん:2005/08/13(土) 12:35:30
>>353
えっ…気になって調べてみたけど、違いが分からないっす_| ̄|○
361デフォルトの名無しさん:2005/08/13(土) 13:02:48
WinnyのAPIフックのしかたを教えてください。
すでに走っているWinnyのAPIを乗っとりたいので、アンパックしたくありません。
362デフォルトの名無しさん:2005/08/13(土) 13:06:10
>>361
消えろ
363デフォルトの名無しさん:2005/08/13(土) 13:11:24
まあまあ。でも特定のソフトについての質問なら、なんとなくここで聞くことじゃないと思うけどねぇ。
ダウソ板の人のほうが詳しかったり?
364デフォルトの名無しさん:2005/08/13(土) 13:34:02
telockでパックされたEXEによる既存のプロセスのAPIをフックする方法を教えてください。
365デフォルトの名無しさん:2005/08/13(土) 13:35:05
フックの正当性を書いてた奴は、やっぱりny厨か。

ほんとろくでもない人間ばっかりだな。
366デフォルトの名無しさん:2005/08/13(土) 13:40:45
>>364
フックDLL注入
367デフォルトの名無しさん:2005/08/13(土) 13:42:49
てか見苦しいから止めようぜ。別にフックするつもりもないんだろ。
368デフォルトの名無しさん:2005/08/13(土) 13:48:07
369デフォルトの名無しさん:2005/08/13(土) 13:49:42
プログラマなら手段を隠蔽されることに嫌悪感を示すものだと思っていたが、
「フックなんてない方が良い」などと言う人がいるんだなぁ

手軽な言語が流行るわけだ
370 ◆Pu/ODYSSEY :2005/08/13(土) 13:53:03
コンソールアプリでprintfで出力してるものをGUI画面に出力したいと思ったことならある。
結局リダイレクトのほうがてっとり早いんかな
371 ◆Pu/ODYSSEY :2005/08/13(土) 14:12:25
クラック以外にも十分有用だと思うけどねぇ
有名な2chツールでいくと、kage(かちゅ〜しゃの下駄)とか
372デフォルトの名無しさん:2005/08/13(土) 14:24:19
>>366
IATがないと言ってるだろがボケ
試しもしないで知ったか書くな!

>>365
フックは正当に認められた権利です。

373デフォルトの名無しさん:2005/08/13(土) 16:19:15
>>321
どうやってやってる?
Process32Firstだけじゃ、多分フルパスは取れないんで。
↑で取れたプロセスIDから取得しないとだめだと思うよ。
374デフォルトの名無しさん:2005/08/13(土) 16:50:00
お前ら、フックで単独スレ立てろ
375デフォルトの名無しさん:2005/08/13(土) 16:54:31
Win9xはProcess32FirstのPROCESSENTRY32.szExeFileにフルパス入る。
NT系はファイル名しか入らなかったはず。
376デフォルトの名無しさん:2005/08/13(土) 18:12:45
「フックはいかん」というならフックされたAPIをフックし返す
もしくはフックを無効化する方法を考えろ!


・・・思いつかんorz
377 ◆Pu/ODYSSEY :2005/08/13(土) 18:18:22
私の肛門もフックされそうです
378デフォルトの名無しさん:2005/08/13(土) 18:19:11
フックというのが出来なかったら
ウイルスとか減りますか?
379デフォルトの名無しさん:2005/08/13(土) 18:32:20
>>376
API使わなければいんじゃね?

>>378
あんまり変わらんと思われ
380デフォルトの名無しさん:2005/08/13(土) 18:35:10
>>378
IntelliPointが動かなくなるので首吊ります
381デフォルトの名無しさん:2005/08/13(土) 19:01:30
実際問題フックさせないようにするにはどうしたらいいですかね?
先にSetHook〜をフックしておいてフックを妨害するって方法しか
出てきません。
382デフォルトの名無しさん:2005/08/13(土) 19:07:23
>>381
API使わなければいんじゃね?
383デフォルトの名無しさん:2005/08/13(土) 19:28:42
>>379, 382
おまえら頭いいな
384デフォルトの名無しさん:2005/08/13(土) 20:14:59
ヒント
UPXとかtelockとかの暗号化・圧縮・クラック防止等のツールが何をやっているのか調べればわかるよ。

売り物のソフトには、フックしたりするような行儀の悪いプログラムを妨害して
フックさせないようにする代物もあるらしい。

とりあえず俺が思いつくのは
・インポートライブラリを使わない
・メモリの要所にライトウォッチを設定して勝手に書き込まれそうになったらプロセス終了しちゃう
・CreateRemoteThreadとかのAPIを先に乗っ取って封じてしまう
385デフォルトの名無しさん:2005/08/13(土) 20:27:46
とりあえず、ハックとかクラックとかそういうスレ違いの話題は余所でやれ。
http://pc8.2ch.net/test/read.cgi/tech/1122791420/
386デフォルトの名無しさん:2005/08/13(土) 20:33:45
SDIというのは、MFCじゃないと無理なんでしょか
猫でも、というところでMDIは見たのですが。
ググってもMFCの話しか見当たらないス。
387デフォルトの名無しさん:2005/08/13(土) 20:43:01
>>386
Petzold の最初のサンプルが立派に SDI だけど、
MFC で出来ていたことの何がしたいの?
388デフォルトの名無しさん:2005/08/13(土) 20:59:00
386の言うSDIは「俺SDI」だろうな。
389デフォルトの名無しさん:2005/08/13(土) 21:07:43
>>387
Petzold本の事ですかい?
今知りました。残念ながら無いです。

今までMFC無しで作ってたプログラムに
SDIを追加したいと思いまして。

>>388
って感じ?
390デフォルトの名無しさん:2005/08/13(土) 21:10:29
>>389
ただ RegisterClass, CreateWindow して WM_DESTROY で PostQuitMessage つーだけのプログラム
391387,389:2005/08/13(土) 21:14:46
>>390
出来るのですな!やってみます。
レス有難う御座います。
392デフォルトの名無しさん:2005/08/13(土) 22:31:46
>SDIを追加したいと思いまして。

たぶんSDIを思い切り勘違いしてるな。
393デフォルトの名無しさん:2005/08/13(土) 22:39:42
もちろん戦略防衛構想の事だよな
394デフォルトの名無しさん:2005/08/13(土) 22:40:55
UAE から国民を守るのか?
395デフォルトの名無しさん:2005/08/13(土) 22:42:07
Windows標準APIではないですが、nkf32でJISをShift-JISに変換するとき、半角カナと
一部の特殊記号(1byte文字)のみ変換せずにそのままスルーすることはできないでしょうか?
(半角カナを全角変換してそのまま出すというAPIはあるのですが)

これらの文字をnkf32でShift-JISに変換すると、誤変換されて文字化けしまい、困っています
396デフォルトの名無しさん:2005/08/13(土) 22:54:58
nkfのソースに手を入れれ。
397デフォルトの名無しさん:2005/08/14(日) 04:16:39
>>395
話としては、何を勘違いしているのかに興味はなくもないがスレ違い。
nkfで入出力ともエンコーディングをちゃんと指定しているなら普通化けない。
398デフォルトの名無しさん:2005/08/14(日) 07:37:33
シフト文字無視して変な場所でぶった切って読んでるに一票
399デフォルトの名無しさん:2005/08/14(日) 09:55:57
コンボボックスでスクロールバーが表示されるようにするにはどうすればいいんですか?
WS_CHILD|WS_VISIBLE|CBS_DROPDOWNLIST
だと大きさをオーバーした項目はキーボードの↑↓を押してやらなければ見えません
CBS_DISABLENOSCROLLなどのスクロールのスタイルがあるということはスクロールバーって出ますよね?
400デフォルトの名無しさん:2005/08/14(日) 12:02:29
プロセス間共有メモリとして作成したファイルマッピングオブジェクトに作成したプロセス以外からMapViewOfFileでマッピングしようとすると
戻り値がNULL、GetLastErrorが5 Access is denied. ERROR_ACCESS_DENIEDを返してきます。

作成側パラメータ
::CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, 1024, "Testtest");
::MapViewOfFile(hMap, FILE_MAP_ALL_ACCESS, 0, 0, 0);

非作成側パラメータ
::OpenFileMapping(PAGE_READWRITE, false, "Testtest");
::MapViewOfFile(hMap, FILE_MAP_ALL_ACCESS, 0, 0, 0);

コード的に問題はないように思うのですが原因がさっぱり分かりません。
401デフォルトの名無しさん:2005/08/14(日) 12:24:04
作成側がサービスとか?
第二引数はNULLじゃなくてNULL DACLを指定するとか(セキュリティ的に危なそうだけど)
402400:2005/08/14(日) 12:59:01
作成側、非作成側ともに通常のWin32GUIアプリです。(Win32コンソールでも同様の症状)
NULL DACL指定しても相変わらずアクセス拒否られました。
MapViewOfFileでFILE_MAP_READを指定するとマップされるのですがこれでは書き込みできないのでダメぽな状態です。

ちなみにテスト環境はWindows2000SP4、Admi権限ユーザーです。
403デフォルトの名無しさん:2005/08/14(日) 13:12:34
FILE_MAP_READ | FILE_MAP_WRITEじゃダメなのか?
そこらのサンプル見てもそうなってるけど。
日本語版MSDNにはFILE_MAP_WRITEと同じって書いてるけど嘘だから
404400:2005/08/14(日) 13:20:29
     ||
     ||
     ||  バッ
   ∧||∧
  (∩ ⌒ヽノ   OpenFileMappingのDWORD dwDesiredAccessに
   \  _⊃   Create〜のDWORD flProtectの値を間違えて入れてたのが原因らしい
    ∪  Σ
        ≡| ̄ ̄ ̄ ̄|

   ||
   ||
 ∧||∧
(  ⌒ ヽ
 ∪  ノ  鬱出汁脳 てか似たようなAPIの似たような引数で値が違う仕様作ったMS逝ってよし
  ∪∪
405デフォルトの名無しさん:2005/08/14(日) 17:53:27

     ||
   ∧||∧
  (  ⌒ ヽ
   ∪  ノ
   ∩∪∩
   (・∀・| | ウヒョー
    |     |
  ⊂⊂____ノ
       彡
406デフォルトの名無しさん:2005/08/14(日) 18:15:13
ウインドウもウインドウクラス名もないプログラムを、二重起動禁止ではないけど、二重起動した場合に1番目起動のプログラムが
終了するまで2番目のプログラムをスリープさせようと思っているのですが、
ウインドウもウインドウクラス名もないプログラムが起動しているか否かを検索するAPIを探しているのですが、見つけられません。
そんなAPIってなんですか?
407デフォルトの名無しさん:2005/08/14(日) 18:16:37

     ||
   ∧||∧
  (  ⌒ )
   
    | | | ブチッ
    
     ⌒ ヽ
   ∪  ノ
   ∩∪∩
   (・∀・| | ウヒョー
    |     |
  ⊂⊂____ノ
408デフォルトの名無しさん:2005/08/14(日) 18:17:39
>>406

MUTEXではいかんのか?
409デフォルトの名無しさん:2005/08/14(日) 18:23:03
    | | |
    
     ⌒ ヽ
   ∪  ノ
   ∩∪∩
   (・∀・| | キタコレwww
    |     |
  ⊂⊂____ノ
     || ブス
     ||
     ||
410406:2005/08/14(日) 18:25:18
>>408
ありがとう。知らなかったもので・・・・
411デフォルトの名無しさん:2005/08/15(月) 02:01:46
LSPのサンプルって今のVC2003に入ってないのかな?
後輩にWinsock+LSPの使い方教えたいんだけどいい資料なくてこまってる。
412デフォルトの名無しさん:2005/08/15(月) 02:38:19
GUIDの構造体の4個のメンバーには何か意味付けがあるんでしょうか?
文字列化されたものは5個のパートに分かれてるし、何か不思議です。
413デフォルトの名無しさん:2005/08/15(月) 02:41:08
>>411
またかよ。
ウィルスやトロイの木馬やスパイウェア作りたい香具師は氏ね。

VC2003のサンプルなんか見てるようじゃダメ。
PSDKかDDK探せ。
414デフォルトの名無しさん:2005/08/15(月) 02:47:37
LSPは喪舞の大嫌いなフックじゃなくて正当なインターフェースじゃん
415デフォルトの名無しさん:2005/08/15(月) 05:09:55
と、ウイルシを作りたい香具師が申しております
416デフォルトの名無しさん:2005/08/15(月) 05:21:08
デバッグ機能の悪用をウイルスだの何だの言ってる連中は、
何の技術力もいらない「トロイの木馬」が目下最大の脅威だってのに気づいてない、
ただの時代遅れ。
417デフォルトの名無しさん:2005/08/15(月) 06:41:04
フック関係で、
ちょっと調べればわかることを、
このスレで質問するような香具師は、

スクリプト・キディ

と同類と見なされても仕方ないだろ。
初心者はそんなものに手を出さずに、
大人しく順序を踏めってもんだ。

本物のハッカーやクラッカーなら、
ちょっと調べればわかることを質問したりはしない。
質問して答えをもらうまでの間に、自力で解決できてしまうから、
いちいち質問なんていう回りくどいことはしないものだ。
418デフォルトの名無しさん:2005/08/15(月) 07:03:12
> いちいち質問なんていう回りくどいことはしないものだ。

持論語るのは勝手だが、
質問スレでそういう発言をする矛盾にまず気づこうな。
419デフォルトの名無しさん:2005/08/15(月) 08:13:32
>>418
日本語が読めない香具師ハケーン
420デフォルトの名無しさん:2005/08/15(月) 08:41:11
つ 「馬鹿ばっか」
421デフォルトの名無しさん:2005/08/15(月) 09:46:47
>>417
スクリプトキティ以下だろ。
422デフォルトの名無しさん:2005/08/15(月) 10:32:46
そもそもLSPって何?
Lispの親戚?
423デフォルトの名無しさん:2005/08/15(月) 13:09:53
おまいらひろゆきがハッキングから夜のおかずまでカバーすると宣言しているのに
フックやLSPぐらいでガタガタ騒ぐんじゃないよ
424デフォルトの名無しさん:2005/08/15(月) 13:30:25
相手が紳士ならな、喜んで提供するんだがな。
425デフォルトの名無しさん:2005/08/15(月) 13:56:22
>>423
それ、昔のスローガンだから。
IPを記録するようになった今となっては、変えるのが面倒くさくて放置しているだけで・・・。
426デフォルトの名無しさん:2005/08/15(月) 14:08:52
>>425
IP記録と関係ねー
単におまいの妄想じゃないか
427デフォルトの名無しさん:2005/08/15(月) 14:17:10
>>425
今のスローガンは?
428デフォルトの名無しさん:2005/08/15(月) 14:24:56
>>425
おまいはここの運営かよw
429デフォルトの名無しさん:2005/08/15(月) 14:42:03
ハッキングの話を書いたら幇助とかで捕まるっちゅーの。
430デフォルトの名無しさん:2005/08/15(月) 14:47:15
>>429
もう挽回は無理だから、Download板でスレ立てて戦ってこい、な?応援してやるから。
431デフォルトの名無しさん:2005/08/15(月) 15:21:00
チラシの裏でいいよ
432デフォルトの名無しさん:2005/08/15(月) 15:31:30
俺は相手が変な目的に使うと想像がついてても質問に答えてるけど。
そう思ったらわかってても答えちゃダメ?
433デフォルトの名無しさん:2005/08/15(月) 15:34:13
変な目的を匂わせていても
ちゃんとした日本語使っててマナーもしっかりしてる人なら、答える。
434デフォルトの名無しさん:2005/08/15(月) 15:40:17
自動ログアウト作るのに使ったなフック。
スクリーンセーバでええやんと思いながら。
435デフォルトの名無しさん:2005/08/15(月) 16:31:35
こんにちは

リッチエディットでSetOptions(ECOOP_OR,ECO_NOHIDESEL);を指定すると、
スクロールバーの表示がおかしくなるのですが、
このような不具合をご存知な人はいますか?
436デフォルトの名無しさん:2005/08/15(月) 19:56:01
EXE側の(std::vectorの)データをDLL側で参照(&更新)したいんですが、
どうすればいいでしょうか?
上訳:DLL側でEXE側のデータをインポートできませんか?
やっぱりメモリマップドファイルを使わないといけないんでしょうか?
御解答お願いします。
437デフォルトの名無しさん:2005/08/15(月) 20:01:06
ポインタなり参照を渡せば?
438デフォルトの名無しさん:2005/08/15(月) 20:03:17
>>436
EXE⇔DLL間で直接そーゆーことをするのはダメ。
やりたい操作を一つずつ関数でラップしてください。
439デフォルトの名無しさん:2005/08/15(月) 20:06:08
コンソールっぽい機能を作ろうと考えて
モードレスダイアログボックスに
リッチエディットコントロールを貼り付けたもの使っています。

普通のエディットコントロールでは、使えた右クリック
が使えないのですが自分で作成するしかないのでしょうか。
440デフォルトの名無しさん:2005/08/15(月) 20:14:07
437/438有難うございます。
>>437
データを解放するときに怒られてしまいます。
>>438
やってみます。
441デフォルトの名無しさん:2005/08/15(月) 22:16:45
>>440
メモリを管理している人が違うから怒られて当然。
std::vectorの実装がEXEとDLLで寸分違わぬ保証をしてあげない限り、生で渡すのはダメ。

基本的にDLLとEXE間では、C++のオブジェクトはやりとりできません。
442デフォルトの名無しさん:2005/08/15(月) 22:23:05
>>441
応用的には、拡張DLLとかいうのを使えば可能(MFCなんかで使ってる)。
詳しくは忘れた。
443デフォルトの名無しさん:2005/08/15(月) 22:30:47
というか、コンパイラのバージョン揃えて、
ランタイムをDLLにすればええんでないの。
444デフォルトの名無しさん:2005/08/15(月) 22:37:55
C++のオブジェクト概念はC++コンパイラの上だけだったような。
機械語に変換されてしまえばオブジェクトもへちまもない。
445デフォルトの名無しさん:2005/08/15(月) 22:57:25
COM
446デフォルトの名無しさん:2005/08/15(月) 22:58:01
>>444
わかって無さ杉。
447デフォルトの名無しさん:2005/08/15(月) 22:59:27
>>446
オマエガナー
448デフォルトの名無しさん:2005/08/15(月) 23:02:02
>445
C++のオブジェクト概念と、COMのオブジェクト概念は同じものなのかな?
449デフォルトの名無しさん:2005/08/15(月) 23:02:28
構造体と同じで、仮想関数が有ればvtbl付けるだけだろ
450858:2005/08/15(月) 23:12:39
http://pc8.2ch.net/test/read.cgi/tech/1120222322/l5

たのむ・・・・○rz。
451441:2005/08/15(月) 23:21:25
>>444
クラスのメンバ構成が違ったり、packが違ったりしたら、やばいだしょが。
452デフォルトの名無しさん:2005/08/16(火) 02:02:31
>>450
l5って言われてもどれか判らない罠。
まぁ、ハンドルで判るわけだが。
453デフォルトの名無しさん:2005/08/16(火) 02:49:43
>>450
VC6でやったら普通にWM_IME_STARTCOMPOSITIONきたけど?
もしかしてIMEをONにしないで文字入力してるとかじゃないよな?
454デフォルトの名無しさん:2005/08/16(火) 07:13:26
>>450
てかWM_IME_STARTCOMPOSITIONとWM_IME_ENDCOMPOSITIONはIMEのON/OFF時に飛んでくる
455デフォルトの名無しさん:2005/08/16(火) 10:20:50
名無しさんこんにちは。いつも楽しく拝見しています。

ReadConsoleInput でマウスイベントが拾えません。
入力のモードに ENABLE_MOUSE_INPUT は含めています。
どうしたらいいのでしょうか。
Windows2000 を使っています。
456デフォルトの名無しさん:2005/08/16(火) 15:36:58
タスクバーの長さを変えたいのですが、
過去ログ見てて出てきた

hwndTaskbar = FindWindow("Shell_TrayWnd", NULL);
SetWindowPos(hwndTaskbar,NULL,0,0,960,32,SWP_NOZORDER | SWP_NOSENDCHANGING);

でやると一瞬だけ変化して、すぐに戻ってしまいます。
ShowWindowは普通に持続するみたいなんでなんとかなるんじゃないかと思ったんですが (;´Д`)
どうすれば出来ますかね?
457デフォルトの名無しさん:2005/08/16(火) 16:14:16
しつこく繰り返せ
458デフォルトの名無しさん:2005/08/16(火) 18:49:28
>>457
そんなソフトを使いたいか?
ま、>>456の作ったソフトを使うわけじゃないが。
459デフォルトの名無しさん:2005/08/16(火) 19:04:44
まぁ当然の結果なんだろうけど、
実際にしつこく繰り返してみたらタスクバーがのびたり縮んだりを高速で繰り返して面白すぎることに
460858:2005/08/16(火) 19:20:33
>てかWM_IME_STARTCOMPOSITIONとWM_IME_ENDCOMPOSITIONはIMEのON/OFF時に飛んでくる

え、ってことは、日本語入力モードが切り替わったときなんですか?
変換可能な文字(即ち下線付き状態)を入力し始めたら、WMstartがきて、
変換可能な文字の状態を確定(単にリターンキー)したら、WMendがくる
んじゃないんですか??
461858:2005/08/16(火) 19:24:39
>>453
確かにVC++のサイトでは、WMIMESTRATCOMPOSITIONの説明が
多数掲載されていますね。そして、なんてことはない
特に意識することなく、メッセージ(&H10D)(0x010D)が発生していますよね。
でも、僕の場合、だめなんです。
112とか、84とか、133とかは、ちゃんときてますし、
200(マウスの移動)なんてのもしっかり発生しています。
(WndProcないで、Msg.ToString()をConsole.WriteLineして監視しました)
でも、肝心の、0x010Dとか、0x010Eとかがきてくれないんです。

(禁断の壷をインストールしたら、ものすごく快適になりました)
462デフォルトの名無しさん:2005/08/16(火) 19:26:18
>>456
WM_GETMINMAXINFO を何とかしてみるとか?
463858:2005/08/16(火) 19:37:13
namespace WindowsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
protected override void WndProc(ref Message m)
{
Console.WriteLine(String.Format("{0,5:X}",m.Msg));
base.WndProc(ref m);
}
}
}

もう一度、新しいWindowsApplicationを作ってみました。
フォームにテキストボックスはりつけただけです。
ソースはこれだけです。
IMEを切り替えても(キーボードの左上の「半角/全角」ボタンを
連打しても)、010Dや、010Eはきません・・・(T_T)
464デフォルトの名無しさん:2005/08/16(火) 21:09:09
>>463
.NET(つかC#?)はよく分からんけど、それですべてのメッセージが来るわけ?
なんかフィルタリングされてるとかじゃないの?
465デフォルトの名無しさん:2005/08/16(火) 21:42:44
「マウスがどのウインドウ(オブジェクト)の上にいるか」といった情報を取得したいのですが、
とりあえずSetWindowsHookExのWH_MOUSE_LLでマウスのポジションなど取得出来るようになったのですが、
どのウインドウの上にいるか調べる方法で詰まっています。
何方かわかる方よろしくお願いします。
466858:2005/08/16(火) 21:43:42
467デフォルトの名無しさん:2005/08/16(火) 22:08:42
>>466
Win32ではメッセージはちゃんと飛んで、ちゃんと受け取れるので、
あとはC#スレにいったほうがいい。
たぶんコーディング方法を間違えてるとかだろ。
468デフォルトの名無しさん:2005/08/16(火) 22:10:30
>>465
spy++(VC++ツールにあるでしょう)で適当なFlameにカーソル当てたときのメッセージ見たところ
WM_SETCURSORで戻ってくるときに、hWndが何かしらのパラメータとして与えられていた
おそらく、コールバック関数のいわゆるLOWORD(wParam)か、HIWORDに入れられていると思う(uMsgの値により、変わる模様)

自分だったら、フレームが立ち上がったときのハンドルをGetWindowLongあたりで取得しといて、そのハンドル値と一致したら
それは、フォーカスされたhWndハンドルでってことで、なんちゃらかんちゃら・・・
とやってみると思う
469858:2005/08/16(火) 22:13:52
は、はい。
470858:2005/08/16(火) 22:27:36
471デフォルトの名無しさん:2005/08/16(火) 22:37:10
>適当なFlameに
燃えているのか。
472デフォルトの名無しさん:2005/08/16(火) 22:47:04
IME_*のメッセージは全部エディットボックスのWndProcが食ってるわけね。
当然親たるFormにはまわってこない、と。
473858:2005/08/17(水) 01:11:21
>>472
public class TextEX : TextBox
{
protected override void WndProc(ref Message m)
{
switch (m.Msg)
{
case 0x010D:
this.Parent.Text = "start";
break;
case 0x010E:
this.Parent.Text = "end";
break;
default:
break;
}
base.WndProc(ref m);
}

一応、できました。
食われてたんですね、それを早くいってくださいょぅ・・・。
これ、派生クラス作らないといけないんですか?どうしても。
474デフォルトの名無しさん:2005/08/17(水) 01:15:09
それはC#特有の話だからスレ違いだと思われ。
475413:2005/08/17(水) 02:15:59
PSDKかDDK探してみましたが。うーんこれっていうのはないですねぇ。
別にこれ使われたところで問題ないと思うんだけどなんでそんなに
ウイルスと関連づけようとするの?
476デフォルトの名無しさん:2005/08/17(水) 09:26:12
>>465
GetCursorPos
WindowFromPoint
ChildWindowFromPoint
477デフォルトの名無しさん:2005/08/17(水) 09:27:42
>>473
フックでもしとけ
478デフォルトの名無しさん:2005/08/17(水) 15:25:09
WH_MOUSEのグローバルフックについて質問させてください。
SetWindowsHookExでWH_MOUSEでグローバルフックを掛けているつもりなのですが、
なぜかフックのDLLを呼び出してる側のウインドウの上でしかメッセージが送られてきません。
そのほかのウインドウ、デスクトップ上だとメッセージが送られて来ません。
(ローカルフックみたいな感じ?)
コードはこんな感じなんですが、

#pragma comment(linker, "/section:Shared,rws")
#pragma data_seg("Shared")
HHOOK hMouse = NULL ;
#pragma data_seg()

LRESULT CALLBACK hookProcMouse( int nCode , WPARAM wParam , LPARAM lParam )
{
パラメータの表示処理
}

// フックを仕込む
hMouse = SetWindowsHookEx( WH_MOUSE , (HOOKPROC)hookProcMouse , DLLのインスタンス , NULL ) ;

どうかよろしくお願いします。
479デフォルトの名無しさん:2005/08/17(水) 18:22:05
Word 文書をオートメーション経由で開いて、
その文書の一部分を (書式や画像なども含めて) 一時的に記録し、
別の文書に貼り付けたいと思います。
Word文書の一部分をメモリに保持することは可能でしょうか?

試行錯誤してみたところ、Word文書を開いて、
抜き出したい部分 (Range オブジェクト) に対して
Copy メソッドを呼び出してクリップボードにコピーし、
クリップボードの "Embed Source" 形式のデータを
メモリに記録しておいて、後で貼り付けたいときに
そのデータをクリップボードに設定して、
WordのPasteメソッドを呼び出せば、
なんとかできるのはできました。

しかし、なんかスマートではないなーという感じがするのと、
これが本当に正しいやり方なのだろうか、という疑問がぬぐえません。

よい方法がありましたらご教授ください。
よろしくお願い致します。

※Win32 API とはあまり関係ないかもしれませんが、
他に聞くところがなかったので、ここで質問させていただきました。
480デフォルトの名無しさん:2005/08/17(水) 19:40:26
同じ永続化なら、クリップボードよりはCOMのほうがよいかと。
481デフォルトの名無しさん:2005/08/17(水) 19:40:32
ゲーム作成中です。Windowで動くゲームなのですが、
起動中はスクリーンセーバーを無効にしたいと思っています。
どうやったら、無効にできるんでしょうか。
482デフォルトの名無しさん:2005/08/17(水) 19:56:33
レジストリにスクリーンセーバー起動の値があるので
それを書き換え、ゲームが終了したら元に戻す
483デフォルトの名無しさん:2005/08/17(水) 19:58:26
タスクバーをサブクラス化してWM_GETMINMAXINFOだとかWM_SIZEだとかを拾ってなんとか出来ないかと思ったのですが、

LRESULT CALLBACK WndProcTaskBar(HWND, UINT, WPARAM, LPARAM);//プロトタイプ宣言
(中略)
hTaskbar=FindWindow("Shell_TrayWnd",NULL);

m_oldWndProcTaskBar = (WNDPROC)GetWindowLong(hTaskbar GWL_WNDPROC);
SetWindowLong(hTaskbar, GWL_WNDPROC, (LONG)WndProcTaskBar);

としていて、WndProcTaskBarが一度も呼ばれてないようなんですが、どうすればよろしいでしょうか?
ShowWindow(hTaskbar,SW_HIDE);で試すと効くんで、hTaskbarの中身は大丈夫なんじゃないかと思うのですが……
484デフォルトの名無しさん:2005/08/17(水) 20:07:06
>>483
他のプロセスを乗っ取る場合はそのようにやってもアドレス空間が違うのでうまくいかないのでは?
WndProcTaskBarはDLL内に書いてそれをアタッチさせないとだめかと思う。
漏れもよくわかってないかもしれないけど、とにかく他プロセスへのアクセスは単純でない。
485デフォルトの名無しさん:2005/08/17(水) 20:13:52
>Windows 95/98/Me: The SetWindowLong function may fail if the window specified by the hWnd parameter does not belong to the same process as the calling thread.

>An application can subclass a system class, but should not subclass a window class created by another process.
486デフォルトの名無しさん:2005/08/17(水) 20:18:43
>>484
システムフックのときみたいなもんですかね?
試してみます

>>485
XPで組んでます。
まぁtclock2chでもやってたんで(アレは時計だけサブクラス化してタスクバー自体はフックしてるみたいですが)、
サブクラス化しちゃっても大丈夫かと思ったんですが。
487デフォルトの名無しさん:2005/08/17(水) 20:27:34
>>481
WM_SYSCOMMANDメッセージでwParamが
SC_SCREENSAVEの時、0以外を返す。

SC_MONITORPOWERてのもある。
488デフォルトの名無しさん:2005/08/17(水) 20:31:26
>>482
それは再起動しないと有効にならないだろ
489デフォルトの名無しさん:2005/08/17(水) 20:47:08
>>478
Sharedの定義をきちんとdefファイルに書いてあるか?
とりあえず「パラメータの表示処理」ってやつをOutputDebugStringで出力して本当に取れてないか確認しれ
490デフォルトの名無しさん:2005/08/17(水) 21:30:44
>>478
その方法じゃデスクトップは取れない
あと、他のウィンドウのメッセージは何を取ろうとしてる?
例えばWM_LBUTTONDOWNはクライアント領域じゃないと送られてこない
非クライアント領域だったら別のメッセージが飛んでくる
あと、リストビューとかもWM_LBUTTONじゃ取れない
491481:2005/08/17(水) 22:16:07
>>487
それでできそうです。ありがとうございました。
492デフォルトの名無しさん:2005/08/17(水) 22:21:00
ソフトキーボードを作ろうとしてるんですが、
自分の窓をアクティブにせずに、
他の窓への入力情報を得るにはどうしたらいいんでしょうか。

493 ◆Pu/ODYSSEY :2005/08/17(水) 22:26:22
>>492
キーボードフォーカスを受け取ったら対象のウィンドウに対してSetFocus
494デフォルトの名無しさん:2005/08/17(水) 23:04:32
>>492
AttachThreadInput() はどう?
495 ◆Pu/ODYSSEY :2005/08/17(水) 23:18:46
そっちのほうか。すまん、>>493は間違い。
496デフォルトの名無しさん:2005/08/17(水) 23:24:46
ExitProcessで自分以外のプロセスを終了することは出来ないのですか?
497デフォルトの名無しさん:2005/08/17(水) 23:43:06
>>496
無理ではないが。
498 ◆Pu/ODYSSEY :2005/08/17(水) 23:49:56
WM_CLOSEとか、コンソールアプリならキーイベントでCtrl-Cを投げるとか
499デフォルトの名無しさん:2005/08/18(木) 00:55:49
>> ◆Pu/ODYSSEY
どこか頭の調子でも悪いの?
500 ◆Pu/ODYSSEY :2005/08/18(木) 01:02:08
頭が悪い。

というか、メッセージ渡してやって正しい終了手続きで終了させるのがセオリーでないの。
501デフォルトの名無しさん:2005/08/18(木) 01:08:56
IME系のメッセージで質問なのですが、
日本語変換が終わった瞬間に「WM_IME_ENDCOMPOSITION」が来て
そのあと変換された文字が連続して「WM_IME_CHAR」で流れて来るみたいですが、
このWM_IME_CHARが文字数分すべて流れ終わった瞬間を知りたいのですが、
どうしたらよいでしょうか?
502デフォルトの名無しさん:2005/08/18(木) 04:01:18
すいません、もう一つ質問させてください。
IMEで漢字変換確定後に流れてきた「WM_IME_CHAR」のWPARAMの文字コードを
wstring型の文字列に積んでいくにはどうしたらいいでしょうか。
型変換の方法がわからないので「wstr+=wparam」のように
そのまま積んでみたのですが文字化けして全然ダメでした。
503デフォルトの名無しさん:2005/08/18(木) 07:57:30
>>496
TerminateProcessを普通は使う
ExitProcessを使いたいなら対象のアプリにもぐりこんでやれば使えるが・・・
504デフォルトの名無しさん:2005/08/18(木) 08:34:05
>>496
プロセスの終わらせ方のバリエーションとしては、
プロセスをジョブに割り当てて、クオータみたいなもので管理して、
終了させることはできたような気がする。
505デフォルトの名無しさん:2005/08/18(木) 11:51:49
コンソールアプリで「簡易編集モード」をオフにする方法ありますか?
506デフォルトの名無しさん:2005/08/18(木) 11:57:22
>>505
「簡易編集モード」を含めたコンソールウィンドウ設定プロファイルは、キャプション文字列ごとにレジストリに保存される。
CreateProcessの引数にコンソールウィンドウのキャプション文字列を指定する項目がある。
・・・あとは判るな?
507501-502:2005/08/18(木) 14:01:04
自己解決しました。
508デフォルトの名無しさん:2005/08/18(木) 15:42:37
解決したなら解決方法うp夜路死苦
509デフォルトの名無しさん:2005/08/18(木) 16:28:08
>>508
なんで?
510デフォルトの名無しさん:2005/08/18(木) 16:41:19
同じ疑問持ってる人がこれ見たとき解決方法が書いてないと困るだろ?
あと、只でアドバイス貰ってるんだから、せめてその成果くらい提示するのがマナーってもんだろ。
511デフォルトの名無しさん:2005/08/18(木) 17:55:31
winsock2でsocketでエラーが出ますか?
512デフォルトの名無しさん:2005/08/18(木) 17:59:01
は?
513デフォルトの名無しさん:2005/08/18(木) 18:05:49
そりゃでるだろうな。
資源は有限だから。
514デフォルトの名無しさん:2005/08/18(木) 20:08:06
リッチエディットコントロールについて質問があります。

EM_LIMITTEXTでエディットの容量を3文字にして、
普通に入力すると3文字分でEN_MAXTEXTのメッセージを受け取れるんですが

SendMessage(hEdit, EM_REPLACESEL, 0, (LPARAM)"ABCDE");
という具合に3文字以上挿入した時エディットの上限を超えた
メッセージ(EN_ERRSPACEだと思うんですが)を
受け取りたいのですがうまくいきません。

考え方間違ってるんでしょうか。よろしくお願いします。
515デフォルトの名無しさん:2005/08/18(木) 20:16:47
うまくいかないとは?
516デフォルトの名無しさん:2005/08/18(木) 20:27:19
>>515
すみません。
メッセージを受け取って処理したいんですが。
メッセージが受け取れないってことです。


517デフォルトの名無しさん:2005/08/18(木) 21:57:04
EN_ERRSPACEはバッファの割当てに失敗した時に送られるのであって、LIMITTEXTを越えたら送られるのでは無いはず
518デフォルトの名無しさん:2005/08/18(木) 23:12:26
>>502
MSDNに思い切り書いてある。
519ya-su:2005/08/18(木) 23:36:11
Getdibitsで、DIB_PAL_COLORSを最後の引数として、パレット番号を取得したいのですが、期待した値が返ってきません。
ReDim Pix(x, y) as byte に入れているのですが、
ペイント系ツールのパレットと違う値が入っています。
とりあえず、0から12の値が返っています。
そもそも、Getdibitsでパレット番号を取得できるのかということも、
ぐぐっても確認できません。
DIB_PAL_COLORSを最後の引数として返ってくるものは、
パレット番号なのでしょうか?
格納するReDim Pix(x, y) as byte が悪いのでしょうか?
520デフォルトの名無しさん:2005/08/18(木) 23:39:58
>>496
リモートスレッド
521デフォルトの名無しさん:2005/08/19(金) 00:31:22
MSNメッセンジャーのアイコンとか変更するAPIとかあったりします?
522デフォルトの名無しさん:2005/08/19(金) 00:49:38
あるわけねぇだろ
523デフォルトの名無しさん:2005/08/19(金) 04:51:14
524514:2005/08/19(金) 11:00:44
>>517
LIMITTEXTを越えたら送られるメッセージとかあるんでしょうか。

525デフォルトの名無しさん:2005/08/19(金) 14:08:09
クリップボードにファイルのデータを転送し、エクスプローラなどで貼り付けを行えるようにしたいのですが、
その場合、SetClipboardData関数の第一引数にどれを使えばいいのかわかりません。
CF_TEXTなどは単に文字列を転送する場合のみに使用するから、ファイルのデータを転送したい場合は使わないんですよね?
第一引数を何にすればいいのか。ファイルのデータをどういうフォーマットで転送すればいいのか、
教えてください。
526デフォルトの名無しさん:2005/08/19(金) 14:23:37
詳しくは知らないけど、
クリップボードへのファイルのコピーって、
たんにショートカットをコピーしているだけじゃないのかな。
527デフォルトの名無しさん:2005/08/19(金) 14:43:13
エクスプローラでディレクトリにファイル送るんでしょ?
中身じゃなくてファイル名渡すべきじゃない。
それ以外のことがしたいの?
528デフォルトの名無しさん:2005/08/19(金) 14:49:44
>>527
SetClipboardData(CF_TEXT, ファイル名の文字列を格納したメモリオブジェクト);

↑で出来るってことですか?
529デフォルトの名無しさん:2005/08/19(金) 15:18:36
CF_HDROPじゃないかな
530デフォルトの名無しさん:2005/08/19(金) 15:20:09
クリップボードなんて数年さわってないのであてずっぽうだけど
531478:2005/08/19(金) 15:37:06
>489
レスありがとうございます。

>>>478
>その方法じゃデスクトップは取れない
>あと、他のウィンドウのメッセージは何を取ろうとしてる?
>例えばWM_LBUTTONDOWNはクライアント領域じゃないと送られてこない
>非クライアント領域だったら別のメッセージが飛んでくる
>あと、リストビューとかもWM_LBUTTONじゃ取れない

具体的にやろうとしてることは、アプリのウインドウからマウスが外れた事を察知させようとしてます。
そこで、とりあずグローバルフックを掛けて流れてくるメッセージで使えそうなものを探そうと思ってました。
また何か情報ありましたよろしくお願いします。
532デフォルトの名無しさん:2005/08/19(金) 15:46:32
ActiveXでやりとりされる情報を解析したいんですが、ツールはありませんでしょうか?
やろうとしてる事はActiveXのメソッドに送られるパラメータや、プロパティーへ読み書きされる値などを見たいと思ってます。
よろしくお願いします。
533デフォルトの名無しさん:2005/08/19(金) 16:15:38
誰も答えてくれなかったのでもっかい質問

コンボボックスでスクロールバーが表示されるようにするにはどうすればいいんですか?
WS_CHILD|WS_VISIBLE|CBS_DROPDOWNLIST
だと大きさをオーバーした項目はキーボードの↑↓を押してやらなければ見えません
CBS_DISABLENOSCROLLなどのスクロールのスタイルがあるということはスクロールバーって出ますよね?
534デフォルトの名無しさん:2005/08/19(金) 16:42:47
オマエいったいどうやってコンボボックス作ってんだ?
535デフォルトの名無しさん:2005/08/19(金) 16:53:46
>>531
WM_MOUSEMOVEでTrackMounseEvent使って
WM_MOUSELEAVE処理すればいいんじゃね?
536デフォルトの名無しさん:2005/08/19(金) 20:52:16
>>533
WS_VSCROLL
537デフォルトの名無しさん:2005/08/19(金) 20:56:36
>>519
MSDN読め。
> DIB_PAL_COLORS
> カラーテーブルは、現在の論理パレットへの 16 ビットのインデックスの配列です。
538デフォルトの名無しさん:2005/08/20(土) 00:23:02
>>532
同じインタフェイスとGUIDを持ったActiveX作ってハックする。
539デフォルトの名無しさん:2005/08/20(土) 00:45:01
>>532
使ったことないから当てずっぽうだけどOLESPY
540デフォルトの名無しさん:2005/08/20(土) 19:04:05
CardWirthというフリーのゲームがあるのですが、
DirectXは使っておらずエディターを使えば
綺麗なアニメーションのようなものも作れます。
より綺麗にちらつきのないアニメーションを作るには
ダブルバッファリングとかいう事が必要らしいのですが
DirectXを使わないと難しいのでしょうか?
541デフォルトの名無しさん:2005/08/20(土) 19:12:19
> CardWirth ダブルバッファリングに該当するページが見つかりませんでした。

スレ違いじゃね?

ダブルバッファリングってのは一つ一つウィンドウに描画せずに
一度裏で全部描いてからそれを一気にウィンドウに描画するって技術だから
DirectXとは直接関係ない
542デフォルトの名無しさん:2005/08/20(土) 19:46:07
>一度裏で全部描いてからそれを一気にウィンドウに描画するって技術だから
ここは大当たりだけど

>ダブルバッファリングってのは一つ一つウィンドウに描画せずに
ここは大外れ


正しくは、
最初から前面の画面に直接描画せずに、
一旦別の場所で全ての描画処理(合成など)をしてから、
最終的な結果の画像のみを前画面に描画する技法
543デフォルトの名無しさん:2005/08/20(土) 19:49:25
いや、そう言う意図で言ったんだが……ウィンドウって表現はまずかったか。言葉って難しいね。
544デフォルトの名無しさん:2005/08/20(土) 20:00:49
Win32 では致命的な言い間違え
545デフォルトの名無しさん:2005/08/20(土) 20:04:11
言葉が難しいのではない。言葉の使い方が拙いだけだ。
546デフォルトの名無しさん:2005/08/20(土) 20:24:03
いや、解釈の仕方が拙いだけだ
547デフォルトの名無しさん:2005/08/20(土) 20:26:36
( ^ω^)
548デフォルトの名無しさん:2005/08/20(土) 21:07:11
何が違うのかよくわからん
549デフォルトの名無しさん:2005/08/20(土) 21:18:45
>>540
(・ε・)HSPでも触ってくればぁ?

プラグイン開発用のドキュメント見とけばグラフィック周りの実装が分かりやすい仕様になってるから理解するにはいいかと。
550デフォルトの名無しさん:2005/08/20(土) 23:47:48
>>549
馬鹿にしやがって
551デフォルトの名無しさん:2005/08/21(日) 00:02:40
HSPを馬鹿にしやがって?
552デフォルトの名無しさん:2005/08/21(日) 01:09:08
>>551
そうだよ。
553デフォルトの名無しさん:2005/08/21(日) 06:20:05
特定のプログラムのみについてキーボードフックをするプログラムを作っているのですが、
そのために、特定のプログラムが生成されたことを監視したいのですが、

新たなウインドウが生成された場合にシステムからウインドウメッセージを受けとるようなことって出来るのでしょうか?
できるのであれば、ヒントになるキーワードを教えてください。

それとも、10秒おきぐらいに、自らFindWindowで特定のウインドウが起動されていないかチェックする必要があるのでしょうか?
554デフォルトの名無しさん:2005/08/21(日) 06:34:14
いや、君が今やろうとしているキーボードフックで使うのと
同じAPIで出来るんだけど…
フックタイプを隅から隅まで読んで見ると良い。
555553:2005/08/21(日) 06:39:14
>>554
そっか。他のウインドウ生成もフックで監視できるんですね。ありがとうございました。
556デフォルトの名無しさん:2005/08/21(日) 09:27:49
ListCtrlをウィンドウサイズに合うようにMoveWindowをしているのですが、
右下のつまみでサイズ変更をする時に、ListCtrlの描画がちらつきます。

BackGroundをいったん消してから描画しているからなのでしょうが、
そのBackGroundの消去作業をしないようにするにはどうすればいいのでしょうか?
通常のRegisterClassExでウィンドウ登録をする場合だとWM_BKERASEを呼び出して、背景の消去をしないようにできますが、
一般的にコントロールはウィンドウプロシージャを持たないので、それを使えません。
557デフォルトの名無しさん:2005/08/21(日) 09:30:01
サブクラス化
558556:2005/08/21(日) 11:03:45
>>557
さんきゅーーーー!
559デフォルトの名無しさん:2005/08/21(日) 11:45:50
どうやってサブクラス化するのですか?と来ると予想
560556:2005/08/21(日) 11:56:20
もう来まへん来まへん
オナドロとそのサブクラを実装したかっただけです

午後から待ち合わせがあるのでグッバイ

またよろしくね。
561556:2005/08/21(日) 12:00:44
りすドピュ〜してきます
562デフォルトの名無しさん:2005/08/21(日) 13:04:01
>>560
オナドロって言うとなんかやらしい。
563ya-su:2005/08/21(日) 16:49:42
その一文を読みましたが、「インデックスの」という表現が分かりません。
パレット番号のことではないとうことなのか、なんなのかが分かりません。
誰か分かりやすく説明してくれませんか?


>>519
MSDN読め。
> DIB_PAL_COLORS
> カラーテーブルは、現在の論理パレットへの 16 ビットのインデックスの配列です。
564デフォルトの名無しさん:2005/08/21(日) 19:02:10
>>563
まず「パレット番号」という言葉の意味を理解したほうがいい。
565デフォルトの名無しさん:2005/08/21(日) 20:33:53
つうか、仕事なら金払え
566デフォルトの名無しさん:2005/08/21(日) 23:57:21
こんばんは、よろしくお願いします。
メニューのボタンのENABLEDプロパティーを
FALSEに、変更したいのですが、
どうすればいいのでしょうか。
567デフォルトの名無しさん:2005/08/22(月) 00:06:18
EnableMenuItem

ちったぁ自分で調べてみやがれ
568デフォルトの名無しさん:2005/08/22(月) 01:19:36
MSDNめんどいもんな。
あんな糞資料で良質なプログラマーが育成されると思ってるのかぁ?
569デフォルトの名無しさん:2005/08/22(月) 01:52:56
プロパティならAPI関係ないじゃん
570デフォルトの名無しさん:2005/08/22(月) 01:58:11
Win9xとNT系の両方でBIOSの情報(シリアル、バージョン等)を取得するにはどうすればよかとですか?
ヒント下さい
571デフォルトの名無しさん:2005/08/22(月) 03:08:58
確かにMSDNの資料はひどい。
わからせよう、という気がない。

まあ、だから本が売れるわけだが。
572デフォルトの名無しさん:2005/08/22(月) 03:54:08
VC++とAPIだけでゲームを作ろうと思っています。
windowsゲームプログラミングを読み終わったのですが、
まだゲームを作るための知識は不十分に感じます。
そこで何か本を買おうと思っているんですが、何がオススメでしょうか?
今の所、プログラミングWindowsあたりにしようと思っています。
この本についての意見もお願いします。
573デフォルトの名無しさん:2005/08/22(月) 04:17:22
>>572
明らかにスレ違い
574デフォルトの名無しさん:2005/08/22(月) 07:31:05
575デフォルトの名無しさん:2005/08/22(月) 09:39:42
列の幅を変更するListView_SetColumnWidthがありますが、
行の高さを変更するListView_???はありますか?
576デフォルトの名無しさん:2005/08/22(月) 12:10:19
spyが使いたくて、>>4のマイクロソフトのところから
Platform SDKをインストールしたんですが、spyがありませんでした。
Platform SDKにはspyはないのでしょうか?
当方、VB6の評価版でプログラムつくっているのでMSDNもありません。
c++かVisual Studio買わないとだめでしょうか?
577デフォルトの名無しさん:2005/08/22(月) 12:13:17
>>576
PSDKにはspyあったと思うけどなぁ。

サンプルソースをもう一度探してみ。
578デフォルトの名無しさん:2005/08/22(月) 12:14:34
ありません
579デフォルトの名無しさん:2005/08/22(月) 12:15:08
しまった。>578は>575宛てでw
580デフォルトの名無しさん:2005/08/22(月) 13:11:41
任意のウィンドウに自分がクリックされたと思わせる方法ありますか?
SetForegroundWindow(hWnd);
SetFocus(hWnd);
SetCursorPos(mousex,mousey);
mousepos=mousex|(mousey<<16);
SendMessage(hWnd,WM_LBUTTONDOWN,mousepos);
SendMessage(hWnd,WM_LBUTTONUP,mousepos);
としてもクリックされたと認識してくれないので
お願いします

581デフォルトの名無しさん:2005/08/22(月) 13:21:42
>>580
私はこんなことやってた。
::PostMessage(m_hBtns[btnNo], WM_LBUTTONDOWN, MK_LBUTTON, MAKELONG(0, 0));
Sleep(1);
::PostMessage(m_hBtns[btnNo], WM_LBUTTONUP, 0, MAKELONG(0, 0));
582デフォルトの名無しさん:2005/08/22(月) 13:24:25
>>576
binディレクトリ内あたりにあるはずだけどなぁ‥‥まあ使いやすい物じゃないけどな。
って今入ってるPSDK見たら見あたらないorz

うちはWinspectorってフリーソフト使ってるけど

583575:2005/08/22(月) 13:34:50
e?e???

ListViewって、行の高さを変えられないんですか?

・・・。
使えない。
584デフォルトの名無しさん:2005/08/22(月) 13:37:59
というかListViewの使い所じゃないってだけだろ
585デフォルトの名無しさん:2005/08/22(月) 13:44:48
>>583
変えられます。
586580:2005/08/22(月) 13:46:41
>>581
あー認識してくれないです…
こういうのも試してみたんですけど
SendMessage(hWnd,WM_NCLBUTTONDOWN,(WPARAM)HTCLIENT,(LPARAM)(x|(y<<16)));
Sleep(1);
SendMessage(hWnd,WM_NCLBUTTONUP,(WPARAM)HTCLIENT,(LPARAM)(x|(y<<16)));

対象ウィンドウがdelphiだとだめとかあるんでしょうか
587デフォルトの名無しさん:2005/08/22(月) 13:49:19
>>586
実際にマウスをクリックしたときに、どんなメッセージが流れるか見てみたら?
>581もそれであたりをつけたし。
588デフォルトの名無しさん:2005/08/22(月) 14:03:40
タスクバーのツールチップを強制的にバルーンにしてみようと思って
Shell_TrayWndを親にもつtooltips_class32を探し出して、
そのウインドウスタイルにTTS_BALLOONをSetWindowLongAしました。
(WS_BORDERも消しました。)

バルーンにはなるんですがなぜか場所がかなり上によってしまいます。
これを修正する方法を御存知の方いらっしゃいませんか?
対象OSはXPでVisualStyleが適用されています。
589572:2005/08/22(月) 15:03:29
>>573>>574
ゲーム製作のためだけに読むには適していないのか
などのAPI関連の書籍についての意見を伺いたかったのですが、
目的がゲームなだけでスレ違いでしょうか?
APIに関してはゲ製作板よりはこちらの方が詳しいと思ったのですが。
590デフォルトの名無しさん:2005/08/22(月) 15:11:14
本について質問するのはどうだろう。
それこそ、Advanced Windows嫁、という決まり文句になってしまうけど。
591デフォルトの名無しさん:2005/08/22(月) 15:14:20
>>580
使ったこと無いけどSendInputはどうだろうか?
592デフォルトの名無しさん:2005/08/22(月) 15:15:18
>>589
「VC++とAPIでゲームを作りたい」
こんな曖昧な情報でどう判断しろと。


まあ、マインスイーパーとかならどうにでもなるが‥‥
593580:2005/08/22(月) 15:22:53
>>591
おー、こんなAPIがあったんですね!!!!!
あれ、、、MSDNにINPUT構造体の説明がない…

594デフォルトの名無しさん:2005/08/22(月) 15:27:09
MSDNの検索はホント引っかからなくなったな。
ttp://www.google.co.jp/search?hl=ja&c2coff=1&q=MSDN+INPUT+Structure&lr=
595デフォルトの名無しさん:2005/08/22(月) 15:28:28
>>580
あるいはmouse_eventを使うとか。
596デフォルトの名無しさん:2005/08/22(月) 15:29:39
597デフォルトの名無しさん:2005/08/22(月) 15:30:34
>>593
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/userinput/keyboardinput/keyboardinputreference/keyboardinputfunctions/sendinput.asp

まず目次を同期させて、そのカテゴリのReference>Structuresに関連構造体の情報はある。
日本語版の場合は構造体の説明ページそのものがないから投げ捨てろ。
598デフォルトの名無しさん:2005/08/22(月) 15:30:57
>>595
mouse_eventがmousou_eventに見えなくもない。
599デフォルトの名無しさん:2005/08/22(月) 15:32:57
>>597
つーかSendInputの引数の説明のところにINPUTへのリンク張ってあるじゃん。
600デフォルトの名無しさん:2005/08/22(月) 15:35:31
しかしなんでmouse_eventとkeybd_eventはAPIの命名規則から外れてるんだろうな。
601597:2005/08/22(月) 15:36:14
>>599
( ノ∀`)アチャー
PlatformSDKとかだとParametersの説明にもリンク張られてるからWeb版の下の関連項目に気付かなかったわ

ついでにURLがSendInputだし‥‥

     ||
     ||  バッ
   ∧||∧
  (∩ ⌒ヽノ
   \  _⊃ アラヨット
    ∪  Σ
        ≡| ̄ ̄ ̄ ̄|
602580:2005/08/22(月) 15:43:36
>>594-601
みなさんありがとうございました できました!!
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,NULL);
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,NULL);

SendInputのほう試してみました
同じ悩みを抱えてたひとどうぞ
static const DWORD click[] = {
 INPUT_MOUSE, 0, 0, 0, MOUSEEVENTF_LEFTDOWN, 0, 0,
 INPUT_MOUSE, 0, 0, 0, MOUSEEVENTF_LEFTUP, 0, 0,
};
SendInput(2,click,sizeof(INPUT));

603デフォルトの名無しさん:2005/08/22(月) 17:11:15
解決手段の見当がつかず困っています。。

USBのキャプチャユニットとそれに接続するCCDカメラがあります。
USBキャプチャにはドライバとキャプチャソフトが付属しており、
それを使うとGUIから任意のタイミングで画像を取り込むことがで
きます。

今回はCCDカメラに映った映像をコマンドラインから操作して画像
を取り込む必要があります。

※イメージとしてはCygwinなどでコマンドを打てばそのタイミングで
  画像をフォルダに保存するといったようなことをしたい。

要はGUIソフトの機能をCUIで実現したいのですが、どのような方法
で取り組めばよいのでしょうか。

環境はWin2000で実現するのに使う言語はなんでもいいです。
604デフォルトの名無しさん:2005/08/22(月) 17:11:55
最近WIN32APIを学び始めました。
マウス操作をmouse_event関数で扱いたいのですが、
任意の場所のマウス座標を取得して、他の場所にマウスを移動させても
キーを押せば元に戻ってくるような、プログラムはどうすればできるんでしょうか?
座標取得にGetCursorPosを使うんでしょうか?座標の値が違うんですが・・・
605デフォルトの名無しさん:2005/08/22(月) 17:14:20
>>603
DirectShowとかでやるんじゃないかなあ
606デフォルトの名無しさん:2005/08/22(月) 17:17:48
>>604
任意の場所のマウス座標を取得して、他の場所にマウスを移動させても
キーを押せば元に戻ってくるようにプログラムする。

>座標の値が違うんですが・・・

どう違うんだ?
607デフォルトの名無しさん:2005/08/22(月) 17:26:05
>>606
すみません。
SetCursorPosを使ったら解決しました。
mouse_eventが使いたかったのは左右クリックの機能があったからですが、
dx と dy の各パラメータが 0〜65,535と書いてあったし、 DWORDとintでは型が合わん・・・と思ったら
機能を分けて使えばよかったんですね。
失礼しました。
608603:2005/08/22(月) 17:26:33
>>605
確かにキャプチャソフトはDirectXを入れないと動きませんでした。
とりあえずWin32APIプログラミングで実現するというアプローチ自体は
合っているのですね。
609デフォルトの名無しさん:2005/08/22(月) 17:30:21
>>606
違うだろ
GetCursorPosで手に入るのは、0 ≦ x ≦ 現在の画面サイズ の値だけど
mouse_eventで使うのは 0 ≦ x ≦ 65535 だ

画面サイズの設定が800*600だとすれば、GetCursorPosでは左上(0,0)、右下(799,599)だが
mouse_eventは常に左上(0,0)、右下(65535,65535)だ
画面が長方形なのに対して、mouse_eventのは正方形なんだよ
610デフォルトの名無しさん:2005/08/22(月) 17:56:52
>>607
画面の解像度が1024*768なので
xx = 65535 / 1024;
yy = 65535 / 768;
として、GetCursorPos座標を掛けたら(x * zz, y * yy)
mouse_eventで無理やりですができました。
自分のパソコンでしか使わないプログラムなので
今は何とか困りませんが・・・・
611デフォルトの名無しさん:2005/08/22(月) 18:28:25
MCIを使用しようと思いwinmm.libにリンクをして、ビルドしたこところ
以下のエラーが出てしまいビルドできませんでした。

error C3861: 'mciSendString': 識別子は、引数依存の照合を使用しても見つかりません。

原因がまったく分かりません。
偉い人教えてください。お願いしますm(_ _)m

OS:WindowsXP
エディタ:VC++.NET
612 611 :2005/08/22(月) 18:52:26
すいません、自己解決できました。
613デフォルトの名無しさん:2005/08/22(月) 18:52:36
>>610
GetSystemMetrics(SM_CXSCREEN)とかつかえばいいんでない?
614デフォルトの名無しさん:2005/08/22(月) 19:32:04
>>609
純粋な疑問だがマルチディスプレイだとどうなるのかな。
615デフォルトの名無しさん:2005/08/22(月) 22:19:02
>>566
>>567さんありがとうございます。
結構探し回ったつもりなんですが、すみませんでした。
616デフォルトの名無しさん:2005/08/22(月) 23:37:16
case WM_CREATE:
mop.dwCallback = (DWORD)hWnd;
mop.lpstrDeviceType = NULL;
mop.lpstrElementName = "bgm0006.mp3";

iErr = mciSendCommand(
NULL, MCI_OPEN, MCI_OPEN_ELEMENT,
(DWORD)&mop
);
if (iErr) {
mciGetErrorString(iErr, strErr, 1024);
MessageBox(hWnd, strErr, NULL, MB_OK);
return -1;
}
mciSendCommand(mop.wDeviceID,MCI_PLAY, MCI_NOTIFY, (DWORD)&mpp);
break;

case MM_MCINOTIFY:
MessageBox(NULL,"ポスト",NULL,MB_OK);
mciSendCommand(mop.wDeviceID, MCI_PLAY, MCI_NOTIFY, (DWORD)&mpp);
break;

case WM_DESTROY:
mciSendCommand(mop.wDeviceID, MCI_CLOSE, NULL, NULL);
PostQuitMessage(0);
break;

上記のソースでmp3のループ再生をしようとしたのですが。
MM_MCINOTIFYメッセージがmciSendCommand(mop.wDeviceID, MCI_PLAY, MCI_NOTIFY, (DWORD)&mpp);でポストされません。
どなたか教えしえてください。お願いします。
617はる:2005/08/22(月) 23:57:50
 アプリを起動していて、Windows を終了させた場合、アプリに届くメッセージは何かあるのでしょうか?
618デフォルトの名無しさん:2005/08/23(火) 00:02:43
>>617
ある
619はる:2005/08/23(火) 00:19:50
何か教えてください。お願いします。
620デフォルトの名無しさん:2005/08/23(火) 00:26:41
>>619

       おっぱい! おっぱい!
    おっぱい おっぱい! おっぱい!
  おっぱい! ∩   ∩ ノ)   おっぱい!
 おっぱい!  川 ∩ 川彡'三つ  おっぱい!
おっぱい! ⊂ミ∩∧η∧∩彡⊃    おっぱい!
おっぱい!⊂三ミ (,,・Д・)彡三彡三⊃ おっぱい!
おっぱい! ⊂彡川⊂彡川ミ⊃    おっぱい!
おっぱい!⊂彡川∪⊃ U川彡⊃   おっぱい!
 おっぱい! (ノ ∪  川 ∪ミ)  おっぱい!
  おっぱい!      ∪     おっぱい!
    おっぱい! おっぱい! おっぱい!
        おっぱい! おっぱい!
621デフォルトの名無しさん:2005/08/23(火) 00:28:15
622はる:2005/08/23(火) 00:37:10
検索結果が多すぎて分かりません。
私でも分かるようなメッセージを教えてください。
623デフォルトの名無しさん:2005/08/23(火) 00:38:54
>>621
>Windowsが終了するときのメッセージを取得

そのまんまのがある雀
624デフォルトの名無しさん:2005/08/23(火) 06:33:29
>>622
オマエでも分かるようなメッセージを自分で探し出せ
625デフォルトの名無しさん:2005/08/23(火) 07:32:03
なんと言えばいいかよくわかりませんが、独自の仮想ドライブを追加したいです。
たとえば zipファイルを Xドライブにマウントして、あたかも普通のドライブであるかのように振舞いたい、ということです。
zipファイルをマウントするというのはあくまで例ですが、ようするに仮想ドライブへのアクセスを自分でハンドリングしたいという
ことになるのでしょうか。
ドライブが無理なら、ディレクトリに見えるのでもいいです。
これを実現するために必要なAPIや、あるいは調査をするためのキーワードなどを教えてください。

これができたらやりたいことはいっぱいあるのですが、たとえばCD(ROM)に書き込みができるように振舞う、なんてのがやりたいです。
書き込み可能に見えるドライブX を作り、最初ドライブX は CDと同内容一が見え、このドライブに対して書き込みが発生すると
その差分をHDDの適当なディレクトリに作って行き、次にドライブX を読むときには差分の方を優先して見せる、といった感じです。
626デフォルトの名無しさん:2005/08/23(火) 07:35:15
ドライバ書け
627デフォルトの名無しさん:2005/08/23(火) 07:49:30
628625:2005/08/23(火) 08:36:18
>>627
ありがとう!
とりあえずそれが参考にしたという filedisk を落としてきた。
ソースが短くて読むのにはいいのですが、make の仕方がわかんないので困ったものです。
でも、ソース中に含まれるキーワードをぐぐると、結構それっぽいものがヒットするので、いつの日か何か作れることでしょう。
また、>>627 のリンクを少し見ただけでも、ディスクドライバとファイルシステムドライバがあるってことがわかりました。
自分のやりたいことは、きっとファイルシステムドライバも関連してくるんだろうと思います。
629デフォルトの名無しさん:2005/08/23(火) 17:19:04
マルチスレッドで、共通変数への同時アクセスを防ごうとしてますが、
クリティカルセッションではさむ(サンドイッチみたいな)かたちでよろしいのでしょうか?

よろよろ。
630デフォルトの名無しさん:2005/08/23(火) 17:27:36
>>629
それでいい
631デフォルトの名無しさん:2005/08/23(火) 17:28:08
>>629
どうした、具合でも悪いのか?睡眠と食事はちゃんと取れよ。
632デフォルトの名無しさん:2005/08/23(火) 17:31:10
>>629
クリティカルセクションな
633629:2005/08/23(火) 17:33:50
おぉ、悩める同士。

返事してくれてサンクス。

またよろしくなぁ。
おらはらへったぞ。
634デフォルトの名無しさん:2005/08/23(火) 17:42:39
悟空かよ
635デフォルトの名無しさん:2005/08/23(火) 17:44:21
らへったぞ、って何?
636デフォルトの名無しさん:2005/08/23(火) 17:45:54
ああ「腹減ったぞ」か。
637デフォルトの名無しさん:2005/08/23(火) 19:08:21
Interlocked〜() もたまには使ってあげてくださいね♪
638デフォルトの名無しさん:2005/08/23(火) 19:35:14
winsockってwin32APIに含まれますか?
639デフォルトの名無しさん:2005/08/23(火) 19:43:30
含まれるんじゃね?
640デフォルトの名無しさん:2005/08/23(火) 20:15:46
ふと疑問に思ったんだが、zipファイルをディレクトリにマウントするシェルエクステンションって、
インターフェースは公開されてなかったか?
ぐぐってもそれらしいのが見つからないんだが・・・
641デフォルトの名無しさん:2005/08/23(火) 20:18:33
cabviewのソースならある
642デフォルトの名無しさん:2005/08/23(火) 20:25:09
GetOpenFileName()を用いて複数ファイル名を取得したいのですが
OPENFILENAME の lpstrFileに複数ファイル情報を受け取るために
必要なバッファサイズを事前に知るにはどうしたらいいのでしょうか?
643デフォルトの名無しさん:2005/08/23(火) 21:19:36
>>642
まずはユーザーがいくつのファイルを選択するか
事前に知る方法を考えよう。
644デフォルトの名無しさん:2005/08/24(水) 01:22:47
ゲーム製作のために今APIを勉強しているのですが
大学で情報系を専攻しているのでAPIを本格的に勉強すべきか迷っています。
そこで質問なんですが、APIを勉強する利点ってどんな事があるんでしょか?
ググッてみてもAPIの勉強サイトは出てくるのですが、
APIを利用してできる事などの情報がなかなか見つかりません。
APIを利用してできる事を具体的に教えてください。

本当に初心者の質問で申し訳ありません。
645デフォルトの名無しさん:2005/08/24(水) 01:23:54
なんかすごい本末転倒な感じがするな
646デフォルトの名無しさん:2005/08/24(水) 01:30:35
感じじゃなくて、そのものズバリだべし
647デフォルトの名無しさん:2005/08/24(水) 01:33:00
窓用のプログラムを作りたい場合、
選択幅は Win32API だけじゃない事を伝えておこう。
648デフォルトの名無しさん:2005/08/24(水) 01:43:01
>>644
興味があるのに自分で試しもせずにぐーぐるやら人の意見をあてにしてるようじゃ
勉強する必要ないんじゃないかな。
仮に勉強を始めたとしても本格的にやってるつもりになるだけで終わると予想。
649デフォルトの名無しさん:2005/08/24(水) 01:46:03
>>644
俺も情報系の大学行ってるが、1回生って事もあって内容が物足りないので
純粋に新しい事を覚えたいって理由でCやらWin32APIやらをやってる。
やりたきゃやる、やりたくないならやらない。それで十分だろ>APIをすべきかどうか

覚えることの利点なんてやってりゃ分かると思ってるが
650デフォルトの名無しさん:2005/08/24(水) 02:00:50
習うより慣れろ。
651デフォルトの名無しさん:2005/08/24(水) 02:44:33
>>648
何のために勉強するかっていう目的も持たずに
気分次第で手探りにやる程、向上心は低くありません。
自由な時間は限られているので自分のためになる事を
やろうと思って質問したつもりだったんですが、すいません。
もう興味本位に時間を潰せるほど責任感のない年齢じゃないんで。
652デフォルトの名無しさん:2005/08/24(水) 02:49:55
ていうか、
>ゲーム製作のために今APIを勉強しているのですが
とか言ってる割にWin32APIが何を指すのかすら理解して無くない?
653デフォルトの名無しさん:2005/08/24(水) 02:52:59
そんな年齢なのに>>644の文章なんだ…
654デフォルトの名無しさん:2005/08/24(水) 03:02:47
ゲーム作りならHSPが楽とかたまに聞くからそっちにしたら?
俺はやったことどころか興味すらないからどんな言語かも知らないけど
655デフォルトの名無しさん:2005/08/24(水) 03:26:22
俺的には
>大学で情報系を専攻しているのでAPIを本格的に勉強すべきか迷っています。
が意味不明。大学で教えてくれるのならあえて勉強する必要など
ないと思っているのか?だとしたら向上心低いな。

つーか興味本位に時間潰せないとか言うほど心的余裕のない奴には無理だと思う。
素直にやめとけ。それでもやりたいというのならまずはちゃんとした文章書いて来い。
656デフォルトの名無しさん:2005/08/24(水) 03:27:42
きっと>>644の中ではAPIとは
Action game Programing Interface
の略なんだな。
657デフォルトの名無しさん:2005/08/24(水) 03:38:20
>>644
ゲーム製作ならDirectXSDKの勉強の方が直接的だろうね。

ゲーム以外のWindowsアプリを(.NETFrameWord使わず)作る必要があるなら
まあ、Win32APIの勉強はまず必要になってくるが、その必要に応じてその都度おぼえていけばいいんじゃないか?
658デフォルトの名無しさん:2005/08/24(水) 03:40:24
本当はまだ大学初年度でまだAPIどころか基本的な言語の勉強すらきちんとしてないのに、
APIについて少しだけ勉強してそれにどんな利点があるのか調べようと努力したんだけどわからなかったと
適当にアピールしとけば誰か答えてくれると思ったんじゃない?
んで、返答が>>645-651だったからちょっと大人ぶった発言をしてみた若者だと予想w
659デフォルトの名無しさん:2005/08/24(水) 04:02:30
APIなしで組みます
int main(){
  return 0;
}
660デフォルトの名無しさん:2005/08/24(水) 04:43:17
>>640
それ知りたい!
だれか知ってる人いない?
661デフォルトの名無しさん:2005/08/24(水) 06:03:08
巨大ファイルの部分的な削除挿入を
クラスタがチェーンしてることを利用して高速化する方法ってありますか?
662デフォルトの名無しさん:2005/08/24(水) 06:13:25
セクタ単位のアクセスはあるから可能だろうけど、
削除挿入したい情報が物理境界と一致することにどんな期待が持てるんだ?
俺だったらオンディスクでリスト構造やポインタ配列を作るだろうな、そういうことを考えているときは
663デフォルトの名無しさん:2005/08/24(水) 07:00:27
664デフォルトの名無しさん:2005/08/24(水) 12:02:32
file://***、http://***ftp://****などのファイル名?(リクエスト?)を一元的に読み込めるような仕組みってありませんでしょうか?
よろしくおねがいします。
665デフォルトの名無しさん:2005/08/24(水) 12:02:46
大学でAPIなぞわざわざ教えるわけないだろ。
英語の授業でいちいち単語の意味を教えないのと同じだ。
リファレンスで引っ張ってくるだけの単純作業を大げさに「勉強」と呼ぶ時点で終わってる。
666デフォルトの名無しさん:2005/08/24(水) 12:08:10
>>664
求むエスパー
667664:2005/08/24(水) 12:10:09
すいません、説明不足と思ったのでもう少し。
ブラウザのアドレス入力部って、file://***、http://***ftp://****などプロトコール問わず一元的に読み込み事が可能じゃないですか
そんな感じで、たとえば次のような感じで
FILE *fp = fopen( "http://www.yahoo.co.jp" , "r" ) ;
的な事が出来ればなぁ〜と考えてます。
668デフォルトの名無しさん:2005/08/24(水) 12:20:45
>>667
それもみんなWindowsでは関連付けでやっているからShellExecuteが使える。
ShellExecute(0, 0, TEXT("http://www.google.co.jp"), 0, 0, SW_SHOW);
669デフォルトの名無しさん:2005/08/24(水) 12:21:38
と書いたけどこれはブラウザで開くことになるから664が望んでいるのとは違うか?
670デフォルトの名無しさん:2005/08/24(水) 12:24:36
>>667
IEコンポーネントはどーよ
671デフォルトの名無しさん:2005/08/24(水) 12:35:58
URLDownloadToCacheFileかURLDownloadToFileかな?
672664:2005/08/24(水) 12:36:05
668さん、670さんレスありがとうございます。
>668さん
file://***、http://***ftp://****などから取得出来るデータをファイルとして扱いと考えてます

>670
>IEコンポーネントはどーよ
とりあえず「wininet.dll」ってのを今調べてみてます。
673デフォルトの名無しさん:2005/08/24(水) 13:55:14
>>IEコンポーネントはどーよ
>とりあえず「wininet.dll」ってのを今調べてみてます。

話がかみ合ってないのに正しい答えを見つけてるのは何故だろう
674デフォルトの名無しさん:2005/08/24(水) 14:03:35
ESPだな
675デフォルトの名無しさん:2005/08/24(水) 16:54:20
>>665
中学校からやり直しておいで
676デフォルトの名無しさん:2005/08/24(水) 17:48:04
>>673-674
ワロタ
677デフォルトの名無しさん:2005/08/24(水) 19:36:44
>>651
率直に言って、興味本位で動けないような奴はろくな技術者にはなれない。
業務系PGならそれでもなんとかなるが(周囲に大迷惑かけるけどな)、
ゲーム関係ならなおさら「興味本位」は重要だぞ。

>>673
才能って奴じゃないか。
少なくとも>>644にはなさそうなものを持ってそうだ。
678デフォルトの名無しさん:2005/08/24(水) 20:54:37
おまえらもAPI勉強しとけよ。APIを
679デフォルトの名無しさん:2005/08/24(水) 21:38:25
MFCよりかは、APIのほうが10000倍いいぞ。
ほんとに。
680デフォルトの名無しさん:2005/08/24(水) 21:44:06
Win系全てに最初から標準で入っててくれりゃあ別にMFC使うんでもいいんだけどな
.NETは今んとこ論外、重すぎ
681デフォルトの名無しさん:2005/08/24(水) 21:45:24
>>679
Win32APIはVisualComponentLibraryの何倍いいですか?
682デフォルトの名無しさん:2005/08/24(水) 22:26:28
>>681
VCLはよく知らないが、使いやすくなったMFCみたいなもんだろ?
それならVCLでできることは全てWin32APIで出来るし、VCLじゃ出来ないこともできる
その代わりややこしい
683デフォルトの名無しさん:2005/08/24(水) 22:41:30
そこでATL/WTLですよ。
684デフォルトの名無しさん:2005/08/24(水) 22:47:52
雑談はま板でドゾー
685デフォルトの名無しさん:2005/08/24(水) 23:07:32
Windowsでできることは全てAPI使ってできる
686デフォルトの名無しさん:2005/08/24(水) 23:17:12
ATLはWin32APIのラッパとは言っても
そもそもCOMコンポの開発労力を削減するために設計されたもんだから、
Win32APIを網羅してるわけじゃないでしょ。

まあ、俺は結構好きなんだが。
687デフォルトの名無しさん:2005/08/25(木) 00:00:55
API雑談スレみたいなのあった気がしたので、発掘してみた。
http://pc8.2ch.net/test/read.cgi/tech/1049790146/
質問という趣旨からズレはじめた(発展しそうな)ネタはこっちでやらないか。

移動した途端とぎれそうだが。
688デフォルトの名無しさん:2005/08/25(木) 00:23:04
>>687
おっ。俺はそのスレの339。
盛り上がってくれるとうれしい。
689デフォルトの名無しさん:2005/08/25(木) 00:29:44
なんだその自己主張
690デフォルトの名無しさん:2005/08/25(木) 02:24:09
>>686
ATLとWTLで、GUI周りのAPIはほとんど面倒見てくれるが。
正直、あとはAPI直に使ってもいいし、自分でラッパ書いてもいいんじゃないかと。
GUIだけは面倒だから自前で書きたくない。
691デフォルトの名無しさん:2005/08/25(木) 06:49:18
高級言語でできることはすべてアセンブラでできるみたいな。
いくら理論上は可能でもアセンブラでオブジェクト指向のプログラムとか
組みたくない
692デフォルトの名無しさん:2005/08/25(木) 06:50:17
そういう高度な議論は他所でやれや
693デフォルトの名無しさん:2005/08/25(木) 12:19:38
アセンブラからAPI呼び出しか、おめでてーな
694デフォルトの名無しさん:2005/08/25(木) 13:05:51
↑ここ数レスで一番の大馬鹿
695デフォルトの名無しさん:2005/08/25(木) 13:12:05
俺はGUIもAPIで書いてる。
というより手元にVCLやMFCがないだけだが。
それ以外に直接API使わずにGUI書く方法があったとしても難しそうだし。
696デフォルトの名無しさん:2005/08/25(木) 17:40:38
>>694
御意
697デフォルトの名無しさん:2005/08/25(木) 22:07:54
>>695
今のところ俺も。
698デフォルトの名無しさん:2005/08/25(木) 22:11:44
そんなおまいらにはWTLを。
と言いたいがそんなおまいらにはATLがないんだろうな。
699デフォルトの名無しさん:2005/08/25(木) 22:21:19
はいはい
700デフォルトの名無しさん:2005/08/25(木) 22:29:56
軽くタイムリーな所で
ttp://www.codeguru.com/Cpp/controls/menu/alternativemenu/article.php/c189/
この独自メニューを使わせてもらおうと思ったのですが、
日本語の項目をAppendすると文字化けしてしまいます

もちろん日本語フォントを指定済みです
原因が分かる方、教えて頂けないでしょうか
701デフォルトの名無しさん:2005/08/25(木) 22:31:16
それのどこがWinAPIと関係するのか説明できたら教えてやるよ。
702デフォルトの名無しさん:2005/08/25(木) 23:08:54
ANSI_CHARSETm9(^Д^)プギャー
703700:2005/08/25(木) 23:14:03
>>702
ここでしたか!ありがとうございます、無事動作しました
WinAPIと関係あって良かったですw
704デフォルトの名無しさん:2005/08/25(木) 23:19:08
今日のMVPは701か
705デフォルトの名無しさん:2005/08/26(金) 11:08:44
http://yokohama.cool.ne.jp/chokuto/urawaza/api/CreateWindowEx.html
CreateWindowをするさいにクラス名を渡しますが、
そのクラス名を取得したい場合、どうすればいいんでしょうか。
GetWindowLongで取得できますか?
706705:2005/08/26(金) 11:13:24
かいけつ
707デフォルトの名無しさん:2005/08/26(金) 11:47:47
>>706
きくまえにえむえすでぃーえぬ(えいごばん)よめ
708デフォルトの名無しさん:2005/08/26(金) 17:10:30
WinMainとプロシージャのWM_CREATEってどっちが先に実行されますか?
709デフォルトの名無しさん:2005/08/26(金) 17:12:19
WinMainが走らないとプロシージャも登録できんだろうが
710デフォルトの名無しさん:2005/08/26(金) 17:42:04
>>708
WM_CREATEはCreateWindow(Ex)の中の人が呼ぶ。
711デフォルトの名無しさん:2005/08/26(金) 17:58:21
>709-710
レスありがとうございます
712デフォルトの名無しさん:2005/08/26(金) 19:01:27
チャットバーみたいな文字列入力できる物ってどうやって作るんですか?
713デフォルトの名無しさん:2005/08/26(金) 19:13:10
CreateWindow
714デフォルトの名無しさん:2005/08/26(金) 19:47:05
教えてください。

PathAddBackslashA などの ANSI 版 Path API は、
マルチバイト文字(CP932)を含むパスを
何の問題も無く利用することが出来ますでしょうか?
715デフォルトの名無しさん:2005/08/26(金) 20:09:25
全く問題なし。
Windowsはひらがなや漢字をフォルダ名に使えるし。
716デフォルトの名無しさん:2005/08/26(金) 20:10:00
ファイル名もだが
717デフォルトの名無しさん:2005/08/26(金) 20:11:40
MultiByteToWideChar等での
CP_OEMCPとCP_ACPの違いを教えてください。
ANSIコードページとOEMコードページということですが、
調べてもいまいちよく理解できません。
718デフォルトの名無しさん:2005/08/26(金) 20:15:40
そもそも日本語Winの基本文字コードが2バイトなのに、
マルチバイト文字が扱えなかったら糞だろう
719デフォルトの名無しさん:2005/08/26(金) 20:21:57
↑ここ数レスで一番の大馬鹿
720デフォルトの名無しさん:2005/08/26(金) 20:57:46
>>719
自虐しちゃダメよ?
721デフォルトの名無しさん:2005/08/26(金) 21:13:03
質問です。
XPビジュアルスタイルを適用してCEditを使用しています。
そこで日本語を入力して再変換を行うと文字が化けます。

・ATOCKでは発生しません。
・コンテキストメニューから再変換を選択しても発生しません。

_UNICODEを宣言しないで回避する方法ってありますか?
722デフォルトの名無しさん:2005/08/26(金) 21:29:44
>>721
WindowsのAPIにCEditなんてないお(;^ω^)
723デフォルトの名無しさん:2005/08/26(金) 21:32:44
MFCスレへドウゾ
724721 :2005/08/26(金) 21:34:05
正直すまんかった…


;y=-( ゚д゚)・∵ターン
725MathC ◆Ho9erQuSOQ :2005/08/26(金) 23:40:32
やっと今日C言語の学習が一通り終わったのでWindowsプログラミングをやりたいと思っているのですが、
なにぶん、貧乏学生なもので>>1-4に書かれている書籍はとてもじゃありませんが手が出せそうにありません。
初めのほうに書いてある「猫でもわかるWindowsプログラミング」というサイトと「Win32 API入門」を訪れたのですが、
後者のほうは次から次へと専門用語が出てきて困っています。
前者のサイトから学びたいと思うのですが理論的な解説なしに学ぶのは自殺行為でしょうか?
726デフォルトの名無しさん:2005/08/26(金) 23:43:12
まずは動くものをどんどん作って、雰囲気をつかむのがいいと思う。
雰囲気がつかめれば理論(?)も理解しやすい。
727デフォルトの名無しさん:2005/08/26(金) 23:48:18
貧乏学生なら貧乏学生なりに倹約して金貯めて買え
どうでもいいことに金使わんと、必要なものにまず使えよ
728デフォルトの名無しさん:2005/08/26(金) 23:50:58
本を買わない学生に未来はない
729デフォルトの名無しさん:2005/08/26(金) 23:53:09
わからない単語があれば調べればいいじゃない
730デフォルトの名無しさん:2005/08/26(金) 23:53:59
>>725
Win32 API入門も専門用語の羅列は 1. Win32 APIとは だけだと思うけど。
731MathC ◆Ho9erQuSOQ :2005/08/27(土) 00:04:15
>>726-730
沢山のレスありがとうございます。
Advanced Windows は切り詰めながら買いたいと思います。
それまでは「猫でもわかる.....」で頑張ります。
732デフォルトの名無しさん:2005/08/27(土) 00:29:37
>>731
Advanced Windowsは、調べても調べても手元の資料には答えが
見つからなくなったときでいいとオモタ。
733デフォルトの名無しさん:2005/08/27(土) 00:29:56
>>731
俺もC終わってWin32APIの勉強してるが、推薦図書スレの
VisualC++の1読んでるがわかりやすいと思った
734デフォルトの名無しさん:2005/08/27(土) 00:54:03
>>728
5千オーバーの本を何冊も買うのは学生には辛い
735デフォルトの名無しさん:2005/08/27(土) 01:03:14
買ってたオレは何だったんだろうな
736デフォルトの名無しさん:2005/08/27(土) 01:28:59
>>725
とりあえずPlatformSDK入れてサンプル「Generic」のソース読んで理解。
それができたら改造してみる。

このあたりから初めてみれ。
737デフォルトの名無しさん:2005/08/27(土) 01:52:11
>>733
その「C終わって」っつのはいったい何だ。
738デフォルトの名無しさん:2005/08/27(土) 02:02:56
少しワロタ
739135:2005/08/27(土) 05:56:14
>>136
コンソールアプリは確かにそれでいいんですが・・・

>>137
Win98では、system("echo \a")でちゃんとDOS窓が出現してビープ音が出ます。
CreateProcessA(NULL, "command.com /cecho \a", &sa, &sa, ...);
などとしても鳴ります。
私は、単なるビープ音だけではなく、例えばユーザー補助でマウスキーを設定していると、NumLockで有効になる時と無効になる時で周波数が変わっていて音で識別できるようになっている、とかそういう面白いこともやりたいわけですが・・・
例えばDeviceIoControl()なんかに特別なデバイスを指定したりとか、マルチメディア系のインターフェースでビープ音を扱える、とかはないですかね・・・? DOS時代にはビープ音で演奏するソフトが色々ありましたが・・・

なお、Win2000も使ってみました。確かにsystem("\a");でビープ音、出ますね・・・「''は内部コマンドまたは外部コマンド、操作可能な・・・」というエラーメッセージも一瞬出ますが・・・
それで
CreateProcesA(NULL, "command.com /cecho \a", &sa, &sa, ...);
はWin2000では音が鳴りません。
CreateProcesA(NULL, "cmd.exe /cecho \a", &sa, &sa, ...);
にすると音が鳴ります。

残念なのは、Win2000(のWin32)ではI/Oポートがすべてマスクされ、しかもシミュレートもない、ということですね・・・Win98では61hはアンマスクになってたりしますし、マスクされたポートも適当にシミュレートしてくれますね。スルーされるだけだったりしますが・・・

なお、MessageBeep(-1)ですが、Win98では確かに極めて短いビープ音(ボツッというような音)が鳴るのですが、Win2000ではサウンドカードからの音(MB_OKと同じ音)ですね。MSDNにはビープ音だと書いてあるのに、やはりウソが書いてあるのか・・・orz
NT3.1とかではビープ音だったんですかね?
740デフォルトの名無しさん:2005/08/27(土) 07:04:31
>>739
そもそもハード的にM/Bのスピーカは周波数とか変えられるんだろか…
741デフォルトの名無しさん:2005/08/27(土) 08:16:06
DrawTextで \n やワードラップで改行されるときの
行間の幅を変えるにはどうすればいいですか?
742デフォルトの名無しさん:2005/08/27(土) 08:26:44
>>740
あっはっは。面白いこというなぁ。
昔はBEEPでBGMとか当たり前だし、
BEEPを通常のサウンドデバイスとしてあつかうドライバもあるのに。
743デフォルトの名無しさん:2005/08/27(土) 08:39:00
単音BGMか?
今後製造されるM/Bでもスピーカの周波数が変えられることは保証されてるのか?
744デフォルトの名無しさん:2005/08/27(土) 08:46:55
>>743
結果に対して仮定を持ち出す
そいつは詭弁という奴ですよ〜
745743:2005/08/27(土) 09:00:10
>>744
勝手に討論を始めないでくれ
746デフォルトの名無しさん:2005/08/27(土) 09:04:46
>>743
アナクロな技術を使うならば、単音単一周波数単一音量でもパルス制御すれば三重奏に聞こえる程度の音は作れる。

>>739
目的がよく判らんのだが、自分の端末だけでやりたいのか、他人も同じ目に遭わせたいのかその辺りは?
それから、サウンド機能を使わずにビープだけでやりたいと言う理由もよく判らんな。
747デフォルトの名無しさん:2005/08/27(土) 09:32:24
>>739
つか、MessageBeep()でもまえの要求は完全に満たしてるじゃん。

・サウンドカードから音を出したい
・状況によって音を変えたい

何を前スレからうだうだ気にしてるんだ?
あとM/BのBEEP全然関係ないし。
748デフォルトの名無しさん:2005/08/27(土) 09:37:28
>>739
流れがよーわからん(スレ境界またいでるの追う気力がない)が
PlaySound じゃあかんのか?
749 :2005/08/27(土) 09:44:21
test
750デフォルトの名無しさん:2005/08/27(土) 10:20:12
>>746
むかーし、リレースイッチ?の「カチ」っていう音で
サンプラーっていうのもあったなあ。
751デフォルトの名無しさん:2005/08/27(土) 10:24:37
寿命短そうだな
752デフォルトの名無しさん:2005/08/27(土) 10:43:19
SpkQQ
753デフォルトの名無しさん:2005/08/27(土) 11:32:31
>>750
速くスイッチングするとカチカチじゃなく、ブーンからピーンと発信音がする罠。
754デフォルトの名無しさん:2005/08/27(土) 11:49:24
MessageVip()
755デフォルトの名無しさん:2005/08/27(土) 11:53:23
単発ジョークでふざけたい人は頭悪スレいってくれ
756デフォルトの名無しさん:2005/08/27(土) 15:12:45
>731
学生なら図書館行くとか
割と置いてあったりするし
なんなら図書館に仕入れてもらうとか
757デフォルトの名無しさん:2005/08/27(土) 18:52:49
親ウインドウのプロシージャでWM_CREATE時にしか実行されない子ウインドウを作成する関数(関数内にループもない)
がループして困っているのですが
WM_CREATEってCreateWindowしたとき以外発生しませんよね?
758デフォルトの名無しさん:2005/08/27(土) 19:04:57
>>757
関数内にループが無いんなら、その関数呼び出すとこがループになってんじゃねーのか?
759デフォルトの名無しさん:2005/08/27(土) 19:05:15
>>757
The WM_CREATE message is sent when an application requests that a window be created by calling the CreateWindowEx or CreateWindow function.
760デフォルトの名無しさん:2005/08/27(土) 19:07:09
>>757
メッセージループの書き方が悪いんじゃ?
761デフォルトの名無しさん:2005/08/27(土) 19:19:38
親ウィンドウと同じプロシージャ使ってるんじゃねぇの?
762プロシージャ:2005/08/27(土) 19:26:44
LRESULT CALLBACK WindowProc
(
HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam
)
{
PAINTSTRUCT ps;
HDC hdc;
switch(uMsg)
{
case WM_DESTROY:
ResetInformationString();
PostQuitMessage(0);
return 0;
case WM_CREATE:
IniInformationString();
SetInformationStringMax(20);
CreateEditLine(hWnd,wParam,lParam); //ループしている関数
return 0;
                     略
              default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}

763ループしている関数:2005/08/27(土) 19:29:08
void CreateEditLine(HWND hwnd, WPARAM wParam, LPARAM lParam)
{
       h_edit = CreateWindow
              (
APP_NAME ,NULL,
WS_CHILD|WS_VISIBLE|WS_BORDER|ES_LEFT,
16, 450, 560, 20,
hWnd,NULL, ((LPCREATESTRUCT)lParam)->hInstance , NULL
);
if(h_edit == NULL)
{
InsertInformationString("Editline create failed");
return;
}
edit_proc = (WNDPROC)SetWindowLong(h_edit,GWL_WNDPROC,(LPARAM)EditProc);
       InsertInformationString("Chatting editline create Success!");

}
764デフォルトの名無しさん:2005/08/27(土) 19:34:37
親ウインドウの作成関数の引数が激しく気になるなw
APP_NAMEが指定されてるんじゃなかろうか…
765デフォルトの名無しさん:2005/08/27(土) 19:34:39
>762が親ウインドウのプロシージャです。
>763が子ウインドウを作成する関数です。
SetWindowLongでプロシージャも専用のものに切り替えてるはずなんですが;
766デフォルトの名無しさん:2005/08/27(土) 19:37:24
ああっやっぱり…
WM_CREATE は SetWindowLong でプロシージャ切り替える前に送られるよ。
767デフォルトの名無しさん:2005/08/27(土) 19:38:12
>764
APP_NAMEになってました・・・・・・orz
修正したら正常に動作しました

>758-766お騒がせしてすみません;
768デフォルトの名無しさん:2005/08/27(土) 19:40:19
まぁ、知らないうちには良くやることじゃな
769デフォルトの名無しさん:2005/08/28(日) 14:53:20
単純なエディットコントロールを作成したんですが
キーボードから入力しても文字列が表示されなくて(aaaと打っても空白のまま)困っています。

CreateWindow("EDIT","",
WS_CHILD|WS_VISIBLE,
10,10,300,20,
hwnd,
(HMENU)1,
hInstance,
NULL);

落としたサンプルそのままで使ってるんですが、別のものが影響したりするんでしょうか?
770デフォルトの名無しさん:2005/08/28(日) 16:18:24
ウインドウの高さが小さくね?
771デフォルトの名無しさん:2005/08/28(日) 16:19:47
失礼、RECTと勘違いした。
772デフォルトの名無しさん:2005/08/28(日) 17:23:26
コンボボックスの中のエディットコントロールのハンドルを取得できますか?
773デフォルトの名無しさん:2005/08/28(日) 18:55:49
出来るよ。コンボだからエディットコントロールと
リストボックスの合体だな。spy++で覗くと良いだろう。
774デフォルトの名無しさん:2005/08/29(月) 01:49:32
フラットC#へもマルチさせて頂き恐縮ですが、どちらの掲示板にパピッポすればよいのか自信がありませんでした・・。

漢字入力を始めたときに飛んでくるWM_IME_STARTCOMPOSITIONなどを
監視して、以下のようなソフトを作りたいと思っています。
@ワード文書内において、
AIME入力、言い換えれば漢字入力を開始すると、
B入力された文字が確定されるまで、
C背景を薄いブルーにする、
というものです。

すでに私は、
ソリューションダイアログでWord.ObjectLibraryを参照するように設定することで、
@ワード文書に例えば文字列をinsertしたり、選択範囲を変更したりできるようになりました。
また、
自分のフォームに、テキストボックスから派生させたMyテキストボックスを
貼り付けて、そのMyテキストボックスに文字が入力されはじめたことを
ウィンドウメッセージとして取得できるようになりました。
具体的には、派生させたクラス(Myテキストボックス)のWndProcをOverrideして
m.MsgがWM_IME_STARTCOMPOSITIONかどうかを判定する機能を追加しました。

【質問】
しかしながら、Myテキストボックスでは「文字が入力されはじめたことを検知」する
機能を搭載することに成功したのですが、
ワード文書ではうまくいきません。とうかどうやるのかよくわかりません。
テキストボックスから、上記の機能を搭載したクラスを派生させるように、
例えば、Word.ApplicationやWord.Documentから派生クラスを用意して適宜同じように
WndProcをoverrideすればうまくいくでしょうか。
もっとも、Word.Applicationは、インターフェース型(?)ですが。

【質問2】
思いっきりすれ違いな予感もしますが、当方VisualC#2.0 beta2 , WindowsXPsp2,Word2000です。
よろしくお願いします。
775デフォルトの名無しさん:2005/08/29(月) 02:08:16
>フラットC#へもマルチさせて頂き恐縮ですが、どちらの掲示板にパピッポ
ここまで読んだ。そして、その後の文章を読む気力が無くなった。
776デフォルトの名無しさん:2005/08/29(月) 02:11:30
Word.DocumentClassやWord.ApplicationClassが一応はクラスですけど、
これらのクラスから派生クラスを作ってはみるものの、
WndProcなるメソッドをインテリコンボボックス(?)から
見つけ出すことはできませんでした。
777774:2005/08/29(月) 02:12:37
>>775
丸rz。。。
そんなことおっしゃらずに、お願いします(T_T)
778デフォルトの名無しさん:2005/08/29(月) 07:00:59
いいから帰れ
スレ違いだ
779デフォルトの名無しさん:2005/08/29(月) 09:23:29
タスクバーに表示されている自分(アプリケーション)のタスクバーアイコンの
キャプションをウィンドウタイトルバーのキャプションとは違うものにする方法は
ないでしょうか。

googleで、タスクバー、アイコン、キャプション、タイトル、テキスト、操作、設定、api
などのキーワードで検索してみましたが見つかりませんでした。
780デフォルトの名無しさん:2005/08/29(月) 09:36:39
>>779
MSDN Libraryみてみたが無かった
ってか無理なんじゃね?その辺の制御はWindowsのシェルがやってる希ガス
781デフォルトの名無しさん:2005/08/29(月) 09:55:54
>>779
メインウィンドウを非表示にして、メインじゃないウィンドウのタイトルを
好きに変更汁。
782デフォルトの名無しさん:2005/08/29(月) 10:33:40
Win32APIをラップしたクラスを作ってるんですが、
クラス名としてどのようなものがよいでしょうか?
783デフォルトの名無しさん:2005/08/29(月) 10:35:02
知るか
784デフォルトの名無しさん:2005/08/29(月) 10:44:18
ひとまとめにするのはnamespaceだけにしとけ
ラップする機能単位にクラス化しろ
785デフォルトの名無しさん:2005/08/29(月) 11:06:19
>>780 >>781 さん
レスありがとうございます。

書き込みしてからさらに情報を探しているうちに、Delphiで作られたアプリが
>779で書いたようなことを実現していたことを思い出しました。

で"Delphi"もキーワードに加えて検索したところ、>781さんも書いている、
タスクバーアイコンを非表示にしたウィンドウとデスクトップ外に表示した
ウィンドウの2つのウィンドウを使って1つのウィンドウに見せかける(Delphi
ではこれがデフォルト?)、というやり方を見つけました。

ポイントとしてはSetWindowLongあたりでスタイルを変えるというめどは
つきましたが、使っている言語がHSPなのでうまくいくかどうか不安です。
ではとりあえず消えます。ありがとうございました。
786デフォルトの名無しさん:2005/08/29(月) 11:18:38
>>785
悪いこと言わんからDelphiなりVC#にでも開発環境変えれ。
HSPはHSPの提供してる機能以上のことやると他の環境以上に手間がかかる。
787デフォルトの名無しさん:2005/08/29(月) 11:32:56
お勧めはDelphi
788デフォルトの名無しさん:2005/08/29(月) 11:54:24
お勧めはBC++
789デフォルトの名無しさん:2005/08/29(月) 13:26:56
このスレで良いのかどうかわかりませんが...

windowsの起動時に「ctrl+alt+delキーを押して開始してください画面」から、
「ctrl+alt+del」→「任意のユーザー名、パスワード、ドメイン名にてログオン」
ということが、外部PCからの制御でしたいのですが、なかなか出来ません。
まずは簡単なサービスを作ってウィンドの挙列をして、
強引にプログラムから入力してみようとしてみましたが、
普通のウィンドウではないらしく、setwindowtextなど出来ませんでした。
いずれにしてもサービスで外部からのコマンド等を受信してからの
作業になると思いますが、どのように進めて行けば良いのでしょうか?
ご存じの方、よろしくお願いします。
790デフォルトの名無しさん:2005/08/29(月) 13:44:10
>>789
GINAでググれば糸口が掴めるやも
791デフォルトの名無しさん:2005/08/29(月) 13:52:57
>>790
実は以前GINAを調べていたのですが、
結構ハイリスクだったので諦めた経緯があります。
何か姑息な手段でも良いのですが他に方法なないでしょうか。
それともはやりGINA必須でしょうか。
792デフォルトの名無しさん:2005/08/29(月) 14:19:23
ハイリスクノータリーン
793デフォルトの名無しさん:2005/08/29(月) 14:47:57
ハイリスクノータリーン
794793:2005/08/29(月) 14:48:33
って、既にその方向性だったのか orz
795デフォルトの名無しさん:2005/08/29(月) 14:57:22
ハイリスクタリラリラーン
796デフォルトの名無しさん:2005/08/29(月) 15:29:52
外部からログインするならGINAさわる必要ないだろ
>>789は外部から対話ログインしてその後どうするつもり?
全部SendMessageとかで他プログラム制御するのか?
797717:2005/08/29(月) 16:00:20
スルーされてしまったようなのでもう一度。
798デフォルトの名無しさん:2005/08/29(月) 16:53:16
>>796
外部から対話ログインしたいのではなく、
外部からの制御でctrl+alt+del→ユーザー名パスワード、ドメイン名の入力を
済ませたいのです。
例えばカードリーダーや指紋認証等と232C等で通信して、
ログインするユーザーやドメインを変えたいということです。
「ctrl+alt+delキーを押して開始してください画面」
の状態のパソコンを上記の操作で自動的に任意のユーザーでログオンさせたいのです。
よろしくお願いします。
799デフォルトの名無しさん:2005/08/29(月) 17:02:39
スレッド毎に(スレッドローカルな)データを持たせたいのですが、
そういうAPIは用意されてますか?

今はグローバル変数の配列にtid毎にポインタを割り当てているのですが、
これだとアクセスする度に検索しなくてはならないので非常に遅くなります。

ご教示お願いします。
800デフォルトの名無しさん:2005/08/29(月) 17:11:45
>>799
TlsAlloc、TlsGetValue、TlsSetValue

この辺か?
801デフォルトの名無しさん:2005/08/29(月) 17:17:27
一瞬GAINかと思った・・
802デフォルトの名無しさん:2005/08/29(月) 17:31:41
>>800
ありがとうございました。まさにソレです。
803デフォルトの名無しさん:2005/08/29(月) 18:07:03
>>795
不覚にもツボに入った。
804デフォルトの名無しさん:2005/08/29(月) 20:03:32
>>798
スマートカード認証ならますます素直にGINAを使えって話になるが
805デフォルトの名無しさん:2005/08/29(月) 20:22:17
まさにそのための機能だしね。
まあThinkPadの指紋認証みたいなポカ作り込まないように気を付けてがんばれ。
806デフォルトの名無しさん:2005/08/29(月) 20:37:27
>>782
よーするに COM か?
807デフォルトの名無しさん:2005/08/29(月) 21:05:04
>>806
COMについて理解が足りてない予感。
808デフォルトの名無しさん:2005/08/29(月) 21:20:40
>>807
ドライバとのインターフェイスに限定して考えてるか?
809デフォルトの名無しさん:2005/08/29(月) 21:40:52
SetWindowsHookEx()でスレッドIDに0を指定して、インスタンスハンドルをちゃんと指定した場合、
現在のプロセス、かつ、現在のプロセスで作成された全てのスレッドに対してフックできますか?
810デフォルトの名無しさん:2005/08/29(月) 22:06:40
やってみりゃいいじゃなーい?
811デフォルトの名無しさん:2005/08/29(月) 23:16:07
GINAを調べてみましたが、GINAのdllは基本的に
何かの状態変化の時に呼び出されるコールバック関数の様なものの固まりに見えます。
実際、「ctrl+alt+delキーを押して開始してください画面」
の状態の時、外部(232C等)からの情報は何処で受け取って、
受け取ったあと、どのように処理すれば良いのかわかりません。
LogonUserとかでtokenを取得し、その後デスクトップの処理する事になるのかな。
それならGINAとかあまり関係なさそうだし。
どうGINAと絡めばいいのでしょう...
おわかりの方、よろしくお願いします。
812デフォルトの名無しさん:2005/08/30(火) 03:59:40
ctrl+alt+delキー押されたとき呼ばれる関数があるやろ
そこで「カードをかざせ」みたいなダイアログだして
シリアルポートからカード情報読んで
簡単なつくりにするなら、
カード情報と認証情報結び付けといて
その認証情報でLogonUser
でプロファイル読んだりしてシェル立ち上げておしまい
813デフォルトの名無しさん:2005/08/30(火) 05:27:31
馬鹿にしないでください。それでわかるくらいなら質問しません。
814デフォルトの名無しさん:2005/08/30(火) 08:21:13
ワロタ
815789:2005/08/30(火) 08:51:15
>>812
情報、ありがとうございます。
>ctrl+alt+delキー押されたとき呼ばれる関数があるやろ
はい。ありますよね。
しかし、私が思っているのはその前の
「ctrl+alt+delキーを押して開始してください画面」
の時点、つまりパソコンの電源を入れて上記画面で止まっている状態から
外部機器からの操作でログイン→デスクトップ表示まで行きたいです。
ctrl+alt+delの操作を省きたいのです。(が、表示は普通に出しておきたい。)
そこで思ったのは、もしかすると私のやりたいことはGINAに直接関係なく、
少なくともWlxから始まる関数の処理はしないでも、
上記「ctrl+alt+delを押して...」の時点で、
サービスによりLogonUserでtokenを取得し、
812氏の仰る「プロファイル読んだりしてシェル立ち上げておしまい 」
なのではないかと思ったのですが、
「プロファイル読んだりしてシェル立ち上げておしまい 」
の方法が今のところわからず、試せずにいます。
なにか情報が有れば、引き続きよろしくお願いします。
816デフォルトの名無しさん:2005/08/30(火) 09:49:51
>>815
GINAやWinLogonのことはよく知らないけど横レス。

つまりWinLogon.exeの知らないところで自前のプロセスで
対話ログオンを行うというアイディア?
それでシェルが上がったとしてもちゃんと動くのかなー?
勉強で作りたいならいいけど動作保証が必要な仕事なら
その方法はキツいような臭いがする。
検討するにしても789の理解では難しいような気がするよ。

> プロファイル読んだり
LoadUserProfile

> シェル立ち上げて
HKLM¥SOFTWARE¥Microsoft¥Windows NT¥CurrentVersion¥Winlogon
のShellに書いてるのを上げる。userinitが先かな。

デスクトップ作ったり(切り替えだけかも)しないとアカンような気もする。
817816:2005/08/30(火) 09:57:32
自己レス。
>>816
> HKLM¥SOFTWARE¥Microsoft¥Windows NT¥CurrentVersion¥Winlogon
HKCUにもあったような気がした。
818789:2005/08/30(火) 10:26:53
>>816
>WinLogon.exeの知らないところで
なるほど。
確かにOSが管理出来なくなる様な事になりそうではありますね。
う〜む。しかし、GINAとなるとどの時点で外部からの制御を処理すれば良いのか...
もう少し探ってみます。
よろしくお願いします。
819816:2005/08/30(火) 12:17:17
>>818
> GINAとなるとどの時点で外部からの制御を処理すれば良いのか...

よくわからないので間違ってるかもしれないけど。
初期化時とかにスレッドなりウィンドウなり作ってそこで通知を
待つとかポーリングとかすればいいんじゃない?
で、来たらWlxSasNotify呼ぶのかな?

とにかくWlxSasNotify呼んでるサンプルを見つければいいような
気もする。
820Omoti:2005/08/30(火) 13:41:22
WIN32APIの質問をしたいんですけど、いいですか?
821Omoti:2005/08/30(火) 13:49:41
RGSSというプログラムで、以下のコードをかきました。
目的の動作は、
「WEBブラウザーを起動して、こちらの指定のURLを表示する」
という、シンプルなものです。
ただ、起動するブラウザーのウインドウの数は、1個だけに制限するという仕様です
(いくつもウインドウが立ち上がるとメモリが足りなくなるため)

shellexecute = Win32API.new('shell32.dll','ShellExecuteA',%w(p p p p p i),'i')
shellexecute.call(0, 'open', 'http://www.google.co.jp/', 0, 0, 1)

このコードを実行すると、パソコンにゾーンアラームなどファイヤーウオールがはいっていると、
「RGSSというプログラムがネットに接続しようとしているが、許可するか?」
とでてきて、
「許可する」
を押すのですが、そのあとすぐに
「スクリプトがハングアップしました」
となってRGSSが強制終了してしまいます。
RGSSはrubyを元にして作った言語ですので、rubyのメーリングリストでも聞いてみましたが
「どうもRGSSのバグではないか」
という話になってますが、win32apiの立場から見て、どう思いますか。
822あぼ〜ん:2005/08/30(火) 13:50:18
あぼ〜ん
823デフォルトの名無しさん:2005/08/30(火) 14:02:43
>>821
RGSSの言語仕様知らんから、ShellExecuteの引数だけ確認したが問題ないと思う
RGSSのバグじゃまいか?
824デフォルトの名無しさん:2005/08/30(火) 15:04:55
Winの仕様だと思うが。
Cで書いたShellExecuteを呼ぶだけのプログラムでも、
なぜかそのプログラムがZoneAlarmにトラップされ一時停止するしな。

RGSS的にはShellExecuteから戻ってこない→ハングアップしますた。で問題ないと思うが。
825デフォルトの名無しさん:2005/08/30(火) 15:18:35
A BoneとかでリンクをクリックしてもなかなかIEに渡らないのはそのせい?
Ctrl+TabでIEをアクティブにするといきなり開くんだけど。
826デフォルトの名無しさん:2005/08/30(火) 15:19:11
ひょっとしてFWに捕まった後、次からはスルーされるように設定した後の話じゃなくて
FWに捕まったときの話なのか?それなら>>824だと思う
827デフォルトの名無しさん:2005/08/30(火) 17:01:21
>>815
セキュリティポリシーでctrl+alt+delキー不要にしたらダイアログ勝手に出てくるから
そのダイアログでシリアルポートポーリングするのは駄目か?
これもGINA変更が必要だけどそれ以外思いつきません。
828デフォルトの名無しさん:2005/08/30(火) 19:08:30
漢字入力を始めたときに飛んでくるWM_IME_STARTCOMPOSITIONなどを
監視して、以下のようなソフトを作りたいと思っています。
@ワード文書内において、
AIME入力、言い換えれば漢字入力を開始すると、
B入力された文字が確定されるまで、
C背景を薄いブルーにする、
というものです。

すでに私は、
ソリューションダイアログでWord.ObjectLibraryを参照するように設定することで、
@ワード文書に例えば文字列をinsertしたり、選択範囲を変更したりできるようになりました。
また、
自分のフォームに、テキストボックスから派生させたMyテキストボックスを
貼り付けて、そのMyテキストボックスに文字が入力されはじめたことを
ウィンドウメッセージとして取得できるようになりました。
具体的には、派生させたクラス(Myテキストボックス)のWndProcをOverrideして
m.MsgがWM_IME_STARTCOMPOSITIONかどうかを判定する機能を追加しました。

【質問】
しかしながら、Myテキストボックスでは「文字が入力されはじめたことを検知」する
機能を搭載することに成功したのですが、
ワード文書ではうまくいきません。とうかどうやるのかよくわかりません。
テキストボックスから、上記の機能を搭載したクラスを派生させるように、
例えば、Word.ApplicationやWord.Documentから派生クラスを用意して適宜同じように
WndProcをoverrideすればうまくいくでしょうか。
もっとも、Word.Applicationは、インターフェース型(?)ですが。

【質問2】
思いっきりすれ違いな予感もしますが、当方VisualC#2.0 beta2 , WindowsXPsp2,Word2000です。
よろしくお願いします。
829デフォルトの名無しさん:2005/08/30(火) 20:33:20
WORDのOLEはアウトプロセスだったはず。
DLL使ってフックしたりするしかないのではないかなぁ。
本質的には外のWORDを乗っ取るのと同じ事だから。
830789:2005/08/30(火) 20:40:28
>>819
>>827
仰られるあたりを踏まえて
色々やってみます。
ありがとうございます。
少し時間がかかると思いますが、
何かわかればまた報告に来ます。

831デフォルトの名無しさん:2005/08/30(火) 20:53:57
Rebarで、ウィンドウサイズ変更をすると、Gripとシェブロンの部分がちらつくんですが、
IEのようにちらつかないようにするにはどうすればいいのでしょうか?

よろしくお願いします。
832デフォルトの名無しさん:2005/08/30(火) 21:01:40
WTLのソースコードを参照
833831:2005/08/30(火) 21:44:55
>>832
今、最新のWTLのソースコードをGETして、何かサンプルアプリをビルドしてみましたが、
リバーのグリップが、ちらちきますね。

IEだと、まったくちらつかないんですよ。
たぶん、何か技があるとおもうのですが、ご存知な方はいらっしゃいませんか?

是非教えていただきたいと思いますが。
834デフォルトの名無しさん:2005/08/30(火) 21:45:54
(誤)リバーのグリップが、ちらちきますね。
(正)リバーのグリップが、ちらつきますね。
835デフォルトの名無しさん:2005/08/30(火) 22:53:12
試しにおいらの作ったWTL使用ソフトで試したけど、一切ちらつかないぜ
836831:2005/08/30(火) 23:05:49
それ、カスタマイズしてるんじゃないんですか?
僕が試したWTLは、ピュアなものですから。
837デフォルトの名無しさん:2005/08/30(火) 23:29:36
うちのピュアなWTLでもちらつかないぞ。
838デフォルトの名無しさん:2005/08/31(水) 01:28:52
プログラムの追加と削除にアンインストーラを入れる方法。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
にキー作って、タイトルとパラメータ入れるトコまでは解ったのですが、
アプリケーションサイズはどのように設定するのでしょうか?
839Omoti:2005/08/31(水) 01:47:22
>>821>>823-826

ハーフライフとか、市販のゲームでネットにはじめて接続しようとしたときに、
当然ゾーンアラームで検知されて、
「ハーフライフというゲームがネットに接続しようとしているが、許可するか?」
という、同じようなダイアログがでてきます。
でも、そのあいだ、ハーフライフはずーーとおとなしく「おあづけ」状態でおとなしく待っていて、
ゾーンアラームの「許可」のボタンを押した後に、何事もなかったように素直にゲームに復帰できます。
ところがRGSSはいったんゾーンアラームに処理が移ると、それでゲームごと強制終了してしまうんです。
スクリーンショットは画像はこんな感じです。
http://www.net24.ne.jp/~omoti/game-link/hangu-up.html
840デフォルトの名無しさん:2005/08/31(水) 02:37:15
FW切ってたらどうなるんだ?
841Omoti:2005/08/31(水) 02:39:43
>>840
そりゃーなんの問題もおこりませんよ
だれにもとめられないんですから
842デフォルトの名無しさん:2005/08/31(水) 05:56:54
RGSSが、時間の掛かるスクリプトを殺す仕様なんだろ。
843Omoti:2005/08/31(水) 06:52:32
>>842
それはちがうとおもいます
ネット上のURLを拾いに行かないで、
パソコン内のローカルなHTMLファイルを参照しながら
IEを起動するようにしたら、ゾーンアラームで検知しないので
IEが起動して、その起動したあとに、ネット上のURLを表示する
ようにしたら、そこではじめてゾーンアラームが検知して
「許可するか?」
という、ダイアログを出してきますけど、そこで
「ゆっくりと」
時間をかけて「許可する」のボタンをおしても
なんの問題もおこりません
つまり、「許可する」のボタンをおしたら、そのままゲームにもどって
プレイを続行できます。
844Omoti:2005/08/31(水) 06:56:14
>>843
>ネット上のURLを拾いに行かないで、
>パソコン内のローカルなHTMLファイルを参照しながら
>IEを起動する

これは具体的には、「readme.html」のようなファイルを別途、つくっておいて、
ゲームのフォルダの中につっこんでおいて、この「readme.html」を開くという
スクリプトを第一段階目で組んで実行するわけです

shellexecute = Win32API.new('shell32.dll','ShellExecuteA',%w(p p p p p i),'i')
shellexecute.call(0, 'open', 'readme.html', 0, 0, 1)

こういうふうに。そうすると、readme.htmlを読み込みながらIEが起動して、
IEのウインドウが開いたままの状態で今度は

shellexecute = Win32API.new('shell32.dll','ShellExecuteA',%w(p p p p p i),'i')
shellexecute.call(0, 'open', 'http://www.google.co.jp/', 0, 0, 1)

を実行します。するとすでにIEは開いているので、それ以上、わざわざIEを
開くという作業はなしで、いきなりhttp://www.google.co.jp/を既存のIEのウインドウで
開こうとして、ここでゾーンアラームが検知をしまして
「許可するか?」
という、ダイアログを出してきて、「許可する」を押すと、
そのまま何も問題なく、ゲームが続行できます。
845Omoti:2005/08/31(水) 07:07:09
こんどは別な質問です。
IEの
ツールTの中の、
インターネットオプションOの中の、
詳細設定の中の、
ブラウズの中の、
ショートカットを起動するためにウインドウを再利用する
の、チェックがどうなっているか、取得する方法はありますか?


846デフォルトの名無しさん:2005/08/31(水) 07:42:58
spy++でしらべれ
847デフォルトの名無しさん:2005/08/31(水) 08:45:32
>>845
HKCU\Software\Microsoft\Internet Explorer\Main\AllowWindowReuse
辺りじゃないか?
848Omoti:2005/08/31(水) 10:28:35
>>847
それってWin32apiの立場から、見えるんですか?
849デフォルトの名無しさん:2005/08/31(水) 10:33:08
>>848
Win32APIにレジストリの読み書きをする関数がないなんてありえない。
850Omoti:2005/08/31(水) 11:10:32
>>849
ということは、Win32apiをいじれるということは、
レジストリの読み書きもできると?
851Omoti:2005/08/31(水) 11:11:33
レジストリの読み書きができると、何か、面白いことができる?
852Omoti:2005/08/31(水) 11:12:46
他人のパソコンのレジストリを
読んだり
書いたり
変更したり
できると、何かおもしろいことができる?
853デフォルトの名無しさん:2005/08/31(水) 11:27:45
>>850
だからWin32APIの中にはレジストリを読み書きする関数が存在する。
じゃなきゃ俺達どうやってレジストリを扱えばいい。
854デフォルトの名無しさん:2005/08/31(水) 12:32:26
レジストリの読み書きはわざわざそれに特化した関数を使わなくてもCreateFile、ReadFile、WriteFile、CloseHandleでできると思うけどどうよ?
855デフォルトの名無しさん:2005/08/31(水) 12:48:31
Omoti死んでくれ
856デフォルトの名無しさん:2005/08/31(水) 12:49:07
無理だと思うけどどうよ?
857デフォルトの名無しさん:2005/08/31(水) 13:24:30
>>854
パスの指定ってどうやるの?
858デフォルトの名無しさん:2005/08/31(水) 14:36:34
フォントをラスタライズするAPIって無いですか?
文字列とパラメータ入れたら、ビットマップ配列が得られるような。
859デフォルトの名無しさん:2005/08/31(水) 14:43:41
>>858
そのままズバリのAPIはなかったと思う

CreateDIBSectionでHBITMAP作って、
それを関連付けたDCに文字列描画したら、
それと同じようなことが出来るんでない?
860デフォルトの名無しさん:2005/08/31(水) 14:43:47
>>858
GetGlyphOutline()
単純に、メモリDCに書けばいいという気もするが。
861859:2005/08/31(水) 14:45:15
ぐは、そんなのあったのか、撃つ出し脳
862デフォルトの名無しさん:2005/08/31(水) 14:48:14
>>858
そんぐらい作りなよ。
863デフォルトの名無しさん:2005/08/31(水) 14:54:41
答えの出た後にその頭の悪いレスは無いだろう
864858 :2005/08/31(水) 15:01:02
早速のご回答ありがとうございます。
そうか、DC使えばできるのか。
DCの実体というか、画素配列にダイレクトにタッチしたことないから
すっかり意識の外でした。

>>859
おお、なるほど

>>860
そうですね

>>862
そうします。
865858 :2005/08/31(水) 15:17:59

げふ、見落としていた
GetGlyphOutline()か、
>>860ありがとう
866デフォルトの名無しさん:2005/08/31(水) 17:02:07
インターネットのオプション ダイアログを開きたいんですが、APIはありますでしょうか?
C# のコードから開きたいのですが…
867デフォルトの名無しさん:2005/08/31(水) 17:15:54
ShellExecuteでinetcpl.cplとかじゃダメか?w
868866:2005/08/31(水) 17:42:03
ありがとうございます。目的のことができました>>867
869828:2005/08/31(水) 19:37:48
>>829
ご返答まことにありがとうございます。
そうですかぁ、WordObjectLibraryから検知するのは
難しいんですかぁ。

ならば、質問を変更させていただき、

Wordで未確定文字があるかないかを検知可能な手段は
ないでしょうか・・・??

なんていかがでしょうか。
僕もいろいろググってるんですけど、なかなか有益な情報に
たどり着けないで降ります。
よろしくお願いします。
870デフォルトの名無しさん:2005/08/31(水) 19:45:48
でもマルチポストは止めないんだな。
871デフォルトの名無しさん:2005/08/31(水) 20:42:42
telnetでtelnet先のプログラムを実行して
telnetを切断しても常駐させるにはどのようにしたらよいですか?
win2000 → win2000
872デフォルトの名無しさん:2005/08/31(水) 20:46:15
マルチポストが何か関係あるのか?
非難するにも論点を間違えてると大だらずにしか見えんけ
873デフォルトの名無しさん:2005/08/31(水) 20:58:18
マルチポストするような奴はカエレってことだろ
874828:2005/08/31(水) 21:07:08
ふらっとC#掲示板へも同じ内容で投稿させていただいてます。

正直、どっちに投稿すればいいのかわからないんです。
すみません。
875デフォルトの名無しさん:2005/08/31(水) 21:11:06
ダブルフォールトで確定だな
やっぱり大だらずか・・・
876デフォルトの名無しさん:2005/08/31(水) 21:33:51
質問以外に食いつくだけのヤツはカエレ

>>871
win同士じゃ無理かと
877デフォルトの名無しさん:2005/08/31(水) 21:37:48
モードレスダイアログって呼出し元と同一スレッドっていう認識でOK?
878デフォルトの名無しさん:2005/08/31(水) 21:40:10
は?
879デフォルトの名無しさん:2005/08/31(水) 21:52:39
>>877
OK
ノンプリエンプティブの範疇で論じることができる
880デフォルトの名無しさん:2005/08/31(水) 21:54:02
ダイアログボックスのエディットコントロールに入力した文字列
を親ウィンドウで受け取りたいのですが、どうすればいいんでしょうか。

EndDialog()では、int型しか返り値にできないみたいなんですが。
881デフォルトの名無しさん:2005/08/31(水) 21:57:32
>>880
EndDialogより前にSendMessage()やその他何らかの方法で親ウィンドウへ文字列を送ればいい。
あるいはアトム化すればEndDialog()で返すこともできるね。一般的な方法ではないだろうけど。
882828:2005/08/31(水) 22:07:32
this.AddOwnedForm(CViewWindow.Opener());
CViewWindow.Opener().Show();
883デフォルトの名無しさん:2005/08/31(水) 22:36:14
>>881
親ウィンドウのハンドルが取得できなくて困っています。
DialogBox()で指定してGetParent(ダイアログのハンドル)とやっても
失敗してしまいます。
884デフォルトの名無しさん:2005/08/31(水) 22:37:26
>>882
誤爆か?
885デフォルトの名無しさん:2005/08/31(水) 22:40:10
>>880
変数に入れたらアカンの?
886880:2005/08/31(水) 22:46:21
>>881
自己解決できました。
GetWindow()をつかったらうまくいきました。
887877:2005/08/31(水) 23:23:25
>>879
了解致しました。ありがとうございました!
888デフォルトの名無しさん:2005/08/31(水) 23:56:20
>>830
「Ctrl+Alt+Delを押せ」のダイアログはwinlogonが勝手に出してるわけじゃなくて、
WlxDisplaySASNoticeを呼び出してGINAに処理させている。
当然これはCtrl+Alt+Delを押す「前」に呼ばれるから、そこでダイアログを表示して
カードの挿入を検出したらWlxSasNotifyを呼ぶようにすればCtrl+Alt+Delを押さなくても
先に進める。もっと詳しくはこの記事でも読め
http://msdn.microsoft.com/msdnmag/issues/05/05/SecurityBriefs/
889デフォルトの名無しさん:2005/09/01(木) 04:32:38
ディスパッチの意義がよくわかりません。
某IT用語辞典によれば、リソースを割り当ててその優先順位がなんとら・・で
ああだからコンソールアプリはディスパッチが必要なかったのか程度しか理解できません。

誰か俺でもわかるようにお願いしますorz
890デフォルトの名無しさん:2005/09/01(木) 04:43:36
Dispatch自体はわりと一般名詞なんでどのDispatchについて聞かれてるのやら?
891デフォルトの名無しさん:2005/09/01(木) 11:38:14
マルチスレッドなプログラミングで、かつ、フックプロシージャを
複数インストールする場合(ローカルフック)、フックハンドルの
保存の仕方で良い定石みたいなのがあるんでしょうか?

普通にstatic変数で保存すると結構な数になってしまうもので…
892デフォルトの名無しさん:2005/09/01(木) 15:36:36
>>ALL
馬鹿にしないでください。それでわかるくらいなら質問しません。
893デフォルトの名無しさん:2005/09/01(木) 18:31:55
>>892
説明が下手でごめんなさいっ!
894デフォルトの名無しさん:2005/09/01(木) 18:33:26
ディスパッチま〜やの冒険
895デフォルトの名無しさん:2005/09/01(木) 19:25:38
メッセージのプロシージャへのディスパッチの事を自分的になり理解してきました・・・
いわゆるスレッドを作るときの関数指定と同じ事なんですね。

浅学ってのは無知と実感しますた('A`)..
896デフォルトの名無しさん:2005/09/01(木) 19:26:10
なんだ自分的になりって('A;:..:..
897デフォルトの名無しさん:2005/09/01(木) 20:10:31
いやむしろ俺は「浅学ってのは無知」に突っ込みたい。
そりゃそうだろと
898デフォルトの名無しさん:2005/09/01(木) 22:51:54
普通は浅学。
深学するのは、オタクだけ。
899デフォルトの名無しさん:2005/09/01(木) 22:53:08
ごめんワルカッタヨ
浅学は無知→浅学は罪と書きたかったんだorz
900デフォルトの名無しさん:2005/09/01(木) 23:34:00
>>891
SetProp
901デフォルトの名無しさん:2005/09/02(金) 01:33:36
またフックか・・・
902891:2005/09/02(金) 14:34:32
自己解決。スレッド・ローカル・ストレージで解決できそう。
903デフォルトの名無しさん:2005/09/02(金) 18:07:22
初心者質問スマタ
WindowsXP
C言語
BCC+BCCDeveloperでやっております。

char DataA[50];
char *DataB=(char *)malloc(50);

という二つのバッファを用意して

ReadFile()の第二引数に指定すると、DataBでは上手くファイルの内容を格納できるのですが
DataAではReadFile();関数は失敗し、GerLastError()でのエラーメッセージは
「メモリロケーションへのアクセスが無効です」となります。

この違いはなんなのでしょうか。よろしくお願いします
904デフォルトの名無しさん:2005/09/02(金) 18:14:31
休止状態からの復帰時にプログラムを実行させたいです。
常駐することなしにこれを実現したいのですが、どのようにしたらいいでしょうか。
よろしくお願いします。
905デフォルトの名無しさん:2005/09/02(金) 18:37:01
>>903
ソース出せ。&DataAとかやってたらヌッコロス。

>>904
やれやれだぜ。アビバへ行け。
906デフォルトの名無しさん:2005/09/02(金) 18:37:48
>>903
よくわからんが、↓の関係じゃねーの?
>読み書き操作用のバッファのアドレス(メモリ内のアドレス)を、ボリュームのセクタサイズの整数倍に整列(セクタ整列)させなければなりません。
907デフォルトの名無しさん:2005/09/02(金) 18:41:56
>>906
ReadFileにそんな必要無い
908904:2005/09/02(金) 18:45:07
>>905
浴び馬レベルでしたかorz すみません。
ただ、休止状態からの復帰なので、スタートアップやレジストリなどに書いても駄目でした。
何かヒントください(クレクレですみません)
909デフォルトの名無しさん:2005/09/02(金) 18:51:13
なにも常駐させずに、というのは無理だろ。
910デフォルトの名無しさん:2005/09/02(金) 18:56:39
>>904
不可能。
911デフォルトの名無しさん:2005/09/02(金) 19:07:58
>>907
そういわれてもMSDNにはそう書いてあるが
912デフォルトの名無しさん:2005/09/02(金) 19:09:45
>>911
プ
913デフォルトの名無しさん:2005/09/02(金) 19:12:30
ペ
914デフォルトの名無しさん:2005/09/02(金) 19:12:59
>>904
PBT_APMRESUMESUSPENDメッセージかな?

The PBT_APMRESUMESUSPEND event is broadcast as a notification
that the system has resumed operation after being suspended.
A window receives this event through the WM_POWERBROADCAST
message. The wParam and lParam parameters are set as described following.

繰り返すけど、常駐プログラムなしに検出するのは不可能。
ただ、レジュームを検出する常駐プログラム自体はメモリ、CPU使用率の面で羽のように軽くすることはいくらでもできる。
検出する以外なにもしないプログラムをかけばいいだけ。
レジュームイベントを検出したら、何らかの方法で実行したいプログラムを外部から動的に呼び出す。
呼び出す手法は、
簡単なのではShellExecuteでexeファイルをキック。
あるいはDllで実装したのを呼び出す。
COMを使ってコンポーネントとして実装したのを呼び出す。など
915デフォルトの名無しさん:2005/09/02(金) 19:13:01
ポ
916デフォルトの名無しさん:2005/09/02(金) 19:16:47
>>911
>FILE_FLAG_NO_BUFFERING フラグを指定してファイルを開いた後、
>そのファイルの作業を行う場合、アプリケーションは次の各要件を満たさなければなりません。

まぁ、質問者がこのフラグを指定しちゃってる可能性もゼロじゃないけどさ・・・
917>>903:2005/09/02(金) 19:28:37
>>905,>>906,>>907

ありがとうございます。色々試していました。が、やはりできません。
FILE_FLAG_NO_BUFFERINGは指定していないです。

char DataA[32000];

hFile=CreateFile(
"a.txt",//ハンドルを得るファイル名
GENERIC_READ,//読み取りアクセス
0,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL
);

ReadFile(
hFile,//内容を読み取るファイルのハンドル
DataA,//読み込んだ内容を格納するバッファ
32000,//読み込むバイト数
&readsize,//読み込んだバイト数を格納する
NULL
)

という感じです、遅れてすいません
918デフォルトの名無しさん:2005/09/02(金) 19:30:29
>>916
すまない、見落としてた・・・
919デフォルトの名無しさん:2005/09/02(金) 19:36:35
>>917
あ、わかった。
char DataA[32000];  
         ↑これが原因。
スタックメモリにはこんなにたくさん確保できないんでしょう。

ヒープにしなきゃだめ。

920デフォルトの名無しさん:2005/09/02(金) 19:38:19
追記。
ためしに、
char DataA[32000];
for (int i=0;i < 32000;i++)
DataA[i] = 0;
てやってみ。
アクセスエラーでるから。
921デフォルトの名無しさん:2005/09/02(金) 19:39:25
高々32KB弱でダメかなぁ……

>>917
処で、readsizeの宣言はどうなっている?
#いや、念の為だ。
922920:2005/09/02(金) 19:43:44
すまん。やっぱ違うな。
確かに32kぐらいではアクセスエラー起きんわな。

すまん。
923デフォルトの名無しさん:2005/09/02(金) 19:48:10
俺の環境では65536でも平気だが。
普通にスタックメモリから65536ぐらい取ってるぞ。
スタックから取れば手動で開放する必要ないし宣言した量以上入れない限りバグも起きにくい。
924デフォルトの名無しさん:2005/09/02(金) 19:54:31
>>921
DWORDか、unsigned long以外で宣言しててもコンパイルでエラーが出るはずだが

>>922
デフォルトだと1Mだな、スタックは
ただ、>>917がスタックサイズを変えてなければ、だが
925デフォルトの名無しさん:2005/09/02(金) 19:56:27
ちょっとこの情報だけでは特定できんな。
なにかの拍子にDataAのスタックが壊れてるとか。
実はリビルドしたら直ってました、とかいうオチとか。
どうせwhileループかなんかで囲ってるんだろうけど
適切なループ処理ができてないとか。
いろいろあるからな。
926デフォルトの名無しさん:2005/09/02(金) 20:04:08
>>903
関数丸ごとUP
927電車男903:2005/09/02(金) 21:08:55
おまいら・・みんなありがとう

じゃなくて本当にすいませんでした・・
わかりました。。

失敗していたときは
第三引数で指定した値より小さいバッファを渡していました。。

最初のmallocで確保か、配列として定義か〜〜
という時点でどちらもバッファのサイズが小さかったのですが
mallocの時はReadFileが失敗しない事が原因でした。

すいませんでした!
しばらく沈没してますです。。
928デフォルトの名無しさん:2005/09/02(金) 21:46:29
沈没しなくていいから解決した喜びを味わいつつ今夜のオナヌーのおかずを探しとけ
929電車男903:2005/09/02(金) 22:00:07
は・・はひ、隊長・・
930デフォルトの名無しさん:2005/09/02(金) 22:05:38
なんか脱力感だけが残るな。
931デフォルトの名無しさん:2005/09/02(金) 22:56:52
マウスポインタを2つに増やしたいんだけぢ、無理だよね?
932デフォルトの名無しさん:2005/09/02(金) 22:57:39
うん
933デフォルトの名無しさん:2005/09/02(金) 22:57:46
>>931
お前なんで俺が痔だって知ってるんだよ
934デフォルトの名無しさん:2005/09/02(金) 23:01:06
>>931
ちょっと違うがこんなスレもある
http://pc8.2ch.net/test/read.cgi/win/1051007557/
935デフォルトの名無しさん:2005/09/03(土) 00:10:56
>>934
おおすごい。.NET2005でXP専用か。
VC5では作れないのかな。
936デフォルトの名無しさん:2005/09/03(土) 07:49:58
937デフォルトの名無しさん:2005/09/03(土) 11:08:35
8月初めあたりから、WTLを勉強してたんですが、
MFCよりWTLのほうが明らかに使いやすいですね。

いまだにMFCで開発とかされてるけど、やっぱMFCの人気はあるのかな?
938デフォルトの名無しさん:2005/09/03(土) 11:36:22
WTLってやっぱりマイナーだからな
会社なんかが使ってたら使わざるを得ないし
漏れ1人だけWTL使うぜ!って訳にはいかない罠
939デフォルトの名無しさん:2005/09/03(土) 11:53:09
会社なんかじゃトラブルへの対応や新入社員への教育やらを考えると新しいものを習熟するより
古くても熟知してるものを使う方がコストが低く済むだろうからねぇ。
940デフォルトの名無しさん:2005/09/03(土) 11:56:29
でも、MFC好きな人っているのかな?
941デフォルトの名無しさん:2005/09/03(土) 11:58:55
そりゃまあいるだろう。好みは人それぞれだし。
俺は駄目だが。
942デフォルトの名無しさん:2005/09/03(土) 12:10:26
WTLじゃイベント追加する時とかにIDEの自動追加機能とか使えないからなあ
943デフォルトの名無しさん:2005/09/03(土) 12:50:03
IDEが勝手にC++のコードを生成するのって、なんかなじめないんだけど。
944デフォルトの名無しさん:2005/09/03(土) 13:09:10
なぜapiと全然関係ない話をする。
>>1を読め
945デフォルトの名無しさん:2005/09/03(土) 13:25:10
>>944
空気嫁
946デフォルトの名無しさん:2005/09/03(土) 13:47:34
空気なんか知るか!
947デフォルトの名無しさん:2005/09/03(土) 14:16:56
XPでタスクトレイのスピーカークリックしたときに出るボリューム調整の小さいウィンドウを
トグル表示するAPIありませんか?どうも見つからなくて
948947:2005/09/03(土) 14:30:23
自己解決しました。
sndvol32.exe /r or /t or /sという表記をみつけ、/tで実行したらマウス位置にポップアップされました
949デフォルトの名無しさん:2005/09/03(土) 14:41:44
32bppのアルファチャネル付きアイコンについての質問です。
LoadImageなどで、得たHICONから、
8bppのアルファチャネルのデータを得る方法ってありますか?
GetIconInfoのICONINFO.hbmMaskだと、1/0の2階調しか得られません。

LoadImageしたHICONをDrawIconすると、256階調アルファで
レンダリングされるので、内部では8bppのアルファを持ってると思うんですが。
950Omoti:2005/09/03(土) 15:33:35
しつもん
本屋でwin32apiの本を立ち読みしてたら(カネは払わない)
「win32apiを使うとメモリ操作ができるよ」
って書いてあったのですが、メモリ操作ができると、
どういう楽しいことができるの?
951デフォルトの名無しさん:2005/09/03(土) 15:36:37
一般保護例外で死ねる。
952Omoti:2005/09/03(土) 15:41:38
              >>951
ほかには?
953デフォルトの名無しさん:2005/09/03(土) 15:43:09
ゲームのステータス書き換えてウハウハ
954デフォルトの名無しさん:2005/09/03(土) 15:46:13
ソフトのクラックができる
955デフォルトの名無しさん:2005/09/03(土) 15:58:32
バッファオーバーフロー脆弱性が実装できる。
956デフォルトの名無しさん:2005/09/03(土) 15:59:36
>>955
流行の"脆弱性"を実装できるのか。
それはいいな。
957デフォルトの名無しさん:2005/09/03(土) 16:05:51
>>949
hbmColorのほうにアルファ情報込みで入ってる
hbmMaskは非対応のディスプレイドライバでも
2階調の透過はできるようにするために入ってるだけ。
958デフォルトの名無しさん:2005/09/03(土) 17:43:38
>>936
同時に両方動かせないやん
959Omoti:2005/09/03(土) 19:52:08
しつもん
win32apiって本はあんまり出てないけど
MSDNとかって言うのを見れば全部のってるの?
それは、無料でみれるの?
960デフォルトの名無しさん:2005/09/03(土) 19:53:27
英語版MSDNなら大体全部載ってる
961Omoti:2005/09/03(土) 19:53:33
 ちなみにVB4はもってます
これでみれるの?
962Omoti:2005/09/03(土) 19:54:33
いま、shellexcuteっていう関数について調べてるんです
963デフォルトの名無しさん:2005/09/03(土) 19:55:32
大文字と小文字の区別をちゃんとしようぜ
964Omoti:2005/09/03(土) 19:55:48
わかったeが抜けてるから検索できないんだ
shellexecute
965Omoti:2005/09/03(土) 19:56:21
>>963
どして?
case sensitvieなの?
966デフォルトの名無しさん:2005/09/03(土) 19:57:26
Omotiウザス
967デフォルトの名無しさん:2005/09/03(土) 19:58:11
>>965
大文字小文字区別しないような言語でもAPI関数だけは必ず区別されるから
968デフォルトの名無しさん:2005/09/03(土) 21:04:11
>>966

// for Jane View
設定(&O);
設定(&O);
機能.あぼーん.NGName << "Omoti";
969デフォルトの名無しさん:2005/09/04(日) 13:52:56
NG登録完了
970デフォルトの名無しさん:2005/09/04(日) 13:57:07
Omotiちゃんは女の子だからやさしくしてやれよ。
971デフォルトの名無しさん:2005/09/04(日) 14:04:15
いい歳してこんな稚拙なコミュニケーション能力しか持ってない人間がこの世にいるなんて思いたくない
972デフォルトの名無しさん:2005/09/04(日) 14:18:50
>>971
人類全体を相手に何故そんな夢を持つ?
973デフォルトの名無しさん:2005/09/04(日) 14:24:06
何故人類全体とか夢とかスケールを大きくするw
974デフォルトの名無しさん:2005/09/04(日) 17:27:53
>>973
>>971の文章が幼稚で変な使い回しするからだろう
975デフォルトの名無しさん:2005/09/04(日) 17:30:11
>>973
「…人間がこの世に…」となればその規模だろ。
976デフォルトの名無しさん:2005/09/04(日) 19:24:58
どぉでもいい
977デフォルトの名無しさん:2005/09/04(日) 20:07:48
↑照れ隠し



それより次スレは?
978デフォルトの名無しさん:2005/09/04(日) 21:32:48
どぉでもいい
979デフォルトの名無しさん:2005/09/04(日) 21:49:38
むしろどぉでもいい
980デフォルトの名無しさん:2005/09/04(日) 22:17:34
次スレ(゚听)イラネ
981デフォルトの名無しさん:2005/09/04(日) 22:47:04
>>980
おいおい、Win32APIのスレは需要大だろ。
むしろ、C/C++関連のスレで一番需要があると思うね。
C/C++の言語仕様に関する質問は解説書が充実しているのでわざわざ質問するのもあほらしいが、
Win32APIは決定版というべき解説書がないし、独特なクセもあるし。
982デフォルトの名無しさん:2005/09/04(日) 22:48:24
>>981
スレ立てよろ
983デフォルトの名無しさん:2005/09/04(日) 22:51:38
>C/C++関連のスレ
984デフォルトの名無しさん:2005/09/04(日) 22:57:51
ここってC/C++関連のスレなのか
985デフォルトの名無しさん:2005/09/04(日) 22:59:27
まぁ、世の中にはC/C++、Win32API、VisualC、MFCの区別がつかない奴もいるわけで。
986デフォルトの名無しさん:2005/09/04(日) 23:04:43
こんばんわ、質問があります。
環境C++6.0 windowsxp
今、ハードディスクやCDの容量を調べるプログラムを組んでいます。
GetDiskFreeSpaceExをつかって、ハードディスクの使用量と空き容量は入手できたのですが、
焼かれたCDの空き容量が0になってしまうのです。マイコンピュータのCDドライブのところから、
プロパティを開くと空き容量が表示されるのですが、プログラムでそれを入手することが出来ないのです。
基本的な質問ですが、知恵をお貸し願えませんでしょうか?
よろしくお願いします。
987デフォルトの名無しさん:2005/09/04(日) 23:09:34
マルチ氏ね
988デフォルトの名無しさん:2005/09/04(日) 23:17:32
>>986
belutionとかにも書いてるだろヴォケ
989デフォルトの名無しさん:2005/09/04(日) 23:57:42
>>986
それどんなCD-Rなんだ?

たまたま手元に、埋まってないpacket write(B's CLIP)のCD-Rがあったんで
試してみたが、普通に空き容量取れたよ@Win2k
session closeしたCD-Rだと空き容量ゼロ。当然だけどな。
普通のCD-ROMも当然空き容量ゼロ。

ULARGE_INTEGERの使い方とか間違えてHI DWORDしか読んでないとかいう
つまんない落ちじゃないよね?
990デフォルトの名無しさん:2005/09/05(月) 00:16:31
質問です。
アニメーションなどの画像の重なりによるちらつきをなくしたいのですが、
ウィンドウを固定にし、画面外に重ねる画像を表示して
画面内にコピーするというアイデアを思いついたのです。
しかしBitBltのSRCCOPYだと写ってはいないけれど、
画面外の領域を指定すると、そのまま画面外(ウィンドウの外)
のものがコピーされてしまいます。
多少強引で構わないので、擬似的にダブルバッファリングのような
ことはできませんか?
991デフォルトの名無しさん:2005/09/05(月) 00:20:54
>>990
ヒント: メモリDC
992デフォルトの名無しさん:2005/09/05(月) 00:40:37
なんで擬似的?
993Omoti:2005/09/05(月) 01:11:26
Win32API質問箱 Build35
http://pc8.2ch.net/test/read.cgi/tech/1125850096/

つぎすれ
994デフォルトの名無しさん:2005/09/05(月) 01:39:11
Omoti 透明化完了
995デフォルトの名無しさん:2005/09/05(月) 01:49:57
つぎすれよりネクスレの方良くない?
996デフォルトの名無しさん:2005/09/05(月) 01:53:48
とりあえず梅
997デフォルトの名無しさん:2005/09/05(月) 02:18:44
UME
998デフォルトの名無しさん:2005/09/05(月) 02:19:42
0x3E6
999デフォルトの名無しさん:2005/09/05(月) 02:20:13
0x3E7
1000デフォルトの名無しさん:2005/09/05(月) 02:21:24
0x3E8だったら秀丸超えるテキストエディタ作る
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。