Win32API質問箱 Build122 at TECH
Win32API質問箱 Build122 - 暇つぶし2ch396:デフォルトの名無しさん
16/05/09 23:59:03.23 M3iPLLj4.net
>>382
俺は回答者じゃないぞ
ただ>>376が質問のトピックだけ見てそれに対する回答にまで目を通していない可能性を示唆しただけ
本当にあのリンク先が質問投げられてるだけで解決してないだけのトピックならそれを貼るのは意味分からんけど
解決してるんちゃうの?って話

397:デフォルトの名無しさん
16/05/10 00:04:44.38 5J1aLd4L.net
>>384
それだと、クラッシュダンプを取っている意味がなくね?

398:デフォルトの名無しさん
16/05/10 01:10:03.16 95ydQ9Nw.net
>>383
シンボルファイルがあれば見れるでしょ。

399:デフォルトの名無しさん
16/05/10 01:21:14.99 5J1aLd4L.net
>>387
みれました。

400:デフォルトの名無しさん
16/05/10 13:08:37.18 2ogGQYkn.net
カスタムドローとオーナードローの違いが分からん

401:デフォルトの名無しさん
16/05/10 14:05:48.41 Jb8df6a5.net
毎ターンの最初にドローするのがオーナードロー
カードの特殊効果でドローするのかカスタムドロー

402:デフォルトの名無しさん
16/05/10 15:01:34.24 HhVOss0K.net
細かいところまで全部自分で描画するのがオーナードロー
OSがある程度描画してくれて、ステップごとに自分で描画したければ描画できるのがカスタムドロー

403:デフォルトの名無しさん
16/05/10 15:42:05.83 ZuNavWCV.net
オーナードローは全て自分で
カスタムドローは割り込んで差し替え

404:デフォルトの名無しさん
16/05/10 18:15:28.39 5J1aLd4L.net
たとえば、ダイアログにeditでもおいた場合
editのオーナーはダイアログですよね
ってことはeditをダイアログがおこなわなきゃいけないってこと?
それともオーナーをドローする?

405:デフォルトの名無しさん
16/05/10 22:10:15.17 vVT3Tded.net
MultiByteToWideChar関数とWideCharToMultiByte関数の変換結果ってNULL文字入ってますか?

406:デフォルトの名無しさん
16/05/10 22:12:24.86 wov2Q3bj.net
入ってるけど先っちょだけなのでセーフ ノーカン

407:片山博文MZ ◆T6xkBnTXz7B0
16/05/10 22:16:55.19 CPTIUhXJ.net
>>394
長さに-1を指定するとNUL文字が入るよ

408:デフォルトの名無しさん
16/05/10 22:37:50.04 vVT3Tded.net
>>396
ありがとう


409:ございます CommandLineToArgvW関数を使ってGetCommandLine関数から受け取ったものを解析しようとしているのですがうまくいきません ソースはこれなんですがヒントがほしいです https://ideone.com/blqCFb あとMessageBox関数ってどうしてconstしか受け付けてくれないんですか?



410:デフォルトの名無しさん
16/05/10 23:45:17.67 ee1FUJs8.net
>.396
エラーが出たらメッセージをよく見ましょう。
エラーが起こった場合にキャストして無理矢理エラーを消しても動く可能性はほとんどありません。

411:デフォルトの名無しさん
16/05/10 23:49:50.96 y6IvleFL.net
文字列をキャストして変換したツモリナールは罠
ちゃんと変換しよう

412:デフォルトの名無しさん
16/05/11 00:23:03.54 rUu5NPeL.net
うまくいきました!
あとはCommandLineToArgvW関数がちょっとわからないところありますが試行錯誤してみます
どうしてもダメだったらまたきます

413:デフォルトの名無しさん
16/05/11 15:39:15.62 qkI+/TV/.net
馬鹿には無理

414:デフォルトの名無しさん
16/05/11 16:33:16.52 l/Aku55r.net
>>397
const なし → const ありは暗黙変換の範囲
無駄なキャストするな
どうしてconst*無し*しか受け付けてくれないんですか?
なら許す

415:デフォルトの名無しさん
16/05/11 22:07:09.71 AfFgGj2Z.net
グローバル変数を持つDLLを遅延読み込みやLoadLibraryした場合に、そのグローバル変数に
アクセスする方法ってないんでしょうか?GetProcAddressのような。
遅延読み込みを使わなければ__declspec(dllimport)でいけるんですが、遅延読み込みにすると
LNK1194エラーになってしまいます。

416:デフォルトの名無しさん
16/05/11 22:12:17.37 9I+RCTR4.net
安全な方法はないんじゃないですかね
DllにGetGlobalVar()とか適当な関数を追加してグローバル変数へのポインタを取得してください

417:デフォルトの名無しさん
16/05/11 22:19:35.79 zhYWy9+O.net
GetProcAddressは関数だけじゃなくて、変数のアドレスも取得できる
(exportされていれば)

418:デフォルトの名無しさん
16/05/11 22:31:25.37 AfFgGj2Z.net
>>405
ありがとうございます。GetProcAddressでいけました。
それにしても、これは盲点でした。

419:デフォルトの名無しさん
16/05/13 18:36:08.65 GSvBVZn8.net
Cランタイムのmemcmpに対応するWin32APIってないのでしょうか?
上の方でWin32APIではCランタイムを使うな的なレスがありますが、何かしらのAPIに置き換え可能なのでしょうか?
それとも自作すべき?

420:片山博文MZ ◆T6xkBnTXz7B0
16/05/13 18:47:38.06 Q4+gmma8.net
>>364
自己解決しました。COMPOSITIONSTRING構造体のサイズ情報の不整合が原因でした。

421:片山博文MZ ◆T6xkBnTXz7B0
16/05/13 18:51:36.20 Q4+gmma8.net
>>407
Cランタイムの方が高性能で合理的。気にせず使いたまへ。

422:デフォルトの名無しさん
16/05/13 18:54:16.38 GSvBVZn8.net
>>409
あろがとうございました。気にしないでおきます。

423:デフォルトの名無しさん
16/05/14 22:54:45.77 vRpxoSsR.net
Spinコントロールを使用している(Editコントロールに関連付けずUDN_DELTAPOS
を処理している)アプリで、マウスでは長押しすればUDN_DELTAPOSが連続して送られ、
さらに長押しでアクセラレーションが働く(増分が増える)のですが、(タブレット
の)パネルへの指での長押しでは、UDN_DELTAPOSが1回しか送られて来ません。
指での長押しでもマウスと同じように動作させるには、どうすれば良いでしょうか?

424:デフォルトの名無しさん
16/05/14 23:04:18.19 E3fn5B/n.net
高橋名人になる

425:デフォルトの名無しさん
16/05/16 16:27:41.62 IBGTyv6p.net
タッチパネルには向いてない(非推奨と宣言されている)から諦めて他の部品を探す

426:デフォルトの名無しさん
16/05/16 18:56:25.57 P91hC5sf.net
>>413
コメント、ありがとうございます。
最初はSliderコントロールで作っていたのですが、タッチでは非常に操作しづ
らいため(大きなボタンの)Spin


427:に変えてみたのに前記のような次第です。 動きを見てみると・・・ マウスの場合はボタンを押したときにWM_LBUTTONDOWN・離した時にWM_LBUTTONUP が来るのが、パネルだと押したときにWM_LBUTTONDOWNは来ず、離した時にDOWNと UPが続けて来るようです。(レピートもアクセラレーションも働かないのは当然) 数値の範囲が広い(5~5000等)ため、DropDownList等にはできず。 WM_TOUCHメッセージを受けてどうにかできないかトライ中。



428:デフォルトの名無しさん
16/05/16 22:03:35.57 89EWpk6s.net
タッチするとスライダーが出るっていうのもあり

429:デフォルトの名無しさん
16/05/23 02:26:17.08 x4vKVRRs.net
ダブルクリックメッセージの後の、WM_LBUTTONUPが地味にうっとうしい
こんなの誤作動の元だろ・・・

430:デフォルトの名無しさん
16/05/23 02:32:42.88 x4vKVRRs.net
MS的にはダブルクリックしたままドラッグするような操作も想定していたのかもしれないが
そんなオペレーションが必要なアプリに出会ったことがない
ダブルクリック自体オプション的な扱いなんだから
ダブルクリックの後のWM_LBUTTONUPもオプションにしてほしかった
いちいちキャンセル処理するのが面倒

431:デフォルトの名無しさん
16/05/23 03:35:11.85 CHotlqdd.net
Firefox,Chrome,サクラエディタではダブルクリックのままのドラッグサポートしてるよ
単語単位選択のまま範囲が拡張される

432:デフォルトの名無しさん
16/05/23 03:42:10.00 CHotlqdd.net
というかメモ帳もVisual Studioでも同じだった
メモ帳は日本語だと1文字づつになるけど

433:デフォルトの名無しさん
16/05/23 09:09:35.53 IdraLXZT.net
>>417
ダブルクリック
→あ、ミスったからそのまま範囲外に持っていってからWM_LBUTTONUP
とかない?

434:デフォルトの名無しさん
16/05/23 20:01:41.03 x4vKVRRs.net
>>419
必須の動作ではないでしょ
その意味で
そんなぺレーションが必要なアプリに出会ったことがない
そもそも、普通のクリックの後とダブルクリックの後とで
BUTTONUPのメッセージが共通なのがいやらしい
普通のクリックとダブルクリックでは、アプリは別の動作をするのが普通なのだから
そのあとのBUTTONUPのメッセージも分けてほしかった
WM_LBUTTONDBLCLKDOWN→WM_LBUTTONDBLCLKUP
とかね
普通に考えて、LボタンとRボタンで、UPのメッセージはそれそれ別になってて
それぞれWM_LBUTTONUP、WM_RBUTTONUPでしょう?
これがどの場合でもWM_BUTTONUP一つに共通になってたら嫌でしょう
これと同じことだと思うんですけどねー 何でメッセージを共通にしたんだろうかね
別のメッセージを共通に扱うのは簡単だけど
共通のメッセージを別に扱うのは面倒

435:デフォルトの名無しさん
16/05/23 20:18:48.93 BbHX4Eo2.net
>>421
> これがどの場合でもWM_BUTTONUP一つに共通になってたら嫌でしょう
嫌とか言う以前に左右ボタンを同時押しされたら区別できないだろ
頭の構造がプログラマに向いてないんじゃね?

436:デフォルトの名無しさん
16/05/23 20:34:56.44 Xj6YQxJ5.net
>>421
何がしたいの?
そうだねすごいねって言って欲しいのか?
あ?ボケが

437:デフォルトの名無しさん
16/05/23 20:41:01.24 x4vKVRRs.net
ダブルクリックの後のUPのメッセージが
普通のクリックの時と別になっていたほうが良いと思いません?

438:デフォルトの名無しさん
16/05/23 20:47:25.72 Xj6YQxJ5.net
同意してくれないと暴れるよって付け加えろ
同意が欲しいだけのくせに否定されると嫌だからって
質問の体を取らせようとする女の腐ったような奴は見苦しいんだよ

439:デフォルトの名無しさん
16/05/23 20:52:30.88 x4vKVRRs.net
どうして同意してくれないんですか?

440:デフォルトの名無しさん
16/05/23 20:54:08.47 x4vKVRRs.net
逆に何か理由があって
ダブルクリックと普通のクリックの後のUPのメッセージが同じになってるんですかね
同じになっていたほうが便利なことって、ちょっと思い浮かばないんですけど

441:デフォルトの名無しさん
16/05/23 20:55:24.82 6EggAem/.net
>>424
思いません。
理由は述べません。
議論もしません。
ですが思いません。
こちらからは以上です。

442:デフォルトの名無しさん
16/05/23 22:37:23.51 WWhEKyeV.net
トリプルクリックとか4thクリックの実装が汚くて一々気にしたら負け
という結論を20年以上前に得たことを思い出した

443:デフォルトの名無しさん
16/05/26 09:04:44.12 QP0+R2rv.net
グローバル変数だろうが、ローカル変数だろうが、コンパイル時にそのアドレスは決定してますよね。実行することなく、その変数のアドレスを知りたいのですがどうすればしれますか?

444:デフォルトの名無しさん
16/05/26 09:40:20.34 vJm9AXBO.net
最適化で消えたりレジスタのみで処理されてるかもしれねーじゃん
出直せ

445:デフォルトの名無しさん
16/05/26 10:09:09.07 6KAnMnB/.net
>>430
リンカーにマップを出力させる

446:デフォルトの名無しさん
16/05/26 13:38:43.82 PPtVZd97.net
>>430
ローカルは実行時まで決定しないんじゃね

447:デフォルトの名無しさん
16/05/26 13:50:59.72 M2X0d2Pu.net
>>430
グローバルと静的変数はコンパイル時に決まる
それはビルド時にシンボルマップファイルを生成させれば見られる
ローカルとヒープは実行時じゃないと無理
レジスタにのってる奴は実行時でも無理

448:デフォルトの名無しさん
16/05/26 14:07:29.18 qDP8EFHX.net
ローカルちゃん。メインスレッドのスタックそのものののアドレスはASLRでないなら固定じゃなかったっけ
関数呼び出しのツリーが固定ならアドレスは計算可能かと思ったけど
プログラムの引数とかallocaとか使うとアドレスずれるんだっけか?

