ラベル win32api の投稿を表示しています。 すべての投稿を表示
ラベル win32api の投稿を表示しています。 すべての投稿を表示

2011年11月18日金曜日

.net framework : マウスカーソルの位置にあるウィンドウの情報を得る

2018/11/08 追記) WindowFromPointが動かないのは引数の間違いでした。 補足情報を投稿しておきます。

以降、過去の投稿に関しては書き換えていません。


前の投稿「wpf : マウスキャプチャとマウスカーソルの変更」の続きです。 コードは前の投稿のMainWindow.xaml.csを見てください。 ここでは「マウスキャプチャ中にマウスが指しているウィンドウの情報(タイトル、ウィンドウクラス、実行ファイル名)を得る」という部分について書きます。 前回書いたとおり躓きました。 「win32sdkの時代の定石コードを探してきてDllImportしてアレコレ」で済むかと思ってたんですが、64bitの壁に阻まれました。

サンプルコードを試した環境はwindows7 64bit版です。 で、その64bit環境で試したら、アプリケーションをx86(32bit)でビルドしたのとx64(64bit)でビルドしたのとで挙動が違ってました。

この部分のコードは次のような手順になっています。

  1. WindowFromPointでマウスが指しているウィンドウを探す。
  2. GetWindowTextでウィンドウのタイトルを得る。
  3. GetClassNameでウィンドウクラスを得る。
  4. プロセス操作で実行ファイル名を得る。

躓いたのは「1:WindowFromPoint」と「4:プロセス操作」です。 構成をx86(32bit)にして動作させると「4:プロセス操作」で64bitプロセスの実行ファイル名が得られませんでした。 構成をx64(64bit)にして動作させると「1:WindowFromPoint」が動いてくれませんでした。

2011年10月28日金曜日

昨日の「VC++でグローバルフック」を書き直し

昨日投稿した「VC++でグローバルフック」のコードがあんまりだったので書き直しました。 「不便に思ったら作り直す」とかって言ってたけどさすがに酷いかと思ったので。 変更点は、

  • コードの整理
  • タスクトレイに入れる
  • キーリピートに反応する

タスクトレイに入れるのは、5年前に自分で書いたコードを参考にして書きました。 アレ? ホントに5年前に作ったんだっけ? もっと前にやったような...

2011年10月27日木曜日

VC++でグローバルフック

後日、コードを書き直しました。

-----------------------------------

ここしばらくwpfを触ってましたが、今日はちょっと思い立ってVC++を使いました。 VC++にしたのはグローバルフックが使いたかったからです。 C#だと色々面倒くさそうだったので、ずっと前にやったことがあるVC++にしてみました。

作ったのは、Ctrl+Shift+Fキーを押すと10桁のランダムな文字列がキー入力される簡単なものです。 このプログラムを立ち上げておいて、別のアプリで作業中で適当な文字列が欲しくなったらCtrl+Shift+Fを押すと、勝手に10文字入力してくれます。 「ちょっとhtmlの書き方を参考にしたいページがいくつかあって一時的に保存したいだけなのに全部index.htmlでした」っていうようなことがあって作成しました。 ファイル名を考えるのも連番を付けるのも面倒くさかったもので...

何回使うのやら。

2011年9月25日日曜日

firefoxの起動を確かめるソフトをまた使うことに

以前、firefoxの起動を確かめるソフトをwin32sdkで作成しました。 古いWindowsXPのPCを使っていたときの話です。 2ヶ月前にWindows7のPCを買って、Firefoxの起動はとても早くなりました。 もうそのソフトは不要だと思っていました。

しかし、しばらく使っているとFirefoxはどんどん起動が遅くなっていきます。 いったいどうなっているんでしょうね? 結局起動確認用のソフトをまた引っ張り出してくるハメに。

前のPCで使っていたソフトをそのままFirefoxのフォルダにコピーすればいいと思っていたら、セキュリティーの警告がでました。 そうだった。 Windows7ではProgram Filesにコピーするとそうなるんでしたよね。 警告を無視してコピーしても、毎回起動するたびに警告が出るんでしたっけ? ホントに警告が出るかはうろ覚えです。 それを確認するのもすぐだけど、コンパイルし直すのもすぐだなぁ。

2011年5月3日火曜日

firefoxの起動を確かめるソフトをwin32sdkで作成

今使っているPC、買ってから8年くらい経つんですよね。 最近特に重く感じます。 少し前に投稿したように、そろそろ買いかえ時でしょうか?

PCの重さが一番気になるのは起動直後です。 セキュリティソフトやその他の常駐ソフトがガリガリ動いていて、さらに最初にブラウザを立ち上げることが多いので重さ感倍増です。 ブラウザがfirefoxだからヒトシオ。

その、起動直後にブラウザを立ち上げようとしたとき、ツールバーに登録したショートカットアイコンをクリックしても重さのドサクサにまぎれて受け付けられないことがあり、困ってしまいます。 ハードディスクのガリガリが収まって、「そろそろブラウザが表示されるかな?」というときに、実はクリックが無視されていて立ち上がってこないことがあるのです。 ほんのちょっと時間を損した気分になります。 このマシンをいつまで使うかはわからないけど、とりあえずの一時しのぎでもクリックが受け付けられたか確認する方法を探さないと...