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


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

Win32API質問箱 Build86



1 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 15:23:00 ]
スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。
やさしいお兄さんやお姉さんたちが答えてくれるかも。
「知らないならレスしないで下さい。ウザイだけです。 」なんて言わないでねっ!

過去スレ、関連リンクは>>2-10くらい。

■注意
・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。
・日本語版MSDN Online Libraryは不完全です。英語版( msdn.microsoft.com/en-us/library/ )の利用推奨。
・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。
・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで

- Win32API質問箱 wiki
wiki.livedoor.jp/program1/d/FrontPage

Win32API質問箱 Build85
pc12.2ch.net/test/read.cgi/tech/1262430441/

666 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 12:56:21 ]
Windows APIってどの位覚えればプログラミングが
ラクになるんでしょうか?先輩に聞いたら
「10個程度覚えれば後は都度調べればいいけど0個じゃ辛い」
といってるんですが信じていいでしょうか?

667 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 13:07:55 ]
別に都度ググってもいいです
ただ、どのDLLがどの機能を管轄しているかくらいは知っておくといいかもしれません

/*
6個でウィンドウ表示

RegisterClassEx
CreateWindowEx
GetMessage
TranslateMessage
DispatchMessage
PostQuitMessage
*/

668 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 13:14:10 ]
10個じゃきついだろ・・・。

669 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 13:18:00 ]
ググるためにもある程度体系がわかってれば良い

670 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 13:36:32 ]
Windows API を覚えても
Windowsアプリを作ったり、Windowsの仕組みを覚えられるだけで
あまりプログラミングは楽にならない

でも画像処理とかは楽になるかもしれない

671 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 14:12:45 ]
構造体とメッセージもセットで

672 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 14:34:06 ]
おばけのQちゃんの絵描き歌をシミュレートして
繰り返しアニメーション表示するアプリをAPIだけで組みたい
んだけどどう組めばいいですか?

673 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 14:36:15 ]
まずウィンドウクラスを登録します

674 名前:672 mailto:sage [2010/03/14(日) 14:38:25 ]
マウスで画面のサイズを変えた際に、縦横の比率を
変えないようにし、書かれているアニメもそれに
応じて(途中迄でも)大きさを変えたいです。



675 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 14:40:13 ]
ウィンドウを表示して、その上に描画していけばいい。
で、ウィンドウサイズが変更されようとしているときに、縦横比率を変えないように変更して、
ウィンドウサイズに合わせて描画サイズを変えればいい。

676 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 14:43:20 ]
演奏してる曲と同期してアニメーションさせるって話なら少し面倒。

677 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 14:46:58 ]
タイミング固定とかならそれほどでもないだろうけどね。

678 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 14:47:55 ]
歌詞ファイルみたいなフォーマットを決めてやるとか

679 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 20:10:24 ]
マルチコア環境でプロセス毎のCPU使用率を正しく取得するにはどうすればよいのでしょう?

PdhGetFormattedCounterValueで取得してみたところ、取得できるCPU使用率は
タスクマネージャで確認できるCPU使用率の2倍になっています(2コアだから?)。
ということは取得できるCPU使用率の最大値は200となるはずと思っていたのですが
何故か100までしか取得できませんでした。(100以上は100として取得できる模様)

ちなみにWindows付属のパフォーマンスモニターで確認してみると、こちらも
タスクマネージャの2倍の値が表示されていますが、100以上の値もきっちり正しく表示されます。

取得できる上限を200にする方法か、タスクマネージャで表示されている値を
簡単に取得できる方法はありませんか?


680 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 20:16:50 ]
ちょっと取得してる部分のコード晒してみろよ

681 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 20:30:47 ]
このような感じです。

// オープン
HQUERY hQuery;
PdhOpenQuery(NULL,0,&hQuery);