449:デフォルトの名無しさん
16/05/26 15:03:48.00 iU2f12RA.net
お前は囀らなくていい

450:デフォルトの名無しさん
16/05/26 18:18:53.68 YS/YHZQs.net
シフトキーを押しながらダブルクリックとかあった

451:デフォルトの名無しさん
16/05/26 18:48:05.78 ZS10B00B.net
>>436
フリガナ付けてくれ

452:デフォルトの名無しさん
16/05/26 20:19:26.84 Z+cHO4t2.net
>>435
こんなのはどうなるの?
#include <stdio.h>
int a = 0;
void Func1(void) {
int b;
static int c;
printf("a:%p b:%p c:%p\n",&a,&b,&c);
if (++a<4) Func1();
else a = 0;
}
void Func2(void) {
int x;
printf("x:%p\n",&x);
Func1();
}
int main(void) {
Func1(); printf("\n");
Func1(); printf("\n");
Func2(); printf("\n");
return 0;
}

453:デフォルトの名無しさん
16/05/26 20:42:30.72 tEodBnd+.net
サエズ
囀 る

454:デフォルトの名無しさん
16/05/26 20:49:06.51 e4t247TT.net
何の価値も感じない問答だ
まともでない手段が出てくるときは9割9分9厘方針が間違ってるか
横着するつもりでドツボに嵌まる選択をしている

455:デフォルトの名無しさん
16/05/26 21:09:18.72 kT3OAx5i.net
Unicode形式:  お前は囀さえずらなくていい
青空文庫形式: お前は|囀《さえず》らなくていい
まともに表示できるブラウザがあるかは知らん

456:デフォルトの名無しさん
16/05/31 01:01:12.53 2D2ULHTm.net
vbs から Win32API を呼ぶ方法はありますか?
無い場合、OS にランタイム等をインストールせずに実行できる実行ファイルを作れて
API を呼べるお勧めの言語はありますか?

457:デフォルトの名無しさん
16/05/31 01:54:47.72 dsq6ciRV.net
c

458:デフォルトの名無しさん
16/05/31 07:09:12.05 Q6hYp8jt.net
vbs から Win32API を呼ぶ方法
でそのままググれ

459:片山博文MZ ◆T6xkBnTXz7B0
16/06/04 01:14:28.88 9azu721e.net
CPUが64-bitで、かつOSが32-bitである環境がアリエールとは驚きだ。

460:片山博文MZ ◆T6xkBnTXz7B0
16/06/04 01:19:03.37 9azu721e.net
こうした「ねじれ環境」では最新のInkscapeなどのプログラムが動かないことがあるらしい。

461:デフォルトの名無しさん
16/06/05 09:00:41.62 n7k60ruZ.net
>>446
普通にあるだろ 少し時代遅れなだけだ

462:デフォルトの名無しさん
16/06/05 11:20:52.39 wpgdhQ4H.net
>>446
Windows7の時代はそんなのが当たり前だったが。Windows8の時代でも普通にあった。
64bitのOSが標準になったのはここ数年だ。
OSが64bitになると32bitのドライバーは完全に使えなくなるし、搭載メモリーが4G以下だと
64bitにするメリットがあまりなかったからな。

463:デフォルトの名無しさん
16/06/05 13:12:51.41 5CTJmFcd.net
>>430
そんなアドレス取得して何をしたい?

464:デフォルトの名無しさん
16/06/05 13:31:26.44 4pXfFBXo.net
>>450
そこは本題ではない

465:デフォルトの名無しさん
16/06/05 14:16:02.61 MNddmiLP.net
初心者なんて手段と目的と発想がとっちらかってるから
本人が本題だと思ってることは本題ではない可能性のが高い
岡目八目

466:デフォルトの名無しさん
16/06/05 14:26:35.95 wpgdhQ4H.net
ゲームか何かのデータをオンラインで覗き見や改竄したかったんじゃないの。

467:デフォルトの名無しさん
16/06/05 15:06:46.74 4pXfFBXo.net
>>452
>>430の情報だけでは何をしたいかは関係無い

468:デフォルトの名無しさん
16/06/05 15:14:10.27 ALg55j00.net
みんなひどいな、ちゃんと教えてやれよ。
>>430
>グローバル変数だろうが、ローカル変数だろうが、コンパイル時にそのアドレスは決定してますよね
いいえ。

469:デフォルトの名無しさん
16/06/05 16:18:47.98 b0qHmmcL.net
>>454
別解ができるできるかもしれないから本来の目的を聞いてんだろ
頭悪いんじゃねーの?

470:デフォルトの名無しさん
16/06/05 16:43:38.72 4pXfFBXo.net
>>456
実行することなくアドレス知った後に何をしたいか知っても
アドレス知らなければできないだろバカ?

471:デフォルトの名無しさん
16/06/05 17:05:53.27 m3XTKDYl.net
>>456
別解は訊かれてないからそれは余計なお世話
お節介おばさん

472:デフォルトの名無しさん
16/06/05 21:34:41.29 iq7db8Ia.net
>>455
「言語とか環境によるからそれだけでは答えられない」が正解だろ。
懐かしの *.com タイプの実行ファイルなら、アドレスが決まってると言えなくもない。
実行時にセグメントアドレスが変わるだけでプログラム内で意識すべきアドレスは変わらないからな。

473:デフォルトの名無しさん
16/06/05 21:46:16.77 mNRbI/bE.net
>>459
ローカル変数はスタック上にあるんだろう?具体的にアドレスを出すのは難しいんじゃないかな

474:デフォルトの名無しさん
16/06/05 22:26:30.18 iq7db8Ia.net
>>460
comタイプだと開始時の SP も確定できる。
だから main() のローカル変数のアドレスは確定できるという意味だったけど、
そこから呼び出される関数内のローカル変数のアドレスはそこに至るまでの
スタックの使用状態に依存するからそういう意味では確定ではないな。
関数ごとに確定したら再帰呼出できない。

475:デフォルトの名無しさん
16/06/06 00:29:06.57 KlmLRyc2.net
だから、まとめると、
Q:決まってますね?
A:いいえ、決まってません
だろ。

476:デフォルトの名無しさん
16/06/06 01:10:07.28 b3wiPZEu.net
A.
決まってないことがほとんどだけど、条件によっては決まってる事もあります。
自分で SP を操作して決めることも場合によっては可能です。
かな。

477:デフォルトの名無しさん
16/06/06 01:47:32.02 KlmLRyc2.net
>条件によっては
そういうのは「決まってない」って言うんだよ。
だって条件明示できないだろう?

478:デフォルトの名無しさん
16/06/06 03:02:28.37 f8xfohh0.net
ランダム化されたベースアドレス
とか
固定ベースアドレス
とか

479:デフォルトの名無しさん
16/06/06 08:18:46.91 l5dDSXNJ.net
エミュでベースアドレスが固定なのはどうやってんの?

480:デフォルトの名無しさん
16/06/06 08:32:20.01 ltcrYsll.net
エミュレータは所詮エミュレータ
完全に実物を再現することは出来ない
ベースアドレスが固定されているのであれば、ホストマシンの速度や容量の関係でゲストマシンのメモリマッピングの
エミュレーションを放棄して処理の簡素化を図っているだけ

481:デフォルトの名無しさん
16/06/06 20:24:45.16 QosaUsgl.net
宇宙開闢の瞬間からアドレスは決まっているかもな
それを知ることができるかは別だが

482:デフォルトの名無しさん
16/06/06 21:29:21.12 XWFkF7NO.net
標準 Windows APIというサイトより

キーボードイベントはアプリケーションがそれを処理するよりも速い速度でタイプすることができます
しかし、基本的にキーボードイベントはアクティブなウィンドウに対して送られますが
キューのメッセージの途中で、アクティブなウィンドウが切りかえられた場合
その後のキーイベントは切り替わったウィンドウに送られるべきです

これの具体例がわかりません。キーボードを連打してウインドウがたくさん開いてる状態
なんてPC操作しててありますか?

483:デフォルトの名無しさん
16/06/06 21:33:07.14 okPwaxJe.net
あるよ
WM_LBUTTONDOWNでウィンドウを閉じたら
WM_LBUTTONUPは別のウィンドウに届く
怖いね

484:デフォルトの名無しさん
16/06/06 22:30:16.23 XWFkF7NO.net
>>470
切り替わったウインドウに送られるってことですか???
それを防ぐための機能はあるんでしょうか?

485:デフォルトの名無しさん
16/06/06 22:35:42.16 XWFkF7NO.net
防げるわけないか

486:デフォルトの名無しさん
16/06/06 23:20:33.76 okPwaxJe.net
一応そういう機能は用意されているよ
ただし、切り替わったことを検出する機能だが
DOWNとUPは必ず対で同じウィンドウに送られるとは限らないから
そのつもりで書かないと変なことになるよ
LBUTTONDOWNでフラグを立ててドラッグ処理してLBUTTONUPでフラグを戻すという
ありふれた処理ですらバグる可能性があるよ
マウスをキャプチャしていたとしても、途中でAlt+TABなどでウィンドウを切り替えたりしたら
勝手にキャプチャが解除されてLBUTTONUPは飛んでこないよ
キャプチャが解除されたことを検出してフラグを元に戻すなど、後処理をしないとダメ
怖いね

487:デフォルトの名無しさん
16/06/07 00:13:54.68 41OqMrsx.net
たまにWin10の起動処理で、マウスが張り付いて動かないことがあり、
再起動しているのだが、アプリがそういう事を想定していないからか
Windowsは恐ろしい

488:デフォルトの名無しさん
16/06/07 08:05:48.66 GLc24ffb.net
ウィンドウプロシージャで描画するときのはじめと終わりは
hdc = GetDC(hwnd);

ReleaseDC(hwnd , hdc);
のパターンもしくは
hdc = BeginPaint(hwnd , &ps);

EndPaint(hwnd , &ps);
だと思いますが、後者はデバイスコンテキストをデバイスコンテキストを
解放してないと思うんですがこれでいいんでしょうか?
後、文字やグラフィックの描画に関しては、絶対に後者のほうがいいそうですが
前者使う時は?

489:デフォルトの名無しさん
16/06/07 08:06:51.30 GLc24ffb.net
すいません
×「デバイスコンテキストをデバイスコンテキストを」で
正しくは「デバイスコンテキストを」です。

490:デフォルトの名無しさん
16/06/07 08:07:46.67 GLc24ffb.net
デバイスコンテキストを解放してないと描画機能に影響を及ぼすみたいな
事書いてありますし、後者で大丈夫ですか?

491:デフォルトの名無しさん
16/06/07 09:54:05.47 L0Kpz/xt.net
 PAINTSTRUCT構造体のメンバを見ればデバイスコンテキストハンドルがあるのがわかる。
実際のところBeginPaint()の戻り値は冗長。

492:デフォルトの名無しさん
16/06/07 09:56:09.48 4sqWtxYj.net
まったく変態APIだよな

493:デフォルトの名無しさん
16/06/07 10:01:23.12 L0Kpz/xt.net
それからGetDC()とBeginPaint()の使い分けは処理の内容じゃない。
BeginPaint()は無効領域に書き込みを開始する関数なので無効領域が発生したときに来る
WM_PAINTメッセージのときしか使わないし、無効領域の描画が完了したらそのことをEndPaint()
で知らせなければならない。何かの理由で(クラスのメンバとして保持するとか)HDCを持ちっぱなし
にするならGetDC()を使う。
逆にWM_PAINTが来てるときにGetDC()を使うと無効領域が無効領域のままなのでメッセージが
来続けることになる。自分でInvalidateRect()で無効領域を発生させまくってるなら大差ないけど

494:デフォルトの名無しさん
16/06/07 11:02:25.45 L0Kpz/xt.net
あぁそれからBeginPaint()は無効領域の外への描画は反映されないようになってるから
WM_PAINT以外で使っても無効領域がないので各種描画関数自体は成功するけど画面には
反映されない。
WM_PAINTを呼ぶのにSendMessage()じゃなくてInvalidateRect()を使うのも同じ理由。

495:デフォルトの名無しさん
16/06/07 11:17:37


496:.48 ID:L0Kpz/xt.net



497:デフォルトの名無しさん
16/06/07 16:41:36.62 DjDItv96.net
>>478
ありがとうございます。
つまりpsというオブジェクトがデバイスコンテキストハンドルを開放する
メソッドなりがEndpaint中に実行されてるってことですね。
>>481
なるほど、BeginPaint()使っても描画されない時があるのはWM_PAINTとセット
じゃないからですね…なるほど

498:デフォルトの名無しさん
16/06/07 16:44:32.25 DjDItv96.net
ただ無効領域っていうのはプログラム開始時はどうなってるんですか?
LPTSTR lptStr = TEXT("Kitty on your lap");
switch(msg) {
case WM_DESTROY:
PostQuitMessage(0);
return 0;
case WM_PAINT:
hdc = BeginPaint(hwnd , &ps);
TextOut(hdc , 10 , 10 , lptStr , lstrlen(lptStr));
EndPaint(hwnd , &ps);
return 0;
}
この場合だと文字が実行時に描かれていますが、プログラムの最初は
そもそも無効領域なんてないはずだからBeginPaintが反応しないはずだと思いますけど
実際文字列表示されますし。

499:デフォルトの名無しさん
16/06/07 16:53:42.50 w2gqx7DJ.net
>>484
UpdateWindow()

