- 1 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 01:54:24 ]
- スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。
やさしいお兄さんやお姉さんたちが答えてくれるかも。 「知らないならレスしないで下さい。ウザイだけです。 」なんて言わないでねっ! 過去スレ、関連リンクは>>2-10くらい。 ■注意 ・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。 ・日本語版MSDN Online Libraryは不完全です。英語版(msdn2.microsoft.com/library/)の利用推奨。 ・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。 ・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで - Win32API質問箱 wiki wiki.livedoor.jp/program1/d/FrontPage Win32API質問箱 Build76 pc11.2ch.net/test/read.cgi/tech/1233622578/
- 545 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 20:16:58 ]
- GetTextExtentPoint以外に何かいい方法あるのん?
- 546 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 20:17:33 ]
- >>544
WSHやVBのInputBox使ったこと無いのか?
- 547 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 20:22:05 ]
- MessageBoxが伸びるからInputBoxも伸ばしただけだが
- 548 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 20:23:26 ]
- >>546
なんとも不便なんだな
- 549 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 20:27:34 ]
- ダイアログなのにGWLP_USERDATAとか使っちゃってるし
しかもLONG_PTRじゃなくてLONGにキャストしちゃってるし SM_C?SCREENで画面サイズ計算しちゃってるし 猫プログラミングぐらいのレベルだな
- 550 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 20:32:35 ]
- 画面サイズはメジャーを使ってモニターに押し当てないと測れないな。
- 551 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 20:37:45 ]
- MAX_WIDTHっておい、どう見てもMIN_WIDTHの間違いだろw
で、MessageBoxと違ってmaxは考慮しないのな WUXGAとかで開発してるとnetbookで使った時えらい事になりそうだw
- 552 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 20:39:42 ]
- ダイアログは別のやつ使うんだった気がしてたけど調べるの忘れてたわ。 >GWLP_USERDATA
LONGになってんのは単純なミス。 画面サイズは何を使えば満足? マルチディスプレイはよく分からん。 どう見てもMIN_WIDTHの間違い。 >MAX_WIDTH MessageBoxってmax考慮してたっけ? 画面外にまで突き抜けてた気がするけど。
- 553 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 20:41:20 ]
- WM_SETFONTした後のGetDCでフォントが選択されてる保証ってあるの?
- 554 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 20:45:22 ]
- 何ていうか、見た人のスキルで評価の分かれるコードだw
「どこがダメなんだ?」と思った人は猫わかレベルの人だろう
- 555 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 20:46:52 ]
- 勉強になるなあ
- 556 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 20:55:10 ]
- もろもろ考慮しても>>467は50行で作れるし
>>479は5分で作れるのか すげぇな
- 557 名前:デフォルトの名無しさん mailto:SAGE [2009/03/14(土) 20:55:45 ]
- ウィンドウの中のある座標に向かってクリックメッセージを送るAPIってありますか?
ボタン風に書いてあるメニューボタンがあるんですが、実際は絵なので ハンドルが取れないのです。
- 558 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 20:58:51 ]
- クリックした際の処理を自分で走らせれば?
- 559 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 21:06:56 ]
- >>556
だってさ、最小コードはこれだろ?50行なんて余裕でしょ INT_PTR CALLBACK InputBoxProc(HWND hDlg,UINT Msg,WPARAM wParam,LPARAM lParam) { switch(Msg){ case WM_INITDIALOG: return SetWindowLongPtr(hDlg,DWLP_USER,lParam),TRUE; case WM_COMMAND: switch(GET_WM_COMMAND_ID(wParam,lParam)){ case IDOK: { LPTSTR p = (LPTSTR)GetWindowLongPtr(hDlg,DWLP_USER); GetDlgItemText(hDlg,IDC_TEXT,p,*(int*)p); } case IDCANCEL: EndDialog(hDlg,GET_WM_COMMAND_ID(wParam,lParam)); } } return FALSE; }
- 560 名前:デフォルトの名無しさん mailto:SAGE [2009/03/14(土) 21:11:01 ]
- すみません、説明不足でした。
外部アプリのメニューを操作したいのですが、そのメニューボタンが すべて絵なんです。
- 561 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 21:17:30 ]
- >>559
リソース使ってる点は無視するにしても メッセージの長さにウィンドウを合わせる処理がないのでは・・・
- 562 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 21:19:03 ]
- >>560
何か怪しいことに使おうとしてるんじゃないのかね
- 563 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 21:19:06 ]
- >>560
WM_LBUTTONDOWN じゃだめなの?
- 564 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 21:20:57 ]
- >>559
自信満々に出してきたコードがこれでは…
- 565 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 21:22:11 ]
- >>561
別にメッセージの長さに合わせる必要性が無いし、 リソース使ってるのに問題でもあるのか? フォント決め打ちよりはマシだろ
- 566 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 21:24:12 ]
- てか、メッセージを設定する部分はどこ行った
- 567 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 21:24:22 ]
- >>561
メッセージを表示するコードがないんだから、長さを合わせる以前の問題だろうw
- 568 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 21:26:06 ]
- だから>>559は最小コードだって
これに肉付けしていっても50行ぐらいで十分収まるだろってこと
- 569 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 21:27:22 ]
- リソース使えばそりゃ>>462だって短くなるし
ちゃんとした比較にならないのでは
- 570 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 21:30:13 ]
- リソースもフォント決め打ちじゃないの?
- 571 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 21:30:18 ]
- いや、>>556の「50行・5分で作れるのすげぇ」レスを受けて5分で書いてみただけだし
- 572 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 21:32:02 ]
- もろもろ考慮されてるか?
- 573 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 21:34:00 ]
- API使いならリソースなんて使わないんじゃないか
- 574 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 21:35:14 ]
- リソースはソース配るのが面倒だな
- 575 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 21:35:58 ]
- >>573
お前アホだろw
- 576 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 21:36:03 ]
- >>573
リソースを使うAPIを使いたいだろw
- 577 名前:560 mailto:SAGE [2009/03/14(土) 21:41:02 ]
- >>562
そ、そんなんじゃないです。 >>563 カーソルを移動させてってことですか? 他のソフトで目的の外部アプリを操ってるのがあって どうやってるのかなってのと、自分もそういうのを作る 必要があったので。
- 578 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 21:41:41 ]
- mouse_event, SendInput
- 579 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 21:46:30 ]
- > メニューボタンがすべて絵
最近こういうのホント多いよなぁ。動画編集ソフトとか特に。 使い勝手が良ければまだしも、キーボード操作を全く受け付けなかったりとか。 もう素直に標準のコントロール使ってくれよ・・・。
- 580 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 21:49:31 ]
- もはやあらゆるものをDirect3Dで描画する時代に入ったんだよ
- 581 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 22:05:54 ]
- 2D(GDI)のハードウェアアクセラレーションはRADEONもGeForceも既に搭載しとらんだろ
XPはもうロートルなんだから7600GSやX1650でも積んでればいいんだ
- 582 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 22:12:44 ]
- >>580-581
誤爆?
- 583 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 22:30:59 ]
- moudamedakonosure
- 584 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 00:00:19 ]
- >>579-581
そこで、ActiveAccessibilityの幻想ですよ。
- 585 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 00:22:30 ]
- 自プロセス内の全スレッドのレジスタの値を取得するAPIは無い?
- 586 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 00:26:33 ]
- インラインアセンブラで取ってろ
- 587 名前:560 mailto:SAGE [2009/03/15(日) 07:23:43 ]
- >>578
ありがとうございます。 ググってみたら出来そうな気がします。
- 588 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 07:40:34 ]
- レジストリエディタでキーを作成すると、日本語Windowsだと(標準)という名前でエントリが1つ
常に存在してるようなのですが、このエントリを読み書きするにはどうすれば いいのでしょうか?よろしくお願いします。
- 589 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 08:02:48 ]
- 588です。解決しました。MSDNに書いてありましたね。すみません。
名前にNULLまたは空文字列を設定するんですね。
- 590 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 11:40:33 ]
- www.fnn-news.com/news/headlines/articles/CONN00151035.html
- 591 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 11:58:57 ]
- >>585
関数呼び出し自体がレジスタを変えるというのに どうやってそんな API を作ればいいんだよ
- 592 名前:デフォルトの名無しさん [2009/03/15(日) 12:12:58 ]
- CONTEXT 構造体にアクセスしたいんじゃね?
- 593 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 12:16:30 ]
- GetThreadContextじゃねーの?
- 594 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 14:36:03 ]
- espやeipの値が変わる分は補正すればいいということか
- 595 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 14:49:11 ]
- GetThreadContextを呼んだ時点でeaxやedxは確実に変わってるだろが
- 596 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 14:51:40 ]
- だから補正しろつってるだろ。
- 597 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 14:51:52 ]
- CONTEXT構造体がローカル変数なら
特に何ともないと思うけど・・・
- 598 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 14:56:38 ]
- 頭悪いのが数名混じってるねぇ
GetThreadContextの実体が呼ばれるまでにAPIがレジスタを書き換えてしまってるでしょうに GetThreadContext: push ebp mov ebp, esp push dword ptr [ebp+0C] push dword ptr [ebp+08] call dword ptr [NtGetContextThread] ... NtGetContextThread: mov eax, 00000055h mov edx, 7FFE0300h call dword ptr [edx] ...
- 599 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 15:01:18 ]
- 不確定性原理の話じゃないのかw
- 600 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 15:04:31 ]
- そんな糞実装になってんのか?
- 601 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 15:05:35 ]
- つーかインラインアセンブラ使えばいいのにAPIてw
あ、VBプログラマーの方でしたかサーセンwww
- 602 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 15:09:53 ]
- >>600
糞なのはお前だ 少なくともeax,ecx,edxは「関数側で自由に書き換えていいレジスタ」だ そんな事も知らんのか
- 603 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 15:29:37 ]
- 気にするな。
そもそも、MSDNライブラリには、SuspendThreadで止めてからやれって書いてあるんだ。 (経験上、動いているスレッドを指定してもエラーになることはないけど) msdn.microsoft.com/ja-jp/library/cc428970.aspx
- 604 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 15:59:37 ]
- 動いてる他スレッドなんか無意味だろ
API呼出から戻ってくる間にもスレッドが動きつづけていてレジスタの値が刻一刻と変わる
- 605 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 16:01:05 ]
- >>602
それが何か関係あるか? レジスタのスナップショットを取りたいという目的を達成できてないじゃないのよ
- 606 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 16:04:32 ]
- >>605
お前がアホなのはよくわかった
- 607 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 16:05:27 ]
- お前がアホなのもよくわかった
- 608 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 16:07:10 ]
- つーかGetThreadContextはコンテキストスイッチが発生して退避した時の状態を返してるだけだろ。
レジスタを取得するAPIとか、頭悪すぎ。
- 609 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 16:10:54 ]
- なんだ、目的すら違うのか
- 610 名前:デフォルトの名無しさん [2009/03/15(日) 16:12:04 ]
- レジスタのスナップショット(笑)
エミュレータでも作ってろ馬鹿
- 611 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 16:15:38 ]
- 基本情報技術者レベルの知識すら無い人がなんでこのスレにいるのかねぇ・・・
- 612 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 16:32:31 ]
- システムコールも良く分かってないくせに糞実装とか
思わず微笑んじゃう
- 613 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 17:20:22 ]
- たとえば、
CのライブラリとWin32のAPIで同じ機能の関数があった場合 システムまで問い合わせる分APIのほうが遅くなるの?
- 614 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 17:44:59 ]
- うん
- 615 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 17:53:20 ]
- >>613
うわー頭悪そうな質問
- 616 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 18:03:21 ]
- 同じ機能だと、Cのライブラリ関数も中でWin32のAPIを呼んでいたり
するんだよね
- 617 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 18:09:11 ]
- >>615
うわーーーーっ、超頭悪そう、嫌だ嫌だ
- 618 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 18:14:10 ]
- オウム返ししか出来ないアホは黙っててね
- 619 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 18:17:05 ]
- IPCの分遅くなるだろな
- 620 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 18:17:36 ]
- 数日前から変なのが一匹住み着いてるな
たぶん目覚まし君が帰ってきたのだろう
- 621 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 18:18:48 ]
- >>615
は超楽しそうな奴と思うんだが、なっ、だろ
- 622 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 18:20:00 ]
- 馬鹿はレスしなくていいよ
- 623 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 18:20:15 ]
- 例えば、strcpyとlstrcpyAなら、
前者のほうがコンパイラの裁量でインライン展開される可能性がある。 そうでなくとも、strcpyのほうが速かった気がするが、 最近計ったわけではないからよく覚えていない。 あと、この2つはNULL渡したときの挙動が異なった気がする。 いい加減なことばかりですまん。
- 624 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 18:20:40 ]
- 最終的にシステムコールになるけど、それがWinの場合APIだから
最終的にはAPIが呼ばれるだろう。
- 625 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 18:21:39 ]
- >>620は目覚まし?
- 626 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 18:24:19 ]
- >>625が目覚ましでした
- 627 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 18:26:26 ]
- >>623
同じようにlstrcpyAもインライン展開の可能性ないのか
- 628 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 18:27:41 ]
- >>627
APIをインライン展開て 馬鹿丸出し
- 629 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 18:29:12 ]
- >>623
インライン展開じゃなくてCompiler Intrinsicだろ。
- 630 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 18:35:46 ]
- strcpyくらいアセンブラで書けよ
- 631 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 18:40:11 ]
- コンパイラは境界や長さによって生成する機械命令を変えたりして
性能の最適化を図るんだけど
- 632 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 18:42:49 ]
- >>630 書いてくれ
- 633 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 18:44:50 ]
- 今時strcpyなんて使わねーよ
- 634 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 18:49:46 ]
- 目覚まし君の人気に嫉妬
誰か俺にもわかるように経緯教えてくれ
- 635 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 18:50:32 ]
- ■ おすすめ2ちゃんねる 開発中。。。 by FOX ★
このスレを見ている人はこんなスレも見ています。(ver 0.20) 気軽に「こんなソフトありませんか?」 Part.104 [ソフトウェア] 【名無し限定】暇なので話しませんか?3925 [メンヘルサロン] <==== メンヘルに気合を入れて出入りしているのが、>>620の言う変なのか
- 636 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 18:57:19 ]
- >>633
strcpy使わないなら何使ってんだよ
- 637 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 18:59:05 ]
- _tcscpy
- 638 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 18:59:17 ]
- strcpy_s若しくはStringCchCopyにきまってるだろ
今時無条件にstrcpy使っちゃう人はJavaや.NETにした方がいいよ
- 639 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 19:18:57 ]
- >>636
windowsならStrsafe.hインクルードだろうが ただ、俺はwin専業じゃないからstrcpyもよく使っている
- 640 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 19:22:38 ]
- ん? std::string 使うって話じゃなかったのか?
- 641 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 19:22:45 ]
- クロス環境だとstrcpyは現役だなぁ
それと、_s系って結局ラッパじゃねーの?
- 642 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 19:24:25 ]
- フツーに_tcscpy_sだと思うけど。
- 643 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 19:57:12 ]
- VS2005以降じゃねーかw
- 644 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 19:58:46 ]
- std::stringってなんでc_str()をthrow()にしなかったんだろ
おかげで肝心な所で微妙に使い難い
- 645 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 20:27:34 ]
- >>644
c_strが呼ばれた瞬間に'\0'を付加する実装も可能にするためだと思う。
|

|