0

postmessage を使用して FPC (Lazarus) アプリケーションにメッセージを渡す Windows 用の c++ dll があります。私はかなり単純な男なので、それはかなり単純なことです。これは、Adobe Photoshop SDK の一部です。

extern "C" BASICEXTERNALOBJECT_API long sendMessage(TaggedData* argv, long argc, TaggedData * retval)

{   
    // The returned value type
    retval->type = kTypeString;
    string s (argv[0].data.string);
    int i = (int)(argv[1].data.fltval); 
    retval->data.string = "Not Found";

    std::wstring stemp = s2ws(s);
        LPCWSTR win = stemp.c_str();

    HWND myApp= FindWindow(0,win);

    if (myApp != NULL){
      retval->data.string = "Found it";
      PostMessage(myApp, WM_USER + 1, i,0);

    } 
    return kESErrOK;
}

私は、Lazarus アプリケーションを OS X で動作させる作業を行っています。これは正常に動作しています。上記のコードを XCODE c++ でコンパイルして、次の FPC コードが受け取るパラメーターを渡す必要があります。

procedure TForm1.WndProc(var Message: TLMessage);
var
  mykey : integer;
begin
  inherited;
  case Message.Msg of
    WM_MY_MESSAGE:
      begin
        mykey := Message.WParam;
        if (mykey > 0) and (mykey < 13) then
           myActionFunction(mykey);
      end;
  end;
end; 

Xcodeでこれを行う方法の例を誰か教えてもらえますか? 簡単だとは思いますが、これまで Google はあまり役に立ちませんでした....

4

2 に答える 2

0

既存のソース コードは Windows 専用です。

TForm1.WndProc一部のコードは Delphi コードのように見え、Delphi VCL フレームワークは Windows のみです。クロスコンパイルはサポートされていません。

可能な解決策は、アプリケーション全体を最初から書き直すことだけだと私には思えます。

于 2013-05-16T13:08:41.273 に答える