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
レス数が950を超えています。1000を超えると書き込みができなくなります。
1デフォルトの名無しさん
2019/02/27(水) 15:09:08.64ID:6ExXwgQU874デフォルトの名無しさん
2019/12/14(土) 22:05:00.87ID:kglnzMFx 5ch初心者か?
嵐の相手する奴もまた嵐
って言葉も知らんの?
嵐の相手する奴もまた嵐
って言葉も知らんの?
875デフォルトの名無しさん
2019/12/16(月) 13:57:19.13ID:OEfOSaxg ここが適切かどうか解りませんが最近のWindows10で腑に落ちないことが
32bitのアプリ内からプリンタドライバ経由でファイル生成を行ってたんですが
実体のファイルが無い(=親プロセスから見えない)のに処理が完了するようになってました
少なくともWindows7やWindows10初期では出なかった問題なのでここ最近のアップデートで
関連する何かの仕様変更があったのでしょうか?
今までは次ステップ処理で単にファイルの存在確認だけで問題無かったのですが
対策として存在確認の前に生成されていない状況を想定し、ウェイト入りで
複数回確認することで回避は出来ています
変更内容によっては他の箇所も潜在的な問題が埋まってることになるのでいっぱい見直さないと・・・
32bitのアプリ内からプリンタドライバ経由でファイル生成を行ってたんですが
実体のファイルが無い(=親プロセスから見えない)のに処理が完了するようになってました
少なくともWindows7やWindows10初期では出なかった問題なのでここ最近のアップデートで
関連する何かの仕様変更があったのでしょうか?
今までは次ステップ処理で単にファイルの存在確認だけで問題無かったのですが
対策として存在確認の前に生成されていない状況を想定し、ウェイト入りで
複数回確認することで回避は出来ています
変更内容によっては他の箇所も潜在的な問題が埋まってることになるのでいっぱい見直さないと・・・
876デフォルトの名無しさん
2019/12/16(月) 14:51:44.29ID:0QfDHC/h ファイル生成完了するまで処理が戻ってこなかったのに、完了前に戻ってくるようになったって事?
これはむしろ昔からそのような仕様だったような
印刷枚数を厳密に管理するためにファイルに吐いてから自分で印刷をかけるシステムを
組んだことあるけど、ファイル生成完了まで待つ処理を作ってた記憶がある
ファイルが見えないだけなら権限の問題じゃないのかね
これはむしろ昔からそのような仕様だったような
印刷枚数を厳密に管理するためにファイルに吐いてから自分で印刷をかけるシステムを
組んだことあるけど、ファイル生成完了まで待つ処理を作ってた記憶がある
ファイルが見えないだけなら権限の問題じゃないのかね
877デフォルトの名無しさん
2019/12/16(月) 19:04:49.34ID:OEfOSaxg >>876
ファイル生成完了前に戻ってくるようになった、という認識です
Windows2000の時に組んで今年に入るまでは問題報告を受けてませんでした
アクセス権の反映と思って(あるけど触れない)単純に1〜2秒のウェイト入れて一時的に
回避してたのですがそれでもおかしい時があるのでキッチリ見えるようになるまで待つようにしました
Windows7の時にもの凄い回数の負荷テストを乗り越えてた処理なので
少なくともWindows10以降からの仕様とは思ってるですけどねぇ・・・
ファイル生成完了前に戻ってくるようになった、という認識です
Windows2000の時に組んで今年に入るまでは問題報告を受けてませんでした
アクセス権の反映と思って(あるけど触れない)単純に1〜2秒のウェイト入れて一時的に
回避してたのですがそれでもおかしい時があるのでキッチリ見えるようになるまで待つようにしました
Windows7の時にもの凄い回数の負荷テストを乗り越えてた処理なので
少なくともWindows10以降からの仕様とは思ってるですけどねぇ・・・
878デフォルトの名無しさん
2019/12/16(月) 20:45:50.96ID:0QfDHC/h >>877
Win95〜ME辺りの相当前のことなのでちゃんと覚えてなかったゴメン
ソース引っ張り出してみたけど、単にメッセージループ挟みながら
出力ファイルをaccess関数に渡して0が返ってくるの待ってるだけだった
この後自分でポートに出力してる流れ
この時のaccessが0を返すタイミングがファイル作成中なのか終了後なのかもはやよく分からないけど、
ファイル作成中なら後のポート出力で死にそうなんだよね・・
古すぎてもう動作確認無理
この辺の動きはプリンタードライバーによっても違ったような気もする
(意図した動きをEPSONはするけどCANNONはしなかったとかで、EPSONを採用したような)
いずれにせよ古すぎる話なので流し読みしてください
Win95〜ME辺りの相当前のことなのでちゃんと覚えてなかったゴメン
ソース引っ張り出してみたけど、単にメッセージループ挟みながら
出力ファイルをaccess関数に渡して0が返ってくるの待ってるだけだった
この後自分でポートに出力してる流れ
この時のaccessが0を返すタイミングがファイル作成中なのか終了後なのかもはやよく分からないけど、
ファイル作成中なら後のポート出力で死にそうなんだよね・・
古すぎてもう動作確認無理
この辺の動きはプリンタードライバーによっても違ったような気もする
(意図した動きをEPSONはするけどCANNONはしなかったとかで、EPSONを採用したような)
いずれにせよ古すぎる話なので流し読みしてください
879デフォルトの名無しさん
2019/12/17(火) 09:24:20.39ID:Gy2xCCd1 せっかくなのでもちょい情報共有
PrinterにFileName与えて印刷ジョブ作ってファイル保存させているのですがこのファイルが見えない
何かアンチウィルス系ソフトが引っかけてるのかと思って読み書き出来るようになるまで待つループを
入れてはみたけどそもそも見えない状態で印刷処理が終了して帰ってきてます
後工程ですがAdobeのDistillerAPIで上記のファイルからPDFに変換させてるんですが
明確にPDFファイル生成終わってから戻るってプロパティを指定しているにも関わらず
実体ファイルが見えない状態で元プロセスに戻ってくるって所です
子プロセスで生成したファイルを参照する場合、同期(処理完了待ち)してても
ちゃんと実体ファイルがある(見える)かどうか確認しろって仕様なんでしょうね
PrinterにFileName与えて印刷ジョブ作ってファイル保存させているのですがこのファイルが見えない
何かアンチウィルス系ソフトが引っかけてるのかと思って読み書き出来るようになるまで待つループを
入れてはみたけどそもそも見えない状態で印刷処理が終了して帰ってきてます
後工程ですがAdobeのDistillerAPIで上記のファイルからPDFに変換させてるんですが
明確にPDFファイル生成終わってから戻るってプロパティを指定しているにも関わらず
実体ファイルが見えない状態で元プロセスに戻ってくるって所です
子プロセスで生成したファイルを参照する場合、同期(処理完了待ち)してても
ちゃんと実体ファイルがある(見える)かどうか確認しろって仕様なんでしょうね
880デフォルトの名無しさん
2019/12/17(火) 10:37:37.67ID:sJgjk0Fu881デフォルトの名無しさん
2019/12/17(火) 10:41:56.82ID:sJgjk0Fu あプリンタドライバか
ちゃんと見てなかった
ちゃんと見てなかった
882デフォルトの名無しさん
2019/12/17(火) 10:48:38.27ID:rApV4krM とりあえずもちつけ
\もちつきワッショイ/
+ +
ペタン
+ +
/■\ ||| /■\
(´∀`) _ (´ー`)
( つ つ | |=O=O=)
`) ) )| ̄ ̄ ̄|( ( (
(_)_)|´∀`|(_(_)
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
\もちつきワッショイ/
+ +
ペタン
+ +
/■\ ||| /■\
(´∀`) _ (´ー`)
( つ つ | |=O=O=)
`) ) )| ̄ ̄ ̄|( ( (
(_)_)|´∀`|(_(_)
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
883デフォルトの名無しさん
2019/12/17(火) 11:03:41.27ID:KzMqUd+t 極大重圧呪文
敵の足元に事象の地平面が現れる
敵の足元に事象の地平面が現れる
884デフォルトの名無しさん
2019/12/17(火) 14:46:19.28ID:7Wrw/7IE 重圧はのしかかるものなのに足元とは
885デフォルトの名無しさん
2019/12/17(火) 17:24:25.91ID:6LhBKKEf >>883
ダイの大冒険?
ダイの大冒険?
886デフォルトの名無しさん
2019/12/17(火) 19:32:25.48ID:KzMqUd+t うわ、誤爆ってたの?
すまん今気付いたw
すまん今気付いたw
887蟻人間 ◆T6xkBnTXz7B0
2019/12/17(火) 22:37:32.43ID:meZ9RH2S SysLink controls for Windows 2000+
https://github.com/katahiromz/SysLink
https://github.com/katahiromz/SysLink
888デフォルトの名無しさん
2019/12/18(水) 00:53:57.57ID:05wxiJCk CreateProcessマスターに俺はなる!
889デフォルトの名無しさん
2019/12/20(金) 00:32:35.78ID:RUAfqlkn 質問させてください。
コマンドプロンプトが入力待ちしている時に、右クリックするとクリップボード内のテキストが貼り付けされますが、
キーやマウスの入力エミュレートを使わずに、似たことを外部プロセスから実行する方法ってありますか?
具体的には、所定の文字列をコマンドプロンプト入力待ち領域に貼り付けて使えるようにしたいです。
WriteConsoleOutput()はあくまでも文字列をコマンド窓内に描画するだけであり、これを入力文字列としては使えないという認識です。
コマンドプロンプトが入力待ちしている時に、右クリックするとクリップボード内のテキストが貼り付けされますが、
キーやマウスの入力エミュレートを使わずに、似たことを外部プロセスから実行する方法ってありますか?
具体的には、所定の文字列をコマンドプロンプト入力待ち領域に貼り付けて使えるようにしたいです。
WriteConsoleOutput()はあくまでも文字列をコマンド窓内に描画するだけであり、これを入力文字列としては使えないという認識です。
890デフォルトの名無しさん
2019/12/20(金) 02:39:17.63ID:u+7Wx2e4 printf? stdout?
891蟻人間 ◆T6xkBnTXz7B0
2019/12/20(金) 08:40:13.73ID:DMSRAkHW シェル自作がお望みかな?
892889
2019/12/20(金) 08:54:20.93ID:RUAfqlkn >>891
コマンドプロンプト版のhistoryにあたる doskey /h だけでは不満でdoskey /h の結果を使って、
プロンプト上で選んだ履歴文字列をプロンプトに出力して使えるようにし、
TABコマンドやF7, F8押下コマンド みたいな挙動が実現できればと思っています。
コマンドプロンプト版のhistoryにあたる doskey /h だけでは不満でdoskey /h の結果を使って、
プロンプト上で選んだ履歴文字列をプロンプトに出力して使えるようにし、
TABコマンドやF7, F8押下コマンド みたいな挙動が実現できればと思っています。
893889
2019/12/20(金) 08:58:30.35ID:RUAfqlkn F7押下で履歴リスト選択がCUIとして表示されますが、これを別プロセスで実現し、リスト選択した結果を呼び出し元プロセスのコマンドプロンプトに渡せればな、と。
894デフォルトの名無しさん
2019/12/20(金) 09:17:52.02ID:u+7Wx2e4 パイプでおk?
895デフォルトの名無しさん
2019/12/25(水) 16:33:13.35ID:P4bU09Ny ちょっと教えてください
スリープ解除後、自作アプリのウィンドウが勝手に
OSによって動かされることがあるんですが
ユーザでなくOSによってウィンドウが
移動させられたことを知る方法ってあります?
もしあれば教えてください
スリープ解除後、自作アプリのウィンドウが勝手に
OSによって動かされることがあるんですが
ユーザでなくOSによってウィンドウが
移動させられたことを知る方法ってあります?
もしあれば教えてください
896デフォルトの名無しさん
2019/12/25(水) 17:15:36.83ID:nxgYpIXA 誰に移動さられようが普通にウィンドウメッセージが飛んでくるんじゃねえの
897デフォルトの名無しさん
2019/12/25(水) 17:20:12.25ID:vypSjpz7 スリープ前後で瞬間的に解像度が変わっているんだろう
で、解像度の変更を監視するWin32APIは知らないけど
SystemEventsクラスで監視はできるらしい
ttps://smdn.jp/programming/tips/displayresolutionchanged/
で、解像度の変更を監視するWin32APIは知らないけど
SystemEventsクラスで監視はできるらしい
ttps://smdn.jp/programming/tips/displayresolutionchanged/
898デフォルトの名無しさん
2019/12/25(水) 20:46:10.87ID:5BvN72vp Windows Terminal ちょっと使ってみたんだが、良さがわからなかった。
マイクロソフト公式の「車輪の再発明」って感じ。
マイクロソフト公式の「車輪の再発明」って感じ。
899デフォルトの名無しさん
2019/12/25(水) 21:16:48.92ID:P4bU09Ny >>896,897
DisplaySettingsChangedでちょっとテストしてみます
DisplaySettingsChangedでちょっとテストしてみます
900895
2019/12/25(水) 23:24:15.33ID:P4bU09Ny WM_DISPLAYCHANGEで試してみました
質問には関係ありませんが、4KとFHDのデュアルモニタ構成で
スリープ復帰後にサブのFHDモニタのほうが先にアクティブになるのが原因で
個々のウィンドウが移動してしまうみたいです
22:51:29- Width=3840 Height=2160 MonitorCount=2 Left=3183 Top=921
-- Display Sleep
23:07:52- Width=1920 Height=1080 MonitorCount=1 Left=1271 Top=461
23:07:54- Width=3840 Height=2160 MonitorCount=2 Left=2542 Top=922
質問には関係ありませんが、4KとFHDのデュアルモニタ構成で
スリープ復帰後にサブのFHDモニタのほうが先にアクティブになるのが原因で
個々のウィンドウが移動してしまうみたいです
22:51:29- Width=3840 Height=2160 MonitorCount=2 Left=3183 Top=921
-- Display Sleep
23:07:52- Width=1920 Height=1080 MonitorCount=1 Left=1271 Top=461
23:07:54- Width=3840 Height=2160 MonitorCount=2 Left=2542 Top=922
901デフォルトの名無しさん
2019/12/26(木) 00:55:16.41ID:mIZi4PgB display portで繋いでると、ディスプレイの電源offを感知して
offってないディスプレイに勝手にウィンドウを移動するのがうざくてしかたない
offったディスプレイの電源をonしたら戻すならまだ許すんだけどそれはしてくれない
この動作をどこかのレジストリとかで止められないのかな
offってないディスプレイに勝手にウィンドウを移動するのがうざくてしかたない
offったディスプレイの電源をonしたら戻すならまだ許すんだけどそれはしてくれない
この動作をどこかのレジストリとかで止められないのかな
902デフォルトの名無しさん
2019/12/26(木) 01:22:41.29ID:rIhsLdYp HDMIでつなげば解決
903デフォルトの名無しさん
2019/12/26(木) 21:38:04.29ID:W3/psl0T904デフォルトの名無しさん
2019/12/26(木) 22:38:01.08ID:6ESypvgt905デフォルトの名無しさん
2019/12/27(金) 09:44:17.38ID:sALG2rcq PCがスリープかモニターがスリープか?
906デフォルトの名無しさん
2019/12/27(金) 12:49:32.62ID:Jp3jdKct907デフォルトの名無しさん
2019/12/28(土) 09:38:30.70ID:YUnrK54G908デフォルトの名無しさん
2019/12/28(土) 09:39:53.71ID:YUnrK54G あ、 DisplayPortの仕様の欠陥か
失礼失礼
失礼失礼
909901
2019/12/29(日) 02:37:17.25ID:vZG3cDjt ありがとう
>903の記事読んで適当にググってみたら、結構文句が出てる件なんだな
当たり前か
で、結局一番まともな解決法は>902というね…
OSが勝手に移動するのをやめてくれるだけでいいんだけどなぁ
>903の記事読んで適当にググってみたら、結構文句が出てる件なんだな
当たり前か
で、結局一番まともな解決法は>902というね…
OSが勝手に移動するのをやめてくれるだけでいいんだけどなぁ
910デフォルトの名無しさん
2019/12/29(日) 11:23:17.35ID:tkVKn3Ql モニタが急死したときには移動してくれると嬉しいけどなあ
急死と休止を判別できれば良いだけなのに
急死と休止を判別できれば良いだけなのに
911デフォルトの名無しさん
2019/12/29(日) 11:56:44.30ID:NDUAcuzf >offったディスプレイの電源をonしたら戻す
を行う常駐アプリは比較的簡単に作れそう。
さらに、2ndディスプレイがオフられた時、そこにあった窓は最小化する機能も上記と併せて作れそうだな。
を行う常駐アプリは比較的簡単に作れそう。
さらに、2ndディスプレイがオフられた時、そこにあった窓は最小化する機能も上記と併せて作れそうだな。
912デフォルトの名無しさん
2020/01/13(月) 02:20:53.55ID:KqHO+Fgo コマンドプロンプト上で doskey /reinstall とコマンド実行したら何が起きるのが正しいの?
913デフォルトの名無しさん
2020/01/14(火) 03:51:15.28ID:D4OVEYsz 自分のマシンで起きたことが正しい
914デフォルトの名無しさん
2020/01/14(火) 11:19:01.21ID:R0T58PMv 魔界への扉が開きました
915デフォルトの名無しさん
2020/01/14(火) 12:05:02.42ID:9+tQ8K1Z オーラロードが開かれた。きらめく光、オレをうつ。
conhost.exe、コアダンプ吐いても恐れはしない。飛び込めばいい。
肉を切らせてとどめを刺せば。
conhost.exe、コアダンプ吐いても恐れはしない。飛び込めばいい。
肉を切らせてとどめを刺せば。
916デフォルトの名無しさん
2020/02/08(土) 00:55:22.95ID:Qm4Y0Gmj GetLastInputInfoって管理者権限じゃないとちゃんと値が返ってこないっぽいんだけど、こんなもんなんですかね
アイドル時間知りたいだけなのに管理者って・・・
using System;
using System.Runtime.InteropServices;
public class GIT {
[DllImport("User32.dll")]
private static extern bool GetLastInputInfo(ref LASTINPUTINFO plii);
internal struct LASTINPUTINFO {
public uint cbSize;
public uint dwTime;
}
public static uint GetIdleTime() {
LASTINPUTINFO lastInPut = new LASTINPUTINFO();
lastInPut.cbSize = (uint)System.Runtime.InteropServices.Marshal.SizeOf(lastInPut);
GetLastInputInfo(ref lastInPut);
return (uint)Environment.TickCount - lastInPut.dwTime;
}
}
アイドル時間知りたいだけなのに管理者って・・・
using System;
using System.Runtime.InteropServices;
public class GIT {
[DllImport("User32.dll")]
private static extern bool GetLastInputInfo(ref LASTINPUTINFO plii);
internal struct LASTINPUTINFO {
public uint cbSize;
public uint dwTime;
}
public static uint GetIdleTime() {
LASTINPUTINFO lastInPut = new LASTINPUTINFO();
lastInPut.cbSize = (uint)System.Runtime.InteropServices.Marshal.SizeOf(lastInPut);
GetLastInputInfo(ref lastInPut);
return (uint)Environment.TickCount - lastInPut.dwTime;
}
}
917デフォルトの名無しさん
2020/02/08(土) 10:26:36.59ID:yaVA2/v3 4時間アイドル状態になってたらハッカーも侵入しやすそうだからな
知りたい情報の一つだろう
知りたい情報の一つだろう
918デフォルトの名無しさん
2020/02/08(土) 11:37:22.67ID:1udHLgDG EnableWindow(hwnd, FALSE);
この状態でhwndのウィンドウがクリックされた事を知るにはどうすればいいですか?
モーダルダイアログを表示してる間はそれ以外のウィンドウを無効にしてるんですが(MessageBoxで言う所のTASKMODAL)
hwndがクリックされたら有効になってるモーダルダイアログをアクティブにしたいんです
この状態でhwndのウィンドウがクリックされた事を知るにはどうすればいいですか?
モーダルダイアログを表示してる間はそれ以外のウィンドウを無効にしてるんですが(MessageBoxで言う所のTASKMODAL)
hwndがクリックされたら有効になってるモーダルダイアログをアクティブにしたいんです
919デフォルトの名無しさん
2020/02/08(土) 11:51:40.23ID:v1IBJgnW 管理者じゃなくても実行出来てるみたいだが
920デフォルトの名無しさん
2020/02/08(土) 11:52:14.52ID:v1IBJgnW ああ実行できるだけで値が可笑しいのか
921デフォルトの名無しさん
2020/02/08(土) 12:05:40.70ID:v1IBJgnW >>918
hwndをモーダルなウィンドウのparentにしておけば良いんじゃね
hwndをモーダルなウィンドウのparentにしておけば良いんじゃね
922デフォルトの名無しさん
2020/02/08(土) 16:25:55.15ID:1udHLgDG >>921
ありがとうございます
それだと親の時だけFlashWindowとMessageBeepの動作になるんですよね
セオリーかはわかりませんがこれで目的の動作になりました
// クリックされた側のプロシージャ内
case WM_SETCURSOR:
if(HIWORD(lParam) == WM_LBUTTONDOWN)
if(LOWORD(lParam) == (WORD)HTERROR)
// hwndがクリックされた時の動作
ありがとうございます
それだと親の時だけFlashWindowとMessageBeepの動作になるんですよね
セオリーかはわかりませんがこれで目的の動作になりました
// クリックされた側のプロシージャ内
case WM_SETCURSOR:
if(HIWORD(lParam) == WM_LBUTTONDOWN)
if(LOWORD(lParam) == (WORD)HTERROR)
// hwndがクリックされた時の動作
923デフォルトの名無しさん
2020/02/09(日) 21:47:59.30ID:VD5bohdG GetGlyphOutline などで文字画像を取り出そうとすると、フォントが持ってない文字は代わりの文字を出力してくる。
(例えば、昔の毛筆フォントでは「(はしご高)」などはMSゴシックになる。)
これを抑制したいので、そのフォントがグリフデータを持っているかどうか、調べる方法はありますでしょうか?
すれ違いと言われてここを紹介されました。
(例えば、昔の毛筆フォントでは「(はしご高)」などはMSゴシックになる。)
これを抑制したいので、そのフォントがグリフデータを持っているかどうか、調べる方法はありますでしょうか?
すれ違いと言われてここを紹介されました。
924デフォルトの名無しさん
2020/02/09(日) 22:40:23.79ID:iEENywsd フォントフォールバックやらフォントリンク無視したいならUniscribeのAPI使えばいけるかもな
925デフォルトの名無しさん
2020/02/10(月) 16:17:30.96ID:TGcYvj29 FreeFont とかの DLL 使っても良いと思うし
グリフがあるかどうか確認したいだけなら
ファイルを直接操作してインデックスがあるかどうかだけ観ても良い
グリフがあるかどうか確認したいだけなら
ファイルを直接操作してインデックスがあるかどうかだけ観ても良い
926デフォルトの名無しさん
2020/02/11(火) 01:46:21.54ID:N6oHYtf1 923ですが、GetGlyphIndices で自己解決しました。ありがとうございました。
927デフォルトの名無しさん
2020/02/11(火) 11:42:16.91ID:KtXysiBK FreeFont じゃない FreeType
928デフォルトの名無しさん
2020/02/14(金) 04:06:03.77ID:+zlzzx/H CreateWindowをした時に、強制的にウィンドウが開かれてしまうのですが、
これを最初は非表示にすることってできないでしょうか?
これを最初は非表示にすることってできないでしょうか?
929デフォルトの名無しさん
2020/02/14(金) 04:53:29.98ID:0uq7uYLU WS_VISIBLEを抜く
930デフォルトの名無しさん
2020/02/14(金) 08:32:06.27ID:L0qSgtfV トップレベルウィンドウの事ならShowWindow SW_HIDEにする
931デフォルトの名無しさん
2020/02/14(金) 14:52:03.31ID:1V6axvhx932デフォルトの名無しさん
2020/02/14(金) 17:55:12.05ID:I6SUroxS (1レス目で答え出てるんちゃうか・・・)
933デフォルトの名無しさん
2020/02/14(金) 19:42:58.46ID:1V6axvhx 即表示にしてないはずなのに一瞬出るって問題ちょくちょく出るかんな
934デフォルトの名無しさん
2020/02/15(土) 03:03:52.13ID:6/Lp/FUD 理由は忘れたし検証する気はないが、普段非表示で必要時のみウィンドウを表示する
アプリを作ったときは CreateWindowEx を使ってウィンドウサイズ0でやってた
アプリを作ったときは CreateWindowEx を使ってウィンドウサイズ0でやってた
935デフォルトの名無しさん
2020/02/15(土) 05:39:02.31ID:ceUVsII7 初回のShowWindowではSW_xxxは無視される
936デフォルトの名無しさん
2020/02/15(土) 09:27:01.61ID:w0AGl45A >>935
SW_HIDE試したけど無視されずに非表示になったよ
SW_HIDE試したけど無視されずに非表示になったよ
937デフォルトの名無しさん
2020/02/15(土) 16:03:34.65ID:0hgUDlXi ウィンドウの種類による
938デフォルトの名無しさん
2020/02/15(土) 18:47:38.00ID:ceUVsII7 STARTUPINO si;
si.dwFlags = STARTF_USESHOWWINDOW;
si.wShowWindow = SW_SHOWMAXIMIZED;
で、こっちが優先される
SW_SHOWNORMALだとアプリケーションの設定に従うようだ
si.dwFlags = STARTF_USESHOWWINDOW;
si.wShowWindow = SW_SHOWMAXIMIZED;
で、こっちが優先される
SW_SHOWNORMALだとアプリケーションの設定に従うようだ
939デフォルトの名無しさん
2020/02/16(日) 00:51:56.00ID:I6oNTTaj START /MIN "" "C:\Windows\Notepad.exe"
940デフォルトの名無しさん
2020/02/24(月) 12:55:56.34ID:gSBwNpi/ reg export HKCU\Software\...
でレジストリの内容をエクスポートできますが、
このコマンドと同じことをAPIを使って行うことはできますか?
でレジストリの内容をエクスポートできますが、
このコマンドと同じことをAPIを使って行うことはできますか?
941デフォルトの名無しさん
2020/02/24(月) 13:53:35.46ID:9Kd/PSPa このあたりを使えばできるんじゃね、知らんけど
https://docs.microsoft.com/en-us/windows/win32/sysinfo/registry-functions
https://docs.microsoft.com/en-us/windows/win32/sysinfo/registry-functions
942デフォルトの名無しさん
2020/02/25(火) 09:52:47.18ID:Hq3bKq4G >>941
やっぱり自前で一から組み立てて真似しないといけないんですかね。
常駐ソフトの終了時にreg exportをCreateProcessで実行したいんですが、
WM_ENDSESSIONの中ではCreateProcessは失敗するようなんです。
やっぱり自前で一から組み立てて真似しないといけないんですかね。
常駐ソフトの終了時にreg exportをCreateProcessで実行したいんですが、
WM_ENDSESSIONの中ではCreateProcessは失敗するようなんです。
943デフォルトの名無しさん
2020/02/25(火) 10:04:04.72ID:1Gze6tYX WM_DESTROYでやれば
944デフォルトの名無しさん
2020/02/25(火) 10:28:13.32ID:Hq3bKq4G945デフォルトの名無しさん
2020/02/25(火) 13:23:26.90ID:FzVRg2bh WM_CLOSE とか WM_DESTROY とか自分で呼べば
946デフォルトの名無しさん
2020/02/25(火) 16:32:29.34ID:Hq3bKq4G947デフォルトの名無しさん
2020/02/25(火) 18:18:41.79ID:FzVRg2bh CreateProcessを呼んでからCloseするんやろ
948デフォルトの名無しさん
2020/02/25(火) 18:21:12.16ID:1Gze6tYX WM_DESTROYとか来ないね
まあ聞いてる間に自分で組んでたらとっくに終わってる感
キーを読みながらぐるぐるループ回して吐くだけでしょ?
まあ聞いてる間に自分で組んでたらとっくに終わってる感
キーを読みながらぐるぐるループ回して吐くだけでしょ?
949デフォルトの名無しさん
2020/02/25(火) 18:46:36.65ID:yWXkUq9v WM_ENDSESSIONから戻った後はたとえイベント発火したとしてもkillされる可能あるし
950デフォルトの名無しさん
2020/02/25(火) 21:59:24.69ID:B0KlsSQW951デフォルトの名無しさん
2020/02/26(水) 03:04:08.38ID:KxcyAhRx typedef struct
{
WORD idReserved;
WORD idType;
WORD idCount;
} ICONDIR;
#pragma pack( push )
#pragma pack( 2 )
typedef struct
{
BYTE bWidth;
BYTE bHeight;
BYTE bColorCount;
BYTE bReserved;
WORD wPlanes;
WORD wBitCount;
DWORD dwBytesInRes;
WORD nID;
} GRPICONDIRENTRY;
#pragma pack( pop )
で、ICONDIR の後ろに GRPICONDIRENTRY を個数分だけ並べて ico ファイルから引っ張ってきたデータをそれに突っ込んでUpdateResource()してる。
もちろん対応するRT_ICONにイメージは追加してある。
実行時にエラーも出ないし、ResourceHackerなどで見ても、ちゃんと登録されているのだが、エクスプローラーの表示を特大アイコンにしても48x48の中央寄せ表示になってしまうんだ。
マルチプルアイコンを、::UpdateResource()で登録するとき、なにかシングルアイコンと比べて注意することがあるなら教えてください。
参考URLでもOKです(探してみたけれどシングルアイコンのものしか見つからなかった)
{
WORD idReserved;
WORD idType;
WORD idCount;
} ICONDIR;
#pragma pack( push )
#pragma pack( 2 )
typedef struct
{
BYTE bWidth;
BYTE bHeight;
BYTE bColorCount;
BYTE bReserved;
WORD wPlanes;
WORD wBitCount;
DWORD dwBytesInRes;
WORD nID;
} GRPICONDIRENTRY;
#pragma pack( pop )
で、ICONDIR の後ろに GRPICONDIRENTRY を個数分だけ並べて ico ファイルから引っ張ってきたデータをそれに突っ込んでUpdateResource()してる。
もちろん対応するRT_ICONにイメージは追加してある。
実行時にエラーも出ないし、ResourceHackerなどで見ても、ちゃんと登録されているのだが、エクスプローラーの表示を特大アイコンにしても48x48の中央寄せ表示になってしまうんだ。
マルチプルアイコンを、::UpdateResource()で登録するとき、なにかシングルアイコンと比べて注意することがあるなら教えてください。
参考URLでもOKです(探してみたけれどシングルアイコンのものしか見つからなかった)
952デフォルトの名無しさん
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
このあたりを読んでみるとよい。
レス数が950を超えています。1000を超えると書き込みができなくなります。
ニュース
- 「“なり得る”って言っただけだから…」高市早苗“存立危機”答弁後に漏らした本音 ★2 [Hitzeschleier★]
- ネット殺到「高市総理の責任」「完全に高市リスク」「負けるな」中国が水産物輸入停止→流石に総理批判の声も「どう責任取る?」 ★4 [樽悶★]
- 中国外務省局長 「ポケットに手を入れていたのは寒いから」 日本との局長級会談で ★4 [お断り★]
- 【テレビ】佐野岳 TBS『最強スポーツ男子頂上決戦』収録で重傷… 右膝半月板損傷と靭帯断裂 全治8カ月~9カ月間 [冬月記者★]
- 中国が水産物の輸入停止、首相答弁撤回を要求…中国共産党機関紙「輸入停止は一つのシグナルにすぎない」 [ぐれ★]
- 歩道で93歳男性が女子大学生の自転車にはねられ意識不明 坂を下った先「気付いたときには目の前に」 [七波羅探題★]
- 日経平均、157.5の円安ブーストにも関わらず5万割れで終了へ… 本当にゴミ [402859164]
- 海外大手メディア、高市が中国に宣戦布告したと次々報道し始める。どんどん外堀が埋められる [931948549]
- 田崎史郎「日本側は切るカードがないから我慢するしかない」 [445522505]
- 🏡PUNCHマッチ💥🥊😅🥊💥超重量級決戦🏡
- 大分まだ燃えていた 地区のほとんどが年金受給者 [787212328]
- 【悲報】男が40超えると始めることがこれwwwwwwwww [394133584]
