以下のコードが動かなくて困ってます。
pgfFrame = AVIStreamGetFrameOpen(paviStream, (LPBITMAPINFOHEADER)AVIGETFRAMEF_BESTDISPLAYFMT);
AVIStreamGetFrameClose(pgfFrame); ←これを実行したら落ちる
AVIStreamGetFrameCloseを実行しなくても動くのですが、再度Openした時に少しずつメモリを食いつぶして行くので困ってます。
止まった時にVC++の実行ボタンを再度押すと、内部で使ってるDLLがアンロードされてその後は動くようになります。
そうなると何回でもOpen→Close出来る様になり、メモリも食いつぶしません。
どうしたらいいんでしょうか?
探検
Win32API質問箱 Build127
レス数が1000を超えています。これ以上書き込みはできません。
339デフォルトの名無しさん
2022/08/16(火) 01:19:06.38ID:agNT7bMr340デフォルトの名無しさん
2022/08/16(火) 11:35:45.33ID:2x3mrzZQ >>329
ほんそれ
ほんそれ
341デフォルトの名無しさん
2022/08/16(火) 11:41:24.43ID:2x3mrzZQ342デフォルトの名無しさん
2022/08/16(火) 14:36:20.03ID:agNT7bMr >>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); }
詳しく書くとこうなってるんです。
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); }
343デフォルトの名無しさん
2022/08/16(火) 14:45:35.08ID:ySPaUmMI そういう不具合が出るけど是正が困難な処理は別プロセスとして動かして終わったらそのプロセスを終わらすといいよ
解決したら統合すればいい
解決したら統合すればいい
344デフォルトの名無しさん
2022/08/16(火) 15:02:38.50ID:2x3mrzZQ プロセス別けて落とすのも同じ効果だと思うけど
DLLを自前でアンロードするコードを入れても良いんじゃないかな
そもそも
pgfFrame = AVIStreamGetFrameOpen(paviStream, (LPBITMAPINFOHEADER)AVIGETFRAMEF_BESTDISPLAYFMT);
↑
この間の処理に問題があるんじゃないかな
↓
if(pgfFrame != NULL){ AVIStreamGetFrameClose(pgfFrame); } ←これだけ落ちる
DLLを自前でアンロードするコードを入れても良いんじゃないかな
そもそも
pgfFrame = AVIStreamGetFrameOpen(paviStream, (LPBITMAPINFOHEADER)AVIGETFRAMEF_BESTDISPLAYFMT);
↑
この間の処理に問題があるんじゃないかな
↓
if(pgfFrame != NULL){ AVIStreamGetFrameClose(pgfFrame); } ←これだけ落ちる
345デフォルトの名無しさん
2022/08/16(火) 15:28:13.38ID:agNT7bMr >>343-344
ありがとうございます。
>この間の処理に問題があるんじゃないかな
この間は何にもしてなくても落ちちゃうんですよね… なんでだろう?
DLLを自前でアンロードする事も視野に入れてもう少し試行錯誤してみます
ありがとうございます。
>この間の処理に問題があるんじゃないかな
この間は何にもしてなくても落ちちゃうんですよね… なんでだろう?
DLLを自前でアンロードする事も視野に入れてもう少し試行錯誤してみます
346デフォルトの名無しさん
2022/08/16(火) 15:45:44.34ID:2x3mrzZQ AVIFileExit();
してないというオチ?
してないというオチ?
347デフォルトの名無しさん
2022/08/16(火) 15:59:37.24ID:agNT7bMr348デフォルトの名無しさん
2022/08/16(火) 16:18:58.86ID:2x3mrzZQ 本気で解決したいなら再現する全ソースコードを晒すのと
実際に読もうとしてるファイルのURLを晒して逝け
実際に読もうとしてるファイルのURLを晒して逝け
349デフォルトの名無しさん
2022/08/16(火) 17:58:27.74ID:agNT7bMr >>348
あとでその部分だけまとめて再現できるか確かめてみます
あとでその部分だけまとめて再現できるか確かめてみます
350デフォルトの名無しさん
2022/08/16(火) 20:04:29.51ID:xodQRDI1 必要最小限で描いて観たが全然問題無いぞ
351デフォルトの名無しさん
2022/08/16(火) 21:22:52.88ID:agNT7bMr >>350
原因がわかりました。
普通にやると問題なくて、ここにあるコーデックの.dllをリンクすると
AVIStreamGetFrameCloseが上手くいかないようでした。
https://sourceforge.net/projects/x264vfw/files/
このコーデックを使う必要があるのでどうにかならないでしょうかね。
原因がわかりました。
普通にやると問題なくて、ここにあるコーデックの.dllをリンクすると
AVIStreamGetFrameCloseが上手くいかないようでした。
https://sourceforge.net/projects/x264vfw/files/
このコーデックを使う必要があるのでどうにかならないでしょうかね。
352351
2022/08/16(火) 21:27:27.79ID:agNT7bMr 正確にはコーデックの.dllをリンクして
そのコーデックを使っているファイルを読み込むと
AVIStreamGetFrameCloseが失敗するということです。
.dllをリンクしててもそのコーデックを使ってないファイルであれば
AVIStreamGetFrameCloseが失敗する事はなかったです。
そのコーデックを使っているファイルを読み込むと
AVIStreamGetFrameCloseが失敗するということです。
.dllをリンクしててもそのコーデックを使ってないファイルであれば
AVIStreamGetFrameCloseが失敗する事はなかったです。
353351
2022/08/16(火) 23:11:48.85ID:agNT7bMr 古いバージョンにしてみたら直りました!
これで普通に動いてるのでこのまま動かしてみます。
みなさんありがとうございました。
これで普通に動いてるのでこのまま動かしてみます。
みなさんありがとうございました。
354デフォルトの名無しさん
2022/08/17(水) 09:12:41.44ID:17qdbn+g バカの三大特徴
情報を小出しにする&後出しする
自分は間違ってないと思い込む&言い張る
正しい解決策に進まずすぐに別の山に登ろうとする
情報を小出しにする&後出しする
自分は間違ってないと思い込む&言い張る
正しい解決策に進まずすぐに別の山に登ろうとする
355デフォルトの名無しさん
2022/08/17(水) 10:05:31.13ID:75soL8XV FFmpeg 使った方が良くね?
356デフォルトの名無しさん
2022/08/17(水) 11:59:16.72ID:75soL8XV ああ
それを言うなら ffdshow の方だったかな
しかしまだ使えるんかなこれ
それを言うなら ffdshow の方だったかな
しかしまだ使えるんかなこれ
357デフォルトの名無しさん
2022/08/18(木) 16:29:05.82ID:9oKj6z2J xvideos
358デフォルトの名無しさん
2022/08/22(月) 16:22:19.61ID:ChTfYzF8 日本語キーボード日本語Windowsで英数キー(CapsLockキー)のアップを捕捉する事って不可能?
レジストリでキーマップを変えて英数キーを違うキーに割り当てた後なら一般的なキー同様に捕捉出来ることは確認できたけどそういう迂回方法無しで出来る方法があれば教えてもらいたい
レジストリでキーマップを変えて英数キーを違うキーに割り当てた後なら一般的なキー同様に捕捉出来ることは確認できたけどそういう迂回方法無しで出来る方法があれば教えてもらいたい
359デフォルトの名無しさん
2022/08/22(月) 17:26:47.15ID:Zp58Sca6 GetKeyState( vk_code )
VK_CAPITAL CapsLockのトグル状態 のほうじゃなく
VK_OEM_ATTN 仮想キーコード 240 (0xF0) で今の押下状態は取得できそうではあるな
IMEはちゃんと shift 無し Caps lock キーを受け取って反応できてるんだし
VK_CAPITAL CapsLockのトグル状態 のほうじゃなく
VK_OEM_ATTN 仮想キーコード 240 (0xF0) で今の押下状態は取得できそうではあるな
IMEはちゃんと shift 無し Caps lock キーを受け取って反応できてるんだし
360デフォルトの名無しさん
2022/08/22(月) 18:22:10.86ID:9oiM0iks ないです
361デフォルトの名無しさん
2022/08/22(月) 18:27:49.15ID:x6NjRtAl ノートパソコンなどの省スペースキーボードについてるFnキーも拾えないんだよなあ、GetKeyState&GetAsyncKeyState
362デフォルトの名無しさん
2022/08/22(月) 21:05:07.73ID:pMMCnUP8 fnはosの預かり知らないキーなので同列にすんなハゲハゲハゲハゲハゲ!!!!!!!!!!!
363デフォルトの名無しさん
2022/08/22(月) 21:25:09.66ID:6BQsurqE キーボードのコントローラーが勝手に処理してるでしょう
CPUまで線がつながってない感じ
CPUまで線がつながってない感じ
364デフォルトの名無しさん
2022/08/23(火) 07:39:49.30ID:W/9/eWQQ >>359
SetTimerとかで定期監視するしか無さそうか
SetTimerとかで定期監視するしか無さそうか
365デフォルトの名無しさん
2022/08/25(木) 23:57:16.63ID:ePt16zWH 今はarduinoとかで自分好みのキーボード作れる時代なんだぜ
知らんけど
知らんけど
366デフォルトの名無しさん
2022/08/26(金) 10:40:49.53ID:lf60l9vY 虫歯が痛いなら総入れ歯にしましょう!レベルの解決策w
367デフォルトの名無しさん
2022/08/26(金) 12:29:39.93ID:NrrxL3kr 禿げてきたら丸坊主にしましょう!
368デフォルトの名無しさん
2022/08/26(金) 12:48:26.23ID:im0ZYKIt なんて日だ!
369デフォルトの名無しさん
2022/08/31(水) 12:36:32.64ID:twZsJrmt >>355
ライセンスはどうしてるの?
GPLやLGPLだから、リンクすれば最低でも自作プログラムのオブジェクト
ファイルの公開が必要になるだろう。
別コマンドで実行する場合は、*.exe が自作アプリと合わせて二つ必要になるし、
データの受け渡しの効率も落ちる。
ライセンスはどうしてるの?
GPLやLGPLだから、リンクすれば最低でも自作プログラムのオブジェクト
ファイルの公開が必要になるだろう。
別コマンドで実行する場合は、*.exe が自作アプリと合わせて二つ必要になるし、
データの受け渡しの効率も落ちる。
370デフォルトの名無しさん
2022/09/02(金) 22:59:42.92ID:L2uZLmEf 質問です。
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寸法を得るにはどうすればよいのでしょうか?
以上、よろしくお願いします。
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寸法を得るにはどうすればよいのでしょうか?
以上、よろしくお願いします。
371デフォルトの名無しさん
2022/09/04(日) 10:57:34.63ID:RQxkFcRF GetTextExtentPoint32()
SetTextJustification()
DrawText()
SetTextJustification()
DrawText()
372デフォルトの名無しさん
2022/09/04(日) 16:57:14.39ID:aZX/9mcR >>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の幅を得られるはずですが、フォントを知る方法はわかりませんでした。
ありがとうございます。
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の幅を得られるはずですが、フォントを知る方法はわかりませんでした。
373デフォルトの名無しさん
2022/09/04(日) 17:09:08.67ID:A8KVTWK8 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
>日本語文字は入っていない
結局この問題は残るんじゃないかな
確実に日本語グリフが入ってるフォントを指定
https://docs.microsoft.com/en-us/windows/win32/api/wingdi/ns-wingdi-textmetrica
>日本語文字は入っていない
結局この問題は残るんじゃないかな
確実に日本語グリフが入ってるフォントを指定
374デフォルトの名無しさん
2022/09/04(日) 19:32:04.85ID:aZX/9mcR ありがとうございます。
作っているアプリの仕様は、
・アプリのユーザは、フォントと文字列を自由に指定できる
・画面上には、指定したフォントで、指定した文字列が描画される
やりたいことは、
・ユーザが上記の操作で描画させた文字列中の各文字について、A,B,Cの幅を知りたい
ということなのです。
本来NGな組み合わせ(例:欧文フォントと、全角まじり文字列との組み合わせ)をユーザーが指定した時、
存在しない文字がいわゆる豆腐(□)にでも化けてくれれば、そこでユーザは別のフォントを
選びなおすはずです。
しかし、文字化けせずに一見正しく表示されてしまうため、困っています。
作っているアプリの仕様は、
・アプリのユーザは、フォントと文字列を自由に指定できる
・画面上には、指定したフォントで、指定した文字列が描画される
やりたいことは、
・ユーザが上記の操作で描画させた文字列中の各文字について、A,B,Cの幅を知りたい
ということなのです。
本来NGな組み合わせ(例:欧文フォントと、全角まじり文字列との組み合わせ)をユーザーが指定した時、
存在しない文字がいわゆる豆腐(□)にでも化けてくれれば、そこでユーザは別のフォントを
選びなおすはずです。
しかし、文字化けせずに一見正しく表示されてしまうため、困っています。
375デフォルトの名無しさん
2022/09/04(日) 23:44:22.53ID:047Xbk5t >>374
ABCなんて何に使うんだろうと思ったら、フォント情報を表示するツールなのか。
GetCharacterPlacement + ExtTextOut / ETO_GLYPH_INDEX あたりで、グリフを直接描画すれば
フォントリンクは効かないはずなので無い文字は豆腐になるはず...
ABCなんて何に使うんだろうと思ったら、フォント情報を表示するツールなのか。
GetCharacterPlacement + ExtTextOut / ETO_GLYPH_INDEX あたりで、グリフを直接描画すれば
フォントリンクは効かないはずなので無い文字は豆腐になるはず...
376デフォルトの名無しさん
2022/09/05(月) 20:04:11.68ID:lEq1EKXB ありがとうございます。
参考にさせていただきます。
可能ならば、無理やり豆腐にするんじゃなくて、フォントリンクで表示されたとおりの文字の情報を取得できるのが理想ですが、難しそうですね・・・
参考にさせていただきます。
可能ならば、無理やり豆腐にするんじゃなくて、フォントリンクで表示されたとおりの文字の情報を取得できるのが理想ですが、難しそうですね・・・
377375
2022/09/05(月) 23:27:10.40ID:ViUtFxr1 >>376
GetCharABCWidthsで取得しても1文字単位でしか取得できないので、筆記体やアラビア文字のように前後の文字や位置によって大きさが変わるような場合には対応できないので、ABCの値は参考程度にしか使えないと思います。
フォントリンク先のフォント情報(LOGFONT)は、メタファイルに出力後そのメタファイルを解析するというちょっとトリッキーな方法で可能です。
https://stackoverflow.com/questions/54050095/how-to-tell-if-a-surrogate-pair-unicode-character-is-supported-by-the-font
GetCharABCWidthsで取得しても1文字単位でしか取得できないので、筆記体やアラビア文字のように前後の文字や位置によって大きさが変わるような場合には対応できないので、ABCの値は参考程度にしか使えないと思います。
フォントリンク先のフォント情報(LOGFONT)は、メタファイルに出力後そのメタファイルを解析するというちょっとトリッキーな方法で可能です。
https://stackoverflow.com/questions/54050095/how-to-tell-if-a-surrogate-pair-unicode-character-is-supported-by-the-font
378デフォルトの名無しさん
2022/09/06(火) 20:18:06.15ID:H7QyPUx+ 大変有用な情報、ありがとうございます。
確かに、筆記体のような手を繋ぐフォントの場合、うまくいきませんね。
これは気づきませんでした。
実際にはそういったフォントが使われることはまれなので、大きな問題にはならないかな、と思います。
確かに、筆記体のような手を繋ぐフォントの場合、うまくいきませんね。
これは気づきませんでした。
実際にはそういったフォントが使われることはまれなので、大きな問題にはならないかな、と思います。
379デフォルトの名無しさん
2022/09/10(土) 21:08:59.03ID:eGqDTe4p HBITMAP hBitmap; に既に bitmap image が load されているとき
BITMAP bm = {0};
GetObject(hBitmap, sizeof(BITMAP), &bm);
で bm.bmBits の指す場所に pixles data があることは確認出来るのですが
bm.bmBits は何時 GlobalFree(bm.bmBits); すれば良いのでしょうか?
放置しても memory leak の心配はありませんか?
BITMAP bm = {0};
GetObject(hBitmap, sizeof(BITMAP), &bm);
で bm.bmBits の指す場所に pixles data があることは確認出来るのですが
bm.bmBits は何時 GlobalFree(bm.bmBits); すれば良いのでしょうか?
放置しても memory leak の心配はありませんか?
380デフォルトの名無しさん
2022/09/11(日) 13:04:53.74ID:4ex9Us8K DeleteObject(hBitmap);
381デフォルトの名無しさん
2022/09/13(火) 22:06:19.57ID:V8hEwwJT ウインドウのキャプションを SetWindowText で変更したいのですが
そのウインドウはブラウザ(クローム系)でして
SPY++が使えなくなっているので自作のウインドウ一覧で調べると
ブラウザのトップレベル・ウインドウは、アクティブなタブのキャプションが
ウインドウのキャプションになっており、クラス名は"Chrome_WidgetWin_1"でした
これで取得したウインドウ・ハンドルを使って、ブラウザの位置を操作したり
最小化したりできるので、このハンドルで間違いないはずですが
SetWindowText でキャプションを変更することはできません
ブラウザには使えないということでしょうか
御存じの方、教えて下さると幸いです
そのウインドウはブラウザ(クローム系)でして
SPY++が使えなくなっているので自作のウインドウ一覧で調べると
ブラウザのトップレベル・ウインドウは、アクティブなタブのキャプションが
ウインドウのキャプションになっており、クラス名は"Chrome_WidgetWin_1"でした
これで取得したウインドウ・ハンドルを使って、ブラウザの位置を操作したり
最小化したりできるので、このハンドルで間違いないはずですが
SetWindowText でキャプションを変更することはできません
ブラウザには使えないということでしょうか
御存じの方、教えて下さると幸いです
382デフォルトの名無しさん
2022/09/14(水) 01:18:29.10ID:LQT6KG16 ウインドウというよりタブなんじゃね?
383デフォルトの名無しさん
2022/09/14(水) 09:06:44.89ID:bpmiLen5 そうです
ウインドウのキャプションを変更したいけど
それはブラウザでは、タブのキャプションを変更したいということですね
ブラウザのトップレベルのウインドウハンドルで、GetWindowTextを使って
そのタブのキャプションが取得できるのに
逆に、そのハンドルでタブのキャプションはSetWindowTextでは変更できない
ということのようです
タブが子ウインドウになっていてアクセスできればいいのですが
そこらへんブラウザは色々と特殊な作りなので無理っぽい気はしてます
ウインドウのキャプションを変更したいけど
それはブラウザでは、タブのキャプションを変更したいということですね
ブラウザのトップレベルのウインドウハンドルで、GetWindowTextを使って
そのタブのキャプションが取得できるのに
逆に、そのハンドルでタブのキャプションはSetWindowTextでは変更できない
ということのようです
タブが子ウインドウになっていてアクセスできればいいのですが
そこらへんブラウザは色々と特殊な作りなので無理っぽい気はしてます
384デフォルトの名無しさん
2022/09/14(水) 09:46:31.10ID:mWSu9Hj1 ふーんGetはできるんだタスクバー用かな?
どう見てもオーナードローだし
htmlのtitle変える方が早そうだね
どう見てもオーナードローだし
htmlのtitle変える方が早そうだね
385デフォルトの名無しさん
2022/09/14(水) 12:31:23.77ID:NjIHRu5t SetWindowText実行後にGetWindowTextしたら変更後のキャプション取得できてるんじゃない?
表示処理が別なだけで
表示処理が別なだけで
386デフォルトの名無しさん
2022/09/14(水) 15:26:33.97ID:bpmiLen5 >>385
その通り、内部的には変更されてました!!
ありがとうございました
聞いて良かった、自分だけで考えていたら堂々巡りで違う発想は出てこないものですね
見た目のキャプションはどうでも良くて
ブラウザを複数起動して、全て同じサイトを開かせるので
それをUWSCで操作しようとすると、どれが処理済なのか区別つかないので
処理済のやつのキャプションを変えてやろうということだったのです
その通り、内部的には変更されてました!!
ありがとうございました
聞いて良かった、自分だけで考えていたら堂々巡りで違う発想は出てこないものですね
見た目のキャプションはどうでも良くて
ブラウザを複数起動して、全て同じサイトを開かせるので
それをUWSCで操作しようとすると、どれが処理済なのか区別つかないので
処理済のやつのキャプションを変えてやろうということだったのです
387デフォルトの名無しさん
2022/09/14(水) 18:41:01.15ID:Ktn65RkO 処理未済のテーブルのキーは
windowハンドルつこたらあかんの?
windowハンドルつこたらあかんの?
388デフォルトの名無しさん
2022/09/14(水) 21:36:59.23ID:bpmiLen5 386の話?
そんなことないですよ
ウインドウキャプションと、クラス名が同じウインドウがいくつもあるので
UWSCはそれのどのウインドウが処理対象か分からないってことです
YouTubeから動画をDLするサイトを自動で開いて
新着の動画アドレスを自動入力してDLさせるんですが
一つがDL処理中に、別の新着動画が来ることがあるので
そんなことないですよ
ウインドウキャプションと、クラス名が同じウインドウがいくつもあるので
UWSCはそれのどのウインドウが処理対象か分からないってことです
YouTubeから動画をDLするサイトを自動で開いて
新着の動画アドレスを自動入力してDLさせるんですが
一つがDL処理中に、別の新着動画が来ることがあるので
389デフォルトの名無しさん
2022/09/14(水) 21:56:53.98ID:RXLSqQDl 入力されたキーコードをキーボードの文字に変換してくれるAPIとかありますか?
それかC/C++の関数とかで。
SHIFTのコードを渡すと、"SHIFT"みたいに文字が返ってくるみたいな。
それかC/C++の関数とかで。
SHIFTのコードを渡すと、"SHIFT"みたいに文字が返ってくるみたいな。
390デフォルトの名無しさん
2022/09/15(木) 10:19:13.76ID:HISUe1p2 どとねとにはあるけどお
スレ違いかな
大した手間でもないしご自分で用意すれば
そもそもC/C++ならマクロを糞すればリテラルを文字列に変換できるんだし
ちょっとは頭使え?
スレ違いかな
大した手間でもないしご自分で用意すれば
そもそもC/C++ならマクロを糞すればリテラルを文字列に変換できるんだし
ちょっとは頭使え?

