1

次の自動生成コードを含む ProjectName.cpp ファイル (アプリケーションのファイル) で宣言された引数を取得しようとしています。

extern "C" int FMXmain()
{
    try
    {
        Application->Initialize();
        Application->CreateForm(__classid(TfrmPrincipal), &frmPrincipal);
        Application->CreateForm(__classid(TfrmCarregar), &frmCarregar);
        Application->CreateForm(__classid(TfrmCodigo), &frmCodigo);
        Application->CreateForm(__classid(TfrmConfig), &frmConfig);
        Application->CreateForm(__classid(TfrmImgConf), &frmImgConf);
        Application->CreateForm(__classid(TfrmSobre), &frmSobre);
        Application->CreateForm(__classid(TfrmTradutor), &frmTradutor);
        Application->Run();
    }
    catch (Exception &exception)
    {
        Application->ShowException(&exception);
    }
    catch (...)
    {
        try
        {
            throw Exception("");
        }
        catch (Exception &exception)
        {
            Application->ShowException(&exception);
        }
    }
    return 0;
}

アプリケーションの起動時に引数を取得したいので、関数の宣言を次のように変更しようとしました。

extern "C" int FMXmain(String argv)

extern "C" int FMXmain(wchar_t* argv[]) // as I may need wide char support (TCHAR doesn't seems to be useful in this case)

または (デフォルト)

extern "C" int FMXmain(char* argv[])

私が持っている唯一の疑いは、取得した値をメインフォームに渡す方法です。作成後またはアプリケーションが既に実行されている後に渡す必要がありますか? どうすればいいのですか?

OBS: メインフォーム: frmPrincipal

私が何か間違っている場合は、教えてください。PS .: ファイル パスをダブルクリックして取得しようとしています (アプリケーションをレジストリにリンクする機能は既に取得しています)。

私を少し助けた参考文献:

WIKI ファイル(拡張子)をダブルクリックしてEXE(アプリケーション)で 開きます 関連ファイルをダブルクリックしてC++プログラムを開きます。ファイル名を取得するにはどうすればよいですか?

これからもよろしくお願いします。

4

2 に答える 2

2

System::ParamCount()およびSystem::ParamStr()を使用して、どこからでもコマンド ライン引数を取得できます (FMXMain()変更せずに を含む)。OnShowフォームのイベント ハンドラーからそれを使用してTMemoコントロールを設定する例を次に示します。たとえば、次のようになります。

void __fastcall TForm1::FormShow(TObject *Sender)
{
  Memo1->Lines->Clear();
  for(int i = 0; i < System::ParamCount(); ++i)
  {
    Memo1->Lines->Add(System::ParamStr(i));
  }
}

ParamStr(0)は常に、アプリケーション自体の完全修飾実行可能ファイル名です。

IDE の [実行] - > [パラメータ] メニュー項目を使用してテストできます。パラメータとしていくつかの値を追加し、アプリケーションを実行します。

于 2015-12-15T02:18:38.790 に答える