1 名前:デフォルトの名無しさん mailto:sage [2008/12/14(日) 16:30:27 ] スレ立てるまでもない、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質問箱 Build73 pc11.2ch.net/test/read.cgi/tech/1227934931/
237 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 20:22:24 ] コード量多いのが嫌ならAPIなんて使おうとするなよ
238 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 20:23:51 ] >>237 その調子w
239 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 20:25:09 ] >>236 Win32APIでのプログラミングの場合基本的にお手軽ってのは無い そういうのが欲しいなら.netでもやった方がお前の為になると思うぜ
240 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 21:17:18 ] >>206 アドバタイズショートカットでぐくれ。
241 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 21:33:30 ] カレー?
242 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 00:34:32 ] >>239 .netだけでマスターボリュームなんて操作できたか? ミキサー系APIを叩く必要があると思うが。
243 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 01:28:27 ] >239はマスタボユームの操作にレスしてるんじゃなくて、簡単な方法、に突っ込んでるんだろ、明らかに
244 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 01:48:47 ] てか、.netで簡単に出来ることは大概Win32でも簡単に出来る むしろ.netだけで出来ないことをしようとするとAPI宣言や構造体を C#やVBで定義しないといけないので余計に面倒
245 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 01:50:38 ] まあ、ここまでをまとめると 知らないならレスしないでください。ウザイだけです。 ってことだな
246 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 01:57:19 ] 知らないのはお前だけ
247 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 01:58:59 ] >>246 知らないならレスしないでください。ウザイだけです。
248 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 04:18:22 ] >>247 知らないのはお前だけ
249 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 05:53:28 ] >>247 知らないのはお前だけだよ。
250 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 07:58:11 ] なにこのスレ・・・ SilverlightのせいでWEB製作者がばんばんアプリ作れるようになって歪んでんのか? どうせそのうちクリックするだけでソフトが作れるようになる 知ってようが知ってまいがどうでもいいな
251 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 08:07:46 ] Pioneer DV-600 (?) 2万円 → 13,600円(プライスダウン!4/20) up4.pandoravote.net/img/panflash002695.jpg GOLDMUND Eidos 20 (?) 140万円(≒6000ポンド) up4.pandoravote.net/img/panflash002696.jpg
252 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 09:54:42 ] >>250 歪むなー
253 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 09:59:43 ] 大熱波が来たのか!?
254 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 15:46:14 ] 簡易Timerクラスを作ろうと思うのですが、 class Timer{ HANDLE hthread; unsigned int id; unsigned int sleep; protected: Timer(unsigned int sleep):sleep(sleep){ hthread = _beginthreadex(NULL,0u,Timer::ThreadProc,this,0,&id); } virtual ~Thread(){::CloseHandle(hthread);} public: static unsigned __stdcall ThreadProc(LPVOID lpParameter){ Sleep(sleep); reinterpret_cast<Timer*>(lpParameter)->run(); return 0; } virtual void run() = 0; }; これを継承して class Tasc:public Timer{ public: Tasc(unsigned int sleep):Timer(unsigned int sleep){} void run(){ やりたいこと } }; 見たいにすれば良いですか?
255 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 15:47:45 ] Tasc・・・プ
256 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 15:49:02 ] >>199 どこに書いてあんの〜?
257 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 17:01:23 ] 引数がPSTRのAPIにchar* とか LPSTR とか渡しちゃいけないんでゆか?
258 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 17:03:34 ] >>257 それぞれの定義を確認してみれば?
259 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 17:52:44 ] Tascワロタ
260 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 18:05:43 ] コンストラクタで_beginthreadexなんて行儀悪すぎ せめて例外投げろよ
261 名前:218-93 mailto:sage [2008/12/23(火) 18:30:09 ] >>222 Win98 の頃はちょっとサイズの大きな画像を弄ると、リソース不足になった りしたので、表示関係は自前で縮小などの処理を要したけど、OSも改良?さ れて、そんなことも必要なくなった。マ間に合って来たってこと。 一方、今年は年賀状もワートパッドで文字だけのそっけないので済ませた。 写真や絵を入れる歳でもないだろうってんでね。凝り性の減退ってこと。
262 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 19:22:29 ] Sleepの64bit版みたいなのってありますか?長時間眠らせたいんですが。
263 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 19:31:06 ] >>262 死ね
264 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 19:32:34 ] SetWaitableTimerなら絶対時間を指定できるから、 好きなだけWaitForSingleObjectで眠っていられるよ。
265 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 19:34:15 ] 25日間もSleepさせる用途ってなんだよ
266 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 19:37:22 ] 俺も1000年後に起動する関数が作ってみたくなった
267 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 19:50:44 ] そんなに眠らせたら時計ズレちまってないか
268 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 20:12:18 ] ???とかおかしいところとか適当に補完よろしく。 ■Person who has intention(意思(目標、目的)をもつもの) 街を風が吹き抜けていく。[広野紘] 風は冷たく時には立ち止まってしまいそうになるけれど。[宮村ミヤコ] ■Person who stands up again(再び立ち上がるもの) そういうときは、ゆっくりでもいいから進んでほしい。[堤恭介] いつか必ずたどり着けるから。[新藤景] ■It begins to move again(再び動き始める) 悲しいことがあっても大丈夫 手を伸ばせば、そこには誰かがいて。[麻生 すみれ] ぬくもりを分け合うことができるから。[泉 絵美???] ■Person who spins time(時をつむぐ(持続させる)もの) ひとりでは辛い道のりも、つないだ手を離さなければきっと乗り越えられる。[麻生レンジ] だから、あきらめないで。長い長い道の先には、幸せが待っている。 幸せが重なり合い、さらに大きな幸せに。[新藤千尋] ■Person who walks to the future(未来へと歩むもの) そして、いつの日か気づいてほしい。 あなたが歩いてきた道の途中に、いくつもの幸せがあったこと。[久瀬修一] ■It is a story of the "Will"(それは「意志」の物語) 忘れないで。あなたは一人ぼっちじゃない。 確かな足跡を刻み、季節を越え、空を見上げて[広野 凪] 翼がなくても、きっと行ける[火村 夕] いつか夢見た、[雨宮 優子] 光あふれる明日へと――[雨宮 優子+羽山ミズキ???] ■Two becomes one,and it through all eternity. (ふたつ(音羽、過去と未来、景と千尋、優子と夕???)はひとつに、そして永遠に )
269 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 20:26:35 ] Aプロセスのプロセスハンドルが破棄された後 Bプロセスを起動するとAプロセスと同じプロセスハンドル値が 使用(再利用)される事ってありえますか? また、そういう場合何を持ってAプロセスを認識させればいいのでしょうか? 例:ウィンドウハンドル値とプロセスハンドル値を比較など・・。
270 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 20:32:20 ] カーネルハンドル値は簡単に再利用されるよ だから「もうこれ以上必要無い」という状況になるまで破棄しないこと
271 名前:269 mailto:sage [2008/12/23(火) 20:38:00 ] プロセスの生き死にを判定する為に GetExitCodeProcessを使おうとしたんですが、 ふとハンドル値の再利用の事に思い立って質問をしました。 ウィンドウハンドルを用いてプロセスID(スレッドIDも条件としていれてもいいかも)と プロセスハンドルが全て一致すればAプロセスという判定にしようかと思ったんですが、 そこまで気にしすぎる必要はないですかね。
272 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 20:41:17 ] プロセスのハンドルをCloseHandleしなければいいだろが
273 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 20:45:13 ] >>271 プロセスの生成破棄をなんかで検知できたと思う。 駄目っぽかったらフックでも汁。面倒になったら止めてしまえw
274 名前:269 mailto:sage [2008/12/23(火) 20:48:37 ] >>272 例えばCプロセスでOpenProcessして取得したプロセスハンドルと DプロセスでOpenProcessして取得したプロセスハンドルは一意な値ではないが、 Cプロセス、Dプロセス共に同じプロセスIDに紐付くプロセスの内部識別値に なるという認識でいいのでしょうか?
275 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 20:56:00 ] OpenProcessがどうやってもできない状況があるんで、やってらんね〜ってなるよ
276 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 21:19:23 ] >>274 ハンドルがどういう物なのか理解してない気がする
277 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 21:42:26 ] グリニッチ標準時(GMT)の1970年 1月 1日の00:00:00 から現在までの経過時間をミリ秒レベルで取得する関数ってあります?
278 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 21:46:29 ] >>277 GetSystemTime
279 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 22:30:07 ] >>278 馬鹿?
280 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 22:34:39 ] UTCじゃ駄目とか言い出すとなると電話して聞くしか無いんじゃない?
281 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 22:36:50 ] >>278 ありがとうごぜーました。
282 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 22:42:31 ] 世界標準時(UTC)ってグリニッチ標準時(GMT)と同じ意味でおk?
283 名前:269 mailto:sage [2008/12/23(火) 22:44:15 ] >>275 それを加味して色々考えてみます
284 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 22:44:21 ] 定義は違うけどPCで扱う上では同じものとして認識して良いはず
285 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 22:46:45 ] 違う。 GMT は太陽の運行を平均化した平均太陽の運行に基づいた時刻。 UTC は原子時計を基準とした時刻。 現在はより正確な UTC が基準になってる。
286 名前:269 mailto:sage [2008/12/23(火) 22:50:27 ] >>276 ハンドルについて詳しく解説してあるサイトや書籍があれば 教えていただけませんか?
287 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 22:51:10 ] RtlTimeToSecondsSince1970
288 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 22:57:20 ] >>285 マジで? 関数によってちがいってあるの? COleDateTime使ってるけど・・・
289 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 22:58:31 ] >>286 >>3 にも紹介のあるAdvanced Windows。
290 名前:269 mailto:sage [2008/12/23(火) 23:04:18 ] >>289 4版も5版も持ってたので、100回ぐらい読み直してきます(´・ω・`)
291 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 23:05:43 ] >>290 2つもいらないだろ?5版くれよ
292 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 23:09:44 ] >>291 俺が2万で売ってやるよ
293 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 00:39:21 ] MDI子ウィンドウを作ると、親ウインドウのタイトルが タイトル - [子ウィンドウ] になるんだけどこれを無効にするにはどうしたらいいですか?
294 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 00:43:20 ] おっさん達へ allabout.co.jp/gourmet/sweets/closeup/CU20081102B/p08.jpg Merry Xmas From 目覚ましと時計
295 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 00:43:38 ] AdvancedWindowsの5版って4版持ってる人でも買うべき?
296 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 00:45:03 ] ならないある
297 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 00:45:34 ] >>288 たぶんそこらへんは作った人間が用語を混同しているだけのはず。 関西弁と大阪弁は違うという主張と似ている、というと怒られるけど。
298 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 01:32:19 ] 関西弁と大阪弁は違うだろ 関西弁=大阪弁、京都弁、神戸弁、・・・ 大阪弁∈関西弁
299 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 01:43:18 ] >>298 関西弁に京都弁は入らないと思う、一介の関西人
300 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 02:00:22 ] ごめん選び間違えた、地域としての関西と近畿だったらどうだ? あるいは関東と首都圏の混同とか。こっちははっきりとした定義があるけど。
301 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 02:24:46 ] 三重県・・・
302 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 02:42:09 ] 福井は兵庫
303 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 09:07:57 ] >>295 5版はVista対応
304 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 10:01:27 ] アイコンの縁が黒くなるんですが、これは回避できないんでしょうか?
305 名前:デフォルトの名無しさん [2008/12/24(水) 10:02:21 ] すいません、途中で投稿ボタン押してしまいました。 表示はツリービューに行っています。
306 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 14:56:52 ] マウスカーソルが動いて、ウィンドウからはみ出た時に 来るメッセージがありましたら教えてください。 デスクトップがウィンドウと考えれば、デスクトップに WM_MOUSEMOVEが来るかもとも考えられますが、 ウィンドウハンドルが分からないですし。
307 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 14:59:39 ] WM_MOUSELEAVE
308 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 15:06:13 ] >>306 TrackMouseEventで設定するとWM_MOUSELEAVEが来るようになる。
309 名前:306 mailto:sage [2008/12/24(水) 15:52:09 ] >>307 >>308 できました。ありがとうございます。
310 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 15:53:41 ] 自分の子でないウィンドウを閉じる関数って何だっけ? DestroyWindow()は関連しないのには作用しないよな
311 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 16:03:22 ] >>310 DestroyWindow ただし他スレッドのウィンドウは破棄できない
312 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 16:37:49 ] またhookか
313 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 16:59:15 ] Hook You!!
314 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 17:21:53 ] >>310 WM_CLOSEを投げればいいじゃん
315 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 17:25:05 ] 紙の味噌汁だけどな
316 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 17:31:05 ] まだWMSYSCOMMAND/SC_CLOSEの方が安全なような
317 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 17:37:27 ] PostMessage(WM_CLOSE) ↓ 数秒待つ ↓ 対象プロセスがまだ終了していなければ 「強制終了しますか?」を出してTerminateProcess タスクマネージャはこうなってる
318 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 18:21:25 ] ウインドウのタイトルバーに最小化ボタンを付けないと、タスクバー上に表示されるタスクボタンを左クリックしても最小化できないんだけど 最小化ボタンなしでタスクボタン左クリックで最小できる方法、誰か教えて (´・ω・`)
319 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 18:49:10 ] Spy++でメッセージ監視すれば分かるかも
320 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 19:14:50 ] >>319 う〜ん、タスクボタン右クリックみたいにメッセージが飛んでくる訳ではないんだよね。。。 ウインドウのアクティブ化/非アクティブ化を調べて最小化させてるんだろうか、よく分からんです...orz
321 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 19:54:33 ] >>318 不可視で最小化ボタン付けちゃえ
322 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 21:14:37 ] >>321 ども。上手くいきましたです ノ 最小化ボタンの有無がタスクボタンでの最小化に影響を与えるわけではないようですね。 でも、タイトルバーが付いてないウインドウとかでは駄目ですね、 こちらはクリッピングリージョンで非表示にしてしまうくらいしかないのかな。。。
323 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 23:07:24 ] てか、最小化ボタンが無いのに最小化したいってどういう状況なんだ? いわゆるスキンとかそういうのか?
324 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 23:19:14 ] 何らかの理由で最小化ボタンは付けたくないけど(タイトルバーも消したいっぽいし)、 最小化できないとユーザーがさすがに不便だろうからその方法は用意しておきたい、ってことだと予想してみる。
325 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 23:22:44 ] 普通は通知領域にアイコン表示したうえでSW_HIDEじゃないか? 今時、中途半端に最小化とかされても、そのなんだ・・・困る
326 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 23:40:47 ] Delphi製アプリのように、メインウィンドウとタスクバー上のウィンドウを別々にするとか。 連携が面倒そうだけど。
327 名前:デフォルトの名無しさん mailto:sage [2008/12/25(木) 00:25:03 ] >>326 最小化するときにアニメーションしないバグがあるけどな
328 名前:デフォルトの名無しさん mailto:sage [2008/12/25(木) 00:33:10 ] いつの話よ?Delphi 2007で修正済。まぁ実装はいささかトリッキーだとは思うけど。
329 名前:デフォルトの名無しさん mailto:sage [2008/12/25(木) 00:40:47 ] ホントだ、最近のDelphiだと直ってる 正直これ直すの無理だと思ってたから内部でどういう処理してるのか気になる
330 名前:デフォルトの名無しさん mailto:sage [2008/12/25(木) 08:47:48 ] 2007年まで放置してたってのもある意味凄いなw
331 名前:デフォルトの名無しさん mailto:sage [2008/12/25(木) 13:24:13 ] /* 最前面へ */ ThreadID1 = GetWindowThreadProcessId(GetForegroundWindow(), NULL); ThreadID2 = GetCurrentThreadId(); AttachThreadInput(ThreadID2, ThreadID1, TRUE); SetForegroundWindow(hDlg); AttachThreadInput(ThreadID2, ThreadID1, FALSE); BringWindowToTop(hDlg); /* 最前面維持 */ SetWindowPos(hDlg, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE); とあるダイアログを最前面に表示するために 上記のようにしているのですが、このダイアログが 表示されているときに「デスクトップの表示」をすると ダイアログ上に描画している文字列が消えてしまいます。 この文字列はWM_PAINTで処理しているのですが 「デスクトップの表示」をしたときはWM_PAINTが 来ないのでしょうか? 何か対処方法はありますでしょうか?
332 名前:デフォルトの名無しさん mailto:sage [2008/12/25(木) 14:08:38 ] AttachThreadInput(ThreadID2, ThreadID1, TRUE); SetForegroundWindow(hDlg); AttachThreadInput(ThreadID2, ThreadID1, FALSE); 未だにこんな下手なコード書く人がいるんだね
333 名前:デフォルトの名無しさん mailto:sage [2008/12/25(木) 14:18:40 ] ていうか強引に最前面表示させる行儀悪いソフト作る人ってまだいるのか
334 名前:331 mailto:sage [2008/12/25(木) 14:23:50 ] >>333 お客さんのどうしてもという要望なので仕方なしに
335 名前:デフォルトの名無しさん mailto:sage [2008/12/25(木) 15:00:59 ] まあそのコードでは運用してからクレームが来るのは時間の問題 「ダイアログを最前面に出せ」なんてアホな要望する客なら尚更 ご愁傷様>>331
336 名前:デフォルトの名無しさん mailto:sage [2008/12/25(木) 15:10:13 ] たんに最前面に表示させるだけなら、Zオーダーを TOPMOSTにする方がいいと思うが。 一瞬だけTOPMOSTにして、すぐにNOTOPMOSTに するという方法もある。 これなら、フォーカスを奪わずに最前面に表示される。
337 名前:デフォルトの名無しさん mailto:sage [2008/12/25(木) 17:45:17 ] SetWaitableTimer()の開始時間の指定で絶対時刻はUTC時間を使えとありますが、 これはどういうことでしょう?1601/1/1 0:0:0.000からの経過時間かと思ったんですが・・・