DontBeEvil
Grünschnabel
Moi,
hoffe jemand kennt sich hier mit Ole in Java aus.
Ich Suche einen weg wie ich ein Word Document über Java Read Only setzten kann, solange ich es in meiner Java Anwendung geöffnet habe.
Über die Properties der Automation, kann ich mir von der Application den Wert von ReadOnly auslesen jedoch nicht setzten, da keine set Methode zur verfügung gestellt wird von der Automation![Frown :( :(](https://cdn.jsdelivr.net/joypixels/assets/8.0/png/unicode/64/1f641.png)
Kenn jemand einen weg oder bin ich an der total falschen Property?
Hier ein kleiner beispiel Code wo und wie ich mir die automations hole.
hoffe jemand kennt sich hier mit Ole in Java aus.
Ich Suche einen weg wie ich ein Word Document über Java Read Only setzten kann, solange ich es in meiner Java Anwendung geöffnet habe.
Über die Properties der Automation, kann ich mir von der Application den Wert von ReadOnly auslesen jedoch nicht setzten, da keine set Methode zur verfügung gestellt wird von der Automation
![Frown :( :(](https://cdn.jsdelivr.net/joypixels/assets/8.0/png/unicode/64/1f641.png)
Kenn jemand einen weg oder bin ich an der total falschen Property?
Hier ein kleiner beispiel Code wo und wie ich mir die automations hole.
Code:
package OleWord;
import java.awt.BorderLayout;
import java.awt.Canvas;
import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.JPanel;
import org.eclipse.swt.SWT;
import org.eclipse.swt.SWTError;
import org.eclipse.swt.awt.SWT_AWT;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.ole.win32.OLE;
import org.eclipse.swt.ole.win32.OleAutomation;
import org.eclipse.swt.ole.win32.OleControlSite;
import org.eclipse.swt.ole.win32.OleFrame;
import org.eclipse.swt.ole.win32.Variant;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
public class OleWordExample {
private OleControlSite controlSite;
private OleAutomation automation;
private OleFrame frame;
private JFrame jframe;
private Canvas canvas;
private Display display;
private Shell shell;
private Shell swtShell;
public OleWordExample() {
// Word word = new Word();
init();
jframe.setVisible(true);
System.setProperty("sun.awt.noerasebackground", "true");
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
display.dispose();
}
private void init() {
display = new Display();
shell = new Shell(display);
canvas = new Canvas();
jframe = new JFrame("Ole Microsoft Word");
final int width = 1378;
final int height = 768;
jframe.setSize(600, 600);
// jframe.getContentPane().add(canvas);
JPanel x = new JPanel();
x.setLayout(new BorderLayout());
x.setPreferredSize(new Dimension(600, 600));
x.add(canvas);
// x.setVisible(true);
jframe.add(x);
jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// jframe.setExtendedState(JFrame.MAXIMIZED_BOTH);
display.asyncExec(new Runnable() {
public void run() {
swtShell = SWT_AWT.new_Shell(display, canvas);
swtShell.setSize(1024, 768);
swtShell.setLayout(new FillLayout());
try {
frame = new OleFrame(swtShell, SWT.NONE);
controlSite = new OleControlSite(frame, SWT.NULL,
"Word.Document");
controlSite.doVerb(OLE.OLEIVERB_OPEN);
OleAutomation automation = new OleAutomation(controlSite);
int[] dispIDs = automation
.getIDsOfNames(new String[] { "Application" });
Variant pVarResult = automation.getProperty(dispIDs[0]);
OleAutomation application = pVarResult.getAutomation();
int[] appID = application
.getIDsOfNames(new String[] { "Documents" });
Variant appresult = application.getProperty(appID[0]);
OleAutomation documents = appresult.getAutomation();
} catch (final SWTError e) {
System.out.println("Unable to open activeX control");
display.dispose();
return;
}
swtShell.open();
}
});
}
public static void main(final String[] args) {
final OleWordExample example = new OleWordExample();
}
}