// カウンタ追加
HCOUNTER hCounter;
std::string str = "\\Process(GOM)\\% Processor Time";
PdhAddCounter(hQuery, str.c_str(), 0, &hCounter );

// 3秒間の負荷計測
PdhCollectQueryData(hQuery);
Sleep(3000);
PdhCollectQueryData(hQuery);

// 計測結果取得
PDH_FMT_COUNTERVALUE fntValue;
PdhGetFormattedCounterValue(hCounter, PDH_FMT_LONG, NULL, &fntValue);

// クローズ
PdhCloseQuery( m_hQuery );

std::cout << fntValue.longValue << std::endl;

682 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 20:42:15 ]
>>666
俺なんて引数も戻り値もちゃんと覚えているのは10個もない。
ただ、どんなAPIが「存在するか」はだいたい把握している。

683 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 21:16:25 ]
>>681
PdhGetFormattedCounterValueのヘルプを見てみたが、
dwFormatにPDH_FMT_NOCAP100フラグが無いと、
100を超える値は全て100で返る仕様っぽいぞ。
家はシングルコアだから試しようが無いけどなorz

684 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 21:29:01 ]
>>683
おっしゃるとおりでした!
PDH_FMT_NOCAP100フラグを立てると100以上の値も取得できるようになりました。
ありがとうございます!



685 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 22:00:40 ]
>>666
Win32APIの目次みたいな一覧が色んな所にあるから
一通り流し読む
引数とかは一切無視
関数名と1行説明だけ読む
そんでおわり

その先輩はちょっと若いな
あんま意味の無い助言

686 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 13:52:55 ]
昔Win32本といえばpetzoldだったけどあの本も今や.net本になってしもうたな

687 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 14:53:54 ]
グローバルフック使ってプログラム側からキーボード操作したいんだけど、どうすればいいのか全然分からん
検索ワードだけでいいから誰か教えておくれ

688 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 14:57:59 ]
msdn.microsoft.com/ja-jp/library/cc429971.aspx
大して難しくないような


まあどうすればいいか全然分からんって言う奴は
はじめからやる気がないんですけどね

689 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 15:14:17 ]
ウィンドウメッセージを使ってるのかGetAsyncKeyState()系を使うのかで
挙動が違ってくるし、
突き詰めたらそんなに簡単な話でもないと思うけど。

690 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 15:24:05 ]
ありがと
でもググっても監視する方しか分かんないや

691 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 16:22:08 ]
送るだけならフックの必要は無いから見つからないのも当然

692 名前:デフォルトの名無しさん [2010/03/15(月) 20:19:51 ]
シリアル通信について教えてください。
「WaitCommEvent」はタイムアウトで戻す事は出来ないんでしょうか?
タイムアウトはRead,Writeのみなんでしょうか?


693 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 21:59:48 ]
非同期通信に対応してるのだから、勝手にタイムアウトでも何でもすればいい。

694 名前:692 [2010/03/15(月) 22:19:59 ]
そのタイムアウトさせるのを、監視するスレッドを自前で作る必要があるのか
SetCommTimeoutsみたいな設定で、WaitCommEventからイベント無しで
戻せるのか知りたいんです。



695 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 22:52:42 ]
>>692
昔やった方法
・CreateFile()でPENDINGで開く
・WaitCommEvent()でイベントオブジェクトとともに渡す→すぐ返る→戻り値0、GetLastError()がPENDINGなら正常
・WaitForMultipleObjects()に指定し、でタイムアウトつきで待つ

スレッド化してるからWait〜で他のイベントオブジェクトもついでに待ってたな。

ググればどこかにサンプルがあるはず。自力で書けなかった記憶があるから。
特にPENDINGを使用する箇所

696 名前:692 mailto:sage [2010/03/15(月) 23:23:06 ]
>>695
PENDINGとはオーバーラップド構造体云々ってやつですか?
良く分からないので明日ヘルプ見ながら実機でちまちま試してみます、
有難うございました






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

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

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