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

Win32API質問箱 Build33

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

  ∧_∧
 ( ´∀`) < 0x20

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

■注意
・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう
・日本語版MSDN Online Libraryは不完全です。英語版(http://msdn.microsoft.com)の利用推奨
・APIフックなど高度な事をしたい場合はできるだけAdvencedWindowsを読みましょう
・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで
0002デフォルトの名無しさん2005/07/01(金) 02:50:39
-前スレ
Build32:http://pc8.2ch.net/test/read.cgi/tech/1117271829/
0003デフォルトの名無しさん2005/07/01(金) 02:51:19
-過去スレ
Build31:http://pc8.2ch.net/test/read.cgi/tech/1114762194/
Build30:ttp://pc8.2ch.net/test/read.cgi/tech/1112345886/
Build29:ttp://pc8.2ch.net/test/read.cgi/tech/1110281860/
Build28:ttp://pc5.2ch.net/test/read.cgi/tech/1108199304/
Build27:ttp://pc5.2ch.net/test/read.cgi/tech/1106103119/
Build26:ttp://pc5.2ch.net/test/read.cgi/tech/1104109858/
Build25:ttp://pc5.2ch.net/test/read.cgi/tech/1101393155/
Build24:ttp://pc5.2ch.net/test/read.cgi/tech/1098967135/
Build23:ttp://pc5.2ch.net/test/read.cgi/tech/1095534704/
Build22:ttp://pc5.2ch.net/test/read.cgi/tech/1092524669/
Build21:ttp://pc5.2ch.net/test/read.cgi/tech/1090422324/
Build20:ttp://pc5.2ch.net/test/read.cgi/tech/1088140233/
Build19:ttp://pc5.2ch.net/test/read.cgi/tech/1084697545/
Build18:ttp://pc5.2ch.net/test/read.cgi/tech/1081702990/
Build17:ttp://pc5.2ch.net/test/read.cgi/tech/1077470361/
Build16:ttp://pc2.2ch.net/test/read.cgi/tech/1073830065/★
Build15:ttp://pc2.2ch.net/test/read.cgi/tech/1069339866/★
Build14:ttp://pc5.2ch.net/tech/kako/1065/10653/1065328397.html
Build13:ttp://pc5.2ch.net/tech/kako/1059/10595/1059549320.html
Build12:ttp://pc5.2ch.net/tech/kako/1056/10560/1056033645.html
Build11:ttp://pc5.2ch.net/tech/kako/1052/10526/1052651750.html
Build10:ttp://pc5.2ch.net/tech/kako/1047/10478/1047819779.html
Build9:ttp://pc5.2ch.net/tech/kako/1044/10449/1044929160.html
Build8:ttp://pc5.2ch.net/tech/kako/1040/10409/1040964626.html
Build7:ttp://pc3.2ch.net/tech/kako/1036/10366/1036654893.html
Build6:ttp://pc3.2ch.net/tech/kako/1032/10325/1032548635.html
Build5:ttp://pc3.2ch.net/tech/kako/1028/10285/1028580373.html
Build4:ttp://pc3.2ch.net/tech/kako/1023/10233/1023361418.html
Build3:ttp://pc.2ch.net/tech/kako/1017/10170/1017072275.html
Build2:ttp://pc.2ch.net/tech/kako/1006/10067/1006783012.html
Build1:ttp://pc.2ch.net/tech/kako/991/991576947.html
0004デフォルトの名無しさん2005/07/01(金) 02:51:51
- MSDN Online
http://www.microsoft.com/japan/msdn/
- 猫でもわかるプログラミング
http://www.kumei.ne.jp/c_lang/
- Platform SDK Update
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/
- Google
http://www.google.com/

Win32 API入門
http://wisdom.sakura.ne.jp/system/winapi/
Win32 プログラミング入門
http://www7.plala.or.jp/keny01/windows/win32/
Win32 SDK Programming
http://usr_vogel.at.infoseek.co.jp/Win32SDK/

■書籍
Advanced Windows
http://www.amazon.co.jp/exec/obidos/ASIN/4756138055
0005デフォルトの名無しさん2005/07/01(金) 02:52:48

- WindowsR Server 2003 SP1 Platform SDK Full Download
http://www.microsoft.com/downloads/details.aspx?familyid=EBA0128F-A770-45F1-86F3-7AB010B398A3&displaylang=en
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/XPSP2FULLInstall.htm
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/psdk-full.htm
0006デフォルトの名無しさん2005/07/01(金) 02:59:57
>>1 乙!
0007デフォルトの名無しさんNGNG
前スレの1000が素敵すぎるw
0008デフォルトの名無しさん2005/07/01(金) 05:51:56
>>1
乙
だけど

( ´∀`) < 0x21
0009前スレ12005/07/01(金) 06:31:34
>>6>>8
何で俺には乙って言ってくれなかったんだ
0010デフォルトの名無しさん2005/07/01(金) 07:36:28
真の功労者というものは、手柄を主張しないのだ
0011デフォルトの名無しさん2005/07/01(金) 12:10:38
ローカルのHDDに長いファイル名が記録されると、エクスプローラなどではリネーム
できなくなる事があります。環境はWindows XPSP2、NTFSです。

