トップページ⇒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などの質問はそれぞれの言語や開発環境スレで
0232デフォルトの名無しさん2005/07/08(金) 21:17:09
フックならそうだな、だがfuckは違うな

本気で言ってるなら、哀れだな
0233デフォルトの名無しさん2005/07/08(金) 21:17:58
これはすごいふぁっくですね
0234デフォルトの名無しさん2005/07/08(金) 21:19:53
>>232
フックでもメッセージはfuckしないだろう。
0235デフォルトの名無しさん2005/07/08(金) 21:23:30
>>231
ttp://dictionary.goo.ne.jp/search.php?MT=fuck&kind=ej
0236デフォルトの名無しさん2005/07/08(金) 21:30:06
「global fuck」は使われてた…?orz
ttp://66.102.7.104/search?q=cache:XgNpPqJvT_IJ:www.globalgasm.com/inside.htm+global+fuck&hl=ja
02372262005/07/08(金) 21:31:39
おまいら釣られすぎゲキワロス
つか、あげ足鳥ばっかで、質問に答えられるヤシはいねーのかよ orz
02382262005/07/08(金) 21:33:08
globalfuckでぐぐるとお堅いPDFが出てきてオモロイ
0239デフォルトの名無しさん2005/07/08(金) 21:34:44
あまりにもお粗末な間違いだ。そんなんだからフックできねぇんだよ。
0240デフォルトの名無しさん2005/07/08(金) 21:45:14
なんでもかんでもフックできるわけではない
要はそういうことだ
0241デフォルトの名無しさん2005/07/08(金) 21:47:44
>>237
どう間違ったらfuckになるんだ?
0242デフォルトの名無しさん2005/07/08(金) 22:07:28
フックだけに釣りなんですよ
0243デフォルトの名無しさん2005/07/08(金) 22:08:10
>>226
お前にフィッシングの被害者を釣らせないため
02442132005/07/08(金) 22:23:24
>>222
ありがとうございます。
とりあえず、WM_ACTIVATEをWM_ACTIVATEAPPに変えてみたんですが
変化ありませんでした。
DirectXを使ってるせいか、メニューを開いてる間は描画されないみたいです。

今度はWM_INITMENUメッセージが来た時にWM_CANCELを送ってメニューを
消してみましたが、一瞬メニューが表示されてしまいます。

ぐぐって検索してみましたが、システムメニューを削除すると右上の×ボタンも
使えなくなるそうですし・・・
なんとかならないでしょうか・・・。
0245デフォルトの名無しさん2005/07/08(金) 22:31:39
なんとかするのがプロってもんだ
0246デフォルトの名無しさん2005/07/08(金) 22:45:47
プログラムしてるからと言ってプロとは限らんがな
0247デフォルトの名無しさん2005/07/09(土) 00:05:22
>>244
よおわからんけどSPYで来るメッセージ調べた?
NCのつくメセジで何かすりゃなんとかなるんちゃう?
02482242005/07/09(土) 00:17:13
>>225
それってツリービューのメッセージなのでは?
だまされたと思って試してみましたが、やはりできなかったOrz
0249デフォルトの名無しさん2005/07/09(土) 00:35:25
質問です。
Win32APIのReadFile()を使って、標準関数fgets()に相当する関数を作るには
どうすればいいのでしょうか?
0250デフォルトの名無しさん2005/07/09(土) 00:37:45
>>249
「fgets()に相当する」というだけでは、具体的にどの程度の仕様を求めている
のかわからないが、
VC++にはCランタイムのソースがついているので、それを読むのが良かろう。
0251デフォルトの名無しさん2005/07/09(土) 00:40:33
>>249
fgets で十分ではないか?
0252デフォルトの名無しさん2005/07/09(土) 00:48:37
stdioよりもっと柔軟な(たとえば文字列バッファとの入出力なども可能な)
あるいはマルチスレッド環境で意図的に排他を行わないことにより高速性を
実現した
バッファリングI/Oの層を作りたいのかもしれない