500:デフォルトの名無しさん
16/06/07 17:02:56.06 RY15Skw4.net
>プログラムの最初はそもそも無効領域なんてないはず
いやいや

501:デフォルトの名無しさん
16/06/07 17:24:17.39 DjDItv96.net
あれ理解してないかな俺
無効領域ってのは一端描画されて、他のアプリで消された領域っていう
理解ですけど…

502:デフォルトの名無しさん
16/06/07 19:25:51.81 NYG4EICE.net
それは勝手なお前の思い込みだから知らない

503:デフォルトの名無しさん
16/06/07 21:36:26.14 L0Kpz/xt.net
>>486
無効領域は「描画の必要がある領域」だからそういう場合「にも」無効領域は発生する。
後はInvalidateRect()が無効領域を発生させる関数だし、CreateWindow()の後は画面全体が
無効領域になってるからその旨をUpdateWindow()で知らせてやることで1回目のWM_PAINTがよばれる。
>>484には書いてないけどCreateWindow()の後メッセージループに入る前に使ってるでしょ?

504:デフォルトの名無しさん
16/06/08 07:27:04.52 ZY4F9/6a.net
別に UpdateWindow() を呼んだりしないけどね

505:デフォルトの名無しさん
16/06/08 10:25:31.59 AssKLBZs.net
>>489
>>無効領域は「描画の必要がある領域」だからそういう場合「にも」無効領域は発生する。
なるほどそうですよね。すいません僕がバカでこのような考えできませんでした。

506:デフォルトの名無しさん
16/06/08 11:25:15.46 AssKLBZs.net
やっぱりわからないw
描画の必要がある領域っていうのは
プロシージャ呼ばれる前にはわからないんじゃ?
だってプロシージャ内でどう描くか記述してるんだから。
それなのに再描画必要っていってプログラム起動してしょっぱなに
WM_PAINTが発行されるのは何故なんですか?

507:デフォルトの名無しさん
16/06/08 11:25:39.49 AssKLBZs.net
と思ってしまいます。

508:デフォルトの名無しさん
16/06/08 11:33:32.92 WRRf0iRn.net
(再)描画管理はOS(とウインドウマネージャ)の仕事
ウインドウが非表示から表示になったとか裏から表に出たとか
いろんなケースで
WM_PAINT が送られる

509:デフォルトの名無しさん
16/06/08 11:35:39.56 WRRf0iRn.net
"再"描画 とかリフレッシュとかいう言葉に勘違いするのはよくある罠かな
無効化というより未処理化というのがわかりやすい
描く内容が変わったから画面更新(の指示)するのはアプリケーションの仕事
ウインドウ全体もしくはその一部を塗り直し箇所としてマーキングする
そこから先は上の再描画と同じ流れ

510:デフォルトの名無しさん
16/06/08 11:36:07.17 lMpdbKpY.net
>プロシージャ呼ばれる前にはわからないんじゃ?
何故そう思ってしまうのかが逆に全然わからない
CreateWindow直後はウインドウ全体が「描画の必要がある領域」だっていうのはシステムは当然わかってるよ

511:デフォルトの名無しさん
16/06/08 11:44:43.23 XFtKz/Go.net
どう言ったら理解できるのかがもはやわからないんだけど
真っ白な紙を渡されたら、何も書かれてない、つまり無効領域だから
何か書かなければならないのは分かるよね
もはや何のたとえ話かも�


512:墲ゥらないけど 普通の人はそんなところでつまずかないから相当気合い入れたほうが良い



513:デフォルトの名無しさん
16/06/08 16:07:34.37 ZLPAH2q/.net
>>492
簡単に言うとシステムがウィンドウの状態を見てる
そんで、被さってたウィンドウがどいたとか裏に隠れてたけど表に出てきたとか
最小化から元のサイズに戻ったとか最大化されたとかの時に無効になった(再描画が必要になった)として
WM_PAINTを送ってくれる

514:デフォルトの名無しさん
16/06/08 16:17:29.92 ZLPAH2q/.net
あ、プログラム起動してしょっぱなか
プログラムを起動してウィンドウが表示されるとクライアント領域の内容も
描画しないといけないということで、クライアント領域は無効な描画領域状態(描画が必要な状態)
なのでWM_PAINTを送ってくれる

515:デフォルトの名無しさん
16/06/09 09:07:11.76 enLYes+t.net
文字が切れて描画の必要があるときはWM_PAINTが呼ばれる事は理解しました。
ただプロシージャ自体は再描画する必要があるというイベントしか受け取って
ないわけですよね。実際TextOutで文字全体を表示しなければならないし。
では例えば具体的に今何ピクセルの情報が欠損してるかなど、
欠損してる位置などを記憶してるオブジェクトは何にあたるんでしょうか?
これはWM_PAINTが呼び出される時ではなく、切れた時点で発動するオブジェクトだと思うんですけど。

516:デフォルトの名無しさん
16/06/09 09:20:40.17 dIu2vu4F.net
ここまでの話で何度も出てるだろ…

517:デフォルトの名無しさん
16/06/09 09:34:06.31 enLYes+t.net
BeginPaint(hwnd , &ps); ですか?
hwnd→単なるウインドウのハンドル
ps→PAINTSTRUCT ps;でプロシージャで定義してるからこれではない

518:デフォルトの名無しさん
16/06/09 10:01:48.91 vUW3kMHA.net
これまでの話で、デバイスコンテキストが無効領域を管理してるんだな
と、思いつかないのは、思考方法に欠陥がある。
BeginPaintをしっかり調べりゃ、
必ずしも文字全体を再描画する必要がないことだってわかるはずだ

519:デフォルトの名無しさん
16/06/09 10:08:05.78 Sr66m38T.net
PAINTSTRUCTのフィールド確認した?
BeginPaintを呼んだ後、何が格納されるか確認した?

520:デフォルトの名無しさん
16/06/09 10:10:14.15 enLYes+t.net
いやいやデバイスコンテキストが無効領域を管理してるか
もしくは参照してるかはBeginPaint見ないと分からないですね。
参照していることを管理してると意味付けしたら別ですが。

521:デフォルトの名無しさん
16/06/09 10:11:28.60 enLYes+t.net
>>504
怠っていました。
つまりTextOut(文字列)としなくても良いってことがわかったので
そんなコード書いてみますね。