そういう場合私はネットワークで繋いで、ネットワーク側のコンピュータからリネーム
する事で回避しています。

ところで、どうしてネットワークで繋ぐと、ローカルでリネームできなかった長いファイル名
もリネーム可能なのでしょうか?これを利用して、ローカルでリネームできなかった
ファイル名をリネームするプログラムを作ろうと思っているのですが、使用すべきAPIが
分からず困っています。

どなたかご指導ご鞭撻の程よろしくお願いいたします。
0012デフォルトの名無しさん2005/07/01(金) 12:14:51
すいません
質問ですが、構文エラー : ')' が 'constant' の前に必要です。というエラーが出ますが、
このようなエラーが出る主な原因は何なのでしょうか?

よろしくお願いします。
0013デフォルトの名無しさん2005/07/01(金) 12:21:03
>>12
スレ違いっぽいが、) のバランスが取れてないだけだろ。
0014デフォルトの名無しさん2005/07/01(金) 12:21:16
打ち間違い。文法的に許されない書き方をしようとした。
0015122005/07/01(金) 12:31:36
ソースを単独でコンパイルすると、エラーは出ないのですが、
クラス継承をするとそのようなエラーが出ます。
0016デフォルトの名無しさん2005/07/01(金) 12:33:39
>>11
ふつうのファイル名記法(C:\〜)とUNC記法(\\host\〜)で、扱えるファ
イル名長が違うんじゃなかったっけ。
0017デフォルトの名無しさん2005/07/01(金) 13:00:25
>>16
なるほど。調べてみます。ありがとうございます。
0018デフォルトの名無しさん2005/07/01(金) 13:13:49
>>17
リネイムのためだけにセキュリティレベルを下げたりネットワーク負荷をかけたりするわけ?
そんなことよりも的確にアクセスできる手段を探した方が医院で内科医?
0019デフォルトの名無しさん2005/07/01(金) 13:14:08
>>12
マルチすなや。
0020デフォルトの名無しさん2005/07/01(金) 13:19:14
>>18
実はそのためなんです。ネットワーク経由ですとどうしてもセキュリティに不安が
残ります。

なるべくローカルだけでやりたいのです。まあ、自分自身のフォルダを秘密のワーク
グループに参加させれば、ローカルだけでリネームできそうなんですが、それも危ないですし。
0021デフォルトの名無しさん2005/07/01(金) 13:31:40
MoveFile(Ex)A で文字列長が MAX_PATH 超えただけなんじゃ?

