[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 05/10 00:36 / Filesize : 205 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Win32API質問箱 Build77



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'を付加する実装も可能にするためだと思う。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<205KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef