hResource   =   BeginUpdateResource(lpszFile,   FALSE);   
                          if   (NULL   !=   hResource)   
  {   
  UINT   uTemp;   
    
  TCHAR strSubBlock[256];   
  LPTSTR     pValueBuffer;   
    
  _stprintf(strSubBlock,   _T("\\StringFileInfo\\%04x%04x\\CompanyName"),   
                                        lpTranslate->wLanguage,     
                                        lpTranslate->wCodePage);   
    
  if   (VerQueryValue(lpBuffer,   (LPTSTR)   ((LPCTSTR)   strSubBlock),   (LPVOID   *)   &pValueBuffer,   &uTemp)   !=   FALSE)   
  {   
  _tcscpy(pValueBuffer,   _T("My   Corp"));   
    
  if   (UpdateResource(hResource,   RT_VERSION,   MAKEINTRESOURCE(VS_VERSION_INFO),   lpTranslate->wLanguage,   lpBuffer,   dwSize)   !=   FALSE)   
                                          {   
                                                  if   (EndUpdateResource(hResource,   FALSE)   ==   FALSE)   
                                                          dwResult   =   GetLastError();   
                                          }   
                                          else   
                                                  dwResult   =   GetLastError();   
  }   
    
  }

解决方案 »

  1.   


    hResource  =  BeginUpdateResource(lpszFile,  FALSE);  
                              if  (NULL  !=  hResource)  
      {  
      UINT  uTemp;  
        
      TCHAR strSubBlock[256];  
      LPTSTR    pValueBuffer;  
        
      _stprintf(strSubBlock,  _T("\\StringFileInfo\\%04x%04x\\CompanyName"),  
                                            lpTranslate->wLanguage,    
                                            lpTranslate->wCodePage);  
        
      if  (VerQueryValue(lpBuffer,  (LPTSTR)  ((LPCTSTR)  strSubBlock),  (LPVOID  *)  &pValueBuffer,  &uTemp)  !=  FALSE)  
      {  
      _tcscpy(pValueBuffer,  _T("My  Corp"));  
        
      if  (UpdateResource(hResource,  RT_VERSION,  MAKEINTRESOURCE(VS_VERSION_INFO),  lpTranslate->wLanguage,  lpBuffer,  dwSize)  !=  FALSE)  
                                              {  
                                                      if  (EndUpdateResource(hResource,  FALSE)  ==  FALSE)  
                                                              dwResult  =  GetLastError();  
                                              }  
                                              else  
                                                      dwResult  =  GetLastError();  
      }  
        
      }
      

  2.   

    [Quote=引用 1 楼 soweb 的回复:]
    Delphi(Pascal) code
    var
      utemp:word;
      strsubblock:string;//   我也不明白C里的TCHAR在DELPHI里可不可以用STRING来代替   strsubblock:arrary[0..255]of char;         
      pValueBuffer:pchar;
    .
    .

      setlength(strsubblock,256);//不过如果不行是可以强制转换的    或者使用上面的注释后的那句也是可以的。这个我翻过资料了,两种都可以,STRING的话方便点  hResource :=  BeginUpdateResource(lpszFile,  FALSE);   
      if  (hResource<>0) then 
          begin
     
      pValueBuffer:=@ ???????????? 
      _stprintf  --- 你干脆说你要干什么算了,实在是我的C很菜
      

  3.   

    哦,明白了,获取版本信息啊,怎么需要这么多麻烦的东西?
    http://www.pcppc.cn/kaifa/Delphi/kaifa_118557.html 这里有完整的例子
      

  4.   

      
     if VerQueryValue(buf,PChar(strsubblock),pointer(pvaluebuffer),utemp)<>0   可以直接强制转换STRSUBBLOCK的貌似