>>11
 cds.lpData = (LPVOID)(ParamStr(1).c_str());
問題はParamStr関数が引数をワーク領域にコピーして
そのアドレスを返すようで、そのため壊れてしまうようです。

 AnsiString as = ParamStr(1);
 cds.lpData = (LPVOID)(as.c_str());
 AnsiString FilePath = ExtractFilePath(Application->ExeName) + "Sample.ini";
 TMemIniFile *Ini = new TMemIniFile( FilePath );
 int i = Ini->ReadInteger( "SECTION1" , "WindHand", 0 );
 delete Ini;
 SendMessage((HWND)i,WM_COPYDATA,(WPARAM)Application->Handle,(LPARAM)&cds);
とすると問題ありません。
>>24 氏の言っている「c_str()はその場限りの寿命」というのは
c_str()の認識が間違っているようです。

------------以下 Borland Tipsサイトからのコピペ------------
c_str関数は、AnsiStringクラスの文字列領域へのポインタを返す関数です。