サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
iPhone 16
yu-hr.hatenadiary.org
前書き 「プロセスIDならわかるけど、ウィンドウハンドルはわからないなー」なんていう状況、よくありますよね? 僕は先ほど初めてそのような状況に出くわしましたけど。 流れ トップレベルウィンドウを列挙 各ウィンドウのプロセスIDを調べる 目当てのプロセスIDが見つかったら、そのウィンドウのウィンドウハンドルを返す ソース // // プロセスIDからウィンドウハンドルを取得する。 // トップレベルウィンドウを列挙して、プロセスIDが一致するやつのHWNDを返す。 // 同じプロセスIDでトップレベルウィンドウが複数個あった場合は // どうなっても知らない。 // HWND GetWindowHandle( // 戻り値: 成功 望みのHWND / 失敗 NULL const DWORD TargetID) // プロセスID { HWND hWnd = GetTopWindow(NULL
winspectorがないぞ ないので調べた→あった winspectorとは 開発者向けの無料でダウンロードできる(はず)のソフト。 Spy++という、有償版のVisualStudioに同梱されている(らしい)ツールと同じようなことができるとか、あるいは、それ以上だとかいう噂。 あらゆるウィンドウの情報を調べられるほか、任意のウィンドウに送られてくるウィンドウメッセージを細かく調べることができる。 (多分他にも機能はあるけど、あまり使ってないから知らない) 窓の社でも紹介されています。 本家が落ちてる? 本家と思しきページに繋がらなくなっているようだ。 いつからか、また、いつまで続くのかはわからないけど、ここ数日は繋がらない。 まさか、日本からのアクセスだから弾かれてる・・・とかじゃないよね。 他のサイトからでも入手できるらしい ちゃんと検索したら出てきた。 このページ(英語) こちらか
前書き 昨日書いたのですが、間違って消してしまったのでもう一度投稿します。 ソースは残っているのですが、そのほかに何を書いたのかは忘れました。 グーグルキャッシュにも残ってなかった。IEのキャッシュも更新しちゃった。 なので書き直します。 ソース // // ウィンドウハンドルから、実行ファイル名を調べる。 // destのサイズが足りなくてもエラーにはならない。 // inline bool GetExeFileName( // 戻り値: 成功 true HWND hWnd, // 対象のHWND TCHAR *dest, // ファイル名の出力先(サイズはMAX_PATH+1を推奨) size_t size_including_null) // destのサイズ(NULLを含む) { // プロセスID DWORD processID = NULL; GetWindowThreadPr
前書き HINSTANCEとHMODULEの違いについて、また、使い分けについて、調べたことをまとめようと思います。 違いは何なのか 歴史的な違い HINSTANCE と HMODULE の違い こちらをご覧ください。(タイトルがまんまかぶってますね) 2行でまとめると、歴史的には違うものだったが、 今となっては同じで、モジュールの先頭アドレスらしいです。 定義の違い windef.hに typedef HINSTANCE HMODULE; /* HMODULEs can be used in place of HINSTANCEs */ って書いてありました。 つまり、現在では、事実上型としての違いは何もありません。 インスタンスハンドルは、GetWindowLongで調べていいのか? 実はこっちが本題です。 別にGetWindowLongでいいのですが、それだとうまくいかないことがある
前置き(追記) ちゃんと検索したら、ちゃんと情報が出てきました。 http://www.up-cat.net/%25A5%25B3%25A5%25DE%25A5%25F3%25A5%25C9%25A5%25D7%25A5%25ED%25A5%25F3%25A5%25D7%25A5%25C8%25A4%25CE%25A5%25A8%25A5%25B9%25A5%25B1%25A1%25BC%25A5%25D7%25BB%25C5%25CD%25CD.html 本文 環境はWinXP。情報元などありません。実験に基づいた記事です。 以下、test.exeは、コマンドラインの第一引数をそのまま表示して終了するプログラムだとします。 int main(int, char *argv[]) { puts(argv[1]); } 実行例1 >test.exe "あ い う え お" あ い う え お
WindowsAPIで画面のサイズを得る方法は、調べてみたらいくつかあるようです。 中には、タスクバーの領域を除いたサイズを返す関数もあるようです。 GetSystemMetrics式 これはフツーのやり方。 int dispx = GetSystemMetrics(SM_CXSCREEN); int dispy = GetSystemMetrics(SM_CYSCREEN); 参考 http://sho1blog.exblog.jp/7992890/ GetDeviceCaps式 これもまあフツー? HWND hWnd = GetDesktopWindow(); HDC hdc = GetDC( hWnd); int dispx = GetDeviceCaps( hdc, HORZRES); int dispy = GetDeviceCaps( hdc, VERTRES); int re
このページを最初にブックマークしてみませんか?
『趣味グラマ。ゆとり。そっちの話だけ。』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く