Announcement

Collapse
No announcement yet.

Office Automation, Problem mit Prozess-Synchronisation

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Office Automation, Problem mit Prozess-Synchronisation

    Ich versuche mich zur Zeit an einem Automations-Client für MS Office Anwendungen, der im Verlauf seiner Arbeit auf Access, Excel und auch Word zugreifen soll.
    Die defür benötigten Klassen habe ich in VC++ über die jeweiligen .olb Dateien eingebunden (erzeugt Ableitungen des Typs COleDispatchDriver) und es klappt auch wunderbar die jeweiligen Anwendungen zu starten. z.B. für Access in der Form:

    <PRE>
    #include "msacc9.h"

    Access_Application accessApp;
    CLSID clsidApp;
    HRESULT hr;

    hr = CLSIDFromProgID(L"Access.Application", &clsidApp);

    // Starten der Applikation:
    accessApp.CreateDispatch(clsidApp, NULL);

    </PRE>

    Soweit so gut. Die Zugriffe auf Tabellen und deren Inhalte funktioniert soweit auch ganz gut.
    Jetzt bin ich aber auf einen kleinen Stolperstein gestoßen bei dem ich nicht weiter komme:
    Mein Client muss an einer Stelle in der Lage sein, Access für den Benutzer sichtbar zu öffen [accessApp.SetVisible(true);], um ihm eine manuelle Eingabe zu ermöglichen.
    Während das passiert, soll der Client warten.

    Das Problem ist nun, dass ich für ein WaitForSingleObject oder besser ein _cwait die ProcessID / das Handle von Access benötigen würde.
    Da ich Access jedoch nicht direkt mittels _spawn, _exec oder CreateProcess aufrufe, habe ich bisher keine Möglichkeit gefunden die ProcessID entsprechend zu ermitteln.

    Hat irgendjemand das Problem schonmal gehabt und irgendwie gelöst?
Working...
X