-1

ファイルを選択したときに右クリック メニューにリンクを追加するプログラムを C++ でコーディングしようとしています。ユーザーがファイルをクリックすると、プログラムが開き、入力をファイル名にしたいと考えています。たとえば、デスクトップに text.cpp があり、それを右クリックすると、「このファイルを識別する」というオプションがあり、ユーザーがプログラムを開始することを選択すると、. また、ファイル名を自動変数として入力したいです。たとえば、Sfilename 値は test.cpp になります。

私は専門家ではありません。たくさん検索したので、簡単な言葉で説明してください。

私のOSはWINdows 8で、Windowsのみで動作するようにしたいです!

4

2 に答える 2

4

特定のファイル拡張子を使用してファイルのポップアップ メニューにアプリケーションを追加するには、次の操作を実行できます。

  1. 次のレジストリ キーを開く/作成します。

    <root>\Software\Classes\<ext>
    

    メニュー項目を呼び出し元のユーザーのみに表示する場合、およびすべてのユーザーに表示する場合は<root>、は目的のファイル拡張子 (この場合は) です。HKEY_CURRENT_USERHKEY_LOCAL_MACHINE<ext>.cpp

  2. 値を読み取り(Default)ます。存在しない場合は、選択した値に設定します。

  3. 次のレジストリ キーを開く/作成します。

    <root>\Software\Classes\<progid>\Shell\<verb>
    

    <progid>はステップ 2 で読み取った値<verb>で、アプリ用に選択した一意の値です (例: OpenWithMyApp.

  4. その(Default)値を、メニュー項目の機能の説明に設定します (例: ) Open with my app

  5. 次のレジストリ キーを作成します。

    <root>\Software\Classes\<progid>\Shell\<verb>\command
    
  6. その(Default)値を、実行するフルパスとコマンドラインに設定します。ここで%1は、選択したファイルを表示したい場所に配置されます。"c:\path to\myapp.exe" "%1"

したがって、たとえば、次のような構造になります。

HKEY_CURRENT_USER
  Software
    Classes
      .cpp
        (Default) = "CppFile"
      CppFile
        Shell
          OpenWithMyApp
            (Default) = "Open with my app"
            command
              (Default) = ""c:\path to\myapp.exe" "%1""

詳細については、MSDN を参照してください。

ファイルタイプ

于 2013-01-15T23:32:13.430 に答える
3

これは初心者のトピックではありません。あなたの質問の言い回しは、あなたがWindowsプログラミングを始めたばかりであることを私に示唆しています。あなたを助けるかもしれないMSDNの出発点があります。コードをグーグルで検索することはできません。Windowsがどのように機能するかを理解する必要があります。具体的には、シェルについて学ぶ必要があります。シェルは、Windowsの機能を機能させる部分の名前です。誰かが.docxファイルをダブルクリックしてWordが読み込まれると、Wordがその拡張子のハンドラーとして登録されたためです。誰かがファイルを右クリックして「zipファイルに追加」(または同様のもの)が表示された場合、それはWinZipがその動詞を追加するためにシェルに登録したためです。これらが何であるかを把握する必要があります。

  • シェル
  • ファイル拡張子(「ドットの後の文字」だけでなく、ドットの後の文字をアプリに関連付けるレジストリエントリなどの山です)
  • 拡張機能の登録済みハンドラー
  • 動詞(シェル用)

私が提供したMSDNトピックページからリンクされている記事は、あなたが知る必要があることを教えてくれます。しかし、それは単純ではありません。これらの単語を知っているだけでも、検索に役立ちます。利用可能なサンプルもいくつかありますが、それらから始めようとしないでください。最初に背景を読んでください。

于 2013-01-15T22:58:38.897 に答える