ここに投稿するのは初めてです。
私は borland c++ を使用して小さなアプリケーションを構築しました。このアプリケーションは、商用のサード パーティ アプリケーションによってシェル コマンドを介して実行されます。この 2 番目のアプリは、アプリから終了コードを受け取るまで待機します。私がやりたかったことは、終了コードを模倣するためにメッセージ wm_copydata を送信して、2 番目のアプリに「0」または「1」を送信することです。アプリを終了せずに終了コードを送信したいので、このようにしています! これは可能ですか?
問題は、データが到着せず、2 番目の受信アプリによって処理されないことです。2 番目のアプリが wm_copydata メッセージを処理するコードを実装しているかどうかは実際にはわかりません。
私たちの部門で、さまざまなベンダーのさまざまなソフトウェアを相互接続するアプリケーションを構築しようとしているので、ご協力をお願いします。私が使用しているコードは次のとおりです。
void SendMyMessage(char* command)
{
HWND Hamilton_Window_Handle;
int len;
char title[254];
AnsiString stemp;
AnsiString hname = "HAMILTON RUN CONTROL";
Hamilton_Window_Handle = FindWindow(0,0);
while (Hamilton_Window_Handle != 0)
{
len = GetWindowText(Hamilton_Window_Handle, title, 255);
stemp = UpperCase(title);
if (AnsiPos(hname, stemp) > 0)
{break;}
Hamilton_Window_Handle = GetWindow(Hamilton_Window_Handle, GW_HWNDNEXT);
}
COPYDATASTRUCT cds;
cds.dwData = 0;
cds.cbData = strlen(command) +1;
cds.lpData = command;
SendMessage(Hamilton_Window_Handle, WM_COPYDATA, 0, (LPARAM)&cds);
if(AnsiString(command) == "1")
{
Form1->Label1->Caption="Barcodes passed consistency check!";
Form1->Label1->Font->Color = clGreen;
}
else
{
Form1->Label1->Caption="Barcodes failed consistency check!";
Form1->Label1->Font->Color = clRed;
}
}