トップページ⇒tech
1001コメント304KB

Win32API質問箱 Build43

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん2006/05/19(金) 11:25:09
スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。
やさしいお兄さんやお姉さんたちが答えてくれるかも。

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

■注意
・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。
・日本語版MSDN Online Libraryは不完全です。英語版(http://msdn.microsoft.com)の利用推奨。
・APIフックなど高度な事をしたい場合はできるだけAdvencedWindowsを読みましょう。
・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで。
09519472006/06/28(水) 21:49:53
事故解決しました。
手前で範囲外の配列指定やってました。
0952デフォルトの名無しさん2006/06/28(水) 22:45:30

次スレ立てときましたよ。
【Win32API質問箱 Build44】
http://pc8.2ch.net/test/read.cgi/tech/1151501925/
0953デフォルトの名無しさん2006/06/28(水) 22:50:15
乙
09549202006/06/28(水) 23:21:08
良くわからないうちにできるようになりました・・・

>>936
後々、その問題にもあたりました。
今は解決しています。
ありがとうございました。
>>937
'A'という表記もありなんですね。
ありがとうございました。
0955デフォルトの名無しさん2006/06/29(木) 00:29:06
Win64API
0956デフォルトの名無しさん2006/06/29(木) 13:31:01
タスクトレイのアイコンにマウスを乗せると、ツールチップが出ますが、
この文字列をアプリケーションから取得するには何というAPIを使えばできますか?
0957デフォルトの名無しさん2006/06/29(木) 14:15:21
GetWindowText
09589562006/06/29(木) 14:44:18
>>957
GetWindowTextは試してみましたが、タスクトレイのアイコンのツールチップの内容ではなく、
そのアプリケーションのタイトルバーらしき文字列しか取得できませんでした。
例えばタスクマネージャを起動すると、タスクトレイには "CPU 使用率 ○%" というツールチップが出ますが、
GetWindowTextで得られるのは "タスクマネージャ"という文字列のみでした。

"CPU 使用率 ○%" を取得する方法って無いものでしょうか。
0959デフォルトの名無しさん2006/06/29(木) 15:14:02
>>958
ちゃんと「ツールチップのウィンドウハンドル」を渡しているのか?
0960デフォルトの名無しさん2006/06/29(木) 16:06:42
てか、ツールチップのウィンドウハンドルなんて取得できるの?
0961デフォルトの名無しさん2006/06/29(木) 17:41:06
>>960
ウィンドウハンドルを取得できないウィンドウなんてあるのか?
0962デフォルトの名無しさん2006/06/29(木) 18:32:42
必要なくなって破棄されたウィンドウとか
0963デフォルトの名無しさん2006/06/29(木) 18:39:58
実行ファイルのあるフォルダの名前を取得する方法ありますか?
0964デフォルトの名無しさん2006/06/29(木) 18:52:07
>>963
argv[0]
0965デフォルトの名無しさん2006/06/29(木) 18:52:24
>>962
それは既にウィンドウじゃないだろ。
0966デフォルトの名無しさん2006/06/29(木) 18:55:54
GetModuleInstance
0967デフォルトの名無しさん2006/06/29(木) 18:57:13
>>963
「実行ファイル」とは何なのか、詳しく説明してもらおうか。
0968デフォルトの名無しさん2006/06/29(木) 19:01:51
>>965
>956 >958 でツールチップって言ってたからな。

> この文字列をアプリケーションから取得
いや、吊られちまったのか
0969デフォルトの名無しさん2006/06/29(木) 19:11:35
>>964
WinMainからの起動なのでargvが見当たりません。

>>966
ぐぐってみましたけど、これはC++のメソッドですか?
APIなど、Cからでもできる方法が嬉しいです。

>>967
VC++で作成したx86実行バイナリと言えばいいでしょうか。
拡張子.exeを持つファイルです。
0970デフォルトの名無しさん2006/06/29(木) 19:20:34
#include <stdlib.h>
__argv[0]

0971デフォルトの名無しさん2006/06/29(木) 19:20:43
>>969
スマン間違い
GetModulePath
0972デフォルトの名無しさん2006/06/29(木) 19:21:15
GetModuleFileName(NULL, , );
0973デフォルトの名無しさん2006/06/29(木) 19:25:38
GetModuleFileName( NULL, path, MAX_PATH )
0974デフォルトの名無しさん2006/06/29(木) 19:31:01
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpdllpro/html/_win32_getmodulefilename.asp
0975デフォルトの名無しさん2006/06/29(木) 19:37:55
>>970-974
ありがとうございます。
ばっちりいけました。
09769582006/06/29(木) 23:28:04
マウスを乗せると出てくるツールチップ(呼び方違いますか?)の文字列を、マウスを乗せずに取得したいんですよ・・。
そういうAPIって無いんですかね。ググっても全然それらしいのが出てこないっすね。
0977デフォルトの名無しさん2006/06/29(木) 23:41:30
>>976
ツールチップが表示されていないときに文字列を取得するのは無理な場合もあると思う。
マウスを乗せて初めて文字列を決定する場合があるから。
文字列が固定されているツールチップなら取得できるかもしれないけど…。
0978デフォルトの名無しさん2006/06/29(木) 23:44:07
ツールチップを出すのはアプリケーションだ。
ツールチップが出る前に中身がほしいと思ったら
アプリケーションに働きかけるしかないんじゃないだろうか。
ツールチップが表示された後なら、ウィンドウハンドルを
どうにかして取得すれば後は簡単だと思うが。

目的と手段が逆になってたりしないか?
09799582006/06/30(金) 01:19:14
タスクトレイにアイコンを登録する時点でツールチップの文字列も指定するので、
どこかに常に格納されてていいはずなんですよね。
0980デフォルトの名無しさん2006/06/30(金) 03:50:28
>>979
それがその後のホバー時に表示される文字列と同じという
保証はないだろ。
0981デフォルトの名無しさん2006/06/30(金) 13:26:13
>>979
タスクトレイのツールチップって、実装としてはNOTIFYICONDATA構造体のszTipだろ?
ウィンドウハンドル取得しても、ウィンドウハンドルとNOTIFYICONDATA構造体を、
内部的にどうやって関連付けてるかなんてわからんし、
ウィンドウハンドルから取得するのは無理だと思うけど。

タスクトレイに登録されている一覧を取得するAPIがあったらできるかもしれんが、わしはしらん。
0982デフォルトの名無しさん2006/06/30(金) 13:38:31
Shell_NotifyIcon(SHELL32.dll)にフックしかけとけば?
0983デフォルトの名無しさん2006/06/30(金) 14:56:44
CPUの使用率ならパフォーマンスカウンタとかそれ専用のAPIから取れそうな気もするが、
タスクマネージャから情報を取らねばならぬのはなぜ。
0984デフォルトの名無しさん2006/06/30(金) 15:05:50
EDITコントロールの最大入力文字数をIDで設定するにはどうしたら
よかったのでしょうか?
0985デフォルトの名無しさん2006/06/30(金) 15:18:53
>>984
SendMessage(EM_LIMITTEXT, GetDlgItem(hWndDlg, IDC_EDIT). (WPARAM)999, 0);
0986デフォルトの名無しさん2006/06/30(金) 16:10:34
>>985
ありがとぅ、答えてくれて!
0987デフォルトの名無しさん2006/06/30(金) 18:13:51
>>983
よくわかんないけどNT系ならNtQuerySystemInformationで得た値をいじる
0988デフォルトの名無しさん2006/06/30(金) 18:50:33
>>985
SendDlgItemMessageも忘れないで。
0989デフォルトの名無しさん2006/06/30(金) 19:37:53
そんなくそ関数だからマクロだから知らないけど知りません
0990デフォルトの名無しさん2006/06/30(金) 19:46:37
そういう場合は
「関数だかマクロだか」
と表現するのですよお嬢様
0991デフォルトの名無しさん2006/06/30(金) 19:52:33
>>989
知らないなら是非知ってください。
0992デフォルトの名無しさん2006/06/30(金) 19:53:25
>>992
SendDlgItemMessageを使うメリットは?
0993デフォルトの名無しさん2006/06/30(金) 20:20:37
>>992
985のようにSendMessageとGetDlgItemを組み合わせるより文字数が少なくてすむ。
0994デフォルトの名無しさん2006/06/30(金) 20:22:57
つまりどうでもいいAPIってことだな
0995デフォルトの名無しさん2006/06/30(金) 20:30:31
埋め
0996デフォルトの名無しさん2006/06/30(金) 20:32:27
>>994
そういうこと。

逆に言えばSendMessageとGetDlgItemで代用できるから、
知らなくても困らないし、知らない人も多いのだろう。
0997デフォルトの名無しさん2006/06/30(金) 20:34:28
梅
0998デフォルトの名無しさん2006/06/30(金) 20:35:19

次スレ
【Win32API質問箱 Build44】
http://pc8.2ch.net/test/read.cgi/tech/1151501925/
0999デフォルトの名無しさん2006/06/30(金) 20:36:00
一時期使ってたけど、ハンドルの方が関数化したときに扱いやすいことに気付いて使うのやめた
1000デフォルトの名無しさん2006/06/30(金) 20:36:19
次
Win32API質問箱 Build44
http://pc8.2ch.net/test/read.cgi/tech/1151501925/l50
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。