1 名前:デフォルトの名無しさん mailto:sage [2009/06/04(木) 04:25:40 ] スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。 やさしいお兄さんやお姉さんたちが答えてくれるかも。 「知らないならレスしないで下さい。ウザイだけです。 」なんて言わないでねっ! 過去スレ、関連リンクは>>2-10 くらい。 ■注意 ・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。 ・日本語版MSDN Online Libraryは不完全です。英語版(msdn2.microsoft.com/library/ )の利用推奨。 ・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。 ・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで - Win32API質問箱 wiki wiki.livedoor.jp/program1/d/FrontPage Win32API質問箱 Build79 pc12.2ch.net/test/read.cgi/tech/1240411224/
21 名前:デフォルトの名無しさん mailto:sage [2009/06/05(金) 21:28:10 ] すまないがWin98、もしくはWinMeの環境ある人居ない? ちょっとしたコードが、Win98、Meできちんと動作するか確認したいんですが 環境が無い為、自分では確認出来ません 確認したいソースだけupしますので、ビルドから確認まで協力してくれないでしょうか? 確認はファイルをD&Dするだけですので、一瞬で終わります
22 名前:デフォルトの名無しさん mailto:sage [2009/06/05(金) 21:34:27 ] VMWare でも使えよハゲ
23 名前:デフォルトの名無しさん mailto:sage [2009/06/05(金) 21:39:59 ] >>21 VirtualPCもたしか無料だったはずだよ
24 名前:デフォルトの名無しさん mailto:sage [2009/06/05(金) 21:48:54 ] >>22-23 レス有難うございます 肝心のDiskが無い為、仮想環境が作れないでいます 98、Meのisoは配布されてましたか?
25 名前:デフォルトの名無しさん mailto:sage [2009/06/05(金) 21:51:36 ] MSDN に入ればダウンロードできるだろ
26 名前:デフォルトの名無しさん mailto:sage [2009/06/05(金) 21:51:54 ] >>24 ないのね、明日で良ければやりましょうか? 98SEしか手持ちがなかったはずなんでご期待に沿えるかは分かりませんが・・・ あとできたらバイナリで欲しいなぁ、仮想環境構築からビルド環境までって時間かかりそうだし ビルドからやらないと実験になりませんか?
27 名前:デフォルトの名無しさん mailto:sage [2009/06/05(金) 22:32:07 ] >>25 MSDNに加入とはお金が掛かるのでしょうか? >>26 すみませんが、お願い出来ますか? Win98SEでも十分です! バイナリでも良いですが、バイナリでupすると不信に思われると思い ソースでupを考えておりました バイナリで宜しければ、バイナリでup致します。
28 名前:テスト要員@文教堂 mailto:sage [2009/06/05(金) 22:35:42 ] >>27 MSDN購読はたしかお金かかりますよ 適当なうpろだにでも上げといてください、拾って実行します あと、できたら他のスレ移動したいですね、ここ質問スレだし
29 名前:デフォルトの名無しさん mailto:sage [2009/06/05(金) 22:39:51 ] >>28 本当に有難うございます 下記スレで如何でしょうか? プログラム板雑談スレッド Part 3 pc12.2ch.net/test/read.cgi/tech/1192485583/ upはバイナリ形式で、明日の午前中に行いたいと思います 確認して頂きたい点はtxtを同梱致します。
30 名前:テスト要員 ◆hMt.Bw/pUk mailto:sage [2009/06/05(金) 22:40:55 ] >>29 了解です、明日そちらのスレ見ておきます
31 名前:依頼人 ◆mDDU6VtRHw mailto:sage [2009/06/05(金) 23:30:56 ] >>30 テスト要員 ◆hMt.Bw/pUk様 プログラム板雑談スレッド Part 3 pc12.2ch.net/test/read.cgi/tech/1192485583/413 予定より早いですが、上記にてupを行いました 自己解凍形式で、同梱したtxtをご確認下さい。 また、質問スレにはこの件の書き込みは最後とします。 関係の無いレスで埋めてしまい本当に申し訳ありませんでした。
32 名前:デフォルトの名無しさん mailto:sage [2009/06/06(土) 06:19:01 ] hoge1すげーw
33 名前:デフォルトの名無しさん mailto:sage [2009/06/06(土) 15:38:03 ] MSDNではWinXP以降しか手に入らないよ。 MS-Java絡みの関係で、9x系に加え2000以前も全部駄目になっている。
34 名前:デフォルトの名無しさん mailto:sage [2009/06/06(土) 16:20:25 ] じゃあWindows9x系での動作確認をしたかったら中古で買うか もしくは割れてるのを手に入れるかしかないのか・・・
35 名前:デフォルトの名無しさん mailto:sage [2009/06/06(土) 18:11:34 ] つーか9x系に対応したソフトを作る人ならOSぐらい持ってるだろ なんで持ってないOSまでわざわざ対応する必要があるんだよw
36 名前:デフォルトの名無しさん mailto:sage [2009/06/06(土) 20:23:58 ] 持ってないけど少しでも使ってくれる人増やしたいから対応するってのはあると思うよ まぁMSが見捨てたもんに対応なんて今さらって気はするが・・・
37 名前:デフォルトの名無しさん mailto:sage [2009/06/06(土) 20:56:54 ] WM_CREATEで-1でなく1を返すコードを見たんだが これは何か意味があるの?
38 名前:デフォルトの名無しさん mailto:sage [2009/06/06(土) 21:38:57 ] msdn.microsoft.com/en-us/library/ms632619.aspx 確かに1に見えなくも、つーか化けてね
39 名前:37 mailto:sage [2009/06/06(土) 21:47:25 ] >>38 もちろん俺もそこ見たけど -1(たぶん)と 0 の場合しか書いてなかった 1の場合普通に成功するんだが WM_CREATEの戻り値ってなんかに使用されるっけ?されないなら別に気にしないことにする
40 名前:デフォルトの名無しさん mailto:sage [2009/06/06(土) 22:11:48 ] ほかの可能性としては、0と非0を返すWM_NCCREATEと勘違いしたとか。
41 名前:37 mailto:sage [2009/06/06(土) 22:35:18 ] >>40 うーん、俺の見たコードではWM_CREATEやWM_LBUTTONDOWNで1を返してた。 まぁいいや、気にしまい。スマン
42 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 11:44:46 ] >>39 -1を返すとCreateWindowExが失敗してNULLを返す って書いてあるだろ、しっかり読め
43 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 13:03:59 ] >>42 おまえこそ、普通にレスを読め
44 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 13:12:44 ] あれ? MSDNオンラインとオフラインで書いてあることが違う?
45 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 14:06:36 ] 「ン」と「フ」が違うからな
46 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 14:15:05 ] >>38 化けてるな。マイナス記号がU+002DじゃなくてU+2013という罠。
47 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 15:12:24 ] msdn.microsoft.com/en-us/library/ms914118.aspx CEの方は化けてないな
48 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 15:16:08 ] マイナス記号が化けてるからMSDN読みませんってか
49 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 15:19:35 ] U+2013 って – だろ? 化けるフォント使ってる奴が悪いんだろ
50 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 17:50:03 ] ステータスバーを最下部に配置してるんだが メインウィンドウとの境目に境界線って消せない? それとも境界線自信メインウィンドウの物?
51 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 17:50:58 ] ハァ?
52 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 17:59:47 ] ステータスバーっぽいウィンドウ作って配置するとか
53 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 01:56:52 ] スクロールユーティリティ作っていて、標準スクロールバーを持つコントロールの スクロールバーのサムの位置をダイレクトに変えたい。 WM_VSCROLL/HSCROLLで SB_LINEUP/DOWN, SB_PAGEUP/DOWNは動くけど、 SB_THUMBPOSIION(またはSB_THUMBTRACK) 送っても反応しないものがある。 エディットやリッチエディットなどは問題ないけど、Janeのスレビューの部分の TMDITextViewなどは動かないんで、 SetScrollInfo(またはSetScrollPos)で無理やり位置を変えてから、SB_THUMBPOSITIONを送ると動いたりする。 (でもビジュアルスタイルを適応していると動かない) 独自コンポーネントの仕様だと言われればそれまでなんだろうけど、 Spy で調べたのと同じメッセージを送っても動かないのは何でだろ?
54 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 07:07:41 ] 独自コンポーネントの仕様です。
55 名前:デフォルトの名無しさん [2009/06/08(月) 17:00:03 ] システムメニューじゃなくてタイトルバーの下にあるメニューを列挙するAPIを教えてください
56 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 17:06:07 ] ウィンドウに対してGetMenuしてうんぬんかんぬんする
57 名前:デフォルトの名無しさん [2009/06/08(月) 17:07:28 ] >>56 あ、ありがとう。 それだけわかれはうんこが漏れるほどわかりますた
58 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 19:06:39 ] 基本メインウィンドウ隠してる時にポップアップメニューを出すようにしたんだが WM_HOTKEYでSetForegroundWindowー>TrackPopupMenu の処理すると、ポップアップメニュー以外をクリックしても閉じるけど WM_TIMERで同じ事やると、メニューが閉じない 一応メッセージフックして違いを見たけど、解決に至らなかった 良い方法はないだろうか?
59 名前:デフォルトの名無しさん [2009/06/08(月) 21:07:08 ] >>58 TrackPopupMenuのあとにWM_NULLをポストする。
60 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 21:42:46 ] エクスプローラとかについてる進む・戻るボタンみたいな、 ボタンの脇に▼がついてるボタンのことなんていうの? ナビゲーションボタンであってる?
61 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 00:36:50 ] 特に名前はないだろ
62 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 00:38:06 ] ドロップダウンボタンだろ
63 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 06:49:24 ] スプリットボタン
64 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 08:07:48 ] TBSTYLE_EX_DRAWDDARROWS BS_SPLITBUTTON ツールバーだから、ドロップダウンボタンという事になるのかな。
65 名前:58 mailto:sage [2009/06/09(火) 11:37:35 ] >>59 試して見ましたが駄目でした WM_NULLはタスクトレイから操作された時に必要のようですね
66 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 15:50:05 ] 質問です。 WNDCLASSのlpszClassNameに設定するクラス名の文字列のポインタのことなんですが、 このポインタが指す文字列は、RegisterClass後も、 そのままメモリ上で同一の内容で存在し続ける必要があるのでしょうか? 例えばlpszClassNameに設定した文字列のポインタが、 mallocによって確保された領域を指している場合、RegisterClass後に それをfreeしてしまっても問題が起きない保障があるのか、、が気になります。
67 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 15:53:35 ] 開放しても大丈夫
68 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 15:58:50 ] 分かりました。ご返答ありがとうございました。
69 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 16:38:33 ] いやどうかな
70 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 17:54:41 ] 普段は単なる文字列リテラルを使っていたから考えもしなかったが、リテラル文字列は メモリ上に永続していることが多いのか。
71 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 18:01:06 ] というかまあ、常識的に考えれば、文字列へのポインタを引数にとる関数が、制御が帰った後も その文字列が永続してなきゃいけないような変則的な作りだったら、ドキュメントにそう 書いてあるはずだ。
72 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 18:02:12 ] strtokとかか
73 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 18:13:35 ] RegionをSelectObjectした時の記述が無い?
74 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 19:58:21 ] >>70 つーか文字列リテラルが永続しない場合ってどんな時だ?
75 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 20:11:01 ] >>73 SelectClipRgnと等価。 ってMFCの方には書いてあるのだけどなあ。 www.tech-archive.net/Archive/Development/microsoft.public.win32.programmer.gdi/2005-08/msg00233.html というVC++MVPな人の発言もあるし、それで合ってると思う。
76 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 20:57:39 ] エディットコントロールに対して文字を追加する方法はありますか? SetWindowTextだと全て描画しなおしになってしまうので。
77 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 21:19:55 ] 自己解決しました。EM_REPLACESELでいけました。
78 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 21:21:07 ] >>76 うろ覚えですまんが、確かSendMessageとか使うんじゃなかったかな
79 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 21:51:15 ] >>74 永続する保証がない以上、永続しないケースがあると考えておかないと。
80 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 01:12:54 ] 言語によってはガーベジコレクトされるかもね。
81 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 01:28:26 ] DLL内の文字列とか、DLLをアンロードすれば読めなくなる。
82 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 09:03:21 ] >>76 EM_SETSEL (-1, -1) → EM_REPLACESEL
83 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 14:32:58 ] >>81 アンロードしてもすぐには消えないことがあるからタチ悪いよな。
84 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 22:37:31 ] マルチスレッドで、 スレッドAの処理Bと、スレッドCの処理Dを排他的に処理したい (同時進行で処理したくない)場合、一般的にはどうするの? これ! っていうAPIがあったりする?
85 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 22:41:58 ] >>84 同期オブジェクトを使って同期。
86 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 22:43:08 ] Mutex とか CriticalSection とか
87 名前:デフォルトの名無しさん mailto:sage [2009/06/13(土) 01:16:35 ] InitializeCriticalSection(&cs); EnterCriticalSection(&cs); EnterCriticalSection(&cs); EnterCriticalSection(&cs); ... てやると、普通に最後まで実行できるんだけど、なぜ? この場合って、二回目のEnterCriticalSectionで永久ループになるんじゃないの??
88 名前:デフォルトの名無しさん mailto:sage [2009/06/13(土) 01:31:37 ] csを獲得済みだから msdn.microsoft.com/en-us/library/ms682608.aspx After a thread has ownership of a critical section, it can make additional calls to EnterCriticalSection or TryEnterCriticalSection without blocking its execution. This prevents a thread from deadlocking itself while waiting for a critical section that it already owns. The thread enters the critical section each time EnterCriticalSection and TryEnterCriticalSection succeed. A thread must call LeaveCriticalSection once for each time that it entered the critical section.
89 名前:デフォルトの名無しさん mailto:sage [2009/06/13(土) 01:54:29 ] unsigned charのSHIFT JIS文字列をcharのSHIFT JIS文字列に変換する、もしくはその逆は可能でしょうか?
90 名前:デフォルトの名無しさん mailto:sage [2009/06/13(土) 01:59:50 ] >>89 (char*)とか(unsigned char*)とかキャストするだけ。Win32APIの出番ではない。 C++ならreinterpret_castな。
91 名前:デフォルトの名無しさん mailto:sage [2009/06/13(土) 09:06:31 ] _com_ptr へのポインタなんだけど IHogePtr phoge; IHoきいせかす *pphoge = &phoge; とすると&のオーバーロードで入れられないんです。 どうしますか?
92 名前:デフォルトの名無しさん mailto:sage [2009/06/13(土) 10:36:30 ] 使い方がおかしい というかスレ違い
93 名前:デフォルトの名無しさん mailto:sage [2009/06/13(土) 14:09:13 ] >>91 IHogePtrへの参照で我慢するか、boost::addressof
94 名前:デフォルトの名無しさん mailto:sage [2009/06/13(土) 22:21:15 ] DrawCaption(hWnd, hDC, &rcCaption, DC_ACTIVE | DC_GRADIENT | DC_TEXT | DC_ICON | DC_BUTTONS); このようにしてDrawCaptionをDC_BUTTONSフラグを付けて呼び出してもボタンが描画されないのですが なぜでしょうか?
95 名前:デフォルトの名無しさん mailto:sage [2009/06/13(土) 22:33:36 ] 次にお前は「OSは2000」と言う!
96 名前:94 mailto:sage [2009/06/13(土) 22:42:02 ] すみません、OSはXP SP3です。。。
97 名前:デフォルトの名無しさん mailto:sage [2009/06/13(土) 22:42:40 ] >>95 駄目じゃん
98 名前:デフォルトの名無しさん mailto:sage [2009/06/13(土) 22:48:26 ] EnterCriticalSection て、例えば beginthread でスレッドAとBをつくったとして、そのAとBの間で 同期する場合にしか使えないの? beginthread でスレッドを1つだけつくった場合に、 プログラム本体側と、スレッドの間で同期はできないの?
99 名前:デフォルトの名無しさん mailto:sage [2009/06/13(土) 22:54:48 ] >>98 何言ってんのか正直わからんが、おまえの言う「プログラム本体」も スレッドなので「スレッドAとB」の場合と何もかわらんよ。 Advanced Windows読んで出直してこい
100 名前:デフォルトの名無しさん mailto:sage [2009/06/13(土) 23:14:05 ] つーか、beginthread なんて使わずに、ちゃんと CreateThread() 使え。
101 名前:デフォルトの名無しさん mailto:sage [2009/06/13(土) 23:15:20 ] 俺はbeginthread派何だが、CreateThreadの方がやっぱりいい?
102 名前:デフォルトの名無しさん mailto:sage [2009/06/13(土) 23:18:38 ] 俺はThread.Start()派
103 名前:デフォルトの名無しさん mailto:sage [2009/06/13(土) 23:19:16 ] CreateThreadのメモリリーク問題ってなんでマイクロソフトは10年経っても治さないの?
104 名前:デフォルトの名無しさん mailto:sage [2009/06/13(土) 23:23:50 ] いろいろ面倒だからじゃね? 俺は面倒だから_beginthreadex使うけど。
105 名前:デフォルトの名無しさん mailto:sage [2009/06/13(土) 23:29:15 ] >>103 もう直っている。 Windows Server 2003でFlsAllocと言う関数が導入された。もちろんVistaでも使える。 これには、スレッド終了時に呼ばれるコールバックを登録する機能が付いており、 CRTもこれを使ってのリソース解放ができるようになった。 XP以下放置かよ、と思うならDLL版CRT使えばいい。
106 名前:デフォルトの名無しさん mailto:sage [2009/06/13(土) 23:54:35 ] いつも_beginthreadexじゃなくて_beginthreadのほう使ってるけど いいの?
107 名前:デフォルトの名無しさん mailto:sage [2009/06/14(日) 00:11:39 ] >>106 今話題になっている件については問題はない ただし、他にも違いがあるので _beginthreadex にしておくのが無難、MSDNを読んでおけ
108 名前:デフォルトの名無しさん mailto:sage [2009/06/14(日) 18:24:17 ] ______ \| (___ ♪ |\ `ヽ、 | \ \ ∧ ∧ | \ 〉 (*`q´) | ♪ \ / ‖( つ| ̄ ̄ ̄ ̄ ̄ ̄! ̄ ̄ ̄ ̄ ̄ ̄ノ ‖( 匚______ζ--ー―ーrー´ 〓〓JJ .‖ || .|| ‖ ‖ ||
109 名前:デフォルトの名無しさん mailto:sage [2009/06/14(日) 18:25:03 ] 質問です。 フィルタドライバを作らずにリアルタイムでオーディオデバイスから出力されるサウンドを加工することは可能でしょうか? もし可能ならやり方の概要を教えてください。
110 名前:109 mailto:sage [2009/06/14(日) 18:25:58 ] オーディオデバイスから出力される直前のサウンドを加工してから出力したいのです。
111 名前:デフォルトの名無しさん mailto:sage [2009/06/14(日) 18:49:59 ] ASIOとVSTプラグインを使えば普通に可能だろ
112 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 08:33:19 ] 携帯電話は高いよ〜。 ピッチがオススメ! 俺はNTTパーソナルだけど、この前サービスが始まったASTELが気になる。
113 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 16:52:55 ] 非同期ソケット通信でWSAAsyncSelectでメッセージを受け取らずに 自分のスレッドで接続したかどうかを識別する方法を教えてください
114 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 18:02:03 ] もひとつ質問ですが WSAAsyncSelectのFD_CONNECTをしてからconnectしますが サーバーから応答が無い時はだいたい30秒くらいで メッセージが返ってくるのですがこれのタイムアウトはどうやって設定するのですか? ちなみに、>>113 もFD_CONNECTの話です。
115 名前:デフォルトの名無しさん mailto:sage [2009/06/17(水) 02:57:29 ] しつもんです。 Windowsが起動してからの 任意のドライブ(物理 or 論理)の 総書き込みバイト数 総読み込みバイト数 をいちばんシンプルに取得する方法はどんな方法でしょうか? その手のデータを表示するソフトがあるのですが、 OSを起動させてかなり時間が経過してからアプリを起動しても、 OS起動からの正しい数値が表示されます。 常駐してカウントしてるわけではないんです。 これは、どこから取得しているんでしょうか?
116 名前:デフォルトの名無しさん mailto:sage [2009/06/17(水) 03:49:43 ] >その手のデータを表示するソフト 具体的に頼むわ
117 名前:デフォルトの名無しさん mailto:sage [2009/06/17(水) 04:01:59 ] >>116 HDDLed Indicator インジケーターにカーソルを合わせると OS起動時から起動しなくてもきちんと 任意の物理/論理ドライブのreadとwriteの累積バイト数が出ます これ、どうやって取得してるんでしょう?
118 名前:デフォルトの名無しさん mailto:sage [2009/06/17(水) 06:01:47 ] パフォーマンスカウンタ
119 名前:デフォルトの名無しさん mailto:sage [2009/06/17(水) 06:22:06 ] >>118 パフォーマンスカウンタでは>>115 の後半に書いたようなことは無理ですよね?
120 名前:デフォルトの名無しさん mailto:sage [2009/06/17(水) 07:35:49 ] fsutil fsinfo statistics で見られるのだから、どこかに記録されているのは確か。 パフォーマンスカウンタかWMI辺りなんだろうけど。
121 名前:デフォルトの名無しさん mailto:sage [2009/06/17(水) 09:29:39 ] NtQueryVolumeInformationFile辺りだな