392デフォルトの名無しさん
2022/09/15(木) 18:28:39.47ID:gUiebKpt >>389
GetKeyNameText
GetKeyNameText
393デフォルトの名無しさん
2022/09/16(金) 10:16:25.50ID:4htE7L2M 385さんと相談に乗ってくれた方にお礼の動画を持ってまいりました
https://www.youtube.com/watch?v=uJxOP1s4Xo4
https://www.youtube.com/watch?v=uJxOP1s4Xo4
394デフォルトの名無しさん
2022/09/18(日) 13:46:05.81ID:KpBP36NG395デフォルトの名無しさん
2022/09/18(日) 18:20:24.44ID:JcdidFMx こんな釣りじゃあ誰も見んわなw
396デフォルトの名無しさん
2022/09/22(木) 19:31:36.45ID:5qbo/wEx 可愛いよね
名前知らない?
名前知らない?
397デフォルトの名無しさん
2022/09/23(金) 02:06:12.74ID:gD4It3Ab STUのがかわいい
398デフォルトの名無しさん
2022/10/31(月) 14:20:10.23ID:un31Hzpa VisualStudio2022で
C++でGdiplusを利用して、メタファイルとして描画した図形を保存するプログラムを作成しました。
(描画時メタファイルのパラメータはGdiplus::EmfTypeEmfPlusDualを使用して作成しました。)
保存した図形ファイルをエクセルで開いて、Ctrl+Cでクリップボードにコピーしました。
この状態で、EnumClipboardFormatsを使用して、クリップボードのフォーマットを取得しました。
予想だと、WinUser.hで定義されている
#define CF_ENHMETAFILE 14
になるのかと思っていたら、実際は49161が取得されました。
質問ですが、この時取得された49161は何のフォーマットを意味しているのでしょうか?
C++でGdiplusを利用して、メタファイルとして描画した図形を保存するプログラムを作成しました。
(描画時メタファイルのパラメータはGdiplus::EmfTypeEmfPlusDualを使用して作成しました。)
保存した図形ファイルをエクセルで開いて、Ctrl+Cでクリップボードにコピーしました。
この状態で、EnumClipboardFormatsを使用して、クリップボードのフォーマットを取得しました。
予想だと、WinUser.hで定義されている
#define CF_ENHMETAFILE 14
になるのかと思っていたら、実際は49161が取得されました。
質問ですが、この時取得された49161は何のフォーマットを意味しているのでしょうか?
399デフォルトの名無しさん
2022/10/31(月) 14:25:56.86ID:cPgJ75vw 汎用データオブジェクト
400デフォルトの名無しさん
2022/10/31(月) 15:48:17.35ID:un31Hzpa >>399
ありがとうございます。
すいません、質問なのですが
Gdiplusを利用して作成したメタファイルをAPIを使用して汎用データオブジェクトとしてクリップボードに設定したいのですが、
参考になる書籍、ホームページ等ありましたらお教えいただけないでしょうか?
ありがとうございます。
すいません、質問なのですが
Gdiplusを利用して作成したメタファイルをAPIを使用して汎用データオブジェクトとしてクリップボードに設定したいのですが、
参考になる書籍、ホームページ等ありましたらお教えいただけないでしょうか?
401デフォルトの名無しさん
2022/10/31(月) 21:10:12.34ID:Y7EKu9E5 EnumClipboardFormats()使ってるんだからOpenClipboard(),SetClipboardData()はわかるよね
何を聞きたいんだろう?
何を聞きたいんだろう?
402デフォルトの名無しさん
2022/11/01(火) 00:53:41.11ID:8bbAESJs >>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メタファイル図形を汎用データオブジェクトとしてクリップボードに設定する方法を知りたいということです。
何かご存じの事がありましたら、お教えお願いします。
昔からある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メタファイル図形を汎用データオブジェクトとしてクリップボードに設定する方法を知りたいということです。
何かご存じの事がありましたら、お教えお願いします。
403デフォルトの名無しさん
2022/11/01(火) 02:33:36.53ID:F5k3ZiCa 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はこれなのか?
倍率以外はうまくいってるんだし
同じ図形で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はこれなのか?
404デフォルトの名無しさん
2022/11/01(火) 09:43:25.52ID:23hVAbRk スレ立てるまでもない質問スレで詳しいこと言ってたら教えてやったんだがな
流したやつに教えてやる気にはならんわ
流したやつに教えてやる気にはならんわ
405デフォルトの名無しさん
2022/11/01(火) 10:48:01.32ID:8bbAESJs406デフォルトの名無しさん
2022/11/01(火) 11:42:30.98ID:8bbAESJs >>403
レスありがとうございます。
ENHMETAHEADERについてですが精査してみます。
(出力先をクリップボードでなくファイルにした場合、エクセルで開いても問題が発生していないのでメタファイルには問題ないかと、あたりをつけていました)
CF_ENHMETAFILEについてですが、メタファイルは以下の3種類があるようです
・Windows メタファイル形式 (WMF)
・拡張メタファイル (EMF)
・EMF+
描画時メタファイルのパラメータはGdiplus::EmfTypeEmfPlusDualを使用して作成しましたので
EMF+として作成されているのかとも思っています。
そうするとENHMETAHEADER←拡張メタファイル (EMF) を使用しても良いものか疑問に思っています
リンクありがとうございます。検討してみます。
レスありがとうございます。
ENHMETAHEADERについてですが精査してみます。
(出力先をクリップボードでなくファイルにした場合、エクセルで開いても問題が発生していないのでメタファイルには問題ないかと、あたりをつけていました)
CF_ENHMETAFILEについてですが、メタファイルは以下の3種類があるようです
・Windows メタファイル形式 (WMF)
・拡張メタファイル (EMF)
・EMF+
描画時メタファイルのパラメータはGdiplus::EmfTypeEmfPlusDualを使用して作成しましたので
EMF+として作成されているのかとも思っています。
そうするとENHMETAHEADER←拡張メタファイル (EMF) を使用しても良いものか疑問に思っています
リンクありがとうございます。検討してみます。
407デフォルトの名無しさん
2022/11/01(火) 11:53:24.91ID:8bbAESJs >>406
すいません、一部訂正です。
【誤】そうするとENHMETAHEADER←拡張メタファイル (EMF) を使用しても良いものか疑問に思っています
【正】そうするとCF_ENHMETAFILE←拡張メタファイル (EMF) を使用しても良いものか疑問に思っています
すいません、一部訂正です。
【誤】そうするとENHMETAHEADER←拡張メタファイル (EMF) を使用しても良いものか疑問に思っています
【正】そうするとCF_ENHMETAFILE←拡張メタファイル (EMF) を使用しても良いものか疑問に思っています
408デフォルトの名無しさん
2022/11/03(木) 03:29:06.05ID:lhbjAvOX マルチするアホは原則スルー
ネットマナーおじさんとの約束だぞ
ネットマナーおじさんとの約束だぞ
409デフォルトの名無しさん
2022/11/03(木) 10:41:37.80ID:tn2ZhR3p ?
他スレを勧められて続きはそっちでやることを宣言したのに、マルチ警察はこの上何を望むんだろう。
他スレを勧められて続きはそっちでやることを宣言したのに、マルチ警察はこの上何を望むんだろう。
410デフォルトの名無しさん
2022/11/03(木) 10:49:58.97ID:dhtr0mvL 前スレで詳しいやつが回答してるのにアスペから自分にはわからんから移動しろと言われてここに来てるだけのアホだから
411デフォルトの名無しさん
2022/11/03(木) 11:18:16.59ID:tn2ZhR3p マルチがどうこうより、せっかく回答したのに無視されたのが気に入らないってことね。
412デフォルトの名無しさん
2022/11/03(木) 11:28:13.59ID:irjlHMAb 回答があるのに他で聞くのはマルチだろ
マルチがなぜ嫌われるのか理由までは知らないのか
マルチがなぜ嫌われるのか理由までは知らないのか
413デフォルトの名無しさん
2022/11/03(木) 11:47:59.65ID:tn2ZhR3p マルチをしないからといって回答が無視されなくなるわけではないからそこは的外れだと思うぞ。
414デフォルトの名無しさん
2022/11/03(木) 11:57:08.08ID:irjlHMAb アスペかな?
415デフォルトの名無しさん
2022/11/03(木) 14:53:14.39ID:XfULePpa >>408
スレ立てるまでもない質問はここで 162匹目 に質問を出しました。
253 で49161は何のフォーマットか質問しました。
254 で汎用DataObjectだとレスを頂きました。
256 で254に対するお礼のレスをしました。
257 でWin32API質問箱 Build127の方が良いのでは?とレスを頂きました。
258 で そちらで聞いてみます と257にレスしました。
その後Win32API質問箱 Build127 に移って 398 で質問を始めました。
以上が今までの経緯なのですが、何か問題があるのでしょうか?
スレ立てるまでもない質問はここで 162匹目 に質問を出しました。
253 で49161は何のフォーマットか質問しました。
254 で汎用DataObjectだとレスを頂きました。
256 で254に対するお礼のレスをしました。
257 でWin32API質問箱 Build127の方が良いのでは?とレスを頂きました。
258 で そちらで聞いてみます と257にレスしました。
その後Win32API質問箱 Build127 に移って 398 で質問を始めました。
以上が今までの経緯なのですが、何か問題があるのでしょうか?
416デフォルトの名無しさん
2022/11/03(木) 15:08:57.81ID:SIQRCQUk 面倒くさいから追いかけないけど、別に問題あるようには見えない
>>410が正解書いてるような空気醸しだしてるから、その回答レス番書いてくれたら話が変わるかもしれんけど
実は正解ではない別のレスを書いててスルーされた恨みで警察に転職した可能性も感じる
>>410が正解書いてるような空気醸しだしてるから、その回答レス番書いてくれたら話が変わるかもしれんけど
実は正解ではない別のレスを書いててスルーされた恨みで警察に転職した可能性も感じる
417デフォルトの名無しさん
2022/11/03(木) 15:26:38.66ID:76hysst1 恨みとか知らんし警察は俺じゃないけど雑な質問だからそれなりの回答しかしてない
詳しく聞けば教えてやったけど
こっちの方が詳しい人がいると聞いてすぐ移ったから回答しなかっただけだが回答しなきゃいけない理由もないだろ
こっちの詳しい人()に聞けばいいだけ
それで何か問題あるか?
詳しく聞けば教えてやったけど
こっちの方が詳しい人がいると聞いてすぐ移ったから回答しなかっただけだが回答しなきゃいけない理由もないだろ
こっちの詳しい人()に聞けばいいだけ
それで何か問題あるか?
418デフォルトの名無しさん
2022/11/03(木) 15:43:26.06ID:/zL/TWh/ 向こうのスレみて来たけど、マルチ嫌いの俺ですら全く問題ないなw
なにを拗ねてるんだこやつは
なにを拗ねてるんだこやつは
419デフォルトの名無しさん
2022/11/03(木) 15:46:54.91ID:76hysst1 知ってることを回答しないだけで非難される言われはないぞw
お前が教えてやればいいだけ
本人でないならな
お前が教えてやればいいだけ
本人でないならな
420デフォルトの名無しさん
2022/11/03(木) 15:47:33.06ID:76hysst1 俺より詳しいやつがいるスレだからそれで問題ないはずだが何を怒ってるのか
421デフォルトの名無しさん
2022/11/03(木) 15:48:42.41ID:SIQRCQUk422デフォルトの名無しさん
2022/11/03(木) 16:06:19.20ID:GeJ34bDq 49161は何のフォーマットか?なんてのは枝葉で
本質は同じフォーマットになるような方法はないのか?なんだよな
わからん
本質は同じフォーマットになるような方法はないのか?なんだよな
わからん
423デフォルトの名無しさん
2022/11/03(木) 16:13:11.60ID:GeJ34bDq 枝葉への回答は前もココにも付いてる通り 汎用データオブジェクト
これで最初の質問は完了してるん
これで最初の質問は完了してるん
424デフォルトの名無しさん
2022/11/04(金) 00:59:05.47ID:TddW6oN3 この手のマニアックなのはstackoverflow漁るか英語で聞いた方が早いよ
425デフォルトの名無しさん
2022/11/05(土) 00:48:25.93ID:mvfmSa9B EMFは糞
GDI+も糞
GDI+も糞
426デフォルトの名無しさん
2022/11/06(日) 21:20:50.65ID:ZfA7UEIS 特定のウィンドウがFlashWindowしてるかどうか知りたいのですが、何か方法はありませんか?
画像取得して色確認するとかしかないですか?
画像取得して色確認するとかしかないですか?
427デフォルトの名無しさん
2022/11/07(月) 05:59:08.49ID:SWCRxCfW SetWindowsHookEx() を使用して、シェル フック HSHELL_FLASH (0x8006) をコールバックに登録します。
https://stackoverflow.com/questions/69806213/is-there-a-way-to-detect-when-a-specific-process-is-flashing-its-window-taskbar
https://stackoverflow.com/questions/69806213/is-there-a-way-to-detect-when-a-specific-process-is-flashing-its-window-taskbar
428デフォルトの名無しさん
2022/11/07(月) 17:30:23.05ID:4qt4VSUI ありがとうございます
429デフォルトの名無しさん
2022/11/16(水) 18:14:29.04ID:wmtCAqUs OEM製品だな
430デフォルトの名無しさん
2022/11/18(金) 21:22:52.50ID:zsUVThtH セッションID=0のタスクスケジューラーのプロセスから他のセッションID=1以上のGUI持ってるプロセスの操作したいんだけど
同じセッションIDのプロセスを作ってやらないと無理だったかな
同じセッションIDのプロセスを作ってやらないと無理だったかな
431デフォルトの名無しさん
2022/12/06(火) 11:39:49.01ID:63yxghiR スレッドが自身のスタック領域の開始アドレスを知る方法はありますか?
サイズなら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%95
サイズなら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%95
432デフォルトの名無しさん
2022/12/06(火) 18:52:16.04ID:uLZynctc >>431
サンプルソースは見たの?
>サイズならTEB構造体から取得できるようなんですが
正確にはStackBase, StackLimit を取得できるので、その差分からサイズを求めている。
teb->Reserved1[1] を使えばよいはず。
サンプルソースは見たの?
>サイズならTEB構造体から取得できるようなんですが
正確にはStackBase, StackLimit を取得できるので、その差分からサイズを求めている。
teb->Reserved1[1] を使えばよいはず。
433デフォルトの名無しさん
2022/12/08(木) 05:02:17.43ID:7N/fyoNc434デフォルトの名無しさん
2022/12/19(月) 11:12:22.75ID:aTW+qgB5 ディスクへの書き込みを別の場所へ書き込むようにインターセプトすることってドライバじゃないと不可能?
ReadDirectoryChangesやFindFirstChangeNotificationって通知だけでディスク変更操作に手を加える事は出来ないよね
パスが常に一定の物であればジャンクションやシンボリックで対応可能なんだけど
ReadDirectoryChangesやFindFirstChangeNotificationって通知だけでディスク変更操作に手を加える事は出来ないよね
パスが常に一定の物であればジャンクションやシンボリックで対応可能なんだけど
435デフォルトの名無しさん
2022/12/25(日) 08:27:23.13ID:z6jdEPeL その程度の知識の素人が手を出せるレベルの処理じゃないだろ
仮想デバイスとかどうすんの
仮想デバイスとかどうすんの
436デフォルトの名無しさん
2023/01/19(木) 12:53:53.04ID:RyyxmaOy 古い32bitプログラムをVS(ツールセット2010)でx64でビルドしてるんですが
「外部シンボル "sprintf" は未解決です」などのリンクエラーが大量に出て困ってます。
「legacy_stdio_definitions.lib」を使えという情報もあったんですが
2010ベースだと恐らくない?為か見つからないと怒られます。
色々事情があって最新版には移行出来ません。64bit化は諦めるしかないでしょうか?
「外部シンボル "sprintf" は未解決です」などのリンクエラーが大量に出て困ってます。
「legacy_stdio_definitions.lib」を使えという情報もあったんですが
2010ベースだと恐らくない?為か見つからないと怒られます。
色々事情があって最新版には移行出来ません。64bit化は諦めるしかないでしょうか?
437436
2023/01/19(木) 14:01:27.21ID:RyyxmaOy >436
チマチマと自分で設定弄ったりしてたら解決出来そうでした。
チマチマと自分で設定弄ったりしてたら解決出来そうでした。
438デフォルトの名無しさん
2023/01/20(金) 00:30:28.27ID:a17vtIUU ちゃんと無いなら自分で作るのもあり
439デフォルトの名無しさん
2023/01/22(日) 10:35:53.94ID:JlW1CBNq Windows Explorerではファイルに由来する属性、例えば画像のサイズとか、
MP3のタイトル、プログラムの説明とか表示できるけど、
それを取得するAPIは用意されててつかえたりしますか?
それともあれはExplorerで頑張って色んなフォーマットに対応してるの?
MP3のタイトル、プログラムの説明とか表示できるけど、
それを取得するAPIは用意されててつかえたりしますか?
それともあれはExplorerで頑張って色んなフォーマットに対応してるの?
440デフォルトの名無しさん
2023/01/22(日) 12:15:09.84ID:6SRGa8RT >>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
間違ってたらごめんね
このあたり↓ではないか?
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
間違ってたらごめんね
441439
2023/01/22(日) 13:35:39.24ID:JlW1CBNq >>440 Shell32.dllのGetDetailsOfを使うのずばりでした。
ありがとう!自前で全部揃えるのは嫌だとおもってたから。
ありがとう!自前で全部揃えるのは嫌だとおもってたから。
442デフォルトの名無しさん
2023/01/22(日) 18:45:34.11ID:6SRGa8RT >>440
2つ目のURLは違ったね。多分こっち↓だ
Shell object (Shldisp.h) - Win32 apps | Microsoft Learn
https://learn.microsoft.com/en-us/windows/win32/shell/shell
訂正します
2つ目のURLは違ったね。多分こっち↓だ
Shell object (Shldisp.h) - Win32 apps | Microsoft Learn
https://learn.microsoft.com/en-us/windows/win32/shell/shell
訂正します
443デフォルトの名無しさん
2023/01/27(金) 14:29:22.14ID:BWAW0Di3 >436-437
もう解決したみたいだけど
文字通り legacy_stdio_definitions.lib をリンクすれば良い
あるいは sprintf をやめて安全な snprintf (それ以外の legacy があればそれらも) 等を使うコードに変更する
もう解決したみたいだけど
文字通り legacy_stdio_definitions.lib をリンクすれば良い
あるいは sprintf をやめて安全な snprintf (それ以外の legacy があればそれらも) 等を使うコードに変更する
444デフォルトの名無しさん
2023/01/28(土) 15:17:14.74ID:SSo2rJoB 俺もそろそろANSI32bitアプリをunicode64bitアプリに更改したいなあ
まあ64bitにする意味は全く無いんだけど
せめてunicode化して、流行りの顔文字ぐらい表示できるようにしたい
あれのレンダリングはどうやるんだろうね
TextOutみたいなレベルのAPIじゃ無理だよね?
まあ64bitにする意味は全く無いんだけど
せめてunicode化して、流行りの顔文字ぐらい表示できるようにしたい
あれのレンダリングはどうやるんだろうね
TextOutみたいなレベルのAPIじゃ無理だよね?
445デフォルトの名無しさん
2023/01/28(土) 16:02:05.59ID:u99kbCnW >>444
Direct2Dなので描画ハンドラ関数の丸ごと書き換えが必要
Direct2Dなので描画ハンドラ関数の丸ごと書き換えが必要
446デフォルトの名無しさん
2023/01/28(土) 22:31:52.79ID:xHLhsNzv 正確にはDirect2D+DirectWriteだね
447デフォルトの名無しさん
2023/02/01(水) 03:54:55.92ID:axeNk+I4 QueryPerformanceFrequencyで取得した値が10MHzになってるんですが
何時からこの値になったのか、時期と実装が変わった経緯分かる方いますか??
何時からこの値になったのか、時期と実装が変わった経緯分かる方いますか??
448デフォルトの名無しさん
2023/02/01(水) 07:50:03.36ID:9aEQ8dCa もともとハードウェア次第だし、実装を変えたというわけじゃないんじゃね?
https://ja.wikipedia.org/wiki/High_Precision_Event_Timer
https://ja.wikipedia.org/wiki/High_Precision_Event_Timer
449デフォルトの名無しさん
2023/02/06(月) 00:05:16.01ID:diZedZj+450デフォルトの名無しさん
2023/02/06(月) 00:41:55.57ID:bCXM4GAa451デフォルトの名無しさん
2023/02/12(日) 10:07:22.45ID:/9PGWL3V ResEditが無くなってしまったみたいだけど、何があったんや?
単に需要がなくなっただけ?
単に需要がなくなっただけ?
452デフォルトの名無しさん
2023/02/12(日) 11:39:51.87ID:beRYzW3b 統合環境と一体化した
453デフォルトの名無しさん
2023/02/13(月) 02:53:34.52ID:S9jIVDl5 ウィンドウメッセージキューと socket を WaitForMultipleObjects みたいに同時に待ち受ける方法はある?
現状は通信処理は別スレッドでやってるけど、これを敢えて GetMessage のループでやりたい。
というのも、好奇心上の取り組みでメモリ使用量を極限まで減らしたくて、まずスレッドを減らしてみようと思って。
あとちょっと API の話からは逸れるんだけど、VisualStudio で C++ のデスクトップアプリの雛形をビルドしただけのものでもメモリをコミットサイズで 2MB とか食ってて、スレッドも 4つくらい動いてるんだけど、これって何?
起動してから少し放っておくとスレッドは 3つくらい終了するから、いらないものなら排除したい。
いろいろ削ぎ落とすリンカオプションの設定とかあったら教えてほしい。
スタックサイズやヒープサイズは数十KBに設定してみたけど、あんまり違いは見えない。
現状は通信処理は別スレッドでやってるけど、これを敢えて GetMessage のループでやりたい。
というのも、好奇心上の取り組みでメモリ使用量を極限まで減らしたくて、まずスレッドを減らしてみようと思って。
あとちょっと API の話からは逸れるんだけど、VisualStudio で C++ のデスクトップアプリの雛形をビルドしただけのものでもメモリをコミットサイズで 2MB とか食ってて、スレッドも 4つくらい動いてるんだけど、これって何?
起動してから少し放っておくとスレッドは 3つくらい終了するから、いらないものなら排除したい。
いろいろ削ぎ落とすリンカオプションの設定とかあったら教えてほしい。
スタックサイズやヒープサイズは数十KBに設定してみたけど、あんまり違いは見えない。
454デフォルトの名無しさん
2023/02/13(月) 03:36:15.30ID:X7RxD/JY >>453
MsgWaitForMultipleObjects を使う
MsgWaitForMultipleObjects を使う
456デフォルトの名無しさん
2023/02/14(火) 08:25:48.17ID:WQfmJH2L ソケットなら WSAAsyncSelect でソケットのイベントを WindowMessage に連動させる案もある
458デフォルトの名無しさん
2023/02/15(水) 11:23:09.93ID:bSshLO82 シンプルにやるならGetMessageじゃなくPeekMessageでノンブロックループして定点観測するという事も出来る
459デフォルトの名無しさん
2023/02/15(水) 12:21:16.78ID:bwlsc68o460デフォルトの名無しさん
2023/02/15(水) 13:10:37.60ID:J40TkLkU ところで、メッセージループで GetMessage したメッセージを DispatchMessage せずに、そのループ内で処理しちゃってもいい?
ウィンドウプロシージャに書いてる switch やら DefWindowProc をループ内に直接書いちゃうの。
ウィンドウプロシージャに書いてる switch やら DefWindowProc をループ内に直接書いちゃうの。
461デフォルトの名無しさん
2023/02/15(水) 13:33:51.32ID:bSshLO82 >>459
いや何も処理する事がなければSleep(1)でも挟むのが常套手段
GetMessageの内部だってそうなってるはず
GetMessageの場合はカーネル空間でループ回してるだろうからPeekMessageループよりIO回数が減ってパフォーマンス上は有利だろうが
いや何も処理する事がなければSleep(1)でも挟むのが常套手段
GetMessageの内部だってそうなってるはず
GetMessageの場合はカーネル空間でループ回してるだろうからPeekMessageループよりIO回数が減ってパフォーマンス上は有利だろうが
462デフォルトの名無しさん
2023/02/15(水) 13:43:45.82ID:N1k6+oAn >> 460
ダメです
DispatchMessageは自プロセスに飛んできたOSとか他プロセスのメッセージも振り分ける
>> 461
待つならSleep(1)よりもWaitForSingleObjectのほうが軽い
ダメです
DispatchMessageは自プロセスに飛んできたOSとか他プロセスのメッセージも振り分ける
>> 461
待つならSleep(1)よりもWaitForSingleObjectのほうが軽い
463デフォルトの名無しさん
2023/02/15(水) 13:48:07.11ID:S4bShmel >>461
常套手段ってw
そしたら到着したメッセージを即座に処理できないでしょうよ。
イベントを待つというのは待ちながらもシグナル時は即座に反応できるというのが最大の利点なのに、わざわざそれを殺してどうするの。
そしてカーネル空間でも GetMessage は sleep しながらのループでなんか回してないと思うよ。
アプリケーションが何かを待ってる時には、スケジューラがそのアプリの実行を止めてしまう(タイムスライスをあげない)。
GetMessage で言えば OS がメッセージをキューに入れた段階で GetMessage してるプロセスにタスクスイッチする。
ディスクI/O しかり、socket しかり、タイマーしかり。
本当に CPU が何もしないときなら HALT してハードウェア割り込みを待ってる。
常套手段ってw
そしたら到着したメッセージを即座に処理できないでしょうよ。
イベントを待つというのは待ちながらもシグナル時は即座に反応できるというのが最大の利点なのに、わざわざそれを殺してどうするの。
そしてカーネル空間でも GetMessage は sleep しながらのループでなんか回してないと思うよ。
アプリケーションが何かを待ってる時には、スケジューラがそのアプリの実行を止めてしまう(タイムスライスをあげない)。
GetMessage で言えば OS がメッセージをキューに入れた段階で GetMessage してるプロセスにタスクスイッチする。
ディスクI/O しかり、socket しかり、タイマーしかり。
本当に CPU が何もしないときなら HALT してハードウェア割り込みを待ってる。
464デフォルトの名無しさん
2023/02/15(水) 16:44:48.20ID:STPisL/8 WM_KEYDOWN
Ctrl+0(ゼロ)とかShift+0は来るのに、Ctrl+Shift+0は来ないのはなんでなん?
Ctrl+0(ゼロ)とかShift+0は来るのに、Ctrl+Shift+0は来ないのはなんでなん?
465デフォルトの名無しさん
2023/02/17(金) 22:01:39.95ID:rxib1RET 定番のSleep(1)にこれだけ噛みつけるのも面白いな
466デフォルトの名無しさん
2023/02/18(土) 05:24:38.57ID:c4QxGie2 今時sleep(1)が定番とかw
467デフォルトの名無しさん
2023/02/18(土) 11:10:10.06ID:7GI8GwXH マルチコア、メニーコアでスレッド単体だけ見てもな
468デフォルトの名無しさん
2023/02/18(土) 16:35:58.18ID:nz9Z1NDi イベント待ちはSleep(1)のポーリングでもどうでもいいと思うぞ
シングルスレッドで全部処理する場合問題はそこではないし
扱う内容によっては毛局スレッドを分けた方がいいって結論になる
シングルスレッドで全部処理する場合問題はそこではないし
扱う内容によっては毛局スレッドを分けた方がいいって結論になる
469デフォルトの名無しさん
2023/02/18(土) 21:28:29.45ID:CT5am8vz 今時とかじゃない
>>463を読むほど笑えるという話
>>463を読むほど笑えるという話
470デフォルトの名無しさん
2023/02/18(土) 23:58:40.40ID:hE3AXWNH イベントキャッチは1msほどの間隔の粒度でいいの?
471デフォルトの名無しさん
2023/02/19(日) 01:06:15.57ID:svaemBcP タイマーの精度が高くないからSleep(1)でも30msくらいウエイトかかるけどな
472デフォルトの名無しさん
2023/02/19(日) 01:28:55.07ID:15y14fHP 1つの応答基準の60fpsが16.7ms間隔だからその間に処理が終わってれば常人の目には判らないし
待ち行列にメッセージが溜まってたりイベント処理が発生した場合、処理してる間にコンテキストスイッチが何度も起きて場合によっては1msなんて超えてくる
Sleep(1)はOSに時間を明け渡す気がありますよ程度の意味しかない
待ち行列にメッセージが溜まってたりイベント処理が発生した場合、処理してる間にコンテキストスイッチが何度も起きて場合によっては1msなんて超えてくる
Sleep(1)はOSに時間を明け渡す気がありますよ程度の意味しかない
473デフォルトの名無しさん
2023/02/19(日) 01:46:44.83ID:QabSn9vm マウス、キーボードの処理、ダイアログの更新のメッセージ処理くらいなら事足りる
昔のゲームもOllyDbgやIDAつかって覗いてみるとPeekMessageやGetTickCount等を使って一定時間間隔のメッセージ処理ループをやってた
昔のゲームもOllyDbgやIDAつかって覗いてみるとPeekMessageやGetTickCount等を使って一定時間間隔のメッセージ処理ループをやってた
474デフォルトの名無しさん
2023/02/19(日) 08:53:33.42ID:zBhvMYFK >>473
それはウィンドウメッセージ以外の処理を並行してやるためでしょ。
均等時間で処理を進めたいとかそういう事情が無ければ大人しくイベント待ちすればいいのに、そうせずわざわざ Sleep するとどんないいことがあるの?
それはウィンドウメッセージ以外の処理を並行してやるためでしょ。
均等時間で処理を進めたいとかそういう事情が無ければ大人しくイベント待ちすればいいのに、そうせずわざわざ Sleep するとどんないいことがあるの?
475デフォルトの名無しさん
2023/02/19(日) 10:13:58.24ID:xSIr/CQB 昔の知識否定されてファビョってるだけだろ
わざわざ昔のゲームとかw
わざわざ昔のゲームとかw
476デフォルトの名無しさん
2023/02/19(日) 10:23:12.36ID:QabSn9vm 前レスよく読まなかったけど、GetMessage()で済むところをPeekMessage();Sleep(1);でループしてメッセージのポーリングするってことか。
なんでわざわざそんなことを?w
なんでわざわざそんなことを?w
477デフォルトの名無しさん
2023/02/19(日) 10:54:48.53ID:jNkDtxGh WinFormsのソースもPeekMessageでWindowメッセージがあればそれの処理、無ければタスクキュー処理って流れだったはず
478デフォルトの名無しさん
2023/02/19(日) 11:25:42.35ID:xSIr/CQB479デフォルトの名無しさん
2023/02/19(日) 11:36:42.06ID:jNkDtxGh >>478
Sleepは知らんがPeekMessageでブロックせずに他の定期処理挟むのは別に普通って言いたかっただけ
Sleepは知らんがPeekMessageでブロックせずに他の定期処理挟むのは別に普通って言いたかっただけ
480デフォルトの名無しさん
2023/02/19(日) 14:38:47.15ID:xSIr/CQB481デフォルトの名無しさん
2023/02/19(日) 14:39:32.86ID:svaemBcP そもそも454-457で解決してるのになんで盛り上がってきたんだw
482デフォルトの名無しさん
2023/02/24(金) 14:07:57.59ID:uAuRZ8t6 質問ですがOpen(Save)Dialog等でOFN_DONTADDTORECENTが無効の場合、この履歴情報はどこに保存されますか?
483デフォルトの名無しさん
2023/02/24(金) 14:25:10.37ID:uAuRZ8t6 すみません
エクスプローラの履歴を消したら消えました
質問を取り下げます
エクスプローラの履歴を消したら消えました
質問を取り下げます
484デフォルトの名無しさん
2023/02/25(土) 14:25:14.46ID:/pFhv1h6 Win32APIはC言語が前提
C++で同様なものはMFCであってます?
C++で同様なものはMFCであってます?
485デフォルトの名無しさん
2023/02/25(土) 14:47:53.07ID:i9tFdOEb >>484
C++でもWin32APIはWin32APIです。
MFCは別物。
元々はC/C++からWin32APIを呼び出す前提だったけど、
今はC#、Python、Rust等いろいろな言語から呼べるらしい。
C++でもWin32APIはWin32APIです。
MFCは別物。
元々はC/C++からWin32APIを呼び出す前提だったけど、
今はC#、Python、Rust等いろいろな言語から呼べるらしい。
486デフォルトの名無しさん
2023/02/25(土) 15:03:12.75ID:/pFhv1h6 そうなんだ
サンクス
サンクス
487デフォルトの名無しさん
2023/02/25(土) 17:08:15.41ID:VP7n/u9I GDI+ はリファレンスは C++のインターフェースだけど
細かくほぐしたら Cや他言語に対応できるのかな
細かくほぐしたら Cや他言語に対応できるのかな
488デフォルトの名無しさん
2023/02/25(土) 22:30:47.93ID:YUkwGr7D >>484
C++/WinRTもあるよ
C++/WinRTもあるよ
489デフォルトの名無しさん
2023/03/04(土) 00:35:03.13ID:cng4hKxr >>484
MFCを使わせたかったのはVisual C++だった。
WindowsアプリケーションはC言語かC++を使うのが前提の歴史があって、MFCはWindows APIをラッピングしたものだった。
マイクロソフトはライブラリの作り方がよくわからず、MFCはコードが複雑になるだけのもの。
Java SEのライブラリが登場してから、マイクロソフトは失敗に気づいて.NET Frameworkを作ることになる。
MFCを使わせたかったのはVisual C++だった。
WindowsアプリケーションはC言語かC++を使うのが前提の歴史があって、MFCはWindows APIをラッピングしたものだった。
マイクロソフトはライブラリの作り方がよくわからず、MFCはコードが複雑になるだけのもの。
Java SEのライブラリが登場してから、マイクロソフトは失敗に気づいて.NET Frameworkを作ることになる。
490デフォルトの名無しさん
2023/03/04(土) 01:13:44.99ID:poIq8zq5 >>489
MicrosoftのVisual C++のMFC
BorlandのC++ BuilderのVCL
当時のWindowsでのC++用クラスライブラリでのシェア競争の結果Borlandが敗れてMFCが主流になった
.NET FrameworkはもともとWindows DNA構想から産まれてきたものでMFCとは起源が別
MicrosoftのVisual C++のMFC
BorlandのC++ BuilderのVCL
当時のWindowsでのC++用クラスライブラリでのシェア競争の結果Borlandが敗れてMFCが主流になった
.NET FrameworkはもともとWindows DNA構想から産まれてきたものでMFCとは起源が別
491デフォルトの名無しさん
2023/03/04(土) 01:56:42.82ID:fku36Zva MFCの設計が変なのは出てきた時期も悪かったと思うね
まだVC++含めて各C++コンパイラでtemplateもまともに動かない&互換性に問題があるような状態だったし
まだVC++含めて各C++コンパイラでtemplateもまともに動かない&互換性に問題があるような状態だったし
492デフォルトの名無しさん
2023/03/04(土) 04:09:52.49ID:HiKr/1U9 MFCは最初から死産だったがMS製だからVisualStudioに標準で入ってるからと使わざるを得なかっただけ
設計思想はDelphi(C++Builder)よりも数段劣ってる
当時のC++がうんこすぎたのもあるがこれは処理系の設計者のセンスの問題だろう
設計思想はDelphi(C++Builder)よりも数段劣ってる
当時のC++がうんこすぎたのもあるがこれは処理系の設計者のセンスの問題だろう
493デフォルトの名無しさん
2023/03/04(土) 06:03:41.66ID:2lfmGWRw >>490
その頃のBorlandはOWLだぞ
その頃のBorlandはOWLだぞ
494デフォルトの名無しさん
2023/03/04(土) 10:32:23.94ID:IGk7eTto MFCはDocument-Viewアーキテクチャがわかりにくいとかそのパターンに合わないアプリが
作りにくいとかはあったけど、それ以外は当時のC++でよくやったと思うよ。
作りにくいとかはあったけど、それ以外は当時のC++でよくやったと思うよ。
495デフォルトの名無しさん
2023/03/04(土) 10:38:13.23ID:RFNVa0Qi C++じゃなくてCからでもGDI+は使える
面倒だから避けるけど
面倒だから避けるけど
496デフォルトの名無しさん
2023/03/04(土) 10:40:00.46ID:RFNVa0Qi497デフォルトの名無しさん
2023/03/04(土) 10:41:24.02ID:RFNVa0Qi >>491
いやいやMFCの設計者が馬鹿過ぎただけ
いやいやMFCの設計者が馬鹿過ぎただけ
498デフォルトの名無しさん
2023/03/04(土) 10:43:16.79ID:RFNVa0Qi >>492-493
ほんそれ
ほんそれ
499デフォルトの名無しさん
2023/03/04(土) 10:45:47.20ID:RFNVa0Qi >>494
どうみても糞は糞
どうみても糞は糞
500デフォルトの名無しさん
2023/03/04(土) 10:51:57.61ID:2lfmGWRw Document Viewが分かりにくいとか
そんなんで音を上げるやつがセンスとはよく言うよ
そんなんで音を上げるやつがセンスとはよく言うよ
501デフォルトの名無しさん
2023/03/04(土) 11:11:54.38ID:N7rqxwy8 MFCなんてクソ過ぎて当時でも使ってなかったよw
502デフォルトの名無しさん
2023/03/04(土) 11:18:57.88ID:AKTwgEup MFCよりSDKというのは当時の合言葉だったろ
503デフォルトの名無しさん
2023/03/04(土) 11:21:50.94ID:2lfmGWRw Smalltalkの下手な真似は目が点になったけどね
504デフォルトの名無しさん
2023/03/06(月) 08:40:31.04ID:jJIeXpQ3 使わざるを得なかっただけてw
使うも使わないも使用者の自由だろw
使うも使わないも使用者の自由だろw
505デフォルトの名無しさん
2023/03/06(月) 09:09:43.33ID:3SgfQ2ps MFC ATL WTL
用途によって使い分け
ひとつのクラスライブラリに固執する必要性も必然性もない
用途によって使い分け
ひとつのクラスライブラリに固執する必要性も必然性もない
506デフォルトの名無しさん
2023/03/06(月) 14:14:58.36ID:diWxUEyJ Smalltalkの真似はObjective-C
507デフォルトの名無しさん
2023/03/06(月) 14:55:30.78ID:e9ffSDb7 >>504
途中から参加した案件では選択権がない
途中から参加した案件では選択権がない
508デフォルトの名無しさん
2023/03/07(火) 08:46:10.01ID:nXe+vnmI それは途中参加した案件が使ってるから使わざるを得ないだけで
VSに入ってるから使わざるを得ないわけではないね
VSに入ってるから使わざるを得ないわけではないね
509デフォルトの名無しさん
2023/03/07(火) 12:07:50.78ID:CdvGJ9oA 言うまでも無く地雷案件
参加する前に嗅覚で判断して離脱
参加する前に嗅覚で判断して離脱
510デフォルトの名無しさん
2023/03/07(火) 13:22:26.79ID:YRf34T/Q 上から降ってくる仕事を、雇われの立場の者は断れない
511デフォルトの名無しさん
2023/03/07(火) 17:55:18.76ID:jr89I6Dk 信仰を理由にすればなんでも断れる
512デフォルトの名無しさん
2023/03/08(水) 06:45:47.34ID:D4+z1pfo 退職して出家でもすんのか
頼むから犯罪に加担するのはやめろ
頼むから犯罪に加担するのはやめろ
513デフォルトの名無しさん
2023/03/09(木) 00:18:42.41ID:ta9TFpTT Win32というかVC++だけど_itow_s系列って何文字書き込まれたかを返してくれるバージョンなんてないよね?
ChatGPTに聞いたら最後にint*で返してくれるオーバーロードがあるって言ってたんだが
ChatGPTに聞いたら最後にint*で返してくれるオーバーロードがあるって言ってたんだが
514デフォルトの名無しさん
2023/03/09(木) 04:47:01.50ID:fmJ24L2G 意味の分からない現象に遭遇したので質問させてくれ。
ここが適切かどうか微妙だけれど、もしスレが違っていたら案内いただけるとありがたい。
さて、VC6時代に作成され、プロジェクトを随時新しいVSに移行して開発しているアプリがある。
特にフレームワークは使用しておらずwin32Apiで書かれている。リソースエディタは、VS付属のリソースエディタだ。
windows10/VS2019までは問題なかったんだが、windows11/VS2022でビルドしたとたん、ダイアログのサイズが横に6ピクセル縦に2ピクセル小さくなって、中身の右と下が詰まる現象が発生した。
同じプロジェクトに新規にダイアログを加えても同じだった。
なお、この現象は、タイトルバーを追加したときだけ起こる模様。また、フォントの指定をしてもしなくても同様だ。
当たり前だが、新規にテストプロジェクトをwindows11/VS2022で作成した場合は起こらない。
なお、windwos10でビルドしたものを windows11で実行すると正しく表示される。
また、windows11でビルドしたものを windows11 で実行した場合は上記のようになるが、windows10で実行すると正しく表示される。
windwos11の互換モードをチェックすると、少しだけ改善される(詰まりがわずかに改善する)
user32.dll関連で何かあるのかな? 正直訳が分からないよ。
識者の意見を求む。
ここが適切かどうか微妙だけれど、もしスレが違っていたら案内いただけるとありがたい。
さて、VC6時代に作成され、プロジェクトを随時新しいVSに移行して開発しているアプリがある。
特にフレームワークは使用しておらずwin32Apiで書かれている。リソースエディタは、VS付属のリソースエディタだ。
windows10/VS2019までは問題なかったんだが、windows11/VS2022でビルドしたとたん、ダイアログのサイズが横に6ピクセル縦に2ピクセル小さくなって、中身の右と下が詰まる現象が発生した。
同じプロジェクトに新規にダイアログを加えても同じだった。
なお、この現象は、タイトルバーを追加したときだけ起こる模様。また、フォントの指定をしてもしなくても同様だ。
当たり前だが、新規にテストプロジェクトをwindows11/VS2022で作成した場合は起こらない。
なお、windwos10でビルドしたものを windows11で実行すると正しく表示される。
また、windows11でビルドしたものを windows11 で実行した場合は上記のようになるが、windows10で実行すると正しく表示される。
windwos11の互換モードをチェックすると、少しだけ改善される(詰まりがわずかに改善する)
user32.dll関連で何かあるのかな? 正直訳が分からないよ。
識者の意見を求む。
515デフォルトの名無しさん
2023/03/09(木) 14:01:14.32ID:lc0skjdv AdjustWindowRect
AdjustWindowRectEx
AdjustWindowRectEx
516デフォルトの名無しさん
2023/03/09(木) 15:07:30.71ID:rNyfncCj windows10/VS2019 で 新規作成し
同環境でビルドしたものを windows11 で実行
windows11 でビルドしたものを windows11 で実行
で差があるんかな?
_WIN32_WINNT
_WIN32_IE
WINVER
あたりの値を固定化しているのかどうか
同環境でビルドしたものを windows11 で実行
windows11 でビルドしたものを windows11 で実行
で差があるんかな?
_WIN32_WINNT
_WIN32_IE
WINVER
あたりの値を固定化しているのかどうか
517514
2023/03/09(木) 15:19:13.60ID:fmJ24L2G >515
え、rcファイルで定義されたダイアログを、DialogBoxParam()などで表示したらそうなって困っているという話なのですが。
もしかして、windows11の時だけ、横に6ピクセル縦に2ピクセル広げるという力業でやれということですか?w
え、rcファイルで定義されたダイアログを、DialogBoxParam()などで表示したらそうなって困っているという話なのですが。
もしかして、windows11の時だけ、横に6ピクセル縦に2ピクセル広げるという力業でやれということですか?w
518514
2023/03/09(木) 15:22:59.99ID:fmJ24L2G >516
プロジェクトを作成したのはVC6のようです。
以降ずっと継承しているらしく、そのプロジェクトをwindows10/2019でビルドすると問題が起きないのですが、
windows11/2022でビルドすると、実行環境がwindows11に限り現象が発生します。謎です。
バージョンは定義されています。この辺りを最新の0X0Aあたりに設定してリトライしてみます。
THX。
プロジェクトを作成したのはVC6のようです。
以降ずっと継承しているらしく、そのプロジェクトをwindows10/2019でビルドすると問題が起きないのですが、
windows11/2022でビルドすると、実行環境がwindows11に限り現象が発生します。謎です。
バージョンは定義されています。この辺りを最新の0X0Aあたりに設定してリトライしてみます。
THX。
519デフォルトの名無しさん
2023/03/09(木) 15:36:17.03ID:c9gYitiH Windows11/2019でビルドしたらどうなんじゃろ
520デフォルトの名無しさん
2023/03/09(木) 16:10:10.53ID:AnxNC5rK ビルドしたOSのバージョンに合わせてウインドウスタイルを調整する部分があるのでは?
VS2019とVS2022の違いで言うと、ヘッダーでの #ifdef の分岐条件の違いでしょ?
windwos10でビルドしたものを windows11で実行すると正しく表示される。
→OSがWindows10アプリとして実行しているからオプション未指定でも正常
windows11でビルドしたものを windows11 で実行した場合は上記のようになる
→OS的にはwindwos11アプリだけどビルドとしてはWindows10アプリ、その齟齬で表示が崩れる
が、windows10で実行すると正しく表示される。
→OS的にもビルド的にもWindows10アプリとして実行しているから問題ない
windwos11の互換モードをチェックすると、少しだけ改善される(詰まりがわずかに改善する)
→疑似的にWindows10アプリとして実行するが、部分的に完全な互換が出来ないでいる
と言う妄想をしてみた
VS2019とVS2022の違いで言うと、ヘッダーでの #ifdef の分岐条件の違いでしょ?
windwos10でビルドしたものを windows11で実行すると正しく表示される。
→OSがWindows10アプリとして実行しているからオプション未指定でも正常
windows11でビルドしたものを windows11 で実行した場合は上記のようになる
→OS的にはwindwos11アプリだけどビルドとしてはWindows10アプリ、その齟齬で表示が崩れる
が、windows10で実行すると正しく表示される。
→OS的にもビルド的にもWindows10アプリとして実行しているから問題ない
windwos11の互換モードをチェックすると、少しだけ改善される(詰まりがわずかに改善する)
→疑似的にWindows10アプリとして実行するが、部分的に完全な互換が出来ないでいる
と言う妄想をしてみた
521デフォルトの名無しさん
2023/03/09(木) 17:01:34.32ID:rNyfncCj522デフォルトの名無しさん
2023/03/09(木) 17:11:02.85ID:AnxNC5rK523デフォルトの名無しさん
2023/03/09(木) 17:11:56.14ID:rNyfncCj おっけー了解
524デフォルトの名無しさん
2023/03/09(木) 17:13:51.29ID:rNyfncCj 動作環境を固定化するのに
#ifdef _WIN32_WINNT
#undef _WIN32_WINNT
#define _WIN32_WINNT 0x○○○
#endif
というのは、俺はやってる これの宣言の後に windows.h 等を読むように
って制限かかるけどね
#ifdef _WIN32_WINNT
#undef _WIN32_WINNT
#define _WIN32_WINNT 0x○○○
#endif
というのは、俺はやってる これの宣言の後に windows.h 等を読むように
って制限かかるけどね
525デフォルトの名無しさん
2023/03/10(金) 08:43:31.77ID:rc8/VQXS とりあえず関連するライブラリのビルドを込みで、すべてWINVERと_WIN32_WINNTの定義を0x0A00にしてやってみたが結果は変わらず。
>520
問題は、「どこで」そのOSのアプリだと認識しているのかという点ですね。
urn:schemas-microsoft-com:compatibility.v1 で、マニフェストに定義する値って、windows10も11も同じですし。
Common-Controlsの時みたいに、windows11スタイルを禁止するのになにか定義する値でも……と思ったけどみあたりませんし。
>522
とりあえずOSのバージョンを取得しているところをgrepして追いかけてみたが、そういうのはなさそう。
そもそもダイアログリソースからの作成ですしね。
問題が再現する最小のビルドを作成してるのだけれど、これがまあ大変(普通に10/2019で新規作成すると問題が起こらない)なので
問題が起こるプロジェクトを複製して、とりあえず WinMainがあるソース以外を全部削除してから順に試してみます。
泣けるぜ。
締め切りに間に合いそうになかったら、とりあえず超力ワザで。
こうやってクソソースができていくんだなぁ……
>520
問題は、「どこで」そのOSのアプリだと認識しているのかという点ですね。
urn:schemas-microsoft-com:compatibility.v1 で、マニフェストに定義する値って、windows10も11も同じですし。
Common-Controlsの時みたいに、windows11スタイルを禁止するのになにか定義する値でも……と思ったけどみあたりませんし。
>522
とりあえずOSのバージョンを取得しているところをgrepして追いかけてみたが、そういうのはなさそう。
そもそもダイアログリソースからの作成ですしね。
問題が再現する最小のビルドを作成してるのだけれど、これがまあ大変(普通に10/2019で新規作成すると問題が起こらない)なので
問題が起こるプロジェクトを複製して、とりあえず WinMainがあるソース以外を全部削除してから順に試してみます。
泣けるぜ。
締め切りに間に合いそうになかったら、とりあえず超力ワザで。
こうやってクソソースができていくんだなぁ……
526デフォルトの名無しさん
2023/03/10(金) 09:09:30.83ID:skV/NfUS Win10/2022でビルドしてみたりWin11/2019でビルドしてみたりはしたんかいな
527デフォルトの名無しさん
2023/03/10(金) 12:17:19.97ID:vz26ACYY ここまでDwm略のAPIの話が一切出てなくて草
528デフォルトの名無しさん
2023/03/10(金) 12:34:03.89ID:rc8/VQXS ものすごい大変だったけど、最小化コードを作ったら原因が判明したので報告しておく。
おそらく windows2000 の頃まで遡る話だけれど、
ダイアログをセンタリングするためのクラスメソッド内で、ダイアログをセンタリングするためにSetWindowPos()じゃなくて、MoveWindow()が使われていたのが原因だった。
なんとエアロが有効な状態で、455 x 179 のダイアログを、MoveWindow()を使って、MoveWindow(100, 100, 455, 179) へと動かすと、サイズが、441 x 172 になる!
そういうもんなのかー。こんなの知らないとわかんないよ……
おそらく windows2000 の頃まで遡る話だけれど、
ダイアログをセンタリングするためのクラスメソッド内で、ダイアログをセンタリングするためにSetWindowPos()じゃなくて、MoveWindow()が使われていたのが原因だった。
なんとエアロが有効な状態で、455 x 179 のダイアログを、MoveWindow()を使って、MoveWindow(100, 100, 455, 179) へと動かすと、サイズが、441 x 172 になる!
そういうもんなのかー。こんなの知らないとわかんないよ……
529514
2023/03/10(金) 12:36:58.25ID:rc8/VQXS sage忘れすまん。
てか、これ客観的に見てバグとしか思えない挙動だ。
とりあえず解決ということで。ありがとうございました。
てか、これ客観的に見てバグとしか思えない挙動だ。
とりあえず解決ということで。ありがとうございました。
530514
2023/03/10(金) 13:06:28.99ID:rc8/VQXS 連投すまん。
確認したところ、windows11/2022で新規作成したプロジェクトでも再現します。
windows11だけなので、11でUIを一新した際に発生した、MoveWindowのバグってことで納得します。
これが仕様だとしたら、ちょっと首をひねらざるを得ないですね。
確認したところ、windows11/2022で新規作成したプロジェクトでも再現します。
windows11だけなので、11でUIを一新した際に発生した、MoveWindowのバグってことで納得します。
これが仕様だとしたら、ちょっと首をひねらざるを得ないですね。
531デフォルトの名無しさん
2023/03/10(金) 13:20:48.59ID:vOYF1isR 納得しますじゃなくバグみつけたなら報告しろよ
532デフォルトの名無しさん
2023/03/10(金) 15:04:54.29ID:L3R8V02U533デフォルトの名無しさん
2023/03/10(金) 15:18:22.32ID:vOYF1isR ここで報告できると本気で思ってるのか
おめでてーな
おめでてーな
534デフォルトの名無しさん
2023/03/10(金) 16:23:50.60ID:hFmnRmK3 どう対処していくかは悩ましいところだろうけど
さしあたり見つかってよかったね
さしあたり見つかってよかったね
535デフォルトの名無しさん
2023/03/10(金) 19:20:08.44ID:iHPjFzG+ MoveWindowなんて基本的なAPIのバグを報告したら、幾らか貰えそうな気がする
ここ見た他の誰かが、もう報告してるかもねw
ここ見た他の誰かが、もう報告してるかもねw
536デフォルトの名無しさん
2023/03/10(金) 19:29:59.85ID:M/1mzCJs それってバグなのか?
LunaやAeroの影響を受けるような前提があるんじゃないか?
LunaやAeroの影響を受けるような前提があるんじゃないか?
537デフォルトの名無しさん
2023/03/10(金) 21:41:52.52ID:ErzT9SJ9 >>513
読み取った後に、wcslen() で文字数を数えると良い。
読み取った後に、wcslen() で文字数を数えると良い。
538デフォルトの名無しさん
2023/03/10(金) 21:52:37.44ID:ErzT9SJ9 >>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.
結論から言うと「無い」ハズ。
また、最後の引数が 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.
539デフォルトの名無しさん
2023/03/11(土) 17:44:54.81ID:zdIWJF7w ウインドウサイズの現象どこかで見たな
たしかリンカオプションの/subsystem:windows,X.YとManifestFileの組み合わせで
APIの挙動が変わるんじゃなかったかな
たしかリンカオプションの/subsystem:windows,X.YとManifestFileの組み合わせで
APIの挙動が変わるんじゃなかったかな
540デフォルトの名無しさん
2023/03/12(日) 18:57:18.20ID:6SOWk3dH541デフォルトの名無しさん
2023/03/12(日) 22:11:40.77ID:6PqX/PSJ 自分では調べずにAIに聞いて、その確認も掲示板で他人に聞くスタイル
542デフォルトの名無しさん
2023/03/13(月) 07:50:35.89ID:M+cw5TbQ ChatGPTを何だと思ってるのかw
543デフォルトの名無しさん
2023/03/13(月) 09:19:48.62ID:0cpyMYUG ChatGPTもBingも知らないことを知らないと言わずしれっと嘘ついてくるし回答が人の目に触れてなくて識者からのコメントもないからこれを信用するやつは頭湧いてる
Qiitaの方がまだマシレベルでこれに比べるとウィキペディアは神レベル
しかしそのどれも公式ドキュメントとは比べ物にならない糞
Qiitaの方がまだマシレベルでこれに比べるとウィキペディアは神レベル
しかしそのどれも公式ドキュメントとは比べ物にならない糞
544デフォルトの名無しさん
2023/03/13(月) 11:17:06.85ID:bF2IN6wD 答えの無い物を探すのが圧倒的に苦手
今までの「自称AI」と何ら変わらん野田
今までの「自称AI」と何ら変わらん野田
545デフォルトの名無しさん
2023/03/13(月) 12:16:45.84ID:ap2u+t1x 道具に振り回される人って…w
546デフォルトの名無しさん
2023/03/13(月) 14:09:26.73ID:P3estam5 他のプログラミングを出来るとされるAIでも、小学生でも習う円筒の体積すら、
半径の二乗を直径の二乗に間違えた間違いのコードを答えてきた。
半径の二乗を直径の二乗に間違えた間違いのコードを答えてきた。
547デフォルトの名無しさん
2023/03/13(月) 14:38:05.49ID:tDVvLmFE 今のところは汎用対話AIだからね
対話力に重きを置いてる上に汎用型なので正確性に関してはかなり犠牲にされてる
結局人間もそうだけど専門型が出てきてこそだな
AIアート分野はローカルで各々が専門的に学習させられるからその辺一歩リードしてる
対話力に重きを置いてる上に汎用型なので正確性に関してはかなり犠牲にされてる
結局人間もそうだけど専門型が出てきてこそだな
AIアート分野はローカルで各々が専門的に学習させられるからその辺一歩リードしてる
548デフォルトの名無しさん
2023/03/13(月) 15:38:27.48ID:4eztEhWJ >>546
どのAIにどう質問したの?
どのAIにどう質問したの?
549デフォルトの名無しさん
2023/03/14(火) 12:02:53.79ID:5+uIhtUh プロセス間で同じファイルを読んだり書いたりしたいのですが、
一方が開いているときにはオープンに失敗させるのではなく、排他制御で待つようにしたいです。
Linuxとかだとflockという関数があるようですが、
Windowsで同じことをやるにはどういう方法になるのでしょうか?
ミューテックスを使うとなると、事前にミューテックスの名前も決める必要が出てくるのですが。
一方が開いているときにはオープンに失敗させるのではなく、排他制御で待つようにしたいです。
Linuxとかだとflockという関数があるようですが、
Windowsで同じことをやるにはどういう方法になるのでしょうか?
ミューテックスを使うとなると、事前にミューテックスの名前も決める必要が出てくるのですが。
550デフォルトの名無しさん
2023/03/14(火) 14:53:13.19ID:tgsDNUzh551デフォルトの名無しさん
2023/03/14(火) 15:49:06.52ID:5+uIhtUh >>550
これって、書き込むときはファイルのサイズは事前にはわからないのですが、
計算してからでないとロックはできないということなのでしょうか。
ファイルの任意の領域というよりは、ファイルそのものをロックしたいのですけど。
これって、書き込むときはファイルのサイズは事前にはわからないのですが、
計算してからでないとロックはできないということなのでしょうか。
ファイルの任意の領域というよりは、ファイルそのものをロックしたいのですけど。
552デフォルトの名無しさん
2023/03/14(火) 15:55:53.14ID:+K74J7cv >ミューテックスを使うとなると、事前にミューテックスの名前も決める必要が出てくるのですが。
別にそんな必要はないでしょ
ユニーク名+ファイル名でミューテックスを使えばいい
(※ユニーク名ってのは自分しか使わない名前のことね、例えばGUIDとかだけどそこまでがっちりやる必要もないとは思う)
別にそんな必要はないでしょ
ユニーク名+ファイル名でミューテックスを使えばいい
(※ユニーク名ってのは自分しか使わない名前のことね、例えばGUIDとかだけどそこまでがっちりやる必要もないとは思う)
553デフォルトの名無しさん
2023/03/14(火) 16:03:43.56ID:+K74J7cv554デフォルトの名無しさん
2023/03/14(火) 16:27:54.12ID:gMQMDZBf >プロセス間で同じファイルを読んだり書いたりしたい
問題を無闇に複雑にしてると思わないか
問題を無闇に複雑にしてると思わないか
555蟻人間 ◆T6xkBnTXz7B0
2023/03/14(火) 17:01:38.94ID:iLShrRcK クライアント・サーバーモデルで、
サーバーだけが書き込めるとか言った制約があった方が良いかも知れません。
サーバーだけが書き込めるとか言った制約があった方が良いかも知れません。
556549
2023/03/14(火) 18:23:18.32ID:5+uIhtUh アドバイスありがとうございます。
あるアプリから別のアプリを起動する際、
コマンドラインでは収まらないような長い情報を渡す必要があり、
ファイルに必要な情報を書いてやりとりするようにしています。
(コマンドラインにはそのファイルのパス名を渡している)
なので、ファイルを作成するアプリと、そのファイルを読み込むアプリがあり、
多重起動などのタイミングによってはアクセスがぶつかる可能性があるので、
このファイルに対する同時アクセスを制御したいという質問でした。
ミューテックスとLockFileExとどちらで実装するか、検討させていただきます。
あるアプリから別のアプリを起動する際、
コマンドラインでは収まらないような長い情報を渡す必要があり、
ファイルに必要な情報を書いてやりとりするようにしています。
(コマンドラインにはそのファイルのパス名を渡している)
なので、ファイルを作成するアプリと、そのファイルを読み込むアプリがあり、
多重起動などのタイミングによってはアクセスがぶつかる可能性があるので、
このファイルに対する同時アクセスを制御したいという質問でした。
ミューテックスとLockFileExとどちらで実装するか、検討させていただきます。
557デフォルトの名無しさん
2023/03/14(火) 18:25:17.73ID:xPBygAZk558デフォルトの名無しさん
2023/03/14(火) 19:27:43.09ID:LjCdhfB4 >>556
パイプを使えばええんちゃうかな?
パイプを使えばええんちゃうかな?
559デフォルトの名無しさん
2023/03/14(火) 19:36:39.98ID:1SjvDtDO560デフォルトの名無しさん
2023/03/14(火) 19:54:35.88ID:5+uIhtUh >>559
それもやってみたのですが、多重起動などのタイミングによっては、
どうやっても、読み込まれずに放置されるゴミファイルができてしまいます。
テンポラリフォルダなんて気にしなければよいといえばよいのですが。
それもやってみたのですが、多重起動などのタイミングによっては、
どうやっても、読み込まれずに放置されるゴミファイルができてしまいます。
テンポラリフォルダなんて気にしなければよいといえばよいのですが。
561デフォルトの名無しさん
2023/03/14(火) 21:32:45.60ID:M7rmtaeA Tempなんか使わずとも末尾PIDの名前でファイルなりを作れば重複起動その時においては名前は被らないし
引数の受け渡しとか程度の話ならオープン失敗したら数秒待って開き直せばいつか開けるだろ
書いてる間はどうせ読めても無意味なんだし
引数の受け渡しとか程度の話ならオープン失敗したら数秒待って開き直せばいつか開けるだろ
書いてる間はどうせ読めても無意味なんだし
562デフォルトの名無しさん
2023/03/14(火) 22:38:01.69ID:rESGMqzG WM_COPYDATAとかメモリマップドファイルとか
563デフォルトの名無しさん
2023/03/14(火) 23:24:45.28ID:u95pjcpT564デフォルトの名無しさん
2023/03/15(水) 00:41:23.71ID:q5LCzWGQ >>560
いや、ゴミファイルが出来る事があり得ないけどね…
その多重起動というのがどういうものか知らんけど、GetTempFileNameで上手く行かないのは、プログラムが悪いと断言できる
ま、これで駄目なら何やっても上手く行かないだろうね
いや、ゴミファイルが出来る事があり得ないけどね…
その多重起動というのがどういうものか知らんけど、GetTempFileNameで上手く行かないのは、プログラムが悪いと断言できる
ま、これで駄目なら何やっても上手く行かないだろうね
565デフォルトの名無しさん
2023/03/15(水) 00:54:04.79ID:mWvoI7Tn >>548
twitterで流行ってたものを誰かが試した結果を見て気付いた。
twitterで流行ってたものを誰かが試した結果を見て気付いた。
566デフォルトの名無しさん
2023/03/15(水) 01:02:47.82ID:fvrt0a3X >>565
それで遊んでみようと思ったのだけど何を使用していたのかわからないなら遊べないな残念
それで遊んでみようと思ったのだけど何を使用していたのかわからないなら遊べないな残念
567デフォルトの名無しさん
2023/03/23(木) 01:09:16.30ID:Ao+X9Xng568デフォルトの名無しさん
2023/03/23(木) 06:12:16.80ID:5IP8ya+9 Ruby では普通、外部コマンド・子プロセスの終了を待つから、実行順序は書いた順。
Process.#wait
一方、Kernel.#spawn は、終了を待たない。起動しっ放し
IO にはパイプ、ブロッキング/ノンブロッキング、同期/非同期もある
Process.#wait
一方、Kernel.#spawn は、終了を待たない。起動しっ放し
IO にはパイプ、ブロッキング/ノンブロッキング、同期/非同期もある
569デフォルトの名無しさん
2023/03/23(木) 07:28:24.76ID:auHr228t >>567
うそおっしゃい
うそおっしゃい
570デフォルトの名無しさん
2023/03/23(木) 08:33:51.91ID:ffpb/acK571デフォルトの名無しさん
2023/03/23(木) 11:05:08.93ID:AQHpwrnP572デフォルトの名無しさん
2023/03/23(木) 11:15:29.65ID:jVJKu0vi >>567
お前MFC知らんだろ
お前MFC知らんだろ
573デフォルトの名無しさん
2023/03/23(木) 23:45:58.18ID:9ub38u60 久々に清々しい嘘を見た
574デフォルトの名無しさん
2023/03/24(金) 01:24:11.23ID:gu0zjHdj インストーラーの無い野良EXEのAUMID(Application User Model ID)をOSに登録する方法教えてください
575デフォルトの名無しさん
2023/04/03(月) 14:17:49.75ID:ZOqVhNfC576デフォルトの名無しさん
2023/04/03(月) 14:20:45.40ID:ZOqVhNfC577デフォルトの名無しさん
2023/04/03(月) 14:34:38.52ID:ZOqVhNfC >>571
どうでもいいけど、マイクロソフト内でC言語とC++の混在そのものに悩んでいたのも知らないようだな
マイクロソフトはC言語派、C++派、Windowsを普及させるためにVB流用派と、試行錯誤を繰り返していた時代にMFCが誕生したと思っているなら、時期がずれていてリアルタイムでは知らなかったと言っているようなもの
どうでもいいけど、マイクロソフト内でC言語とC++の混在そのものに悩んでいたのも知らないようだな
マイクロソフトはC言語派、C++派、Windowsを普及させるためにVB流用派と、試行錯誤を繰り返していた時代にMFCが誕生したと思っているなら、時期がずれていてリアルタイムでは知らなかったと言っているようなもの
578デフォルトの名無しさん
2023/04/03(月) 15:01:56.44ID:amgtJnTb MS-DOS の頃ってMSのコンパイラは統合環境だった?
C++ どころか Cコンパイラで コマンドライン上から nmake 叩いてわ
C++ どころか Cコンパイラで コマンドライン上から nmake 叩いてわ
579デフォルトの名無しさん
2023/04/03(月) 15:07:52.75ID:lsCbs8KW B:\>msc hello.c
580デフォルトの名無しさん
2023/04/03(月) 15:10:57.50ID:ZOqVhNfC ウィキペディアの説明が、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とセットだと認識できない点は理解できる。
まあ、ウィキペディアの記事は、根拠不明の創作が多いとわかってないとだまされるよな。
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とセットだと認識できない点は理解できる。
まあ、ウィキペディアの記事は、根拠不明の創作が多いとわかってないとだまされるよな。
581デフォルトの名無しさん
2023/04/03(月) 15:18:50.66ID:lsCbs8KW Win32がオブジェクト指向ではないって?
ハンドルを使う関数(つまり大半)はオブジェクト指向だと思うが
もしかしてオブジェクト指向とはC++やSmalltalkを使うことだと思ってるのか?
ハンドルを使う関数(つまり大半)はオブジェクト指向だと思うが
もしかしてオブジェクト指向とはC++やSmalltalkを使うことだと思ってるのか?
582デフォルトの名無しさん
2023/04/03(月) 15:19:55.66ID:ZOqVhNfC >>578
統合開発環境と何の関係があるのか?
Windows 95アプリケーションでも、統合開発環境は必須ではない。
画面のデザインのときだけ利用するという使い方が多かった。
Direct Xが普通に使われるようになってからは、統合開発環境は画面ごと吹っ飛ぶので、統合開発環境そのものも動かないこともあるし、統合開発環境を自分が作ったもので壊すことがあるから、Windows 95、98系では、Visual製品に期待しても、Visual統合開発環境とWindows OSのポンコツコンボは、いま思っているより意味をなしていなかったんだよ。
統合開発環境と何の関係があるのか?
Windows 95アプリケーションでも、統合開発環境は必須ではない。
画面のデザインのときだけ利用するという使い方が多かった。
Direct Xが普通に使われるようになってからは、統合開発環境は画面ごと吹っ飛ぶので、統合開発環境そのものも動かないこともあるし、統合開発環境を自分が作ったもので壊すことがあるから、Windows 95、98系では、Visual製品に期待しても、Visual統合開発環境とWindows OSのポンコツコンボは、いま思っているより意味をなしていなかったんだよ。
583デフォルトの名無しさん
2023/04/03(月) 15:25:54.31ID:amgtJnTb584デフォルトの名無しさん
2023/04/03(月) 15:26:39.12ID:p7oapVPk585デフォルトの名無しさん
2023/04/03(月) 15:28:25.60ID:ZOqVhNfC >>581
オブジェクト指向設計ではなかったんだよ。
C言語とC++は書き方が少し異なるだけだったので、Windows SDKではC++で書くとオブジェクト指向っぽくなり、C言語で書くとこれでいいのかという書き方で、Windows 95のアプリケーションが作れた。
ここはWindows SDKがオブジェクト指向ではないという理由がある。
APIそのものはオブジェクト指向ではなかったので、オブジェクト指向にするにはMFCを挟むという変なことをすることをしていた人間もいる。
たった数年で変わった話なので、過渡期を知らないと誤解が生じるのはわかる。
オブジェクト指向設計ではなかったんだよ。
C言語とC++は書き方が少し異なるだけだったので、Windows SDKではC++で書くとオブジェクト指向っぽくなり、C言語で書くとこれでいいのかという書き方で、Windows 95のアプリケーションが作れた。
ここはWindows SDKがオブジェクト指向ではないという理由がある。
APIそのものはオブジェクト指向ではなかったので、オブジェクト指向にするにはMFCを挟むという変なことをすることをしていた人間もいる。
たった数年で変わった話なので、過渡期を知らないと誤解が生じるのはわかる。
586デフォルトの名無しさん
2023/04/03(月) 15:37:01.22ID:lsCbs8KW >>584
GetObject()なんか多相そのものやん
GetObject()なんか多相そのものやん
587デフォルトの名無しさん
2023/04/03(月) 15:39:17.90ID:lsCbs8KW すまん関数名間違えた
SelectObject()だ
GetObject()はオブジェクト指向と手続き型の切り替えだね
SelectObject()だ
GetObject()はオブジェクト指向と手続き型の切り替えだね
588デフォルトの名無しさん
2023/04/03(月) 15:56:54.48ID:ORXHufFt Win32APIの基本構造そのものがイベントドリブンのメッセージ駆動なのでオブジェクト指向を土台にしている
Windowsのマルチタスクはオブジェクト指向で成り立っているだろ
Windowsのマルチタスクはオブジェクト指向で成り立っているだろ
589デフォルトの名無しさん
2023/04/03(月) 16:40:18.30ID:lsCbs8KW そうそう
ウインドウプロシージャのcaseなんか典型的だな
ウインドウプロシージャのcaseなんか典型的だな
590デフォルトの名無しさん
2023/04/03(月) 16:48:57.33ID:WoF7SnyS591デフォルトの名無しさん
2023/04/03(月) 16:51:01.36ID:WoF7SnyS592デフォルトの名無しさん
2023/04/03(月) 16:53:48.85ID:WoF7SnyS >>580
おまいは Windows 3.1 の知識が抜け落ちておるな
おまいは Windows 3.1 の知識が抜け落ちておるな
593デフォルトの名無しさん
2023/04/03(月) 16:57:17.99ID:WoF7SnyS >>584
しね
しね
594デフォルトの名無しさん
2023/04/03(月) 16:58:53.51ID:WoF7SnyS >>585
むしろ Win(32以前も)API / Win32API がオブジェクト指向で
MFC の方がオブジェクト指向出来ていなかったんだよ
だから判ってる香具師はみんな MFC は使わなかった
使ってたのは馬鹿だけ
むしろ Win(32以前も)API / Win32API がオブジェクト指向で
MFC の方がオブジェクト指向出来ていなかったんだよ
だから判ってる香具師はみんな MFC は使わなかった
使ってたのは馬鹿だけ
595デフォルトの名無しさん
2023/04/03(月) 17:23:19.13ID:aHgelLEB596デフォルトの名無しさん
2023/04/03(月) 18:20:11.47ID:6F7Nd+C2 MFCとかけて、C++と解きます
その心は、オブジェクト指向ではあるけど、なりきれていない
これでどうでっしゃろ
その心は、オブジェクト指向ではあるけど、なりきれていない
これでどうでっしゃろ
597デフォルトの名無しさん
2023/04/03(月) 18:32:53.99ID:hrmFy8ir MFCには良い思い出が無いのである
598デフォルトの名無しさん
2023/04/03(月) 21:17:54.58ID:NUuZ0KjY >>580
すげぇ、「ゲームの歴史」?
すげぇ、「ゲームの歴史」?
599デフォルトの名無しさん
2023/04/03(月) 21:57:09.76ID:pspdaLIR GUIの無い単純なアプリならまだしも、それなりのGUIを持つアプリは
MFCを使ったほうが楽にアプリを作れるし、出来たコードも読み易い
確かに最初はMFCは取っ付き難いから、そこで挫折した人が
>>590-594みたいな事を言い出すんだろうなあ
MFCを使ったほうが楽にアプリを作れるし、出来たコードも読み易い
確かに最初はMFCは取っ付き難いから、そこで挫折した人が
>>590-594みたいな事を言い出すんだろうなあ
600デフォルトの名無しさん
2023/04/03(月) 23:21:42.85ID:6c3bFFXO >>599
そんなことは無いと思うが
Win32APIをちゃんと知っていればMFCなんて使う理由が全く無いし
MFC関連のDLL何かも入れないといけないし単に開発効率がおちるだけ
実際当時Windowsアプリの仕事を結構やったけどMFCを採用していた所は少なかった
たまたまそういう場所ばかり行ってた可能性はあるがMFC何て使うなよって当時から思ってたよw
そんなことは無いと思うが
Win32APIをちゃんと知っていればMFCなんて使う理由が全く無いし
MFC関連のDLL何かも入れないといけないし単に開発効率がおちるだけ
実際当時Windowsアプリの仕事を結構やったけどMFCを採用していた所は少なかった
たまたまそういう場所ばかり行ってた可能性はあるがMFC何て使うなよって当時から思ってたよw
601デフォルトの名無しさん
2023/04/03(月) 23:43:57.61ID:hWVK11qf でも世の中的に勝利したのはMFCだよね
俺もATL/WTLでいいじゃんとは思ったけど
でかいライブラリも整備されてりゃそれなりに便利だからね仕方ないね
>>578
PersonalWorkBenchってのでFortranやったような気がするんだが
今ググっても全然出てこないな
俺もATL/WTLでいいじゃんとは思ったけど
でかいライブラリも整備されてりゃそれなりに便利だからね仕方ないね
>>578
PersonalWorkBenchってのでFortranやったような気がするんだが
今ググっても全然出てこないな
602デフォルトの名無しさん
2023/04/04(火) 00:40:08.89ID:3PHQjkjE VB→.NET の流れがGUI開発の勝ち組というなら分からなくもないが
MFCは・・・
MFCは・・・
603デフォルトの名無しさん
2023/04/04(火) 06:32:29.81ID:sHU2LbpJ604デフォルトの名無しさん
2023/04/04(火) 07:27:41.42ID:w5B314gc DLL hell, OCX hell とかVB案件の負の遺産なんじゃなかろうか
605デフォルトの名無しさん
2023/04/04(火) 07:35:33.06ID:GxsMOWHT >>600
>MFC関連のDLL何かも入れないといけないし単に開発効率がおちるだけ
昔Win32+CだけでDLLの追加が要らないよう頑張ってみたこともあるけど辛かったね。
C++の機能使ってしまうと結局CランタイムDLLが必要になるし。
>MFC関連のDLL何かも入れないといけないし単に開発効率がおちるだけ
昔Win32+CだけでDLLの追加が要らないよう頑張ってみたこともあるけど辛かったね。
C++の機能使ってしまうと結局CランタイムDLLが必要になるし。
606デフォルトの名無しさん
2023/04/04(火) 10:14:15.35ID:OZYsYc62 >>601
だよな
8086しかりwindowsしかりMFCしかり
技術的に劣っていてもデファクトになると
好むと好まざるに依らずそれ関係の仕事が来る
元々BSD使いだった俺がwindowsに転向したのもメシのため
だよな
8086しかりwindowsしかりMFCしかり
技術的に劣っていてもデファクトになると
好むと好まざるに依らずそれ関係の仕事が来る
元々BSD使いだった俺がwindowsに転向したのもメシのため
607デフォルトの名無しさん
2023/04/04(火) 11:34:31.40ID:7A3Dl4jZ DLL便利じゃん
プラグインで機能後付けもこれのおかげだし
プラグインで機能後付けもこれのおかげだし
608デフォルトの名無しさん
2023/04/05(水) 08:56:03.63ID:PNvz4EJs >>603
BtoCよりBtoBの方が物は多いと思うが
BtoCよりBtoBの方が物は多いと思うが
609デフォルトの名無しさん
2023/04/05(水) 10:12:22.16ID:xBlgsSX7 金融界隈では未だにVB6が現役だし
MSにしては大成果だったと言える
MSにしては大成果だったと言える
610デフォルトの名無しさん
2023/04/05(水) 15:23:21.24ID:MSpbiXL9 ANAのシステムもミズポと同じ所が造ったんかねぇ
611デフォルトの名無しさん
2023/04/05(水) 20:05:04.25ID:WIXvpPAe C++/WinRTを使ってあげて…
612デフォルトの名無しさん
2023/04/18(火) 08:15:18.90ID:F395+kgU 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 でのサポートをより正確に反映しています)。
https://learn.microsoft.com/ja-jp/windows/win32/apiindex/windows-api-list
Windows API を使用すると、各バージョンに固有の機能を利用しながら、すべてのバージョンの Windows で正常に実行されるアプリケーションを開発できます。
(これは以前は Win32 API と呼ばれていたことに注意してください。
Windows API という名前は、16 ビット Windows でのルートと 64 ビット Windows でのサポートをより正確に反映しています)。
613デフォルトの名無しさん
2023/04/18(火) 08:32:02.79ID:hm8pjCa5 日本語たけど日本語じゃないの
614デフォルトの名無しさん
2023/04/26(水) 20:51:37.42ID:A/LukVPn Windows11でPrintDlg使って印刷すると1度目は印刷できるけど
2度目はPrintDlg()呼ぶと反応無しになるのはなんか間違ってるのかな
レジストリ弄ってLegacyなダイアログにしとくと印刷できる、あと管理者権限でプログラム実行して
印刷も勝手にLegacyなダイアログになるので印刷できるんだけど
試しに、VC2022で新規プロジェクトで雛形ちょっと弄って試してもやっぱり
2度目のPrintDlg()呼び出しで無反応になっちゃうんだっけど
debuggerで見てもPrintDlg()呼び出しでエラーも何も出てこなくてわからない
2度目はPrintDlg()呼ぶと反応無しになるのはなんか間違ってるのかな
レジストリ弄ってLegacyなダイアログにしとくと印刷できる、あと管理者権限でプログラム実行して
印刷も勝手にLegacyなダイアログになるので印刷できるんだけど
試しに、VC2022で新規プロジェクトで雛形ちょっと弄って試してもやっぱり
2度目のPrintDlg()呼び出しで無反応になっちゃうんだっけど
debuggerで見てもPrintDlg()呼び出しでエラーも何も出てこなくてわからない
615デフォルトの名無しさん
2023/04/28(金) 08:28:43.45ID:dRuFEUWm 10で平気なら11のバグだな
窓板の11バグ多すぎワロタスレに報告しとけよ
窓板の11バグ多すぎワロタスレに報告しとけよ
616デフォルトの名無しさん
2023/04/28(金) 10:51:05.85ID:pksuSfee 閉じてから印刷
617デフォルトの名無しさん
2023/04/30(日) 17:14:32.74ID:dQsz62eN PrintDlgってcomdlg32.dllだよな
comdlg32.dllはバグで有名なやつじゃないか
comdlg32.dllはバグで有名なやつじゃないか
618蟻人間 ◆T6xkBnTXz7B0
2023/04/30(日) 19:59:15.10ID:Aup++SJD Microsoftの直接的な関係者ではなく、TSF (Text Services Framework)の仕組みを知り尽くしている人を募集中。成功報酬あり。
katayama.hirofumi.mz@gmail.com
katayama.hirofumi.mz@gmail.com
619デフォルトの名無しさん
2023/04/30(日) 20:06:36.85ID:/hwg+Moy Firefoxのにゃるるにコンタクトすれば?
あと成功報酬ではなく労働報酬あるいはコンサルタント報酬であるべきだよ
あと成功報酬ではなく労働報酬あるいはコンサルタント報酬であるべきだよ
620蟻人間 ◆T6xkBnTXz7B0
2023/04/30(日) 21:05:43.46ID:Aup++SJD にゃるるってダレ?
検索しても見つからないよ
検索しても見つからないよ
621デフォルトの名無しさん
2023/04/30(日) 21:19:58.80ID:8kv4t+8E 書き込めなかった、ローマ字で検索して
にゃるる が地球にいたころ
って言うか自分で勉強検索してたら最も頻繁に出てくる
にゃるる が地球にいたころ
って言うか自分で勉強検索してたら最も頻繁に出てくる
622蟻人間 ◆T6xkBnTXz7B0
2023/04/30(日) 21:52:27.43ID:Aup++SJD ありがと
623デフォルトの名無しさん
2023/04/30(日) 21:55:44.21ID:9BNVTRHB 地球にいないのでは無理では?
624デフォルトの名無しさん
2023/04/30(日) 22:05:27.13ID:AaWD86jI 報酬が相場より2桁くらい少なそう。
625デフォルトの名無しさん
2023/05/02(火) 21:18:50.29ID:koHs32mY WaitOnAddressってアドレスの値が比較対象と違う値に変化したら自動的に起きるっていう魔法みたいなものではないんだね
呼んだ瞬間に比較対象と違ったら即返る、同じだったら後ほど変わったとしてもWakeByAddress系で通知しなきゃ起きないっていう原始的なイベントと言うほど変わらない感じか
呼んだ瞬間に比較対象と違ったら即返る、同じだったら後ほど変わったとしてもWakeByAddress系で通知しなきゃ起きないっていう原始的なイベントと言うほど変わらない感じか
626デフォルトの名無しさん
2023/05/03(水) 14:28:28.65ID:wz1HqF7D directoryなら監視してくれるけど
https://www.youtube.com/watch?v=hKLBPXg8oik
呼んだ瞬間に比較対象と違ったら即返る
同じだったら返らない
っていうのを期待してる?
https://www.youtube.com/watch?v=hKLBPXg8oik
呼んだ瞬間に比較対象と違ったら即返る
同じだったら返らない
っていうのを期待してる?
627デフォルトの名無しさん
2023/05/03(水) 20:05:13.46ID:v7V26Uwz >>626
その挙動は既にWaitOnAddressに組み込まれてる訳だけど
対象アドレスの値が変わったら通知とか無しに自動的に戻ることを期待していた
そうじゃなくてマニュアルでWakeByAddress呼ばなきゃいけないからイベントとそこまで変わらんなぁと
まあハンドル作らずに済む点で手軽ではあるけど
その挙動は既にWaitOnAddressに組み込まれてる訳だけど
対象アドレスの値が変わったら通知とか無しに自動的に戻ることを期待していた
そうじゃなくてマニュアルでWakeByAddress呼ばなきゃいけないからイベントとそこまで変わらんなぁと
まあハンドル作らずに済む点で手軽ではあるけど
628デフォルトの名無しさん
2023/05/03(水) 20:45:04.91ID:Kv12u2jn 8で追加されたAPIは頭悪い
OSが頭悪ければAPIも頭悪いという当然の帰着
OSが頭悪ければAPIも頭悪いという当然の帰着
629デフォルトの名無しさん
2023/05/03(水) 21:24:23.86ID:+bgC2i5O APIを使うだけならWin32よりWinRTの方が簡単でしょ
630デフォルトの名無しさん
2023/05/03(水) 21:27:08.93ID:XU1+7Xhm 本当にそうか?
631デフォルトの名無しさん
2023/05/03(水) 21:36:14.09ID:+bgC2i5O >>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;
}
ウィンドウ表示するコードはこれだけ
#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;
}
632デフォルトの名無しさん
2023/05/04(木) 00:16:09.16ID:4Uvo6CUb ラッパー系は手をつけにくいなあ、MFCやOWLの悪夢が蘇る
便利そうに見えて、覚えることが増えるだけだったり
見えざる制約が足枷になったり、バージョン管理が面倒だったりと
やむを得ない場合は仕方ないけど
便利そうに見えて、覚えることが増えるだけだったり
見えざる制約が足枷になったり、バージョン管理が面倒だったりと
やむを得ない場合は仕方ないけど
633デフォルトの名無しさん
2023/05/04(木) 00:34:52.44ID:qlZGMdPb WinRTってMS的にはWin32と同列の扱いだけど、WinRTは内部でWin32を使ってるのだろうか?
634デフォルトの名無しさん
2023/05/04(木) 05:10:21.07ID:P5ZkmciJ COMを焼き直して名前変えただけと言えばいいのか
ただCOMの利点だったIDispatchで適当な言語から扱うみたいな事ができないうんこです
ただCOMの利点だったIDispatchで適当な言語から扱うみたいな事ができないうんこです
635デフォルトの名無しさん
2023/05/04(木) 07:28:00.92ID:Nm4VxhU5 >>632
確かに恐ろしい部分はあるかも
確かに恐ろしい部分はあるかも
636デフォルトの名無しさん
2023/05/04(木) 07:33:59.15ID:Nm4VxhU5 WinRTはC#の情報ばかりでC++の情報が少ないから苦労するかも
その点Win32は情報が多いからいいね
その点Win32は情報が多いからいいね
637デフォルトの名無しさん
2023/05/06(土) 10:58:22.01ID:SadRj80b >>628
WaitOnAddressは利便性目的ではなく手軽さ+パフォーマンスが要点だからそうとも言えない
Thread立ち上げて立ち上げたスレッドがある地点まで到達するまで待ちたいみたいなちょっとしたシーンでは結構便利
パフォーマンス的にもイベント待ちに比べて1000倍近く早かったはず
WaitOnAddressは利便性目的ではなく手軽さ+パフォーマンスが要点だからそうとも言えない
Thread立ち上げて立ち上げたスレッドがある地点まで到達するまで待ちたいみたいなちょっとしたシーンでは結構便利
パフォーマンス的にもイベント待ちに比べて1000倍近く早かったはず
638デフォルトの名無しさん
2023/05/11(木) 18:47:03.56ID:FTM2vWjW Chromeのタイトルバーに「^」の文字を上下反転させたボタンがあって押すとミニウィンドウ的なのが開くのですが、このボタンを実装したいのですがどうしたらできますか?
Chromiumのソースコード見てもどこに該当コードがあるかわかりませんでした
c言語で実装したいです
Chromiumのソースコード見てもどこに該当コードがあるかわかりませんでした
c言語で実装したいです
639デフォルトの名無しさん
2023/05/11(木) 18:55:17.65ID:OsVl9AaP タブを検索ボタンか。ソースをTab Searchで検索すれば出てくるんじゃないの
640デフォルトの名無しさん
2023/05/11(木) 19:52:12.33ID:FTM2vWjW 検索してみました
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++で手軽にタイトルバーにボタンをつけてポップアップウィンドウが開けてそこでボタンなどを選択できるような方法を知っていますか?
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++で手軽にタイトルバーにボタンをつけてポップアップウィンドウが開けてそこでボタンなどを選択できるような方法を知っていますか?
641デフォルトの名無しさん
2023/05/11(木) 20:34:55.74ID:Tud0+/yk 手軽ではないと思うが DwmExtendFrameIntoClientArea を使えばできそう
https://learn.microsoft.com/ja-jp/windows/win32/dwm/customframe
https://learn.microsoft.com/ja-jp/windows/win32/dwm/customframe
642デフォルトの名無しさん
2023/05/16(火) 23:21:04.68ID:bBMeTJtZ LoadLibraryに渡されたlpLibFileName引数をどうにか呼ばれたdllmainから取得する事って出来ないかな
32bitならスタックフレーム遡ってLdrLoadDllを呼んだところの第3引数のスタックのUNICODE_STRINGから手に入れる事に成功したが
64bitだとfastcallになっちゃって第4引数まではレジスタ渡しされるからこの手法も通用しなくて詰んだ
kernel32やntdllのアセンブラ決め打って取得することは出来るだろうけどそこまではしたくない
32bitならスタックフレーム遡ってLdrLoadDllを呼んだところの第3引数のスタックのUNICODE_STRINGから手に入れる事に成功したが
64bitだとfastcallになっちゃって第4引数まではレジスタ渡しされるからこの手法も通用しなくて詰んだ
kernel32やntdllのアセンブラ決め打って取得することは出来るだろうけどそこまではしたくない
643デフォルトの名無しさん
2023/05/16(火) 23:26:32.45ID:bBMeTJtZ ちなみになぜGetModuleFileNameではダメかというとハードリンクやシンボリックリンクのときにある条件下においてlpLibFileNameとGetModuleFileNameで一致しないケースが出てくるため
644デフォルトの名無しさん
2023/05/17(水) 01:27:34.09ID:LUtEOwg/ >>643
その >ある条件下 で
TCHAR PathBuffer[BUFFSIZE];
GetMappedFileName (GetCurrentProcess(), (void *)hModule_DLL, PathBuffer, BUFFSIZE);
で、lpLibFileNameと同じパス(NT形式)が返ってくる?それともエラー?
試してないので結果を教えて
その >ある条件下 で
TCHAR PathBuffer[BUFFSIZE];
GetMappedFileName (GetCurrentProcess(), (void *)hModule_DLL, PathBuffer, BUFFSIZE);
で、lpLibFileNameと同じパス(NT形式)が返ってくる?それともエラー?
試してないので結果を教えて
645デフォルトの名無しさん
2023/05/17(水) 09:18:00.69ID:J+vPZ/2W >>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だった
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だった
646644
2023/05/17(水) 10:25:43.22ID:fHvb3D7j647デフォルトの名無しさん
2023/05/18(木) 10:34:13.93ID:gc1pBp/r pe iat import address table
辺りを弄れば
鶏卵かもしらんけど
辺りを弄れば
鶏卵かもしらんけど
648デフォルトの名無しさん
2023/05/18(木) 12:21:08.02ID:Wn2vmhFl load されたときの名前からパラメータ参照ファイルな .ini ファイルの名を変えたいって感じなのかな?
>>645 のケースだと
C:\link0.dll でロードした場合には C:\link0.ini を参照し
以降 C:\link1.dllをロードした場合には C:\link1.ini を参照したい と
この場合 単に同じ実体でリンクカウントが1増えるだけであっても区別したい ということか
>>645 のケースだと
C:\link0.dll でロードした場合には C:\link0.ini を参照し
以降 C:\link1.dllをロードした場合には C:\link1.ini を参照したい と
この場合 単に同じ実体でリンクカウントが1増えるだけであっても区別したい ということか
649デフォルトの名無しさん
2023/05/18(木) 12:49:23.99ID:gc1pBp/r DLLはメモリに直接ロードする方法もあるから
不正を正したいって意図なら無力だよ
不正を正したいって意図なら無力だよ
650デフォルトの名無しさん
2023/05/18(木) 23:43:11.96ID:qdON7ber 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呼び出し
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呼び出し
651デフォルトの名無しさん
2023/05/19(金) 14:28:26.73ID:FHSnxikS Win32APIのGUIに著作権ってある?
自分用ならまぁ好きにしたらって程度だと思うけど
ボタンとか目コピで丸パクリしてアプリケーションとして配布したらダメなのかな
自分用ならまぁ好きにしたらって程度だと思うけど
ボタンとか目コピで丸パクリしてアプリケーションとして配布したらダメなのかな
652デフォルトの名無しさん
2023/05/19(金) 14:50:21.97ID:D8eITJ2Q 腐ったバナナの皮ですらアートとして認められるからな
許諾なしなら著作持ってる奴次第
許諾なしなら著作持ってる奴次第
653デフォルトの名無しさん
2023/05/19(金) 20:19:56.03ID:c7UfD3kr ReactOSはかなり似てるけどね
アイコンはTangoのを使ってるけど、形的なものはそっくりだな
テーマ機能があるから、訴えられても簡単に変えられるし、大した問題でもないが
アイコンはTangoのを使ってるけど、形的なものはそっくりだな
テーマ機能があるから、訴えられても簡単に変えられるし、大した問題でもないが
654デフォルトの名無しさん
2023/05/19(金) 20:39:13.36ID:OUfVoMDF https://monolith-law.jp/corporate/design-ui-copyright-law
レイアウトや色の使い方ぐらいじゃ侵害にはならないだろうって判断と
あとは「思想又は感情を創作的に表現」したものであるかが関わる
それと著作権法に触れなくても意匠法にに触れる場合はあるとさ
>>651
複雑なデザインのボタンがあってそれを丸コピしたなら危ないけど
WinAPI程度のボタンだと「レイアウトや色の使い方」の範疇に思う
レイアウトや色の使い方ぐらいじゃ侵害にはならないだろうって判断と
あとは「思想又は感情を創作的に表現」したものであるかが関わる
それと著作権法に触れなくても意匠法にに触れる場合はあるとさ
>>651
複雑なデザインのボタンがあってそれを丸コピしたなら危ないけど
WinAPI程度のボタンだと「レイアウトや色の使い方」の範疇に思う
655デフォルトの名無しさん
2023/05/19(金) 20:46:16.58ID:IeFHnOxn656デフォルトの名無しさん
2023/05/19(金) 22:40:34.19ID:9QPyu6+L 悪目立ちしなきゃ大丈夫って感じかな
どうもありがとう
素直に使いこなせれば変なことしなくていいんだけど
どうもありがとう
素直に使いこなせれば変なことしなくていいんだけど
657デフォルトの名無しさん
2023/05/20(土) 13:22:54.16ID:QfLlK72x >>654
Windows自体がMotifのパクリ
Windows自体がMotifのパクリ
658デフォルトの名無しさん
2023/05/20(土) 15:28:47.38ID:GL6RWJiS あの立体的に飛び出たボタンは誰が最初にやったかを少し調べてみたら、やっぱりMotifが最初にやった可能性が高いな
Windowsも旧Mac OSもMotifより前にリリースされてるけど、ボタンは黒い線で縁取られてるだけだからね
Motifがリリースされた1989年の直後、1990年にWindows3.0がリリースされてボタンが立体的になった
ただ、リリース直後のMotifの見た目は確認出来なかった
Windowsも旧Mac OSもMotifより前にリリースされてるけど、ボタンは黒い線で縁取られてるだけだからね
Motifがリリースされた1989年の直後、1990年にWindows3.0がリリースされてボタンが立体的になった
ただ、リリース直後のMotifの見た目は確認出来なかった
659デフォルトの名無しさん
2023/05/21(日) 05:50:22.86ID:wNzdA/GS 誰も突っ込まないけどWin32APIのGUIってなんだよ?
660デフォルトの名無しさん
2023/05/21(日) 09:39:48.68ID:WLjUQB8s GDI32.DLL
つうかWindowsはGUIだろ
つうかWindowsはGUIだろ
661デフォルトの名無しさん
2023/05/21(日) 12:08:47.18ID:+3uTL0QF 面倒なことしなくてもDLLからアイコンロードすればいいんだけどな
662デフォルトの名無しさん
2023/05/21(日) 15:30:11.58ID:4p2tw/ut >>659
CreateWindow()とか知らないの?
CreateWindow()とか知らないの?
663デフォルトの名無しさん
2023/05/21(日) 17:54:29.28ID:BWx6f6vD CreateWindow() のどこがGUIなんだって話なんだけど。
GUIを構成するためのAPIの一つではあるがGUIと言われても違和感しかない。
GUIを構成するためのAPIの一つではあるがGUIと言われても違和感しかない。
664デフォルトの名無しさん
2023/05/21(日) 18:18:37.48ID:Ifo/fxoU 皆行間読んで回答してるんだよ
そういうのを読み取れずにいちいち突っかかってくるお前に違和感しかないわ
そういうのを読み取れずにいちいち突っかかってくるお前に違和感しかないわ
665デフォルトの名無しさん
2023/05/21(日) 20:46:54.79ID:BWx6f6vD 行間が読み取れてないわけでも突っかかったわけでもなくて
気になる人いないの?って問うただけなんだけどね。
気になる人いないの?って問うただけなんだけどね。
666デフォルトの名無しさん
2023/05/21(日) 20:55:29.63ID:hFZuZI8a GUIじゃなくてGUIパーツね
それを指摘してどうすんの?
それを指摘してどうすんの?
667デフォルトの名無しさん
2023/05/21(日) 21:06:29.15ID:WLjUQB8s GUIのデザインパクっていいっすか?だろ?
左上にシステムメニューと閉じるボタン
右上にアイコン化、全画面化がWindows3.1のGUIだ
左上にシステムメニューと閉じるボタン
右上にアイコン化、全画面化がWindows3.1のGUIだ
668デフォルトの名無しさん
2023/05/21(日) 22:29:14.29ID:5ynrmfbS よく読めよ
ボタンのビットマップとかのGUIパーツについて言ってるだろ
GUIのメソッドについてはパクるまでもなくAPI呼び出せば自然にそうなるから
ボタンのビットマップとかのGUIパーツについて言ってるだろ
GUIのメソッドについてはパクるまでもなくAPI呼び出せば自然にそうなるから
669デフォルトの名無しさん
2023/05/22(月) 00:44:58.78ID:Ff1Yirur それwin32api関係なくね?
670デフォルトの名無しさん
2023/05/22(月) 02:26:03.44ID:Zf+cjPeC comctl32もwin32apiだと思う
671デフォルトの名無しさん
2023/05/22(月) 11:33:40.49ID:Omf9ofNg Win32API の話ならム板
Win32API の著作権の話ならマ板
Win32APIのGUI?(ツールのデザイン)? の著作権の話なら著作権板
だろうな
遠すぎる
Win32API の著作権の話ならマ板
Win32APIのGUI?(ツールのデザイン)? の著作権の話なら著作権板
だろうな
遠すぎる
672デフォルトの名無しさん
2023/05/22(月) 22:29:16.30ID:DLlnfzHn うるせー馬鹿
673デフォルトの名無しさん
2023/06/01(木) 18:53:13.24ID:hCiag/wO winsqlite3って勝手に最新版のsqlite3でstdcallにしてコンパイルして上書きしても問題起こらないんかな
674デフォルトの名無しさん
2023/06/06(火) 23:10:55.17ID:VJFPZJIc テキストカーソルインジケーターをアプリに組み込みたいんですが、どこかにサンプルコードないですか?
675デフォルトの名無しさん
2023/06/06(火) 23:42:13.94ID:kMZUPc/s677蟻人間 ◆T6xkBnTXz7B0
2023/06/06(火) 23:50:08.39ID:XV1AZyoR システム標準のキャレットを使うならCreateCarat、ShowCaratなどを使う。
https://learn.microsoft.com/ja-jp/windows/win32/menurc/using-carets
https://learn.microsoft.com/ja-jp/windows/win32/menurc/using-carets
678デフォルトの名無しさん
2023/06/07(水) 13:08:22.78ID:xTW5tL3j >XOR
灰色背景だと見えなくなるから賛同できないわ
灰色背景だと見えなくなるから賛同できないわ
679デフォルトの名無しさん
2023/06/07(水) 13:24:44.47ID:RsLfWKsz 標準のエディットコントロール内に居るキャレットって XOR 描画してるよね
680デフォルトの名無しさん
2023/06/07(水) 15:03:13.28ID:BwWz5oN8 たいていは白色がテキスト入力で灰色は入力不可の部分だからいんじゃない
681デフォルトの名無しさん
2023/06/07(水) 23:21:33.35ID:HdTy5x+f 読み取り専用とかで灰色背景はよくあるけど
682デフォルトの名無しさん
2023/06/08(木) 21:52:05.26ID:xczGeZ8q キャレットもそうだけど、最近なんか範囲選択表示で、半透明の矩形上に重ねるだけのエディタ多くね?
あれ見づらいんだよなぁ・・・フルスクラッチで作るなら確かに横着できて楽なんだろうけど
あれ見づらいんだよなぁ・・・フルスクラッチで作るなら確かに横着できて楽なんだろうけど
683デフォルトの名無しさん
2023/06/08(木) 22:08:34.87ID:asQ3aAAN エディットコントロール自作はやめたほうがいい
IMEが機能してるように見えても、音声入力や音声入力編集、読み上げで制限があるのが大半だから
キャレットもOSの強調表示機能があるし、知らないところで多機能を要求される
IMEが機能してるように見えても、音声入力や音声入力編集、読み上げで制限があるのが大半だから
キャレットもOSの強調表示機能があるし、知らないところで多機能を要求される
684デフォルトの名無しさん
2023/06/09(金) 00:33:21.65ID:HaYoNzhW 自作エディットコントロールわざわざ作るときって巨大ファイル編集したいとかじゃないの
OSが勝手に後付けしたアクセシビリティ機能とか知らんでいいよ
OSが勝手に後付けしたアクセシビリティ機能とか知らんでいいよ
685デフォルトの名無しさん
2023/06/09(金) 06:30:59.27ID:J1Oq+Y/w >>684
縦表示も独自実装、フルスクラッチでないけど
縦書きエディタTATEditorはwxWidgetsカスタムのようだ
https://qiita.com/496_/items/ebfb1e5eefaa9aa8f5bf
https://www.youtube.com/watch?v=_qnk_fNQvCo
縦表示も独自実装、フルスクラッチでないけど
縦書きエディタTATEditorはwxWidgetsカスタムのようだ
https://qiita.com/496_/items/ebfb1e5eefaa9aa8f5bf
https://www.youtube.com/watch?v=_qnk_fNQvCo
686デフォルトの名無しさん
2023/06/09(金) 06:34:59.04ID:J1Oq+Y/w 老舗エディタ(mifes, em)は巨大ファイル対応
これが異彩を放ってる
小さいメモリ(100MB以下)で大規模テキストファイル(5TB以上、2兆5000億行以上)を編集できる世界唯一の超巨大テキストエディター
https://szkwjp.サクラ.ne.jp/
https://i.imgur.com/isKK2x5.png
これが異彩を放ってる
小さいメモリ(100MB以下)で大規模テキストファイル(5TB以上、2兆5000億行以上)を編集できる世界唯一の超巨大テキストエディター
https://szkwjp.サクラ.ne.jp/
https://i.imgur.com/isKK2x5.png
687デフォルトの名無しさん
2023/06/09(金) 06:41:25.43ID:J1Oq+Y/w Meryもdelphi製コントロールをヘビーカスタムしてたと思う
http://www.haijin-boys.com/
http://www.haijin-boys.com/
688デフォルトの名無しさん
2023/06/09(金) 06:44:24.60ID:J1Oq+Y/w689デフォルトの名無しさん
2023/06/09(金) 06:46:39.63ID:J1Oq+Y/w アクセシビリティ機能が要らない前提なら沢山あるね
690デフォルトの名無しさん
2023/06/09(金) 21:43:38.94ID:KphHYdc7 >>686
emEditor世話になっているけど意外に保存遅いんだな
まぁ頻繁に保存するような用途じゃないんだけど
そういや日本語フォント最速表示って今なんなんだろう、DirectWrite?
アルファベットなら予めテクスチャに全部落とせばいいんだろうけど
emEditor世話になっているけど意外に保存遅いんだな
まぁ頻繁に保存するような用途じゃないんだけど
そういや日本語フォント最速表示って今なんなんだろう、DirectWrite?
アルファベットなら予めテクスチャに全部落とせばいいんだろうけど
691デフォルトの名無しさん
2023/06/09(金) 22:38:21.40ID:9anYwuVY >>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の方がキレイ
一度気が付くと気になって仕方ない
>>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の方がキレイ
一度気が付くと気になって仕方ない
692デフォルトの名無しさん
2023/06/10(土) 16:44:39.28ID:Yvl44ooC 昔はメモ帳やらエディットボックスが32KBだかしか開けなかったせいでちょっと長いテキスト表示したいなら自作するしかなかったし
今のエディットボックスも使いやすいというわけでもないし
今のエディットボックスも使いやすいというわけでもないし
693デフォルトの名無しさん
2023/06/10(土) 20:18:04.21ID:mnSa2udb 完全自作で良いの見つからないけどね
694デフォルトの名無しさん
2023/06/13(火) 09:51:52.60ID:meEyuUg2 禿丸
695デフォルトの名無しさん
2023/06/13(火) 10:08:02.73ID:sYfPkaoR 秀丸は1995年から今までずっと使ってる
696デフォルトの名無しさん
2023/06/13(火) 11:00:54.79ID:M8hmmq2x 4000yen
697デフォルトの名無しさん
2023/06/13(火) 16:26:23.21ID:u7AmJNUj698デフォルトの名無しさん
2023/06/14(水) 08:13:22.34ID:EjsNogN3 高校生の頃からHTML直打ち自前サイト始めたから、秀丸にはお世話になったわw
699デフォルトの名無しさん
2023/06/14(水) 23:13:37.25ID:8tGzhu5T700デフォルトの名無しさん
2023/06/19(月) 14:24:30.00ID:x2sgiUfE FindWindowで他プロセスの生存確認を行っているのですが、その該当プロセスが死んではないものの
応答無しレベルで重い場合にFindWindowがNULLを返すことはあるのでしょうか?
ここでは他プロセスのトップウィンドウを検索しています。
該当プロセスが本当に死んでるなら当然でしょうが、それ以外でNULLを返す可能性があるならば
対策をしようと思いつつも、そんな可能性がないなら無駄なのでご存じの方よろしくお願いいたします。
さっとググった感じでは、他プロセスの子ウィンドウを検索する場合は問題ありのような感じですが、
本件はそうではないですしほとんどの場合NULLではなく正常にウィンドウハンドルを返してくれています。
応答無しレベルで重い場合にFindWindowがNULLを返すことはあるのでしょうか?
ここでは他プロセスのトップウィンドウを検索しています。
該当プロセスが本当に死んでるなら当然でしょうが、それ以外でNULLを返す可能性があるならば
対策をしようと思いつつも、そんな可能性がないなら無駄なのでご存じの方よろしくお願いいたします。
さっとググった感じでは、他プロセスの子ウィンドウを検索する場合は問題ありのような感じですが、
本件はそうではないですしほとんどの場合NULLではなく正常にウィンドウハンドルを返してくれています。
701デフォルトの名無しさん
2023/06/19(月) 14:41:26.20ID:wsVmiElF 詳細なエラー情報を得るには、GetLastError を呼び出します。
702デフォルトの名無しさん
2023/06/19(月) 15:24:58.51ID:2pPxjP0B 他プロセスの生存確認はEnumProcesses()でやるべきなのでは
703デフォルトの名無しさん
2023/06/19(月) 16:12:12.17ID:x2sgiUfE704デフォルトの名無しさん
2023/06/20(火) 13:30:15.15ID:Dvlv0UV+ FindWindowで見つからないならHWNDも取れないんだし居ない者でいんじゃね
つかそこ悩むことじゃなくね
つかそこ悩むことじゃなくね
705デフォルトの名無しさん
2023/06/20(火) 14:36:54.12ID:AYb44acK >>700,703
ちなみにそのアーキテクチャはいつの設計なん?
ちなみにそのアーキテクチャはいつの設計なん?
706デフォルトの名無しさん
2023/06/20(火) 16:49:06.07ID:Dvlv0UV+ まずプロセス間通信するなら相手が居ない場合を必ず想定すべきでFindWindowの1度の呼び出しで一喜一憂すべきではない
プロセスの起動し直しも前提に数秒おきのFindWindow呼び出しポーリングはしたっていいと思うよ
メインウィンドウなんて高々数十個だしそんな負荷にならない
プロセスの起動し直しも前提に数秒おきのFindWindow呼び出しポーリングはしたっていいと思うよ
メインウィンドウなんて高々数十個だしそんな負荷にならない
707デフォルトの名無しさん
2023/06/20(火) 20:40:34.74ID:1lEw2nNB 該当プロセスを他プロセスから起動してたりするとどうなんだろ
あとFindWindowじゃなくてEnumWindowsなら拾えないことって無い印象だなぁ、ハンドルも取れるし
あまり関係ないけど、うちのクソシステムだとブラウザからサーバー上にあるエクセル開くんだけど、
Workbooksで拾えたり拾えなかったりするのよね(ExcelVBA)
あとFindWindowじゃなくてEnumWindowsなら拾えないことって無い印象だなぁ、ハンドルも取れるし
あまり関係ないけど、うちのクソシステムだとブラウザからサーバー上にあるエクセル開くんだけど、
Workbooksで拾えたり拾えなかったりするのよね(ExcelVBA)
708デフォルトの名無しさん
2023/06/21(水) 03:06:59.92ID:xVHig5c/709デフォルトの名無しさん
2023/06/21(水) 08:17:17.70ID:HzwHqkRi mutex の排他って CreateWindow する前 & メッセージループする前だから
プロセスは存在してるけど、window は無いって 中間的な状態じゃね?
プロセスは存在してるけど、window は無いって 中間的な状態じゃね?
710デフォルトの名無しさん
2023/06/21(水) 15:51:17.25ID:3v7xwtLO 100円か
711デフォルトの名無しさん
2023/06/21(水) 16:38:24.82ID:cZp0PZIW 999円かもしれないじゃないか
712デフォルトの名無しさん
2023/06/22(木) 17:55:22.58ID:Sn58Ngpo >>701
詳細なエラー情報を得るには、関数を呼び出します。
詳細なエラー情報を得るには、関数を呼び出します。
713デフォルトの名無しさん
2023/06/27(火) 10:23:32.50ID:SIPPfbqI >>710-711
お前らその金額でおいしいの?仕事してくんない?
お前らその金額でおいしいの?仕事してくんない?
714デフォルトの名無しさん
2023/07/14(金) 05:28:13.99ID:+33O6idh スクリーンセーバー作ろうぜ
715デフォルトの名無しさん
2023/07/23(日) 16:38:12.26ID:eEbrANA6 POSIXのopenatとかをWindowsで実装したいんだけど、
NtCreateFileを使えとは見るんだけど、
実際のコードは見たなことない。
gnulibから実装した方がいいのかな?
NtCreateFileを使えとは見るんだけど、
実際のコードは見たなことない。
gnulibから実装した方がいいのかな?
716デフォルトの名無しさん
2023/07/24(月) 12:54:52.49ID:IGsOjAN4 不特定多数に文字だけで意思疎通するには答えやすい尋ね方というのがあると思うが、そんなことよりスクリーンセーバー作ろうぜ
717蟻人間 ◆T6xkBnTXz7B0
2023/07/24(月) 13:10:56.94ID:72ajrVnV718デフォルトの名無しさん
2023/08/04(金) 11:13:07.90ID:2Yu2Iz7N 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
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
719デフォルトの名無しさん
2023/08/05(土) 03:35:25.87ID:ZYr7i0H2 旧版MS-IMEじゃないとダメなんじゃないっけ?知らんけど
720デフォルトの名無しさん
2023/08/05(土) 09:34:20.67ID:wvUeqD5z 心配無用
Win11でなら上手く動かなくても許される
Win11でなら上手く動かなくても許される
721デフォルトの名無しさん
2023/08/14(月) 19:56:12.96ID:53r0CZc5 y=f(x)のグラフを描こうとした場合、GDIのLineTo()で書けますが
グラフとx軸の間の領域を背景とは異なる色で描画しているアプリを
見かけることがあります。
ベタにやろうとすると(x,0)から(x,f(x))までを別のペンでLineToすれば
できそうですが、それだとあまりにも遅そうなんでどのようにするのが
一般的なんでしょうか?
グラフとx軸の間の領域を背景とは異なる色で描画しているアプリを
見かけることがあります。
ベタにやろうとすると(x,0)から(x,f(x))までを別のペンでLineToすれば
できそうですが、それだとあまりにも遅そうなんでどのようにするのが
一般的なんでしょうか?
722デフォルトの名無しさん
2023/08/14(月) 19:58:40.11ID:KSpEuPpD polygon
723デフォルトの名無しさん
2023/08/14(月) 23:17:07.87ID:Vf3oM49A724デフォルトの名無しさん
2023/08/14(月) 23:53:10.89ID:hsUNKBWX (分かりやすく)グラフが丁度収まる矩形サイズの描画メモリをCreateDIBSectionとかで確保して
掛け算や条件文をなるべく使わずに、直接メモリを塗りたい色で書き換えて、
最後にその描画メモリをバックバッファへ転送する、とか
掛け算や条件文をなるべく使わずに、直接メモリを塗りたい色で書き換えて、
最後にその描画メモリをバックバッファへ転送する、とか
725デフォルトの名無しさん
2023/08/15(火) 08:10:50.28ID:eu+UdA0l PathTo
726デフォルトの名無しさん
2023/08/15(火) 10:10:52.28ID:whQn6DUa データ左端,Y軸下端 to データ左端,Y値 to データX値,Y値 to
... to データ右端,Y値 to データ右端,Y軸下端 (to データ左端,Y軸下端)
... to データ右端,Y値 to データ右端,Y軸下端 (to データ左端,Y軸下端)
727デフォルトの名無しさん
2023/08/15(火) 11:35:30.53ID:r8gJDQt/728デフォルトの名無しさん
2023/08/15(火) 11:44:42.91ID:5h6JYYPu 自分で線描画してメモリDCでダブルバッファするか
既製のチャートコントロールを使う
jもしくはavascriptにグラフ描画のは沢山あるからそ!をwebview2か何かで表示する
既製のチャートコントロールを使う
jもしくはavascriptにグラフ描画のは沢山あるからそ!をwebview2か何かで表示する
729デフォルトの名無しさん
2023/08/15(火) 12:32:58.41ID:32B9AzF9 いや、GDI+かDirect2Dを使えばいいんだよ
730デフォルトの名無しさん
2023/08/16(水) 10:30:08.97ID:tgyEZLGb >jもしくはavascript
斬新ですね
斬新ですね
731デフォルトの名無しさん
2023/09/23(土) 00:28:12.62ID:aQUNS12d メール関係のライブラリを知っていたら教えてください。
Windowsで使えるライブラリってないのでしょうか。
Windowsで使えるライブラリってないのでしょうか。
732デフォルトの名無しさん
2023/09/23(土) 04:00:25.45ID:kn75UD+k まああるかないかで答えればあるんだけどさ
メール関係って言われても色んな技術の集合だしなあ
その質問をこのスレで聞いちまう所がまずセンスないよね
メール関係って言われても色んな技術の集合だしなあ
その質問をこのスレで聞いちまう所がまずセンスないよね
733デフォルトの名無しさん
2023/09/23(土) 09:47:18.93ID:i9fpyxKg mapi
734デフォルトの名無しさん
2023/09/23(土) 14:43:48.51ID:60UGXAh5 送受信はたいしたことないけど
お行儀悪いのを忖度して可視化するのがとても大変
お行儀悪いのを忖度して可視化するのがとても大変
735デフォルトの名無しさん
2023/09/23(土) 18:43:45.24ID:lGebHJu0 HELO
736デフォルトの名無しさん
2023/09/23(土) 23:00:13.46ID:9Qe717YS USER
PASS
PASS
737デフォルトの名無しさん
2023/09/24(日) 09:35:27.98ID:2YTVyUlC EHLO
738デフォルトの名無しさん
2023/09/24(日) 19:41:47.04ID:iqjAJ+9f RFC821
739デフォルトの名無しさん
2023/09/25(月) 13:09:43.15ID:RmxLVxNP ERO
740デフォルトの名無しさん
2023/09/26(火) 13:29:13.68ID:6+Zop4bX GetTempPathで取得できるフォルダ(AppData\Local\Temp)の中を見ると、
固定名と思われるサブフォルダを作っているアプリが結構あるのですが、
こういうアプリって、その固定名のサブフォルダが他のアプリと競合したり、
同じ名前のファイルがすでに存在していてサブフォルダを作るのに失敗したりするケースは、
ちゃんと想定しているものなんですか?
固定名と思われるサブフォルダを作っているアプリが結構あるのですが、
こういうアプリって、その固定名のサブフォルダが他のアプリと競合したり、
同じ名前のファイルがすでに存在していてサブフォルダを作るのに失敗したりするケースは、
ちゃんと想定しているものなんですか?
741デフォルトの名無しさん
2023/09/26(火) 14:42:44.03ID:QCQROq06 作り手次第だよ
ちょっと考えれば判るよね
ちょっと考えれば判るよね
742デフォルトの名無しさん
2023/09/26(火) 16:13:27.26ID:6+Zop4bX743デフォルトの名無しさん
2023/09/26(火) 16:59:03.55ID:mqYR7ljA 同名のファイルが存在してサブフォルダが作れずに阻害された後
どうなるかも作り手次第だろうね
名前を変えて悪あがきするか、エラー報告して終わるか、だんまりするか・・・
どうなるかも作り手次第だろうね
名前を変えて悪あがきするか、エラー報告して終わるか、だんまりするか・・・
744デフォルトの名無しさん
2023/09/26(火) 19:44:54.79ID:a3/CUfz+ 単なるファイルのコピーすら気を付けても穴だらけだしな
その時点の知識で最良を目指すしかない
その時点の知識で最良を目指すしかない
745デフォルトの名無しさん
2023/09/27(水) 02:22:24.50ID:5xG4BOfj >>740
そもそもTempは一時的なフォルダでしょ
本アプリは上書きで使っていくだけだから影響はないでしょ
キャッシュや恒久的に使用するデータをそこに保存している場合は不具合のもとだろうけど
データ検証しない場合はエラー吐いて落ちるだけじゃね?
そもそもTempは一時的なフォルダでしょ
本アプリは上書きで使っていくだけだから影響はないでしょ
キャッシュや恒久的に使用するデータをそこに保存している場合は不具合のもとだろうけど
データ検証しない場合はエラー吐いて落ちるだけじゃね?
746デフォルトの名無しさん
2023/09/27(水) 08:45:50.87ID:KtsI0JaQ Tempフォルダの中身は削除されても文句言えない物だから
なんなら同名あったら問答無用で削除して自分用作るすらあると思うわ
なんなら同名あったら問答無用で削除して自分用作るすらあると思うわ
747デフォルトの名無しさん
2023/09/27(水) 11:42:51.73ID:OOPn+kCl その通り
既存の同名があって作成者が自分じゃなければ消して新しく同名で造れば良い
既存の同名があって作成者が自分じゃなければ消して新しく同名で造れば良い
748デフォルトの名無しさん
2023/09/27(水) 11:55:22.18ID:rbbJx+dJ749デフォルトの名無しさん
2023/09/27(水) 12:24:30.48ID:JPmaWpsM APIを呼び出した次の瞬間名前が衝突する可能性も考慮するんだぞ
750740
2023/09/27(水) 12:37:44.20ID:jK1ZOC3S みなさんありがとうございます。
>>745-748
テンポラリファイルではなく、固定名のサブフォルダを作るアプリに対する疑問でした。
フォルダ上に同名のファイルがあったら、その名前のサブフォルダは作れないですし。
確かにそれを言い出したら、インストール時も、
Program Filesの中に同名のファイルがあったらどうするんだとか出てきますが。
>>745-748
テンポラリファイルではなく、固定名のサブフォルダを作るアプリに対する疑問でした。
フォルダ上に同名のファイルがあったら、その名前のサブフォルダは作れないですし。
確かにそれを言い出したら、インストール時も、
Program Filesの中に同名のファイルがあったらどうするんだとか出てきますが。
751デフォルトの名無しさん
2023/09/27(水) 14:26:16.30ID:5xG4BOfj >>750
作る前に存在の有無ぐらい確認するでしょ
作る前に存在の有無ぐらい確認するでしょ
752デフォルトの名無しさん
2023/09/27(水) 14:52:35.81ID:KtsI0JaQ それはアプリ作成側がそこまで思いを致すかどうかなんだよ
753デフォルトの名無しさん
2023/09/27(水) 15:25:13.52ID:CB93ywr3 >>750
テンポラリファイルではなく、固定名のサブフォルダを作る場合は
C:\Users\ユーザー名\AppData\Local\会社名
で作るのが一般的では?(暗黙のルール?)
個人で作ってるならアプリ名を元に他と被らないようにするとか
テンポラリファイルではなく、固定名のサブフォルダを作る場合は
C:\Users\ユーザー名\AppData\Local\会社名
で作るのが一般的では?(暗黙のルール?)
個人で作ってるならアプリ名を元に他と被らないようにするとか
754デフォルトの名無しさん
2023/09/27(水) 23:12:54.83ID:zQBl5fyt その為のレジストリなんじゃないのか?
キーは基本的に会社名含めてるから被らないし、ファイルを作成して消耗するより楽だろ
キーは基本的に会社名含めてるから被らないし、ファイルを作成して消耗するより楽だろ
755デフォルトの名無しさん
2023/09/28(木) 06:29:56.08ID:wsjwbbNA テンポラリの作業用にレジストリ使うの?
ファイル造る方が楽
ファイル造る方が楽
756デフォルトの名無しさん
2023/09/28(木) 08:45:42.90ID:fRqICkyk757デフォルトの名無しさん
2023/09/28(木) 09:48:55.62ID:wMng62Lu 知らんわ
あとから出来たほうが対策しろよw
あとから出来たほうが対策しろよw
758デフォルトの名無しさん
2023/09/28(木) 10:00:55.49ID:7+/lnWbq ファイルやディレクトリ造るために社名変更するまである
759デフォルトの名無しさん
2023/09/28(木) 10:03:24.72ID:/0J5x9qx 実際被ってたことってある?
俺はないけど
俺はないけど
760デフォルトの名無しさん
2023/09/28(木) 19:13:55.93ID:0dpaiugf 俺はいまでもかぶってる
761デフォルトの名無しさん
2023/09/28(木) 23:36:06.79ID:HoOgKtnG もげろ
762デフォルトの名無しさん
2023/09/29(金) 08:59:20.90ID:Z2hlTA8C 病院行ってこい
763デフォルトの名無しさん
2023/09/29(金) 09:07:48.85ID:05Kz/f5R 整形外科?泌尿器科?
764デフォルトの名無しさん
2023/09/29(金) 11:10:40.92ID:F8aJXNq9765デフォルトの名無しさん
2023/10/07(土) 15:05:12.07ID:9HknARLB >>750
>確かにそれを言い出したら、インストール時も、
>Program Filesの中に同名のファイルがあったらどうするんだとか出てきますが。
Windows Installerは排他実行だった気がする。
>確かにそれを言い出したら、インストール時も、
>Program Filesの中に同名のファイルがあったらどうするんだとか出てきますが。
Windows Installerは排他実行だった気がする。
766デフォルトの名無しさん
2023/10/07(土) 15:05:22.61ID:9HknARLB >>750
>確かにそれを言い出したら、インストール時も、
>Program Filesの中に同名のファイルがあったらどうするんだとか出てきますが。
Windows Installerは排他実行だった気がする。
>確かにそれを言い出したら、インストール時も、
>Program Filesの中に同名のファイルがあったらどうするんだとか出てきますが。
Windows Installerは排他実行だった気がする。
767デフォルトの名無しさん
2023/10/09(月) 03:22:17.67ID:vj98VpKw >>764
グロ
グロ
768デフォルトの名無しさん
2023/10/09(月) 08:17:21.60ID:2tIVtmSa リソースの作成は、片山さんのを使っているのですか?
769デフォルトの名無しさん
2023/11/27(月) 15:12:37.06ID:hjluQqqG はい
770デフォルトの名無しさん
2023/12/05(火) 09:32:43.89ID:wrsiK2xx MoveFileExにはMOVEFILE_WRITE_THROUGHというフラグがあって、
直後にディスクへフラッシュすることができるけど、
これと同じことをCopyFileで行うことはできますか?
直後にディスクへフラッシュすることができるけど、
これと同じことをCopyFileで行うことはできますか?
771デフォルトの名無しさん
2023/12/05(火) 12:40:51.43ID:3zuw4Zf7 >>770
単独では無理そうなので、CopyFile2 をつかうといい。
https://devblogs.microsoft.com/oldnewthing/20221007-00/?p=107261
単独では無理そうなので、CopyFile2 をつかうといい。
https://devblogs.microsoft.com/oldnewthing/20221007-00/?p=107261
772デフォルトの名無しさん
2023/12/05(火) 13:17:40.41ID:wrsiK2xx773デフォルトの名無しさん
2023/12/05(火) 15:56:54.94ID:qi66pVAj >>770,771
どっちもそれだけでは不意の電源断でロバストじゃないのが難しい。
どっちもそれだけでは不意の電源断でロバストじゃないのが難しい。
774デフォルトの名無しさん
2023/12/05(火) 21:13:57.13ID:rxI6O073 タイムスタンプが1970年だかのファイルを仮置きして別名でコピーしたら挿げ替え
電源断が怖いなら挿げ替え部分だけアトミックに作ればいい
電源断が怖いなら挿げ替え部分だけアトミックに作ればいい
775デフォルトの名無しさん
2023/12/05(火) 22:40:24.43ID:82k65TSZ >>774
>電源断が怖いなら挿げ替え部分だけアトミックに作ればいい
この部分は具体的にセオリー的なやり方があるのですか?
挿げ替えで思い当たるReplaceFileはアトミックか分かりませんでした。
>電源断が怖いなら挿げ替え部分だけアトミックに作ればいい
この部分は具体的にセオリー的なやり方があるのですか?
挿げ替えで思い当たるReplaceFileはアトミックか分かりませんでした。
776デフォルトの名無しさん
2023/12/06(水) 11:02:51.03ID:swAla//2 CopyFileではいったんテンポラリファイルにコピーして、
それをMoveFileExで正しいファイル名に変更するとかやれば、
ちゃんと書き込まれる可能性は高くなるんですかね
それをMoveFileExで正しいファイル名に変更するとかやれば、
ちゃんと書き込まれる可能性は高くなるんですかね
777デフォルトの名無しさん
2023/12/06(水) 13:32:02.74ID:MnzvwPfi778デフォルトの名無しさん
2023/12/06(水) 18:36:06.88ID:NNCP5uXb779デフォルトの名無しさん
2023/12/06(水) 18:43:37.11ID:NNCP5uXb780デフォルトの名無しさん
2024/01/02(火) 18:23:35.28ID:fgzxSMPt RtlReAllocateHeap(GetProcessHeap(), 0, lpMem, dwBytes)
これをそこそこの頻度でやってると特定回数目にクラッシュしてしまうんだけどどういうことなのだろうか
よくある戻り値null未チェックとかそういう事ではなく上記関数内で落ちるんだよね
lpMemも間違いなく生きてるメモリなのは確認済みでdwBytesも不自然な値ではない
呼び出し方が悪いのかと思ってmalloc、reallocに変えてみてもやはり同様の場所でクラッシュしてしまう
これをそこそこの頻度でやってると特定回数目にクラッシュしてしまうんだけどどういうことなのだろうか
よくある戻り値null未チェックとかそういう事ではなく上記関数内で落ちるんだよね
lpMemも間違いなく生きてるメモリなのは確認済みでdwBytesも不自然な値ではない
呼び出し方が悪いのかと思ってmalloc、reallocに変えてみてもやはり同様の場所でクラッシュしてしまう
781デフォルトの名無しさん
2024/01/02(火) 21:23:43.76ID:rZ40Y3/a API変えても発生するならAPI関係ない場所のお前のバグじゃん
782デフォルトの名無しさん
2024/01/02(火) 23:51:50.03ID:fgzxSMPt >>781
WindowsのreallocはHeapReAllocのラッパーでHeapReAllocの実態はRtlReAllocateHeapへのリンクに過ぎない訳だが
WindowsのreallocはHeapReAllocのラッパーでHeapReAllocの実態はRtlReAllocateHeapへのリンクに過ぎない訳だが
783デフォルトの名無しさん
2024/01/03(水) 00:50:32.19ID:+N5csyKn mallocやreallocもまともに使えない子はこのスレに来るのはまだ早かったねー
784デフォルトの名無しさん
2024/01/03(水) 01:02:21.99ID:l1Q27XPY 正月ボケを晒すスレ
785デフォルトの名無しさん
2024/01/03(水) 09:46:34.80ID:STDOZzf0 free 済のポインタに対して 再び free したんじゃないの?
786デフォルトの名無しさん
2024/01/03(水) 09:47:05.92ID:STDOZzf0 realloc の頭で free するからね
787デフォルトの名無しさん
2024/01/04(木) 19:03:00.23ID:IQKtoxOL 特定回数でクラッシュするなのがわかってるなら
アドレスがどう変化した時にクラッシュするとかわかりそうなもんだ
アドレスがどう変化した時にクラッシュするとかわかりそうなもんだ
788デフォルトの名無しさん
2024/01/04(木) 22:30:57.77ID:ZPN5xQR2 mallocで大きなメモリを取得して、その領域から切り出すalloc関数などを作って差し替えてデバッグするとか?
組み込み系で良くやるけどね。
組み込み系で良くやるけどね。
789デフォルトの名無しさん
2024/01/04(木) 22:40:26.44ID:L+x9xVwI ボソ HeapAlloc()
790デフォルトの名無しさん
2024/01/04(木) 22:48:53.63ID:IQKtoxOL791デフォルトの名無しさん
2024/01/14(日) 00:10:31.18ID:+DXd3tPu BoundsChecker か PURIFY ですぐ究明できそうな気がするけど
792デフォルトの名無しさん
2024/01/16(火) 14:06:03.29ID:YFpb2YHn メモリのフラグメンテーションで大きい領域がとれないんじゃない?
793デフォルトの名無しさん
2024/01/23(火) 16:49:29.22ID:SUJHX/By ファイルパスなんかはカーネルが結局UNICODE_STRINGとして扱うからwchar版の方がパフォーマンス良いけどadvapi32のレジストリ系関数はどうなんだろうか?
794デフォルトの名無しさん
2024/01/26(金) 12:12:36.19ID:h4bsjzTE WM_MOUSEFIRSTからWM_MOUSELASTのメッセージって、
これから追加されるメッセージもLPARAMはすべてマウス位置のクライアント座標が入る、という約束はありますか?
これから追加されるメッセージもLPARAMはすべてマウス位置のクライアント座標が入る、という約束はありますか?
795デフォルトの名無しさん
2024/02/21(水) 15:57:22.07ID:jTOh+ue+ Spy++のメッセージウィンドウには、「S」や「P」の文字が表示されていて、
それがSendで送られたのかPostで送られたのかがわかるようになっていますが、
これと同じ区別を、自身のメッセージハンドラ上で行うことはできるのでしょうか
InSendMessageというAPIは見つけたのですが、
Spy++で「S」と表示されるものでも0が返ってきてしまいました
それがSendで送られたのかPostで送られたのかがわかるようになっていますが、
これと同じ区別を、自身のメッセージハンドラ上で行うことはできるのでしょうか
InSendMessageというAPIは見つけたのですが、
Spy++で「S」と表示されるものでも0が返ってきてしまいました
796デフォルトの名無しさん
2024/02/22(木) 22:51:02.73ID:kQumE7Ak 分別してどうするのさ
797デフォルトの名無しさん
2024/02/23(金) 16:31:44.91ID:JzCbi9fb InSendMessageは別のスレッドからSendMessageされたかを判断する、と説明があるから、
単純にSendMessage呼び出しを判定するものではなさそう
同一スレッドからのSendMessageの呼び出し判定は、ウィンドウプロシジャのコールスタック辿って
SendMessageのエントリポイントと比較するとか、何か追加で頑張る必要がありそう
単純にSendMessage呼び出しを判定するものではなさそう
同一スレッドからのSendMessageの呼び出し判定は、ウィンドウプロシジャのコールスタック辿って
SendMessageのエントリポイントと比較するとか、何か追加で頑張る必要がありそう
798デフォルトの名無しさん
2024/02/23(金) 17:02:46.18ID:GiKlOj9R Snedはメッセージキューに来ないからあればPostなければSendやぞ
799デフォルトの名無しさん
2024/02/24(土) 00:12:34.16ID:qqiEO45x 内部でIsPostMsgとかフラグ作ってDispatchMessage()を呼ぶ時に1にする終わったらゼロにする
800デフォルトの名無しさん
2024/02/24(土) 09:12:26.23ID:niSNojaB ウィンドウプロシジャが呼ばれる経路はそれだけ?
801デフォルトの名無しさん
2024/02/24(土) 13:03:44.44ID:qqiEO45x Postでキューに入ったのを取り出して呼ばれるのはそこだけでしょう
Sendでは直接呼ばれる
もしウィンドウプロシージャの中からSendしてたらこれは使えない
Sendでは直接呼ばれる
もしウィンドウプロシージャの中からSendしてたらこれは使えない
802デフォルトの名無しさん
2024/02/24(土) 13:41:01.55ID:Uzz+lkGd 自アプリ側で予め
SendMessage PostMessage
をフックしとけば良いのでは?
SendMessage PostMessage
をフックしとけば良いのでは?
803デフォルトの名無しさん
2024/02/24(土) 14:33:49.19ID:5nanMrzK http://bonurd.winofsql.jp/sb/log/eid175.html
SendMessage と PostMessage のフック
SendMessage と PostMessage のフック
804デフォルトの名無しさん
2024/02/25(日) 11:17:44.56ID:GDczOUha805デフォルトの名無しさん
2024/04/29(月) 03:35:32.42ID:xgq67JZI intから__int64へ
806デフォルトの名無しさん
2024/05/08(水) 06:48:18.53ID:CU7bUsfh てす
807デフォルトの名無しさん
2024/05/08(水) 06:59:53.68ID:CU7bUsfh 自作アプリに対して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を許可すれば良さそうだと当たりは付けていますが・・
権限レベルを弄ったりということは一切していないので、問題の発動条件が知りたいです。
送信側でGetLastErrorしたら
> 0x05:アクセスが拒否されました。
が取れました。
ここによると
ttps://learn.microsoft.com/ja-jp/windows/win32/api/winuser/nf-winuser-sendmessage
> メッセージが UIPI によってブロックされると、 GetLastError で取得された最後のエラーは 5 (アクセス拒否) に設定されます。
これに該当してる?のか他の原因でアクセス拒否されているのか分からないけど、
受け側のアプリはずっと起動したままで直前までメッセージ受信できていたことと、
その後もアプリが死んでいるようには見えず操作できるし動作ログも残るため、
ただただWM_APPメッセージ受信のみ(?)できなくなっているような状況です。
ここで質問ですが、どういう時に急にメッセージ受信できなくなるのか、エスパーお願いします。
今後の対策としては受信側でChangeWindowMessageFilterを使ってWM_APPを許可すれば良さそうだと当たりは付けていますが・・
権限レベルを弄ったりということは一切していないので、問題の発動条件が知りたいです。
808デフォルトの名無しさん
2024/05/08(水) 21:35:37.84ID:5PSVmBb2 まず再現性あるのか確認してね
809デフォルトの名無しさん
2024/05/08(水) 21:47:14.20ID:5PSVmBb2 んで、この手のシステムからの意図しない介入問題が起きた場合は、
原則プロセスの再作成で解決するしかない
原則プロセスの再作成で解決するしかない
810デフォルトの名無しさん
2024/05/08(水) 21:51:37.73ID:5PSVmBb2 これはLow Level Hookが外れた時の対処と同じ
恐らくSendMessageの処理が規定時間以内に終わらなかったとかで適当に介入してるんだろう
知らんけど
恐らくSendMessageの処理が規定時間以内に終わらなかったとかで適当に介入してるんだろう
知らんけど
811デフォルトの名無しさん
2024/05/09(木) 08:54:43.22ID:cRZqeFYn 知らんけどで逃げるなw
812デフォルトの名無しさん
2024/05/09(木) 11:45:17.50ID:LBnBOAOP >>808
再現性ないと言っていいのか、手元では再現できず
エラーが出た環境でも普段は問題出てなくて、たまたま問題が出たのに気付いてログを漁ってエラーコードが分かり、
過去ログも遡ると半月前にも一度エラーが出ていたのは分かりました
この問題が出た環境は24時間PC&アプリ起動しっぱなしということらしく、その時点で
何となくお察し感がなくもないですが原因ははっきりさせたいなと
>>809-810
受信側は一切メッセージの受信を感知していない(ログに全く残らない)ようなので
規定時間以内に終わっていないというようなことではないとは思いますが、
何かしらの原因で適当に介入されている感はすごくあります
まあ適当に〜されたとしても、はっきりしたいところです
再現性ないと言っていいのか、手元では再現できず
エラーが出た環境でも普段は問題出てなくて、たまたま問題が出たのに気付いてログを漁ってエラーコードが分かり、
過去ログも遡ると半月前にも一度エラーが出ていたのは分かりました
この問題が出た環境は24時間PC&アプリ起動しっぱなしということらしく、その時点で
何となくお察し感がなくもないですが原因ははっきりさせたいなと
>>809-810
受信側は一切メッセージの受信を感知していない(ログに全く残らない)ようなので
規定時間以内に終わっていないというようなことではないとは思いますが、
何かしらの原因で適当に介入されている感はすごくあります
まあ適当に〜されたとしても、はっきりしたいところです
813デフォルトの名無しさん
2024/05/09(木) 15:19:14.25ID:HEWeaKRP 断片化回避のためにSetFilePointer -> SetEndOfFile -> SetFilePointerサンドイッチってもう古いやり方?
.NETのFileIO実装がSetFileInformationByHandle(FILE_ALLOCATION_INFO)でやってるんだが
.NETのFileIO実装がSetFileInformationByHandle(FILE_ALLOCATION_INFO)でやってるんだが
814デフォルトの名無しさん
2024/05/09(木) 19:16:20.44ID:2Qg6aldP SSDは?
815デフォルトの名無しさん
2024/05/09(木) 21:40:33.69ID:UHyVEDy6 >>811
ちょっと調べてはみたけどstackoverflowでも迷宮入りしててだめだったんよね
SYSTEMプロセスから送れば拒否られないとは思うが
確実にプロセス間通信をしたかったらメッセージよりは名前付きパイプが無難だろうな
ちょっと調べてはみたけどstackoverflowでも迷宮入りしててだめだったんよね
SYSTEMプロセスから送れば拒否られないとは思うが
確実にプロセス間通信をしたかったらメッセージよりは名前付きパイプが無難だろうな
816デフォルトの名無しさん
2024/05/10(金) 23:35:02.72ID:r04xuHSU >>815
迷宮入りまで調べてくれてたんですね
確かにパイプが無難です
今さらコイツを修正するには作り直しレベルなのでもう無理ですがw
とりあえずしばらく放置して色々な環境でログ収集して情報整理します
ありがとうございました
迷宮入りまで調べてくれてたんですね
確かにパイプが無難です
今さらコイツを修正するには作り直しレベルなのでもう無理ですがw
とりあえずしばらく放置して色々な環境でログ収集して情報整理します
ありがとうございました
817デフォルトの名無しさん
2024/05/10(金) 23:49:50.70ID:irdjP1bw >>807
再現性はともかくとして、SendMessageが途中から拒否られる事象がOSのどのバージョンで発生したか書いといてくれると嬉しい
再現性はともかくとして、SendMessageが途中から拒否られる事象がOSのどのバージョンで発生したか書いといてくれると嬉しい
818デフォルトの名無しさん
2024/05/11(土) 03:02:04.26ID:7XNHipLd >>817
どうもすみません
Windows11 home 23H2です
ちょうど今おかしな環境のPCがまたおかしくなっているようなので調べていましたが、
受信側プロセスが管理者特権に変更されているようで、これが原因ですね
送信側は管理者特権は付与されていませんが、送信側プロセスから受信側プロセスを
起動していますから、最初は特権が付与されていないはず・・・
ということでどちらのプロセスも再起動させたところ、どちらも標準ユーザーになっていました
explorerからexeプロパティを見ても管理者権限はチェックされていないようです
意図せず途中で管理者特権が付与される可能性はあるのでしょうか?
(プログラム的にはそんなことしているつもりはもちろん無いですが)
どうもすみません
Windows11 home 23H2です
ちょうど今おかしな環境のPCがまたおかしくなっているようなので調べていましたが、
受信側プロセスが管理者特権に変更されているようで、これが原因ですね
送信側は管理者特権は付与されていませんが、送信側プロセスから受信側プロセスを
起動していますから、最初は特権が付与されていないはず・・・
ということでどちらのプロセスも再起動させたところ、どちらも標準ユーザーになっていました
explorerからexeプロパティを見ても管理者権限はチェックされていないようです
意図せず途中で管理者特権が付与される可能性はあるのでしょうか?
(プログラム的にはそんなことしているつもりはもちろん無いですが)
819デフォルトの名無しさん
2024/05/11(土) 12:31:06.19ID:PynvVCIt 無意識にそんな特権付与されたら怖すぎるがなw
システムが一時的に特殊な状態にしてるんじゃないの
システムが一時的に特殊な状態にしてるんじゃないの
820デフォルトの名無しさん
2024/05/13(月) 00:51:53.26ID:UH9hVJYb APIの先で起動されるスレッド(OSが起動する)が管理者特権付きで
それがアクティブな瞬間はプロセスが管理者特権付きに見えて、
そんなタイミングのプロセスに一般ユーザがメッセージ送ると、
管理者様に対して頭が高いぞってアクセスデナイド。
とか想像してみた。
それがアクティブな瞬間はプロセスが管理者特権付きに見えて、
そんなタイミングのプロセスに一般ユーザがメッセージ送ると、
管理者様に対して頭が高いぞってアクセスデナイド。
とか想像してみた。
821デフォルトの名無しさん
2024/05/13(月) 02:44:07.73ID:eZXBgDRS 818です
ログを見ると、一度メッセージ受信できなくなるとずっと受信できていないようです
管理者特権が付いているのを確認したのはタスクマネージャでの目視ですが、
見たところずっと特権がついているのでタイミングの問題ではなく、何かしらの拍子で特権がついたまま
という感じですね
今のところ、24時間起動したまま使い続けていますがあれから特権はついていません
特権を必要とするようなコードを書いたことない(つもり)なので、原因にたどり着くのは中々難しい状況です
例えば、どんなことをすると特権が付与される(UIもなく勝手に?)のでしょう?
ログを見ると、一度メッセージ受信できなくなるとずっと受信できていないようです
管理者特権が付いているのを確認したのはタスクマネージャでの目視ですが、
見たところずっと特権がついているのでタイミングの問題ではなく、何かしらの拍子で特権がついたまま
という感じですね
今のところ、24時間起動したまま使い続けていますがあれから特権はついていません
特権を必要とするようなコードを書いたことない(つもり)なので、原因にたどり着くのは中々難しい状況です
例えば、どんなことをすると特権が付与される(UIもなく勝手に?)のでしょう?
822デフォルトの名無しさん
2024/05/16(木) 19:26:12.96ID:s6fDlAb8 心当たりが無いなら今月のCVE-2024-30051だとか特権の昇格の脆弱性のどれかに引っかかってる可能性あり
823デフォルトの名無しさん
2024/05/18(土) 14:21:00.21ID:u20XKbPO >>813
自己レスだけどSetFileInformationByHandle(hFile, FileAllocationInfo...)でやるとサイズが小さい場合にMFT内にデータ埋め込んで完結する場合でも1セクタ確保されてしまうようなので旧来の方法でやる方が無難だった
自己レスだけどSetFileInformationByHandle(hFile, FileAllocationInfo...)でやるとサイズが小さい場合にMFT内にデータ埋め込んで完結する場合でも1セクタ確保されてしまうようなので旧来の方法でやる方が無難だった
824デフォルトの名無しさん
2024/05/21(火) 10:59:49.66ID:CZsnB0Ll >>813
埋め込みサイズ上限を上回る新規ファイルを作る場合ならハンドル作成時にアロケーションサイズも同時指定する方が良さそう
埋め込みサイズ上限を上回る新規ファイルを作る場合ならハンドル作成時にアロケーションサイズも同時指定する方が良さそう
825デフォルトの名無しさん
2024/05/25(土) 11:34:53.77ID:IsAA9ZVh826デフォルトの名無しさん
2024/05/29(水) 17:30:16.76ID:5SDO0AId リストビューで範囲選択したときの青い枠の色や内部の半透明な色の値は、APIで取得できるのでしょうか
827デフォルトの名無しさん ころころ
2024/05/29(水) 18:37:40.98ID:tN3gYMey 出来るよ
828デフォルトの名無しさん
2024/05/29(水) 18:43:52.23ID:tN3gYMey GetSysColor
829デフォルトの名無しさん
2024/05/29(水) 18:52:44.95ID:uKjwQH9U この辺りlinuxやMacのWMとかと違って有る程度の値の取得変更できるのはWindowsの強みだったよな
830デフォルトの名無しさん
2024/05/29(水) 19:04:09.64ID:5SDO0AId831デフォルトの名無しさん
2024/05/29(水) 19:05:11.69ID:1pytebYy 他スレでスクリーンショットのマルチポストがあるけど、加えてコントロールの色を取得か
AIに食わせるUI Automation学習データを整備してるのかな
AIに食わせるUI Automation学習データを整備してるのかな
832デフォルトの名無しさん
2024/05/30(木) 16:56:56.15ID:32XGh5Dj 半透明じゃなくて字と地の色を反転させてるだけだろ
833デフォルトの名無しさん
2024/05/30(木) 21:32:57.61ID:As0oayev >>832
XPの頃からある範囲選択時の半透明の青なのですが
XPの頃からある範囲選択時の半透明の青なのですが
834デフォルトの名無しさん
2024/05/30(木) 21:38:53.94ID:ScAYlfUJ >>833
プログラム組んでるのなら自分で逆算しろ
プログラム組んでるのなら自分で逆算しろ
835デフォルトの名無しさん
2024/05/30(木) 21:44:25.79ID:As0oayev836デフォルトの名無しさん
2024/05/31(金) 08:56:42.01ID:UXfkVjV8 稀によく自分で手を動かすのと人に訊く比率がバグってる奴がいるよな
本人は自覚があるから分散してるつもりだろうけど一回そう思われたら終わりなんだよ
職場で塩対応されてるんだろうな
本人は自覚があるから分散してるつもりだろうけど一回そう思われたら終わりなんだよ
職場で塩対応されてるんだろうな
837デフォルトの名無しさん
2024/05/31(金) 13:33:58.54ID:bH8oOxQj >>835
GetThemeColor じゃだめ?
GetThemeColor じゃだめ?
838デフォルトの名無しさん
2024/05/31(金) 15:08:47.69ID:b6j7bQai COLOR_HIGHLIGHTとCOLOR_HIGHLIGHTTEXTじゃないの?
839デフォルトの名無しさん
2024/06/27(木) 10:21:37.70ID:mIdqOGxG Chromeや秀丸系製品で、タブをウィンドウ外にドラッグすると、別ウィンドウに分割できるのは、
頑張ればプロセス起動で実装できるような気もしますが、
さらに別のウィンドウの中のタブ群に移動できるのは、魔法な気がしますよね。
別プロセスの中にタブをごっそり移動するというのは、難しい気が。
どうも、画面の各タブごとに最初からプロセス起動しているようですが。
Wzエディタとか、複数立ち上げても異なるプロセス間のタブ移動はできないようですが、
これは、ウィンドウ=プロセスだからですよね。
こういうのはWPFでは作れないと思うので、今となってはこのあたりがWin32APIの将来性?
頑張ればプロセス起動で実装できるような気もしますが、
さらに別のウィンドウの中のタブ群に移動できるのは、魔法な気がしますよね。
別プロセスの中にタブをごっそり移動するというのは、難しい気が。
どうも、画面の各タブごとに最初からプロセス起動しているようですが。
Wzエディタとか、複数立ち上げても異なるプロセス間のタブ移動はできないようですが、
これは、ウィンドウ=プロセスだからですよね。
こういうのはWPFでは作れないと思うので、今となってはこのあたりがWin32APIの将来性?
840デフォルトの名無しさん
2024/06/27(木) 11:12:44.44ID:dd5BD0xO SetParent
841デフォルトの名無しさん
2024/06/27(木) 11:13:43.84ID:n/nJ5fKa >>839
ドロップされたらドロップ元が自分のアプリと確認できればタブ生成して、データを引き取って終わりで駄目?
ドロップされたらドロップ元が自分のアプリと確認できればタブ生成して、データを引き取って終わりで駄目?
842デフォルトの名無しさん
2024/06/27(木) 11:15:48.39ID:h+EH+DLv Win32APIでゴリゴリ作ることもできるけど
既存の仕組みを使うならOLEを検討すべきかも
既存の仕組みを使うならOLEを検討すべきかも
843デフォルトの名無しさん
2024/06/27(木) 11:21:59.93ID:OTNDZ+yC >>839
将来性も何も30年以上前から変わらない枯れた話だよ
将来性も何も30年以上前から変わらない枯れた話だよ
844デフォルトの名無しさん
2024/06/27(木) 13:20:20.40ID:mIdqOGxG 異なるウィンドウへタブをドラッグされたときに、ファイルを開きなおすというのは考えたんですけれど、
アンドゥとか、そもそも保存してないデータとかもあるから、案外、難しいんじゃないかと……
秀丸はファイルを開くとプロセス増えてるし。
Wzエディタはファイルを開くたびに増えないけれど、タブの結合に制約が発生するのかと。
Chromeもタブを開くたびにプロセス増えるけれど、これはサンドボックス関係の何かかもしれないですね……
アンドゥとか、そもそも保存してないデータとかもあるから、案外、難しいんじゃないかと……
秀丸はファイルを開くとプロセス増えてるし。
Wzエディタはファイルを開くたびに増えないけれど、タブの結合に制約が発生するのかと。
Chromeもタブを開くたびにプロセス増えるけれど、これはサンドボックス関係の何かかもしれないですね……
845デフォルトの名無しさん
2024/06/27(木) 15:30:22.02ID:FNjZgfw1 >>840
ここに答えが出てるのにみんなスルーかよw
ここに答えが出てるのにみんなスルーかよw
846デフォルトの名無しさん
2024/06/27(木) 15:52:30.68ID:OTNDZ+yC ベストアンサーはスルーしてさしあげるのが5chの掟
847デフォルトの名無しさん
2024/06/27(木) 19:09:13.89ID:mIdqOGxG えっ、ということは、タブをウィンドウ外にドラッグしたら、新しいプロセスを起動して、SetParent。
ウィンドウAからウィンドウBにタブをドラッグしたら、BにSetParentということ?
それだけで行けるのかなぁ。
OLEの方は確かにMFCを使っていればできそうな気もするけれど、
むむむ……
ウィンドウAからウィンドウBにタブをドラッグしたら、BにSetParentということ?
それだけで行けるのかなぁ。
OLEの方は確かにMFCを使っていればできそうな気もするけれど、
むむむ……
848デフォルトの名無しさん
2024/06/27(木) 23:00:25.56ID:zz1D+M6F849デフォルトの名無しさん
2024/06/27(木) 23:19:11.01ID:Ks3kYOUo850デフォルトの名無しさん
2024/06/29(土) 15:00:51.88ID:AKI9JxZ5 WPFはマイクソが適当に用意したWin32APIからだいぶ退化したソリューションなんよ
欠損障害者や痴呆老人を介護していくぐらいの覚悟が必要とマイクソは言っている
欠損障害者や痴呆老人を介護していくぐらいの覚悟が必要とマイクソは言っている
851デフォルトの名無しさん
2024/06/30(日) 11:07:40.79ID:L3wyoKVN らくらくホンですねわかります
852デフォルトの名無しさん
2024/06/30(日) 13:46:38.98ID:iWdyx4cd なんで1ウィンドウ1プロセスにこだわるのかね
853デフォルトの名無しさん
2024/06/30(日) 13:52:21.57ID:dBsdaOes さらに、>>841 も書いてるけど、元のタブじゃなくても同じ内容を表示すればいいし。
854デフォルトの名無しさん
2024/07/02(火) 16:38:11.96ID:ilJEPICb855デフォルトの名無しさん
2024/07/02(火) 21:04:03.62ID:oj6vCWdL >>854
必要ならundoの情報も含んだ編集中のデータを渡すだけだろう
プロセス間通信するとか作業用ファイルを介すとかドラッグ&ドラッグのデータに含めるとかやりようはある
↑は別プロセス前提で書いたけど、同一プロセスの別ウィンドウ同士だったらもっと簡単だね
必要ならundoの情報も含んだ編集中のデータを渡すだけだろう
プロセス間通信するとか作業用ファイルを介すとかドラッグ&ドラッグのデータに含めるとかやりようはある
↑は別プロセス前提で書いたけど、同一プロセスの別ウィンドウ同士だったらもっと簡単だね
856デフォルトの名無しさん
2024/07/03(水) 00:20:10.87ID:swtC0eU3 ウィンドウが何処に表示されようが何も変わらない事が分からないやつが居るな…
857デフォルトの名無しさん
2024/07/03(水) 13:58:35.19ID:B8cPwUiK いや、でも、タブが5個あって、ウィンドウ枠が2つだったとするじゃん。
片方に2つ、もう片方に3つのタブがあるような状況。
起動時のプロセスのウィンドウ枠の中で情報が保持されていて、
反対側のウィンドウ枠の中で表示されていても良いっていうこと?
その場合、ユーザが片方のウィンドウだけバツボタンで終了しようとしたときに、
難しいことになるような気が……
片方に2つ、もう片方に3つのタブがあるような状況。
起動時のプロセスのウィンドウ枠の中で情報が保持されていて、
反対側のウィンドウ枠の中で表示されていても良いっていうこと?
その場合、ユーザが片方のウィンドウだけバツボタンで終了しようとしたときに、
難しいことになるような気が……
858デフォルトの名無しさん
2024/07/03(水) 15:50:06.42ID:TWMTGehv ひといないねここ
859デフォルトの名無しさん
2024/07/03(水) 18:49:37.33ID:2Xqs+u0R gpt4の賢さがすごすぎてなー
お前らの対応してると空しくなるよ
時間がもったいない
お前らの対応してると空しくなるよ
時間がもったいない
860デフォルトの名無しさん
2024/07/03(水) 20:18:25.91ID:fDE4NTPp >>857
ウィンドウ枚数を数えて最後の一枚だったらPostQuitMessage()するだけだろ
ウィンドウ枚数を数えて最後の一枚だったらPostQuitMessage()するだけだろ
861デフォルトの名無しさん
2024/07/03(水) 20:25:59.32ID:pYi5R8u1 >>857
情報も一緒に別プロセスに移動させれば済む話だよ
情報も一緒に別プロセスに移動させれば済む話だよ
862デフォルトの名無しさん
2024/07/04(木) 07:12:03.53ID:ak68oAE8863デフォルトの名無しさん
2024/07/04(木) 07:21:22.72ID:PxI4bFfe UIを持たない枚数を数えるだけのプロセスが居たっていい
がミューテックス辺りで済みそうだ
がミューテックス辺りで済みそうだ
864デフォルトの名無しさん
2024/07/04(木) 22:14:35.16ID:eTz6OUM0 タブの情報をプロセスから切り離して管理すればよいのでは
865デフォルトの名無しさん
2024/07/04(木) 22:43:06.74ID:ak68oAE8 SetWindowLongでウィンドウに固有のデータを書き込む方法を知らんのかい
866デフォルトの名無しさん
2024/07/04(木) 23:26:19.64ID:vqT9K1Uf 根本的にWindowsプログラミングを理解してないんだな…
Windowsに限った話しじゃないが、Window Systemのプログラミングはメッセージループというのが有って、そこに全ウィンドウ(ボタンなんかのコントロール全部)のイベントが通知される
アプリ側は通知されたイベントの内容(ボタン押されたや再描画など)とウィンドウIDからすべき処理を判別して実行する
プロセスは当然1つで良いし、メッセージループを複数プロセスで行うなんて絶対しない
Windowsに限った話しじゃないが、Window Systemのプログラミングはメッセージループというのが有って、そこに全ウィンドウ(ボタンなんかのコントロール全部)のイベントが通知される
アプリ側は通知されたイベントの内容(ボタン押されたや再描画など)とウィンドウIDからすべき処理を判別して実行する
プロセスは当然1つで良いし、メッセージループを複数プロセスで行うなんて絶対しない
867デフォルトの名無しさん
2024/07/04(木) 23:35:12.63ID:vqT9K1Uf 取りあえずぺゾルドは必読だ
Win32を扱ってるのは第5版迄だがもう新品じゃ手に入らない
MSはタダで読めるようにすべきなんだよな
今でも役に立つのに絶版のまま放置とか、日本法人仕事してくれ!
Win32を扱ってるのは第5版迄だがもう新品じゃ手に入らない
MSはタダで読めるようにすべきなんだよな
今でも役に立つのに絶版のまま放置とか、日本法人仕事してくれ!
868デフォルトの名無しさん
2024/07/05(金) 00:19:08.16ID:ii7HQe4f ナンシークラッツ本と並んで殿堂入りするべきだよな
869デフォルトの名無しさん
2024/07/10(水) 08:58:31.30ID:OQuJq/Fg Win32というかDirextXなんだけどd3d9.dllを用いるゲームなんかを起動するとEvent Traceが開始されるのは自分だけ?
d3d9.dll + 7E710がboolフラグのgetterで、結果が1だと1000秒毎にntdll.RtlPublishWnfStateDataが呼ばれてEtwRTGraphicsPerfMonitorSession.etlが書き込まれる
上記のboolフラグはd3d9.Direct3DCreate9Exのルーチン内で1にセットされることまでは突き止められたけど、なぜ1にセットされるのかの究明は面倒で投げ出してしまった
d3d9.dll + 7E710がboolフラグのgetterで、結果が1だと1000秒毎にntdll.RtlPublishWnfStateDataが呼ばれてEtwRTGraphicsPerfMonitorSession.etlが書き込まれる
上記のboolフラグはd3d9.Direct3DCreate9Exのルーチン内で1にセットされることまでは突き止められたけど、なぜ1にセットされるのかの究明は面倒で投げ出してしまった
870デフォルトの名無しさん
2024/07/10(水) 09:02:10.97ID:OQuJq/Fg フラグを見てトレースするか否かを変えてる訳だから恐らくはレジストリとかでグローバルな設定が可能なんだとは思うけど英語でググっても全く情報がない
871デフォルトの名無しさん
2024/07/10(水) 14:22:20.98ID:pzzWoCSk manifestじゃね?
872デフォルトの名無しさん
2024/07/10(水) 16:48:04.42ID:2GPD5dJ4873 警備員[Lv.2][新芽]
2024/07/12(金) 06:37:17.61ID:rAnXXRGQ !donguri
874デフォルトの名無しさん
2024/07/12(金) 07:55:37.97ID:R+7FAFYS どんぐりとか邪魔なだけ
875デフォルトの名無しさん
2024/07/26(金) 16:31:31.09ID:s0039+ok exe化ω
876デフォルトの名無しさん
2024/08/03(土) 11:32:27.96ID:8ujXWrcK マルチディスプレイ環境でディスプレイごとに壁紙設定したいんだけど
SystemParametersInfoだと全部同じ壁紙設定されちゃう
どうしたらいいの?
SystemParametersInfoだと全部同じ壁紙設定されちゃう
どうしたらいいの?
877デフォルトの名無しさん
2024/08/03(土) 15:09:24.69ID:oR+oLHPm878876
2024/08/04(日) 06:02:53.80ID:SpOe1Ove あれこれ調べた結果、COMインターフェース使って実現できた
スレ汚し失礼しますた
スレ汚し失礼しますた
879デフォルトの名無しさん
2024/08/05(月) 23:55:54.01ID:jWZSSuTx https://learn.microsoft.com/ja-jp/windows/win32/printdocs/printdocs-printing
いまだにGDI Print API使っているんだが移行するもんなんかね
COMめんどい
いまだにGDI Print API使っているんだが移行するもんなんかね
COMめんどい
880デフォルトの名無しさん
2024/08/06(火) 08:51:34.33ID:cEvufDXQ それはいまだに使ってるんじゃなくて互換性のために残してあるだけやろ
Vista以降の環境で作るならXPSドキュメントAPI検討しろって書いてあるじゃん
Vista以降の環境で作るならXPSドキュメントAPI検討しろって書いてあるじゃん
881デフォルトの名無しさん
2024/08/06(火) 12:29:33.52ID:/JDWd2CP XPSって息してるの?
882デフォルトの名無しさん
2024/08/06(火) 13:32:04.54ID:geBAoTM5 してない
883デフォルトの名無しさん
2024/08/07(水) 23:11:59.28ID:QAQ+ujSz https://learn.microsoft.com/ja-jp/windows/win32/printdocs/xps-printing
[XPS Print API はサポートされていないため、今後変更または使用できない場合があります。 クライアント アプリケーションでは、代わりに 印刷ドキュメント パッケージ API を使用する必要があります。
だと
[XPS Print API はサポートされていないため、今後変更または使用できない場合があります。 クライアント アプリケーションでは、代わりに 印刷ドキュメント パッケージ API を使用する必要があります。
だと
884デフォルトの名無しさん
2024/08/08(木) 08:52:42.58ID:RW+0CWti 印刷ドキュメントパッケージってストアアプリじゃなかったっけ
885デフォルトの名無しさん
2024/08/26(月) 20:43:00.02ID:Cfp+G9iJ MFCやCOM/ATLの話題もここでいいの?
スレないよな
スレないよな
886デフォルトの名無しさん
2024/08/26(月) 22:39:11.42ID:a3TTNcMK まあ大雑把にアンマネージドな話題ならいいんじゃね
MFCの話なんてここでされても俺はスルーするがな
MFCの話なんてここでされても俺はスルーするがな
887デフォルトの名無しさん
2024/08/27(火) 08:48:29.94ID:Dr3hMOC8 MFCまだ息してるの?

だから、最近EchoAPIを使い始めて、デバッグプロセスが本当に効率化されました。
891デフォルトの名無しさん
2024/11/19(火) 14:54:25.41ID:9IiXc5Vb まるちんこしね
892デフォルトの名無しさん
2024/11/20(水) 11:20:37.14ID:W8mVvsIh 新規にMFC使って何かを作ろうとするのは、アマチュアならありだが仕事ではもうないかな
.NETが普及する前、それこそVB6時台は必須だったけど
.NETが普及する前、それこそVB6時台は必須だったけど
893デフォルトの名無しさん
2024/11/21(木) 08:42:13.45ID:Yfd1e91z 別に必須ではない

EchoAPIをAPIシミュレーションに使用し始めたところ、フルバックエンド統合前にアプリの機能をテストするのに非常に役立ってる
897デフォルトの名無しさん
2024/12/06(金) 14:09:41.63ID:L9wmMkNC IsWindowVisibleは親ウィンドウの状態も再帰的にチェックしてくれるのに、
IsWindowEnabledは自身の状態しかチェックしてくれないようです
対象のウィンドウがマウス操作などを行える状態かをチェックしたいですが、
IsWindowEnabledで親ウィンドウの状態も参照するバージョンはあるのでしょうか?
IsWindowEnabledは自身の状態しかチェックしてくれないようです
対象のウィンドウがマウス操作などを行える状態かをチェックしたいですが、
IsWindowEnabledで親ウィンドウの状態も参照するバージョンはあるのでしょうか?
898デフォルトの名無しさん
2024/12/06(金) 14:43:02.52ID:L9wmMkNC すいません上に全く同じ質問がありました
失礼しました
失礼しました
899デフォルトの名無しさん
2024/12/12(木) 22:09:35.75ID:atnAaKGF ステータスバーを分割した場合
WM_SIZEの中でサイズを送信すると思うんだけど
|中身に合わせる|中身に合わせる|伸びーる|中身に合わせる|中身に合わせる|
みたいな場合はどうやって計算するの?
WM_SIZEの中でサイズを送信すると思うんだけど
|中身に合わせる|中身に合わせる|伸びーる|中身に合わせる|中身に合わせる|
みたいな場合はどうやって計算するの?
900デフォルトの名無しさん
2024/12/12(木) 22:27:50.07ID:j5Bpxje0 中身に合わせるのとこは自分で中身に合わせて
野ビールのとこは放置やね
計算とか無い
野ビールのとこは放置やね
計算とか無い
901デフォルトの名無しさん
2024/12/12(木) 22:44:16.57ID:trovn3Vo ステータスバーのハンドル使ってDCとフォントを取り寄せる
んでDrawTextを空撃ちすると文字列に必要な幅が分かる。
んでDrawTextを空撃ちすると文字列に必要な幅が分かる。
902デフォルトの名無しさん
2024/12/21(土) 23:35:34.44ID:37tGDg2N IsWindowVisible
IsWindowEnabled
EnableWindow
のダイアログ版教えて下さい
IsWindowEnabled
EnableWindow
のダイアログ版教えて下さい
903デフォルトの名無しさん
2024/12/21(土) 23:44:47.64ID:VA9QPMmD ダイアログも只のWindowっす
904デフォルトの名無しさん
2024/12/22(日) 09:10:18.93ID:SmvDArN5 >>903
できました!ありがとう
できました!ありがとう
906デフォルトの名無しさん
2025/01/22(水) 00:25:29.57ID:CKKn8gV4 iniのキーの一括読み込みで悩んでいます。
冗長にならないよう読み込みたいのですが、下記のコードをfor文で回すというのが自分の知識の限界でしたが、大変わかりにくく困っています。改善点やスタンダードなiniの読み書きの参考になるサイトなどあれば教えていただけると助かります
strLen[n] = GetPrivateProfileString(
pStrIndex[n] ,//ダブルポインタ
NULL ,
NULL ,
buf[n] ,//ダブルポインタ
256 ,
strPath
);
冗長にならないよう読み込みたいのですが、下記のコードをfor文で回すというのが自分の知識の限界でしたが、大変わかりにくく困っています。改善点やスタンダードなiniの読み書きの参考になるサイトなどあれば教えていただけると助かります
strLen[n] = GetPrivateProfileString(
pStrIndex[n] ,//ダブルポインタ
NULL ,
NULL ,
buf[n] ,//ダブルポインタ
256 ,
strPath
);
907デフォルトの名無しさん
2025/01/22(水) 05:00:50.81ID:xghKhcgN GetPrivateProfileSection関数
908デフォルトの名無しさん
2025/01/22(水) 19:54:34.30ID:CKKn8gV4 >>907
ありがとうございます。ですがこの方法ですとセクションごとに別れていないため、私が提示した方法より値を扱いにくいのではないでしょうか?
それとも、セクションを除いて必要なキーが何個目にあるかを把握して扱うということなのでしょうか?
後者の場合ですと、わざわざセクションが存在する理由がわかりかねるのですが、直接iniを開いた場合の可読性故に存在しているということでしょうか?
少々実際のコードに落とし込むということがイメージしにくく、躓いてしまっています
また、実際に値を取り出す場合はn番目の=から¥nまでの文字列を取り出し、数値に変換するといった具合になるのでしょうか?
ありがとうございます。ですがこの方法ですとセクションごとに別れていないため、私が提示した方法より値を扱いにくいのではないでしょうか?
それとも、セクションを除いて必要なキーが何個目にあるかを把握して扱うということなのでしょうか?
後者の場合ですと、わざわざセクションが存在する理由がわかりかねるのですが、直接iniを開いた場合の可読性故に存在しているということでしょうか?
少々実際のコードに落とし込むということがイメージしにくく、躓いてしまっています
また、実際に値を取り出す場合はn番目の=から¥nまでの文字列を取り出し、数値に変換するといった具合になるのでしょうか?
909デフォルトの名無しさん
2025/01/22(水) 19:56:56.10ID:6faY8jOE 気に入らないなら自作しなよ
そういうの得意だったよね
そういうの得意だったよね
910デフォルトの名無しさん
2025/01/23(木) 06:58:43.12ID:juwbDZ3u911デフォルトの名無しさん
2025/01/23(木) 09:06:22.24ID:kfksRUHC 最後の1文見る限り、GetPrivateProfileSectionのドキュメントすら読んで無いか、読んでてもちゃんと読んで無いのがバレバレ
912デフォルトの名無しさん
2025/01/23(木) 10:24:59.82ID:MfXmmgFN YAMLにしなよ
913デフォルトの名無しさん
2025/01/23(木) 19:37:54.91ID:i3pjk0RU914デフォルトの名無しさん
2025/01/23(木) 20:01:09.20ID:juwbDZ3u セオリーみたいなんは知らないけど
各Key&Valueペアはヌル文字で区切られてて
文字列はヌルターミネートだってことを利用して
ポインタを動かしながら一覧化して使ってたかな、自分は
最近はini使ってないから昔の記憶だけど
各Key&Valueペアはヌル文字で区切られてて
文字列はヌルターミネートだってことを利用して
ポインタを動かしながら一覧化して使ってたかな、自分は
最近はini使ってないから昔の記憶だけど
915デフォルトの名無しさん
2025/01/24(金) 16:07:25.70ID:n7IYWFd+916デフォルトの名無しさん
2025/01/24(金) 16:21:28.46ID:9uGEaje4 >>906
iniを使ってる既存のアプリがあってそれを踏襲
しなければならないのなら仕方がないけど、
そうでないなら、いまさらiniなんて使わないほうが良いよ
iniを使ってる既存のアプリがあってそれを踏襲
しなければならないのなら仕方がないけど、
そうでないなら、いまさらiniなんて使わないほうが良いよ
917デフォルトの名無しさん
2025/01/24(金) 22:51:18.70ID:pX5+qcQ2 忌み数字を踏ませる業者、アプリ、コンピュータプログラムの嫌がらせ
動画再生回数、表示回数、登録者数、フォロワー数、評価数、コメント数、レベル、経験値、ポイント、HP、通貨、価格、メッセージ数、通知数、フレンド数
4(死)、13(キリスト教における忌み数字)
18(嫌)、24(〜に死)、34(〜さん死)
40、42、44
56(殺)、64(無視)
71(無い)、74(無し)、79(無く、亡く)
84(〜は死)、94(〜君死)、96(黒)
このような数字と名前や生年月日、IDなどを組み合わせて執拗に強調することで、精神攻撃をする業者やストーカー、嫌がらせ組織がキモい。
動画再生回数、表示回数、登録者数、フォロワー数、評価数、コメント数、レベル、経験値、ポイント、HP、通貨、価格、メッセージ数、通知数、フレンド数
4(死)、13(キリスト教における忌み数字)
18(嫌)、24(〜に死)、34(〜さん死)
40、42、44
56(殺)、64(無視)
71(無い)、74(無し)、79(無く、亡く)
84(〜は死)、94(〜君死)、96(黒)
このような数字と名前や生年月日、IDなどを組み合わせて執拗に強調することで、精神攻撃をする業者やストーカー、嫌がらせ組織がキモい。
918デフォルトの名無しさん
2025/01/25(土) 00:25:03.57ID:0Ai0sZJQ ini
XML
JSON
YAML
TOML
XML
JSON
YAML
TOML
919デフォルトの名無しさん
2025/01/25(土) 06:51:49.08ID:j/rBX//M dat
920デフォルトの名無しさん
2025/01/25(土) 14:22:52.24ID:sFzIAkAR >>916
そういうわけではありませんが、全くの初心者ですので、情報の多い古い技術を頼ることにしました
そういうわけではありませんが、全くの初心者ですので、情報の多い古い技術を頼ることにしました
921デフォルトの名無しさん
2025/01/25(土) 16:04:18.33ID:9QNSyzV2 ini ゴミ
XML 冗長
JSON ゴミ
YAML がんがれ
TOML RustのcratesとかPythonのPoetryでしか観ないな
XML 冗長
JSON ゴミ
YAML がんがれ
TOML RustのcratesとかPythonのPoetryでしか観ないな
922デフォルトの名無しさん
2025/01/25(土) 20:28:14.71ID:sFzIAkAR923デフォルトの名無しさん
2025/01/25(土) 21:29:48.91ID:0Ai0sZJQ iniを読む時は、
・セクション名は指定する
・キーを指定して対応する変数に代入する
・複数要素指定したい場合には、
- キーの末尾に1,2,3,... とつけて見つからなくなるまで読む
- 別のキーで個数を指定する
- キーを一つにして値をカンマ区切りやスペース
とかで、iniファイルのキーの一覧を動的に取得するとかをなるべくしないほうが楽。
・セクション名は指定する
・キーを指定して対応する変数に代入する
・複数要素指定したい場合には、
- キーの末尾に1,2,3,... とつけて見つからなくなるまで読む
- 別のキーで個数を指定する
- キーを一つにして値をカンマ区切りやスペース
とかで、iniファイルのキーの一覧を動的に取得するとかをなるべくしないほうが楽。
924デフォルトの名無しさん
2025/01/25(土) 21:33:29.11ID:0Ai0sZJQ 読みたいキーが50個あるなら、
GetPrivateProfileString() か GetPrivateProfileInt() を
50回書けばいい。
ループとか考えずにベタで書いたほうがバグらない。
変数名書き換え忘れとかはよくあるけど。
1,2,3,...とかやるところはループで。
GetPrivateProfileString() か GetPrivateProfileInt() を
50回書けばいい。
ループとか考えずにベタで書いたほうがバグらない。
変数名書き換え忘れとかはよくあるけど。
1,2,3,...とかやるところはループで。
925デフォルトの名無しさん
2025/01/25(土) 21:54:22.37ID:HZDjTK1Q APIのGet何某は1セクション1キーの読み書きの度にファイルオープンからやるから糞遅いよ
vbscriptからiniを読み書きしたい時があってその時は大した手間でもないし全部自作したよ
セクションを駆使すれば構造化できるしコメントも書けるから下手な外部データ構造よりも扱いやすいかもとその時は思った
vbscriptからiniを読み書きしたい時があってその時は大した手間でもないし全部自作したよ
セクションを駆使すれば構造化できるしコメントも書けるから下手な外部データ構造よりも扱いやすいかもとその時は思った
926デフォルトの名無しさん
2025/01/25(土) 21:59:34.66ID:/zAJo091 >>921
レジストリ―を忘れないであげてください・・・
レジストリ―を忘れないであげてください・・・
927デフォルトの名無しさん
2025/01/25(土) 21:59:35.88ID:0Ai0sZJQ クソ遅いの同意。
あと、
・=の左右のスペースを自動除去するとか、
・端に半角スペースを使いたい場合には""で囲うんだっけ? "を使いたい場合にはどうするんだ?
・値の32,768文字(バイト?)制限?
とか、いろいろ隠れ仕様があるのが地味にトラップ。
あと、
・=の左右のスペースを自動除去するとか、
・端に半角スペースを使いたい場合には""で囲うんだっけ? "を使いたい場合にはどうするんだ?
・値の32,768文字(バイト?)制限?
とか、いろいろ隠れ仕様があるのが地味にトラップ。
928デフォルトの名無しさん
2025/01/25(土) 22:25:18.21ID:HZDjTK1Q >>927
それらの疑問はAPIで読み書きしてみれば解消すると思うのだが
それらの疑問はAPIで読み書きしてみれば解消すると思うのだが
929デフォルトの名無しさん
2025/01/26(日) 00:20:41.08ID:u6Mx5l7z930デフォルトの名無しさん
2025/01/26(日) 07:56:28.08ID:KCyxjQfb ini使いたい君はWin32APIがどうたら以前の問題だからもっと勉強してから頑張れ
931デフォルトの名無しさん
2025/01/26(日) 10:18:25.36ID:9SEpmwDH C#で組むと簡単にかける
932デフォルトの名無しさん
2025/01/26(日) 12:24:55.25ID:jIhwYj9H 現代に生きてるならまず生成AIの使い方を覚えろw
933デフォルトの名無しさん
2025/01/26(日) 12:36:00.27ID:ZUklcVwb STLにその手の機能あったかと
934デフォルトの名無しさん
2025/01/26(日) 21:20:37.91ID:s+0AyHDZ msgpackがいい
935デフォルトの名無しさん
2025/01/30(木) 07:55:55.21ID:QS068twT Win32のiniは中身どうなってるかわからんからあんま使いたくない
データ取り出すために毎回iniのpath指定からするってことは毎回CreateFileでもしてるのか?と疑ってしまうしな
まあキャッシュされてる説が濃厚っぽいけど、であれば解放はいつされる?という疑問も浮かんで来てしまう
データ取り出すために毎回iniのpath指定からするってことは毎回CreateFileでもしてるのか?と疑ってしまうしな
まあキャッシュされてる説が濃厚っぽいけど、であれば解放はいつされる?という疑問も浮かんで来てしまう
936デフォルトの名無しさん
2025/01/30(木) 09:05:49.08ID:DmWvGvqx 毎回読んでるに決まってるだろ
937デフォルトの名無しさん
2025/01/30(木) 17:56:26.05ID:SG35pUtO win16時代からなんかモヤモヤする気持ち悪い部分だねw
938デフォルトの名無しさん
2025/01/30(木) 19:54:33.33ID:5vkjgM/o メモリなんてほとんど無かった時代からあるものだから、キャッシュなんてしてるわけないしな
939デフォルトの名無しさん
2025/01/30(木) 20:05:36.27ID:s1Kp+8+0 VistaくらいからならOSのファイルキャッシュが勝手に働いてそう。
940デフォルトの名無しさん
2025/01/31(金) 01:11:17.59ID:X03NMzGm キャッシュなんかMS-DOSのsmartdriveあたりからあるだろ
無効にするとWindows3.1は遅かった記憶がある
無効にするとWindows3.1は遅かった記憶がある
941デフォルトの名無しさん
2025/01/31(金) 10:55:21.33ID:T94pdG8Q >>935
構文解析なんて一瞬で終わる
キャッシュはOSがリファレンスカウントで管理してるでしょ
ただしゼロになったからといって直ぐに解放する訳じゃないし、ゼロになる前に解放される場合もある
そこは空きメモリとの兼ね合いでOSが上手くやる
構文解析なんて一瞬で終わる
キャッシュはOSがリファレンスカウントで管理してるでしょ
ただしゼロになったからといって直ぐに解放する訳じゃないし、ゼロになる前に解放される場合もある
そこは空きメモリとの兼ね合いでOSが上手くやる
942デフォルトの名無しさん
2025/01/31(金) 12:27:33.25ID:x+X7dknH 補足すると再起動後やスリープ復帰後に$MFTを舐める様なアプリを動かしておくとシステムキャッシュに載って
その後はHDDでもSSDと同様にディレクトリトラバーサルがマルチスレッドで高速化する(find/fd等)
(よくある専用ソフトを常駐させなくてよい)
その後はHDDでもSSDと同様にディレクトリトラバーサルがマルチスレッドで高速化する(find/fd等)
(よくある専用ソフトを常駐させなくてよい)
943デフォルトの名無しさん
2025/02/13(木) 21:31:19.77ID:YNJwxBZ/ メインウィンドウのウィンドウプロシージャをグローバルからクラスメンバに移したくて
一応表面的なエラーなどは出ずに起動したのですが問題ないのか不安です
断片的で分かりにくいかもですが以下で問題ないか教えていただけないでしょうか
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 );
}
一応表面的なエラーなどは出ずに起動したのですが問題ないのか不安です
断片的で分かりにくいかもですが以下で問題ないか教えていただけないでしょうか
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 );
}
944デフォルトの名無しさん
2025/02/14(金) 05:52:04.48ID:NtB8MvkN あかんやろな
945デフォルトの名無しさん
2025/02/14(金) 08:53:53.37ID:JVeRBzRc 20年以上前にMFCみたいなラッピングクラス群を自前で作ってみたことあったけど
ウィンドウプロシージャのとこをどうやったかもう忘れてしまったな……
ウィンドウプロシージャのとこをどうやったかもう忘れてしまったな……
946デフォルトの名無しさん
2025/02/14(金) 13:37:08.02ID:7nMc146l メソッドという事は、第一引数にthisが渡る必要がある。
コールバックプロシジャーの呼び出し側にその機能(thisを積む)は無い。
MFCはその部分マクロで展開していたね
コールバックプロシジャーの呼び出し側にその機能(thisを積む)は無い。
MFCはその部分マクロで展開していたね
947デフォルトの名無しさん
2025/02/14(金) 14:04:52.13ID:hgqMYig2 Best method for storing this pointer for use in WndProcにMethod 1~6まで解説されてるわ
>>946
ATLだとMethod 5: Thunkだね
>>946
ATLだとMethod 5: Thunkだね
948デフォルトの名無しさん
2025/02/14(金) 19:58:04.34ID:SfDwe3dq 俺がやったやり方書いてやろうとしたらNGワード言われてBBxまでされたわw
クソじゃんw
クソじゃんw
949デフォルトの名無しさん
2025/02/14(金) 21:57:56.25ID:NGvcdz15 method 4のやり方だし行けるんじゃない?
自分はmethod 6のイマイチ泥臭い方法でやったよ
自分はmethod 6のイマイチ泥臭い方法でやったよ
950デフォルトの名無しさん
2025/02/14(金) 22:08:59.93ID:JVeRBzRc 一次受け用のstaticなプロシージャとクラスのメソッド
あとSetPropとSetWindowLong使ってやったな確か
あとSetPropとSetWindowLong使ってやったな確か
951デフォルトの名無しさん
2025/02/27(木) 22:08:23.91ID:fu+5GN+l SetWindowSubclass
952デフォルトの名無しさん
2025/02/28(金) 06:34:40.22ID:zvJYGrzx 今更w
953デフォルトの名無しさん
2025/02/28(金) 08:53:25.56ID:9mi1Ij4k 俺がその手のことやった時はSetWindowSubclass無かったな
954デフォルトの名無しさん
2025/02/28(金) 17:04:57.17ID:kF3VgEHE 次スレよろ
955デフォルトの名無しさん
2025/03/04(火) 10:30:55.31ID:Zmr6bMX1 Win32はいつ廃止されるの?
956デフォルトの名無しさん
2025/03/04(火) 15:36:03.05ID:oVaTb1OS .netベースのWinFXが完成したら順次廃止していくらしい
957デフォルトの名無しさん
2025/03/04(火) 15:50:19.15ID:9pYVhAvI .NETベースだと2年で切り捨てられていくのか……
大変だなぁ
大変だなぁ
958デフォルトの名無しさん
2025/03/04(火) 17:51:40.09ID:KMsa0y1P Windows上の.NETがそもそもAPI呼んでるのにどうやって廃止するのw
959デフォルトの名無しさん
2025/03/04(火) 18:04:09.20ID:FptLM07E Win32APIを呼ばない.netになるんじゃね?
android版とかそうなってないの?
android版とかそうなってないの?
960デフォルトの名無しさん
2025/03/05(水) 06:08:30.10ID:Za60iql9 WinFXて、.NET Framework 3.0の開発コードだが……
961デフォルトの名無しさん
2025/03/05(水) 08:44:01.42ID:Ip/00ysh そもそもWin32APIを捨てるとか、Windowsをイチから作り直さないと不可能だろ
962デフォルトの名無しさん
2025/03/05(水) 12:33:13.43ID:Nfyn65kt 着々と64bit化は進められてるぞ
今やレガシーアプリの為だけに32bit対応があるだけだからなぁ
今やレガシーアプリの為だけに32bit対応があるだけだからなぁ
963デフォルトの名無しさん
2025/03/05(水) 12:35:52.90ID:KHVGsvS8 昔あったPowerPC、ItaniumのWindowsにもWin32apiあるの?
964デフォルトの名無しさん
2025/03/05(水) 15:45:08.28ID:Ip/00ysh965デフォルトの名無しさん
2025/03/05(水) 23:09:43.33ID:mISoeUSf >>963
なくてどうする
なくてどうする
966デフォルトの名無しさん
2025/03/05(水) 23:21:28.24ID:jH+Yt1tq https://github.com/microsoft/win32metadata
このwin32metadataプロジェクトでモダンな言語からも簡単に使えるようになった
あらゆる機能をWin32で公開してwin32metadataも更新すれば、色んな言語から直ぐ使えるようになる
なのでWin32を廃止する意味が無くなった
このwin32metadataプロジェクトでモダンな言語からも簡単に使えるようになった
あらゆる機能をWin32で公開してwin32metadataも更新すれば、色んな言語から直ぐ使えるようになる
なのでWin32を廃止する意味が無くなった
967デフォルトの名無しさん
2025/03/06(木) 16:00:16.05ID:WqcKZUUD 64bitのCのintとかlongって32bitなん?
64bitあるのはlonglongとsize_tだけ?
64bitあるのはlonglongとsize_tだけ?
968デフォルトの名無しさん
2025/03/06(木) 16:04:15.79ID:lKPjZULZ どのCだよ……
969デフォルトの名無しさん
2025/03/06(木) 21:03:06.28ID:dn1jj/ZV970デフォルトの名無しさん
2025/03/06(木) 21:11:47.39ID:5M2pGTOx LSI-C試食版
971デフォルトの名無しさん
2025/03/06(木) 21:23:51.69ID:dn1jj/ZV >>967
補足。ちなみに 64bit 環境で size_t や sizeof が 64bit unsigned になったのは
アドレス空間の伸長により 32bit 長を超える配列や構造体が (実用性はともかく) 定義出来るようになったから
補足。ちなみに 64bit 環境で size_t や sizeof が 64bit unsigned になったのは
アドレス空間の伸長により 32bit 長を超える配列や構造体が (実用性はともかく) 定義出来るようになったから
972デフォルトの名無しさん
2025/03/06(木) 22:54:13.31ID:W7TbcEiC SHARCだとcharも32bit w
973デフォルトの名無しさん
2025/03/06(木) 23:24:05.48ID:qGQPttTG974デフォルトの名無しさん
2025/03/07(金) 03:26:30.77ID:wZ5tdiFM 規格ではサイズの保証なんか全く無いからstdint.h使えって書こうとしたけどそういやWin32スレだった
975デフォルトの名無しさん
2025/03/07(金) 08:52:50.74ID:0UyMFctv なんでlongとintが同じなんだよって昔から思ってるけど、まぁ今更
976デフォルトの名無しさん
2025/03/07(金) 12:13:30.16ID:P73h4RuN int64_tはあるのにint32_tが無いのは何故
977デフォルトの名無しさん
2025/03/07(金) 12:50:01.21ID:23ArObOh stdint.h(20):
typedef int int32_t;
typedef int int32_t;
979デフォルトの名無しさん
2025/03/08(土) 20:22:43.73ID:5qDoPn2l ファイルからそのファイルのハンドル握ってるプロセスを特定する事って可能?
プロセスが握ってるハンドルを列挙していく事はntdll利用したら可能だからその方法で結果的に上記の目的は達成できるっちゃできるんだけど、逆方向から出来たほうが工程は減りそうだから可能なら教えてもらいたい
プロセスが握ってるハンドルを列挙していく事はntdll利用したら可能だからその方法で結果的に上記の目的は達成できるっちゃできるんだけど、逆方向から出来たほうが工程は減りそうだから可能なら教えてもらいたい
980デフォルトの名無しさん
2025/03/08(土) 21:37:29.02ID:YZ/xAsrC performance meter
981デフォルトの名無しさん
2025/03/12(水) 22:20:50.10ID:P3gXMYWX >>979
自己レスだけど全排他ロックされたファイルもCreateFile(path, 0, 0, NULL, OPEN_EXISTING, FILE_READ_ATTRIBUTES, NULL);で開けるんだね
ハンドルさえ得られればNtQueryInformationFileのFILE_INFORMATION_CLASSで簡単にハンドル握ってるプロセス列挙出来た
自己レスだけど全排他ロックされたファイルもCreateFile(path, 0, 0, NULL, OPEN_EXISTING, FILE_READ_ATTRIBUTES, NULL);で開けるんだね
ハンドルさえ得られればNtQueryInformationFileのFILE_INFORMATION_CLASSで簡単にハンドル握ってるプロセス列挙出来た
982デフォルトの名無しさん
2025/03/12(水) 22:22:14.84ID:P3gXMYWX FILE_INFORMATION_CLASSじゃなくてFILE_INFORMATION_CLASS::FileProcessIdsUsingFileInformationで列挙できた
983デフォルトの名無しさん
2025/03/12(水) 22:30:58.42ID:s/+fNWEq984デフォルトの名無しさん
2025/03/12(水) 22:32:30.39ID:s/+fNWEq CWDでなくて
PWDね
PWDね
985デフォルトの名無しさん
2025/03/12(水) 22:36:31.70ID:s/+fNWEq Process Explorerで見る限りは、プロセスpのハンドル一覧にはAのハンドルは見えないけど...
986デフォルトの名無しさん
2025/03/13(木) 07:40:49.73ID:Wbt/WM1E987デフォルトの名無しさん
2025/03/13(木) 12:00:07.35ID:q1HKk6WD988デフォルトの名無しさん
2025/03/13(木) 12:50:16.04ID:fUgksTzw >>983に言えよ
989デフォルトの名無しさん
2025/03/13(木) 13:15:20.89ID:1bKyRJrk >>988
急にどうした?雰囲気悪くするだけだぞ
急にどうした?雰囲気悪くするだけだぞ
990デフォルトの名無しさん
2025/03/13(木) 13:19:04.13ID:1bKyRJrk そもそも979が質問はするけど人からの質問には答えないタイプに見えるからそこからだな、雰囲気改善は
991デフォルトの名無しさん
2025/03/13(木) 13:23:53.41ID:1bKyRJrk992デフォルトの名無しさん
2025/03/13(木) 13:40:50.24ID:Wbt/WM1E993990
2025/03/13(木) 14:39:30.31ID:WtHN9N5n ごめん、986の感じから981~983の流れが全く通ってないから981とは別人に見えた
確認したい側が手を動かすのは原則だけど、既に下準備が整っているのだからちょっとした便乗質問には答えてあげるのが助け合いの精神だな
もっとも986時点では作業フォルダを握っている前提で983を見てなかったからやむなしか
で>>988は誰よ?
確認したい側が手を動かすのは原則だけど、既に下準備が整っているのだからちょっとした便乗質問には答えてあげるのが助け合いの精神だな
もっとも986時点では作業フォルダを握っている前提で983を見てなかったからやむなしか
で>>988は誰よ?
995デフォルトの名無しさん
2025/03/13(木) 15:58:51.91ID:fUgksTzw 誰でもねぇよただのスレ見てるだけの人間だ
誰かじゃねぇと発言すらできねぇのかよ
つーかお前こそ誰だよw
誰かじゃねぇと発言すらできねぇのかよ
つーかお前こそ誰だよw
996デフォルトの名無しさん
2025/03/13(木) 16:02:25.92ID:fUgksTzw997990
2025/03/13(木) 16:08:57.63ID:BLU3LOZR >> ID:fUgksTzw
スレ立て乙
ただの荒らしだと思ったが見直したぞ
仲良く行こう
スレ立て乙
ただの荒らしだと思ったが見直したぞ
仲良く行こう
998デフォルトの名無しさん
2025/03/13(木) 18:44:47.29ID:+BJ849hc >>993
お前は誰なんだ
お前は誰なんだ
999デフォルトの名無しさん
2025/03/13(木) 19:05:51.90ID:kIpNzUxV だーれだ?
1000デフォルトの名無しさん
2025/03/13(木) 19:18:50.54ID:biPGw+Hh キチガイ
10011001
Over 1000Thread このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 1189日 21時間 45分 55秒
新しいスレッドを立ててください。
life time: 1189日 21時間 45分 55秒
10021002
Over 1000Thread 5ちゃんねるの運営はUPLIFT会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《UPLIFT会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
4 USD/mon. から匿名でご購入いただけます。
▼ UPLIFT会員登録はこちら ▼
https://uplift.5ch.net/
▼ UPLIFTログインはこちら ▼
https://uplift.5ch.net/login
運営にご協力お願いいたします。
───────────────────
《UPLIFT会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
4 USD/mon. から匿名でご購入いただけます。
▼ UPLIFT会員登録はこちら ▼
https://uplift.5ch.net/
▼ UPLIFTログインはこちら ▼
https://uplift.5ch.net/login
レス数が1000を超えています。これ以上書き込みはできません。
ニュース
- もはや国が「日産」を救済するしかないのか? 産業空洞化の懸念 “国の決断”が日本の自動車産業を左右する [煮卵★]
- 江藤拓農水相が改めて続投表明 ★2 [少考さん★]
- もはや国が「日産」を救済するしかないのか? 産業空洞化の懸念 “国の決断”が日本の自動車産業を左右する ★2 [煮卵★]
- 本村弁護士 中居正広氏6時間聞き取りが黙殺≠ウれた理由推察「関係ないことだけしゃべった」「信用性がない」 [ネギうどん★]
- アパートに刃物持った男が立てこもり 複数の人質か 船橋市 [蚤の市★]
- 【芸能】大河ドラマ 永野芽郁の代役は白石聖 …不倫報道の「ご迷惑鑑み」ラジオも降板 CM永野9社、田中圭3社消滅★2 [冬月記者★]
- 【悲報】日本人「電車の中で駅弁を食べてる中国人観光客に『お前臭い。電車の中で飯食うな!』って怒鳴ったら電車から降りて草」931万い [257926174]
- 「江藤農林水産大臣は小売りの動向についてみずからスーパーに赴き、価格を確認するなど注意深く把握している」林官房長官が陳謝 [881878332]
- アメリカの港湾さん、本当の事を言ってしまう「中国に100%関税かけたって何十年も作ってなかったもんが急に作れるわけ無いだろ!」 [624898991]
- 【東京】水道基本料金無償化!お値段なんと… [696684471]
- 2025年の出生数、推計で65万人。去年の69万人から大きく減少の見込み。このままだと2030年には50万人割れ【岸田石破】 [306119931]
- 政府「頼むか子作りしてくれぇ…日本が滅びるぞ…」 [814697831]