Win32APIについての質問はこちらへどうぞ。
■注意
・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。
・日本語版MSDN Online Libraryは不完全です。
英語版( http://msdn.microsoft.com/en-us/library/ )の利用推奨。
・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。
・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで
■過去スレ
Win32API質問箱 Build124
http://mevius.5ch.net/test/read.cgi/tech/1510395780/
Win32API質問箱 Build123
http://mevius.2ch.net/test/read.cgi/tech/1475897582/
Win32API質問箱 Build122
http://echo.2ch.net/test/read.cgi/tech/1451988219/
Win32API質問箱 Build121
http://echo.2ch.net/test/read.cgi/tech/1438695290/
Win32API質問箱 Build120
http://echo.2ch.net/test/read.cgi/tech/1428570962/
■関連スレ
Visual Studio 2019
http://mevius.5ch.net/test/read.cgi/tech/1548765663/
Visual Studio 2017 Part6
http://mevius.5ch.net/test/read.cgi/tech/1528645068/
【C++】 DirectX初心者質問スレ Part41 【C】
http://mevius.5ch.net/test/read.cgi/tech/1521786252/
Win32API質問箱 Build125
レス数が1000を超えています。これ以上書き込みはできません。
1デフォルトの名無しさん
2019/02/27(水) 15:09:08.64ID:6ExXwgQU952デフォルトの名無しさん
2020/02/26(水) 11:15:27.85ID:wiEfavJ1953デフォルトの名無しさん
2020/02/26(水) 11:17:27.14ID:wiEfavJ1954デフォルトの名無しさん
2020/02/26(水) 19:34:00.57ID:dDQscU5G955デフォルトの名無しさん
2020/02/28(金) 18:42:51.53ID:HAMXUqwp956デフォルトの名無しさん
2020/02/28(金) 18:45:16.07ID:HAMXUqwp957デフォルトの名無しさん
2020/03/05(木) 00:47:31.66ID:HyVcGvBE WM_WINDOWPOSCHANGING
というメッセージは、lParamにWINDOWPOS構造体のアドレスが渡されてきて、
その中のflagsメンバなどを修正するとZ-Orderの変化を阻止したり出来ます。
それは実験的に確認しました。質問は、この仕組みのことなのですが、
GetMessage()でこのメッセージを受けた後、DispatchMessage()経由で WindorProc()
に来ることが前提なのかと言うことです。逆に、
GetMessage()でこのメッセージを受けた後、DispatchMessage()を経由せずに、独自に
WindowProc()を呼び出した場合は、WINDOWPOSの中を変えたとしてもWindows Systemは
感知しないのではないかと思うのです。
今までメッセージループ内で定型として漠然と DispatchMessage() を使ってきたのですが、
こんな不思議な仕組みだったのでしょうか。
というメッセージは、lParamにWINDOWPOS構造体のアドレスが渡されてきて、
その中のflagsメンバなどを修正するとZ-Orderの変化を阻止したり出来ます。
それは実験的に確認しました。質問は、この仕組みのことなのですが、
GetMessage()でこのメッセージを受けた後、DispatchMessage()経由で WindorProc()
に来ることが前提なのかと言うことです。逆に、
GetMessage()でこのメッセージを受けた後、DispatchMessage()を経由せずに、独自に
WindowProc()を呼び出した場合は、WINDOWPOSの中を変えたとしてもWindows Systemは
感知しないのではないかと思うのです。
今までメッセージループ内で定型として漠然と DispatchMessage() を使ってきたのですが、
こんな不思議な仕組みだったのでしょうか。
958デフォルトの名無しさん
2020/03/05(木) 01:09:07.09ID:HyVcGvBE959デフォルトの名無しさん
2020/03/08(日) 15:08:53.14ID:nGQiIF3A PeekMessage()のPM_QS_SENDMESSAGEの働きが分かりません。MSDNによれば:
「Process all sent messages.」
「During this call, the system delivers pending messages that were sent to windows owned by the calling thread using the SendMessage, SendMessageCallback, SendMessageTimeout, or SendNotifyMessage function. 」
となっていますが、SendMessage()でpending messagesされているメッセージとはいかなるものなんでしょうか。
この説明だとSendMessage()されたメッセージの内、pending状態にあるものは、PM_QS_SENDMESSAGEを指定したPostMessage()によって取得できることになってしまいますが、どういうことなのか分かりません。
「Process all sent messages.」
「During this call, the system delivers pending messages that were sent to windows owned by the calling thread using the SendMessage, SendMessageCallback, SendMessageTimeout, or SendNotifyMessage function. 」
となっていますが、SendMessage()でpending messagesされているメッセージとはいかなるものなんでしょうか。
この説明だとSendMessage()されたメッセージの内、pending状態にあるものは、PM_QS_SENDMESSAGEを指定したPostMessage()によって取得できることになってしまいますが、どういうことなのか分かりません。
960デフォルトの名無しさん
2020/03/08(日) 15:33:29.45ID:Y2NtS7Rm WM_PAINTとかはqueueの中で後回しにされるとかなんとか
961デフォルトの名無しさん
2020/03/08(日) 16:27:50.94ID:nGQiIF3A >>960
WM_PAINTは、この文脈では SendMessage() とは直接関係ないようですが。
WM_PAINTは、この文脈では SendMessage() とは直接関係ないようですが。
962デフォルトの名無しさん
2020/03/08(日) 23:38:12.25ID:LncuZlt6 別スレッドからsendされたメッセージとそのスレッド自体は待たされてる
963デフォルトの名無しさん
2020/03/09(月) 16:07:22.80ID:2N4Go4fT MS謹製の訳
「PeekMessage 関数を呼び出すと、呼び出し側スレッドが所有しているウィンドウへ送信されたメッセージのうち、保留されていたものを取得できます。
SendMessage、SendMessageCallback、SendMessageTimeout、SendNotifyMessage の各関数を使って送信されたメッセージが、これに該当します。」
他スレッドから送られたSendMessageは、PeekMessageを呼び出したときに受け取ることができる。
「PeekMessage 関数を呼び出すと、呼び出し側スレッドが所有しているウィンドウへ送信されたメッセージのうち、保留されていたものを取得できます。
SendMessage、SendMessageCallback、SendMessageTimeout、SendNotifyMessage の各関数を使って送信されたメッセージが、これに該当します。」
他スレッドから送られたSendMessageは、PeekMessageを呼び出したときに受け取ることができる。
964デフォルトの名無しさん
2020/03/10(火) 12:35:11.18ID:Fz4ou6bN Windows OSのバイブル『Windows Internals』を日本語解説するプロジェクトが“GitHub”で開始
実際に動作するアプリで高度かつ難解な内容をコードレベルで理解
https://forest.watch.impress.co.jp/docs/serial/yajiuma/1239207.html
>高度かつ難解と評される同書も、実際に動作するC++/Win32 APIのコードをみながら読み進めれば理解が深まるかもしれません。
実際に動作するアプリで高度かつ難解な内容をコードレベルで理解
https://forest.watch.impress.co.jp/docs/serial/yajiuma/1239207.html
>高度かつ難解と評される同書も、実際に動作するC++/Win32 APIのコードをみながら読み進めれば理解が深まるかもしれません。
965デフォルトの名無しさん
2020/03/10(火) 12:40:22.12ID:Fz4ou6bN windows-internals-guide / security
https://github.com/windows-internals-guide/security
https://github.com/windows-internals-guide/security
966デフォルトの名無しさん
2020/03/10(火) 14:11:52.55ID:5w+xr38c967デフォルトの名無しさん
2020/03/10(火) 15:57:41.69ID:JsRj3KRf968デフォルトの名無しさん
2020/03/10(火) 16:18:50.52ID:6U0G3mdW969デフォルトの名無しさん
2020/03/10(火) 16:39:29.06ID:5w+xr38c >>967
すみませんが、その日本語は何をおっしゃっているのか分かりません。
すみませんが、その日本語は何をおっしゃっているのか分かりません。
970デフォルトの名無しさん
2020/03/10(火) 16:43:57.61ID:5w+xr38c >>968
その図の意味は分かりました。
しかし、それだと他スレッドへSendMessage()した場合、
他スレッドがGetMessage()やPeekMessage()を行って、DispatchMessage()
などを行わない限りは (他スレッドの)WndProc の実行が始まらないことに
なります。
しかし、現実には他スレッドへのSendMessage の場合でも、他スレッドで
Get, Peek, Dispatch が全く実行されてなくても、WndProc は
実行されると思います。
その図の意味は分かりました。
しかし、それだと他スレッドへSendMessage()した場合、
他スレッドがGetMessage()やPeekMessage()を行って、DispatchMessage()
などを行わない限りは (他スレッドの)WndProc の実行が始まらないことに
なります。
しかし、現実には他スレッドへのSendMessage の場合でも、他スレッドで
Get, Peek, Dispatch が全く実行されてなくても、WndProc は
実行されると思います。
971デフォルトの名無しさん
2020/03/10(火) 18:18:36.62ID:X+eVfRrs そだね
972デフォルトの名無しさん
2020/03/10(火) 18:42:02.55ID:5w+xr38c >>970
それか、他スレッドへ SendMessage() した場合、勝手に WndProc() が call
されてしまうとプログラムのデータが破壊されてしまう可能性があるので、
必ず Queue に入れてから、メッセージループの GetMessage() と DispatchMessage()
を介しての実行になるのかもしれませんね。
それか、他スレッドへ SendMessage() した場合、勝手に WndProc() が call
されてしまうとプログラムのデータが破壊されてしまう可能性があるので、
必ず Queue に入れてから、メッセージループの GetMessage() と DispatchMessage()
を介しての実行になるのかもしれませんね。
973蟻人間 ◆T6xkBnTXz7B0
2020/03/15(日) 10:32:57.21ID:C2+jTQYL メッセージキューは思ったよりも複雑な問題だ。
EternalWindowsに詳しい解説がある。
http://eternalwindows.jp/windevelop/message/message00.html
このあたりを読んでみるとよい。
EternalWindowsに詳しい解説がある。
http://eternalwindows.jp/windevelop/message/message00.html
このあたりを読んでみるとよい。
974デフォルトの名無しさん
2020/03/22(日) 22:07:39.51ID:Y1m3LOPd ファイル名の半角文字を小文字に統一したいのですが、MoveFile を使っても
大小の違いだけでは同一名と判断されてうまくいきません。
何かスマートな対策がありますでしょうか?
大小の違いだけでは同一名と判断されてうまくいきません。
何かスマートな対策がありますでしょうか?
975デフォルトの名無しさん
2020/03/22(日) 22:11:21.04ID:vCMoGjtA アンダーバー付きとかのファイルにリネームしてから本来のファイル名にする
976デフォルトの名無しさん
2020/03/22(日) 22:14:24.19ID:Y1m3LOPd >>975
一度別のファイル名にしても、元のファイル名を覚えているようでダメでした。
一度別のファイル名にしても、元のファイル名を覚えているようでダメでした。
977デフォルトの名無しさん
2020/03/22(日) 22:32:40.03ID:Y1m3LOPd MoveFile("A.TXT","B.TXT");
getchar();
MoveFile("B.TXT","a.txt");
これなら成功するので(笑)、おそらく時間稼ぎする方法があると思うのですが。
getchar();
MoveFile("B.TXT","a.txt");
これなら成功するので(笑)、おそらく時間稼ぎする方法があると思うのですが。
978デフォルトの名無しさん
2020/03/22(日) 22:45:46.95ID:uAP5d0yV MoveFileExでMOVEFILE_WRITE_THROUGH付ければいいんでね?
979デフォルトの名無しさん
2020/03/22(日) 23:07:05.99ID:Y1m3LOPd だめでした。
980デフォルトの名無しさん
2020/03/22(日) 23:19:56.25ID:CUaNxsQr >>974
MoveFile("A.txt","a.txt"); でちゃんと名前変わったんだけど
うまく行かないのはコンパイラの最適化とかで無かったことにされているだけじゃないの?
それともGetLastError()とかでそういうrたーが出てるの?
MoveFile("A.txt","a.txt"); でちゃんと名前変わったんだけど
うまく行かないのはコンパイラの最適化とかで無かったことにされているだけじゃないの?
それともGetLastError()とかでそういうrたーが出てるの?
981デフォルトの名無しさん
2020/03/22(日) 23:20:30.59ID:CUaNxsQr そういうrたーが出てるの? → そういうエラーが出てるの?
982デフォルトの名無しさん
2020/03/22(日) 23:22:37.63ID:vCMoGjtA 中間ファイル名を噛ませなくてもMoveFileでいけるみたいなんだけど
表示上変わっていないだけで、最新の情報に更新したら変わったりしない?
表示上変わっていないだけで、最新の情報に更新したら変わったりしない?
983蟻人間 ◆T6xkBnTXz7B0
2020/03/22(日) 23:23:09.89ID:QaK/2gK6 最新の情報に更新
984デフォルトの名無しさん
2020/03/22(日) 23:37:48.62ID:Y1m3LOPd 俺環かな?と思って、Cドライブ(NTFS)に移すとうまくいきました。
Dドライブ(exFAT/USB)ではうまくいきませんでしたので仕様なんでしょうか。
お騒がせしました。ありがとうございました。
Dドライブ(exFAT/USB)ではうまくいきませんでしたので仕様なんでしょうか。
お騒がせしました。ありがとうございました。
985デフォルトの名無しさん
2020/03/22(日) 23:41:29.01ID:wzrJAqaa >>977
getcharじゃなくてb.txtの存在を確認汁
getcharじゃなくてb.txtの存在を確認汁
986デフォルトの名無しさん
2020/03/23(月) 09:36:16.44ID:3LuOM/hB >>984
FATだとうまくいかないよ
FATだとうまくいかないよ
987デフォルトの名無しさん
2020/03/23(月) 12:17:49.13ID:bf1cRh+B >>986
確か、FATは、MS-DOS時代、もともとファイル名に大文字小文字の区別が無かった。
コマンドラインからコマンド名やファイル名を小文字で入力しても、大文字のファイルが検索された。
そして、FATのディスクの中の「ディレクトリ構造」の「エントリ」には、必ず全て大文字に直した
ファイル名が記録されていた。
その影響がまだ残っていることがあるようだ。
確か、FATは、MS-DOS時代、もともとファイル名に大文字小文字の区別が無かった。
コマンドラインからコマンド名やファイル名を小文字で入力しても、大文字のファイルが検索された。
そして、FATのディスクの中の「ディレクトリ構造」の「エントリ」には、必ず全て大文字に直した
ファイル名が記録されていた。
その影響がまだ残っていることがあるようだ。
988デフォルトの名無しさん
2020/04/05(日) 23:04:44.99ID:5OY2rQyy フォントの高さの取得方法について質問があります。
現在DCに選択されているフォントの "高さ" を取得して、大学ノートの罫線のようなものを、その高さの
間隔で描画することを考えています。調べてみると GetTextExtentPoint32 というAPIがフォントのサイズを
計算してくれるようなのですが、引数に文字列が要求されます。しかし、罫線と罫線の間にどんな文字列を
描画するかは未定です。現在は適当な1文字だけ指定して高さを求めていますが、その文字よりも高さが
大きい文字が存在する場合、罫線をはみ出してしまうのではないか思います。
特定のフォントの、全ての文字を包含する高さを取得する方法はないのでしょうか。
よろしくお願いします。
現在DCに選択されているフォントの "高さ" を取得して、大学ノートの罫線のようなものを、その高さの
間隔で描画することを考えています。調べてみると GetTextExtentPoint32 というAPIがフォントのサイズを
計算してくれるようなのですが、引数に文字列が要求されます。しかし、罫線と罫線の間にどんな文字列を
描画するかは未定です。現在は適当な1文字だけ指定して高さを求めていますが、その文字よりも高さが
大きい文字が存在する場合、罫線をはみ出してしまうのではないか思います。
特定のフォントの、全ての文字を包含する高さを取得する方法はないのでしょうか。
よろしくお願いします。
989デフォルトの名無しさん
2020/04/06(月) 07:39:00.13ID:mqwqQyFB LOGFONT で GetObject ?
990デフォルトの名無しさん
2020/04/06(月) 17:35:52.64ID:9OrS0ii6 >>989
ご回答ありがとうございます。
符号の違いはありますが、GetTextExtentPoint32 と同じ値が返ってくるようです。いずれも、指定した文字のサイズにかかわらず一定値が返ってくるようなので問題なさそうです。フォントの高さだけが知りたいので GetObject のほうがシンプルですね。ありがとうございました。
ご回答ありがとうございます。
符号の違いはありますが、GetTextExtentPoint32 と同じ値が返ってくるようです。いずれも、指定した文字のサイズにかかわらず一定値が返ってくるようなので問題なさそうです。フォントの高さだけが知りたいので GetObject のほうがシンプルですね。ありがとうございました。
991蟻人間 ◆T6xkBnTXz7B0
2020/04/07(火) 19:03:16.48ID:qBIbpTMr992デフォルトの名無しさん
2020/04/07(火) 19:09:20.97ID:G5F9VLMp >>991
下部の他のリンクが色々あるね
下部の他のリンクが色々あるね
993デフォルトの名無しさん
2020/05/01(金) 21:15:57.49ID:G8jCLL5C excelVBAでシリアル通信をする為にコード例を探してきて使っています。
ポートのファイルハンドラがわからなくなった場合に強制的にポートを閉じることは可能でしょうか。デバッグリセットかけた際に変数が初期化されてポート操作が出来なくなりました。excelを立ち上げ直すと操作可能になるので何か方法があると思うのですが
ポートのファイルハンドラがわからなくなった場合に強制的にポートを閉じることは可能でしょうか。デバッグリセットかけた際に変数が初期化されてポート操作が出来なくなりました。excelを立ち上げ直すと操作可能になるので何か方法があると思うのですが
994デフォルトの名無しさん
2020/05/01(金) 21:58:30.10ID:ZJ42fMZB 立ち上げ直しで解放されるのはプロセスが終了するからでは?
995デフォルトの名無しさん
2020/05/01(金) 22:17:30.19ID:ZJ42fMZB Win32API質問箱 Build126
https://mevius.5ch.net/test/read.cgi/tech/1588339011/
https://mevius.5ch.net/test/read.cgi/tech/1588339011/
996デフォルトの名無しさん
2020/05/03(日) 09:49:30.01ID:zajIy9nA うめぽよ
997デフォルトの名無しさん
2020/05/03(日) 19:29:37.98ID:WJxvDkhH UME
user method exchangeという謎の技術名を考えた
何に使うかはしらん
user method exchangeという謎の技術名を考えた
何に使うかはしらん
998デフォルトの名無しさん
2020/05/03(日) 19:31:20.04ID:n4+dE3Bb Unknown Machine Error
999デフォルトの名無しさん
2020/05/03(日) 19:41:24.49ID:cVVrQdBT Unrecoverable Memory Error
1000デフォルトの名無しさん
2020/05/03(日) 19:41:40.77ID:cVVrQdBT U+M*E=1000
10011001
Over 1000Thread このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 431日 4時間 32分 32秒
新しいスレッドを立ててください。
life time: 431日 4時間 32分 32秒
10021002
Over 1000Thread 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。
ニュース
- 【中国外務省】日中関係悪化は高市氏に責任と名指しで非難… [BFU★]
- 【中国外務省】日中関係悪化は高市氏に責任と名指しで非難… ★2 [BFU★]
- 外務省局長は無言で厳しい表情…日中の高官協議終了か 高市首相“台湾”発言で中国が強硬対応 発言撤回求めたか…★2 [BFU★]
- 小野田紀美・経済安保担当相「何か気に入らないことがあればすぐに経済的威圧をする国への依存はリスク」 [Hitzeschleier★]
- 政府、株式の配当など金融所得を高齢者の医療保険料や窓口負担に反映する方針を固めた [バイト歴50年★]
- 【維新】吉村知事「中国人観光客だけに頼るビジネスモデル変えていかないといけない」「高市総理の発言は撤回する必要はない」 [Hitzeschleier★]
- 中国高官と話す外務省局長の表情、やばい [175344491]
- 中国外務省「日中関係の悪化は高市早苗首相が原因」と名指しで強く非難。キタ━(゚∀゚)━! [153490809]
- 小野田経済安保相「すぐに経済的威圧するところへの依存はリスク」😲 [861717324]
- 【高市速報】明日から中国からの輸入が停止すれば2ヵ月で国内の生産業に53兆円の損失発生 [931948549]
- 【悲報】ジャップ、どうやら中国が一方的に戦争仕掛けてくると思ってる模様😰 [616817505]
- 日本政府「高市総理の発言は問題ないと伝え、中国総領事のSNS投稿は問題があると中国に伝えました😊」 [931948549]