522:デフォルトの名無しさん
16/06/09 10:23:16.19 CDrC/h56.net
PAINTSTRUCT構造体
URLリンク(msdn.microsoft.com)
RECT rcPaint が 無効領域の情報を保持しているメンバ
デバイスコンテキスト経由でPAINTSTRUCT構造体を参照すれば
ps->rcPaint.leftが無効領域の左端のx座標、ps->rcPaint.topが同y座標(以下略
などで無効領域の位置が分かる

523:デフォルトの名無しさん
16/06/09 10:46:09.86 EpB3wgru.net
描画するハンドルなのにデバイスコンテキストとか糞みてぇなネーミング

524:デフォルトの名無しさん
16/06/09 10:57:53.63 M6gePxQX.net
ただ、デバイスコンテキストが無効領域を管理しているというのは、何か違うと思うけどね
強いていれば、ウィンドウを管理している何かが無効領域を管理している、と言えるかもしれない
我々の目で見える部分でいえば、HDCというよりは、HWNDが無効領域を覚えている
HWNDを指定してBeginPaintを呼び出すと、これが拾えることからも分かる通り
ただ、例の彼にとってはどうでもよいことだけどね
また良くわからないズレた書き込みをしているようだし

525:デフォルトの名無しさん
16/06/09 11:05:28.94 CSH5zx3A.net
>>508
本来はプリンタを意識した設計
プリンタに対する制御命令の羅列をなんとか抽象化して画面とそろえたもの

526:デフォルトの名無しさん
16/06/09 11:05:47.81 PDv6puL4.net
HWNDが覚えているというよりは
HWNDが色んな情報と関連付けられている

527:デフォルトの名無しさん
16/06/15 21:39:02.30 mjbwSP1S.net
              【Win10】    こんな犯罪級OS薦めんなよwww   ↓   【スパイウェア】

この使用許諾契約書には書かれています
”最後にあなたのコンテンツを含む個人データ(例えばあなたの電子メールの内容や―プライベート通信やプライベートフォルダ内のファイル)にアクセスし―開示し保全します”
開示する ここ重要だよ
契約がなければ通常 高度な違法行為になりうることです それはあなたが自分の意思としてこの契約書に同意したのです
URLリンク(www.youtube.com)

【被爆大量死】   ペットを保健所で殺処分するように国民を殺戮する自民・東電・フクシマ応援テロリスト  【放射能犯罪】

りうなちゃんは去年の暮れ、脳腫瘍のために亡くなった。2歳を過ぎたころ「放射能があるから砂は触れない」「葉っぱは触っちゃだめ」
URLリンク(twitter.com) oyaMorishita/status/648628684748816384
UFOや核エネルギーの放出を見ることはエーテル視力を持つ子供たちがどんどん生まれてくるにつれて次第に生じるでしょう。
マイト レーヤは原発の閉鎖を助言されます。
マイト レーヤによれば、放射能は自然界の要素を妨害し、飛行機など原子のパターンが妨害されると墜落します。
マイト レーヤの唇からますます厳しい警告と重みが発せられることを覚悟しなさい。彼はいかなる人間よりもその危険をよくご存じです。
福島県民は発電所が閉鎖されれば1年か2年で戻って来られるでしょう。
日本の福島では多くの子どもたちが癌をもたらす量の放射能を内部被ばくしています。健康上のリスクは福島に近づくほど、高まります。
日本の近海から採れた食料を食べることは、それほど安全ではありません。汚染されたかもしれない食料品は廃棄すべきです。
日本もさらに多くの原子力発電所を作ろうとしています。多くの人々が核の汚染の影響で死んでいるのに、彼らは幻想の中に生きています。
問題は、日本政府が、日本の原子力産業と連携して、日本の原子力産業を終わらせるおそれのあることを何も認めようとしないことです。

528:デフォルトの名無しさん
16/06/18 06:33:38.33 MIQvGXJh.net
今このページをブラウザ(クローム)で開いていますが
このブラウザのウインドウ・ハンドルから
EnumChildWindowsして、お絵かき領域"wPaint-canvas"のハンドルを取得したいのですが
子ウインドウは「Chrome Legacy Window」の1つしか取得できず
その孫ウインドウは1つも取得できません
(試しに、Outlook Expressを調べると孫ウインドウまで色々と取得できます)
なんとかお絵かきキャンバスにアクセスできないものでしょうか

529:デフォルトの名無しさん
16/06/18 07:14:54.10 3SzE3rgE.net
例えばあなたが銀行のページを見ていて
横からそのページにアクセスできたらどうしますか?

530:デフォルトの名無しさん
16/06/18 10:45:35.39 KIJwdLCd.net
クロームが最下層まで全部自前で描画してたらウィンドウハンドル自体が無いと思われ

531:デフォルトの名無しさん
16/06/18 10:58:51.74 KIJwdLCd.net
特にクロームはフラッシュを内蔵しているからハンドル無くてもおかしくない

532:デフォルトの名無しさん
16/06/18 14:04:30.57 AGMP56Qn.net
canvasってHTMLのDOMじゃねーのか?

533:デフォルトの名無しさん
16/06/18 14:20:53.00 z5tqSjVb.net
DOMのclass属性とWNDCLASSの区別がついてなくて
canvasがChildWindowだと思ってて
canvasにwPaint-windowってclassを設定してるから
EnumChildWindowsで取れると思ってんのよ

534:デフォルトの名無しさん
16/06/18 14:22:41.72 z5tqSjVb.net
もちろん実態は最初の前提が間違ってるから「できるわけがない」

535:デフォルトの名無しさん
16/06/19 12:50:07.45 wWCYPJVS.net
Windows8以降だとtimeBeginPeriodでタイマー精度を1msに設定しても電池持ちに悪影響は無いんでしょうか
Windows8以降はticklessカーネルだから悪影響は無いというような事が書いてある記事がありますが
どんなハードウェアとか状況でもそうなんですか?

536:デフォルトの名無しさん
16/06/19 14:02:51.46 5KvSKdL/.net
URLリンク(ryo021021.hatenablog.com)

537:デフォルトの名無しさん
16/06/19 14:07:33.03 XJg+8VdY.net
chrome 使うと負荷が増えるって昔聞いたことがあったっけ
そういうことかい

538:デフォルトの名無しさん
16/06/20 07:52:22.29 ccfWO27l.net
>>521
そのブログの人、Windows7ユーザーっぽいから質問者のWindows8以降の話の回答にはなってなさげね

539:デフォルトの名無しさん
16/06/20 08:36:55.24 3NNTVW74.net
俺のWindows7環境ではtimeBeginPeriodなんて呼ばなくてもSleepは1ms精度になってるんだが

540:デフォルトの名無しさん
16/06/20 08:56:33.89 usQ28XEZ.net
普通のWindowsはRTOSではないのでレスポンスタイムの保証はない
設定できることと 精度が保証されることとは別
Windows10IoT(旧WindowsEmbedded)がどうなっているかは知らないけど

541:デフォルトの名無しさん
16/06/20 10:21:10.16 3NNTVW74.net
保証されないのはあたりまえ
EmbeddedでもIoTでも一緒だよ
それとtimeBeginPeriodの話は関係ない

542:デフォルトの名無しさん
16/06/20 11:13:48.10 3NSvhYkC.net
timeBeginPeriodよりスレッド単位で優先度を指定するMMCSSでの設定の方が行儀が良いんでないっけ
どのみちスレッド切り替えの頻度を上げることには変わりはないのだから消費電力への影響はあるだろうけど

543:デフォルトの名無しさん
16/06/20 14:55:49.31 78XmmaUt.net
Windows7以降のOSだとDirect3D9使うよりDirect3D11とか使った方が同じ処理でも速くなる?

544:デフォルトの名無しさん
16/06/20 15:41:47.81 /1RXmdBC.net
そりゃドライバの出来にもよるし

545:デフォルトの名無しさん
16/06/20 15:41:48.38 3NNTVW74.net
>>527
スレッドのプライオリティを設定したいなら(よっぽどのことがなければお勧めしないが)SetThreadPriorityを使えばいい
MMCSSはそれをやってないマルチメディアアプリの救済機能だと理解してる

546:デフォルトの名無しさん
16/06/20 22:16:41.09 ccfWO27l.net
>>525
Windows10IoTはUWP前提だから、なおさら悪そう

547:デフォルトの名無しさん
16/06/21 12:04:43.28 LE9F52CG.net
D3D11 ってデバイスロストの面倒見なくて良くなったんだっけ

548:デフォルトの名無しさん
16/06/21 18:27:13.32 fuc/q6yL.net
GPUがTDR起こすとロストする

549:デフォルトの名無しさん
16/06/23 10:54:04.97 awVn2K/F.net
アプリ実行中にドライバを更新したりするとロストするらしいよ。
URLリンク(msdn.microsoft.com)

550:デフォルトの名無しさん
16/06/23 10:57:57.58 YrvC//rF.net
それは当たり前じゃね?

551:デフォルトの名無しさん
16/06/23 11:26:57.96 FjipjPjg.net
D3D9世代のOSだと別アプリが排他フルスクリーンになっただけでロストしてたからね
耐性はかなり高くなったけどロスト処理から完全に開放されたわけでもない
動作検証で任意にロスト起こしたいならデバマネからグラフィックドライバを無効すればよい

552:デフォルトの名無しさん
16/06/23 11:34:40.47 332nxUAD.net
smplayerでmp4再生したら見事にロストしてくれたはthx

553:デフォルトの名無しさん
16/06/26 15:32:26


554:.59 ID:nR9q+WlS.net



555:デフォルトの名無しさん
16/06/27 01:49:15.06 WrVlvgBr.net
ちょっと前マイクロソフトの中の人らしい人が
twitterでロストしたら終了する事をお勧めするとか身も蓋もない事言ってた

556:デフォルトの名無しさん
16/06/28 08:54:31.13 Ek0WLuSu.net
windows7からウィンドウの上下ドラッグである程度大きくすると
自動的に縦サイズだけ最大化する機能があるんだけど
あれを禁止したり挙動変えるにはどうすればいいでしょうか?

557:デフォルトの名無しさん
16/06/28 09:09:22.68 pgmex0YM.net
URLリンク(www.atmarkit.co.jp)
Tech TIPS:
Windows 7でウィンドウのAeroスナップ機能を無効にする
Windows 7のAeroスナップ機能が有効な場合、ウィンドウのタイトル・バー部分を画面の端へドラッグするだけで最大化したり、左右に並べて整列させたりできる。コントロール・パネルで設定を変更すれば、この機能を無効にできる。

558:デフォルトの名無しさん
16/06/28 09:39:27.20 rabCRM7S.net
このスレで聞いてるのだから、APIを教えろってことじゃないの?

559:デフォルトの名無しさん
16/06/28 10:24:01.46 UehficRp.net
レジストリ編集系のAPIを使えばほぼなんでもできるやろ

560:デフォルトの名無しさん
16/06/28 10:46:26.79 4uPkxyfr.net
>>539
T社を買収して完璧なAPIに再構築するまでもうしばらくお待ち下さい

561:デフォルトの名無しさん
16/06/28 13:41:44.15 a3nSzCGl.net
>>540
スナップインを無効

562:片山博文MZ ◆T6xkBnTXz7B0
16/06/28 20:05:49.71 /EmS/Fyw.net
Windowsの絵文字サポートはどこまで進んでいる?

563:デフォルトの名無しさん
16/06/28 21:33:53.66 8HwZwHHy.net
FirefoxがTrueTypeを自力でレンダリングしなきゃならないくらい

564:デフォルトの名無しさん
16/06/28 21:36:04.97 jXofjD/x.net
WindowsがUTFに移行すれば早いんだけど

565:デフォルトの名無しさん
16/06/29 12:14:01.70 xPFVh+mM.net
その前に Windows が絶滅するかもな
Android ChromeOS の勝利

566:デフォルトの名無しさん
16/06/29 16:18:58.51 zh/CO/83.net
>>546
URLリンク(www39.atpages.jp) の851手書き雑フォントを使うのが今のところ一番の妥協策だと思う。
RobotoJやメイリオ-AARもいいが、絵文字以外の漢字も…となると両方とも851手書き雑フォントより少し劣る。
他のフォントは(Microsoft謹製のSegoe UI Symbolや貴殿が作ってくれた梅フォントPZを含めて)どれも更に劣るが…

567:デフォルトの名無しさん
16/06/29 19:59:57.53 LWp+msui.net
レジストリ内の指定位置から下の階層をまるまるバイト列などで取得したり、
逆に取り込んだりすることは、APIでできるのでしょうか。
コマンドプロンプトから
reg export HKCU\Software\...
reg import HKCU\Software\...
を実行したときと同じようなことを、自作アプリ内で行いたいのですが。

568:デフォルトの名無しさん
16/06/29 21:16:33.31 lW/yxd55.net
できると思うけど、管理者権限を与えないと無理かも

569:デフォルトの名無しさん
16/06/29 21:32:59.15 lW/yxd55.net
CString CRegistry::GetRegValueStr(HKEY hKey, CString SubKey, CString KeyName, CString DefaultString)
BOOL CRegistry::SetRegValueStr(HKEY hKey, CString SubKey, CString KeyName, DWORD DataType, CString strValue)
このへんは?

570:デフォルトの名無しさん
16/06/29 22:58:54.44 h8+xihiz.net
>>551
API 使ってちょっとコード書けばできると思うが
> レジストリ内の指定位置から下の階層をまるまるバイト列などで取得したり、
> 逆に取り込んだりする
専用の API があると思ってないだろうな?

571:デフォルトの名無しさん
16/06/29 23:32:15.05 Z73kXcdz.net
>>551
RegOpenKeyExとか使ってあとはぐるんぐるんと

572:デフォルトの名無しさん
16/06/30 08:30:09.10 j22CMfak.net
>>551
指定した所の値取得はできるから
ループ回して指定以下全て取得するようにしたらいいよ

573:デフォルトの名無しさん
16/06/30 08:37:05.63 Mg1DKigT.net
そんなAPIがあったとしても、値の返却方法考えたら、ループ回す方がはるかに簡単だな

574:uy ◆e6.oHu1j.o
16/06/30 08:43:29.06 U+B64GZ8.net
質問です
PeekMessageとかSendMessageとか色々ありますけど
そのメッセージって一度に大量に来た場合ってアプリクラッシュしないんですか?

575:デフォルトの名無しさん
16/06/30 08:52:39.65 Mg1DKigT.net
クラッシュするように作られてるプログラムはクラッシュする
当たり前だ
一般的にはバグと呼ばれている

576:uy ◆e6.oHu1j.o
16/06/30 10:59:59.38 U+B64GZ8.net
>>559
URLリンク(codepad.org)
転載元: wisdom soft
バグというか脆弱性って言うほうが近いけど
こういうウィンドウって
外部から落とせるのかな?っていう疑問

577:uy ◆e6.oHu1j.o
16/06/30 11:38:44.52 U+B64GZ8.net
パソコンにC言語コンパイラが入っていなかった
諦める

578:デフォルトの名無しさん
16/06/30 11:41:51.57 8IMpbPEW.net
そのスレッドのメッセージキューがいっぱいになっても落ちたりはしない
プロセスキルはできる
昔はキューいっぱいになってWindowsごと止まったなあ・・・

579:デフォルトの名無しさん
16/06/30 12:17:00.45 bSccWkK0.net
もうその流れ秋田

580:uy ◆e6.oHu1j.o
16/06/30 13:25:28.04 U+B64GZ8.net
>>562
じゃあ今は多分無理かな
>>563
他にWinAPIの利用方法を知らない

581:デフォルトの名無しさん
16/07/08 00:03:57.41 AI/Q8yEO.net
壁紙とデスクトップアイコンの間のレイヤー?にTextOut()する方法を
教えてください。

582:デフォルトの名無しさん
16/07/08 03:42:35.31 L4ZXDalo.net
そんなものはありません
現在の壁紙に直接文字を描画するのが一般的です

583:デフォルトの名無しさん
16/07/08 10:09:12.30 ERN9BCt7.net
デスクトップに重ねて透明Window作れば?

584:デフォルトの名無しさん
16/07/08 11:14:09.94 Os6EI0g/.net
それじゃアイコンの上に描画するだろ

585:デフォルトの名無しさん
16/07/08 13:58:57.41 WN2toBJM.net
>>568
そんなことはないよ

586:デフォルトの名無しさん
16/07/08 15:41:34.80 Z0zroLgC.net
そんなことあるやろ?
どういう原理や?

587:デフォルトの名無しさん
16/07/08 16:54:42.46 01+4ed2Z.net
あのアイコンはリストビューのアイコン表示なんじゃないの?知らんけど

588:デフォルトの名無しさん
16/07/08 20:00:28.65 gjq4uhFL.net
>>567
それは X window の考え方

589:片山博文MZ ◆T6xkBnTXz7B0
16/07/08 20:10:00.63 5bf5xqe9.net
「最背面 Win32 API」でググれ

590:564
16/07/09 09:47:16.52 xG4M4Iyi.net
まだ自分にはレベルが高すぎる課題でした。
ありがとうございます。
解決には至りませんでした。

591:デフォルトの名無しさん
16/07/10 20:50:46.93 J7L2i5Ph.net
アルファチャンネルで抜けば良い。

592:デフォルトの名無しさん
16/07/10 23:48:47.81 /zxXYSmb.net
HTTPサーバーから特定ファイルをダウンロードする際、URLがリダイレクトされた場合を検出したいと思っています。
ブラウザで特定ファイルURIを指定して、意図したとおりにリダイレクトされる環境であることを確認した後、
実際に下記コードでステータスを取得してみましたが、どうしても200が返ってきてしまいます。
意図するステータスは302(ないしは303などリダイレクトを表すステータス)なのですが、何か不足しているか
手順が間違っているのでしょうか?
hInetFile = InternetOpenUrl(hInet, lpszUrl, NULL, 0, INTERNET_FLAG_NO_AUTO_REDIRECT | INTERNET_FLAG_DONT_CACHE, 0);
HttpQueryInfo(hInetFile, HTTP_QUERY_STATUS_CODE, szStatus, &dwBufSize, &dwIndex);
szStatusは"200"となってしまいます。
存在しないURIを指定すると"404"となります。(これは当然)
よろしくお願いします。

593:デフォルトの名無しさん
16/07/11 00:14:34.48 /WdS7w57.net
>>576
htmlかjavascriptでリダイレクトされてるんじゃないの?
通信内容確認した?

594:575
16/07/11 00:39:17.05 mE5jKs6R.net
>>577
すみません。情報が抜けていました。
とりあえず現在リダイレクトテストとして、自鯖apache2.xでmod_rewrite.soを有効にし、
テスト用URLに.htaccessを置いて中身は以下のような感じにし、リダイレクトされることを確認しました。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^対象ページのURL$ 移転後のURL [R=302,L]
</IfModule>
そもそもリダイレクト検出が必要となった理由が、ドメイン更新手続きを担当者が忘れた結果、
ドメインが一時凍結されてしまいました。
しかし、ブラウザ・プログラムシステム側ともに404エラーにはならずにDNS管理会社の
ドメイン一時停止中だよページ(?)にリダイレクト状況(?)になり、特定ファイルのダウンロードも
エラーにはならずにステータス200で返ってきてしまっていました。
結果、ファイルの中身は本来のものとは異なるデタラメなもので、システム側が誤作動を起こした。
ということがありまして、今回リダイレクト環境を用意した上でテストしてみたのですが、
ドメイン一時停止中に遭った現象を同じくステータス200が返ってきてしまっている現状です。
しかし、javascriptでリダイレクトされるとステータスが取れないとなると、誤作動対策としては
別の方法を考えなければいけないかもですね。
当面、内々の事情としてはドメイン更新を忘れなきゃOKな話でもありますし。

595:デフォルトの名無しさん
16/07/11 08:37:30.50 BOCVQw3X.net
試してないけど MSDN 見る限りは HttpSendRequest が要るんじゃね?
INTERNET_FLAG_NO_AUTO_RED IRECT
Meaning Does not automatically handle redirection in HttpSendRequest.
URLリンク(msdn.microsoft.com)(v=vs.85).aspx

596:デフォルトの名無しさん
16/07/11 16:01:04.43 Ffg41DtV.net
dnsならそもそもリダイレクトじゃなくてipで管理会社のサーバーにとばされただけじゃないの?
接続先のサーバーがいじれるならカスタムのhttpヘッダ付けるとかで判定した方が楽だと思う。

597:575
16/07/11 18:00:53.06 yrWfG2oN.net
>>579
現状で200や404が返ってきているので”これで正解”風味な感触を得ていましたが(実際ダメ


598:でしたが)、 確かにHttpSendRequestを経ていけば結果が変わりそうですね。 テストしてみて、また報告します。 >>580 確かに単にIPで飛ばされているのも確かです。 ただ、URLの奥深い階層のあらゆるファイルも全て404にならず、意図しない内容のものがダウンロード されてしまうので、リダイレクトもされているであろうと当たりを付けました。 HTTPカスタムヘッダーはいい案ですね。鯖側管理者と相談してみます。



599:デフォルトの名無しさん
16/07/11 18:15:46.95 DHaYiQ8W.net
リダイレクトされたかどうかじゃなくて
内容が意図してるものなのかどうかチェックすればいいんじゃないの?

600:デフォルトの名無しさん
16/07/11 19:19:09.82 zdvynnCD.net
>>578
サーバー側のmod_rewriteのリダイレクトは検出出来ないんじゃね?

601:デフォルトの名無しさん
16/07/11 19:20:56.59 zdvynnCD.net
>>578
サーバー側のmod_rewriteのリダイレクトは検出出来ないんじゃね?

602:デフォルトの名無しさん
16/07/11 22:11:30.20 O0wDeDe6.net
>>578
サーバー側のmod_rewriteのリダイレクトは検出出来ないと思う

603:デフォルトの名無しさん
16/07/12 08:10:05.82 5gnI1m0l.net
>>583-585 には
と言う意味なら正しい

604:デフォルトの名無しさん
16/07/13 08:57:46.63 Fl43tCNC.net
もう見てないと思うけど、
十数年前、矩形を短形と読んで恥をかいていた者です。
自分はもう落ち目なんですけど、このスレ・板に感謝しています。
ただの自己満足です。
名無しなのに回答してくる風土が好きです。貢献できなくて、すみません私はクズです。
以上。

605:デフォルトの名無しさん
16/07/13 17:19:35.41 Zm0ukFfg.net
方形を包茎だと思ってたよ

606:デフォルトの名無しさん
16/07/13 17:30:36.22 ZdYcti+1.net
Tank Way

607:デフォルトの名無しさん
16/07/13 17:33:39.54 ZZxmFYpS.net
539 名前:デフォルトの名無しさん :04/12/12 19:44:43
BCCで簡単な画像編集アプリを作りたいんですが
一般的なキャンバスの仕組みが分かりません。
灰色の背景に白地のキャンバスエリアだとして、ただ白の短形を描画して
その上から線を引くとしたら白の短形を再描画した時消えるし
どう作ればいいのでしょうか?
保存する時はクライアントエリア上に直接描かれた絵を1ピクセルずつ色を
キャプチャして保存するような感じでいいのですか?
リンク探しても、それっぽい内容が見当たりません。
どなたか教えてください。
540 名前:デフォルトの名無しさん :04/12/12 19:48:16
たんけい選択
541 名前:デフォルトの名無しさん :04/12/12 19:54:55
短形
542 名前:デフォルトの名無しさん :04/12/12 19:56:10
たんけいコピー

608:デフォルトの名無しさん
16/07/13 18:22:49.47 BO773i0L.net
よく残ってんなw
リアルタイムでスレにいた気がするが、よく覚えてないぞ

609:デフォルトの名無しさん
16/07/13 21:26:17.48 GD80JCcz.net
543 名前:デフォルトの名無しさん :04/12/12 19:56:30
短茎
544 名前:デフォルトの名無しさん :04/12/12 19:58:37
マジワロタ
545 名前:デフォルトの名無しさん :04/12/12 20:00:36
ググったら結構見つかったよ、短形(w
546 名前:デフォルトの名無しさん :04/12/12 20:00:53
(・∀・)タンケイ!
549 名前:デフォルトの名無しさん :04/12/12 20:38:07
巨と豆の区別もつかないらしい
550 名前:デフォルトの名無しさん :04/12/12 20:41:40
ホントにたんけいだと思ってる奴は俺の周りにも
結構いる。仕方ないよ。
551 名前:デフォルトの名無しさん :04/12/12 20:46:15
巨乳と豆乳の区別はつくぞ。
552 名前:デフォルトの名無しさん :04/12/12 20:47:12
∩(・ω・ )∩ 短形 ばんじゃーい
553 名前:539 :04/12/12 20:55:30
あれ? 四角形って短形って言わんのか(;´Д`)
554 名前:デフォルトの名無しさん :04/12/12 21:00:57
市販のライブラリでも使っとけ。
で、四角形は矩形(くけい)だ。
555 名前:デフォルトの名無しさん :04/12/12 21:09:14
>554
>あれ? 四角形って短形って言わんのか(;´Д`)
どんまい。俺も最初読めなかったよ。
学校で習わないもんな。

610:デフォルトの名無しさん
16/07/13 22:01:14.12 vlEGI8Zx.net
短形
短小方形

611:デフォルトの名無しさん
16/07/13 22:20:15.18 YDg44v1S.net
レクトアングルんことを一時期レクチャーレクチャー言ってた自分w

612:デフォルトの名無しさん
16/07/13 22:26:31.71 u6EoGlGx.net
前方後円墳っていうけどあれみんな円い方が前だと認識してるよね

613:デフォルトの名無しさん
16/07/14 12:59:34.36 HNcr3c0L.net
レクトアングルってのもあまり言わないけどな。

614:デフォルトの名無しさん
16/07/14 14:14:36.67 nt3rPaXP.net
カタカナにするとしたら普通は「レクタングル」だろ
「レクトアングル」とか言われたら、えっ?ってなっちゃう

615:デフォルトの名無しさん
16/07/14 14:18:32.68 B29KeyPb.net
いやカタカナの場合レクトアングルじゃね?
レクト + アングルなんだし
発音としてはトアを繋げるが決してタではない

616:デフォルトの名無しさん
16/07/14 14:23:49.03 SkoSK+Cn.net
それを言うならトアでもないよ

617:デフォルトの名無しさん
16/07/14 14:38:17.38 B29KeyPb.net
>>599ならどう表現する?カタカナでね

618:デフォルトの名無しさん
16/07/14 14:40:28.91 QNDyLPqn.net
>>595
丸い方を上にして鳥瞰すればあら不思議文字通りの前方後円墳

619:デフォルトの名無しさん
16/07/14 14:47:35.13 nt3rPaXP.net
>>598
google
「レクトアングル」約 70,800 件  もしかして: レクタングル
「レクタングル」約 3,770,000 件

620:デフォルトの名無しさん
16/07/14 14:50:58.28 QNDyLPqn.net
大和ハウチュ思い出したは

621:デフォルトの名無しさん
16/07/14 14:53:39.70 B29KeyPb.net
>>602
それは厳密に発音や表記を考えずに使ってる人が多いってだけだ
プログラム板での話にそんなものもってこられてもな

622:デフォルトの名無しさん
16/07/14 14:58:26.31 B29KeyPb.net
レクタングル
URLリンク(ejje.weblio.jp)
無し
レクトアングル
URLリンク(ejje.weblio.jp)
主な英訳 rectangle

623:デフォルトの名無しさん
16/07/14 15:35:04.38 SkoSK+Cn.net
>>600
トアよりタの方が近いよ
発音聞いてレクトアングルの方が近いと感じるなら耳が腐ってる
元の発音と離れていてもいい(そういう外来語は沢山あるし)という主張なら
それはそれで良いんじゃないの?

624:デフォルトの名無しさん
16/07/14 17:19:24.24 B29KeyPb.net
>>606
だから「発音としてはトアを繋げるが」って言っただろ?
今は表記の話をしてるんだから発音を持ち出すのは論外
脳が腐ってるとでも言えばいいのか

625:デフォルトの名無しさん
16/07/14 18:16:03.32 SkoSK+Cn.net
>>607
トの方が近いのは認めるわけね。耳が腐ってないようで何よりだ
トアを繋げる? 繋げて読んでもtaにはならんよ? カタカナの読み方を知らないのか? 母音を抜いて読むって意味か?
俺は日本語文書なら矩形と書くから正直どうでも良いのだが、
>>607は日本語文書でレクトアングルと書いてそれを読むときにどう発音するのか少し興味があるわ

626:片山博文MZ ◆T6xkBnTXz7B0
16/07/14 18:24:20.97 MWHMm7Lx.net
質問です。
無効なウィンドウの子ウィンドウへアクセスできるようにしたい
URLリンク(teratail.com)

627:デフォルトの名無しさん
16/07/14 18:28:15.19 B29KeyPb.net
>>608
発端は発音の話でもないし発音の話するにしてもtaでもないんだが・・・
発音記号調べてみろ
トは実際にはtoじゃなくtの無声音、アはaじゃなく「ae」を1文字にしたような発音
can Iをキャナイと書かずにキャンアイと書くのと一緒

628:デフォルトの名無しさん
16/07/14 18:46:20.12 NIa9yA68.net
ワンナウトはワンアウト?

629:デフォルトの名無しさん
16/07/14 19:01:59.45 QNDyLPqn.net
ラインナップ
サインナップ
クレラップ

630:片山博文MZ ◆T6xkBnTXz7B0
16/07/14 19:40:30.77 5AZo8uCy.net
disabledなウィンドウで子ウィンドウをマウス操作をできるようにするには
どうしたらいいんだよーーー。IME完成のために是非ともだれか協力して下さいよ。

631:デフォルトの名無しさん
16/07/14 19:59:28.71 4EAHdFnp.net
汎用機->ぼんようき
改竄->かいチュウ

632:デフォルトの名無しさん
16/07/14 20:07:48.69 xdDz/Zrt.net
enableにすればいいだろ。
それで外見をdisabledな感じにしてやればいいだろ。

633:片山博文MZ ◆T6xkBnTXz7B0
16/07/14 20:10:29.52 5AZo8uCy.net
>>615
IMEのUIはWS_DISABLED | WS_POPUPスタイルじゃないといけないって、
IME開発の文書に書いてあるんだよー。

634:片山博文MZ ◆T6xkBnTXz7B0
16/07/14 20:16:18.16 5AZo8uCy.net
MSIMEは確かにWS_DISABLED | WS_POPUPが付いていた。
特殊なスタイルだから、子ウィンドウ操作を可能にするには、特殊な技術が必要みたい。

635:片山博文MZ ◆T6xkBnTXz7B0
16/07/14 20:33:23.84 5AZo8uCy.net
ATOKさん、僕にこっそり教えてくれないかなあ

636:デフォルトの名無しさん
16/07/14 20:38:10.27 SkoSK+Cn.net
>>610
カタカナは表音文字なのだから表記を問題にしたら発音が問題になるのは当たり前
カタカナのトの発音はtの無声音ではないしアの発音は発音記号のaeでもない
1語なのだから元の発音に近いレクタングルの方がしっくり来る人の方が多いのは>>602を見ても分かる

637:デフォルトの名無しさん
16/07/14 20:43:48.54 B29KeyPb.net
>>619
主語入れ替えてややこしくすんな
お前が「発音聞いて~」って話しだしたんだろw
実際の発音ではトは母音まで発音しない
しっくり来てるって勘違いしてる人が多いのは>>605を見ても分かる

638:デフォルトの名無しさん
16/07/14 20:48:13.59 4Ps/X1K6.net
あ・す・ぺ

639:デフォルトの名無しさん
16/07/14 21:16:12.02 SkoSK+Cn.net
>>620
おまえが先にトアを繋げるがタではないとか発音の話を始めたのだが?

640:デフォルトの名無しさん
16/07/14 21:21:29.74 B29KeyPb.net
>>622
実際の発音に近づけるためにタを使ってるんだろうから説明したまでで
表記としてタを使うのはおかしいって指摘なんだが

641:デフォルトの名無しさん
16/07/14 21:32:17.14 SkoSK+Cn.net
>>623
うん、「決してタではない」ってのはrectangleのtaの部分は日本語のタの発音ではないから表記としてタを使うのはおかしいって意味だよね?
俺はその理屈だと日本語のトタを繋げたものの発音とも違うから表記としてトタを使うのはおかしいって理屈になっちまうのでは?
と言ってるだけなのだが
>>605の辞書表記あたりを掘り下げた方が説得力があると思うよ
何度も言うが俺はカタカナで書かないからどちらでもいい

642:デフォルトの名無しさん
16/07/14 21:36:07.21 SkoSK+Cn.net
トタじゃないトアだw

643:575
16/07/14 21:51:08.02 DIavJ9e4.net
あの後、自鯖がリモートで操作できなくなってたので遅くなりましたが、復旧したので続きです。
(ルーターが死んでいた)
結論から言うと、あれから特に何をした記憶はないのですが、何も修正しないままステータス"302"が
返ってくるようになりました。(´・ω・`)
誠にお騒がせしました。
>>579
テストしてみましたが、結果的にHttpSendRequestは使わなくても問題なかったようです。
>>582
ファイル・データの種別を埋め込んだり取り除いたりするのが手間なので、
そこまでする場合はカスタムヘッダーで対応しようと思います。
>>583-586
鯖知識がそう豊富ではないのでよく分かりませんが、結果的にはステータスが取れました。
鯖の設定方法なのかなんなの分かりませんが、たまたまかも知れませんしそもそも
DNS鯖が本当にリダイレクトしているたのかは分からないので、今回はとりあえず切り上げて
この辺にしておきます。
みなさんありがとうございました。

644:デフォルトの名無しさん
16/07/14 23:25:53.49 oNKBkesI.net
日本語ではシラブル(音節)とモーラ(拍)は一致しない場合がある
Rectangleを片仮名で扱うと
シラブルは レク-タン-グル
モーラは レクト-アングル

645:デフォルトの名無しさん
16/07/14 23:28:12.97 3206dNVB.net
鯖って呼ぶな。ハゲ。

646:デフォルトの名無しさん
16/07/15 00:47:48.70 eggGPVMd.net
ID:B29KeyPbはknowとかstructureをクノウとかストルクツレとか表記すんの?

647:デフォルトの名無しさん
16/07/15 00:58:01.91 b9s190if.net
Virusをウィルスって詠んでるのがいちばん気になる
ヴァイラスだろって

648:デフォルトの名無しさん
16/07/15 05:29:34.42 QotUx/3n.net
>>630
医学の本場ドイツ語読みか,片田舎の米国訛りかの違いというだけだ

649:デフォルトの名無しさん
16/07/15 06:00:42.34 b9s190if.net
いや、ドイツ語詠みはヴィールスでしょ?

650:デフォルトの名無しさん
16/07/15 07:09:41.56 QVui+Lon.net
ウイルス
ウィルス

651:デフォルトの名無しさん
16/07/15 08:43:40.33 Rb/RCJew.net
>>624
「トアを繋げる」って部分がうまく伝わっていないって事はわかったけど
どう言い換えればいいのかわからんからお手上げ
Rect の t無声音とAngle の A有声音を繋げるがいいのか
もういいけどw
>>629
なんでw
発音しない部分はカタカナでも表記する必要ないし
そう表記するならRectangleはレクタングレになってしまわないか?
>>630
zeroはどうなるんだろ

652:デフォルトの名無しさん
16/07/15 09:58:27.87 usIPH4QF.net
トビマストビマス

653:デフォルトの名無しさん
16/07/15 12:54:00.11 Eu6FxgWv.net
レクトアングル
これ以外は俺が気に入らないから認めない(キリッ
って事だよね?
結局のところ。

654:デフォルトの名無しさん
16/07/15 13:05:07.34 ru6AcSPK.net
ルーター

655:デフォルトの名無しさん
16/07/15 14:17:59.85 8P+uiz2j.net
DLLがexeから利用されたときに
DLLファイルが置かれている場所のpathを
DLL内の関数自身で調べる方法はありますか?
GetModuleなんとかだとexeのpathになってしまうみたいで

656:デフォルトの名無しさん
16/07/15 14:23:09.69 8P+uiz2j.net
>>630
Windowsはどうみてもウィンドウズなのに
ほとんどの出版物ではウインドウズになってる不思議

657:デフォルトの名無しさん
16/07/15 14:25:09.57 orjbVXED.net
うぃんどぅず

658:デフォルトの名無しさん
16/07/15 14:29:37.06 orjbVXED.net
>>638
DLLにはDllMainがあり、そこでインスタンスハンドルを受け取るでしょ?
このハンドルをゲッツモデュールなんとかに渡せばいい。
試してないけど。

659:デフォルトの名無しさん
16/07/15 14:35:14.90 8pBeZ5fQ.net
char lpHoge[MAX_PATH];
GetModuleFilename(GetModuleHandle("dll名(フルパスを書かない&拡張子なし)"), lpHoge, sizeof(lpHoge));

660:デフォルトの名無しさん
16/07/16 11:22:44.34 Tq5Mh+3Z.net
>>618
IMEは全然知らないけどMozcはソース公開されているから見てみれば?

661:片山博文MZ ◆T6xkBnTXz7B0
16/07/16 15:54:44.86 DpW5llC4.net
>>618 >>643
別のアプローチで解決しました。

662:デフォルトの名無しさん
16/07/16 16:50:52.70 nf9EfIu5.net
>>644
どうやったの?

663:片山博文MZ ◆T6xkBnTXz7B0
16/07/16 17:01:30.11 DpW5llC4.net
>>645
IMEパッドをIMEに組み込まず、別プロセスにしました。
実装方法はソフトキーボードのサンプルを参考にしました。

664:デフォルトの名無しさん
16/07/17 23:10:46.10 RtgpWl6x.net
質問
Win32 APIに1:1の片方向で良いのでスレッドAからスレッドBに確実にデータを渡すしくみで軽量なやつって何か無い?
イメージとしてはITRONのメールボックスとかメッセージキューみたいなやつキボン
軽量さの比較対象としては、イベントとCRITICAL_SECTIONとstd::queue<T>を組み合わせた手製ロジックでデータ渡すのと同等の速度でおk
名前が似てるという意味ではMail slotというのがあったけどもメッセージの到達が保障されない。
パイプはプロセス間通信にも使えるということは何か重いイメージがある
スレッドをGUIスレッドにしてデータをウィンドウメッセージに乗せる手も考えられるが、遅そうなのはパイプと同じで
特に理由無く移植性の無い手段をとるのも嫌

665:デフォルトの名無しさん
16/07/17 23:21:22.75 DWSurOc6.net
メモリマップトファイル
軽量かどうかは知らない

666:デフォルトの名無しさん
16/07/17 23:29:01.11 OO2CesJE.net
いや意味わからないし
上の説明読んで、なんでそれになるの?
なんで?

667:デフォルトの名無しさん
16/07/17 23:31:10.32 OO2CesJE.net
俺が読んだ限りでは、同一プロセス内で他のスレッドにデータ渡すだけみたいだぞ
それも、キューのようなものがお望みと読み取れる
なんで???

668:デフォルトの名無しさん
16/07/17 23:42:12.52 SSOeGMhs.net
>>647
GUIにしなくてもメッセージ使えるぞ

669:デフォルトの名無しさん
16/07/17 23:46:33.31 RtgpWl6x.net
希望としてはメッセージキューみたいなやつなんですが、
「1:1の片方向で良いのでスレッドAからスレッドBに確実にデータを渡すしくみで」ときの
定番手段だったり
スゲーすっきり書けるとかチョー軽量であるとかいった圧倒的なアドバンテージがあるやり方なら
キューでなくてもおk

670:デフォルトの名無しさん
16/07/17 23:48:46.90 SSOeGMhs.net
そもそもWin32 APIと言ってながら移植性の無い手段をとるのも嫌ってどういうことだよ?

671:デフォルトの名無しさん
16/07/17 23:49:52.72 RtgpWl6x.net
いやスマン
「スレッドAからスレッドBに確実にデータを渡す」というのを
スレッドを極力待たせずに(軽量に)やるには
結局キューしか有り得ないのかorz

672:デフォルトの名無しさん
16/07/17 23:52:23.11 wQIeqVrk.net
data_seg

673:デフォルトの名無しさん
16/07/18 00:00:01.33 7oHxM0p4.net
定番は自分で書いたような手製ロジックなんじゃないか?
あとはSendMessageでWM_COPYDATA とかClipboardとかPostThreadMessage使うとか
だってさ、Win32 APIに軽量確実簡単なAPIがあるなら普通誰でも使うだろ?
でもそうではなく定番とも言える方法が別にあるってことは、
Win32 APIにはそういうものがないか、使い勝手が悪いとかってことだろ

674:デフォルトの名無しさん
16/07/18 02:07:44.74 0GzfAsTo.net
>>650
確実に渡したいと読んだからキュー形式を無視してそう書いただけ
何ならグローバル変数でも使っとけば()

675:デフォルトの名無しさん
16/07/18 05:44:07.83 GAeyefCK.net
>>656
同一プロセスならヒープでも大丈夫だろ?
後はアドレスを渡すだけだから、WM_USERで充分な気が。

676:デフォルトの名無しさん
16/07/18 12:04:45.51 DGcnITue.net
>>657
いやそこじゃなくて、どうして「メモリマップトファイル」なの?
同一プロセスの他スレッドにデータ渡すだけなのに?
確実さと軽量さをとるなら、>>657も書いている通り
ヒープでも十分だし、君の書いているグローバル変数の配列でもよいだろう
どこからメモリマップトファイルが出てきたの?

677:デフォルトの名無しさん
16/07/18 12:15:54.77 0GzfAsTo.net
適当に思いつきで書いたものに必死に噛みつかれてもな
使えない訳でもなし

678:デフォルトの名無しさん
16/07/18 12:42:39.25 zK0e5um3.net
無責任過ぎワロタ
思いつきの適当な回答を教えんなよ

679:デフォルトの名無しさん
16/07/18 12:46:38.94 DeXLreOM.net
>>647
DLLで共有したらいかんのか

680:デフォルトの名無しさん
16/07/18 12:47:34.09 DeXLreOM.net
ああ >>655 で出てるな

681:デフォルトの名無しさん
16/07/18 12:50:40.83 DeXLreOM.net
>>661
いや擁護する訳じゃないが
メモリマップトゥファイルは誰でも真っ先に思いつく罠
それが重いか重くないか吟味するのは君の責任だ
思いついたことを書いて何が悪い

682:デフォルトの名無しさん
16/07/18 13:02:11.38 5MTfu7xY.net
分かりやすい自演だなぁ

683:デフォルトの名無しさん
16/07/18 13:05:40.41 DeXLreOM.net
>>648 は漏れじゃないよ
割とマジで

684:デフォルトの名無しさん
16/07/18 13:10:52.35 GAeyefCK.net
>>664
お題がスレッド間通信なのに、プロセス間通信に使うための機能の使用を思いついたとして、
一瞬でも考えればそれは違うって分かるだろう?重いかどうかじゃない、お題に合ってないんだよ。

685:デフォルトの名無しさん
16/07/18 13:21:41.19 0GzfAsTo.net
割とマジで自演じゃないなw
一瞬で分かるなら、なおさら必死に噛みつく理由が分からん
メモリマップトファイルを使っちゃいけない呪いにかかった�


686:フか、親でもころされたのか



687:デフォルトの名無しさん
16/07/18 13:23:17.31 rCzir4eP.net
>>664
何で家の中で受け渡しするだけなのに郵便使うんだよ

688:デフォルトの名無しさん
16/07/18 13:38:42.97 9GbCcHr5.net
隣に居る人間に対してでも口頭ではなくメール使ったりするし。。。
メモリマップトファイルが適切かどうかは別として、グローバル変数だって
プロセス間スレッド間通信で使うためのものじゃなくても使える訳だから、
メモリマップトファイルを使っちゃいけないルールじみた言動は宗教じみてもいるね。
つか、グローバル変数だって絶対禁止教の人がいる訳で。

689:デフォルトの名無しさん
16/07/18 13:45:48.44 rCzir4eP.net
>>670
隣にいる人間に対してでもメールってのは後々読み返せるようにだから

690:デフォルトの名無しさん
16/07/18 14:04:51.83 9GbCcHr5.net
>>671
そこマジレス!?ジョークやシャレに軽く乗っかっただけのつもりだったのだが・・・
別に暑中見舞いでも不幸の手紙でも不倫密告でも送ってもよかろ?
目的や理由とその手段なんて、その人の自由だろって話なんだけどね。

691:デフォルトの名無しさん
16/07/18 14:18:12.67 rCzir4eP.net
>>672
使いたければ使えばいいが
人に勧めるのは違う

692:デフォルトの名無しさん
16/07/18 14:26:50.11 GAeyefCK.net
>>670
使っちゃいけないなんて誰が言い出した?
的外れなものを持ち出してくるから、アホか、と言われてるだけなのに、
なんでそんなに必死に擁護するんだろう。

693:デフォルトの名無しさん
16/07/18 14:53:25.84 0GzfAsTo.net
なんか色々スマンが、俺は最初から最後まで一貫して勧めてるわけではないぞ?思いつきの押しつけなんてしてないぞ?
思いつきとか不適切だっ許せないっ(キリッ つーなら、これにいつまでも構って駄レス伸ばすのに荷担するなよ
え?叩きたいだけ?
なら仕方ない、どんどんやれ

694:デフォルトの名無しさん
16/07/18 16:24:53.06 9GbCcHr5.net
>>673
さすがにアレがお勧めされているとは読めなかったよ。
>>674
的外れかどうかの判断を含め、取捨選択は人の自由だよって話の本質は分かって貰えないのだろうか。
ぶっちゃけ、個人的にはグローバル変数を使うのは宗教上NGなので、それも的外れなんだよね。
宗教戦争したい?

695:デフォルトの名無しさん
16/07/18 16:37:48.59 GAeyefCK.net
不適切な例を出すからバカにされただけなのに、
宗教戦争始めるとか、芯からバカなんだろうなorz

696:デフォルトの名無しさん
16/07/18 16:41:08.98 9NIJsINm.net
clipboard とか言ってる奴までいるのにメモリーマップトファイルに噛みついてる奴ってなんなんだろう...

697:デフォルトの名無しさん
16/07/18 17:37:38.75 +UjiZUGj.net
lock free queueを一発で回答出来ないボンクラ揃いだからしょうがない

698:デフォルトの名無しさん
16/07/18 20:07:57.95 pMx2hk2n.net
lock free queueって。。。
受け側はどうするんだよ?ビジーループでもさせる気か?

699:デフォルトの名無しさん
16/07/18 20:58:21.67 RVsoZVBC.net
お隣なのになぜメールか、というと送りっぱなしにしたいからなんじゃわ?
メールボックスとかメッセージキューとかはそのためのしくみやし…
一方、グローバル変数とか共有メモリとかヒープとかいうのは
データの置き場所のお勧めかもしれんが
その場所をどう管理するのかについて情報が無い、

700:デフォルトの名無しさん
16/07/18 21:26:03.86 DGcnITue.net
メールのたとえは、同一プロセスの他スレッドにデータを渡すのに
メモリマップトファイルを使うという、回りくどさの例えなんだけど
>その場所をどう管理するのかについて情報が無い、
その意味では、メモリーマップトファイルも同じで
キューのような仕組みはない
君の言い方で言えば、
(同一プロセスの他スレッドにデータを渡すのに)データの置き場所としてお勧めではないし
その場所をどう管理するかについて(キュー的な)情報も無い
だから謎なんだよ
仮に、メモリーマップトファイルがキューのような仕組みを持っていたとしたら
パフォーマンスのことは置いておいたとして、今回の案件の解決策として
選択肢に挙がるのもわかるんだよ
だけど、そんな仕組みはない

701:デフォルトの名無しさん
16/07/18 21:28:11.14 8aWrqcHl.net
なんか一�


702:l必死な奴がいるな割とマジで



703:デフォルトの名無しさん
16/07/18 21:47:02.19 +UjiZUGj.net
>>680
空だったら、スピンロックでもセマフォでも好きな方法で待てば良い

704:デフォルトの名無しさん
16/07/18 22:13:32.46 8ajA/NS2.net
言い負かされちゃったからIDころころしてまで
なんか一人必死な奴がいるな割とマジで

705:デフォルトの名無しさん
16/07/18 22:24:50.75 AmMtLZjt.net
分かるわ

706:デフォルトの名無しさん
16/07/18 22:26:35.28 CLkpKdHA.net
lock free queueはWin32APIじゃないし

707:デフォルトの名無しさん
16/07/18 22:42:43.29 pMx2hk2n.net
indowsメッセージ使わないんだったら、結局質問者自身が書いてる
>イベントとCRITICAL_SECTIONとstd::queue<T>を組み合わせた
が一番いいと思うよ
イベントやミューテックスはstd::なんとかを使うようにすればポータビリティ
も確保できるし

708:デフォルトの名無しさん
16/07/18 23:42:13.68 7oHxM0p4.net
>>679
それはWin32 APIなんですか?

709:デフォルトの名無しさん
16/07/19 00:04:11.91 HAy25S1i.net
このスレはたとえ標準ライブラリで出来ることでも
あえてwin32apiの使用を勧めなきゃいけないのか…

710:デフォルトの名無しさん
16/07/19 00:20:14.62 hDS08Rg2.net
>>690
もとの質問者>>647が「Win32 APIに」と聞いているのに?

711:デフォルトの名無しさん
16/07/19 00:27:33.24 bXwBBqWV.net
にもかかわらずその質問内で「移植性の無い手段は嫌」とか書いちゃってるからそのツッコミはノーカウント

712:デフォルトの名無しさん
16/07/19 01:12:28.51 VCiUgk/F.net
質問が狂ってると全てが狂うってことで終了にしないか

713:デフォルトの名無しさん
16/07/19 01:21:12.76 Y9D4yCz+.net
移植性はwineとReactOSを考慮してるに違いない!

714:デフォルトの名無しさん
16/07/19 01:50:01.67 LK/xSzTK.net
メモリマップトファイルを親の敵として粘着するスレはここですか?

715:デフォルトの名無しさん
16/07/19 02:35:45.78 mO5KAczv.net
>>695
もういいよ。しつこい奴だな。

716:デフォルトの名無しさん
16/07/19 08:10:41.83 pfxIVr9e.net
>>695
周回遅れダサすぎ

717:デフォルトの名無しさん
16/07/19 09:44:02.26 CF9LWmZW.net
恥ずかしいやつ

718:デフォルトの名無しさん
16/07/19 14:29:43.40 fscdSyYa.net
祖父母の敵め

719:デフォルトの名無しさん
16/07/19 18:08:41.69 opFqbMDR.net
真の名の宿敵

720:デフォルトの名無しさん
16/07/21 19:39:03.26 X6luDWDm.net
今の僕になら本当の敵を倒せるかもしれないはずだ

721:デフォルトの名無しさん
16/07/21 19:45:32.55 zIfC/0DQ.net
すみません、どなたかご存知でしたら教えて下さい。
HSPでリッチエディットコントロールを使用していて、
[CTRL]+[V]のキーイベントを捕まえたいのですが、
ENM_KEYEVENTS を EM_SETEVENTMASK で処理して、
WM_notify で EN_MSGFILTER をキャッチし、
MSGFILTER の msg メンバ に仮想キーコードが入っている事まで確認しました。
この時、[CTRL]キーが押されているかどうかは
どのように判断するのでしょうか?
よろしくお願いします。

722:デフォルトの名無しさん
16/07/21 20:00:09.42 X6luDWDm.net
普通にキーが押されたときのイベントを
WM_KEYDOWNとかWM_CHARとかWM_SYSKEYDOWNとかで
捕まえれば良い。

723:片山博文MZ ◆T6xkBnTXz7B0
16/07/21 20:16:33.27 2kJQMeni.net
GetAsyncKeyState(VK_CONTROL) < 0

724:デフォルトの名無しさん
16/07/21 20:17:01.59 UZ6ROzEF.net
>>702
GetAsyncKeyState

725:デフォルトの名無しさん
16/07/21 20:42:52.77 zIfC/0DQ.net
>>703
>>704
>>705
ありがとうございます。不慣れなもので、
WM_KEYDOWN とかは理解できていないのですが、
GetAsyncKeyState という手がありましたね。
EN_MSGFILTER にこだわりすぎていたようです。
ありがとうございました。

726:701
16/07/23 00:50:48.55 CpwLUyh1.net
連続で聞いてばかりで申し訳ないのですが、
hspでプログラムしています。
タスクバー(リバーコントロール)の中にある
言語バーのハンドルを取りたいのですが、
lpClassName = "Shell_TrayWnd"
hTSKB = FindWindow ( lpClassName, 0 )
lpClassName = "ReBarWindow32"
hREBR = FindWindowEx ( hTSKB, NULL, lpClassName, NULL )
lpClassName = "CiceroUIWndFrame"
hIME = FindWindowEx ( hREBR, NULL, lpClassName, NULL )
と記述しているところ、最後の hIME だけゼロになります。
クラス名は間違いないはずなのですが、
何かアドバイスを頂けないでしょうか?
よろしくお願いします。

727:701
16/07/23 01:01:49.74 CpwLUyh1.net
書き忘れていました。
ちなみにOSはWindows7です。

728:デフォルトの名無しさん
16/07/23 11:33:28.94 6lYjBmg5.net
>>707
言語バーは特殊な取り方しないと取れなかったはず
言語バーとハンドルでググれば出てくると思う

729:デフォルトの名無しさん
16/07/23 11:55:38.92 +Jc7SqHC.net
cn = 'CiceroUIWndFrame'
wn = 'TF_FloatingLangBar_WndTitle'
ctypes.windll.user32.FindWindowExA(0, 0, cn, 0)
ctypes.windll.user32.FindWindowExA(0, 0, cn, wn)
ctypes.windll.user32.FindWindowExA(0, 0, 0, wn)
ctypes.windll.user32.FindWindowA(cn, 0)
ctypes.windll.user32.FindWindowA(cn, wn)
ctypes.windll.user32.FindWindowA(0, wn)
どれでも取れるな

730:706
16/07/23 14:35:08.46 CpwLUyh1.net
取れない・・・。
でもありがとうございました。

731:デフォルトの名無しさん
16/07/23 14:37:37.61 6lYjBmg5.net
TF_FloatingLangBar_WndTitle はタスクバーの中にいるときは消える

732:デフォルトの名無しさん
16/07/23 14:40:17.78 6lYjBmg5.net
URLリンク(msdn.microsoft.com)

733:デフォルトの名無しさん
16/07/24 11:42:42.44 gb9BDOha.net
一方ロシアは、鉛筆を使った

734:デフォルトの名無しさん
16/07/24 12:09:19.84 wdZTIji9.net
>>711
割とマジでレスすると
FindWindowExW な関数に char * 渡してたり
FindWindowExA な関数に wchar_t * 渡してたり
すると取れない
実際に char * か wchar_t * かじゃなくて中身の文字列が

735:710
16/07/25 23:42:36.18 1XHx40P1.net
>>715
ありがとうございました。
ご助言の通りでした。お恥ずかしい。
初心者ですみませんでした。

736:デフォルトの名無しさん
16/07/26 11:41:35.07 As2nHGxN.net
>>707
このコードでどうやって >>715-716 みたいな状況が生まれたのか気になるところである

737:デフォルトの名無しさん
16/07/26 12:55:37.89 88gPJO4Y.net
>>717
× lpClassName = "Shell_TrayWnd"
○ lpClassName = L"Shell_TrayWnd"
って事じゃないの
FindWindowEx使うならTCHARだろとは思うが

738:デフォルトの名無しさん
16/07/26 15:24:12.33 As2nHGxN.net
>>718
>最後の hIME だけゼロになります。
ってことだから上の2つはなんで成功してるんだろ

739:デフォルトの名無しさん
16/07/26 16:01:28.49 88gPJO4Y.net
>>719
最小構成にしたのが>>707で実際のコードとは違うんじゃ?

740:デフォルトの名無しさん
16/07/26 16:22:18.83 As2nHGxN.net
ひとに物尋ねておいて再現しないコード貼るなってことだ罠

741:デフォルトの名無しさん
16/07/26 16:29:34.64 88gPJO4Y.net
そういう意味か
そうだな

742:デフォルトの名無しさん
16/07/26 16:40:25.26 SrQVLHqo.net
自演が強く疑われますね

743:デフォルトの名無しさん
16/07/27 04:24:40.28 AcRDCNCg.net
以下でつまっています。教えてください。
2つウインドウ作っておいて、
2つ目のウインドウの子ウインドウとしてリストボックスを作りました。
この2つ目のウインドウのリストボックスのどれが選択されているかによって、一つ目のウインドウの左クリックの動作を変えたいので、
リストのインデックスを得るために、1つ目のウインドウのプロシージャの case WM_LBUTTONDOWN:  の所に、
index=SendMessage(hWnd3,LB_GETCURSEL,NULL,NULL);

と書きましたが、リスト内の何を選択しても、indexになぜか値が入りません。
(たぶん初期値の0のまま?)
hWnd3は2つ目のウインドウ内にあるリルトボックスのハンドルです。
コンパイルエラーは無いです。
何かやり方が間違っているのでしょうか?
それっぽいワードでググってもよくわかりませんでした。
お願いします。
 

744:デフォルトの名無しさん
16/07/27 06:59:54.52 uZQmv6/V.net
>>724
sendmessageでいいのか?

745:デフォルトの名無しさん
16/07/27 07:09:55.44 8bp4Q/I5.net
>>724
hWnd3 はリストボックスを指しているかな?
親なら、GetDlgItem で取得するべし

746:723
16/07/27 09:02:22.97 AcRDCNCg.net
勘違いに気づきました!
本当にごめんなさい・・・
LB_GETCURSEL と CB_GETCURSEL を勘違いしていました。
自分が作っていたのはリストではなくコンボボックスでした。
お騒がせしました。
>>725
sendmessageは合ってました。
>>726
そんな方法もあるんですね。
それでやってもたしかに動きました。
勉強になりました。

747:デフォルトの名無しさん
16/07/27 15:00:16.07 nl1cCFz0.net
>自分が作っていたのはリストではなくコンボボックスでした。

病院池

748:デフォルトの名無しさん
16/07/28 06:23:06.44 17Ger5zU.net
>>706
WM_KEYDOWN の処理とかで使うなら Async無しの GetKeyState の方が玄人感が出ていいぞ。
違いは今のキーボードの状態を返すか(Asyncあり)、イベントメッセージが生成された時の状態を返すか(Async無し)。
ソースはms
An application calls GetKeyState in response to a keyboard-input message. This function retrieves the state of the key when the input message was generated.

749:デフォルトの名無しさん
16/07/28 19:08:46.10 O8Vfrh0P.net
相対論的手法での時間差の検出ですねわかります

750:デフォルトの名無しさん
16/07/28 20:36:50.94 svsTqv0A.net
Ctrl+マウスボタンとかの同時押しが妙に反応悪くて
心持ちグッとしっかり押さないと誤爆する
こういうアプリはたいていGetKsyState使うべきところでAsync使ってる

751:デフォルトの名無しさん
16/07/30 06:12:19.39 OSfj7rnr.net
質問ですが、
Win32 APIがスレッドセーフかそうでないかって何見ればわかりますか

例えば、同一のPTP_TIMERオブジェクトに対して
複数スレッドからSetThreadpoolTimer()を呼ぶのは安全なのか
どうなのか、とか
(PTP_TIMERオブジェクトをスレッドごとに持たせれば気にしなくて良い問題でつが

752:デフォルトの名無しさん
16/07/30 08:35:21.11 /DtHQMWG.net
同一の資源を別スレッドからアクセスして大丈夫なんてケースあるの?

753:デフォルトの名無しさん
16/07/30 08:52:51.28 9HEOOrL7.net
そのAPIのリファレンスに特別に書かれているもの以外は
基本全部スレッドセーフじゃなかったかな

754:デフォルトの名無しさん
16/07/30 09:14:23.59 RbMYjVy2.net
>>732
スレッドセーフと言う用語を誤解してると思うが、Win32 APIは全部スレッドセーフ
但し、CreateWindowしたスレッドでなければGetMessage出来ない、と言ったように制限のあるリソースもある

755:デフォルトの名無しさん
16/07/30 09:21:37.15 M4L+hnKH.net
>>733
例えば CRITICAL_SECTION は大丈夫でないと意味ないだろ

756:デフォルトの名無しさん
16/07/30 19:35:42.57 qgpylzNJ.net
>>735
どえらい勘違い野郎だなwww

757:デフォルトの名無しさん
16/07/30 19:41:09.46 +Mfyjjwe.net
どの変が勘違いか指摘できないと無意味

758:デフォルトの名無しさん
16/08/01 07:11:12.23 ZUhN/k0j.net
あれに分かるように指摘するのは壮大すぎて難しいし、他の人は分かってるから指摘する必要がない

759:デフォルトの名無しさん
16/08/01 07:54:22.07 bxVY0FqG.net
2日間必死で検索したけど、見つからなかったんだね。

760:デフォルトの名無しさん
16/08/01 08:09:40.24 ZUhN/k0j.net
いや俺は他人だが
comっぽい実装を持つapiは自前でCoMarshalなんちゃらかんちゃしてあげるか、
排他して用いる�


761:謔、に気をつけるかしないとならないじゃん。shell関連とかね。



762:デフォルトの名無しさん
16/08/01 08:19:17.96 rR9gK78k.net
他人ならそんな必死になることも無い
むしろ他人に説明できて初めて理解できていると言える

763:デフォルトの名無しさん
16/08/01 08:40:04.34 uRXdR+1Y.net
>>741
API がスレッドセーフかどうかと
その API が使うリソースを排他制御しないといけないかどうかは別の話

764:デフォルトの名無しさん
16/08/01 09:05:44.58 ZUhN/k0j.net
リソースの話ではない。
メソッド呼び出しを同期化するための手段。
>>742
必死になってるわけではなくて「Win32は全てスレッドセーフ」はあまりにも乱暴だからついて。

765:デフォルトの名無しさん
16/08/01 12:55:43.69 +SXwg/r8.net
>>744
>>741 はどう見てもリソースの話だが?
> 「Win32は全てスレッドセーフ」はあまりにも乱暴だから
ならスレッドセーフでない API を示せばすむ話

766:デフォルトの名無しさん
16/08/01 13:47:23.41 lahy9Ajd.net
ここなら分かる人がいると思うので質問させて頂きたいのですが、
例えば
WinApp1.exe
WinApp2.exe
の二つのWindows上のアプリがあり、WinApp1.exeのウインドウを
WinApp2.exeのウインドウに埋め込む事は可能ですか?
要するにhtmlのiframeで他のページを埋め込む感じです。
ただしソースコードがあるのはWinApp2.exeのみです。1のほうはバイナリのみ
です。

767:デフォルトの名無しさん
16/08/01 13:56:59.55 TMg9tIFo.net
・App1のウィンドウスタイルを変更し、タイトルバーなどを除去する。
・App1のウィンドウハンドルを取得し、App2上にSetWindowPosを使って張り付かせ続ける。

App1側にタイトルバーを表示したり、それを考慮したウィンドウサイズやクライアントサイズを
使って何か描画したり、ウィンドウ位置やサイズを変更するような機構がないなら、比較的すんなり実現できそうな気はする。

768:デフォルトの名無しさん
16/08/01 14:25:13.31 U+4K15gc.net
>>746
昔SetParentを使ってやったことあるけど
親になる側のソースしかない場合は???だね
>>747のようなやり方しかないかも

769:デフォルトの名無しさん
16/08/01 15:52:53.92 lahy9Ajd.net
>>761>>762
ありがとうございました。
とても参考になりました。
やはりWin32スレの人はレベルが高いですね。
またよろしくお願いします。

770:デフォルトの名無しさん
16/08/01 16:30:19.20 JXVULl1x.net
クライアントのHDC取得して
そっから逐次BMPまるごと転送してくればいい

771:デフォルトの名無しさん
16/08/01 16:34:37.67 3q+qs35i.net
マルウェアか? マルウェアだな?

772:デフォルトの名無しさん
16/08/01 18:28:24.75 rR9gK78k.net
>>750
それはApp1のコントロールアクセスを工夫しないとな

773:デフォルトの名無しさん
16/08/01 18:52:10.28 JXVULl1x.net
位置だけシフトしたマウスメッセージ送るだけじゃだめなん?
どうせ >>747 でもキーボードショートカットとかダメそうやし

774:デフォルトの名無しさん
16/08/01 21:29:20.71 YSAWLf5L.net
ウインドウをまとめてタブ化するアプリがこんなことしてた気がする

775:デフォルトの名無しさん
16/08/01 22:00:15.22 3lZxdv2C.net
>>745
素直に教えてくださいって言えよw

776:デフォルトの名無しさん
16/08/01 22:27:18.04 G87zOVs3.net
>>755
言えないなら無理しなくていいぞ w

777:デフォルトの名無しさん
16/08/02 00:17:55.32 JwW5OeU6.net
URLリンク(msdn.microsoft.com)(v=vs.85).aspx
dbghelpとかだな

778:デフォルトの名無しさん
16/08/02 07:23:52.61 FJZ4hdRz.net
>>757
なるほど、あるもんなんだな

779:デフォルトの名無しさん
16/08/02 08:49:44.46 qrxCcvlk.net
>>741
それは自分のコードが作成し管理してるオブジェクトを、作成スレッド以外に触らせるためのAPI
理解せずにおまじないのごとく使ってたんだろうな
あわれな底辺

780:uy ◆e6.oHu1j.o
16/08/07 09:45:06.38 PWyfS198.net
WinAPIの


781:知識量で底辺どうの言ってる奴までいるとか大丈夫かよ ロートルなもの使わざるを得ない時点で負けてんのに



782:デフォルトの名無しさん
16/08/07 10:13:14.64 bbyjljOW.net
底辺なんて表現が日常的に出てくる職場って、かわいそう

783:デフォルトの名無しさん
16/08/07 10:27:49.88 zBYc/KkC.net
数学教師激怒

784:デフォルトの名無しさん
16/08/07 13:05:30.15 sg2m+nAp.net
それを言うなら算数教諭だろうな

785:デフォルトの名無しさん
16/08/09 08:38:11.99 7b7VJDdn.net
江戸っ子激怒

786:デフォルトの名無しさん
16/08/09 14:34:00.24 n5pitoha.net
質問です
DirectXとかOpenGLとかのライブラリって
いちいちステートマシンの状態セットみたいなのがずらずら並ぶんですが
ハードウェアにレジスタセットするみたいなドライバばかりなんですか?

787:デフォルトの名無しさん
16/08/09 19:58:47.64 GFJow9Sf.net
一昔前に流行った
オブジェクト指向というやつです

788:デフォルトの名無しさん
16/08/10 19:36:30.32 IsHQZY3F.net
GPU にプログラム的な指示して後はお任せ という方向にばかり進化してるから

789:デフォルトの名無しさん
16/08/11 11:56:33.25 v2n9djjr.net
object指向じゃなくてvertex指向だな

790:デフォルトの名無しさん
16/08/14 03:26:23.22 MmvWSAs3.net
>>766
今時のナウなヤングはどんな感じなの?

791:デフォルトの名無しさん
16/08/14 17:49:29.23 j6bpKiBS.net
VRAMに直接書き込み

792:デフォルトの名無しさん
16/08/15 22:57:42.57 wycrF0RU.net
win8.1/win10で動作するもので、管理者権限で実行を必要とするものを
(Windowsのサービスを停止、再開)を作りたいのですが、うまく動きません。
sc.exeとnet.exeを呼び出して、
SellExecuteExでコマンドを送っているのですが、うごく動いていません。

環境はvs2015です。ビルドオプションかなにかが必要でしょうか?

SHELLEXECUTEINFO info;
memset(&info, 0, sizeof(info));
info.cbSize = sizeof(info);
info.lpVerb = L"open";info.lpFile = L"net.exe";
info.lpParameters = L"stop 停止させたいサービス名";
info.nShow = SW_SHOWNORMAL;
info.fMask = SEE_MASK_NOCLOSEPROCESS;
ShellExecuteEx(&info);
WaitForSingleObject(info.hProcess, INFINITE);
info.lpFile = L"sc.exe";
info.lpParameters = L"config 停止させたいサービス名 start = disabled";

バッチファイル形式で管理者権限を設定して実行すればうまく動くのですが、
呼び出すAPIが間違っているのでしょうか?
こっちだとうまく動きます。
停止.bat
net stop サービス名
sc config サービス名 start= disabled

ご教授お願いします。

793:デフォルトの名無しさん
16/08/15 23:01:49.24 iamh6a7h.net
info.lpVerb = L゙runas゙ ;

794:デフォルトの名無しさん
16/08/15 23:16:47.36 wycrF0RU.net
>>772
回答ありがとうございます。
ビルドして試しましたが、実機では、サービスが停止していないようでした。
コンソール画面では停止したとは出ていました。
外部呼出しでうまくいけばよかったのですが、これからOpenSCManagerあたり調べてみます。
UAC周りで悪さしているのかなぁ。

795:デフォルトの名無しさん
16/08/16 00:48:14.20 Zc5ax7h8.net
ShellExecuteExでファイルのプロパティダイアログを出すのですが
今どきの広いモニタですと、呼び出したウインドウの上に重なるような位置に表示してくれないと面倒です
引数として親ウインドウのハンドルを渡しているので、
そのくらいやってくれそうな気がするのですが
SHELLEXECUTEINFOに設定できるパラメータを見渡しても、それらしいものは無いよ


796:うなので 自前でダイアログを動かそうかと考えていますが 本当にShellExecuteExの機能として、プロパティダイアログを親ウインドウの上に出すことはできないのでしょうか?



797:デフォルトの名無しさん
16/08/16 09:55:10.07 lvyZIFRY.net
Window の機能じゃなくて Shell の機能だからそういう細かいのは無い

798:デフォルトの名無しさん
16/08/16 11:24:39.96 Zc5ax7h8.net
そうですか
ありがとうございました!

799:デフォルトの名無しさん
16/08/25 13:01:13.59 HVWLzPcg.net
プロセスハンドルからプロセスIDを取得するのってどうやるん?
ハンドル得る時に使ったidを覚えておくしかない?

800:デフォルトの名無しさん
16/08/25 13:12:40.83 EwnmxDlV.net
ハンドルからIDならGetProcessIdが使えるだろ?

801:デフォルトの名無しさん
16/08/25 15:14:16.99 HVWLzPcg.net
OpenProcess関連ばっかり調べてたごめんありがとう

802:デフォルトの名無しさん
16/08/29 18:06:09.51 zb9cEIRR.net
C++初心者スレから紹介されてやってきました。
よろしくお願いします。

その再掲です。

1つのフォームウィンドウをメインフォームとし、
他のフォームはWndParentをそのメインフォームとして子フォームを作成するアプリを作っています。

いま、メインフォームを含めた全フォームをEnableWindowでDisableにし、
新しい子フォームを1つだけ表示させます。要するにモーダルなフォームです。

この状態でアプリケーションを非アクティブにします。
そして、メインフォームをクリックします。
すると、WM_ACTIVATEAPPが送られ、モーダルな子フォームがアクティブになります。
ここまではいいのですが

アプリケーションが非アクティブで、Enableでない別の子フォームをクリックしても
WM_ACTIVATEAPPや、WM_WINDOWPOSCHANGINGが送られてこず
まったくアクティブになりません。Spy++で見たところ、WM_SERCURSORしか
送られてきてませんでした。子フォームのクリックではメインフォームにも何も届きません。

どうやったらDisableされた子フォームをクリックするとアプリケーションが
アクティブになるようになるのでしょうか。

よろしくお願いします。

803:デフォルトの名無しさん
16/08/29 18:26:20.41 sMQdCbqN.net
クリックしても反応しなくなるようにするためのEnableWindowなのよモルダー
フォームそのものはクリックに反応して欲しければ、フォームにEnableWindowを
使わず、フォーム内の操作して欲しくないコントロールをEnableWindowするか
他の工夫をする必要があるわね

804:デフォルトの名無しさん
16/08/29 18:33:18.40 zb9cEIRR.net
そうですか・・・

でも、これでちゃんとアクティブにできるプログラムもあるんです。

エンバカデロのC++ BuilderやDelphiです。
やつらはサイズ0のTApplicationの見えないウィンドウを親ウィンドウとして
同様のコードでちゃんと動作します。

実はソースコードを他の人と共有する必要があって
Delphiじゃまずいかなと、VC++にまるごと移植したんです。

そのときにTApplicationだと、最小化したときにタスクバーにいれられないため
Hideする仕様になってたのがちょっといやで、
メインフォームを本当のメインフォームにするようにしたんですが、
それが原因か、それとも少し省略したせいか、細かいところで挙動が違います。

TApplicationはRestoreTopMostsとかいう関数で常にトップにあったから
そのへんかなと思うのですが・・・・
まあ仕方ないのかなぁ。


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch