none
POST Konsolenanwendung nach kb 167658 RRS feed

  • Frage

  • Ich evrsuche grade, http://support.microsoft.com/kb/167658/en-us/ nachzuarbeiten/nachzuvollziehen.
    Habe nun wie in der Anleitung beschrieben, den code kopiert und in ein Konsolenprojekt eingefügt, dabei kommt es zu folgenden Compilerfehlern:

    Fehler    5    error C2039: 'Navigate': Ist kein Element von 'IWebBrowserApp'    post.c    50
    Fehler    6    error C2039: 'put_Visible': Ist kein Element von 'IWebBrowserApp'   post.c    52
    Fehler    7    error C2039: 'Release': Ist kein Element von 'IWebBrowserApp'    post.c    58
    Fehler    1    error C2440: 'Funktion': 'const CLSID' kann nicht in 'const IID *const ' konvertiert werden    post.c    28
    Fehler    3    error C2440: 'Funktion': 'const IID' kann nicht in 'const IID *const ' konvertiert werden    post.c    28
    Fehler    9    fatal error C1075: Dateiende erreicht, bevor das zugehörige Element für das linke Element Klammer "{" in "post.c(64)" gefunden wurde    post.c    89

    woran liegt das? danke
    Dienstag, 22. Dezember 2009 11:33

Antworten

  • Ändere diese Zeile:
      LPCTSTR cszPostData = "FName=Matt&Flavor=Mocha+Chip";
      UINT cElems = lstrlen(cszPostData);
    
    nach
      LPCSTR cszPostData = "FName=Matt&Flavor=Mocha+Chip";
      UINT cElems = lstrlenA(cszPostData);
    
    Mittwoch, 23. Dezember 2009 11:03

Alle Antworten

  • Also bei mir lässt sich der Code problemlos kompilieren... WAS hast Du denn gemacht?
    File..New...|C/C++|Win32 Console Application

    Und das ist der Code:
    #include <windows.h>
    #define INITGUID
    #include <initguid.h>
    #include <exdisp.h>
    #include <memory.h>
    
    HRESULT GetPostData(LPVARIANT pvPostData);
    
    void main()
    {
      HRESULT hr;
      IWebBrowserApp* pWBApp = NULL; // Derived from IWebBrowser
      BSTR bstrURL = NULL, bstrHeaders = NULL;
      VARIANT vFlags = {0},
        vTargetFrameName = {0},
        vPostData = {0},
        vHeaders = {0};
    
      if (FAILED(hr = CoInitialize(NULL)))
      {
        return;
      }
    
      if (FAILED(hr = CoCreateInstance(CLSID_InternetExplorer,
        NULL,
        CLSCTX_SERVER,
        IID_IWebBrowserApp,
        (LPVOID*)&pWBApp)))
      {
        goto Error;
      }
    
      bstrURL = SysAllocString(L"http://<server>/scripts/navpost.asp");
      if (!bstrURL)
      {
        goto Error;
      }
    
      bstrHeaders = SysAllocString(
        L"Content-Type: application/x-www-form-urlencoded\r\n");
      if (!bstrHeaders)
      {
        goto Error;
      }
    
      V_VT(&vHeaders) = VT_BSTR;
      V_BSTR(&vHeaders) = bstrHeaders;
    
      hr = GetPostData(&vPostData);
      hr = pWBApp->Navigate(bstrURL, &vFlags,
        &vTargetFrameName, &vPostData, &vHeaders);
      pWBApp->put_Visible(VARIANT_TRUE);
    
    Error:
      if (bstrURL) SysFreeString(bstrURL);
      if (bstrHeaders) SysFreeString(bstrHeaders);
      VariantClear(&vPostData);
      if (pWBApp) pWBApp->Release();
      CoUninitialize();
    }
    
    // Pack some data into a SAFEARRAY of BYTEs. Return in a VARIANT
    HRESULT GetPostData(LPVARIANT pvPostData)
    {
      HRESULT hr;
      LPSAFEARRAY psa;
      LPCSTR cszPostData = "FName=Matt&Flavor=Mocha+Chip";
      UINT cElems = lstrlenA(cszPostData);
      LPSTR pPostData;
    
      if (!pvPostData)
      {
        return E_POINTER;
      }
    
      VariantInit(pvPostData);
    
      psa = SafeArrayCreateVector(VT_UI1, 0, cElems);
      if (!psa)
      {
        return E_OUTOFMEMORY;
      }
    
      hr = SafeArrayAccessData(psa, (LPVOID*)&pPostData);
      memcpy(pPostData, cszPostData, cElems);
      hr = SafeArrayUnaccessData(psa);
    
      V_VT(pvPostData) = VT_ARRAY | VT_UI1;
    
      V_ARRAY(pvPostData) = psa;
      return NOERROR;
    }
    

    Jochen Kalmbach (MVP VC++)
    Dienstag, 22. Dezember 2009 16:36
  • neues win32 konsolenprojekt, quelldateien, c++-datei hinzufügen (POST.cpp)

    interessanter weise im 2. Anlauf nur noch 1 compilerfehler:

    Fehler    1    error C2440: 'Initialisierung': 'const char [29]' kann nicht in 'LPCTSTR' konvertiert werden    post.cpp    67
    Dienstag, 22. Dezember 2009 19:39
  • Ändere diese Zeile:
      LPCTSTR cszPostData = "FName=Matt&Flavor=Mocha+Chip";
      UINT cElems = lstrlen(cszPostData);
    
    nach
      LPCSTR cszPostData = "FName=Matt&Flavor=Mocha+Chip";
      UINT cElems = lstrlenA(cszPostData);
    
    Mittwoch, 23. Dezember 2009 11:03