1 名前:デフォルトの名無しさん mailto:sage [2021/12/09(木) 21:32:56.60 ID:sYLpmj89.net] Win32APIについての質問はこちらへどうぞ。 ■注意 ・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。 ・日本語版MSDN Online Libraryは不完全です。 英語版( msdn.microsoft.com/en-us/library/ )の利用推奨。 ・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。 ・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで ■過去スレ Win32API質問箱 Build126 https://mevius.5ch.net/test/read.cgi/tech/1588339011/ Win32API質問箱 Build125 https://mevius.5ch.net/test/read.cgi/tech/1551247748/ Win32API質問箱 Build124 https://mevius.5ch.net/test/read.cgi/tech/1510395780/ ■関連スレ Visual Studio 2020 Part1 https://mevius.5ch.net/test/read.cgi/tech/1634166667/ Visual Studio 2019 Part7 https://mevius.5ch.net/test/read.cgi/tech/1634178709/ Visual Studio 2017 Part7 https://mevius.5ch.net/test/read.cgi/tech/1558179898/ 【C++】 DirectX初心者質問スレ Part41 【C】 https://mevius.5ch.net/test/read.cgi/tech/1521786252/
331 名前:デフォルトの名無しさん mailto:sage [2022/08/09(火) 01:28:22.61 ID:6wLu/xJX.net] オレオレライブラリ作って悦に入るのは初心者レベル2のやること
332 名前:デフォルトの名無しさん mailto:sage [2022/08/09(火) 16:24:46.11 ID:rOh0RBr3.net] 経験しておくとライブラリの手抜きがわかってシステムのバグを予想しやすくなるけどな
333 名前:デフォルトの名無しさん mailto:sage [2022/08/14(日) 17:46:08.17 ID:qUOj9dBB.net] >>318 「車輪の再発明だから駄目」という理念は、先に進んでいるアメリカに有利な言葉。 後発者が上に上がって来ささないため、メンタルからくじく。 アメリカはそういう国。
334 名前:デフォルトの名無しさん mailto:sage [2022/08/14(日) 18:48:02.83 ID:W71axh2R.net] Googleは車輪の再発明しかしてないけどな 検索だって最初じゃない その代わり頭の良い奴らが本気でやるから良いものになる 日本が得意としてた事だったがな
335 名前:デフォルトの名無しさん mailto:sage [2022/08/15(月) 10:36:30.31 ID:LrEHeo01.net] 頭の悪い人が足引っ張る法律作って海外に先を越されるパティーン
336 名前:デフォルトの名無しさん mailto:sage [2022/08/15(月) 10:47:36.26 ID:VNnB4sci.net] >>287 普通に使えばいい。 俺も使ってる。
337 名前:デフォルトの名無しさん mailto:sage [2022/08/15(月) 14:36:52.56 ID:+9oi41Wm.net] >>327 GNUも再発明なんか?w
338 名前:デフォルトの名無しさん mailto:sage [2022/08/15(月) 15:43:33.22 ID:AOxAYYNB.net] >>331 彼らは、自分達が造ったものを遣わせてやりたいから「これ以上の再発明はするな」 と言ってくるが、自分達も実は再発明した結果であることは棚に上げている。
339 名前:デフォルトの名無しさん mailto:sage [2022/08/15(月) 16:18:07.18 ID:Z5BB7x+B.net] ここで車輪の再発明の指摘は的外れ 発明なんて一切してない 他人の成果物をソース読んでないからといって横取りする傲慢野郎
340 名前:デフォルトの名無しさん mailto:sage [2022/08/15(月) 17:10:35.77 ID:YGdpIuz3.net] いまさらソフトウェア開発競争を国家間の諍いの次元でしか捉えてないやつは 一行もプログラム組んでないのがアリアリだねw
341 名前:デフォルトの名無しさん mailto:sage [2022/08/15(月) 18:25:51.34 ID:AOxAYYNB.net] 国家間というより、先に作ってしまった人が他人に別のものを作ってもらいたくない 心理が働くと、「車輪の再発明禁止」という如何にもまっとうなことらしき標語 となる。
342 名前:デフォルトの名無しさん mailto:sage [[ここ壊れてます] .net] 車輪の再発明禁止は高機能なソフトウェアをオープンソースにするということで囲い込み、再発明させる気を起こさせなくしてる オープンソース文化が強いものを更に強くしてしまってる
343 名前:デフォルトの名無しさん mailto:sage [2022/08/15(月) 23:02:24.27 ID:dK5hO1Lx.net] 作って楽しそうなものなもものの内、芸術性を伴わず技術だけで 作れるようなものはほぼ全てオープンソースで無料になってしまっている (フォトショップみたいな高機能なものは除く)。
344 名前:デフォルトの名無しさん mailto:sage [2022/08/15(月) 23:10:53.60 ID:AwPJsiC0.net] 再発明をしないまでもその部品と構成や仕組みを知っていると高機能なアプリ開発などへの機転や応用が利きやすいと思う
345 名前:デフォルトの名無しさん [2022/08/16(火) 01:19:06.38 ID:agNT7bMr.net] 以下のコードが動かなくて困ってます。 pgfFrame = AVIStreamGetFrameOpen(paviStream, (LPBITMAPINFOHEADER)AVIGETFRAMEF_BESTDISPLAYFMT); AVIStreamGetFrameClose(pgfFrame); ←これを実行したら落ちる AVIStreamGetFrameCloseを実行しなくても動くのですが、再度Openした時に少しずつメモリを食いつぶして行くので困ってます。 止まった時にVC++の実行ボタンを再度押すと、内部で使ってるDLLがアンロードされてその後は動くようになります。 そうなると何回でもOpen→Close出来る様になり、メモリも食いつぶしません。 どうしたらいいんでしょうか?
346 名前:デフォルトの名無しさん [2022/08/16(火) 11:35:45.33 ID:2x3mrzZQ.net] >>329 ほんそれ
347 名前:デフォルトの名無しさん [2022/08/16(火) 11:41:24.43 ID:2x3mrzZQ.net] >>339 AVIStreamRelease (こっちは自動 Close してくれるとのこと)
348 名前:デフォルトの名無しさん [2022/08/16(火) 14:36:20.03 ID:agNT7bMr.net] >>341 詳しく書くとこうなってるんです。 AVIStreamGetFrameCloseだけ落ちるんで困ってます。 これを実行しなくても動くのですが、複数回Openするとどんどんメモリを食いつぶすので困ってます… AVIFileOpen(&paviFile, FileName, OF_READ | OF_SHARE_DENY_NONE, NULL); AVIFileGetStream(paviFile, &paviStream, streamtypeVIDEO, 0); pgfFrame = AVIStreamGetFrameOpen(paviStream, (LPBITMAPINFOHEADER)AVIGETFRAMEF_BESTDISPLAYFMT); if(pgfFrame != NULL){ AVIStreamGetFrameClose(pgfFrame); } ←これだけ落ちる if(paviStream != NULL){ AVIStreamRelease(paviStream); } if(paviFile != NULL){ AVIFileRelease(paviFile); }
349 名前:デフォルトの名無しさん mailto:sage [2022/08/16(火) 14:45:35.08 ID:ySPaUmMI.net] そういう不具合が出るけど是正が困難な処理は別プロセスとして動かして終わったらそのプロセスを終わらすといいよ 解決したら統合すればいい
350 名前:デフォルトの名無しさん [2022/08/16(火) 15:02:38.50 ID:2x3mrzZQ.net] プロセス別けて落とすのも同じ効果だと思うけど DLLを自前でアンロードするコードを入れても良いんじゃないかな そもそも pgfFrame = AVIStreamGetFrameOpen(paviStream, (LPBITMAPINFOHEADER)AVIGETFRAMEF_BESTDISPLAYFMT); ↑ この間の処理に問題があるんじゃないかな ↓ if(pgfFrame != NULL){ AVIStreamGetFrameClose(pgfFrame); } ←これだけ落ちる
351 名前:デフォルトの名無しさん mailto:sage [2022/08/16(火) 15:28:13.38 ID:agNT7bMr.net] >>343-344 ありがとうございます。 >この間の処理に問題があるんじゃないかな この間は何にもしてなくても落ちちゃうんですよね… なんでだろう? DLLを自前でアンロードする事も視野に入れてもう少し試行錯誤してみます
352 名前:デフォルトの名無しさん [2022/08/16(火) 15:45:44.34 ID:2x3mrzZQ.net] AVIFileExit(); してないというオチ?
353 名前:デフォルトの名無しさん mailto:sage [2022/08/16(火) 15:59:37.24 ID:agNT7bMr.net] >>346 AVIFileInit()とAVIFileExit() 前に両方入れてみたんですが、入れても入れなくても何も変わらなかったんですよね… あとでまた試してみます。
354 名前:デフォルトの名無しさん [2022/08/16(火) 16:18:58.86 ID:2x3mrzZQ.net] 本気で解決したいなら再現する全ソースコードを晒すのと 実際に読もうとしてるファイルのURLを晒して逝け
355 名前:デフォルトの名無しさん mailto:sage [2022/08/16(火) 17:58:27.74 ID:agNT7bMr.net] >>348 あとでその部分だけまとめて再現できるか確かめてみます
356 名前:デフォルトの名無しさん mailto:sage [2022/08/16(火) 20:04:29.51 ID:xodQRDI1.net] 必要最小限で描いて観たが全然問題無いぞ
357 名前:デフォルトの名無しさん mailto:sage [2022/08/16(火) 21:22:52.88 ID:agNT7bMr.net] >>350 原因がわかりました。 普通にやると問題なくて、ここにあるコーデックの.dllをリンクすると AVIStreamGetFrameCloseが上手くいかないようでした。 https://sourceforge.net/projects/x264vfw/files/ このコーデックを使う必要があるのでどうにかならないでしょうかね。
358 名前:351 mailto:sage [2022/08/16(火) 21:27:27.79 ID:agNT7bMr.net] 正確にはコーデックの.dllをリンクして そのコーデックを使っているファイルを読み込むと AVIStreamGetFrameCloseが失敗するということです。 .dllをリンクしててもそのコーデックを使ってないファイルであれば AVIStreamGetFrameCloseが失敗する事はなかったです。
359 名前:351 mailto:sage [2022/08/16(火) 23:11:48.85 ID:agNT7bMr.net] 古いバージョンにしてみたら直りました! これで普通に動いてるのでこのまま動かしてみます。 みなさんありがとうございました。
360 名前:デフォルトの名無しさん [2022/08/17(水) 09:12:41.44 ID:17qdbn+g.net] バカの三大特徴 情報を小出しにする&後出しする 自分は間違ってないと思い込む&言い張る 正しい解決策に進まずすぐに別の山に登ろうとする
361 名前:デフォルトの名無しさん mailto:sage [2022/08/17(水) 10:05:31.13 ID:75soL8XV.net] FFmpeg 使った方が良くね?
362 名前:デフォルトの名無しさん mailto:sage [2022/08/17(水) 11:59:16.72 ID:75soL8XV.net] ああ それを言うなら ffdshow の方だったかな しかしまだ使えるんかなこれ
363 名前:デフォルトの名無しさん mailto:sage [2022/08/18(木) 16:29:05.82 ID:9oKj6z2J.net] xvideos
364 名前:デフォルトの名無しさん mailto:sage [2022/08/22(月) 16:22:19.61 ID:ChTfYzF8.net] 日本語キーボード日本語Windowsで英数キー(CapsLockキー)のアップを捕捉する事って不可能? レジストリでキーマップを変えて英数キーを違うキーに割り当てた後なら一般的なキー同様に捕捉出来ることは確認できたけどそういう迂回方法無しで出来る方法があれば教えてもらいたい
365 名前:デフォルトの名無しさん mailto:sage [2022/08/22(月) 17:26:47.15 ID:Zp58Sca6.net] GetKeyState( vk_code ) VK_CAPITAL CapsLockのトグル状態 のほうじゃなく VK_OEM_ATTN 仮想キーコード 240 (0xF0) で今の押下状態は取得できそうではあるな IMEはちゃんと shift 無し Caps lock キーを受け取って反応できてるんだし
366 名前:デフォルトの名無しさん mailto:sage [2022/08/22(月) 18:22:10.86 ID:9oiM0iks.net] ないです
367 名前:デフォルトの名無しさん mailto:sage [2022/08/22(月) 18:27:49.15 ID:x6NjRtAl.net] ノートパソコンなどの省スペースキーボードについてるFnキーも拾えないんだよなあ、GetKeyState&GetAsyncKeyState
368 名前:デフォルトの名無しさん mailto:sage [2022/08/22(月) 21:05:07.73 ID:pMMCnUP8.net] fnはosの預かり知らないキーなので同列にすんなハゲハゲハゲハゲハゲ!!!!!!!!!!!
369 名前:デフォルトの名無しさん mailto:sage [2022/08/22(月) 21:25:09.66 ID:6BQsurqE.net] キーボードのコントローラーが勝手に処理してるでしょう CPUまで線がつながってない感じ
370 名前:デフォルトの名無しさん mailto:sage [2022/08/23(火) 07:39:49.30 ID:W/9/eWQQ.net] >>359 SetTimerとかで定期監視するしか無さそうか
371 名前:デフォルトの名無しさん mailto:sage [[ここ壊れてます] .net] 今はarduinoとかで自分好みのキーボード作れる時代なんだぜ 知らんけど
372 名前:デフォルトの名無しさん mailto:sage [2022/08/26(金) 10:40:49.53 ID:lf60l9vY.net] 虫歯が痛いなら総入れ歯にしましょう!レベルの解決策w
373 名前:デフォルトの名無しさん mailto:sage [2022/08/26(金) 12:29:39.93 ID:NrrxL3kr.net] 禿げてきたら丸坊主にしましょう!
374 名前:デフォルトの名無しさん mailto:sage [2022/08/26(金) 12:48:26.23 ID:im0ZYKIt.net] なんて日だ!
375 名前:デフォルトの名無しさん mailto:sage [2022/08/31(水) 12:36:32.64 ID:twZsJrmt.net] >>355 ライセンスはどうしてるの? GPLやLGPLだから、リンクすれば最低でも自作プログラムのオブジェクト ファイルの公開が必要になるだろう。 別コマンドで実行する場合は、*.exe が自作アプリと合わせて二つ必要になるし、 データの受け渡しの効率も落ちる。
376 名前:デフォルトの名無しさん mailto:sage [2022/09/02(金) 22:59:42.92 ID:L2uZLmEf.net] 質問です。 GetCharABCWidths()を用いて、TextOut()で描いた文字のABC構造体を取得しています。 Arialフォントのような欧文フォントを用いてTextOut()で"あ"を描いた場合、そのフォント内には"あ"という日本語文字は入っていないため、適当な代替フォントに置き換えられて"あ"が描かれるようです(たぶん「フォントリンク」という機能だと思います)。 この時にGetCharABCWidths()で得られるABC構造体には、描かれた"あ"の寸法が入っておらず、ダミーの寸法が入ってきてしまいます。 msdnのGetCharABCWidths()APIの項には、 The ABC widths of the default character are used for characters outside the range of the currently selected font. とあるので、APIとしては仕様どおりの動作なのですが、では、描かれた"あ"のABC寸法を得るにはどうすればよいのでしょうか? 以上、よろしくお願いします。
377 名前:デフォルトの名無しさん [2022/09/04(日) 10:57:34.63 ID:RQxkFcRF.net] GetTextExtentPoint32() SetTextJustification() DrawText()
378 名前:デフォルトの名無しさん mailto:sage [2022/09/04(日) 16:57:14.39 ID:aZX/9mcR.net] >>371 ありがとうございます。 GetTextExtentPoint32()だと、文字の左余白(A), 文字自体の幅(B), 文字の右余白(C)の 和の値(A+B+C)しか得ることができません。 そうではなくて、各文字について、A,B,Cそれぞれの値が知りたいのです。 それを返してくれるのがGetCharABCWidths()なのですが、>>370 に書いたように 正しい値が返ってこない場合があります。 一応、自分で考えた対処方法として、 1. GetTextExtentPoint32()で、文字のA+B+Cの値を取得 2. その幅を持つ白色の描画領域を確保し、その原点位置から黒色でその文字を描画 3. 領域に描画された結果(白・黒)を左端から走査して、左余白(A)を得る 4. 同様に右端から走査して、右余白(C)を得る 5. 手順1で取得したA+B+Cの値からAとCを減じてBを得る という風にすれば、(どんくさいですが)知りたい値を得ることはできると思います。 ちなみに、実際には、上のやり方そのままではうまくいかないことがありそうです。 というのも、イタリック体にしたりすると、AやCの値がマイナスになることがあるからです。 その場合、上のやり方だと、文字の左右が領域からはみ出て描画されてしまいます。 なので、左右にある程度の余裕を持った領域、例えば幅「100+A+B+C+100」の領域を確保し、 (x,y)=(100,0)の位置に文字を描画する。 そうするとはみ出さずに描画できるので、100の余分な余白があることを考慮に入れて計算すれば、 A,B,Cを得られるだろうと考えています。 でも、こんなやり方は面倒くさい。もっとマシなやり方はないのだろうか・・・。 例えば、フォントリンク?で描画されたときに、どのフォントが使われたのかがわかれば、 そのフォントを明示的にデバイスコンテキストに指定してGetCharABCWidths()呼べば A,B,Cの幅を得られるはずですが、フォントを知る方法はわかりませんでした。
379 名前:デフォルトの名無しさん mailto:sage [2022/09/04(日) 17:09:08.67 ID:A8KVTWK8.net] https://docs.microsoft.com/en-us/windows/win32/api/wingdi/nf-wingdi-gettextmetrics https://docs.microsoft.com/en-us/windows/win32/api/wingdi/ns-wingdi-textmetrica >日本語文字は入っていない 結局この問題は残るんじゃないかな 確実に日本語グリフが入ってるフォントを指定
380 名前:デフォルトの名無しさん mailto:sage [2022/09/04(日) 19:32:04.85 ID:aZX/9mcR.net] ありがとうございます。 作っているアプリの仕様は、 ・アプリのユーザは、フォントと文字列を自由に指定できる ・画面上には、指定したフォントで、指定した文字列が描画される やりたいことは、 ・ユーザが上記の操作で描画させた文字列中の各文字について、A,B,Cの幅を知りたい ということなのです。 本来NGな組み合わせ(例:欧文フォントと、全角まじり文字列との組み合わせ)をユーザーが指定した時、 存在しない文字がいわゆる豆腐(□)にでも化けてくれれば、そこでユーザは別のフォントを 選びなおすはずです。 しかし、文字化けせずに一見正しく表示されてしまうため、困っています。
381 名前:デフォルトの名無しさん mailto:sage [2022/09/04(日) 23:44:22.53 ID:047Xbk5t.net] >>374 ABCなんて何に使うんだろうと思ったら、フォント情報を表示するツールなのか。 GetCharacterPlacement + ExtTextOut / ETO_GLYPH_INDEX あたりで、グリフを直接描画すれば フォントリンクは効かないはずなので無い文字は豆腐になるはず...
382 名前:デフォルトの名無しさん mailto:sage [2022/09/05(月) 20:04:11.68 ID:lEq1EKXB.net] ありがとうございます。 参考にさせていただきます。 可能ならば、無理やり豆腐にするんじゃなくて、フォントリンクで表示されたとおりの文字の情報を取得できるのが理想ですが、難しそうですね・・・
383 名前:375 mailto:sage [2022/09/05(月) 23:27:10.40 ID:ViUtFxr1.net] >>376 GetCharABCWidthsで取得しても1文字単位でしか取得できないので、筆記体やアラビア文字のように前後の文字や位置によって大きさが変わるような場合には対応できないので、ABCの値は参考程度にしか使えないと思います。 フォントリンク先のフォント情報(LOG
384 名前:FONT)は、メタファイルに出力後そのメタファイルを解析するというちょっとトリッキーな方法で可能です。 https://stackoverflow.com/questions/54050095/how-to-tell-if-a-surrogate-pair-unicode-character-is-supported-by-the-font [] [ここ壊れてます]
385 名前:デフォルトの名無しさん mailto:sage [2022/09/06(火) 20:18:06.15 ID:H7QyPUx+.net] 大変有用な情報、ありがとうございます。 確かに、筆記体のような手を繋ぐフォントの場合、うまくいきませんね。 これは気づきませんでした。 実際にはそういったフォントが使われることはまれなので、大きな問題にはならないかな、と思います。
386 名前:デフォルトの名無しさん [2022/09/10(土) 21:08:59.03 ID:eGqDTe4p.net] HBITMAP hBitmap; に既に bitmap image が load されているとき BITMAP bm = {0}; GetObject(hBitmap, sizeof(BITMAP), &bm); で bm.bmBits の指す場所に pixles data があることは確認出来るのですが bm.bmBits は何時 GlobalFree(bm.bmBits); すれば良いのでしょうか? 放置しても memory leak の心配はありませんか?
387 名前:デフォルトの名無しさん mailto:sage [2022/09/11(日) 13:04:53.74 ID:4ex9Us8K.net] DeleteObject(hBitmap);
388 名前:デフォルトの名無しさん [2022/09/13(火) 22:06:19.57 ID:V8hEwwJT.net] ウインドウのキャプションを SetWindowText で変更したいのですが そのウインドウはブラウザ(クローム系)でして SPY++が使えなくなっているので自作のウインドウ一覧で調べると ブラウザのトップレベル・ウインドウは、アクティブなタブのキャプションが ウインドウのキャプションになっており、クラス名は"Chrome_WidgetWin_1"でした これで取得したウインドウ・ハンドルを使って、ブラウザの位置を操作したり 最小化したりできるので、このハンドルで間違いないはずですが SetWindowText でキャプションを変更することはできません ブラウザには使えないということでしょうか 御存じの方、教えて下さると幸いです
389 名前:デフォルトの名無しさん mailto:sage [2022/09/14(水) 01:18:29.10 ID:LQT6KG16.net] ウインドウというよりタブなんじゃね?
390 名前:デフォルトの名無しさん [2022/09/14(水) 09:06:44.89 ID:bpmiLen5.net] そうです ウインドウのキャプションを変更したいけど それはブラウザでは、タブのキャプションを変更したいということですね ブラウザのトップレベルのウインドウハンドルで、GetWindowTextを使って そのタブのキャプションが取得できるのに 逆に、そのハンドルでタブのキャプションはSetWindowTextでは変更できない ということのようです タブが子ウインドウになっていてアクセスできればいいのですが そこらへんブラウザは色々と特殊な作りなので無理っぽい気はしてます
391 名前:デフォルトの名無しさん mailto:sage [2022/09/14(水) 09:46:31.10 ID:mWSu9Hj1.net] ふーんGetはできるんだタスクバー用かな? どう見てもオーナードローだし htmlのtitle変える方が早そうだね
392 名前:デフォルトの名無しさん mailto:sage [2022/09/14(水) 12:31:23.77 ID:NjIHRu5t.net] SetWindowText実行後にGetWindowTextしたら変更後のキャプション取得できてるんじゃない? 表示処理が別なだけで
393 名前:デフォルトの名無しさん [2022/09/14(水) 15:26:33.97 ID:bpmiLen5.net] >>385 その通り、内部的には変更されてました!! ありがとうございました 聞いて良かった、自分だけで考えていたら堂々巡りで違う発想は出てこないものですね 見た目のキャプションはどうでも良くて ブラウザを複数起動して、全て同じサイトを開かせるので それをUWSCで操作しようとすると、どれが処理済なのか区別つかないので 処理済のやつのキャプションを変えてやろうということだったのです
394 名前:デフォルトの名無しさん mailto:sage [[ここ壊れてます] .net] 処理未済のテーブルのキーは windowハンドルつこたらあかんの?
395 名前:デフォルトの名無しさん [2022/09/14(水) 21:36:59.23 ID:bpmiLen5.net] 386の話? そんなことないですよ ウインドウキャプションと、クラス名が同じウインドウがいくつもあるので UWSCはそれのどのウインドウが処理対象か分からないってこと
396 名前:ナす YouTubeから動画をDLするサイトを自動で開いて 新着の動画アドレスを自動入力してDLさせるんですが 一つがDL処理中に、別の新着動画が来ることがあるので [] [ここ壊れてます]
397 名前:デフォルトの名無しさん [2022/09/14(水) 21:56:53.98 ID:RXLSqQDl.net] 入力されたキーコードをキーボードの文字に変換してくれるAPIとかありますか? それかC/C++の関数とかで。 SHIFTのコードを渡すと、"SHIFT"みたいに文字が返ってくるみたいな。
398 名前:デフォルトの名無しさん mailto:sage [2022/09/15(木) 10:19:13.76 ID:HISUe1p2.net] どとねとにはあるけどお スレ違いかな 大した手間でもないしご自分で用意すれば そもそもC/C++ならマクロを糞すればリテラルを文字列に変換できるんだし ちょっとは頭使え? o.5ch.net/1zdtx.png
399 名前:デフォルトの名無しさん [2022/09/15(木) 11:00:05.62 ID:cizFucC9.net] >>388 >>354
400 名前:デフォルトの名無しさん mailto:sage [2022/09/15(木) 18:28:39.47 ID:gUiebKpt.net] >>389 GetKeyNameText
401 名前:デフォルトの名無しさん [2022/09/16(金) 10:16:25.50 ID:4htE7L2M.net] 385さんと相談に乗ってくれた方にお礼の動画を持ってまいりました https://www.youtube.com/watch?v=uJxOP1s4Xo4
402 名前:デフォルトの名無しさん [2022/09/18(日) 13:46:05.81 ID:KpBP36NG.net] >>393 グロ fishing
403 名前:デフォルトの名無しさん mailto:sage [2022/09/18(日) 18:20:24.44 ID:JcdidFMx.net] こんな釣りじゃあ誰も見んわなw
404 名前:デフォルトの名無しさん [[ここ壊れてます] .net] 可愛いよね 名前知らない?
405 名前:デフォルトの名無しさん [2022/09/23(金) 02:06:12.74 ID:gD4It3Ab.net] STUのがかわいい
406 名前:デフォルトの名無しさん [2022/10/31(月) 14:20:10.23 ID:un31Hzpa.net] VisualStudio2022で C++でGdiplusを利用して、メタファイルとして描画した図形を保存するプログラムを作成しました。 (描画時メタファイルのパラメータはGdiplus::EmfTypeEmfPlusDualを使用して作成しました。) 保存した図形ファイルをエクセルで開いて、Ctrl+Cでクリップボードにコピーしました。 この状態で、EnumClipboardFormatsを使用して、クリップボードのフォーマットを取得しました。 予想だと、WinUser.hで定義されている #define CF_ENHMETAFILE 14 になるのかと思っていたら、実際は49161が取得されました。 質問ですが、この時取得された49161は何のフォーマットを意味しているのでしょうか?
407 名前:デフォルトの名無しさん mailto:sage [2022/10/31(月) 14:25:56.86 ID:cPgJ75vw.net] 汎用データオブジェクト
408 名前:デフォルトの名無しさん [2022/10/31(月) 15:48:17.35 ID:un31Hzpa.net] >>399 ありがとうございます。 すいません、質問なのですが Gdiplusを利用して作成したメタファイルをAPIを使用して汎用データオブジェクトとしてクリップボードに設定したいのですが、 参考になる書籍、ホームページ等ありましたらお教えいただけないでしょうか?
409 名前:デフォルトの名無しさん mailto:sage [2022/10/31(月) 21:10:12.34 ID:Y7EKu9E5.net] EnumClipboardFormats()使ってるんだからOpenClipboard(),SetClipboardData()はわかるよね 何を聞きたいんだろう?
410 名前:デフォルトの名無しさん [2022/11/01(火) 00:53:41.11 ID:8bbAESJs.net] >>401 昔からあるGdiで拡張メタファイルを作成して OpenClipboard() SetClipboardData(CF_ENHMETAFILE, handle_enhanced_metafile) CloseClipboard() で問題なく、拡張メタファイルがクリップボードに設定されていました。 それをGdiplusを使用してメタファイルを作成して OpenClipboard() SetClipboardData(CF_ENHMETAFILE, handle_enhanced_metafile) CloseClipboard() に改造したら問題が発生しました。 問題というのはエクセルにクリップボードからペーストすると、「図の書式設定」で「高さの倍率」「幅の倍率」が100%以下の数字になり 意図していたサイズより小さく表示されるようになってしまいました。 クリップボードに設定したメタファイルを、ファイル出力して、エクセルからファイルを開いて描画した図形を表示すると問題なく意図したサイズで表示されていました。 以上の事により、問題が発生する原因はクリップボードへの設定に問題があるのではと考えました。 エクセルにペーストしたGdiplusメタファイル図形を、さらに、エクセルでコピーすると、クリップボードには、なんのフォーマットとして扱われているのか調べてみました。 EnumClipboardFormatsを使用して、クリップボードのフォーマットを取得するとCF_ENHMETAFILEではなく、49161でした。 以上のことによりSetClipboardDataの第一引数はCF_ENHMETAFILE:14ではなく汎用データオブジェクト:49161を設定すべきかと考えました。 しかし、単純にCF_ENHMETAFILEを49161に変えただけでは、クリップボードにGdiplusメタファイル図形は設定されず、エクセルに何もペーストされませんでした。 希望は、Gdiplusメタファイル図形を汎用データオブジェクトとしてクリップボードに設定する方法を知りたいということです。 何かご存じの事がありましたら、お教えお願いします。
411 名前:デフォルトの名無しさん mailto:sage [2022/11/01(火) 02:33:36.53 ID:F5k3ZiCa.net] CF_ENHMETAFILEがあるのに49161をセットするなんておかしいよ 倍率以外はうまくいってるんだし 同じ図形でGDIのとGDI+のでENHMETAHEADERのメンバの値で違うのはない? 「DataObject 49161」でググったら以下のページが出た https://social.msdn.microsoft.com/Forums/vstudio/ja-JP/5a85a9a6-88a3-4cba-8b19-31c979eea7fa/clipboard-unable-to-enum-registered-clipboard-formats-as-local-system?forum=vcgeneral 49161はこれなのか?
412 名前:デフォルトの名無しさん mailto:sage [2022/11/01(火) 09:43:25.52 ID:23hVAbRk.net] スレ立てるまでもない質問スレで詳しいこと言ってたら教えてやったんだがな 流したやつに教えてやる気にはならんわ
413 名前:デフォルトの名無しさん [2022/11/01(火) 10:48:01.32 ID:8bbAESJs.net] >>404 すいませんでした。 こちらで聞いた方が良いとレス頂いたので こちらに移って質問していました。 もし、何かご存じならご教授頂けないでしょうか よろしくお願いします。
414 名前:デフォルトの名無しさん [2022/11/01(火) 11:42:30.98 ID:8bbAESJs.net] >>403 レスありがとうございます。 ENHMETAHEADERについてですが精査してみます。 (出力先をクリップボードでなくファイルにした場合、エクセルで開いても問題が発生していないのでメタファイルには問題ないかと、あたりをつけていました) CF_ENHMETAFILEについてですが、メタファイルは以下の3種類があるようです ・Windows メタファイル形式 (WMF) ・拡張メタファイル (EMF) ・EMF+ 描画時メタファイルのパラメータはGdiplus::EmfTypeEmfPlusDualを使用して作成しましたので EMF+として作成されているのかとも思っています。 そうするとENHMETAHEADER←拡張メタファイル (EMF) を使用しても良いものか疑問に思っています リンクありがとうございます。検討してみます。
415 名前:デフォルトの名無しさん [2022/11/01(火) 11:53:24.91 ID:8bbAESJs.net] >>406 すいません、一部訂正です。 【誤】そうするとENHMETAHEADER←拡張メタファイル (EMF) を使用しても良いものか疑問に思っています 【正】そうするとCF_ENHMETAFILE←拡張メタファイル (EMF) を使用しても良いものか疑問に思っています
416 名前:デフォルトの名無しさん mailto:sage [2022/11/03(木) 03:29:06.05 ID:lhbjAvOX.net] マルチするアホは原則スルー ネットマナーおじさんとの約束だぞ
417 名前:デフォルトの名無しさん mailto:sage [2022/11/03(木) 10:41:37.80 ID:tn2ZhR3p.net] ? 他スレを勧められて続きはそっちでやることを宣言したのに、マルチ警察はこの上何を望むんだろう。
418 名前:デフォルトの名無しさん mailto:sage [2022/11/03(木) 10:49:58.97 ID:dhtr0mvL.net] 前スレで詳しいやつが回答してるのにアスペから自分にはわからんから移動しろと言われてここに来てるだけのアホだから
419 名前:デフォルトの名無しさん mailto:sage [2022/11/03(木) 11:18:16.59 ID:tn2ZhR3p.net] マルチがどうこうより、せっかく回答したのに無視されたのが気に入らないってことね。
420 名前:デフォルトの名無しさん mailto:sage [2022/11/03(木) 11:28:13.59 ID:irjlHMAb.net] 回答があるのに他で聞くのはマルチだろ マルチがなぜ嫌われるのか理由までは知らないのか
421 名前:デフォルトの名無しさん mailto:sage [2022/11/03(木) 11:47:59.65 ID:tn2ZhR3p.net] マルチをしないからといって回答が無視されなくなるわけではないからそこは的外れだと思うぞ。
422 名前:デフォルトの名無しさん mailto:sage [2022/11/03(木) 11:57:08.08 ID:irjlHMAb.net] アスペかな?
423 名前:デフォルトの名無しさん [2022/11/03(木) 14:53:14.39 ID:XfULePpa.net] >>408 スレ立てるまでもない質問はここで 162匹目 に質問を出しました。 253 で49161は何のフォーマットか質問しました。 254 で汎用DataObjectだとレスを頂きました。 256 で254に対するお礼のレスをしました。 257 でWin32API質問箱 Build127の方が良いのでは?とレスを頂きました。 258 で そちらで聞いてみます と257にレスしました。 その後Win32API質問箱 Build127 に移って 398 で質問を始めました。 以上が今までの経緯なのですが、何か問題があるのでしょうか?
424 名前:デフォルトの名無しさん mailto:sage [2022/11/03(木) 15:08:57.81 ID:SIQRCQUk.net] 面倒くさいから追いかけないけど、別に問題あるようには見えない >>410 が正解書いてるような空気醸しだしてるから、その回答レス番書いてくれたら話が変わるかもしれんけど 実は正解ではない別のレスを書いててスルーされた恨みで警察に転職した可能性も感じる
425 名前:デフォルトの名無しさん mailto:sage [2022/11/03(木) 15:26:38.66 ID:76hysst1.net] 恨みとか知らんし警察は俺じゃないけど雑な質問だからそれなりの回答しかしてない 詳しく聞けば教えてやったけど こっちの方が詳しい人がいると聞いてすぐ移ったから回答しなかっただけだが回答しなきゃいけない理由もないだろ こっちの詳しい人()に聞けばいいだけ それで何か問題あるか?
426 名前:デフォルトの名無しさん [2022/11/03(木) 15:43:26.06 ID:/zL/TWh/.net] 向こうのスレみて来たけど、マルチ嫌いの俺ですら全く問題ないなw なにを拗ねてるんだこやつは
427 名前:デフォルトの名無しさん mailto:sage [2022/11/03(木) 15:46:54.91 ID:76hysst1.net] 知ってることを回答しないだけで非難される言われはないぞw お前が教えてやればいいだけ 本人でないならな
428 名前:デフォルトの名無しさん mailto:sage [2022/11/03(木) 15:47:33.06 ID:76hysst1.net] 俺より詳しいやつがいるスレだからそれで問題ないはずだが何を怒ってるのか
429 名前:デフォルトの名無しさん mailto:sage [2022/11/03(木) 15:48:42.41 ID:SIQRCQUk.net] >>417 その通り マルチの話題でも何でもない無関係なことで話を拡げず、すっこんでろとしか 元スレで回答出てるならそれで終了 スレ移して質問続くなら普通にやってくれ
430 名前:デフォルトの名無しさん mailto:sage [2022/11/03(木) 16:06:19.20 ID:GeJ34bDq.net] 49161は何のフォーマットか?なんてのは枝葉で 本質は同じフォーマットになるような方法はないのか?なんだよな わからん
431 名前:デフォルトの名無しさん mailto:sage [2022/11/03(木) 16:13:11.60 ID:GeJ34bDq.net] 枝葉への回答は前もココにも付いてる通り 汎用データオブジェクト これで最初の質問は完了してるん
432 名前:デフォルトの名無しさん mailto:sage [2022/11/04(金) 00:59:05.47 ID:TddW6oN3.net] この手のマニアックなのはstackoverflow漁るか英語で聞いた方が早いよ
433 名前:デフォルトの名無しさん [2022/11/05(土) 00:48:25.93 ID:mvfmSa9B.net] EMFは糞 GDI+も糞
434 名前:デフォルトの名無しさん [2022/11/06(日) 21:20:50.65 ID:ZfA7UEIS.net] 特定のウィンドウがFlashWindowしてるかどうか知りたいのですが、何か方法はありませんか? 画像取得して色確認するとかしかないですか?
435 名前:デフォルトの名無しさん mailto:sage [2022/11/07(月) 05:59:08.49 ID:SWCRxCfW.net] SetWindowsHookEx() を使用して、シェル フック HSHELL_FLASH (0x8006) をコールバックに登録します。 https://stackoverflow.com/questions/69806213/is-there-a-way-to-detect-when-a-specific-process-is-flashing-its-window-taskbar
436 名前:デフォルトの名無しさん mailto:sage [2022/11/07(月) 17:30:23.05 ID:4qt4VSUI.net] ありがとうございます
437 名前:デフォルトの名無しさん mailto:sage [2022/11/16(水) 18:14:29.04 ID:wmtCAqUs.net] OEM製品だな
438 名前:デフォルトの名無しさん mailto:sage [2022/11/18(金) 21:22:52.50 ID:zsUVThtH.net] セッションID=0のタスクスケジューラーのプロセスから他のセッションID=1以上のGUI持ってるプロセスの操作したいんだけど 同じセッションIDのプロセスを作ってやらないと無理だったかな
439 名前:デフォルトの名無しさん mailto:sage [2022/12/06(火) 11:39:49.01 ID:63yxghiR.net] スレッドが自身のスタック領域の開始アドレスを知る方法はありますか? サイズならTEB構造体から取得できるようなんですが 参考 https://ja.stackoverflow.com/questions/47840/windows-visual-studio-2015-c-%E3%81%A7%E3%82%B9%E3%83%AC%E3%83%83%E3%83%89%E3%81%AE%E3%82%B9%E3%82%BF%E3%83%83%E3%82%AF%E3%82%B5%E3%82%A4%E3%82%BA%E3%82%92%E5%8F%96%E5%BE%97%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%
440 名前:95 [] [ここ壊れてます]
441 名前:デフォルトの名無しさん mailto:sage [2022/12/06(火) 18:52:16.04 ID:uLZynctc.net] >>431 サンプルソースは見たの? >サイズならTEB構造体から取得できるようなんですが 正確にはStackBase, StackLimit を取得できるので、その差分からサイズを求めている。 teb->Reserved1[1] を使えばよいはず。
442 名前:デフォルトの名無しさん mailto:sage [2022/12/08(木) 05:02:17.43 ID:7N/fyoNc.net] >>432 あー確かに減算してますね。 気がつかなかった私がどうかしてました。 ご指摘ありがとうございます。
443 名前:デフォルトの名無しさん mailto:sage [2022/12/19(月) 11:12:22.75 ID:aTW+qgB5.net] ディスクへの書き込みを別の場所へ書き込むようにインターセプトすることってドライバじゃないと不可能? ReadDirectoryChangesやFindFirstChangeNotificationって通知だけでディスク変更操作に手を加える事は出来ないよね パスが常に一定の物であればジャンクションやシンボリックで対応可能なんだけど
444 名前:デフォルトの名無しさん mailto:sage [2022/12/25(日) 08:27:23.13 ID:z6jdEPeL.net] その程度の知識の素人が手を出せるレベルの処理じゃないだろ 仮想デバイスとかどうすんの
445 名前:デフォルトの名無しさん [2023/01/19(木) 12:53:53.04 ID:RyyxmaOy.net] 古い32bitプログラムをVS(ツールセット2010)でx64でビルドしてるんですが 「外部シンボル "sprintf" は未解決です」などのリンクエラーが大量に出て困ってます。 「legacy_stdio_definitions.lib」を使えという情報もあったんですが 2010ベースだと恐らくない?為か見つからないと怒られます。 色々事情があって最新版には移行出来ません。64bit化は諦めるしかないでしょうか?
446 名前:436 mailto:sage [2023/01/19(木) 14:01:27.21 ID:RyyxmaOy.net] >436 チマチマと自分で設定弄ったりしてたら解決出来そうでした。
447 名前:デフォルトの名無しさん mailto:sage [2023/01/20(金) 00:30:28.27 ID:a17vtIUU.net] ちゃんと無いなら自分で作るのもあり
448 名前:デフォルトの名無しさん mailto:sage [2023/01/22(日) 10:35:53.94 ID:JlW1CBNq.net] Windows Explorerではファイルに由来する属性、例えば画像のサイズとか、 MP3のタイトル、プログラムの説明とか表示できるけど、 それを取得するAPIは用意されててつかえたりしますか? それともあれはExplorerで頑張って色んなフォーマットに対応してるの?
449 名前:デフォルトの名無しさん mailto:sage [2023/01/22(日) 12:15:09.84 ID:6SRGa8RT.net] >>439 このあたり↓ではないか? MP3ファイルからタイトルやアーティスト名などを取得するには?[C#、VB] - @IT https://atmarkit.itmedia.co.jp/fdotnet/dotnettips/591mp3tags/mp3tags.html Shell Interface (Shell32) | Microsoft Learn https://learn.microsoft.com/en-us/dotnet/api/shell32.shell 間違ってたらごめんね
450 名前:439 mailto:sage [2023/01/22(日) 13:35:39.24 ID:JlW1CBNq.net] >>440 Shell32.dllのGetDetailsOfを使うのずばりでした。 ありがとう!自前で全部揃えるのは嫌だとおもってたから。
451 名前:デフォルトの名無しさん mailto:sage [2023/01/22(日) 18:45:34.11 ID:6SRGa8RT.net] >>440 2つ目のURLは違ったね。多分こっち↓だ Shell object (Shldisp.h) - Win32 apps | Microsoft Learn https://learn.microsoft.com/en-us/windows/win32/shell/shell 訂正します
452 名前:デフォルトの名無しさん [2023/01/27(金) 14:29:22.14 ID:BWAW0Di3.net] >436-437 もう解決したみたいだけど 文字通り legacy_stdio_definitions.lib をリンクすれば良い あるいは sprintf をやめて安全な snprintf (それ以外の legacy があればそれらも) 等を使うコードに変更する
453 名前:デフォルトの名無しさん mailto:sage [2023/01/28(土) 15:17:14.74 ID:SSo2rJoB.net] 俺もそろそろANSI32bitアプリをunicode64bit
454 名前:アプリに更改したいなあ まあ64bitにする意味は全く無いんだけど せめてunicode化して、流行りの顔文字ぐらい表示できるようにしたい あれのレンダリングはどうやるんだろうね TextOutみたいなレベルのAPIじゃ無理だよね? [] [ここ壊れてます]
455 名前:デフォルトの名無しさん mailto:sage [2023/01/28(土) 16:02:05.59 ID:u99kbCnW.net] >>444 Direct2Dなので描画ハンドラ関数の丸ごと書き換えが必要
456 名前:デフォルトの名無しさん mailto:sage [2023/01/28(土) 22:31:52.79 ID:xHLhsNzv.net] 正確にはDirect2D+DirectWriteだね
457 名前:デフォルトの名無しさん mailto:sage [2023/02/01(水) 03:54:55.92 ID:axeNk+I4.net] QueryPerformanceFrequencyで取得した値が10MHzになってるんですが 何時からこの値になったのか、時期と実装が変わった経緯分かる方いますか??
458 名前:デフォルトの名無しさん mailto:sage [2023/02/01(水) 07:50:03.36 ID:9aEQ8dCa.net] もともとハードウェア次第だし、実装を変えたというわけじゃないんじゃね? https://ja.wikipedia.org/wiki/High_Precision_Event_Timer
459 名前:デフォルトの名無しさん mailto:sage [2023/02/06(月) 00:05:16.01 ID:diZedZj+.net] >>447 最近2台のPCで取得したら10MHzだった。第8世代か第9世代のCoreと第10世代のCore。 ぐぐったらもうちょっと小さい値が出てきた。
460 名前:デフォルトの名無しさん mailto:sage [2023/02/06(月) 00:41:55.57 ID:bCXM4GAa.net] >>447 Hyper-V上だと10MHzになる模様 https://learn.microsoft.com/en-us/windows/win32/sysinfo/acquiring-high-resolution-time-stamps
461 名前:デフォルトの名無しさん mailto:sage [2023/02/12(日) 10:07:22.45 ID:/9PGWL3V.net] ResEditが無くなってしまったみたいだけど、何があったんや? 単に需要がなくなっただけ?
462 名前:デフォルトの名無しさん mailto:sage [2023/02/12(日) 11:39:51.87 ID:beRYzW3b.net] 統合環境と一体化した
463 名前:デフォルトの名無しさん mailto:sage [2023/02/13(月) 02:53:34.52 ID:S9jIVDl5.net] ウィンドウメッセージキューと socket を WaitForMultipleObjects みたいに同時に待ち受ける方法はある? 現状は通信処理は別スレッドでやってるけど、これを敢えて GetMessage のループでやりたい。 というのも、好奇心上の取り組みでメモリ使用量を極限まで減らしたくて、まずスレッドを減らしてみようと思って。 あとちょっと API の話からは逸れるんだけど、VisualStudio で C++ のデスクトップアプリの雛形をビルドしただけのものでもメモリをコミットサイズで 2MB とか食ってて、スレッドも 4つくらい動いてるんだけど、これって何? 起動してから少し放っておくとスレッドは 3つくらい終了するから、いらないものなら排除したい。 いろいろ削ぎ落とすリンカオプションの設定とかあったら教えてほしい。 スタックサイズやヒープサイズは数十KBに設定してみたけど、あんまり違いは見えない。
464 名前:デフォルトの名無しさん mailto:sage [2023/02/13(月) 03:36:15.30 ID:X7RxD/JY.net] >>453 MsgWaitForMultipleObjects を使う
465 名前:453 mailto:sage [2023/02/13(月) 13:19:42.95 ID:l/ezgd5T.net] >>454 それだ! ありがとー
466 名前:デフォルトの名無しさん mailto:sage [2023/02/14(火) 08:25:48.17 ID:WQfmJH2L.net] ソケットなら WSAAsyncSelect でソケットのイベントを WindowMessage に連動させる案もある
467 名前:453 mailto:sage [2023/02/14(火) 14:53:30.32 ID:BK5WxDX8.net] >>456 それの方が GetMessage のループに馴染みそう。 そっちも試してみるよ。ありがとー
468 名前:デフォルトの名無しさん mailto:sage [2023/02/15(水) 11:23:09.93 ID:bSshLO82.net] シンプルにやるならGetMessageじゃなくPeekMessageでノンブロックループして定点観測するという事も出来る
469 名前:デフォルトの名無しさん mailto:sage [2023/02/15(水) 12:21:16.78 ID:bwlsc68o.net] >>458 そのループがノーウェイトのビジーループになっちゃうじゃん やることあるときだけ GetMessage が返ってくれるんだから、そっちのがシンプルでしょ。
470 名前:デフォルトの名無しさん mailto:sage [2023/02/15(水) 13:10:37.60 ID:J40TkLkU.net] ところで、メッセージループで GetMessage したメッセージを DispatchMessage せずに、そのループ内で処理しちゃってもいい? ウィンドウプロシージャに書いてる switch やら DefWindowProc をループ内に直接書いちゃうの。
471 名前:デフォルトの名無しさん mailto:sage [2023/02/15(水) 13:33:51.32 ID:bSshLO82.net] >>459 いや何も処理する事がなければSleep(1)でも挟むのが常套手段 GetMessageの内部だってそうなってるはず GetMessageの場合はカーネル空間でループ回してるだろうからPeekMessageループよりIO回数が減ってパフォーマンス上は有利だろうが
472 名前:デフォルトの名無しさん mailto:sage [2023/02/15(水) 13:43:45.82 ID:N1k6+oAn.net] >> 460 ダメです DispatchMessageは自プロセスに飛んできたOSとか他プロセスのメッセージも振り分ける >> 461 待つならSleep(1)よりもWaitForSingleObjectのほうが軽い
473 名前:デフォルトの名無しさん mailto:sage [2023/02/15(水) 13:48:07.11 ID:S4bShmel.net] >>461 常套手段ってw そしたら到着したメッセージを即座に処理できないでしょうよ。 イベントを待つというのは待ちながらもシグナル時は即座に反応できるというのが最大の利点なのに、わざわざそれを殺してどうするの。 そしてカーネル空間でも GetMessage は sleep しながらのループでなんか回してないと思うよ。 アプリケーションが何かを待ってる時には、スケジューラがそのアプリの実行を止めてしまう(タイムスライスをあげない)。 GetMessage で言えば OS がメッセージをキューに入れた段階で GetMessage してるプロセスにタスクスイッチする。 ディスクI/O しかり、socket しかり、タイマーしかり。 本当に CPU が何もしないときなら HALT してハードウェア割り込みを待ってる。
474 名前:デフォルトの名無しさん mailto:sage [2023/02/15(水) 16:44:48.20 ID:STPisL/8.net] WM_KEYDOWN Ctrl+0(ゼロ)とかShift+0は来るのに、Ctrl+Shift+0は来ないのはなんでなん?
475 名前:デフォルトの名無しさん [2023/02/17(金) 22:01:39.95 ID:rxib1RET.net] 定番のSleep(1)にこれだけ噛みつけるのも面白いな
476 名前:デフォルトの名無しさん mailto:sage [2023/02/18(土) 05:24:38.57 ID:c4QxGie2.net] 今時sleep(1)が定番とかw
477 名前:デフォルトの名無しさん mailto:sage [2023/02/18(土) 11:10:10.06 ID:7GI8GwXH.net] マルチコア、メニーコアでスレッド単体だけ見てもな
478 名前:デフォルトの名無しさん mailto:sage [2023/02/18(土) 16:35:58.18 ID:nz9Z1NDi.net] イベント待ちはSleep(1)のポーリングでもどうでもいいと思うぞ シングルスレッドで全部処理する場合問題はそこではないし 扱う内容によっては毛局スレッドを分けた方がいいって結論になる
479 名前:デフォルトの名無しさん [2023/02/18(土) 21:28:29.45 ID:CT5am8vz.net] 今時とかじゃない >>463 を読むほど笑えるという話
480 名前:デフォルトの名無しさん mailto:sage [2023/02/18(土) 23:58:40.40 ID:hE3AXWNH.net] イベントキャッチは1msほどの間隔の粒度でいいの?
481 名前:デフォルトの名無しさん mailto:sage [2023/02/19(日) 01:06:15.57 ID:svaemBcP.net] タイマーの精度が高くないからSleep(1)でも30msくらいウエイトかかるけどな
482 名前:デフォルトの名無しさん mailto:sage [2023/02/19(日) 01:28:55.07 ID:15y14fHP.net] 1つの応答基準の60fpsが16.7ms間隔だからその間に処理が終わってれば常人の目には判らないし 待ち行列にメッセージが溜まってたりイベント処理が発生した場合、処理してる間にコンテキストスイッチが何度も起きて場合によっては1msなんて超えてくる Sleep(1)はOSに時間を明け渡す気がありますよ程度の意味しかない
483 名前:デフォルトの名無しさん mailto:sage [2023/02/19(日) 01:46:44.83 ID:QabSn9vm.net] マウス、キーボードの処理、ダイアログの更新のメッセージ処理くらいなら事足りる 昔のゲームもOllyDbgやIDAつかって覗いてみるとPeekMessageやGetTickCount等を使って一定時間間隔のメッセージ処理ループをやってた
484 名前:デフォルトの名無しさん mailto:sage [2023/02/19(日) 08:53:33.42 ID:zBhvMYFK.net] >>473 それはウィンドウメッセージ以外の処理を並行してやるためでしょ。 均等時間で処理を進めたいとかそういう事情が無ければ大人しくイベント待ちすればいいのに、そうせずわざわざ Sleep するとどんないいことがあるの?
485 名前:デフォルトの名無しさん mailto:sage [2023/02/19(日) 10:13:58.24 ID:xSIr/CQB.net] 昔の知識否定されてファビョってるだけだろ わざわざ昔のゲームとかw
486 名前:デフォルトの名無しさん mailto:sage [2023/02/19(日) 10:23:12.36 ID:QabSn9vm.net] 前レスよく読まなかったけど、GetMessage()で済むところをPeekMessage();Sleep(1);でループしてメッセージのポーリングするってことか。 なんでわざわざそんなことを?w
487 名前:デフォルトの名無しさん mailto:sage [2023/02/19(日) 10:54:48.53 ID:jNkDtxGh.net] WinFormsのソースもPeekMessageでWindowメッセージがあればそれの処理、無ければタスクキュー処理って流れだったはず
488 名前:デフォルトの名無しさん mailto:sage [2023/02/19(日) 11:25:42.35 ID:xSIr/CQB.net] >>477 それと > PeekMessage();Sleep(1);でループしてメッセージのポーリングする が同じに見えるのか?
489 名前:デフォルトの名無しさん mailto:sage [2023/02/19(日) 11:36:42.06 ID:jNkDtxGh.net] >>478 Sleepは知らんがPeekMessageでブロックせずに他の定期処理挟むのは別に普通って言いたかっただけ
490 名前:デフォルトの名無しさん mailto:sage [2023/02/19(日) 14:38:47.15 ID:xSIr/CQB.net] >>479 > Sleepは知らんが 話の流れも読めないのかよ...
491 名前:デフォルトの名無しさん mailto:sage [2023/02/19(日) 14:39:32.86 ID:svaemBcP.net] そもそも454-457で解決してるのになんで盛り上がってきたんだw
492 名前:デフォルトの名無しさん mailto:sage [2023/02/24(金) 14:07:57.59 ID:uAuRZ8t6.net] 質問ですがOpen(Save)Dialog等でOFN_DONTADDTORECENTが無効の場合、この履歴情報はどこに保存されますか?
493 名前:デフォルトの名無しさん mailto:sage [2023/02/24(金) 14:25:10.37 ID:uAuRZ8t6.net] すみません エクスプローラの履歴を消したら消えました 質問を取り下げます
494 名前:デフォルトの名無しさん mailto:sage [2023/02/25(土) 14:25:14.46 ID:/pFhv1h6.net] Win32APIはC言語が前提 C++で同様なものはMFCであってます?
495 名前:デフォルトの名無しさん mailto:sage [2023/02/25(土) 14:47:53.07 ID:i9tFdOEb.net] >>484 C++でもWin32APIはWin32APIです。 MFCは別物。 元々はC/C++からWin32APIを呼び出す前提だったけど、 今はC#、Python、Rust等いろいろな言語から呼べるらしい。
496 名前:デフォルトの名無しさん mailto:sage [2023/02/25(土) 15:03:12.75 ID:/pFhv1h6.net] そうなんだ サンクス
497 名前:デフォルトの名無しさん mailto:sage [2023/02/25(土) 17:08:15.41 ID:VP7n/u9I.net] GDI+ はリファレンスは C++のインターフェースだけど 細かくほぐしたら Cや他言語に対応できるのかな
498 名前:デフォルトの名無しさん mailto:sage [2023/02/25(土) 22:30:47.93 ID:YUkwGr7D.net] >>484 C++/WinRTもあるよ
499 名前:デフォルトの名無しさん [2023/03/04(土) 00:35:03.13 ID:cng4hKxr.net] >>484 MFCを使わせたかったのはVisual C++だった。 WindowsアプリケーションはC言語かC++を使うのが前提の歴史があって、MFCはWindows APIをラッピングしたものだった。 マイクロソフトはライブラリの作り方がよくわからず、MFCはコードが複雑になるだけのもの。 Java SEのライブラリが登場してから、マイクロソフトは失敗に気づいて.NET Frameworkを作ることになる。
500 名前:デフォルトの名無しさん mailto:sage [2023/03/04(土) 01:13:44.99 ID:poIq8zq5.net] >>489 MicrosoftのVisual C++のMFC BorlandのC++ BuilderのVCL 当時のWindowsでのC++用クラスライブラリでのシェア競争の結果Borlandが敗れてMFCが主流になった .NET FrameworkはもともとWindows DNA構想から産まれてきたものでMFCとは起源が別
501 名前:デフォルトの名無しさん mailto:sage [2023/03/04(土) 01:56:42.82 ID:fku36Zva.net] MFCの設計が変なのは出てきた時期も悪かったと思うね まだVC++含めて各C++コンパイラでtemplateもまともに動かない&互換性に問題があるような状態だったし
502 名前:デフォルトの名無しさん mailto:sage [2023/03/04(土) 04:09:52.49 ID:HiKr/1U9.net] MFCは最初から死産だったがMS製だからVisualStudioに標準で入ってるからと使わざるを得なかっただけ 設計思想はDelphi(C++Builder)よりも数段劣ってる 当時のC++がうんこすぎたのもあるがこれは処理系の設計者のセンスの問題だろう
503 名前:デフォルトの名無しさん mailto:sage [2023/03/04(土) 06:03:41.66 ID:2lfmGWRw.net] >>490 その頃のBorlandはOWLだぞ
504 名前:デフォルトの名無しさん mailto:sage [2023/03/04(土) 10:32:23.94 ID:IGk7eTto.net] MFCはDocument-Viewアーキテクチャがわかりにくいとかそのパターンに合わないアプリが 作りにくいとかはあったけど、それ以外は当時のC++でよくやったと思うよ。
505 名前:デフォルトの名無しさん [2023/03/04(土) 10:38:13.23 ID:RFNVa0Qi.net] C++じゃなくてCからでもGDI+は使える 面倒だから避けるけど
506 名前:デフォルトの名無しさん [2023/03/04(土) 10:40:00.46 ID:RFNVa0Qi.net] >>490 Frameworkの出来としてはBorlandの方が完全勝利だったが マーケティングで負けたな
507 名前:デフォルトの名無しさん [2023/03/04(土) 10:41:24.02 ID:RFNVa0Qi.net] >>491 いやいやMFCの設計者が馬鹿過ぎただけ
508 名前:デフォルトの名無しさん [2023/03/04(土) 10:43:16.79 ID:RFNVa0Qi.net] >>492-493 ほんそれ
509 名前:デフォルトの名無しさん [2023/03/04(土) 10:45:47.20 ID:RFNVa0Qi.net] >>494 どうみても糞は糞
510 名前:デフォルトの名無しさん mailto:sage [2023/03/04(土) 10:51:57.61 ID:2lfmGWRw.net] Document Viewが分かりにくいとか そんなんで音を上げるやつがセンスとはよく言うよ
511 名前:デフォルトの名無しさん mailto:sage [2023/03/04(土) 11:11:54.38 ID:N7rqxwy8.net] MFCなんてクソ過ぎて当時でも使ってなかったよw
512 名前:デフォルトの名無しさん mailto:sage [2023/03/04(土) 11:18:57.88 ID:AKTwgEup.net] MFCよりSDKというのは当時の合言葉だったろ
513 名前:デフォルトの名無しさん mailto:sage [2023/03/04(土) 11:21:50.94 ID:2lfmGWRw.net] Smalltalkの下手な真似は目が点になったけどね
514 名前:デフォルトの名無しさん mailto:sage [2023/03/06(月) 08:40:31.04 ID:jJIeXpQ3.net] 使わざるを得なかっただけてw 使うも使わないも使用者の自由だろw
515 名前:デフォルトの名無しさん mailto:sage [2023/03/06(月) 09:09:43.33 ID:3SgfQ2ps.net] MFC ATL WTL 用途によって使い分け ひとつのクラスライブラリに固執する必要性も必然性もない
516 名前:デフォルトの名無しさん [2023/03/06(月) 14:14:58.36 ID:diWxUEyJ.net] Smalltalkの真似はObjective-C
517 名前:デフォルトの名無しさん mailto:sage [2023/03/06(月) 14:55:30.78 ID:e9ffSDb7.net] >>504 途中から参加した案件では選択権がない
518 名前:デフォルトの名無しさん mailto:sage [2023/03/07(火) 08:46:10.01 ID:nXe+vnmI.net] それは途中参加した案件が使ってるから使わざるを得ないだけで VSに入ってるから使わざるを得ないわけではないね
519 名前:デフォルトの名無しさん mailto:sage [2023/03/07(火) 12:07:50.78 ID:CdvGJ9oA.net] 言うまでも無く地雷案件 参加する前に嗅覚で判断して離脱
520 名前:デフォルトの名無しさん mailto:sage [2023/03/07(火) 13:22:26.79 ID:YRf34T/Q.net] 上から降ってくる仕事を、雇われの立場の者は断れない
521 名前:デフォルトの名無しさん mailto:sage [2023/03/07(火) 17:55:18.76 ID:jr89I6Dk.net] 信仰を理由にすればなんでも断れる
522 名前:デフォルトの名無しさん mailto:sage [2023/03/08(水) 06:45:47.34 ID:D4+z1pfo.net] 退職して出家でもすんのか 頼むから犯罪に加担するのはやめろ
523 名前:デフォルトの名無しさん mailto:sage [2023/03/09(木) 00:18:42.41 ID:ta9TFpTT.net] Win32というかVC++だけど_itow_s系列って何文字書き込まれたかを返してくれるバージョンなんてないよね? ChatGPTに聞いたら最後にint*で返してくれるオーバーロードがあるって言ってたんだが
524 名前:デフォルトの名無しさん [2023/03/09(木) 04:47:01.50 ID:fmJ24L2G.net] 意味の分からない現象に遭遇したので質問させてくれ。 ここが適切かどうか微妙だけれど、もしスレが違っていたら案内いただけるとありがたい。 さて、VC6時代に作成され、プロジェクトを随時新しいVSに移行して開発しているアプリがある。 特にフレームワークは使用しておらずwin32Apiで書かれている。リソースエディタは、VS付属のリソースエディタだ。 windows10/VS2019までは問題なかったんだが、windows11/VS2022でビルドしたとたん、ダイアログのサイズが横に6ピクセル縦に2ピクセル小さくなって、中身の右と下が詰まる現象が発生した。 同じプロジェクトに新規にダイアログを加えても同じだった。 なお、この現象は、タイトルバーを追加したときだけ起こる模様。また、フォントの指定をしてもしなくても同様だ。 当たり前だが、新規にテストプロジェクトをwindows11/VS2022で作成した場合は起こらない。 なお、windwos10でビルドしたものを windows11で実行すると正しく表示される。 また、windows11でビルドしたものを windows11 で実行した場合は上記のようになるが、windows10で実行すると正しく表示される。 windwos11の互換モードをチェックすると、少しだけ改善される(詰まりがわずかに改善する) user32.dll関連で何かあるのかな? 正直訳が分からないよ。 識者の意見を求む。
525 名前:デフォルトの名無しさん mailto:sage [2023/03/09(木) 14:01:14.32 ID:lc0skjdv.net] AdjustWindowRect AdjustWindowRectEx
526 名前:デフォルトの名無しさん mailto:sage [2023/03/09(木) 15:07:30.71 ID:rNyfncCj.net] windows10/VS2019 で 新規作成し 同環境でビルドしたものを windows11 で実行 windows11 でビルドしたものを windows11 で実行 で差があるんかな? _WIN32_WINNT _WIN32_IE WINVER あたりの値を固定化しているのかどうか
527 名前:514 mailto:sage [2023/03/09(木) 15:19:13.60 ID:fmJ24L2G.net] >515 え、rcファイルで定義されたダイアログを、DialogBoxParam()などで表示したらそうなって困っているという話なのですが。 もしかして、windows11の時だけ、横に6ピクセル縦に2ピクセル広げるという力業でやれということですか?w
528 名前:514 mailto:sage [2023/03/09(木) 15:22:59.99 ID:fmJ24L2G.net] >516 プロジェクトを作成したのはVC6のようです。 以降ずっと継承しているらしく、そのプロジェクトをwindows10/2019でビルドすると問題が起きないのですが、 windows11/2022でビルドすると、実行環境がwindows11に限り現象が発生します。謎です。 バージョンは定義されています。この辺りを最新の0X0Aあたりに設定してリトライしてみます。 THX。
529 名前:デフォルトの名無しさん mailto:sage [2023/03/09(木) 15:36:17.03 ID:c9gYitiH.net] Windows11/2019でビルドしたらどうなんじゃろ
530 名前:デフォルトの名無しさん mailto:sage [2023/03/09(木) 16:10:10.53 ID:AnxNC5rK.net] ビルドしたOSのバージョンに合わせてウインドウスタイルを調整する部分があるのでは? VS2019とVS2022の違いで言うと、ヘッダーでの #ifdef の分岐条件の違いでしょ? windwos10でビルドしたものを windows11で実行すると正しく表示される。 →OSがWindows10アプリとして実行しているからオプション未指定でも正常 windows11でビルドしたものを windows11 で実行した場合は上記のようになる →OS的にはwindwos11アプリだけどビルドとしてはWindows10アプリ、その齟齬で表示が崩れる が、windows10で実行すると正しく表示される。 →OS的にもビルド的にもWindows10アプリとして実行しているから問題ない windwos11の互換モードをチェックすると、少しだけ改善される(詰まりがわずかに改善する) →疑似的にWindows10アプリとして実行するが、部分的に完全な互換が出来ないでいる と言う妄想をしてみた
531 名前:デフォルトの名無しさん mailto:sage [2023/03/09(木) 17:01:34.32 ID:rNyfncCj.net] >>520 その #ifdef の分岐条件 になりえるのが _WIN32_WINNT WINVER と _WIN32_IE
532 名前:デフォルトの名無しさん mailto:sage [2023/03/09(木) 17:11:02.85 ID:AnxNC5rK.net] >>521 そうだけど「あたりの値を固定化しているのかどうか」って書かれているから それは「本来条件式に任せるべきところを直書きしているのでは?」と言っているのかと受け取ったけど 逆に俺は条件式に任せているから古い開発環境でうまく行ってないだけでは?と思ってるって話ね だから自分で条件分岐を追加するか、本人が>>517 で言うように力技でねじ伏せるかしかないのでは?ってこと
533 名前:デフォルトの名無しさん mailto:sage [2023/03/09(木) 17:11:56.14 ID:rNyfncCj.net] おっけー了解
534 名前:デフォルトの名無しさん mailto:sage [2023/03/09(木) 17:13:51.29 ID:rNyfncCj.net] 動作環境を固定化するのに #ifdef _WIN32_WINNT #undef _WIN32_WINNT #define _WIN32_WINNT 0x○○○ #endif というのは、俺はやってる これの宣言の後に windows.h 等を読むように って制限かかるけどね
535 名前:デフォルトの名無しさん mailto:sage [2023/03/10(金) 08:43:31.77 ID:rc8/VQXS.net] とりあえず関連するライブラリのビルドを込みで、すべてWINVERと_WIN32_WINNTの定義を0x0A00にしてやってみたが結果は変わらず。 >520 問題は、「どこで」そのOSのアプリだと認識しているのかという点ですね。 urn:schemas-microsoft-com:compatibility.v1 で、マニフェストに定義する値って、windows10も11も同じですし。 Common-Controlsの時みたいに、windows11スタイルを禁止するのになにか定義する値でも……と思ったけどみあたりませんし。 >522 とりあえずOSのバージョンを取得しているところをgrepして追いかけてみたが、そういうのはなさそう。 そもそもダイアログリソースからの作成ですしね。 問題が再現する最小のビルドを作成してるのだけれど、これがまあ大変(普通に10/2019で新規作成すると問題が起こらない)なので 問題が起こるプロジェクトを複製して、とりあえず WinMainがあるソース以外を全部削除してから順に試してみます。 泣けるぜ。 締め切りに間に合いそうになかったら、とりあえず超力ワザで。 こうやってクソソースができていくんだなぁ……
536 名前:デフォルトの名無しさん mailto:sage [2023/03/10(金) 09:09:30.83 ID:skV/NfUS.net] Win10/2022でビルドしてみたりWin11/2019でビルドしてみたりはしたんかいな
537 名前:デフォルトの名無しさん mailto:sage [2023/03/10(金) 12:17:19.97 ID:vz26ACYY.net] ここまでDwm略のAPIの話が一切出てなくて草
538 名前:デフォルトの名無しさん [2023/03/10(金) 12:34:03.89 ID:rc8/VQXS.net] ものすごい大変だったけど、最小化コードを作ったら原因が判明したので報告しておく。 おそらく windows2000 の頃まで遡る話だけれど、 ダイアログをセンタリングするためのクラスメソッド内で、ダイアログをセンタリングするためにSetWindowPos()じゃなくて、MoveWindow()が使われていたのが原因だった。 なんとエアロが有効な状態で、455 x 179 のダイアログを、MoveWindow()を使って、MoveWindow(100, 100, 455, 179) へと動かすと、サイズが、441 x 172 になる! そういうもんなのかー。こんなの知らないとわかんないよ……
539 名前:514 mailto:sage [2023/03/10(金) 12:36:58.25 ID:rc8/VQXS.net] sage忘れすまん。 てか、これ客観的に見てバグとしか思えない挙動だ。 とりあえず解決ということで。ありがとうございました。
540 名前:514 mailto:sage [2023/03/10(金) 13:06:28.99 ID:rc8/VQXS.net] 連投すまん。 確認したところ、windows11/2022で新規作成したプロジェクトでも再現します。 windows11だけなので、11でUIを一新した際に発生した、MoveWindowのバグってことで納得します。 これが仕様だとしたら、ちょっと首をひねらざるを得ないですね。
541 名前:デフォルトの名無しさん mailto:sage [2023/03/10(金) 13:20:48.59 ID:vOYF1isR.net] 納得しますじゃなくバグみつけたなら報告しろよ
542 名前:デフォルトの名無しさん mailto:sage [2023/03/10(金) 15:04:54.29 ID:L3R8V02U.net] >>531 ここで報告されたやん 俺らMS本社のエリートなんだから頑張ってfixしようぜ
543 名前:デフォルトの名無しさん mailto:sage [2023/03/10(金) 15:18:22.32 ID:vOYF1isR.net] ここで報告できると本気で思ってるのか おめでてーな
544 名前:デフォルトの名無しさん mailto:sage [2023/03/10(金) 16:23:50.60 ID:hFmnRmK3.net] どう対処していくかは悩ましいところだろうけど さしあたり見つかってよかったね
545 名前:デフォルトの名無しさん mailto:sage [2023/03/10(金) 19:20:08.44 ID:iHPjFzG+.net] MoveWindowなんて基本的なAPIのバグを報告したら、幾らか貰えそうな気がする ここ見た他の誰かが、もう報告してるかもねw
546 名前:デフォルトの名無しさん mailto:sage [2023/03/10(金) 19:29:59.85 ID:M/1mzCJs.net] それってバグなのか? LunaやAeroの影響を受けるような前提があるんじゃないか?
547 名前:デフォルトの名無しさん mailto:sage [2023/03/10(金) 21:41:52.52 ID:ErzT9SJ9.net] >>513 読み取った後に、wcslen() で文字数を数えると良い。
548 名前:デフォルトの名無しさん mailto:sage [2023/03/10(金) 21:52:37.44 ID:ErzT9SJ9.net] >>513 結論から言うと「無い」ハズ。 また、最後の引数が int* 型のものは存在していないように見える。 引数の説明欄も、以下の用に4種類のみで、その中に、該当のものは存在していない。 *Parameters -value Number to be converted. -buffer Output buffer that holds the result of the conversion. -size Size of buffer in characters or wide characters. -radix The radix or numeric base to use to convert value, which must be in the range 2-36.
549 名前:デフォルトの名無しさん mailto:sage [2023/03/11(土) 17:44:54.81 ID:zdIWJF7w.net] ウインドウサイズの現象どこかで見たな たしかリンカオプションの/subsystem:windows,X.YとManifestFileの組み合わせで APIの挙動が変わるんじゃなかったかな
550 名前:デフォルトの名無しさん mailto:sage [2023/03/12(日) 18:57:18.20 ID:6SOWk3dH.net] >>537 >>538 ありがとう、やっぱりないか ChatGPTって結構間違った答え出してくるな
551 名前:デフォルトの名無しさん mailto:sage [2023/03/12(日) 22:11:40.77 ID:6PqX/PSJ.net] 自分では調べずにAIに聞いて、その確認も掲示板で他人に聞くスタイル
552 名前:デフォルトの名無しさん mailto:sage [2023/03/13(月) 07:50:35.89 ID:M+cw5TbQ.net] ChatGPTを何だと思ってるのかw
553 名前:デフォルトの名無しさん mailto:sage [2023/03/13(月) 09:19:48.62 ID:0cpyMYUG.net] ChatGPTもBingも知らないことを知らないと言わずしれっと嘘ついてくるし回答が人の目に触れてなくて識者からのコメントもないからこれを信用するやつは頭湧いてる Qiitaの方がまだマシレベルでこれに比べるとウィキペディアは神レベル しかしそのどれも公式ドキュメントとは比べ物にならない糞
554 名前:デフォルトの名無しさん mailto:sage [2023/03/13(月) 11:17:06.85 ID:bF2IN6wD.net] 答えの無い物を探すのが圧倒的に苦手 今までの「自称AI」と何ら変わらん野田
555 名前:デフォルトの名無しさん mailto:sage [2023/03/13(月) 12:16:45.84 ID:ap2u+t1x.net] 道具に振り回される人って…w
556 名前:デフォルトの名無しさん mailto:sage [2023/03/13(月) 14:09:26.73 ID:P3estam5.net] 他のプログラミングを出来るとされるAIでも、小学生でも習う円筒の体積すら、 半径の二乗を直径の二乗に間違えた間違いのコードを答えてきた。
557 名前:デフォルトの名無しさん mailto:sage [2023/03/13(月) 14:38:05.49 ID:tDVvLmFE.net] 今のところは汎用対話AIだからね 対話力に重きを置いてる上に汎用型なので正確性に関してはかなり犠牲にされてる 結局人間もそうだけど専門型が出てきてこそだな AIアート分野はローカルで各々が専門的に学習させられるからその辺一歩リードしてる
558 名前:デフォルトの名無しさん mailto:sage [2023/03/13(月) 15:38:27.48 ID:4eztEhWJ.net] >>546 どのAIにどう質問したの?
559 名前:デフォルトの名無しさん mailto:sage [2023/03/14(火) 12:02:53.79 ID:5+uIhtUh.net] プロセス間で同じファイルを読んだり書いたりしたいのですが、 一方が開いているときにはオープンに失敗させるのではなく、排他制御で待つようにしたいです。 Linuxとかだとflockという関数があるようですが、 Windowsで同じことをやるにはどういう方法になるのでしょうか? ミューテックスを使うとなると、事前にミューテックスの名前も決める必要が出てくるのですが。
560 名前:デフォルトの名無しさん mailto:sage [2023/03/14(火) 14:53:13.19 ID:tgsDNUzh.net] >>549 https://learn.microsoft.com/ja-jp/windows/win32/api/fileapi/nf-fileapi-lockfileex
561 名前:デフォルトの名無しさん mailto:sage [2023/03/14(火) 15:49:06.52 ID:5+uIhtUh.net] >>550 これって、書き込むときはファイルのサイズは事前にはわからないのですが、 計算してからでないとロックはできないということなのでしょうか。 ファイルの任意の領域というよりは、ファイルそのものをロックしたいのですけど。
562 名前:デフォルトの名無しさん mailto:sage [2023/03/14(火) 15:55:53.14 ID:+K74J7cv.net] >ミューテックスを使うとなると、事前にミューテックスの名前も決める必要が出てくるのですが。 別にそんな必要はないでしょ ユニーク名+ファイル名でミューテックスを使えばいい (※ユニーク名ってのは自分しか使わない名前のことね、例えばGUIDとかだけどそこまでがっちりやる必要もないとは思う)
563 名前:デフォルトの名無しさん mailto:sage [2023/03/14(火) 16:03:43.56 ID:+K74J7cv.net] >>551 指定できる最大値を設定しておけばいい > ファイルの現在の終了位置を超える領域をロックすることは、エラーではありません。 とあるから事実上ファイルそのものをロックしたのと同じ
564 名前:デフォルトの名無しさん mailto:sage [2023/03/14(火) 16:27:54.12 ID:gMQMDZBf.net] >プロセス間で同じファイルを読んだり書いたりしたい
565 名前: 問題を無闇に複雑にしてると思わないか [] [ここ壊れてます]
566 名前:蟻人間 mailto:sage [2023/03/14(火) 17:01:38.94 ID:iLShrRcK.net] クライアント・サーバーモデルで、 サーバーだけが書き込めるとか言った制約があった方が良いかも知れません。
567 名前:549 mailto:sage [2023/03/14(火) 18:23:18.32 ID:5+uIhtUh.net] アドバイスありがとうございます。 あるアプリから別のアプリを起動する際、 コマンドラインでは収まらないような長い情報を渡す必要があり、 ファイルに必要な情報を書いてやりとりするようにしています。 (コマンドラインにはそのファイルのパス名を渡している) なので、ファイルを作成するアプリと、そのファイルを読み込むアプリがあり、 多重起動などのタイミングによってはアクセスがぶつかる可能性があるので、 このファイルに対する同時アクセスを制御したいという質問でした。 ミューテックスとLockFileExとどちらで実装するか、検討させていただきます。
568 名前:デフォルトの名無しさん mailto:sage [2023/03/14(火) 18:25:17.73 ID:xPBygAZk.net] >>554 コンパイラとリンカで同じファイルを読んだり書いたりするのも 問題を無闇に複雑にしているのか?
569 名前:デフォルトの名無しさん mailto:sage [2023/03/14(火) 19:27:43.09 ID:LjCdhfB4.net] >>556 パイプを使えばええんちゃうかな?
570 名前:デフォルトの名無しさん mailto:sage [2023/03/14(火) 19:36:39.98 ID:1SjvDtDO.net] >>556 それはやり方が違うだろ GetTempFileNameとか使って一時ファイルを作成すればすむ話
571 名前:デフォルトの名無しさん mailto:sage [2023/03/14(火) 19:54:35.88 ID:5+uIhtUh.net] >>559 それもやってみたのですが、多重起動などのタイミングによっては、 どうやっても、読み込まれずに放置されるゴミファイルができてしまいます。 テンポラリフォルダなんて気にしなければよいといえばよいのですが。
572 名前:デフォルトの名無しさん mailto:sage [2023/03/14(火) 21:32:45.60 ID:M7rmtaeA.net] Tempなんか使わずとも末尾PIDの名前でファイルなりを作れば重複起動その時においては名前は被らないし 引数の受け渡しとか程度の話ならオープン失敗したら数秒待って開き直せばいつか開けるだろ 書いてる間はどうせ読めても無意味なんだし
573 名前:デフォルトの名無しさん mailto:sage [2023/03/14(火) 22:38:01.69 ID:rESGMqzG.net] WM_COPYDATAとかメモリマップドファイルとか
574 名前:デフォルトの名無しさん mailto:sage [2023/03/14(火) 23:24:45.28 ID:u95pjcpT.net] >>556 >>558 と被るけど名前付きパイプがお勧め。
575 名前:デフォルトの名無しさん mailto:sage [2023/03/15(水) 00:41:23.71 ID:q5LCzWGQ.net] >>560 いや、ゴミファイルが出来る事があり得ないけどね… その多重起動というのがどういうものか知らんけど、GetTempFileNameで上手く行かないのは、プログラムが悪いと断言できる ま、これで駄目なら何やっても上手く行かないだろうね
576 名前:デフォルトの名無しさん mailto:sage [2023/03/15(水) 00:54:04.79 ID:mWvoI7Tn.net] >>548 twitterで流行ってたものを誰かが試した結果を見て気付いた。
577 名前:デフォルトの名無しさん mailto:sage [2023/03/15(水) 01:02:47.82 ID:fvrt0a3X.net] >>565 それで遊んでみようと思ったのだけど何を使用していたのかわからないなら遊べないな残念
578 名前:デフォルトの名無しさん [2023/03/23(木) 01:09:16.30 ID:Ao+X9Xng.net] >>490 正確にはMFCはMS-DOSの開発ライブラリ だからGUIのWindowsとうまく噛み合わなかった
579 名前:デフォルトの名無しさん mailto:sage [2023/03/23(木) 06:12:16.80 ID:5IP8ya+9.net] Ruby では普通、外部コマンド・子プロセスの終了を待つから、実行順序は書いた順。 Process.#wait 一方、Kernel.#spawn は、終了を待たない。起動しっ放し IO にはパイプ、ブロッキング/ノンブロッキング、同期/非同期もある
580 名前:デフォルトの名無しさん mailto:sage [2023/03/23(木) 07:28:24.76 ID:auHr228t.net] >>567 うそおっしゃい
581 名前:デフォルトの名無しさん mailto:sage [2023/03/23(木) 08:33:51.91 ID:ffpb/acK.net] >>567 コマンドベースの開発ライブラリならSDKだろ MFCはGUIが前提のクラスライブラリとアプリケーション構築のプラットフォームをセットにしてWin32APIをラップしたもの
582 名前:デフォルトの名無しさん [2023/03/23(木) 11:05:08.93 ID:AQHpwrnP.net] >>567 これはひどい そんなの関係ねぇ GUIのWindowsとうまく噛み合わなかったのは MSVCの開発陣がC++への理解が足りなかったから
583 名前:デフォルトの名無しさん mailto:sage [2023/03/23(木) 11:15:29.65 ID:jVJKu0vi.net] >>567 お前MFC知らんだろ
584 名前:デフォルトの名無しさん mailto:sage [2023/03/23(木) 23:45:58.18 ID:9ub38u60.net] 久々に清々しい嘘を見た
585 名前:デフォルトの名無しさん mailto:sage [2023/03/24(金) 01:24:11.23 ID:gu0zjHdj.net] インストーラーの無い野良EXEのAUMID(Application User Model ID)をOSに登録する方法教えてください
586 名前:デフォルトの名無しさん [2023/04/03(月) 14:17:49.75 ID:ZOqVhNfC.net] >>570 Microsoft Cがいつからあるのか知らないのか。 MFCにはGUI限定などという定義はない。 そもそもMFCはCUIのライブラリから始まっている。
587 名前:デフォルトの名無しさん [2023/04/03(月) 14:20:45.40 ID:ZOqVhNfC.net] >>570 SDKの意味すらわかってねえのか? あんたのいうMFCは、Windows SDKが扱うWin32APIをさらにラッピングしたMFCのことだ。 あんたの言っていることは滅茶苦茶だ。
588 名前:デフォルトの名無しさん [2023/04/03(月) 14:34:38.52 ID:ZOqVhNfC.net] >>571 どうでもいいけど、マイクロソフト内でC言語とC++の混在そのものに悩んでいたのも知らないようだな マイクロソフトはC言語派、C++派、Windowsを普及させるためにVB流用派と、試行錯誤を繰り返していた時代にMFCが誕生したと思っているなら、時期がずれていてリアルタイムでは知らなかったと言っているようなもの
589 名前:デフォルトの名無しさん mailto:sage [2023/04/03(月) 15:01:56.44 ID:amgtJnTb.net] MS-DOS の頃ってMSのコンパイラは統合環境だった? C++ どころか Cコンパイラで コマンドライン上から nmake 叩いてわ
590 名前:デフォルトの名無しさん mailto:sage [2023/04/03(月) 15:07:52.75 ID:lsCbs8KW.net] B:\>msc hello.c
591 名前:デフォルトの名無しさん [2023/04/03(月) 15:10:57.50 ID:ZOqVhNfC.net] ウィキペディアの説明が、Microsoft C 7.0以前の話がないせいで、Microsoft CとVisual C++の区別がついていないのね。 Windows 95、98の時代は、MS-DOS 6.2とWindows 95・98(内部MS-DOS 7.0・7.1)の併存期間で、MFCはMS-DOS 6.2をターゲットとしたものと、Windows 95をターゲットとしたものがある。 まず俗称「MSVC」と呼ばれるものは、Windows 95アプリケーションの開発を意識したもので、マイクロソフト「VC」と言っているあたりからわかるようにC言語でのWindows 95アプリケーションの開発を主としている。 ここでC言語からC++の移行をマイクロソフトはやろうとして、Windows APIがオブジェクト指向ではないところで無理が生じた。 そこでMFCを大幅に強化することでC++でのアプリケーション開発をしてもらおうとしたが、すでにWindows SDKの開発の知識がある開発者は、Windows SDKでのCでもC++よいというのに慣れていて、MFCを使えというのは、それまでの知識と違っており、無駄なクラスライブラリとしか思えなかった。 MFCはWindows 3.1でも影が薄い。マルチタスクではないと言えてしまうWindowsでは、MFCのメリットなどなく、無駄にサイズが大きくて重いコードが作られるため、性能、スペックの低いパソコンではMFCを使う理由がなかった。 MFCはGUIだけで使われるものではないため、CUI環境の開発でも使われている。 MFCどころかWindows 32APIでも、画面がある前提になっているコードを書かないといけないが、実際には画面がないものを作るのにも使われる。 MFC、Visual C++、Windows SDKの話がごっちゃになって、MFCを使うにはVisual C++でMFCを利用して、MFCがWindows SDKとセットだと認識できない点は理解できる。 まあ、ウィキペディアの記事は、根拠不明の創作が多いとわかってないとだまされるよな。
592 名前:デフォルトの名無しさん mailto:sage [2023/04/03(月) 15:18:50.66 ID:lsCbs8KW.net] Win32がオブジェクト指向ではないって? ハンドルを使う関数(つまり大半)はオブジェクト指向だと思うが もしかしてオブジェクト指向とはC++やSmalltalkを使うことだと思ってるのか?
593 名前:デフォルトの名無しさん [2023/04/03(月) 15:19:55.66 ID:ZOqVhNfC.net] >>578 統合開発環境と何の関係があるのか? Windows 95アプリケーションでも、統合開発環境は必須ではない。 画面のデザインのときだけ利用するという使い方が多かった。 Direct Xが普通に使われるようになってからは、統合開発環境は画面ごと吹っ飛ぶので、統合開発環境そのものも動かないこともあるし、統合開発環境を自分が作ったもので壊すことがあるから、Windows 95、98系では、Visual製品に期待しても、Visual統合開発環境とWindows OSのポンコツコンボは、いま思っているより意味をなしていなかったんだよ。
594 名前:デフォルトの名無しさん mailto:sage [2023/04/03(月) 15:25:54.31 ID:amgtJnTb.net] >>582 MFC=マクロ出力とセットになった統合環境前提って印象だったものでね リソース周辺のアレ
595 名前:デフォルトの名無しさん mailto:sage [2023/04/03(月) 15:26:39.12 ID:p7oapVPk.net] >>581 そこで使われるオブジェクトとオブジェクト指向とは関係ない アセンブラのオブジェクトファイルと同様だ
596 名前:デフォルトの名無しさん [2023/04/03(月) 15:28:25.60 ID:ZOqVhNfC.net] >>581 オブジェクト指向設計ではなかったんだよ。 C言語とC++は書き方が少し異なるだけだったので、Windows SDKではC++で書くとオブジェクト指向っぽくなり、C言語で書くとこれでいいのかという書き方で、Windows 95のアプリケーションが作れた。 ここはWindows SDKがオブジェクト指向ではないという理由がある。 APIそのものはオブジェクト指向ではなかったので、オブジェクト指向にするにはMFCを挟むという変なことをすることをしていた人間もいる。 たった数年で変わった話なので、過渡期を知らないと誤解が生じるのはわかる。
597 名前:デフォルトの名無しさん mailto:sage [2023/04/03(月) 15:37:01.22 ID:lsCbs8KW.net] >>584 GetObject()なんか多相そのものやん
598 名前:デフォルトの名無しさん mailto:sage [2023/04/03(月) 15:39:17.90 ID:lsCbs8KW.net] すまん関数名間違えた SelectObject()だ GetObject()はオブジェクト指向と手続き型の切り替えだね
599 名前:デフォルトの名無しさん mailto:sage [2023/04/03(月) 15:56:54.48 ID:ORXHufFt.net] Win32APIの基本構造そのものがイベントドリブンのメッセージ駆動なのでオブジェクト指向を土台にしている Windowsのマルチタスクはオブジェクト指向で成り立っているだろ
600 名前:デフォルトの名無しさん mailto:sage [2023/04/03(月) 16:40:18.30 ID:lsCbs8KW.net] そうそう ウインドウプロシージャのcaseなんか典型的だな
601 名前:デフォルトの名無しさん [2023/04/03(月) 16:48:57.33 ID:WoF7SnyS.net] >>575 >そもそもMFCはCUIのライブラリから始まっている。 doubt
602 名前:デフォルトの名無しさん mailto:sage [2023/04/03(月) 16:51:01.36 ID:WoF7SnyS.net] >>577 でたらめ言うなよ ボケが始まってるんだな爺さん ばあさんかも試練が
603 名前:デフォルトの名無しさん mailto:sage [2023/04/03(月) 16:53:48.85 ID:WoF7SnyS.net] >>580 おまいは Windows 3.1 の知識が抜け落ちておるな
604 名前:デフォルトの名無しさん mailto:sage [2023/04/03(月) 16:57:17.99 ID:WoF7SnyS.net] >>584 しね
605 名前:デフォルトの名無しさん mailto:sage [2023/04/03(月) 16:58:53.51 ID:WoF7SnyS.net] >>585 むしろ Win(32以前も)API / Win32API がオブジェクト指向で MFC の方がオブジェクト指向出来ていなかったんだよ だから判ってる香具師はみんな MFC は使わなかった 使ってたのは馬鹿だけ
606 名前:デフォルトの名無しさん mailto:sage [2023/04/03(月) 17:23:19.13 ID:aHgelLEB.net] >>594 APIについてはその通りだが MFCがOOPでないという主張には 賛成しかねる 下手なところがあるのは俺も認めるが 原理主義者の言いなりである必要はない
607 名前:デフォルトの名無しさん mailto:sage [2023/04/03(月) 18:20:11.47 ID:6F7Nd+C2.net] MFCとかけて、C++と解きます その心は、オブジェクト指向ではあるけど、なりきれていない これでどうでっしゃろ
608 名前:デフォルトの名無しさん mailto:sage [2023/04/03(月) 18:32:53.99 ID:hrmFy8ir.net] MFCには良い思い出が無いのである
609 名前:デフォルトの名無しさん mailto:sage [2023/04/03(月) 21:17:54.58 ID:NUuZ0KjY.net] >>580 すげぇ、「ゲームの歴史」?
610 名前:デフォルトの名無しさん mailto:sage [2023/04/03(月) 21:57:09.76 ID:pspdaLIR.net] GUIの無い単純なアプリならまだしも、それなりのGUIを持つアプリは MFCを使ったほうが楽にアプリを作れるし、出来たコードも読み易い 確かに最初はMFCは取っ付き難いから、そこで挫折した人が >>590-594 みたいな事を言い出すんだろうなあ
611 名前:デフォルトの名無しさん mailto:sage [2023/04/03(月) 23:21:42.85 ID:6c3bFFXO.net] >>599 そんなことは無いと思うが Win32APIをちゃんと知っていればMFCなんて使う理由が全く無いし MFC関連のDLL何かも入れないといけないし単に開発効率がおちるだけ 実際当時Windowsアプリの仕事を結構やったけどMFCを採用していた所は少なかった たまたまそういう場所ばかり行ってた可能性はあるがMFC何て使うなよって当時から思ってたよw
612 名前:デフォルトの名無しさん mailto:sage [2023/04/03(月) 23:43:57.61 ID:hWVK11qf.net] でも世の中的に勝利したのはMFCだよね 俺もATL/WTLでいいじゃんとは思ったけど でかいライブラリも整備されてりゃそれなりに便利だからね仕方ないね >>578 PersonalWorkBenchってのでFortranやったような気がするんだが 今ググっても全然出てこないな
613 名前:デフォルトの名無しさん mailto:sage [2023/04/04(火) 00:40:08.89 ID:3PHQjkjE.net] VB→.NET の流れがGUI開発の勝ち組というなら分からなくもないが MFCは・・・
614 名前:デフォルトの名無しさん mailto:sage [2023/04/04(火) 06:32:29.81 ID:sHU2LbpJ.net] >>600 >Win32APIをちゃんと知っていればMFCなんて使う理由が全く無いし WindowProcに case WM_… をだらだら書かなくても済むだけでも大きな利点 >MFC関連のDLL何かも入れないといけない ユーザー層やアプリの配布形態に応じて、必要ならMFCをStaticLibraryでリンクしてしまえば良い >>602 >VB→.NET の流れ 社内ツールとかならともかく、それこそユーザーにVB入れさせるなんて問題外でしょ 大量のデータ処置を行うようなアプリでは処理速度も遅いし 一般販売されてるアプリでVBで作られてるものなんてある?
615 名前:デフォルトの名無しさん mailto:sage [2023/04/04(火) 07:27:41.42 ID:w5B314gc.net] DLL hell, OCX hell とかVB案件の負の遺産なんじゃなかろうか
616 名前:デフォルトの名無しさん mailto:sage [2023/04/04(火) 07:35:33.06 ID:GxsMOWHT.net] >>600 >MFC関連のDLL何かも入れないといけないし単に開発効率がおちるだけ 昔Win32+CだけでDLLの追加が要らないよう頑張ってみたこともあるけど辛かったね。 C++の機能使ってしまうと結局CランタイムDLLが必要になるし。
617 名前:デフォルトの名無しさん mailto:sage [2023/04/04(火) 10:14:15.35 ID:OZYsYc62.net] >>601 だよな 8086しかりwindowsしかりMFCしかり 技術的に劣っていてもデファクトになると 好むと好まざるに依らずそれ関係の仕事が来る 元々BSD使いだった俺がwindowsに転向したのもメシのため
618 名前:デフォルトの名無しさん mailto:sage [2023/04/04(火) 11:34:31.40 ID:7A3Dl4jZ.net] DLL便利じゃん プラグインで機能後付けもこれのおかげだし
619 名前:デフォルトの名無しさん mailto:sage [2023/04/05(水) 08:56:03.63 ID:PNvz4EJs.net] >>603 BtoCよりBtoBの方が物は多いと思うが
620 名前:デフォルトの名無しさん mailto:sage [2023/04/05(水) 10:12:22.16 ID:xBlgsSX7.net] 金融界隈では未だにVB6が現役だし MSにしては大成果だったと言える
621 名前:デフォルトの名無しさん mailto:sage [2023/04/05(水) 15:23:21.24 ID:MSpbiXL9.net] ANAのシステムもミズポと同じ所が造ったんかねぇ
622 名前:デフォルトの名無しさん mailto:sage [2023/04/05(水) 20:05:04.25 ID:WIXvpPAe.net] C++/WinRTを使ってあげて…
623 名前:デフォルトの名無しさん mailto:sage [2023/04/18(火) 08:15:18.90 ID:F395+kgU.net] Windows API インデックス https://learn.microsoft.com/ja-jp/windows/win32/apiindex/windows-api-list Windows API を使用すると、各バージョンに固有の機能を利用しながら、すべてのバージョンの Windows で正常に実行されるアプリケーションを開発できます。 (これは以前は Win32 API と呼ばれていたことに注意してください。 Windows API という名前は、16 ビット Windows でのルートと 64 ビット Windows でのサポートをより正確に反映しています)。
624 名前:デフォルトの名無しさん mailto:sage [2023/04/18(火) 08:32:02.79 ID:hm8pjCa5.net] 日本語たけど日本語じゃないの
625 名前:デフォルトの名無しさん [2023/04/26(水) 20:51:37.42 ID:A/LukVPn.net] Windows11でPrintDlg使って印刷すると1度目は印刷できるけど 2度目はPrintDlg()呼ぶと反応無しになるのはなんか間違ってるのかな レジストリ弄ってLegacyなダイアログにしとくと印刷できる、あと管理者権限でプログラム実行して 印刷も勝手にLegacyなダイアログになるので印刷できるんだけど 試しに、VC2022で新規プロジェクトで雛形ちょっと弄って試してもやっぱり 2度目のPrintDlg()呼び出しで無反応になっちゃうんだっけど debuggerで見てもPrintDlg()呼び出しでエラーも何も出てこなくてわからない
626 名前:デフォルトの名無しさん mailto:sage [2023/04/28(金) 08:28:43.45 ID:dRuFEUWm.net] 10で平気なら11のバグだな 窓板の11バグ多すぎワロタスレに報告しとけよ
627 名前:デフォルトの名無しさん [2023/04/28(金) 10:51:05.85 ID:pksuSfee.net] 閉じてから印刷
628 名前:デフォルトの名無しさん mailto:sage [2023/04/30(日) 17:14:32.74 ID:dQsz62eN.net] PrintDlgってcomdlg32.dllだよな comdlg32.dllはバグで有名なやつじゃないか
629 名前:蟻人間 ◆T6xkBnTXz7B0 mailto:sage [2023/04/30(日) 19:59:15.10 ID:Aup++SJD.net] Microsoftの直接的な関係者ではなく、TSF (Text Services Framework)の仕組みを知り尽くしている人を募集中。成功報酬あり。 katayama.hirofumi.mz@gmail.com
630 名前:デフォルトの名無しさん [2023/04/30(日) 20:06:36.85 ID:/hwg+Moy.net] Firefoxのにゃるるにコンタクトすれば? あと成功報酬ではなく労働報酬あるいはコンサルタント報酬であるべきだよ
631 名前:蟻人間 ◆T6xkBnTXz7B0 mailto:sage [2023/04/30(日) 21:05:43.46 ID:Aup++SJD.net] にゃるるってダレ? 検索しても見つからないよ
632 名前:デフォルトの名無しさん [2023/04/30(日) 21:19:58.80 ID:8kv4t+8E.net] 書き込めなかった、ローマ字で検索して にゃるる が地球にいたころ って言うか自分で勉強検索してたら最も頻繁に出てくる
633 名前:蟻人間 ◆T6xkBnTXz7B0 mailto:sage [2023/04/30(日) 21:52:27.43 ID:Aup++SJD.net] ありがと
634 名前:デフォルトの名無しさん mailto:sage [2023/04/30(日) 21:55:44.21 ID:9BNVTRHB.net] 地球にいないのでは無理では?
635 名前:デフォルトの名無しさん mailto:sage [2023/04/30(日) 22:05:27.13 ID:AaWD86jI.net] 報酬が相場より2桁くらい少なそう。
636 名前:デフォルトの名無しさん mailto:sage [2023/05/02(火) 21:18:50.29 ID:koHs32mY.net] WaitOnAddressってアドレスの値が比較対象と違う値に変化したら自動的に起きるっていう魔法みたいなものではないんだね 呼んだ瞬間に比較対象と違ったら即返る、同じだったら後ほど変わったとしてもWakeByAddress系で通知しなきゃ起きないっていう原始的なイベントと言うほど変わらない感じか
637 名前:デフォルトの名無しさん mailto:sage [2023/05/03(水) 14:28:28.65 ID:wz1HqF7D.net] directoryなら監視してくれるけど https://www.youtube.com/watch?v=hKLBPXg8oik 呼んだ瞬間に比較対象と違ったら即返る 同じだったら返らない っていうのを期待してる?
638 名前:デフォルトの名無しさん mailto:sage [2023/05/03(水) 20:05:13.46 ID:v7V26Uwz.net] >>626 その挙動は既にWaitOnAddressに組み込まれてる訳だけど 対象アドレスの値が変わったら通知とか無しに自動的に戻ることを期待していた そうじゃなくてマニュアルでWakeByAddress呼ばなきゃいけないからイベントとそこまで変わらんなぁと まあハンドル作らずに済む点で手軽ではあるけど
639 名前:デフォルトの名無しさん mailto:sage [2023/05/03(水) 20:45:04.91 ID:Kv12u2jn.net] 8で追加されたAPIは頭悪い OSが頭悪ければAPIも頭悪いという当然の帰着
640 名前:デフォルトの名無しさん mailto:sage [2023/05/03(水) 21:24:23.86 ID:+bgC2i5O.net] APIを使うだけならWin32よりWinRTの方が簡単でしょ
641 名前:デフォルトの名無しさん mailto:sage [2023/05/03(水) 21:27:08.93 ID:XU1+7Xhm.net] 本当にそうか?
642 名前:デフォルトの名無しさん mailto:sage [2023/05/03(水) 21:36:14.09 ID:+bgC2i5O.net] >>630 ウィンドウ表示するコードはこれだけ #include <windows.h> #include <winrt/Microsoft.UI.Xaml.h> using namespace winrt; using namespace Microsoft::UI::Xaml; int WINAPI wWinMain(HINSTANCE, HINSTANCE, LPWSTR, int) { init_apartment(); Application::Start([](auto&&) { Application(); Window window; window.Activate(); }); return 0; }
643 名前:デフォルトの名無しさん mailto:sage [2023/05/04(木) 00:16:09.16 ID:4Uvo6CUb.net] ラッパー系は手をつけにくいなあ、MFCやOWLの悪夢が蘇る 便利そうに見えて、覚えることが増えるだけだったり 見えざる制約が足枷になったり、バージョン管理が面倒だったりと やむを得ない場合は仕方ないけど
644 名前:デフォルトの名無しさん mailto:sage [2023/05/04(木) 00:34:52.44 ID:qlZGMdPb.net] WinRTってMS的にはWin32と同列の扱いだけど、WinRTは内部でWin32を使ってるのだろうか?
645 名前:デフォルトの名無しさん mailto:sage [2023/05/04(木) 05:10:21.07 ID:P5ZkmciJ.net] COMを焼き直して名前変えただけと言えばいいのか ただCOMの利点だったIDispatchで適当な言語から扱うみたいな事ができないうんこです
646 名前:デフォルトの名無しさん mailto:sage [2023/05/04(木) 07:28:00.92 ID:Nm4VxhU5.net] >>632 確かに恐ろしい部分はあるかも
647 名前:デフォルトの名無しさん mailto:sage [2023/05/04(木) 07:33:59.15 ID:Nm4VxhU5.net] WinRTはC#の情報ばかりでC++の情報が少ないから苦労するかも その点Win32は情報が多いからいいね
648 名前:デフォルトの名無しさん mailto:sage [2023/05/06(土) 10:58:22.01 ID:SadRj80b.net] >>628 WaitOnAddressは利便性目的ではなく手軽さ+パフォーマンスが要点だからそうとも言えない Thread立ち上げて立ち上げたスレッドがある地点まで到達するまで待ちたいみたいなちょっとしたシーンでは結構便利 パフォーマンス的にもイベント待ちに比べて1000倍近く早かったはず
649 名前:デフォルトの名無しさん mailto:sage [2023/05/11(木) 18:47:03.56 ID:FTM2vWjW.net] Chromeのタイトルバーに「^」の文字を上下反転させたボタンがあって押すとミニウィンドウ的なのが開くのですが、このボタンを実装したいのですがどうしたらできますか? Chromiumのソースコード見てもどこに該当コードがあるかわかりませんでした c言語で実装したいです
650 名前:デフォルトの名無しさん mailto:sage [2023/05/11(木) 18:55:17.65 ID:OsVl9AaP.net] タブを検索ボタンか。ソースをTab Searchで検索すれば出てくるんじゃないの
651 名前:デフォルトの名無しさん mailto:sage [2023/05/11(木) 19:52:12.33 ID:FTM2vWjW.net] 検索してみました ttps://github.com/search?q=repo%3Achromium%2Fchromium%20tab%20search&type=code タブを開いた時の挙動などはTypescriptで書かれているようでした ttps://github.com/chromium/chromium/blob/cd5fe35a69d697dd48ad34d5670d090afcdc57be/chrome/browser/resources/tab_search/app.ts#L560 既存のアプリにc/c++で手軽にタイトルバーにボタンをつけてポップアップウィンドウが開けてそこでボタンなどを選択できるような方法を知っていますか?
652 名前:デフォルトの名無しさん mailto:sage [2023/05/11(木) 20:34:55.74 ID:Tud0+/yk.net] 手軽ではないと思うが DwmExtendFrameIntoClientArea を使えばできそう https://learn.microsoft.com/ja-jp/windows/win32/dwm/customframe
653 名前:デフォルトの名無しさん mailto:sage [2023/05/16(火) 23:21:04.68 ID:bBMeTJtZ.net] LoadLibraryに渡されたlpLibFileName引数をどうにか呼ばれたdllmainから取得する事って出来ないかな 32bitならスタックフレーム遡ってLdrLoadDllを呼んだところの第3引数のスタックのUNICODE_STRINGから手に入れる事に成功したが 64bitだとfastcallになっちゃって第4引数まではレジスタ渡しされるからこの手法も通用しなくて詰んだ kernel32やntdllのアセンブラ決め打って取得することは出来るだろうけどそこまではしたくない
654 名前:デフォルトの名無しさん mailto:sage [2023/05/16(火) 23:26:32.45 ID:bBMeTJtZ.net] ちなみになぜGetModuleFileNameではダメかというとハードリンクやシンボリックリンクのときにある条件下においてlpLibFileNameとGetModuleFileNameで一致しないケースが出てくるため
655 名前:デフォルトの名無しさん mailto:sage [2023/05/17(水) 01:27:34.09 ID:LUtEOwg/.net] >>643 その >ある条件下 で TCHAR PathBuffer[BUFFSIZE]; GetMappedFileName (GetCurrentProcess(), (void *)hModule_DLL, PathBuffer, BUFFSIZE); で、lpLibFileNameと同じパス(NT形式)が返ってくる?それともエラー? 試してないので結果を教えて
656 名前:デフォルトの名無しさん mailto:sage [2023/05/17(水) 09:18:00.69 ID:J+vPZ/2W.net] >>644 GetMappedFileNameだとリンク先の実体ファイル名が返ってきた ある条件下というのは既に同じリンク先のdllがロード済みの場合に違う名前のリンクからロードしようとすると同一の物と判定され先客の方のhModuleが帰ってくるためGetModuleFileNameも先にロードしたほうの名前になる C:\mod.dll ← 実体 C:\link0.dll ← シンボリックリンク C:\link1.dll ← シンボリックリンク 最初にC:\link0.dllをLoadLibraryした場合、以降C:\link1.dllをロードしGetModuleFileNameをしてもC:\link0.dllが帰ってくる GetMappedFileNameだと常にC:\mod.dllだった
657 名前:644 mailto:sage [2023/05/17(水) 10:25:43.22 ID:fHvb3D7j.net] >>645 確認ありがとう、参考になった こみ入った環境なんだね 所望の動作でなくて残念だけど、他の手段に心当たりがない...
658 名前:デフォルトの名無しさん mailto:sage [2023/05/18(木) 10:34:13.93 ID:gc1pBp/r.net] pe iat import address table 辺りを弄れば 鶏卵かもしらんけど
659 名前:デフォルトの名無しさん mailto:sage [2023/05/18(木) 12:21:08.02 ID:Wn2vmhFl.net] load されたときの名前からパラメータ参照ファイルな .ini ファイルの名を変えたいって感じなのかな? >>645 のケースだと C:\link0.dll でロードした場合には C:\link0.ini を参照し 以降 C:\link1.dllをロードした場合には C:\link1.ini を参照したい と この場合 単に同じ実体でリンクカウントが1増えるだけであっても区別したい ということか
660 名前:デフォルトの名無しさん mailto:sage [2023/05/18(木) 12:49:23.99 ID:gc1pBp/r.net] DLLはメモリに直接ロードする方法もあるから 不正を正したいって意図なら無力だよ
661 名前:デフォルトの名無しさん mailto:sage [2023/05/18(木) 23:43:11.96 ID:qdON7ber.net] 1. FindFirstFileでリンクか実体かを判定 2. VirtualAllocExで実行可領域のメモリを確保 3. ReadFileでDLLを読み込む 4. PEヘッダのIMAGE_OPTIONAL_HEADER64.ImageBase+IMAGE_SECTION_HEADER.VirtualAddressに各セクションをコピー 5. DLL内のImportLibraryを同じ手順で再帰的にロード 6. DLL_PROCESS_ATTACHとDLL_THREAD_ATTACHでDllMain呼び出し
662 名前:デフォルトの名無しさん mailto:sage [2023/05/19(金) 14:28:26.73 ID:FHSnxikS.net] Win32APIのGUIに著作権ってある? 自分用ならまぁ好きにしたらって程度だと思うけど ボタンとか目コピで丸パクリしてアプリケーションとして配布したらダメなのかな
663 名前:デフォルトの名無しさん mailto:sage [2023/05/19(金) 14:50:21.97 ID:D8eITJ2Q.net] 腐ったバナナの皮ですらアートとして認められるからな 許諾なしなら著作持ってる奴次第
664 名前:デフォルトの名無しさん mailto:sage [2023/05/19(金) 20:19:56.03 ID:c7UfD3kr.net] ReactOSはかなり似てるけどね アイコンはTangoのを使ってるけど、形的なものはそっくりだな テーマ機能があるから、訴えられても簡単に変えられるし、大した問題でもないが
665 名前:デフォルトの名無しさん mailto:sage [2023/05/19(金) 20:39:13.36 ID:OUfVoMDF.net] https://monolith-law.jp/corporate/design-ui-copyright-law レイアウトや色の使い方ぐらいじゃ侵害にはならないだろうって判断と あとは「思想又は感情を創作的に表現」したものであるかが関わる それと著作権法に触れなくても意匠法にに触れる場合はあるとさ >>651 複雑なデザインのボタンがあってそれを丸コピしたなら危ないけど WinAPI程度のボタンだと「レイアウトや色の使い方」の範疇に思う
666 名前:デフォルトの名無しさん mailto:sage [2023/05/19(金) 20:46:16.58 ID:IeFHnOxn.net] >>651 あの大きさでは目コピって言いわけしても無理だろw 90%一致できるw
667 名前:デフォルトの名無しさん mailto:sage [2023/05/19(金) 22:40:34.19 ID:9QPyu6+L.net] 悪目立ちしなきゃ大丈夫って感じかな どうもありがとう 素直に使いこなせれば変なことしなくていいんだけど
668 名前:デフォルトの名無しさん mailto:sage [2023/05/20(土) 13:22:54.16 ID:QfLlK72x.net] >>654 Windows自体がMotifのパクリ
669 名前:デフォルトの名無しさん mailto:sage [2023/05/20(土) 15:28:47.38 ID:GL6RWJiS.net] あの立体的に飛び出たボタンは誰が最初にやったかを少し調べてみたら、やっぱりMotifが最初にやった可能性が高いな Windowsも旧Mac OSもMotifより前にリリースされてるけど、ボタンは黒い線で縁取られてるだけだからね Motifがリリースされた1989年の直後、1990年にWindows3.0がリリースされてボタンが立体的になった ただ、リリース直後のMotifの見た目は確認出来なかった
670 名前:デフォルトの名無しさん [2023/05/21(日) 05:50:22.86 ID:wNzdA/GS.net] 誰も突っ込まないけどWin32APIのGUIってなんだよ?
671 名前:デフォルトの名無しさん mailto:sage [2023/05/21(日) 09:39:48.68 ID:WLjUQB8s.net] GDI32.DLL つうかWindowsはGUIだろ
672 名前:デフォルトの名無しさん mailto:sage [2023/05/21(日) 12:08:47.18 ID:+3uTL0QF.net] 面倒なことしなくてもDLLからアイコンロードすればいいんだけどな
673 名前:デフォルトの名無しさん mailto:sage [2023/05/21(日) 15:30:11.58 ID:4p2tw/ut.net] >>659 CreateWindow()とか知らないの?
674 名前:デフォルトの名無しさん [2023/05/21(日) 17:54:29.28 ID:BWx6f6vD.net] CreateWindow() のどこがGUIなんだって話なんだけど。 GUIを構成するためのAPIの一つではあるがGUIと言われても違和感しかない。
675 名前:デフォルトの名無しさん mailto:sage [2023/05/21(日) 18:18:37.48 ID:Ifo/fxoU.net] 皆行間読んで回答してるんだよ そういうのを読み取れずにいちいち突っかかってくるお前に違和感しかないわ
676 名前:デフォルトの名無しさん [2023/05/21(日) 20:46:54.79 ID:BWx6f6vD.net] 行間が読み取れてないわけでも突っかかったわけでもなくて 気になる人いないの?って問うただけなんだけどね。
677 名前:デフォルトの名無しさん mailto:sage [2023/05/21(日) 20:55:29.63 ID:hFZuZI8a.net] GUIじゃなくてGUIパーツね それを指摘してどうすんの?
678 名前:名無しさん mailto:sage [2023/05/21(日) 21:06:29.15 ID:WLjUQB8s.net] GUIのデザインパクっていいっすか?だろ? 左上にシステムメニューと閉じるボタン 右上にアイコン化、全画面化がWindows3.1のGUIだ
679 名前:デフォルトの名無しさん mailto:sage [2023/05/21(日) 22:29:14.29 ID:5ynrmfbS.net] よく読めよ ボタンのビットマップとかのGUIパーツについて言ってるだろ GUIのメソッドについてはパクるまでもなくAPI呼び出せば自然にそうなるから
680 名前:デフォルトの名無しさん mailto:sage [2023/05/22(月) 00:44:58.78 ID:Ff1Yirur.net] それwin32api関係なくね?
681 名前:デフォルトの名無しさん mailto:sage [2023/05/22(月) 02:26:03.44 ID:Zf+cjPeC.net] comctl32もwin32apiだと思う
682 名前:デフォルトの名無しさん [2023/05/22(月) 11:33:40.49 ID:Omf9ofNg.net] Win32API の話ならム板 Win32API の著作権の話ならマ板 Win32APIのGUI?(ツールのデザイン)? の著作権の話なら著作権板 だろうな 遠すぎる
683 名前:デフォルトの名無しさん [2023/05/22(月) 22:29:16.30 ID:DLlnfzHn.net] うるせー馬鹿
684 名前:デフォルトの名無しさん mailto:sage [2023/06/01(木) 18:53:13.24 ID:hCiag/wO.net] winsqlite3って勝手に最新版のsqlite3でstdcallにしてコンパイルして上書きしても問題起こらないんかな
685 名前:デフォルトの名無しさん [2023/06/06(火) 23:10:55.17 ID:VJFPZJIc.net] テキストカーソルインジケーターをアプリに組み込みたいんですが、どこかにサンプルコードないですか?
686 名前:デフォルトの名無しさん mailto:sage [2023/06/06(火) 23:42:13.94 ID:kMZUPc/s.net] >>674 >>618 : 蟻人間 似た状況の話に見えるどnyaruruはどうなったんだ?
687 名前:蟻人間 mailto:sage [2023/06/06(火) 23:46:10.64 ID:XV1AZyoR.net] >>674 キャレットはXORペンで描くのがコツだね。
688 名前:蟻人間 mailto:sage [2023/06/06(火) 23:50:08.39 ID:XV1AZyoR.net] システム標準のキャレットを使うならCreateCarat、ShowCaratなどを使う。 https://learn.microsoft.com/ja-jp/windows/win32/menurc/using-carets
689 名前:デフォルトの名無しさん mailto:sage [2023/06/07(水) 13:08:22.78 ID:xTW5tL3j.net] >XOR 灰色背景だと見えなくなるから賛同できないわ
690 名前:デフォルトの名無しさん mailto:sage [2023/06/07(水) 13:24:44.47 ID:RsLfWKsz.net] 標準のエディットコントロール内に居るキャレットって XOR 描画してるよね
691 名前:デフォルトの名無しさん mailto:sage [2023/06/07(水) 15:03:13.28 ID:BwWz5oN8.net] たいていは白色がテキスト入力で灰色は入力不可の部分だからいんじゃない
692 名前:デフォルトの名無しさん mailto:sage [2023/06/07(水) 23:21:33.35 ID:HdTy5x+f.net] 読み取り専用とかで灰色背景はよくあるけど
693 名前:デフォルトの名無しさん [2023/06/08(木) 21:52:05.26 ID:xczGeZ8q.net] キャレットもそうだけど、最近なんか範囲選択表示で、半透明の矩形上に重ねるだけのエディタ多くね? あれ見づらいんだよなぁ・・・フルスクラッチで作るなら確かに横着できて楽なんだろうけど
694 名前:デフォルトの名無しさん mailto:sage [2023/06/08(木) 22:08:34.87 ID:asQ3aAAN.net] エディットコントロール自作はやめたほうがいい IMEが機能してるように見えても、音声入力や音声入力編集、読み上げで制限があるのが大半だから キャレットもOSの強調表示機能があるし、知らないところで多機能を要求される
695 名前:デフォルトの名無しさん mailto:sage [2023/06/09(金) 00:33:21.65 ID:HaYoNzhW.net] 自作エディットコントロールわざわざ作るときって巨大ファイル編集したいとかじゃないの OSが勝手に後付けしたアクセシビリティ機能とか知らんでいいよ
696 名前:デフォルトの名無しさん mailto:sage [2023/06/09(金) 06:30:59.27 ID:J1Oq+Y/w.net] >>684 縦表示も独自実装、フルスクラッチでないけど 縦書きエディタTATEditorはwxWidgetsカスタムのようだ https://qiita.com/496_/items/ebfb1e5eefaa9aa8f5bf https://www.youtube.com/watch?v=_qnk_fNQvCo
697 名前:デフォルトの名無しさん mailto:sage [2023/06/09(金) 06:34:59.04 ID:J1Oq+Y/w.net] 老舗エディタ(mifes, em)は巨大ファイル対応 これが異彩を放ってる 小さいメモリ(100MB以下)で大規模テキストファイル(5TB以上、2兆5000億行以上)を編集できる世界唯一の超巨大テキストエディター https://szkwjp.サクラ.ne.jp/ https://i.imgur.com/isKK2x5.png
698 名前:デフォルトの名無しさん mailto:sage [2023/06/09(金) 06:41:25.43 ID:J1Oq+Y/w.net] Meryもdelphi製コントロールをヘビーカスタムしてたと思う www.haijin-boys.com/
699 名前:デフォルトの名無しさん mailto:sage [2023/06/09(金) 06:44:24.60 ID:J1Oq+Y/w.net] この人は完全自作かも https://twitter.com/TZEditor (deleted an unsolicited ad)
700 名前:デフォルトの名無しさん mailto:sage [2023/06/09(金) 06:46:39.63 ID:J1Oq+Y/w.net] アクセシビリティ機能が要らない前提なら沢山あるね
701 名前:デフォルトの名無しさん [2023/06/09(金) 21:43:38.94 ID:KphHYdc7.net] >>686 emEditor世話になっているけど意外に保存遅いんだな まぁ頻繁に保存するような用途じゃないんだけど そういや日本語フォント最速表示って今なんなんだろう、DirectWrite? アルファベットなら予めテクスチャに全部落とせばいいんだろうけど
702 名前:デフォルトの名無しさん mailto:sage [2023/06/09(金) 22:38:21.40 ID:9anYwuVY.net] >>686 ,688はフリーじゃない >>690 >意外に保存遅い emEditorは今でも活発に最適化に努めてるから最新ではどうなのか不明 飽くなき高速化への挑戦! 「EmEditor」はマルチスレッド・SIMD命令・仮想メモリをフルに使って進化 https://forest.watch.impress.co.jp/docs/special/1483714.html freetypeが早いけどDWはOSがキャッシュしてくれる(ctfmon.exe)のが有利 harfbuzzもラスタライズしてくれるけどbitmapヒンティング切捨て、速度は不明 GDIはカラー絵文字ないから新規では厳しい 古い記事だけど 2017-05-21 GDI vs DirectWrite vs FreeType https://i.imgur.com/8nDxIa3.png https://silight.ハテナblog.jp/entry/2017/05/21/220505 TATEditorはfreetype (本来の速度より遅い気がする) MeryはDW選択可能 今のnotepadはDWだと思うけどパラメータのせいなのか、同じ日本語フォントでもMeryの方がキレイ 一度気が付くと気になって仕方ない
703 名前:デフォルトの名無しさん mailto:sage [2023/06/10(土) 16:44:39.28 ID:Yvl44ooC.net] 昔はメモ帳やらエディットボックスが32KBだかしか開けなかったせいでちょっと長いテキスト表示したいなら自作するしかなかったし 今のエディットボックスも使いやすいというわけでもないし
704 名前:デフォルトの名無しさん mailto:sage [2023/06/10(土) 20:18:04.21 ID:mnSa2udb.net] 完全自作で良いの見つからないけどね
705 名前:デフォルトの名無しさん mailto:sage [2023/06/13(火) 09:51:52.60 ID:meEyuUg2.net] 禿丸
706 名前:デフォルトの名無しさん mailto:sage [2023/06/13(火) 10:08:02.73 ID:sYfPkaoR.net] 秀丸は1995年から今までずっと使ってる
707 名前:デフォルトの名無しさん mailto:sage [2023/06/13(火) 11:00:54.79 ID:M8hmmq2x.net] 4000yen
708 名前:デフォルトの名無しさん mailto:sage [2023/06/13(火) 16:26:23.21 ID:u7AmJNUj.net] >>693 むしろエディタには完全自作しかない エディタにあるような複雑な禁則事項はエディトボックスでは扱えない
709 名前:デフォルトの名無しさん mailto:sage [2023/06/14(水) 08:13:22.34 ID:EjsNogN3.net] 高校生の頃からHTML直打ち自前サイト始めたから、秀丸にはお世話になったわw
710 名前:デフォルトの名無しさん [2023/06/14(水) 23:13:37.25 ID:8tGzhu5T.net] >>691 690だけど遅レスですいません、詳しくありがとうございます 社内で使う遊びツールに活かさせて頂きます というかここまで詳しい人ってもう
711 名前:デフォルトの名無しさん mailto:sage [2023/06/19(月) 14:24:30.00 ID:x2sgiUfE.net] FindWindowで他プロセスの生存確認を行っているのですが、その該当プロセスが死んではないものの 応答無しレベルで重い場合にFindWindowがNULLを返すことはあるのでしょうか? ここでは他プロセスのトップウィンドウを検索しています。 該当プロセスが本当に死んでるなら当然でしょうが、それ以外でNULLを返す可能性があるならば 対策をしようと思いつつも、そんな可能性がないなら無駄なのでご存じの方よろしくお願いいたします。 さっとググった感じでは、他プロセスの子ウィンドウを検索する場合は問題ありのような感じですが、 本件はそうではないですしほとんどの場合NULLではなく正常にウィンドウハンドルを返してくれています。
712 名前:デフォルトの名無しさん mailto:sage [2023/06/19(月) 14:41:26.20 ID:wsVmiElF.net] 詳細なエラー情報を得るには、GetLastError を呼び出します。
713 名前:デフォルトの名無しさん mailto:sage [2023/06/19(月) 15:24:58.51 ID:2pPxjP0B.net] 他プロセスの生存確認はEnumProcesses()でやるべきなのでは
714 名前:デフォルトの名無しさん mailto:sage [2023/06/19(月) 16:12:12.17 ID:x2sgiUfE.net] >>701 その通りなのでその辺の修正を視野に入れていますが、中々再現性が薄いのもあり、そもそもの仕様として どうなのかなという確認の意味で質問しました。 >>702 どうもすみません。説明に抜けというか間違いがありました。 生存確認だけではなく、WM_APP+nメッセージも送るためウィンドウハンドルが必要となります。 (実際、死んでいるなら起動処理も入れていますが) 要はプロセス間通信をしているのですが、データ自体はファイルマッピングによる転送、転送のトリガー通知を メッセージ送信にしています。
715 名前:デフォルトの名無しさん mailto:sage [2023/06/20(火) 13:30:15.15 ID:Dvlv0UV+.net] FindWindowで見つからないならHWNDも取れないんだし居ない者でいんじゃね つかそこ悩むことじゃなくね
716 名前:デフォルトの名無しさん mailto:sage [2023/06/20(火) 14:36:54.12 ID:AYb44acK.net] >>700 ,703 ちなみにそのアーキテクチャはいつの設計なん?
717 名前:デフォルトの名無しさん mailto:sage [2023/06/20(火) 16:49:06.07 ID:Dvlv0UV+.net] まずプロセス間通信するなら相手が居ない場合を必ず想定すべきでFindWindowの1度の呼び出しで一喜一憂すべきではない プロセスの起動し直しも前提に数秒おきのFindWindow呼び出しポーリングはしたっていいと思うよ メインウィンドウなんて高々数十個だしそんな負荷にならない
718 名前:デフォルトの名無しさん [2023/06/20(火) 20:40:34.74 ID:1lEw2nNB.net] 該当プロセスを他プロセスから起動してたりするとどうなんだろ あとFindWindowじゃなくてEnumWindowsなら拾えないことって無い印象だなぁ、ハンドルも取れるし あまり関係ないけど、うちのクソシステムだとブラウザからサーバー上にあるエクセル開くんだけど、 Workbooksで拾えたり拾えなかったりするのよね(ExcelVBA)
719 名前:デフォルトの名無しさん mailto:sage [2023/06/21(水) 03:06:59.92 ID:xVHig5c/.net] >>704 複数起動しないようmutexかけてるので、プロセス生きてるにもかかわらずFindWindowがNULL返すのなら好ましくないなと。 >>705 古いよ。保守だけで毎月3桁くれるんだからおいしい。 >>706 とりあえず見つからないならエラーも取得しつつ数秒間再試行かけてみました。 これで様子を見ます。 >>707 該当プロセスは他のプロセスからも起動したりテスト作業で自分で起動したりしてますが、一応拾えてますね。
720 名前:デフォルトの名無しさん mailto:sage [2023/0
] [ここ壊れてます]
721 名前:6/21(水) 08:17:17.70 ID:HzwHqkRi.net mailto: mutex の排他って CreateWindow する前 & メッセージループする前だから プロセスは存在してるけど、window は無いって 中間的な状態じゃね? [] [ここ壊れてます]
722 名前:デフォルトの名無しさん mailto:sage [2023/06/21(水) 15:51:17.25 ID:3v7xwtLO.net] 100円か
723 名前:デフォルトの名無しさん mailto:sage [2023/06/21(水) 16:38:24.82 ID:cZp0PZIW.net] 999円かもしれないじゃないか
724 名前:デフォルトの名無しさん mailto:sage [2023/06/22(木) 17:55:22.58 ID:Sn58Ngpo.net] >>701 詳細なエラー情報を得るには、関数を呼び出します。
725 名前:デフォルトの名無しさん mailto:sage [2023/06/27(火) 10:23:32.50 ID:SIPPfbqI.net] >>710-711 お前らその金額でおいしいの?仕事してくんない?
726 名前:デフォルトの名無しさん mailto:sage [2023/07/14(金) 05:28:13.99 ID:+33O6idh.net] スクリーンセーバー作ろうぜ
727 名前:デフォルトの名無しさん [2023/07/23(日) 16:38:12.26 ID:eEbrANA6.net] POSIXのopenatとかをWindowsで実装したいんだけど、 NtCreateFileを使えとは見るんだけど、 実際のコードは見たなことない。 gnulibから実装した方がいいのかな?
728 名前:デフォルトの名無しさん mailto:sage [2023/07/24(月) 12:54:52.49 ID:IGsOjAN4.net] 不特定多数に文字だけで意思疎通するには答えやすい尋ね方というのがあると思うが、そんなことよりスクリーンセーバー作ろうぜ
729 名前:蟻人間 ◆T6xkBnTXz7B0 mailto:sage [2023/07/24(月) 13:10:56.94 ID:72ajrVnV.net] >>715 https://github.com/katahiromz/hello-native-app こちらを参考に。
730 名前:デフォルトの名無しさん mailto:sage [2023/08/04(金) 11:13:07.90 ID:2Yu2Iz7N.net] IME のオンとオフの実装で以前は ImmGetContext ImmSetOpenStatus ImmReleaseContext の3点セットで完全にオンとオフが機能していたように記憶しているのですが 今のWindowsでは機能しないことがあります(Windows 11 Home 22H2 OS Build 22621.2070) この原因や解決策をわかる方がいたら教えてほしいです Windows の公式サンプルでもこの3点セットでオンオフを実装しています github.com/microsoft/Windows-classic-samples/blob/ac06e54a15e9a62443e400fffff190fb978ea586/Samples/Win7Samples/winui/input/ime/fullime/Main.C#L237
731 名前:デフォルトの名無しさん mailto:sage [2023/08/05(土) 03:35:25.87 ID:ZYr7i0H2.net] 旧版MS-IMEじゃないとダメなんじゃないっけ?知らんけど
732 名前:デフォルトの名無しさん mailto:sage [2023/08/05(土) 09:34:20.67 ID:wvUeqD5z.net] 心配無用 Win11でなら上手く動かなくても許される
733 名前:デフォルトの名無しさん [2023/08/14(月) 19:56:12.96 ID:53r0CZc5.net] y=f(x)のグラフを描こうとした場合、GDIのLineTo()で書けますが グラフとx軸の間の領域を背景とは異なる色で描画しているアプリを 見かけることがあります。 ベタにやろうとすると(x,0)から(x,f(x))までを別のペンでLineToすれば できそうですが、それだとあまりにも遅そうなんでどのようにするのが 一般的なんでしょうか?
734 名前:デフォルトの名無しさん [2023/08/14(月) 19:58:40.11 ID:KSpEuPpD.net] polygon
735 名前:デフォルトの名無しさん mailto:sage [2023/08/14(月) 23:17:07.87 ID:Vf3oM49A.net] >>721 グラフを描画するのであれば、さすがにそういうのに向いたプログラミング言語を使ったほうが 本質的な所に時間を使えるんじゃないか?
736 名前:デフォルトの名無しさん [2023/08/14(月) 23:53:10.89 ID:hsUNKBWX.net] (分かりやすく)グラフが丁度収まる矩形サイズの描画メモリをCreateDIBSectionとかで確保して 掛け算や条件文をなるべく使わずに、直接メモリを塗りたい色で書き換えて、 最後にその描画メモリをバックバッファへ転送する、とか
737 名前:デフォルトの名無しさん [2023/08/15(火) 08:10:50.28 ID:eu+UdA0l.net] PathT
738 名前:o [] [ここ壊れてます]
739 名前:デフォルトの名無しさん mailto:sage [2023/08/15(火) 10:10:52.28 ID:whQn6DUa.net] データ左端,Y軸下端 to データ左端,Y値 to データX値,Y値 to ... to データ右端,Y値 to データ右端,Y軸下端 (to データ左端,Y軸下端)
740 名前:デフォルトの名無しさん mailto:sage [2023/08/15(火) 11:35:30.53 ID:r8gJDQt/.net] https://learn.microsoft.com/ja-jp/windows/win32/api/wingdi/nf-wingdi-polypolygon
741 名前:デフォルトの名無しさん mailto:sage [2023/08/15(火) 11:44:42.91 ID:5h6JYYPu.net] 自分で線描画してメモリDCでダブルバッファするか 既製のチャートコントロールを使う jもしくはavascriptにグラフ描画のは沢山あるからそ!をwebview2か何かで表示する
742 名前:デフォルトの名無しさん mailto:sage [2023/08/15(火) 12:32:58.41 ID:32B9AzF9.net] いや、GDI+かDirect2Dを使えばいいんだよ
743 名前:デフォルトの名無しさん [2023/08/16(水) 10:30:08.97 ID:tgyEZLGb.net] >jもしくはavascript 斬新ですね
744 名前:デフォルトの名無しさん [2023/09/23(土) 00:28:12.62 ID:aQUNS12d.net] メール関係のライブラリを知っていたら教えてください。 Windowsで使えるライブラリってないのでしょうか。
745 名前:デフォルトの名無しさん mailto:sage [2023/09/23(土) 04:00:25.45 ID:kn75UD+k.net] まああるかないかで答えればあるんだけどさ メール関係って言われても色んな技術の集合だしなあ その質問をこのスレで聞いちまう所がまずセンスないよね
746 名前:デフォルトの名無しさん mailto:sage [2023/09/23(土) 09:47:18.93 ID:i9fpyxKg.net] mapi
747 名前:デフォルトの名無しさん mailto:sage [2023/09/23(土) 14:43:48.51 ID:60UGXAh5.net] 送受信はたいしたことないけど お行儀悪いのを忖度して可視化するのがとても大変
748 名前:デフォルトの名無しさん mailto:sage [2023/09/23(土) 18:43:45.24 ID:lGebHJu0.net] HELO
749 名前:デフォルトの名無しさん mailto:sage [2023/09/23(土) 23:00:13.46 ID:9Qe717YS.net] USER PASS
750 名前:デフォルトの名無しさん [2023/09/24(日) 09:35:27.98 ID:2YTVyUlC.net] EHLO
751 名前:デフォルトの名無しさん mailto:sage [2023/09/24(日) 19:41:47.04 ID:iqjAJ+9f.net] RFC821
752 名前:デフォルトの名無しさん [2023/09/25(月) 13:09:43.15 ID:RmxLVxNP.net] ERO
753 名前:デフォルトの名無しさん mailto:sage [2023/09/26(火) 13:29:13.68 ID:6+Zop4bX.net] GetTempPathで取得できるフォルダ(AppData\Local\Temp)の中を見ると、 固定名と思われるサブフォルダを作っているアプリが結構あるのですが、 こういうアプリって、その固定名のサブフォルダが他のアプリと競合したり、 同じ名前のファイルがすでに存在していてサブフォルダを作るのに失敗したりするケースは、 ちゃんと想定しているものなんですか?
754 名前:デフォルトの名無しさん mailto:sage [2023/09/26(火) 14:42:44.03 ID:QCQROq06.net] 作り手次第だよ ちょっと考えれば判るよね
755 名前:デフォルトの名無しさん mailto:sage [2023/09/26(火) 16:13:27.26 ID:6+Zop4bX.net] >>741 想定していないアプリなんかは、事前に同じ名前の空ファイルでも置いておけば、 テンポラリフォルダを作れなくて正しく動かなくなってしまうということですよね?
756 名前:デフォルトの名無しさん mailto:sage [2023/09/26(火) 16:59:03.55 ID:mqYR7ljA.net] 同名のファイルが存在してサブフォルダが作れずに阻害された後 どうなるかも作り手次第だろうね 名前を変えて悪あがきするか、エラー報告して終わるか、だんまりするか・・・
757 名前:デフォルトの名無しさん mailto:sage [2023/09/26(火) 19:44:54.79 ID:a3/CUfz+.net] 単なるファイルのコピーすら気を付けても穴だらけだしな その時点の知識で最良を目指すしかない
758 名前:デフォルトの名無しさん mailto:sage [2023/09/27(水) 02:22:24.50 ID:5xG4BOfj.net] >>740 そもそもTempは一時的なフォルダでしょ 本アプリは上書きで使っていくだけだから影響はないでしょ キャッシュや恒久的に使用するデータをそこに保存している場合は不具合のもとだろうけど データ検証しない場合はエラー吐いて落ちるだけじゃね?
759 名前:デフォルトの名無しさん mailto:sage [2023/09/27(水) 08:45:50.87 ID:KtsI0JaQ.net] Tempフォルダの中身は削除されても文句言えない物だから なんなら同名あったら問答無用で削除して自分用作るすらあると思うわ
760 名前:デフォルトの名無しさん [2023/09/27(水) 11:42:51.73 ID:OOPn+kCl.net] その通り 既存の同名があって作成者が自分じゃなければ消して新しく同名で造れば良い
761 名前:デフォルトの名無しさん mailto:sage [2023/09/27(水) 11:55:22.18 ID:rbbJx+dJ.net] >>740 勝手に数字をつけて存在しない名前を探してくれるAPIがあっただろ 数字は16ビットなので65536個全部あったらだめだが
762 名前:デフォルトの名無しさん mailto:sage [2023/09/27(水) 12:24:30.48 ID:JPmaWpsM.net] APIを呼び出した次の瞬間名前が衝突する可能性も考慮するんだぞ
763 名前:740 mailto:sage [2023/09/27(水) 12:37:44.20 ID:jK1ZOC3S.net] みなさんありがとうございます。 >>745-748 テンポラリファイルではなく、固定名のサブフォルダを作るアプリに対する疑問でした。 フォルダ上に同名のファイルがあったら、その名前のサブフォルダは作れないですし。 確かにそれを言い出したら、インストール時も、 Program Filesの中に同名のファイルがあったらどうするんだとか出てきますが。
764 名前:デフォルトの名無しさん mailto:sage [2023/09/27(水) 14:26:16.30 ID:5xG4BOfj.net] >>750 作る前に存在の有無ぐらい確認するでしょ
765 名前:デフォルトの名無しさん mailto:sage [2023/09/27(水) 14:52:35.81 ID:KtsI0JaQ.net] それはアプリ作成側がそこまで思いを致すかどうかなんだよ
766 名前:デフォルトの名無しさん mailto:sage [2023/09/27(水) 15:25:13.52 ID:CB93ywr3.net] >>750 テンポラリファイルではなく、固定名のサブフォルダを作る場合は C:\Users\ユーザー名\AppData\Local\会社名 で作るのが一般的では?(暗黙のルール?) 個人で作ってるならアプリ名を元に他と被らないようにするとか
767 名前:デフォルトの名無しさん mailto:sage [2023/09/27(水) 23:12:54.83 ID:zQBl5fyt.net] その為のレジストリなんじゃないのか? キーは基本的に会社名含めてるから被らないし、ファイルを作成して消耗するより楽だろ
768 名前:デフォルトの名無しさん [2023/09/28(木) 06:29:56.08 ID:wsjwbbNA.net] テンポラリの作業用にレジストリ使うの? ファイル造る方が楽
769 名前:デフォルトの名無しさん mailto:sage [2023/09/28(木) 08:45:42.90 ID:fRqICkyk.net] >>753 とか>>754 とか 世の中に同じ名前の会社が一切存在しないと思ってんだろうか
770 名前:デフォルトの名無しさん mailto:sage [2023/09/28(木) 09:48:55.62 ID:wMng62Lu.net] 知らんわ あとから出来たほうが対策しろよw
771 名前:デフォルトの名無しさん mailto:sage [2023/09/28(木) 10:00:55.49 ID:7+/lnWbq.net] ファイルやディレクトリ造るために社名変更するまである
772 名前:デフォルトの名無しさん mailto:sage [2023/09/28(木) 10:03:24.72 ID:/0J5x9qx.net] 実際被ってたことってある? 俺はないけど
773 名前:デフォルトの名無しさん mailto:sage [2023/09/28(木) 19:13:55.93 ID:0dpaiugf.net] 俺はいまでもかぶってる
774 名前:デフォルトの名無しさん mailto:sage [2023/09/28(木) 23:36:06.79 ID:HoOgKtnG.net] もげろ
775 名前:デフォルトの名無しさん mailto:sage [2023/09/29(金) 08:59:20.90 ID:Z2hlTA8C.net] 病院行ってこい
776 名前:デフォルトの名無しさん mailto:sage [2023/09/29(金) 09:07:48.85 ID:05Kz/f5R.net] 整形外科?泌尿器科?
777 名前:デフォルトの名無しさん mailto:sage [2023/09/29(金) 11:10:40.92 ID:F8aJXNq9.net] 風呂入れよ https://www.youtube.com/watch?v=DTDMHUuC3rI
778 名前:デフォルトの名無しさん mailto:sage [2023/10/07(土) 15:05:12.07 ID:9HknARLB.net] >>750 >確かにそれを言い出したら、インストール時も、 >Program Filesの中に同名のファイルがあったらどうするんだとか出てきますが。 Windows Installerは排他実行だった気がする。
779 名前:デフォルトの名無しさん mailto:sage [2023/10/07(土) 15:05:22.61 ID:9HknARLB.net] >>750 >確かにそれを言い出したら、インストール時も、 >Program Filesの中に同名のファイルがあったらどうするんだとか出てきますが。 Windows Installerは排他実行だった気がする。
780 名前:デフォルトの名無しさん mailto:sage [2023/10/09(月) 03:22:17.67 ID:vj98VpKw.net] >>764 グロ
781 名前:デフォルトの名無しさん [2023/10/09(月) 08:17:21.60 ID:2tIVtmSa.net] リソースの作成は、片山さんのを使っているのですか?
782 名前:デフォルトの名無しさん mailto:sage [2023/11/27(月) 15:12:37.06 ID:hjluQqqG.net] はい
783 名前:デフォルトの名無しさん mailto:sage [2023/12/05(火) 09:32:43.89 ID:wrsiK2xx.net] MoveFileExにはMOVEFILE_WRITE_THROUGHというフラグがあって、 直後にディスクへフラッシュすることができるけど、 これと同じことをCopyFileで行うことはできますか?
784 名前:デフォルトの名無しさん mailto:sage [2023/12/05(火) 12:40:51.43 ID:3zuw4Zf7.net] >>770 単独では無理そうなので、CopyFile2 をつかうといい。 https://devblogs.microsoft.com/oldnewthing/20221007-00/?p=107261
785 名前:デフォルトの名無しさん mailto:sage [2023/12/05(火) 13:17:40.41 ID:wrsiK2xx.net] >>771 Microsoft公式で、こんな苦し紛れな方法が紹介されているんですね。 MoveFileExはNT3.1以降の関数なのに。
786 名前:デフォルトの名無しさん mailto:sage [2023/12/05(火) 15:56:54.94 ID:qi66pVAj.net] >>770 ,771 どっちもそれだけでは不意の電源断でロバストじゃないのが難しい。
787 名前:デフォルトの名無しさん mailto:sage [2023/12/05(火) 21:13:57.13 ID:rxI6O073.net] タイムスタンプが1970年だかのファイルを仮置きして別名でコピーしたら挿げ替え 電源断が怖いなら挿げ替え部分だけアトミックに作ればいい
788 名前:デフォルトの名無しさん mailto:sage [2023/12/05(火) 22:40:24.43 ID:82k65TSZ.net] >>774 >電源断が怖いなら挿げ替え部分だけアトミックに作ればいい この部分は具体的にセオリー的なやり方があるのですか? 挿げ替えで思い当たるReplaceFileはアトミックか分かりませんでした。
789 名前:デフォルトの名無しさん mailto:sage [2023/12/06(水) 11:02:51.03 ID:swAla//2.net] CopyFileではいったんテンポラリファイルにコピーして、 それをMoveFileExで正しいファイル名に変更するとかやれば、 ちゃんと書き込まれる可能性は高くなるんですかね
790 名前:デフォルトの名無しさん mailto:sage [2023/12/06(水) 13:32:02.74 ID:MnzvwPfi.net] アトミックなファイル操作 https://heartbeats.jp/hbblog/2013/10/atomic01.html (ちょっと古いけど)
791 名前:デフォルトの名無しさん mailto:sage [2023/12/06(水) 18:36:06.88 ID:NNCP5uXb.net] >>775 Rep略はアトミックだよ MSのどっかに書いてあった
792 名前:デフォルトの名無しさん mailto:sage [2023/12/06(水) 18:43:37.11 ID:NNCP5uXb.net] https://learn.microsoft.com/ja-jp/windows/win32/fileio/deprecation-of-txf
793 名前:デフォルトの名無しさん mailto:sage [2024/01/02(火) 18:23:35.28 ID:fgzxSMPt.net] RtlReAllocateHeap(GetProcessHeap(), 0, lpMem, dwBytes) これをそこそこの頻度でやってると特定回数目にクラッシュしてしまうんだけどどういうことなのだろうか よくある戻り値null未チェックとかそういう事ではなく上記関数内で落ちるんだよね lpMemも間違いなく生きてるメモリなのは確認済みでdwBytesも不自然な値ではない 呼び出し方が悪いのかと思ってmalloc、reallocに変えてみてもやはり同様の場所でクラッシュしてしまう
794 名前:デフォルトの名無しさん mailto:sage [2024/01/02(火) 21:23:43.76 ID:rZ40Y3/a.net] API変えても発生するならAPI関係ない場所のお前のバグじゃん
795 名前:デフォルトの名無しさん mailto:sage [2024/01/02(火) 23:51:50.03 ID:fgzxSMPt.net] >>781 WindowsのreallocはHeapReAllocのラッパーでHeapReAllocの実態はRtlReAllocateHeapへのリンクに過ぎない訳だが
796 名前:デフォルトの名無しさん mailto:sage [2024/01/03(水) 00:50:32.19 ID:+N5csyKn.net] mallocやreallocもまともに使えない子はこのスレに来るのはまだ早かったねー
797 名前:デフォルトの名無しさん [2024/01/03(水) 01:02:21.99 ID:l1Q27XPY.net] 正月ボケを晒すスレ
798 名前:デフォルトの名無しさん mailto:sage [2024/01/03(水) 09:46:34.80 ID:STDOZzf0.net] free 済のポインタに対して 再び free したんじゃないの?
799 名前:デフォルトの名無しさん mailto:sage [2024/01/03(水) 09:47:05.92 ID:STDOZzf0.net] realloc の頭で free するからね
800 名前:デフォルトの名無しさん mailto:sage [2024/01/04(木) 19:03:00.23 ID:IQKtoxOL.net] 特定回数でクラッシュするなのがわかってるなら アドレスがどう変化した時にクラッシュするとかわかりそうなもんだ
801 名前:デフォルトの名無しさん [2024/01/04(木) 22:30:57.77 ID:ZPN5xQR2.net] mallocで大きなメモリを取得して、その領域から切り出すalloc関数などを作って差し替えてデバッグするとか? 組み込み系で良くやるけどね。
802 名前:デフォルトの名無しさん mailto:sage [2024/01/04(木) 22:40:26.44 ID:L+x9xVwI.net] ボソ HeapAlloc()
803 名前:デフォルトの名無しさん mailto:sage [2024/01/04(木) 22:48:53.63 ID:IQKtoxOL.net] >>786 それはおかしいだろ (アドレスが変わる場合は)freeする前に新しいアドレスに内容コピーしないといかんから
804 名前:デフォルトの名無しさん mailto:sage [2024/01/14(日) 00:10:31.18 ID:+DXd3tPu.net] BoundsChecker か PURIFY ですぐ究明できそうな気がするけど
805 名前:デフォルトの名無しさん mailto:sage [2024/01/16(火) 14:06:03.29 ID:YFpb2YHn.net] メモリのフラグメンテーションで大きい領域がとれないんじゃない?
806 名前:デフォルトの名無しさん mailto:sage [2024/01/23(火) 16:49:29.22 ID:SUJHX/By.net] ファイルパスなんかはカーネルが結局UNICODE_STRINGとして扱うからwchar版の方がパフォーマンス良いけどadvapi32のレジストリ系関数はどうなんだろうか?
807 名前:デフォルトの名無しさん mailto:sage [2024/01/26(金) 12:12:36.19 ID:h4bsjzTE.net] WM_MOUSEFIRSTからWM_MOUSELASTのメッセージって、 これから追加されるメッセージもLPARAMはすべてマウス位置のクライアント座標が入る、という約束はありますか?
808 名前:デフォルトの名無しさん [2024/02/21(水) 15:57:22.07 ID:jTOh+ue+.net] Spy++のメッセージウィンドウには、「S」や「P」の文字が表示されていて、 それがSendで送られたのかPostで送られたのかがわかるようになっていますが、 これと同じ区別を、自身のメッセージハンドラ上で行うことはできるのでしょうか InSendMessageというAPIは見つけたのですが、 Spy++で「S」と表示されるものでも0が返ってきてしまいました
809 名前:デフォルトの名無しさん mailto:sage [2024/02/22(木) 22:51:02.73 ID:kQumE7Ak.net] 分別してどうするのさ
810 名前:デフォルトの名無しさん mailto:sage [2024/02/23(金) 16:31:44.91 ID:JzCbi9fb.net] InSendMessageは別のスレッドからSendMessageされたかを判断する、と説明があるから、 単純にSendMessage呼び出しを判定するものではなさそう 同一スレッドからのSendMessageの呼び出し判定は、ウィンドウプロシジャのコールスタック辿って SendMessageのエントリポイントと比較するとか、何か追加で頑張る必要がありそう
811 名前:デフォルトの名無しさん mailto:sage [2024/02/23(金) 17:02:46.18 ID:GiKlOj9R.net] Snedはメッセージキューに来ないからあればPostなければSendやぞ
812 名前:デフォルトの名無しさん mailto:sage [2024/02/24(土) 00:12:34.16 ID:qqiEO45x.net] 内部でIsPostMsgとかフラグ作ってDispatchMessage()を呼ぶ時に1にする終わったらゼロにする
813 名前:デフォルトの名無しさん mailto:sage [2024/02/24(土) 09:12:26.23 ID:niSNojaB.net] ウィンドウプロシジャが呼ばれる経路はそれだけ?
814 名前:デフォルトの名無しさん mailto:sage [2024/02/24(土) 13:03:44.44 ID:qqiEO45x.net] Postでキューに入ったのを取り出して呼ばれるのはそこだけでしょう Sendでは直接呼ばれる もしウィンドウプロシージャの中からSendしてたらこれは使えない
815 名前:デフォルトの名無しさん mailto:sage [2024/02/24(土) 13:41:01.55 ID:Uzz+lkGd.net] 自アプリ側で予め SendMessage PostMessage をフックしとけば良いのでは?
816 名前:デフォルトの名無しさん mailto:sage [2024/02/24(土) 14:33:49.19 ID:5nanMrzK.net] bonurd.winofsql.jp/sb/log/eid175.html SendMessage と PostMessage のフック
817 名前:デフォルトの名無しさん mailto:sage [2024/02/25(日) 11:17:44.56 ID:GDczOUha.net] >>796-803 ありがとうございます Spy++はメッセージをフックしているから、SendとPostの区別もできるということなんですかね
818 名前:デフォルトの名無しさん [2024/04/29(月) 03:35:32.42 ID:xgq67JZI.net] intから__int64へ
819 名前:デフォルトの名無しさん mailto:sage [2024/05/08(水) 06:48:18.53 ID:CU7bUsfh.net] てす
820 名前:デフォルトの名無しさん mailto:sage [2024/05/08(水) 06:59:53.68 ID:CU7bUsfh.net] 自作アプリに対してSendMessageでWM_APP送ってるけど送れてない(受信できていない)ことがあったので 送信側でGetLastErrorしたら > 0x05:アクセスが拒否されました。 が取れました。 ここによると ttps://learn.microsoft.com/ja-jp/windows/win32/api/winuser/nf-winuser-sendmessage > メッセージが UIPI によってブロックされると、 GetLastError で取得された最後のエラーは 5 (アクセス拒否) に設定されます。 これに該当してる?のか他の原因でアクセス拒否されているのか分からないけど、 受け側のアプリはずっと起動したままで直前までメッセージ受信できていたことと、 その後もアプリが死んでいるようには見えず操作できるし動作ログも残るため、 ただただWM_APPメッセージ受信のみ(?)できなくなっているような状況です。 ここで質問ですが、どういう時に急にメッセージ受信できなくなるのか、エスパーお願いします。 今後の対策としては受信側でChangeWindowMessageFilterを使ってWM_APPを許可すれば良さそうだと当たりは付けていますが・・ 権限レベルを弄ったりということは一切していないので、問題の発動条件が知りたいです。
821 名前:デフォルトの名無しさん mailto:sage [2024/05/08(水) 21:35:37.84 ID:5PSVmBb2.net] まず再現性あるのか確認してね
822 名前:デフォルトの名無しさん mailto:sage [2024/05/08(水) 21:47:14.20 ID:5PSVmBb2.net] んで、この手のシステムからの意図しない介入問題が起きた場合は、 原則プロセスの再作成で解決するしかない
823 名前:デフォルトの名無しさん mailto:sage [2024/05/08(水) 21:51:37.73 ID:5PSVmBb2.net] これはLow Level Hookが外れた時の対処と同じ 恐らくSendMessageの処理が規定時間以内に終わらなかったとかで適当に介入してるんだろう 知らんけど
824 名前:デフォルトの名無しさん mailto:sage [2024/05/09(木) 08:54:43.22 ID:cRZqeFYn.net] 知らんけどで逃げるなw
825 名前:デフォルトの名無しさん mailto:sage [2024/05/09(木) 11:45:17.50 ID:LBnBOAOP.net] >>808 再現性ないと言っていいのか、手元では再現できず エラーが出た環境でも普段は問題出てなくて、たまたま問題が出たのに気付いてログを漁ってエラーコードが分かり、 過去ログも遡ると半月前にも一度エラーが出ていたのは分かりました この問題が出た環境は24時間PC&アプリ起動しっぱなしということらしく、その時点で 何となくお察し感がなくもないですが原因ははっきりさせたいなと >>809-810 受信側は一切メッセージの受信を感知していない(ログに全く残らない)ようなので 規定時間以内に終わっていないというようなことではないとは思いますが、 何かしらの原因で適当に介入されている感はすごくあります まあ適当に〜されたとしても、はっきりしたいところです
826 名前:デフォルトの名無しさん mailto:sage [2024/05/09(木) 15:19:14.25 ID:HEWeaKRP.net] 断片化回避のためにSetFilePointer -> SetEndOfFile -> SetFilePointerサンドイッチってもう古いやり方? .NETのFileIO実装がSetFileInformationByHandle(FILE_ALLOCATION_INFO)でやってるんだが
827 名前:デフォルトの名無しさん mailto:sage [2024/05/09(木) 19:16:20.44 ID:2Qg6aldP.net] SSDは?
828 名前:デフォルトの名無しさん mailto:sage [2024/05/09(木) 21:40:33.69 ID:UHyVEDy6.net] >>811 ちょっと調べてはみたけどstackoverflowでも迷宮入りしててだめだったんよね SYSTEMプロセスから送れば拒否られないとは思うが 確実にプロセス間通信をしたかったらメッセージよりは名前付きパイプが無難だろうな
829 名前:デフォルトの名無しさん mailto:sage [2024/05/10(金) 23:35:02.72 ID:r04xuHSU.net] >>815 迷宮入りまで調べてくれてたんですね 確かにパイプが無難です 今さらコイツを修正するには作り直しレベルなのでもう無理ですがw とりあえずしばらく放置して色々な環境でログ収集して情報整理します ありがとうございました
830 名前:デフォルトの名無しさん mailto:sage [2024/05/10(金) 23:49:50.70 ID:irdjP1bw.net] >>807 再現性はともかくとして、SendMessageが途中から拒否られる事象がOSのどのバージョンで発生したか書いといてくれると嬉しい
831 名前:デフォルトの名無しさん mailto:sage [2024/05/11(土) 03:02:04.26 ID:7XNHipLd.net] >>817 どうもすみません Windows11 home 23H2です ちょうど今おかしな環境のPCがまたおかしくなっているようなので調べていましたが、 受信側プロセスが管理者特権に変更されているようで、これが原因ですね 送信側は管理者特権は付与されていませんが、送信側プロセスから受信側プロセスを 起動していますから、最初は特権が付与されていないはず・・・ ということでどちらのプロセスも再起動させたところ、どちらも標準ユーザーになっていました explorerからexeプロパティを見ても管理者権限はチェックされていないようです 意図せず途中で管理者特権が付与される可能性はあるのでしょうか? (プログラム的にはそんなことしているつもりはもちろん無いですが)
832 名前:デフォルトの名無しさん mailto:sage [2024/05/11(土) 12:31:06.19 ID:PynvVCIt.net] 無意識にそんな特権付与されたら怖すぎるがなw システムが一時的に特殊な状態にしてるんじゃないの
833 名前:デフォルトの名無しさん mailto:sage [2024/05/13(月) 00:51:53.26 ID:UH9hVJYb.net] APIの先で起動されるスレッド(OSが起動する)が管理者特権付きで それがアクティブな瞬間はプロセスが管理者特権付きに見えて、 そんなタイミングのプロセスに一般ユーザがメッセージ送ると、 管理者様に対して頭が高いぞってアクセスデナイド。 とか想像してみた。
834 名前:デフォルトの名無しさん mailto:sage [2024/05/13(月) 02:44:07.73 ID:eZXBgDRS.net] 818です ログを見ると、一度メッセージ受信できなくなるとずっと受信できていないようです 管理者特権が付いているのを確認したのはタスクマネージャでの目視ですが、 見たところずっと特権がついているのでタイミングの問題ではなく、何かしらの拍子で特権がついたまま という感じですね 今のところ、24時間起動したまま使い続けていますがあれから特権はついていません 特権を必要とするようなコードを書いたことない(つもり)なので、原因にたどり着くのは中々難しい状況です 例えば、どんなことをすると特権が付与される(UIもなく勝手に?)のでしょう?
835 名前:デフォルトの名無しさん mailto:sage [2024/05/16(木) 19:26:12.96 ID:s6fDlAb8.net] 心当たりが無いなら今月のCVE-2024-30051だとか特権の昇格の脆弱性のどれかに引っかかってる可能性あり
836 名前:デフォルトの名無しさん mailto:sage [2024/05/18(土) 14:21:00.21 ID:u20XKbPO.net] >>813 自己レスだけどSetFileInformationByHandle(hFile, FileAllocationInfo...)でやるとサイズが小さい場合にMFT内にデータ埋め込んで完結する場合でも1セクタ確保されてしまうようなので旧来の方法でやる方が無難だった
837 名前:デフォルトの名無しさん mailto:sage [2024/05/21(火) 10:59:49.66 ID:CZsnB0Ll.net] >>813 埋め込みサイズ上限を上回る新規ファイルを作る場合ならハンドル作成時にアロケーションサイズも同時指定する方が良さそう
838 名前:デフォルトの名無しさん mailto:sage [2024/05/25(土) 11:34:53.77 ID:IsAA9ZVh.net] >>807 ,821 疑ってすまないけど、本当に隅から隅まで自分で書いたプログラムなのか? OSSをちょっと弄った程度で自作アプリと言っているだけなんじゃないか?
839 名前:デフォルトの名無しさん mailto:sage [2024/05/29(水) 17:30:16.76 ID:5SDO0AId.net] リストビューで範囲選択したときの青い枠の色や内部の半透明な色の値は、APIで取得できるのでしょうか
840 名前:デフォルトの名無しさん mailto:sage [2024/05/29(水) 18:37:40.98 ID:tN3gYMey.net] 出来るよ
841 名前:デフォルトの名無しさん mailto:sage [2024/05/29(水) 18:43:52.23 ID:tN3gYMey.net] GetSysColor
842 名前:デフォルトの名無しさん mailto:sage [2024/05/29(水) 18:52:44.95 ID:uKjwQH9U.net] この辺りlinuxやMacのWMとかと違って有る程度の値の取得変更できるのはWindowsの強みだったよな
843 名前:デフォルトの名無しさん mailto:sage [2024/05/29(水) 19:04:09.64 ID:5SDO0AId.net] >>828 GetSysColorはRGBの値で、透明度の値まで持ったものを返すようには見えなかったのですが、 具体的にどのパラメータを指定するのでしょうか?
844 名前:デフォルトの名無しさん mailto:sage [2024/05/29(水) 19:05:11.69 ID:1pytebYy.net] 他スレでスクリーンショットのマルチポストがあるけど、加えてコントロールの色を取得か AIに食わせるUI Automation学習データを整備してるのかな
845 名前:デフォルトの名無しさん mailto:sage [2024/05/30(木) 16:56:56.15 ID:32XGh5Dj.net] 半透明じゃなくて字と地の色を反転させてるだけだろ
846 名前:デフォルトの名無しさん mailto:sage [2024/05/30(木) 21:32:57.61 ID:As0oayev.net] >>832 XPの頃からある範囲選択時の半透明の青なのですが
847 名前:デフォルトの名無しさん mailto:sage [2024/05/30(木) 21:38:53.94 ID:ScAYlfUJ.net] >>833 プログラム組んでるのなら自分で逆算しろ
848 名前:デフォルトの名無しさん mailto:sage [2024/05/30(木) 21:44:25.79 ID:As0oayev.net] >>834 どのWindowsでも画面設定とか関係なくこの青なら直値で計算してもいいけど、 なにかのAPIで取得できるなら合わせておきたいです
849 名前:デフォルトの名無しさん mailto:sage [2024/05/31(金) 08:56:42.01 ID:UXfkVjV8.net] 稀によく自分で手を動かすのと人に訊く比率がバグってる奴がいるよな 本人は自覚があるから分散してるつもりだろうけど一回そう思われたら終わりなんだよ 職場で塩対応されてるんだろうな
850 名前:デフォルトの名無しさん mailto:sage [2024/05/31(金) 13:33:58.54 ID:bH8oOxQj.net] >>835 GetThemeColor じゃだめ?
851 名前:デフォルトの名無しさん mailto:sage [2024/05/31(金) 15:08:47.69 ID:b6j7bQai.net] COLOR_HIGHLIGHTとCOLOR_HIGHLIGHTTEXTじゃないの?
852 名前:デフォルトの名無しさん mailto:sage [2024/06/27(木) 10:21:37.70 ID:mIdqOGxG.net] Chromeや秀丸系製品で、タブをウィンドウ外にドラッグすると、別ウィンドウに分割できるのは、 頑張ればプロセス起動で実装できるような気もしますが、 さらに別のウィンドウの中のタブ群に移動できるのは、魔法な気がしますよね。 別プロセスの中にタブをごっそり移動するというのは、難しい気が。 どうも、画面の各タブごとに最初からプロセス起動しているようですが。 Wzエディタとか、複数立ち上げても異なるプロセス間のタブ移動はできないようですが、 これは、ウィンドウ=プロセスだからですよね。 こういうのはWPFでは作れないと思うので、今となってはこのあたりがWin32APIの将来性?
853 名前:デフォルトの名無しさん mailto:sage [2024/06/27(木) 11:12:44.44 ID:dd5BD0xO.net] SetParent
854 名前:デフォルトの名無しさん [2024/06/27(木) 11:13:43.84 ID:n/nJ5fKa.net] >>839 ドロップされたらドロップ元が自分のアプリと確認できればタブ生成して、データを引き取って終わりで駄目?
855 名前:デフォルトの名無しさん mailto:sage [2024/06/27(木) 11:15:48.39 ID:h+EH+DLv.net] Win32APIでゴリゴリ作ることもできるけど 既存の仕組みを使うならOLEを検討すべきかも
856 名前:デフォルトの名無しさん [2024/06/27(木) 11:21:59.93 ID:OTNDZ+yC.net] >>839 将来性も何も30年以上前から変わらない枯れた話だよ
857 名前:デフォルトの名無しさん mailto:sage [2024/06/27(木) 13:20:20.40 ID:mIdqOGxG.net] 異なるウィンドウへタブをドラッグされたときに、ファイルを開きなおすというのは考えたんですけれど、 アンドゥとか、そもそも保存してないデータとかもあるから、案外、難しいんじゃないかと…… 秀丸はファイルを開くとプロセス増えてるし。 Wzエディタはファイルを開くたびに増えないけれど、タブの結合に制約が発生するのかと。 Chromeもタブを開くたびにプロセス増えるけれど、これはサンドボックス関係の何かかもしれないですね……
858 名前:デフォルトの名無しさん mailto:sage [2024/06/27(木) 15:30:22.02 ID:FNjZgfw1.net] >>840 ここに答えが出てるのにみんなスルーかよw
859 名前:デフォルトの名無しさん mailto:sage [2024/06/27(木) 15:52:30.68 ID:OTNDZ+yC.net] ベストアンサーはスルーしてさしあげるのが5chの掟
860 名前:デフォルトの名無しさん mailto:sage [2024/06/27(木) 19:09:13.89 ID:mIdqOGxG.net] えっ、ということは、タブをウィンドウ外にドラッグしたら、新しいプロセスを起動して、SetParent。 ウィンドウAからウィンドウBにタブをドラッグしたら、BにSetParentということ? それだけで行けるのかなぁ。 OLEの方は確かにMFCを使っていればできそうな気もするけれど、 むむむ……
861 名前:デフォルトの名無しさん mailto:sage [2024/06/27(木) 23:00:25.56 ID:zz1D+M6F.net] >>847 SetParentにNULLを渡すだけでしょ それで独立したWindowになる
862 名前:デフォルトの名無しさん mailto:sage [2024/06/27(木) 23:19:11.01 ID:Ks3kYOUo.net] >>839 AvalonDockと言うWPFでそういうのを実現するライブラリがあるよ 別プロセスは起動してない
863 名前:デフォルトの名無しさん mailto:sage [2024/06/29(土) 15:00:51.88 ID:AKI9JxZ5.net] WPFはマイクソが適当に用意したWin32APIからだいぶ退化したソリューションなんよ 欠損障害者や痴呆老人を介護していくぐらいの覚悟が必要とマイクソは言っている
864 名前:デフォルトの名無しさん [2024/06/30(日) 11:07:40.79 ID:L3wyoKVN.net] らくらくホンですねわかります
865 名前:デフォルトの名無しさん mailto:sage [2024/06/30(日) 13:46:38.98 ID:iWdyx4cd.net] なんで1ウィンドウ1プロセスにこだわるのかね
866 名前:デフォルトの名無しさん mailto:sage [2024/06/30(日) 13:52:21.57 ID:dBsdaOes.net] さらに、>>841 も書いてるけど、元のタブじゃなくても同じ内容を表示すればいいし。
867 名前:デフォルトの名無しさん mailto:sage [2024/07/02(火) 16:38:11.96 ID:ilJEPICb.net] >>853 保存してない場合は? undoはどうするの?
868 名前:デフォルトの名無しさん mailto:sage [2024/07/02(火) 21:04:03.62 ID:oj6vCWdL.net] >>854 必要ならundoの情報も含んだ編集中のデータを渡すだけだろう プロセス間通信するとか作業用ファイルを介すとかドラッグ&ドラッグのデータに含めるとかやりようはある ↑は別プロセス前提で書いたけど、同一プロセスの別ウィンドウ同士だったらもっと簡単だね
869 名前:デフォルトの名無しさん mailto:sage [2024/07/03(水) 00:20:10.87 ID:swtC0eU3.net] ウィンドウが何処に表示されようが何も変わらない事が分からないやつが居るな…
870 名前:デフォルトの名無しさん mailto:sage [2024/07/03(水) 13:58:35.19 ID:B8cPwUiK.net] いや、でも、タブが5個あって、ウィンドウ枠が2つだったとするじゃん。 片方に2つ、もう片方に3つのタブがあるような状況。 起動時のプロセスのウィンドウ枠の中で情報が保持されていて、 反対側のウィンドウ枠の中で表示されていても良いっていうこと? その場合、ユーザが片方のウィンドウだけバツボタンで終了しようとしたときに、 難しいことになるような気が……
871 名前:デフォルトの名無しさん mailto:sage [2024/07/03(水) 15:50:06.42 ID:TWMTGehv.net] ひといないねここ
872 名前:デフォルトの名無しさん mailto:sage [2024/07/03(水) 18:49:37.33 ID:2Xqs+u0R.net] gpt4の賢さがすごすぎてなー お前らの対応してると空しくなるよ 時間がもったいない
873 名前:デフォルトの名無しさん mailto:sage [2024/07/03(水) 20:18:25.91 ID:fDE4NTPp.net] >>857 ウィンドウ枚数を数えて最後の一枚だったらPostQuitMessage()するだけだろ
874 名前:デフォルトの名無しさん mailto:sage [2024/07/03(水) 20:25:59.32 ID:pYi5R8u1.net] >>857 情報も一緒に別プロセスに移動させれば済む話だよ
875 名前:デフォルトの名無しさん mailto:sage [2024/07/04(木) 07:12:03.53 ID:ak68oAE8.net] >>857 全然別の問題になってるじゃん 他のウィンドウにタブを移動したら元のタブは消すんでしょ? それで複数ウィンドウで一つのファイルを表示するのとは別の問題じゃん [] [ここ壊れてます]
877 名前:デフォルトの名無しさん mailto:sage [2024/07/04(木) 07:21:22.72 ID:PxI4bFfe.net] UIを持たない枚数を数えるだけのプロセスが居たっていい がミューテックス辺りで済みそうだ
878 名前:デフォルトの名無しさん mailto:sage [2024/07/04(木) 22:14:35.16 ID:eTz6OUM0.net] タブの情報をプロセスから切り離して管理すればよいのでは
879 名前:デフォルトの名無しさん mailto:sage [2024/07/04(木) 22:43:06.74 ID:ak68oAE8.net] SetWindowLongでウィンドウに固有のデータを書き込む方法を知らんのかい
880 名前:デフォルトの名無しさん mailto:sage [2024/07/04(木) 23:26:19.64 ID:vqT9K1Uf.net] 根本的にWindowsプログラミングを理解してないんだな… Windowsに限った話しじゃないが、Window Systemのプログラミングはメッセージループというのが有って、そこに全ウィンドウ(ボタンなんかのコントロール全部)のイベントが通知される アプリ側は通知されたイベントの内容(ボタン押されたや再描画など)とウィンドウIDからすべき処理を判別して実行する プロセスは当然1つで良いし、メッセージループを複数プロセスで行うなんて絶対しない
881 名前:デフォルトの名無しさん mailto:sage [2024/07/04(木) 23:35:12.63 ID:vqT9K1Uf.net] 取りあえずぺゾルドは必読だ Win32を扱ってるのは第5版迄だがもう新品じゃ手に入らない MSはタダで読めるようにすべきなんだよな 今でも役に立つのに絶版のまま放置とか、日本法人仕事してくれ!
882 名前:デフォルトの名無しさん mailto:sage [2024/07/05(金) 00:19:08.16 ID:ii7HQe4f.net] ナンシークラッツ本と並んで殿堂入りするべきだよな
883 名前:デフォルトの名無しさん mailto:sage [2024/07/10(水) 08:58:31.30 ID:OQuJq/Fg.net] Win32というかDirextXなんだけどd3d9.dllを用いるゲームなんかを起動するとEvent Traceが開始されるのは自分だけ? d3d9.dll + 7E710がboolフラグのgetterで、結果が1だと1000秒毎にntdll.RtlPublishWnfStateDataが呼ばれてEtwRTGraphicsPerfMonitorSession.etlが書き込まれる 上記のboolフラグはd3d9.Direct3DCreate9Exのルーチン内で1にセットされることまでは突き止められたけど、なぜ1にセットされるのかの究明は面倒で投げ出してしまった
884 名前:デフォルトの名無しさん mailto:sage [2024/07/10(水) 09:02:10.97 ID:OQuJq/Fg.net] フラグを見てトレースするか否かを変えてる訳だから恐らくはレジストリとかでグローバルな設定が可能なんだとは思うけど英語でググっても全く情報がない
885 名前:デフォルトの名無しさん mailto:sage [2024/07/10(水) 14:22:20.98 ID:pzzWoCSk.net] manifestじゃね?
886 名前:デフォルトの名無しさん mailto:sage [2024/07/10(水) 16:48:04.42 ID:2GPD5dJ4.net] ここ https://learn.microsoft.com/ja-jp/windows/win32/perfctrs/error-handling-in-the-dll
887 名前: 警備員[Lv.2][新芽] [2024/07/12(金) 06:37:17.61 ID:rAnXXRGQ.net] !donguri
888 名前:デフォルトの名無しさん mailto:sage [2024/07/12(金) 07:55:37.97 ID:R+7FAFYS.net] どんぐりとか邪魔なだけ
889 名前:デフォルトの名無しさん [2024/07/26(金) 16:31:31.09 ID:s0039+ok.net] exe化ω
890 名前:デフォルトの名無しさん mailto:sage [2024/08/03(土) 11:32:27.96 ID:8ujXWrcK.net] マルチディスプレイ環境でディスプレイごとに壁紙設定したいんだけど SystemParametersInfoだと全部同じ壁紙設定されちゃう どうしたらいいの?
891 名前:デフォルトの名無しさん mailto:sage [2024/08/03(土) 15:09:24.69 ID:oR+oLHPm.net] 15年前の情報 https://smdn.jp/programming/tips/setdeskwallpaper_multidisplay/
892 名前:876 mailto:sage [2024/08/04(日) 06:02:53.80 ID:SpOe1Ove.net] あれこれ調べた結果、COMインターフェース使って実現できた スレ汚し失礼しますた
893 名前:デフォルトの名無しさん mailto:sage [2024/08/05(月) 23:55:54.01 ID:jWZSSuTx.net] https://learn.microsoft.com/ja-jp/windows/win32/printdocs/printdocs-printing いまだにGDI Print API使っているんだが移行するもんなんかね COMめんどい
894 名前:デフォルトの名無しさん mailto:sage [2024/08/06(火) 08:51:34.33 ID:cEvufDXQ.net] それはいまだに使ってるんじゃなくて互換性のために残してあるだけやろ Vista以降の環境で作るならXPSドキュメントAPI検討しろって書いてあるじゃん
895 名前:デフォルトの名無しさん mailto:sage [2024/08/06(火) 12:29:33.52 ID:/JDWd2CP.net] XPSって息してるの?
896 名前:デフォルトの名無しさん mailto:sage [2024/08/06(火) 13:32:04.54 ID:geBAoTM5.net] してない
897 名前:デフォルトの名無しさん mailto:sage [2024/08/07(水) 23:11:59.28 ID:QAQ+ujSz.net] https://learn.microsoft.com/ja-jp/windows/win32/printdocs/xps-printing [XPS Print API はサポートされていないため、今後変更または使用できない場合があります。 クライアント アプリケーションでは、代わりに 印刷ドキュメント パッケージ API を使用する必要があります。 だと
898 名前:デフォルトの名無しさん mailto:sage [2024/08/08(木) 08:52:42.58 ID:RW+0CWti.net] 印刷ドキュメントパッケージってストアアプリじゃなかったっけ
899 名前:デフォルトの名無しさん mailto:sage [2024/08/26(月) 20:43:00.02 ID:Cfp+G9iJ.net] MFCやCOM/ATLの話題もここでいいの? スレないよな
900 名前:デフォルトの名無しさん mailto:sage [2024/08/26(月) 22:39:11.42 ID:a3TTNcMK.net] まあ大雑把にアンマネージドな話題ならいいんじゃね MFCの話なんてここでされても俺はスルーするがな
901 名前:デフォルトの名無しさん mailto:sage [2024/08/27(火) 08:48:29.94 ID:Dr3hMOC8.net] MFCまだ息してるの?
902 名前: 警備員[Lv.26] mailto:sage [2024/11/15(金) 07:34:23.07 ID:az6uMl7w.net] !donguri
903 名前: 警備員[Lv.9] mailto:sage [2024/11/16(土) 12:36:24.91 ID:tOcVq+tO.net] !donguri
904 名前:デフォルトの名無しさん [2024/11/18(月) 20:33:45.58 ID:a56Gv0Ed.net BE:629052145-2BP(1000)] https://img.5ch.net/ico/nida.gif だから、最近EchoAPIを使い始めて、デバッグプロセスが本当に効率化されました。
905 名前:デフォルトの名無しさん mailto:sage [2024/11/19(火) 14:54:25.41 ID:9IiXc5Vb.net] まるちんこしね
906 名前:デフォルトの名無しさん mailto:sage [2024/11/20(水) 11:20:37.14 ID:W8mVvsIh.net] 新規にMFC使って何かを作ろうとするのは、アマチュアならありだが仕事ではもうないかな .NETが普及する前、それこそVB6時台は必須だったけど
907 名前:デフォルトの名無しさん mailto:sage [2024/11/21(木) 08:42:13.45 ID:Yfd1e91z.net] 別に必須ではない
908 名前: mailto:sage [2024/11/28(木) 13:09:31.82 ID:xnLU0jkg.net] !donguri
909 名前:デフォルトの名無しさん [2024/12/03(火) 22:33:20.25 ID:8WYJf9/5.net BE:629052145-2BP(1000)] https://img.5ch.net/ico/nida.gif EchoAPIをAPIシミュレーションに使用し始めたところ、フルバックエンド統合前にアプリの機能をテストするのに非常に役立ってる
910 名前: mailto:sage [2024/12/04(水) 07:26:11.55 ID:gY6x2I0M.net] !donguri
911 名前:デフォルトの名無しさん mailto:sage [2024/12/06(金) 14:09:41.63 ID:L9wmMkNC.net] IsWindowVisibleは親ウィンドウの状態も再帰的にチェックしてくれるのに、 IsWindowEnabledは自身の状態しかチェックしてくれないようです 対象のウィンドウがマウス操作などを行える状態かをチェックしたいですが、 IsWindowEnabledで親ウィンドウの状態も参照するバージョンはあるのでしょうか?
912 名前:デフォルトの名無しさん mailto:sage [2024/12/06(金) 14:43:02.52 ID:L9wmMkNC.net] すいません上に全く同じ質問がありました 失礼しました
913 名前:デフォルトの名無しさん mailto:sage [2024/12/12(木) 22:09:35.75 ID:atnAaKGF.net] ステータスバーを分割した場合 WM_SIZEの中でサイズを送信すると思うんだけど |中身に合わせる|中身に合わせる|伸びーる|中身に合わせる|中身に合わせる| みたいな場合はどうやって計算するの?
914 名前:デフォルトの名無しさん mailto:sage [2024/12/12(木) 22:27:50.07 ID:j5Bpxje0.net] 中身に合わせるのとこは自分で中身に合わせて 野ビールのとこは放置やね 計算とか無い
915 名前:デフォルトの名無しさん mailto:sage [2024/12/12(木) 22:44:16.57 ID:trovn3Vo.net] ステータスバーのハンドル使ってDCとフォントを取り寄せる んでDrawTextを空撃ちすると文字列に必要な幅が分かる。
916 名前:デフォルトの名無しさん [2024/12/21(土) 23:35:34.44 ID:37tGDg2N.net] IsWindowVisible IsWindowEnabled EnableWindow のダイアログ版教えて下さい
917 名前:デフォルトの名無しさん mailto:sage [2024/12/21(土) 23:44:47.64 ID:VA9QPMmD.net] ダイアログも只のWindowっす
918 名前:デフォルトの名無しさん [2024/12/22(日) 09:10:18.93 ID:SmvDArN5.net] >>903 できました!ありがとう
919 名前: mailto:sage [2025/01/03(金) 15:25:05.64 ID:R7434evi.net] !donguri
920 名前:デフォルトの名無しさん [2025/01/22(水) 00:25:29.57 ID:CKKn8gV4.net] iniのキーの一括読み込みで悩んでいます。 冗長にならないよう読み込みたいのですが、下記のコードをfor文で回すというのが自分の知識の限界でしたが、大変わかりにくく困っています。改善点やスタンダードなiniの読み書きの参考になるサイトなどあれば教えていただけると助かります strLen[n] = GetPrivateProfileString( pStrIndex[n] ,//ダブルポインタ NULL , NULL , buf[n] ,//ダブルポインタ 256 , strPath );
921 名前:デフォルトの名無しさん mailto:sage [2025/01/22(水) 05:00:50.81 ID:xghKhcgN.net] GetPrivateProfileSection関数
922 名前:デフォルトの名無しさん [2025/01/22(水) 19:54:34.30 ID:CKKn8gV4.net] >>907 ありがとうございます。ですがこの方法ですとセクションごとに別れていないため、私が提示した方法より値を扱いにくいのではないでしょうか? それとも、セクションを除いて必要なキーが何個目にあるかを把握して扱うということなのでしょうか? 後者の場合ですと、わざわざセクションが存在する理由がわかりかねるのですが、直接iniを開いた場合の可読性故に存在しているということでしょうか? 少々実際のコードに落とし込むということがイメージしにくく、躓いてしまっています また、実際に値を取り出す場合はn番目の=から¥nまでの文字列を取り出し、数値に変換するといった具合になるのでしょうか?
923 名前:デフォルトの名無しさん mailto:sage [2025/01/22(水) 19:56:56.10 ID:6faY8jOE.net] 気に入らないなら自作しなよ そういうの得意だったよね
924 名前:デフォルトの名無しさん mailto:sage [2025/01/23(木) 06:58:43.12 ID:juwbDZ3u.net] >>908 セクションごとに別れていない? GetPrivateProfileSectionのドキュメントちゃんと読んだ? やってみた?
925 名前:デフォルトの名無しさん mailto:sage [2025/01/23(木) 09:06:22.24 ID:kfksRUHC.net] 最後の1文見る限り、GetPrivateProfileSectionのドキュメントすら読んで無いか、読んでてもちゃんと読んで無いのがバレバレ
926 名前:デフォルトの名無しさん [2025/01/23(木) 10:24:59.82 ID:MfXmmgFN.net] YAMLにしなよ
927 名前:デフォルトの名無しさん [2025/01/23(木) 19:37:54.91 ID:i3pjk0RU.net] >>910 >>911 今あらためて見たら見当違いのことを言っていますね、失礼しました。 この関数ですとキーの値まで取得できるので活用できる範囲が広そうです。 更に質問なのですが、キーの値を実際に使う際変数に格納する工程は通常こういう書き方をするなどど言ったセオリーは無いのでしょうか? 教えていただいた関数を使用した場合でも値部分を抜き出し配列に格納し、num = p[n]とそれぞれ格納し直していかねばならず、複数の変数を使用している場合はある程度コードが長くなるのは避けられないのでしょうか?
928 名前:デフォルトの名無しさん mailto:sage [2025/01/23(木) 20:01:09.20 ID:juwbDZ3u.net] セオリーみたいなんは知らないけど 各Key&Valueペアはヌル文字で区切られてて 文字列はヌルターミネートだってことを利用して ポインタを動かしながら一覧化して使ってたかな、自分は 最近はini使ってないから昔の記憶だけど
929 名前:デフォルトの名無しさん [2025/01/24(金) 16:07:25.70 ID:n7IYWFd+.net] >>914 一覧化という単語でggってみたところ特にそれっぽいものはヒットしませんでした。 どういったことなのでしょうか?
930 名前:デフォルトの名無しさん [2025/01/24(金) 16:21:28.46 ID:9uGEaje4.net] >>906 iniを使ってる既存のアプリがあってそれを踏襲 しなければならないのなら仕方がないけど、 そうでないなら、いまさらiniなんて使わないほうが良いよ
931 名前:デフォルトの名無しさん [2025/01/24(金) 22:51:18.70 ID:pX5+qcQ2.net] 忌み数字を踏ませる業者、アプリ、コンピュータプログラムの嫌がらせ 動画再生回数、表示回数、登録者数、フォロワー数、評価数、コメント数、レベル、経験値、ポイント、HP、通貨、価格、メッセージ数、通知数、フレンド数 4(死)、13(キリスト教における忌み数字) 18(嫌)、24(〜に死)、34(〜さん死) 40、42、44 56(殺)、64(無視) 71(無い)、74(無し)、79(無く、亡く) 84(〜は死)、94(〜君死)、96(黒) このような数字と名前や生年月日、IDなどを組み合わせて執拗に強調することで、精神攻撃をする業者やストーカー、嫌がらせ組織がキモい。
932 名前:デフォルトの名無しさん mailto:sage [2025/01/25(土) 00:25:03.57 ID:0Ai0sZJQ.net] ini XML JSON YAML TOML
933 名前:デフォルトの名無しさん mailto:sage [2025/01/25(土) 06:51:49.08 ID:j/rBX//M.net] dat
934 名前:デフォルトの名無しさん [2025/01/25(土) 14:22:52.24 ID:sFzIAkAR.net] >>916 そういうわけではありませんが、全くの初心者ですので、情報の多い古い技術を頼ることにしました
935 名前:デフォルトの名無しさん [2025/01/25(土) 16:04:18.33 ID:9QNSyzV2.net] ini ゴミ XML 冗長 JSON ゴミ YAML がんがれ TOML RustのcratesとかPythonのPoetryでしか観ないな
936 名前:デフォルトの名無しさん [2025/01/25(土) 20:28:14.71 ID:sFzIAkAR.net] >>921 それぞれに対する評価を書き込むのも乙ですが ここにコードの書き方で迷っている子羊がいるので、実際の書き方の一例でも見せてみるというのも一興ではありませんか?
937 名前:デフォルトの名無しさん mailto:sage [2025/01/25(土) 21:29:48.91 ID:0Ai0sZJQ.net] iniを読む時は、 ・セクション名は指定する ・キーを指定して対応する変数に代入する ・複数要素指定したい場合には、 - キーの末尾に1,2,3,... とつけて見つからなくなるまで読む - 別のキーで個数を指定する - キーを一つにして値をカンマ区切りやスペース とかで、iniファイルのキーの一覧を動的に取得するとかをなるべくしないほうが楽。
938 名前:デフォルトの名無しさん mailto:sage [2025/01/25(土) 21:33:29.11 ID:0Ai0sZJQ.net] 読みたいキーが50個あるなら、 GetPrivateProfileString() か GetPrivateProfileInt() を 50回書けばいい。 ループとか考えずにベタで書いたほうがバグらない。 変数名書き換え忘れとかはよくあるけど。 1,2,3,...とかやるところはループで。
939 名前:デフォルトの名無しさん mailto:sage [2025/01/25(土) 21:54:22.37 ID:HZDjTK1Q.net] APIのGet何某は1セクション1キーの読み書きの度にファイルオープンからやるから糞遅いよ vbscriptからiniを読み書きしたい時があってその時は大した手間でもないし全部自作したよ セクションを駆使すれば構造化できるしコメントも書けるから下手な外部データ構造よりも扱いやすいかもとその時は思った
940 名前:デフォルトの名無しさん [2025/01/25(土) 21:59:34.66 ID:/zAJo091.net] >>921 レジストリ―を忘れないであげてください・・・
941 名前:デフォルトの名無しさん mailto:sage [2025/01/25(土) 21:59:35.88 ID:0Ai0sZJQ.net] クソ遅いの同意。 あと、 ・=の左右のスペースを自動除去するとか、 ・端に半角スペースを使いたい場合には""で囲うんだっけ? "を使いたい場合にはどうするんだ? ・値の32,768文字(バイト?)制限? とか、いろいろ隠れ仕様があるのが地味にトラップ。
942 名前:デフォルトの名無しさん mailto:sage [2025/01/25(土) 22:25:18.21 ID:HZDjTK1Q.net] >>927 それらの疑問はAPIで読み書きしてみれば解消すると思うのだが
943 名前:デフォルトの名無しさん [2025/01/26(日) 00:20:41.08 ID:u6Mx5l7z.net] >>923 ありがとうございます。 末尾に数字をつけるとそのような読み方が可能なんですね、初耳です というわけではなくあらかじめ振っておくということですか? >>925 差し支えなければ考え方のヒントだけでも良いのでご教示いただけるとたすかるなーなんて iniとは暫く付き合っていかないといけませんし
944 名前:デフォルトの名無しさん mailto:sage [2025/01/26(日) 07:56:28.08 ID:KCyxjQfb.net] ini使いたい君はWin32APIがどうたら以前の問題だからもっと勉強してから頑張れ
945 名前:デフォルトの名無しさん [2025/01/26(日) 10:18:25.36 ID:9SEpmwDH.net] C#で組むと簡単にかける
946 名前:デフォルトの名無しさん mailto:sage [2025/01/26(日) 12:24:55.25 ID:jIhwYj9H.net] 現代に生きてるならまず生成AIの使い方を覚えろw
947 名前:デフォルトの名無しさん mailto:sage [2025/01/26(日) 12:36:00.27 ID:ZUklcVwb.net] STLにその手の機能あったかと
948 名前:デフォルトの名無しさん [2025/01/26(日) 21:20:37.91 ID:s+0AyHDZ.net] msgpackがいい
949 名前:デフォルトの名無しさん mailto:sage [2025/01/30(木) 07:55:55.21 ID:QS068twT.net] Win32のiniは中身どうなってるかわからんからあんま使いたくない データ取り出すために毎回iniのpath指定からするってことは毎回CreateFileでもしてるのか?と疑ってしまうしな まあキャッシュされてる説が濃厚っぽいけど、であれば解放はいつされる?という疑問も浮かんで来てしまう
950 名前:デフォルトの名無しさん mailto:sage [2025/01/30(木) 09:05:49.08 ID:DmWvGvqx.net] 毎回読んでるに決まってるだろ
951 名前:デフォルトの名無しさん mailto:sage [2025/01/30(木) 17:56:26.05 ID:SG35pUtO.net] win16時代からなんかモヤモヤする気持ち悪い部分だねw
952 名前:デフォルトの名無しさん mailto:sage [2025/01/30(木) 19:54:33.33 ID:5vkjgM/o.net] メモリなんてほとんど無かった時代からあるものだから、キャッシュなんてしてるわけないしな
953 名前:デフォルトの名無しさん mailto:sage [2025/01/30(木) 20:05:36.27 ID:s1Kp+8+0.net] VistaくらいからならOSのファイルキャッシュが勝手に働いてそう。
954 名前:デフォルトの名無しさん mailto:sage [2025/01/31(金) 01:11:17.59 ID:X03NMzGm.net] キャッシュなんかMS-DOSのsmartdriveあたりからあるだろ 無効にするとWindows3.1は遅かった記憶がある
955 名前:デフォルトの名無しさん mailto:sage [2025/01/31(金) 10:55:21.33 ID:T94pdG8Q.net] >>935 構文解析なんて一瞬で終わる キャッシュはOSがリファレンスカウントで管理してるでしょ ただしゼロになったからといって直ぐに解放する訳じゃないし、ゼロになる前に解放される場合もある そこは空きメモリとの兼ね合いでOSが上手くやる
956 名前:デフォルトの名無しさん mailto:sage [2025/01/31(金) 12:27:33.25 ID:x+X7dknH.net] 補足すると再起動後やスリープ復帰後に$MFTを舐める様なアプリを動かしておくとシステムキャッシュに載って その後はHDDでもSSDと同様にディレクトリトラバーサルがマルチスレッドで高速化する(find/fd等) (よくある専用ソフトを常駐させなくてよい)
957 名前:デフォルトの名無しさん mailto:sage [2025/02/13(木) 21:31:19.77 ID:YNJwxBZ/.net] メインウィンドウのウィンドウプロシージャをグローバルからクラスメンバに移したくて 一応表面的なエラーなどは出ずに起動したのですが問題ないのか不安です 断片的で分かりにくいかもですが以下で問題ないか教えていただけないでしょうか wc.lpfnWndProc = DefWindowProc; SetWindowSubclass( hwnd, SubProc, 1, reinterpret_cast< DWORD_PTR >( this ) ); static LRESULT CALLBACK SubProc( HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam, UINT_PTR uIdSubclass, DWORD_PTR dwRefData ); LRESULT CALLBACK MyWindow::SubProc( HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam, UINT_PTR uIdSubclass, DWORD_PTR dwRefData ) { MyWindow *pThis = reinterpret_cast< MyWindow * >( dwRefData ); switch( uMsg ) { ... } return DefSubclassProc( hwnd, uMsg, wParam, lParam ); }
958 名前:デフォルトの名無しさん mailto:sage [2025/02/14(金) 05:52:04.48 ID:NtB8MvkN.net] あかんやろな
959 名前:デフォルトの名無しさん mailto:sage [2025/02/14(金) 08:53:53.37 ID:JVeRBzRc.net] 20年以上前にMFCみたいなラッピングクラス群を自前で作ってみたことあったけど ウィンドウプロシージャのとこをどうやったかもう忘れてしまったな……
960 名前:デフォルトの名無しさん mailto:sage [2025/02/14(金) 13:37:08.02 ID:7nMc146l.net] メソッドという事は、第一引数にthisが渡る必要がある。 コールバックプロシジャーの呼び出し側にその機能(thisを積む)は無い。 MFCはその部分マクロで展開していたね
961 名前:デフォルトの名無しさん mailto:sage [2025/02/14(金) 14:04:52.13 ID:hgqMYig2.net] Best method for storing this pointer for use in WndProcにMethod 1~6まで解説されてるわ >>946 ATLだとMethod 5: Thunkだね
962 名前:デフォルトの名無しさん mailto:sage [2025/02/14(金) 19:58:04.34 ID:SfDwe3dq.net] 俺がやったやり方書いてやろうとしたらNGワード言われてBBxまでされたわw クソじゃんw
963 名前:デフォルトの名無しさん mailto:sage [2025/02/14(金) 21:57:56.25 ID:NGvcdz15.net] method 4のやり方だし行けるんじゃない? 自分はmethod 6のイマイチ泥臭い方法でやったよ
964 名前:デフォルトの名無しさん mailto:sage [2025/02/14(金) 22:08:59.93 ID:JVeRBzRc.net] 一次受け用のstaticなプロシージャとクラスのメソッド あとSetPropとSetWindowLong使ってやったな確か
965 名前:デフォルトの名無しさん mailto:sage [2025/02/27(木) 22:08:23.91 ID:fu+5GN+l.net] SetWindowSubclass
966 名前:デフォルトの名無しさん mailto:sage [2025/02/28(金) 06:34:40.22 ID:zvJYGrzx.net] 今更w
967 名前:デフォルトの名無しさん mailto:sage [2025/02/28(金) 08:53:25.56 ID:9mi1Ij4k.net] 俺がその手のことやった時はSetWindowSubclass無かったな
968 名前:デフォルトの名無しさん [2025/02/28(金) 17:04:57.17 ID:kF3VgEHE.net] 次スレよろ
969 名前:デフォルトの名無しさん mailto:sage [2025/03/04(火) 10:30:55.31 ID:Zmr6bMX1.net] Win32はいつ廃止されるの?
970 名前:デフォルトの名無しさん mailto:sage [2025/03/04(火) 15:36:03.05 ID:oVaTb1OS.net] .netベースのWinFXが完成したら順次廃止していくらしい
971 名前:デフォルトの名無しさん mailto:sage [2025/03/04(火) 15:50:19.15 ID:9pYVhAvI.net] .NETベースだと2年で切り捨てられていくのか…… 大変だなぁ
972 名前:デフォルトの名無しさん mailto:sage [2025/03/04(火) 17:51:40.09 ID:KMsa0y1P.net] Windows上の.NETがそもそもAPI呼んでるのにどうやって廃止するのw
973 名前:デフォルトの名無しさん [2025/03/04(火) 18:04:09.20 ID:FptLM07E.net] Win32APIを呼ばない.netになるんじゃね? android版とかそうなってないの?
974 名前:デフォルトの名無しさん mailto:sage [2025/03/05(水) 06:08:30.10 ID:Za60iql9.net] WinFXて、.NET Framework 3.0の開発コードだが……
975 名前:デフォルトの名無しさん mailto:sage [2025/03/05(水) 08:44:01.42 ID:Ip/00ysh.net] そもそもWin32APIを捨てるとか、Windowsをイチから作り直さないと不可能だろ
976 名前:デフォルトの名無しさん mailto:sage [2025/03/05(水) 12:33:13.43 ID:Nfyn65kt.net] 着々と64bit化は進められてるぞ 今やレガシーアプリの為だけに32bit対応があるだけだからなぁ
977 名前:デフォルトの名無しさん [2025/03/05(水) 12:35:52.90 ID:KHVGsvS8.net] 昔あったPowerPC、ItaniumのWindowsにもWin32apiあるの?
978 名前:デフォルトの名無しさん mailto:sage [2025/03/05(水) 15:45:08.28 ID:Ip/00ysh.net] >>962 >>963 内部的なbitサイズの違いや呼称の差であって、Windows APIのインターフェースが変わってるわけじゃないぞ
979 名前:デフォルトの名無しさん mailto:sage [2025/03/05(水) 23:09:43.33 ID:mISoeUSf.net] >>963 なくてどうする
980 名前:デフォルトの名無しさん mailto:sage [2025/03/05(水) 23:21:28.24 ID:jH+Yt1tq.net] https://github.com/microsoft/win32metadata このwin32metadataプロジェクトでモダンな言語からも簡単に使えるようになった あらゆる機能をWin32で公開してwin32metadataも更新すれば、色んな言語から直ぐ使えるようになる なのでWin32を廃止する意味が無くなった
981 名前:デフォルトの名無しさん [2025/03/06(木) 16:00:16.05 ID:WqcKZUUD.net] 64bitのCのintとかlongって32bitなん? 64bitあるのはlonglongとsize_tだけ?
982 名前:デフォルトの名無しさん mailto:sage [2025/03/06(木) 16:04:15.79 ID:lKPjZULZ.net] どのCだよ……
983 名前:デフォルトの名無しさん mailto:sage [2025/03/06(木) 21:03:06.28 ID:dn1jj/ZV.net] >>967 一般的には 32bit 環境からの互換性のためにそうなってる ただ言語仕様として それが規定されているわけではない 明示的に 64bit 整数を使いたいなら int64_t とかを使う
984 名前:デフォルトの名無しさん mailto:sage [2025/03/06(木) 21:11:47.39 ID:5M2pGTOx.net] LSI-C試食版
985 名前:デフォルトの名無しさん mailto:sage [2025/03/06(木) 21:23:51.69 ID:dn1jj/ZV.net] >>967 補足。ちなみに 64bit 環境で size_t や sizeof が 64bit unsigned になったのは アドレス空間の伸長により 32bit 長を超える配列や構造体が (実用性はともかく) 定義出来るようになったから
986 名前:デフォルトの名無しさん mailto:sage [2025/03/06(木) 22:54:13.31 ID:W7TbcEiC.net] SHARCだとcharも32bit w
987 名前:デフォルトの名無しさん mailto:sage [2025/03/06(木) 23:24:05.48 ID:qGQPttTG.net] >>967 LLP64 long longとポインターが64bit Windowsはこっち LP64 longとlong longとポインターが64bit Unix系はこっち
988 名前:デフォルトの名無しさん mailto:sage [2025/03/07(金) 03:26:30.77 ID:wZ5tdiFM.net] 規格ではサイズの保証なんか全く無いからstdint.h使えって書こうとしたけどそういやWin32スレだった
989 名前:デフォルトの名無しさん mailto:sage [2025/03/07(金) 08:52:50.74 ID:0UyMFctv.net] なんでlongとintが同じなんだよって昔から思ってるけど、まぁ今更
990 名前:デフォルトの名無しさん [2025/03/07(金) 12:13:30.16 ID:P73h4RuN.net] int64_tはあるのにint32_tが無いのは何故
991 名前:デフォルトの名無しさん mailto:sage [2025/03/07(金) 12:50:01.21 ID:23ArObOh.net] stdint.h(20): typedef int int32_t;
992 名前: mailto:sage [2025/03/07(金) 20:55:06.07 ID:fV6KGyZ9.net] 前後にいろいろあるでしょ ILP64ってのもあるし
993 名前:デフォルトの名無しさん mailto:sage [2025/03/08(土) 20:22:43.73 ID:5qDoPn2l.net] ファイルからそのファイルのハンドル握ってるプロセスを特定する事って可能? プロセスが握ってるハンドルを列挙していく事はntdll利用したら可能だからその方法で結果的に上記の目的は達成できるっちゃできるんだけど、逆方向から出来たほうが工程は減りそうだから可能なら教えてもらいたい
994 名前:デフォルトの名無しさん [2025/03/08(土) 21:37:29.02 ID:YZ/xAsrC.net] performance meter
995 名前:デフォルトの名無しさん mailto:sage [2025/03/12(水) 22:20:50.10 ID:P3gXMYWX.net] >>979 自己レスだけど全排他ロックされたファイルもCreateFile(path, 0, 0, NULL, OPEN_EXISTING, FILE_READ_ATTRIBUTES, NULL);で開けるんだね ハンドルさえ得られればNtQueryInformationFileのFILE_INFORMATION_CLASSで簡単にハンドル握ってるプロセス列挙出来た
996 名前:デフォルトの名無しさん mailto:sage [2025/03/12(水) 22:22:14.84 ID:P3gXMYWX.net] FILE_INFORMATION_CLASSじゃなくてFILE_INFORMATION_CLASS::FileProcessIdsUsingFileInformationで列挙できた
997 名前:デフォルトの名無しさん mailto:sage [2025/03/12(水) 22:30:58.42 ID:s/+fNWEq.net] >>981 CWDがBのプロセスpが居てAフォルダをリネームや移動する場合はAのハンドルでpが分かるの? /A/B/
998 名前:デフォルトの名無しさん mailto:sage [2025/03/12(水) 22:32:30.39 ID:s/+fNWEq.net] CWDでなくて PWDね
999 名前:デフォルトの名無しさん mailto:sage [2025/03/12(水) 22:36:31.70 ID:s/+fNWEq.net] Process Explorerで見る限りは、プロセスpのハンドル一覧にはAのハンドルは見えないけど...
1000 名前:デフォルトの名無しさん mailto:sage [2025/03/13(木) 07:40:49.73 ID:Wbt/WM1E.net] >>985 リネームや移動はハンドル握ってるタイミングが一瞬だから見えないだけでは? 作業フォルダってだけだとハンドルを握ってる訳ではないだろうし
1001 名前:デフォルトの名無しさん mailto:sage [2025/03/13(木) 12:00:07.35 ID:q1HKk6WD.net] >>986 > 作業フォルダってだけだとハンドルを握ってる訳ではないだろうし win32 API使ったプログラム書けるのだったら確認したら良いのに...
1002 名前:デフォルトの名無しさん mailto:sage [2025/03/13(木) 12:50:16.04 ID:fUgksTzw.net] >>983 に言えよ
1003 名前:デフォルトの名無しさん mailto:sage [2025/03/13(木) 13:15:20.89 ID:1bKyRJrk.net] >>988 急にどうした?雰囲気悪くするだけだぞ
1004 名前:デフォルトの名無しさん mailto:sage [2025/03/13(木) 13:19:04.13 ID:1bKyRJrk.net] そもそも979が質問はするけど人からの質問には答えないタイプに見えるからそこからだな、雰囲気改善は
1005 名前:デフォルトの名無しさん mailto:sage [2025/03/13(木) 13:23:53.41 ID:1bKyRJrk.net] 言った手前、横から答えて置くかな >>979 FileTest.exeがよく使われている >>983 その場合pはリストアップされない >>986 作業フォルダはhandleとして握っている >>988 一連の流れの誰ですか?
1006 名前:デフォルトの名無しさん mailto:sage [2025/03/13(木) 13:40:50.24 ID:Wbt/WM1E.net] >>990 別にちゃんと答えてるけど? で、確認してみたらProcessHackerではカレントディレクトリのハンドルは普通に見えるね てか手順教えてるんだからツールに頼らずにそれこそ確認したい側が>>981 をやってみたらいいと思うけど
1007 名前:990 mailto:sage [2025/03/13(木) 14:39:30.31 ID:WtHN9N5n.net] ごめん、986の感じから981~983の流れが全く通ってないから981とは別人に見えた 確認したい側が手を動かすのは原則だけど、既に下準備が整っているのだからちょっとした便乗質問には答えてあげるのが助け合いの精神だな もっとも986時点では作業フォルダを握っている前提で983を見てなかったからやむなしか で>>988 は誰よ?
1008 名前:990 mailto:sage [2025/03/13(木) 14:41:07.70 ID:WtHN9N5n.net] >>983 フォルダを開く時はFILE_FLAG_BACKUP_SEMANTICSな
1009 名前:デフォルトの名無しさん mailto:sage [2025/03/13(木) 15:58:51.91 ID:fUgksTzw.net] 誰でもねぇよただのスレ見てるだけの人間だ 誰かじゃねぇと発言すらできねぇのかよ つーかお前こそ誰だよw
1010 名前:デフォルトの名無しさん mailto:sage [2025/03/13(木) 16:02:25.92 ID:fUgksTzw.net] ついでに次スレ建てといた Win32API質問箱 Build128 https://mevius.5ch.net/test/read.cgi/tech/1741849188/
1011 名前:990 mailto:sage [2025/03/13(木) 16:08:57.63 ID:BLU3LOZR.net] >> ID:fUgksTzw スレ立て乙 ただの荒らしだと思ったが見直したぞ 仲良く行こう
1012 名前:デフォルトの名無しさん [2025/03/13(木) 18:44:47.29 ID:+BJ849hc.net] >>993 お前は誰なんだ
1013 名前:デフォルトの名無しさん [2025/03/13(木) 19:05:51.90 ID:kIpNzUxV.net] だーれだ?
1014 名前:デフォルトの名無しさん mailto:sage [2025/03/13(木) 19:18:50.54 ID:biPGw+Hh.net] キチガイ
1015 名前:1001 [Over 1000 Thread.net] このスレッドは1000を超えました。 新しいスレッドを立ててください。 life time: 1189日 21時間 45分 55秒
1016 名前:過去ログ ★ [[過去ログ]] ■ このスレッドは過去ログ倉庫に格納されています