前者はたとえばBSD4.4のfunopen()のようなものがあればFILE*の世界で
実現可能だが、残念ながらMicrosoftのstdioにはそのようなものはない
0253デフォルトの名無しさん2005/07/09(土) 01:11:16
char *fgets(char *s, int n, FILE *stream);
ReadFileを1バイトずつn-1回読み込んで、sにセットしていけば。
ファイル終端や改行があったら抜ける。
0254デフォルトの名無しさん2005/07/09(土) 01:15:38
>>247
TOOLKITなので、多分SPYはないのです・・・。
0255デフォルトの名無しさん2005/07/09(土) 01:20:55
spy++ぐらい、PlatformSDKについてるだろ
0256デフォルトの名無しさん2005/07/09(土) 01:21:21
>>251
ランタイムライブラリを使いたくネーンダヨ
0257デフォルトの名無しさん2005/07/09(土) 01:26:41
>>256
だからVC++のソース見れと。
PlatformSDKにも確かlibcのソースが不完全ながらついてるから
タダで見れるはずだぞ。

要するにFILE構造体相当の、バッファを保持する構造と、それを使って
入出力する関数を自前で作るだけだ。
0258デフォルトの名無しさん2005/07/09(土) 01:29:48
ランタイムをつかいたくねーってのがいかにも厨の考えることだな。
0259デフォルトの名無しさん2005/07/09(土) 01:30:57
>>258
そーか?
俺はDLL組むんなら、出来るならランタイムへの依存は避けるがな
0260デフォルトの名無しさん2005/07/09(土) 01:37:24
ますますもって意味不明
02612592005/07/09(土) 01:41:53
>>260
言っておくが俺は>>256ではないぞ。
ま、DLLを作る際にLIBCに依存したくないキモチが分からないおまいは
厨以下だな。
0262デフォルトの名無しさん2005/07/09(土) 01:59:15
コンパイルの意味を理解してない、としか考えられん
0263デフォルトの名無しさん2005/07/09(土) 02:00:56
だから、
LIBCに依存しとるDLLを使う場合、ユーザプログラムもLIBCのバージョンや
変種をあわせないといかんだろ?

それがウザいから、LIBC非依存にできるんならそうしたいという
ただそれだけの話だよ
0264デフォルトの名無しさん2005/07/09(土) 02:45:53
DLL側がCRTをスタティックリンクしてれば何の問題もないだろ
0265デフォルトの名無しさん2005/07/09(土) 02:51:11
>>264
DLLとユーザプログラムでCRTのオブジェクトを受け渡しする場合、
同じCRTのDLLを使う以外の方法は無いよ。スタティックリンクは論外。

