問題タブ [file-association]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
windows - Delphi を使用して、ファイル拡張子に関連付けられたプログラムの名前を取得するにはどうすればよいですか?
現在のユーザーのファイル拡張子に現在関連付けられているプログラムの名前を取得する必要があります。ファイルを右クリックしてプロパティを選択すると、「Opens with」行の右側にあるプログラム名が必要になります。
たとえば、".xls" の場合、"Microsoft Office Excel" という回答、またはユーザーが .xls ファイルを開くための既定のプログラムとして使用している任意のプログラムを取得できるようにしたいと考えています。
HKEY_LOCAL_MACHINE、HKEY_CURRENT_USER、または HKEY_USERS でも指定されている可能性があるため、HKEY_CLASSES_ROOT に移動してそれを選択するほど簡単ではないと判断しました。
おそらく、私が知る必要があるのは、Windows がこれを決定するために使用する序列と、各場所へのアクセス方法だけです。もちろん、これを行うための Windows API 呼び出しが理想的です。
これは、次のような質問です: How to get icon and description from file extension using Delphi? しかし、その質問は、拡張機能の説明と関連するプログラムのアイコンを取得する方法のみに答えました。それを拡張して、関連するプログラムの名前も取得する方法が見つかりませんでした。
Delphi 2009 を使用していますが、Windows XP、Vista、および 7 で動作するソリューションが必要です。
回答ありがとうございます。
結局、実行可能ファイルの名前がレジストリにないというのが私の信念のようです。そして、名前を付ける Windows API を広範囲に探した後、見つけられませんでした。
そのときのメフの答えが一番だと思います。プログラムの実行可能ファイルに含まれる情報から実行可能ファイルの名前を取得します。
フォローアップ: 「デフォルトのテキスト エディタでファイルを開くにはどうすればよいですか?」に対する David Hefferman の回答を見つけました。別の拡張子の既定のプログラムを使用して 1 つのプログラムを開くための優れたソリューションを提供します。
python - Windows は、シェルから実行される Python プログラムにコマンド ライン引数を渡しません。
Windows コマンド シェルから実行可能コマンドとして直接実行しようとすると、Python プログラムに渡されるコマンド ライン引数を取得できません。たとえば、このプログラム (test.py) があるとします。
そして実行します:
と比較して:
私の構成は次のとおりです。
visual-studio-2008 - ClickOnceにファイルの関連付けを登録する
ファイル拡張子をClickOnceアプリケーションに関連付けたい。公開オプションにファイルの関連付けの部分がありますが、それを機能させることができません。
c# - ファイル拡張子をアプリケーションに関連付ける
特定のファイルタイプを編集するプログラムを作成しました。起動時にアプリケーションをこのファイルタイプのデフォルトのエディターとして設定するオプションをユーザーに提供したいと考えています (インストーラーが必要ないため)。
HKEY_CLASSES_ROOT にキーを追加して、ファイルを関連付ける再利用可能なメソッドを作成しようとしましたが (できれば、Vista を実行していますが、どの OS でも可能です)、アプリケーションでそれを使用していますが、そうではありません。動作するようです。
なぜそれが機能しないのですか?使用例は次のとおりです。
「CurrentUser」を使用するメソッドの部分は、regedit を使用して同じことを行うと機能するようですが、アプリケーションを使用すると機能しません。
installation - ファイルタイプをアプリケーションに関連付けるときに、作業ディレクトリを制御するようにレジストリを設定します
インストーラーに Inno を使用しており、ファイルの種類をアプリに関連付けたい:
現在、.rpl ファイルをダブルクリックするとアプリが起動しますが、作業ディレクトリは .rpl ファイルが配置されているように見えるため、データを読み込めないためにアプリがクラッシュします。レジストリを設定して、起動するアプリだけでなく、ファイルの関連付けの開始/作業ディレクトリを制御することはできますか? それとも、私のアプリ自体がこれを回避できる必要がありますか?
ポイントは、EXE を常にc:\Programs\MyApp などから実行したいということです。ショートカットをクリックするか、手動で実行すると問題ありません。私が見つけた唯一の例外は、アプリに関連付けられたタイプのファイルをダブルクリックすると、Windows が EXE の作業ディレクトリをそのファイルの場所に設定することです。
このすべての背後にある問題は、私の PC に開発ビルドがあり、通常のユーザーと同じようにリリース バージョンもインストールしていることです。レジストリに移動して、インストールされた製品版のファイルへのパスを見つけることなく、開発版を実行できるようにする必要があります。
c# - アイコンでアクセスできるように、リソースをどのように埋め込みますか?
VS2005を使用したC#プロジェクトがあります。基本的に、2つのアイコンがあります。1つはアプリケーション用で、もう1つはアプリケーションに関連付けられているファイル用です。
これらのファイルをアプリケーションに関連付けました。レジストリでアイコンを設定する方法を知っていますが、外部リソースが唯一のようであるため、アプリケーションアイコンにしか設定できません。
アイコンをリソースファイル(.resx)に含めるか、コンパイル時にexeにコンパイルされる別のファイル(.ico)として使用しようとしましたが、どちらも機能しません。
つまり、アプリを作成してResource Hackerで開いたところ、1つのアイコンと1つのアイコングループを使用して、2つのアイコンのうち1つだけが表示されていることがわかります。
c++ - C ++:アプリケーションのファイルタイプの関連付けを正しく登録および登録解除するにはどうすればよいですか(プログラムで)
次の場所でファイルの関連付けを設定したときです。
HEY_CLASSES_ROOT\<。ext>
しかし、それは可能であるように思われますが、もはや不完全な解決策です。レジストリ全体に追加の関連付けがあります。例えば:
HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ KindMap HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ Extensions
そして、上記のすべてですが、HKEY_USERS\による
そして、MicrosoftはSet Default Associationsコントロールパネルアプレットを追加しました。これは...何を制御しますか?
ホワイトペーパー、または以下に関するディスカッションを探しています。
「C/C++で記述された最新のWindowsXP-Windows7互換アプリケーションは、Explorer、User-Settings、またはDefault Associations cplに干渉することなく、ファイルの関連付けを登録および操作することになっています。」
編集:私はここでより多くの質問でこの調査をさらに進めようとしています: Windowsからアンインストールするときに他のユーザーアカウントからProgIDを削除する方法は?
c++ - MDIアプリのddeexecの代わりに何をすべきですか?
Explorerからのデザインのオープンを処理するために、ddeexecレジストリエントリを使用しています。
MSDN(記事の約2/3の方法)は、ddeexecが非推奨であり、アプリケーションは代わりにIDropTargetを使用する必要があることを示しています。
私には不明確なのは、これが実際にどのように機能するのかということです。
たとえば、.fooファイルを処理することを目的としたFoo.exeがある場合、レジストリはどのようになりますか?
コマンドが明白に設定されている場合:
その後、ユーザーがダブルクリックするか、.fooファイルのコンテキストメニューから[開く]を選択するたびに、Foo.exeが起動します。
ただし、これは、ユーザーが起動しようとするファイルごとにFoo.exeの個別のインスタンスが起動されることを意味します。YUCK。
私は確かにカスタムコードを書いて、Foo.exeの2番目のインスタンスからFoo.exeの最初のインスタンスにファイル名を渡して終了することができます...しかし、それから私はかなりの量のカスタムコードを書いています。
DDEは、すでに実行中のFoo.exeの最初のインスタンスに指定されたファイルを開くように要求することにより、これを適切に(十分に)処理するために使用されていました。これにより、MDIアプリで複数のドキュメントを巧みに開くことができ、各ドキュメントはFoo.exeの1つのインスタンス内で開かれました。
DDEが非推奨になった場合、推奨されるメカニズムは何ですか?私たちのアプリは、MDIアプリとしてはるかに理にかなっています。確かに、Foo.exeの複数のインスタンスを実行する必要はありません(ユーザーを煩わせるだけです)。私は確かに、Foo.exeの実際のインスタンスを探し、開かれているファイル名を渡すためにいくつかのカスタムメカニズムを使用する新しいFoo-Shim.exeを作成する必要はありません。(Foo.exeは大きく、読み込みに時間がかかり、インスタンスごとにカウントされるアクティベーションセキュリティコードが必要なため、この目的でFoo.exeを使用することはできません。そのため、次の場合は起動を拒否する可能性があります。最大同時ユーザー制限)。
IDropTargetには、この(一般的な)シナリオと関係があるように見えるものは何もありません。
MSがここで何を意図していたか誰か知っていますか?
windows - デフォルトのプログラムにせずにファイル拡張子をプログラムに関連付ける方法
Open with
一部のシステムに小さな変換ツールを展開していますが、ユーザーが右クリックメニューから実行できるようにしたいと考えています。しかし、ユーザーがこのファイルの種類に関連付けた既定のプログラムを変更したくありません。
ファイル拡張子/タイプをプログラムに関連付けるのは簡単ですが、デフォルトのプログラムを変更せずに (もちろんプログラム的に) どのように関連付けますか?
macos - MacOSX-アプリケーションに関連付けられたファイル拡張子-プログラムで
プログラムが開く特定のファイル拡張子を自動的に関連付けるようにプログラムを作成しようとしていますが、MacOSXでそれを行う方法がわかりません。GUIでプログラムをファイル拡張子に関連付ける方法を尋ねているのではなく、プログラムにプログラムできるようにしたいのです。