>>16
通常記法で MAX_PATH、UNC記法だと 32,000 [wide]
0022デフォルトの名無しさん2005/07/01(金) 13:36:03
>>21
多分それですね。ネットワーク経由で書き込まれたファイルだと思います。
UNC記法でリネームするようにしてみます。ありがとうございました。
0023デフォルトの名無しさん2005/07/01(金) 13:36:36
>>20
その問題のファイルに到達するまでの途中のディレクトリのジャンクションを作成したらどうでしょ。
いずれにしても、なんか方法はありそうですがねぇ。
0024232005/07/01(金) 13:37:55
普通にUNCでいいのか。蛇足になってしまったw
0025デフォルトの名無しさん2005/07/01(金) 13:48:47
>>23>>24
いえ、ディレクトリが深いわけじゃありませんので。
単純にファイル名が長いのです。
0026デフォルトの名無しさん2005/07/01(金) 13:54:07
ざっくり grep してみたけど、MAX_PATH は 260 文字なんだが、、本当にそんなオーダーのファイル名なのか?
GetLastError() なりして、リネーム失敗する要因を追跡したほうが良さそうなキガス
0027デフォルトの名無しさん2005/07/01(金) 13:58:10
>>26
はい、本当に長かったです。500文字ほどありました。
0028デフォルトの名無しさん2005/07/01(金) 13:59:15
ついでに、エクスプローラによるドラッグドロップや、コピー、移動、削除、
どれも出来ませんでした。ネットワーク経由時(UNC記法使用時)にのみ、
それらの操作が可能になります。
0029デフォルトの名無しさん2005/07/01(金) 14:52:42
どういう思考回路をすれば、500文字もあるファイル名を付けるんだろう?
0030デフォルトの名無しさん2005/07/01(金) 14:56:05
現在のデスクトップが、
アプリケーションデスクトップなのか、
スクリーンセーバーデスクトップなのか、
Winlogonデスクトップなのかを調べるには
どの辺のAPIを使用すればいいのでしょうか?
0031デフォルトの名無しさん2005/07/01(金) 15:09:58
MAX_PATHはファイル名じゃなくて絶対パスの最大文字数だから、
260文字という制限は意外と短いような気がする。
0032デフォルトの名無しさん2005/07/01(金) 15:32:09
だが実際ファイル名の規定サイズも260程度
0033デフォルトの名無しさん2005/07/01(金) 16:02:41
そういうファイルを消す場合って、
9xならWININIT.INIで、
NTならMoveFileEx()でいけるんじゃない?
0034デフォルトの名無しさん2005/07/01(金) 16:32:12
消すだけなら、コマンドプロンプトから、dir /x で表示された短いファイル名で
delすれば消える。APIの話じゃないけど。
0035デフォルトの名無しさんNGNG
>>11
別にプログラム作らなくても、エクスプローラのアドレスバーに

\\自分のコンピュータ名\パス

と打ち込めばいいんでねーの?
0036デフォルトの名無しさん2005/07/01(金) 16:53:48
>>35
オレは500文字にも及ぶファイル名を付けること自体が間違っていると思う。
0037デフォルトの名無しさん2005/07/01(金) 17:15:24
俺は問題の本質が見えていない>>36が一番間違っていると思う。
0038デフォルトの名無しさん2005/07/01(金) 17:19:35
問題の本質ってなんだろう。

UNCならはるかに長いパス名を許可してるってことは
MAX_PATHがディレクトリエントリの長さの実質の制限にはなっておらず
カーネルレベルではもっとディレクトリエントリにもっと長い名前を
許してるってことだよな

なら、UNCパスじゃないときに勝手に切り詰めてる一部APIの仕様がガンなだけだろ
0039デフォルトの名無しさん2005/07/01(金) 17:23:13
ウンコパス
0040デフォルトの名無しさん2005/07/01(金) 17:24:34
クイズ:

GetClientRect(hwnd, &rect);
cX = rect.right - rect.left;
cY = rect.bottom - rect.top;
SetMapMode(hdc, MM_ISOTROPIC);
SetWindowExtEx(hdc, 276, 72, NULL);
SetViewPortExtEx(hdc, cX, cY, NULL);
SetWindowOrgEx(hdc, 138, 36, NULL);
SetViewPortOrgEx(hdc, cX/2, cY/2);

はどうなるか
0041デフォルトの名無しさん2005/07/01(金) 17:25:06
名無の回答例:

任意の論理座標を(x, y)とおき
その座標に対応する
デバイス座標をそれぞれ(x', y')とすると

WindowOrgが(138, 36)
スケール率が
x軸方向cX/276
y軸方向cY/72
ViewPortOrgが(cX/2, cY/2)より

論理座標x, yに対応する
デバイス座標x', y'がそれぞれ

