• ベストアンサー

ウインドウハンドルとインスタンスからファイル名を求めたい。

ウインドウハンドルとインスタンスからEXEのファイル名を求める方法が知りたいです。 ウインドウハンドルとインスタンス両方から求めるのではなく、それぞれ別の目的で使うので、 ウインドウハンドルからファイル名を求める方法と、 インスタンスからファイル名を求める方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • ngsvx
  • ベストアンサー率49% (157/315)
回答No.1

#include <windows.h>  char szModuleName[300];  //ウインドウハンドルから、インスタンスハンドルを取得  HINSTANCE hInst  = GetWindowLong(hWnd, GWL_HINSTANCE);  //インスタンスハンドルからモジュール名を取得  DWORD   dwRect = GetModuleFileName(hInst, szModuleName, 300); //HMODULE はHINSTANCEと同じものとして定義されています

ryuta_mo
質問者

お礼

ありがとうございます。

関連するQ&A

  • インスタンスのハンドル

    Windowsプログラミングにおいて、 ウィンドウのハンドル等などはピンとくるのですがインスタンスのハンドルというのがいまいちピンときません。 いろいろ調べたのですが、インスタンスを「実体」と解説しているサイトが多かったのですが、(たとえばここ)http://ew.hitachi-system.co.jp/w/E382A4E383B3E382B9E382BFE383B3E382B9.html ただウィンドウを表示させるようなプログラムをつくったとき、何が「実体」で、インスタンスのハンドルとはどういった働きをするのでしょうか。。

  • インスタンスからハンドルを得るには

    普通は1つのインスタンスにトップレベルウインドウが1つある状態だと 思うんだけど、インスタンスからトップレベルウインドウのハンドルを 得るにはどうしたらいいんですか?

  • ウィンドウのハンドルからファイル名を取得について

    ウィンドウのハンドルからファイル名を取得する方法について質問です。 GetWindowThreadProcessIdで、スレッドのIDを取得、 OpenProcessで、ハンドルを開く、 EnumProcessModulesで、モジュールのハンドルを取得、 GetModuleFileNameExで、パス名を取得、 でファイル名を取得しようとしているのですが一部のウィンドウのハンドルは失敗します。 Windows XPでは取得できるのですが、Windows 7では失敗します。 EnumProcessModulesで取得が失敗しているようです。 私の予想ではOpenProcessでのアクセス権の指定に問題があるのではと 思って調べてみたのですが分かりませんでした。 GetWindowModuleFileNameでも試してみたのですが、 取得に失敗します。 ちなみに、OpenProcessのアクセスフラグは 「PROCESS_QUERY_INFORMATION | PROCESS_VM_READ」です。 どうすればいいのでしょうか? 他の方法があれば、それでも構いません。 とにかく、他のウィンドウ(プロセス)のファイル名を取得出来れば、 どんな方法でも構いません。 よろしくお願いします。

  • .net frameworkで作られたフォームのウィンドウハンドルとインスタンスハンドルの取得方法

    このたびC++で.net frameworkを使い、アプリケーションを製作しているのですが、フォームのウィンドウハンドルと、アプリケーションのインスタンスハンドルの取得方法が分からなくて困っています。取得する方法はあるのでしょうか? 回答をお待ちしています。どなたかおねがいしますm(_ _)m

  • インスタンスハンドルは何の役に立つものですか?

    C言語でWINDOWSのプログラムを作成したさい、WinMainの引数としてインスタンスハンドルが渡されます。 XPで作成したアプリケイションを複数同時に立ち上げると、インスタンスハンドルの値はすべて同じとなります。仮想メモリが導入される前のOSでは、異なる値になるようです。 仮想メモリを使う現在、インスタンスハンドルは何の役に立つのでしょうか。旧来からの書式を変えないためだけに存在するのでしょうか。

  • SQLServer2008のインスタンス名について

    使用環境は DB SQL Server2008 Express 使用ツールは Microsoft SQL Server Management Studio です サーバーは 64bit です インストールファイルは SQLEXPRWT_x64_JPN.exe です インストール時に 既定のインスタンス名 を選択し Management Studio ツールを使って接続しようとしたのですが サーバー名¥SQLEXPRESS になってしまいます 希望する内容は サーバー名のみ で接続したいのです 正確には 最初、名前付きインスタンス名(SQLEXPRESS)を選択して インストールしてしまい あとでアンインストールし  既定のインスタンス名で再インストールしているのですが 上記内容になります。 アンインストール後 関係フォルダを削除(一時 別フォルダに保管)しました 具体的には C:\Program Files\Microsoft SQL Server のフォルダを 一時別のフォルダにして、再インストールしてみたのですが結果は同じでした。 ちなみに、SQLServer2005Express では 上記フォルダを削除(移動)することで インスタンス名は付かなくて サーバー名だけになりました。 何か不要な設定が残っているように思いますが… 確認したいのは SQL Server2008 Express では インスタンス名を無しにするこ とができるのかどうか 再インストール時、削除するフォルダが足りないのかどうか 以上 宜しくお願い致します。

  • ウィンドウハンドルの取得方法

    ダイアログの表示されないEXEを起動させて、FindWindowを使用してそのEXEのウィンドウハンドルを取得したいのですが上手くいきません・・。 FindWindowの第一引数は「ウィンドウのクラス名」を指定するようなのですが、「ウィンドウのクラス名」の意味が良くわかりません。第二引数は「ウィンドウ名」を指定するようなのですが、今回のようなアンダーグラウンドで動くEXEには「ウィンドウ名」は無いと思ってよいのでしょうか? ちなみにダイアログのあるEXEならウィンドウハンドルを取得できます。 お分かりの方がいらっしゃれば、ご教授願います。

  • 【FLASH】インスタンス名の一覧表示はできませんか?

    FLASH8(Win-XP)使用者です。 他人が作ったFlaファイルなどを見る場合、どこにどんなインスタンス名が使われているのか一発でわかればいいのにと思うのですが、全インスタンス名を表示させる方法はないのでしょうか? お詳しい方、よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • ハッシュにファイルハンドル

    お世話になります。 ハッシュにファイルハンドル、またはFileHandleのインスタンスを格納することはできるのでしょうか? 初歩的な質問ですみません・・・

    • ベストアンサー
    • Perl
  • VC++コンソールアプリでのインスタンスハンドルの取得

    VC++コンソールアプリでのインスタンスハンドルの取得 VC++コンソールアプリケーションでインスタンスハンドルを取得しようとしているのですが、 HINSTANCE hi = (HINSTANCE)GetWindowLong(HWND_DESKTOP, GWL_HINSTANCE); を実行すると、NULLが戻ってきます。 どこかまずい部分があるのでしょうか。 なお、第一引数のウィンドウハンドルは不明なため、 いくつかのWebサイトに習い、HWND_DESKTOPを指定しました。

専門家に質問してみよう