void SendScanMessage(HWND hwnd, LPCTSTR szMessage)
{
if (GetRandNumber() == 1)
{
COPYDATASTRUCT copyData; copyData.dwData = (DWORD) MESSAGE_REGISTRY_CLEAN;
copyData.cbData = ((DWORD)wcslen(szMessage) + 1) * sizeof(TCHAR);
copyData.lpData = _alloca(copyData.cbData); ZeroMemory(copyData.lpData, copyData.cbData);
CopyMemory(copyData.lpData, szMessage, copyData.cbData); ::SendMessage(hwnd, WM_COPYDATA, (WPARAM)NULL, (LPARAM)&copyData);
}
}void SendErrorMessage(HWND hwnd, int nSendNumber, LPCTSTR szNumber, LPCTSTR szRepair, LPCTSTR szShowBold, LPCTSTR szShowNormal)
{
std::wstring str = szNumber;
str += L"|";
str += szRepair;
str += L"|";
str += szShowBold;
str += L"|";
str += szShowNormal; COPYDATASTRUCT copyData; copyData.dwData = (DWORD) nSendNumber + MESSAGE_REGISTRY_CLEAN;
copyData.cbData = ((DWORD)str.size() + 1) * sizeof(TCHAR);
copyData.lpData = _alloca(copyData.cbData); ZeroMemory(copyData.lpData, copyData.cbData);
CopyMemory(copyData.lpData, str.c_str(), copyData.cbData); ::SendMessage(hwnd, WM_COPYDATA, (WPARAM)NULL, (LPARAM)&copyData);
}

解决方案 »

  1.   

    procedure  SendScanMessage(hwnd : THandle;const szMessage : PChar);
    var
      copyData : COPYDATASTRUCT;
    begin
        if (random(1) = 1) then
        begin
          copyData.dwData := 0;
          copyData.cbData := (DWORD(length(szMessage)) + 1) * sizeof(CHAR);
          GetMem(copyData.lpData,copyData.cbData);      ZeroMemory(copyData.lpData, copyData.cbData);
          CopyMemory(copyData.lpData, szMessage, copyData.cbData);
          SendMessage(hwnd, WM_COPYDATA, 0, Integer(@copyData));
        end;
    end;
      

  2.   

    其中 MESSAGE_REGISTRY_CLEAN为自定义数据
      

  3.   

    印象中楼主从没结过帖,不管是CSDN还是大富翁
      

  4.   

    LPCTSTR 是长字符的,lz看看delphi对unicode编码的处理应该就知道了