# SWT OLE + Java



## ennbee (26. April 2006)

Hallo...

habe vor Tagen schon mal mein Problem gepostet:

http://www.tutorials.de/forum/java/241237-outlook-termin-erzeugen-java.html

.. und leider keine (aussagekräftige) Hilfe bekommen. 
Nun fällt mir als Anfängerin das Ausformulieren meines Problemes bzw. der Aufgabe ja auch nicht so leicht, zumal ich das Fachchinesisch noch nicht beherrsche ...
Also, ich möchte durch Betätigen eines Buttons in meiner Java-Applikation ein Outlook-Termin-Fenster öffnen. 
Dafür im www Hilfe oder gar Code zu finden... anscheinend schwierig  *seufz*

Habe Fragmente aus Toms Code zu Hilfe genommen und bin nun bei Folgendem angelangt (snippet):

```
public OpenOutlook() {
	super("New Outlook Appointment", IAction.AS_PUSH_BUTTON);
	this.setImageDescriptor(UiPlugin.getImageDescriptor(OUTLOOK_IMG));
	this.setToolTipText("Outlook");
}

public void run() {
	try{
	  Display display = new Display();
	  Shell shell = new Shell(display);
			
	  OleFrame frame = new OleFrame(shell, SWT.NONE);
	  OleClientSite site = new OleClientSite(frame, SWT.NONE, "Outlook.Application");
	  site.doVerb(OLE.OLEIVERB_INPLACEACTIVATE);
			
	  OleAutomation auto = new OleAutomation(site);
	  int[] dispIDs = auto.getIDsOfNames(new String[] {"NewAppointment"});
	  auto.invoke(dispIDs[0]);
	  auto.dispose();
			
	  shell.dispose();
	  display.dispose();
	}
	catch (SWTException e){
	  e.printStackTrace();
	}
}
```

Das funktioniert leider auch noch nicht so richtig (verursacht "Invalid thread access"), könnte aber in die richtige Richtung gehen... oder?
Weiss einer von euch einen Lösungsansatz? Bin dankbar für jede Hilfe  *wimperklimper*

Gruß
 Nicole


----------



## ennbee (27. April 2006)

Hab's nun soweit, das ein Outlook-Termin-Fenster geöffnet wird... fehlt noch Inhalt- und Parameterübergabe. Lösungsvorschläge immer gern an mich   

Wen's interessiert:

```
public void run() {
		 Display display = Display.getCurrent();
		 Shell shell = new Shell(display);

		 OleFrame frame = new OleFrame(shell, SWT.NONE);
		 OleClientSite site = new OleClientSite(frame, SWT.NONE, "OVCtl.OVCtl");
		 site.doVerb(OLE.OLEIVERB_INPLACEACTIVATE);

		 OleAutomation auto = new OleAutomation(site);
		 int[] dispIDs = auto.getIDsOfNames(new String[] {"NewAppointment"});
		 auto.invoke(dispIDs[0]); 
		 auto.dispose();

		 shell.dispose();
         }
```


----------

