0

このコードを取得しました:
(私は FireBreath を使用しています)

TestPluginAPI.h
FB::variant ClickSemulationMove(POINT);
FB::variant ClickSemulationClick(POINT);



TestPluginAPI.cpp

FB::variant TestPluginAPI::ClickSemulationClick(POINT pt)
{
ShowCursor(true);
MouseLeft();
MouseReturn(pt.x, pt.y);
ShowCursor(true);
return 0;
}

FB::variant TestPluginAPI::ClickSemulationMove(POINT &pt)
{
MouseMove(-325, 605);
POINT pt;
GetCursorPos(&pt);
return 0;
} 

アイデアは、最初に行きClickSemulationMove、から保存ptGetCursorPos(正確にこのptが必要です。マウスを動かす前にそれを取得してそこに戻る必要があります)、次にそれをに渡してClickSemulationClickinで使用しMouseReturnます。
しかし、次のエラーが発生しました:
C2511: FB::variant TestPluginAPI::ClickSemulationMove(POINT &) overloaded member function not found in "TestPluginAPI" そして error C2665: FB::variant_detail::conversion::convert_variant: none of the 5 overloads can convert all parameter(このエラーにはいくつかのコードとパラメーターが含まれています。必要に応じて投稿します) かなり単純に聞こえますが、正確には何が間違っていますか?

4

1 に答える 1

1

ここに 2 つの問題があります。1 つ目は、参照によって引数を NPAPI メソッドに渡すことができないため、firebreath メソッドにも渡すことができないことです。第二に、任意の型だけを使用することはできません。

いくつかのオプションがあります:

  1. 入力については、int x、int y を関数に渡すことをお勧めします。
  2. 出力には、デコードする文字列を渡すか、必要な値を含む FB::VariantList を渡して、JavaScript 配列にすることができます。名前付きの x 値と y 値を渡すことを可能にする JavaScript オブジェクトになる FB::VariantMap を返すこともできます。
  3. 本当に参照渡しができるようにしたい場合は、JavaScript で保存した JavaScript オブジェクトまたは配列 ({} または []) である必要がある FB::JSObjectPtr を渡すことができます。->SetProperty("x", xval) などを呼び出すか、配列を使用した場合は ->SetProperty(0, xval) を呼び出して、変更を加えることができます。->Invoke("push", FB::variant_list_of(xval)) を呼び出して、配列にプッシュすることもできます。
于 2013-04-06T05:03:33.360 に答える