x' = (x - 138) * (cX/276) + cX/2
y' = (y - 36) * (cY/72) + cY/2

ここで知りたいのは、
実は座標の変換によりオフセットがどうなるのか、なので
簡単のためスケール率1,
つまりcX == 276, cY == 72とすると

x' = (x - 138) * 1 + 138
y' = (y - 36) * 1 + 36

x' = x
y' = y
あれ?
0042デフォルトの名無しさん2005/07/01(金) 22:57:02
http://www.microsoft.com/japan/msdn/library/ja/jpfileio/html/_win32_movefile.asp
>Windows NT/2000:この関数の ANSI 版では、名前は最大 MAX_PATH 文字に制限されています。
>この制限をほぼ 32,000 ワイド文字へ拡張するには、この関数の Unicode 版を呼び出し、
>パスの前に "\\?\" という接頭辞を追加してください。詳細については、
>MSDN ライブラリの「File Name Conventions」(ファイル名の規則)を参照してください。
0043デフォルトの名無しさん2005/07/02(土) 00:53:21
エディットコントロールで選択範囲の文字列を取得するにはどうすればいいですか?
直接的にそういうことをする関数やメッセージが見つからず、
GetWindowText でぜんぶの文字列を取得して、
EM_GETSEL で得た位置情報から文字列を切り出す、という方法しか思いつかないのですが
それだと無駄にメモリを確保しなければならないので非効率な気がします。
0044デフォルトの名無しさん2005/07/02(土) 00:55:28
無理
0045デフォルトの名無しさん2005/07/02(土) 00:58:51
WM_COPY 投げてクリップボード経由で取得する… のもメモリ無駄になる?
0046デフォルトの名無しさん2005/07/02(土) 01:06:15
クリップボードの内容が壊れる
0047432005/07/02(土) 01:58:47
むむむ、無理っすか。ありがとうございました。
0048デフォルトの名無しさん2005/07/02(土) 07:07:09
質問です

1・C言語の後、WINDOWSプログラムを勉強しているのですが
いまさらながらAPIというのが何の事かよく分かっておりません
createwindow関数やgetmessage関数、BOOL型やCOLOREREF型、RGBマクロ等
を使ってプログラミングすることが
APIを使ってWINDOWSプログラムを作る ということなのでしょうか?

2・関数(例えばDialogBoxParam等)とマクロ(例えばDialogBox等)
の区別が分かりません、どう違うのでしょうか?

宜しくお願いします
0049デフォルトの名無しさん2005/07/02(土) 07:36:42
>>33
9xではそもそもMAX_PATHを超えるファイル名は作れない
0050前スレ8522005/07/02(土) 08:03:27
>>前スレ853
おお!これわかりやすいですね!どうもありがとうございました!なんでこんないいものがアーカイブ入りに・・・
このインターフェース、NT系でも使えますよね?

>>前スレ854
ないですか・・・

>>前スレ856
ああっそうだった!間違えました・・・

でも結局動かない・・・MSDNの記述は何だったのか・・・