素人は出てこないでね。
0266デフォルトの名無しさん2005/07/09(土) 04:16:51
CRTオブジェクトとか、そんなプリミティブなオブジェクトをインターフェイスに使うなよ
0267デフォルトの名無しさん2005/07/09(土) 04:25:10
Platform SDKの最新版(2003/SP1)の英語のマニュアルみてるんですが
Functions by Releaseの項目にXPSP2が載ってないんですが
SP1->SP2 で追加されたAPIってないのでしょうか?
0268デフォルトの名無しさん2005/07/09(土) 04:47:09
>>266
はあ?
あんた、FILE*をいちいちラップしないと気がすまない人?
そんなら、そもそもCRTなんか、つかわなきゃいいんじゃないの?(w

ま、何にせよUNIX系から出てきたオープンソースのライブラリには、そういうのは
よくあるよ。
FILE*やerrno、ロケールのようなものが絡むようなやつね。

無論、DLLとクライアントプログラムで、片方でmalloc()してもう
片方でfree()、なんてのもダメ。
0269デフォルトの名無しさん2005/07/09(土) 05:17:00
DOSでのAX=4B01hみたいな、プロセスの形だけ整えて実行はしない関数は、Win32ではどれですか?
0270デフォルトの名無しさん2005/07/09(土) 07:34:56
>>268
「CRTは極力使わない」という話から「UNIX系から出てきた」とか、まったく逆のことを言っているのに自分で気づかないバカか?
0271デフォルトの名無しさん2005/07/09(土) 08:42:20
良くいる困ったちゃんだからスルーしたげなさい
0272デフォルトの名無しさん2005/07/09(土) 09:13:38
質問です。

自作アプリケーションのフォームにフォーカスが当たらないようにする方法はありますか?
感覚的には、見えていても触れないようになればよいのですが。
0273デフォルトの名無しさん2005/07/09(土) 09:16:57
つ[EnableWindow]
02742722005/07/09(土) 10:21:56
後から気付いたんですが
「操作を透過させる」いう言い方をすれば早かったようです。

>273
すいません。説明不足でした。
0275デフォルトの名無しさん2005/07/09(土) 10:35:33
操作を透過?
0276502005/07/09(土) 10:45:30
>>57
ありがとうございました。
0277デフォルトの名無しさん2005/07/09(土) 10:46:20
サウンドカードがあってもビープ音を出すのにはどうすればいいですか?
0278デフォルトの名無しさん2005/07/09(土) 11:07:40
WM_SETFOCUS が来たら、wParamにフォーカスを戻せば?
02792722005/07/09(土) 11:09:44
>ttp://www.forest.impress.co.jp/lib/sys/hrdbnch/hardinfo/mobilemeter.html
>マウス操作を透過させることも可能。
>これにより常にデスクトップに表示していても、
>本ソフトの下に表示されているほかのソフトを自由に操作することができる。
例えばこういうソフトでやられているようなことをしたいわけです。

「WM_NCHITTESTでHTTRANSPARENTを返す」という方法を見つけたんですが
これでも操作を受け付けなくなるだけでした。
0280デフォルトの名無しさん2005/07/09(土) 11:22:24
>>279
そのソフトをインストールして、SPYで観察したら?
もしかしたら、ウィンドウじゃないかもしれないし。
0281デフォルトの名無しさん2005/07/09(土) 11:23:45
初心者です。質問させてください。
猫でもわかるプログラミング、SDK65章についてです。
case WM_NOTIFY:
switch (((LPNMHDR)lp)->code) {
case TTN_NEEDTEXT:
lptip = (LPTOOLTIPTEXT)lp;
lptip->hinst = hInst;
switch (lptip->hdr.idFrom) {
case IDM_PARENT:
lptip->lpszText
= MAKEINTRESOURCE(IDS_TIPS_PARENT);
break;
〜以下省略〜

WM_NOTIFYを受け取っているのでここでlp(LPARAM)の型はLPNMHDRですよね?
LPTOOLTIPTEXTのlptipにlpを入れるときに、
lptip = (LPTOOLTIPTEXT)lp;というように、
TOOLTIPTEXT構造体のポインタにキャストして代入することが可能らしいのですが、
何故、どのように代入されるのかがよくわかりません。

また、switch (lptip->hdr.idFrom)というようになっていますが、
ただ単にコントロールを調べるだけなので、WPARAMで指定した方が楽ではないかと思うのですが、
それでは何か問題が発生するのでしょうか?

よろしくお願いします。
0282デフォルトの名無しさん2005/07/09(土) 11:53:14
>>281
TOOLTIPTEXTの最初のメンバはNMHDRだからlParamはHMHDR *でも受け取れるようになっている。
けどcodeがTTN_NEEDTEXTのときにはTOOLTIPTEXT *を投げているのでTOOLTIPTEXT *として扱える。
ようするにC++の継承もどきみたいなことをしている。
0283デフォルトの名無しさん2005/07/09(土) 11:53:58
最初の質問に関しては、C言語の構造体とポインタの関係を勉強しろとしかいいようがない。
http://www.mm2d.net/c/c-14.shtml

http://yokohama.cool.ne.jp/chokuto/urawaza/message/WM_NOTIFY.html
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/commctls/common/messages/wm_notify.asp
ここを読めばわかるんだが、wParamはユニークじゃないので、idFormとcodeを使えと書いてある。

02842812005/07/09(土) 12:02:59
>>282-283
なるほど・・・。
理解できました。お二方ともありがとうございます。

C言語はポインタや構造体を含め、ほぼ理解したつまりなんですが、
WinApiに入ってくると、同じことをやってるにしてもなんとなくややこしてくて・・・。
これからも質問する機会があるかもしれませんので、そのときはよろしくお願いいたします。
0285デフォルトの名無しさん2005/07/09(土) 12:51:54
>>269
CreateProcessでCREATE_SUSPENDEDフラグを指定すればいいんじゃない?
0286デフォルトの名無しさん2005/07/09(土) 12:53:57
初カキコ&携帯から失礼します
IPv4とIPv6の判定ができるAPIってあるのでしょうか?
Linuxでいうinet_ptonだと思うのですが
0287デフォルトの名無しさん2005/07/09(土) 12:54:08
>>274
WS_EX_TRANSPARENTってのはどう?
02882262005/07/09(土) 13:09:03
あーあ、一日待ってもマトモな回答はなしか。
本当にスゴイ人はこんな所で初心者の面倒見て優越感に浸ってるヒマないもんな・・・
唯一マトモっぽい回答は240だけ・・・ま、自分でタスクリスト作るかな。マンドクセ
0289デフォルトの名無しさん2005/07/09(土) 13:21:46
まだいたのかグローバルファックw
0290デフォルトの名無しさん2005/07/09(土) 13:22:11
>>288
まともな質問をしないで、まともな回答を要求するのは
あまりにも自分勝手だと思うぞ。
0291デフォルトの名無しさん2005/07/09(土) 13:25:29
まだ一日経ってないしなw
0292デフォルトの名無しさん2005/07/09(土) 13:41:53
このスレのwikiをたった今作成しました。
ttp://wiki.livedoor.jp/program1/
もし、よろしければご活用ください。
0293デフォルトの名無しさん2005/07/09(土) 14:38:53
書籍やWeb上のサンプルを見ていつも不思議に思うのですが、
パスの最大長MAX_PATHはNULL分も含んでいるのですか?
サンプルにより
TCHAR szPath[MAX_PATH];
TCHAR szPath[MAX_PATH+1];
というのがあるんですけど。
0294デフォルトの名無しさん2005/07/09(土) 14:46:19
含んでない
0295デフォルトの名無しさん2005/07/09(土) 14:48:35
>>293
含んでいる。
当のMSもTCHAR szPath[MAX_PATH];を使っている。

俺自身としてもどこかでパスの最大は259文字と聞いた記憶がある。(MAX_PATHは260)
0296デフォルトの名無しさん2005/07/09(土) 14:54:21
MSがしてるからなど最も信用できないものだが・・・
0297デフォルトの名無しさん2005/07/09(土) 15:03:19
MSでもここなんかは
TCHAR szTempName[MAX_PATH + 1];
て書いてあるし・・・・
http://msdn.microsoft.com/library/en-us/http/http/http_server_sample_application.asp?frame=true
0298デフォルトの名無しさん2005/07/09(土) 15:12:15
>>226
WM_WINDOWPOSCHANGEDをフックするんじゃなくて
WH_CBTを使ってみては?
0299デフォルトの名無しさん2005/07/09(土) 15:20:59
>>292
乙。ぜひ活用しましょう。
0300デフォルトの名無しさん2005/07/09(土) 15:45:40
ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/fs/naming_a_file.asp
0301デフォルトの名無しさん2005/07/09(土) 15:54:42
だからそれが信用ならんのだと・・・
03022932005/07/09(土) 16:04:14
>>300
おおっ。含むようですね。
>>301
とりあえずMAX_PATH+1にしておくことにします。
0303デフォルトの名無しさん2005/07/09(土) 16:05:06
>>302
そもそもMAX_PATHでは足りないという話も。
0304デフォルトの名無しさん2005/07/09(土) 16:24:02
>>303
それは「階層掘りすぎ」とか「だらだら日本語名付け過ぎ」とかの、また別の話だ
0305デフォルトの名無しさん2005/07/09(土) 16:26:29
そーいやUNIX系のOSでmsdosfsで深い階層作ってみた。
Win側に持っていったら途中からアクセスできなかったのはちと萎えた。
0306デフォルトの名無しさん2005/07/09(土) 16:28:42
ローカルエリア接続をオン、オフしたいんだけど、ローカルエリア接続に割り当てられた
アダプタ名を取得するにはどうすればいいんでしょうか?教えてください。

iphlpapi.hには無かったです。。
0307デフォルトの名無しさん2005/07/09(土) 16:30:36
>>304
> 掘りすぎ

ウホッ?
0308デフォルトの名無しさん2005/07/09(土) 16:34:04
304って本質的にバカなんだろうな。
03092722005/07/09(土) 17:23:05
>>280
>>287
助言ありがとうございました。
頑張ってみます。
0310デフォルトの名無しさん2005/07/09(土) 18:50:27
ユーザー補助のスクリーンキーボードのような、
自分のウィンドウをクリックしてもアクティブにしないようにするには、どうすればいいのでしょうか?
ご教授おねがいします。
0311デフォルトの名無しさん2005/07/09(土) 19:00:51
ツールボックス
03123102005/07/09(土) 19:56:26
Spy++見てたら自己解決しますた
WM_MOUSEACTIVATE で MA_NOACTIVE を返せばいいみたいです
スレ汚しすまそ
0313デフォルトの名無しさん2005/07/09(土) 20:29:58
>>305
全然違うシステムから直接触るなんざバカのすることじゃん
0314デフォルトの名無しさん2005/07/09(土) 20:36:16
>>313
理解できなかったのね。ゴメンネw
0315デフォルトの名無しさん2005/07/09(土) 20:39:13
>>313
FATファイルシステムの出来栄えの話なんだが、頭大丈夫か?
0316デフォルトの名無しさん2005/07/09(土) 20:44:32
\\?\をつけてたどればいけるだろ
0317デフォルトの名無しさん2005/07/09(土) 20:48:40
>>316
やってみたの?それとも理屈ちゃん?
0318デフォルトの名無しさん2005/07/09(土) 20:49:39
つ チラシの裏
0319デフォルトの名無しさん2005/07/09(土) 21:04:09
>>315
Windowsで使う限り問題無い
03203102005/07/09(土) 22:20:20
やっぱ無理でした orz
WM_MOUSEACTIVATE で MA_NOACTIVE を返すとそのウィンドウがアクティブにならないのはいいんですが、
前アクティブだったウィンドウが非アクティブになってしまいます。
これをアクティブなウィンドウを変えないようにするにはどうすればいいのでしょうか?
0321デフォルトの名無しさん2005/07/09(土) 22:22:51
>>317
どこまで深い階層を作ったのか知らんが、
50階層までなら辿れたぞ
それ以上は面倒だからやってないがな。
0322デフォルトの名無しさん2005/07/09(土) 22:30:03
>>320
>>311
0323デフォルトの名無しさん2005/07/09(土) 22:31:44
>>293 亀レスですよ
+1する必要はない英語版のMSDNがたぶん(w)正確

そもそも TCHAR なのに +1 ってバカすぎる
+sizeof(TCHAR) にしないと意味ない
TCHAR を分かってない奴大杉
0324デフォルトの名無しさん2005/07/09(土) 22:38:01
>>323
おまいさんが恥ずかしい奴だってことだけは分かった
0325デフォルトの名無しさん2005/07/09(土) 22:38:56
>>323
最後の3行すげーこっ恥ずかしいな
0326デフォルトの名無しさん2005/07/09(土) 22:41:56
>>323は釣りですよ
0327デフォルトの名無しさん2005/07/09(土) 22:49:26
>>323
ワロスwwwww
0328デフォルトの名無しさん2005/07/09(土) 22:50:49
そんなwww笑ってwwwやるなよwwwwww
0329デフォルトの名無しさん2005/07/09(土) 22:52:26
やっちまったな>>323
0330デフォルトの名無しさん2005/07/09(土) 22:58:31
バカがいると聞いて駆けつけて来ました
0331デフォルトの名無しさん2005/07/09(土) 23:33:11
        j
     /V\
    /◎:::.:..__ヽ
 _ ム::::(   .)::|  ∧∧
ヽツ.( ):::::::::.:::::::...|   (,,゚Д゚) ξ 釣り宣言まで待つとするか
  ヾソ:::::::::::::::::.:ノ   /  ⊃旦.
   ` ー ‐'"‐'   (__)
■ このスレッドは過去ログ倉庫に格納されています