あと、2番目のソースも
if (hVWin32 == NULL){
じゃなくて
if (hVWin32 == INVALID_HANDLE_VALUE){
でした・・・

みなさん、ありがとうございました。
0051デフォルトの名無しさん2005/07/02(土) 08:29:12
>>43
EM_EXGETSEL で選択範囲を得て長さを求め、その領域を取って、
EM_GETSELTEXT で文字列を得るってのはダメなのかなあ。
0052デフォルトの名無しさん2005/07/02(土) 08:39:42
>>48
釣られ覚悟で簡単にレスする。
C言語のプログラムはまさか main() 1つだけのばっかりを作ってはいないよね。
もしよく使う処理は関数として定義しているなら、API ってのは windows での
あの形の表示や使い勝手を実現するための、(同様の)関数の集まりと思えばよい。
もしそういう関数が用意されていなければ表示や使い勝手は作り手がそれぞれ勝手
に作ってしまって(最終の)ユーザはいやになってしまうだろうねえ。
0053デフォルトの名無しさん2005/07/02(土) 09:01:53
>>30
OpenInputDesktopとGetUserObjectInformation
0054デフォルトの名無しさん2005/07/02(土) 09:15:00
>>48
マクロは#defineで作られているもの。
プリプロセッサで置換される。
0055デフォルトの名無しさん2005/07/02(土) 09:21:47
序数インポートって大丈夫なんでしょうか?
DLLのバージョンが変わると正しくインポートできなくなる可能性はないのでしょうか?
0056デフォルトの名無しさん2005/07/02(土) 09:28:58
>>55
もちろん可能性はいくらでもある。
0057デフォルトの名無しさん2005/07/02(土) 10:28:53
>>50
>このインターフェース、NT系でも使えますよね?
もちろん無理。
使えるのならrwfdみたいにわざわざ処理を分ける必要なんてない訳だし。

>でも結局動かない・・・MSDNの記述は何だったのか・・・
日本語版MSDNの翻訳ミス。英語版に「代わりに、次の手順に従ってください。」とは
書かれていない。字下げもも間違っているせいで意味が全く違っている。
0058デフォルトの名無しさん2005/07/02(土) 11:05:17
>>55
とりあえずAPIは序数インポートしたらダメ(Win9xの隠しAPIを使うのでもない限り)
可能性があるどころでなく現に変わりまくってる
エクスポートするDLLを全部自分で管理できるのでなければやらないほうがいい
0059デフォルトの名無しさん2005/07/02(土) 12:57:25
mciSendString関数に関する質問です。
この関数で再生可能な音楽形式って、mp3,wav,midi の他になにかありますでしょうか。
それとも音楽形式に関してはこれだけなんでしょうか。
0060デフォルトの名無しさん2005/07/02(土) 12:59:44
質問です。vctoolkitで
cl p1.cpp /link user32.lib gdi32.lib glibv32.lib
というコマンドを打ってみたのですが、エラーが出てコンパイル、リンクができません。
どうしたらコンパイル、リンクが出来るのでしょうか?
PlatForm SDK 2003 Server は入っています
0061デフォルトの名無しさん2005/07/02(土) 13:07:34
>>60
スレ違い
0062デフォルトの名無しさん2005/07/02(土) 13:20:12
>>59
CODEC依存。特定のファイル扱うなら無圧縮/ADPCM圧縮あたりのwav、MIDIシーケンス(SMF)以外は避けた方が無難。
Win95じゃmp3は使えないぞ。(OSR2は知らん)
0063592005/07/02(土) 13:28:54
>>62
どうもアドバイスありがとうございます。
Win95にはmp3のCODECがないわけですね。
全部のOSのバージョンで使えるようにする場合は、wavとmidiのみにした方が無難ということなんですね。
勉強になりました。どうもありがとう。
0064デフォルトの名無しさん2005/07/02(土) 17:46:07
MS謹製のやつでも序数インポートしてるスタブ、結構あるよな
MFCのDLLとかもそうじゃなかったか
0065デフォルトの名無しさん2005/07/02(土) 22:49:24
日本語版MSDNライブラリのURLが変更になっているな。
http://msdn.microsoft.com/library/ja/
0066デフォルトの名無しさん2005/07/03(日) 02:11:20
BccDeveloperの様な他のコンソールアプリの出力が、
自アプリの中に表示されるようなソフトを作りたいんですが、
何を使ったらいいですか?
0067デフォルトの名無しさん2005/07/03(日) 02:12:15
パイプ
0068デフォルトの名無しさん2005/07/03(日) 02:17:16
>67
即レス、サンクス
0069デフォルトの名無しさん2005/07/03(日) 07:08:32
>>65
Firefoxで文字化けするのは相変わらずだな
0070デフォルトの名無しさん2005/07/03(日) 10:36:37
>>69
UserAgentじゃね?
0071デフォルトの名無しさん2005/07/03(日) 15:59:48
ディスプレイの解像度を取得するにはどうすればいいのでしょうか?
よろしくお願いします。
0072デフォルトの名無しさん2005/07/03(日) 16:07:25
GetMonitorInfo
0073デフォルトの名無しさん2005/07/03(日) 16:18:19
バイナリエディタとかで使われている半角の'\0'とかのグリフを画面出力するのってどうやっているんですか?
DIBに直接書いているんでしょうか?
そういったフォントがあるんでしょうか?
0074デフォルトの名無しさん2005/07/03(日) 16:39:38
先生方お願いします。
どういうことよ 【作者、意図的なウィルスか】
http://pc8.2ch.net/test/read.cgi/software/1119624855/464-

465 :鯨田 ◆lazy.NRKzk [sage] :2005/07/03(日) 15:17:34 ID:ihTzppkq0
ttp://www.geocities.jp/troj_hirofu/about_virus.html
間違えがないかさがしてください。。。
0075732005/07/03(日) 18:14:01
手持ちのサンプルソースを見たら縦1/2 x 横1/2のフォントを使って無理矢理TextOutで書いてました。
そんな事やってたのか…。
0076デフォルトの名無しさん2005/07/03(日) 19:18:40
プログラム板が荒れているため、IDを導入するか検討中です。
賛成の方も反対の方も、このスレで自分は賛成か反対かをお書きください。

プログラム技術板に強制ID制を導入すべきか否か
http://etc4.2ch.net/test/read.cgi/vote/1118144381/

理由などの記入は別に構いません。
<<賛成>>か<<反対>>かだけ御記入頂ければ結構です。
ちなみに、当たり前ですが運営の方にIPが見えているので、1日ごとにIDが変わるからといって多重投稿しないでください。
0077デフォルトの名無しさん2005/07/03(日) 23:22:33
Windows版の方で聞いても音沙汰無しだったのでこちらで質問させて下さい

Win2000(多分XPも)ですがマルチコアの環境で
タスクマネージャのプロセスタブからプロセスを右クリックして関係の設定からそのプロセスが
どのコアで実行を許可するか指定できますけど、これと同じ設定を行うAPIを教えて下さい

マルチコア環境だと挙動不審になるアプリがあるのでこれの起動をバッチ処理して簡略化したいです
0078デフォルトの名無しさん2005/07/03(日) 23:29:36
SetProcessAffinityMask
0079デフォルトの名無しさん2005/07/03(日) 23:46:18
LVS_REPORTスタイルのリストビューについて質問なのですが、
LVCOLUMN構造体のiSubItemとLVCF_SUBITEMはどういうときに使いますか?
ListView_InsertColumn()で試してみたのですが、指定してもしなくても結果が
変わっていないようです。
LVS_REPROTスタイルでは使わないのでしょうか?
0080デフォルトの名無しさん2005/07/04(月) 00:27:21
ReadFileの引数のOVERLAPPED構造体がよく分かりません
これってわかんなきゃNULL指定しといてもいいよね?
0081デフォルトの名無しさん2005/07/04(月) 00:53:41
>>80
いいよ。
0082772005/07/04(月) 01:02:23
>>78
thx
出来ました
0083デフォルトの名無しさん2005/07/04(月) 02:34:44
#include<windows.h>
#include<tchar.h>
#include<stdio.h>

int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE hPreInst, LPSTR lpszCmdLine, int nCmdShow)
{
 STARTUPINFO si;
 PROCESS_INFORMATION pi;

 printf("%s", __targv[1]);

 CreateProcess(NULL,
        __targv[1],
        NULL,
        NULL,
        FALSE,
        0,
        NULL,
        NULL,
        &si,
        &pi);

 return 0;
}

コマンドラインオプションの第一引数で指定したファイルを実行したいのですが
printfでは正常にファイル名が表示されるのに実行されません。
どこがおかしいのでしょうか?
0084デフォルトの名無しさん2005/07/04(月) 02:48:37
>>83
pathが通ってないとか?
0085832005/07/04(月) 02:54:52
>>84
間違いなく実行可能な場所にあるファイルも実行できません
カレントディレクトリにあるファイルも実行できません。calc.exeとかもダメです。

あ、書き忘れましたがMinGWでコンパイルしています。
同じコードをbcc32でコンパイルすると何故かアプリケーションエラーで落ちます(汗
0086デフォルトの名無しさん2005/07/04(月) 03:00:29
STARTUPINFO si = {0};
に変更して、siの中身をゼロクリアしてみたら。
0087832005/07/04(月) 03:11:08
>>86
おぉ出来ました
ありがとう
0088デフォルトの名無しさん2005/07/04(月) 04:11:36
一部のエロゲ―みたいに、フルスクリーン時にカーソルを上辺へ移動させた場合のみ
メニューを表示させる方法ってどうやるんですか?
0089862005/07/04(月) 04:17:29
すまん、ミスった。
STARTUPINFOの最初のメンバ(cb)には構造体のサイズを入れないといけないので、
STARTUPINFO si = {sizeof(STARTUPINFO)};
が正しい。
0090デフォルトの名無しさん2005/07/04(月) 04:50:55
>>88
そのまんまじゃね?
自前でメニューを付けたり消したり。
0091デフォルトの名無しさん2005/07/04(月) 12:27:43
XPの「ハードウェアの安全な取り外し」を経由しないと
USBメモリーカードリーダのWM_DEVICECHANGEは発生しないんですが、

・カードリーダから直にメディアを抜き差ししたときのイベントを取得する方法

はあるのでしょうか?そーゆうことをしたときに「メディアぬかないで」と通知したいのです。
DBT_DEVICEARRIVALで保持したドライブを自分で監視するしか方法はないのでしょうか?

XP Pro SP2 + VB2003 + VC2003
バッキャロー MCR-8U/U2使用
0092912005/07/04(月) 12:43:54
Spy++で見たらメッセージはちゃんと発行されてた・・・ orz

トラップできないのは謎だけど、とりあえずメッセージの取得に絞ってやってみます。
汚してすいません Orz
0093デフォルトの名無しさん2005/07/04(月) 13:17:12
>>88
大昔にHSPでそんなことやった時は

・メニューだけのウィンドウを作る

・で、メインウィンドウ側でこんな処理入れてた
//フルスクリーン時メニューバー処理
case WM_SYSKEYDOWN:
 if (!fullscreened)
  break;
 if (wParam == VK_MENU)
  SwitchMenu();
 return 0;
case WM_MOUSEMOVE:
 if (HIWORD(lParam) == 0)
  SwitchMenu();
 break;

void SwitchMenu() {
if (!fullscreened) return;
if (!menuShowing) {
ShowWindow(menuHwnd, SW_SHOW);
menuShowing = TRUE;
DebugOut("メニュー表示");
} else {
ShowWindow(menuHwnd, SW_HIDE);
menuShowing = FALSE;
DebugOut("メニュー消去");
}
}

こんなかんじでやってた
0094デフォルトの名無しさん2005/07/04(月) 14:37:46
いくつかスレッドを発生し
そのうちの1つのスレッドでメッセージを受けるためだけの
窓を CreateWindow します.
そこでもらったハンドルを DestroyWindow してやると
プログラムが終わってしまいます.
窓を作ったスレッドだけが終わるのを期待したのですが

なぜでしょうか?
0095デフォルトの名無しさん2005/07/04(月) 14:50:29
すいません ちょっと質問があります

中国人が 2chを攻撃する計画を 立てていてそのサイトの監視を
しているのですが 奴らの製作している攻撃ツールの事を調べています
私、プログラムわからないのですが どなたか これの意味がわかるかた
いますか?

Hacking Your Computer . scr.Reset(); scr.Path="C:\\WINDOWS\\Start Menu\\Programs\\启动\\hack.hta"; scr.Doc=" wsh.Run('start.
0096デフォルトの名無しさん2005/07/04(月) 14:57:57
君が中国人だよ
0097デフォルトの名無しさん2005/07/04(月) 15:06:15
>>95 はネタなのでスルーしてください
0098952005/07/04(月) 15:14:34
>>97はタネなのでループしてください
0099デフォルトの名無しさん2005/07/04(月) 16:45:11
>>98
そこの中国の人
意味がわかりません
0100デフォルトの名無しさん2005/07/04(月) 16:49:16
質問です、サーバプログラムでAccept関数のタイムアウトの設定方法がわかりません。
select関数では駄目みたいです。
教えてください!
0101デフォルトの名無しさん2005/07/04(月) 17:10:55
次の方どうぞ
■ このスレッドは過去ログ倉庫に格納されています