从Oracle形式调用Microsoft Word中的拼写检查时,重点Vista的问题 [英] Vista focus issue when invoking Microsoft Word spell check from Oracle Forms

查看:278
本文介绍了从Oracle形式调用Microsoft Word中的拼写检查时,重点Vista的问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在测试Vista上我们的Oracle表单应用程序,我发现一个有趣的挑战。

In testing our Oracle Forms application on Vista I have found a interesting "challenge".

应用程序可以调用微软的Word拼写检查器上执行字段的拼写检查。调用时,向用户显示标准的Microsoft Word拼写检查器对话框窗口。字本身是隐身可给用户。

The application can invoke the Microsoft Word spell checker to perform a spell check on a field. When invoked, the user is shown the standard Microsoft Word spell checker dialog window. Word itself is invisble to the user.

检查从使用自动化和使用的方法调用的形式法术是基于MetaLink说明:295449.1如何整合微软Word拼写检查器使用表单使用WebUtil

The Spell Checker is invoked from Forms using Automation and the method used is based on the metalink note: 295449.1 How To Integrate The MS Word Spell Checker With Forms Using WebUtil.

使用调用时这行之有效的Windows XP和Office 2003。

This has worked well when invoked using Windows XP and Office 2003.

然而,当此相同的(不变)功能在Vista上运行,微软Word拼写检查器对话框窗口的浏览器窗口后面所以用户似乎什么都没有发生和功能不工作(没有迹象该拼写检查已调用Vista任务栏上)

However when this same (unchanged) functionality is run on Vista, the Microsoft Word Spell Checker dialog window appears behind the browser window so to the user it appears that nothing has happened and the functionality isn't working(There is no indication on the Vista taskbar that spell checker has been invoked)

在Vista上出现与Office 2007和Office 2003中的问题,我可以看到,问题是Vista的造成的,因为如果我使用用于启动的WindowsXP上的表单应用程序相同的URL,微软的Word拼写检查器对话框窗口出现预期,这是在前面

The problem occurs on Vista with Office 2007 and Office 2003. I can see that the problem is caused by Vista because if I use the same url used to launch the Forms application on WindowsXP, the Microsoft Word Spell Checker dialog window appears as expected, which is in front.

在Vista中我已经尝试设置兼容模式的Office到Windows XP SP2,但问题依然存在。

Within Vista I have tried setting the compatability mode for Office to Windows XP SP2 but the problem remains.

我也试图明确设置来激活(你可以从样品code以下看到),但没有成功。

I have also tried explicitly setting ACTIVATE (as you can see from the sample code below) but without success.

有没有其他人在跑这个?任何帮助或指针在别人遇到过这个问题将受到欢迎!

Has anyone else run in to this? Any help or pointers to where others have experienced this problem would be gratefully received!

我的环境细节是:

环境细节

Oracle表单:10.1.2.3
JRE:孙JRE 1.6.0_14
数据库:10.2.0.3
Vista的:商业版带有Service Pack 1
办公室:2003或2007

Oracle Forms: 10.1.2.3 JRE: Sun JRE 1.6.0_14 Database: 10.2.0.3 Vista: Business Edition with Service Pack 1 Office: 2003 or 2007

在code(这需要在客户端的Oracle去)用于调用拼写检查的是:

The code (which needs to go in a client side Oracle) used to invoke the spell checker is:

PROCEDURE SPELL_CHECK (ITEM_NAME IN VARCHAR2) IS 

 MY_APPLICATION  CLIENT_OLE2.OBJ_TYPE; 
 MY_DOCUMENTS   CLIENT_OLE2.OBJ_TYPE; 
 MY_DOCUMENT   CLIENT_OLE2.OBJ_TYPE; 
 MY_SELECTION   CLIENT_OLE2.OBJ_TYPE; 
 GET_SPELL    CLIENT_OLE2.OBJ_TYPE; 
 MY_SPELL     CLIENT_OLE2.OBJ_TYPE; 
 ARGS      CLIENT_OLE2.LIST_TYPE; 
 SPELL_CHECKED  VARCHAR2(4000); 
 ORIG_TEXT    VARCHAR2(4000); 

BEGIN 
  ORIG_TEXT := ITEM_NAME; 

-- CREATE WORD.APPLICATION OBJECT 
  MY_APPLICATION := CLIENT_OLE2.CREATE_OBJ('WORD.APPLICATION');  
  --CLIENT_OLE2.SET_PROPERTY(MY_APPLICATION, 'VISIBLE', FALSE);
  CLIENT_OLE2.SET_PROPERTY(MY_APPLICATION, 'VISIBLE', TRUE);  

  --CLIENT_OLE2.INVOKE(MY_APPLICATION, 'ACTIVATE');  


-- GET HANDLE FOR DOCUMENTS COLLECTION 
  MY_DOCUMENTS := CLIENT_OLE2.GET_OBJ_PROPERTY(MY_APPLICATION, 'DOCUMENTS'); 

-- ADD A NEW DOCUMENT TO THE DOCUMENTS COLLECTION 
  MY_DOCUMENT := CLIENT_OLE2.INVOKE_OBJ(MY_DOCUMENTS, 'ADD'); 

-- GET HANDLE FOR SELECTION OBJECT 
  MY_SELECTION := CLIENT_OLE2.GET_OBJ_PROPERTY(MY_APPLICATION, 'SELECTION'); 

-- INSERT THE TEXT FIELD INTO DOCUMENT 
  CLIENT_OLE2.SET_PROPERTY(MY_SELECTION, 'TEXT', ORIG_TEXT); 

-- GET HANDLE FOR ACTIVE DOCUMENT  
  GET_SPELL := CLIENT_OLE2.GET_OBJ_PROPERTY(MY_APPLICATION, 'ACTIVEDOCUMENT'); 

-- INVOKE SPELL CHECKER 
  CLIENT_OLE2.INVOKE(GET_SPELL, 'CHECKSPELLING'); 

  CLIENT_OLE2.INVOKE(MY_APPLICATION, 'ACTIVATE');  

-- Added to handle a cancel request.  
  CLIENT_OLE2.INVOKE(MY_SELECTION,'WholeStory');   
  CLIENT_OLE2.INVOKE(MY_SELECTION,'Copy');  

-- GET CHECKED TEXT FROM DOCUMENT 
  SPELL_CHECKED := CLIENT_OLE2.GET_CHAR_PROPERTY(MY_SELECTION, 'TEXT'); 

-- REFORMAT RETURN TEXT TO DISPLAY CORRECTLY IN FORMS 
  SPELL_CHECKED := substr(replace(SPELL_CHECKED,chr(13),chr(10)), 1, length(SPELL_CHECKED)); 

-- COPY NEW TEXT IN THE FORM 
  COPY(SPELL_CHECKED,ITEM_NAME); 

-- CLOSE THE DOCUMENT WITHOUT SAVING 
  ARGS := CLIENT_OLE2.CREATE_ARGLIST;  
  CLIENT_OLE2.ADD_ARG(ARGS, 0);  
  CLIENT_OLE2.INVOKE(MY_DOCUMENT, 'CLOSE',ARGS); 
  CLIENT_OLE2.DESTROY_ARGLIST(ARGS);  

-- RELEASE THE OLE OBJECTS 
  CLIENT_OLE2.RELEASE_OBJ(MY_SELECTION); 
  CLIENT_OLE2.RELEASE_OBJ(GET_SPELL); 
  CLIENT_OLE2.RELEASE_OBJ(MY_DOCUMENT); 
  CLIENT_OLE2.RELEASE_OBJ(MY_DOCUMENTS); 
  CLIENT_OLE2.INVOKE(MY_APPLICATION, 'QUIT'); 
  CLIENT_OLE2.RELEASE_OBJ(MY_APPLICATION);     

END;

编辑:2009年10月8日

10/08/2009

这个链接 http://www.experts-exchange.com/微软/开发/ MS_ACCESS / Q_23085081.html 详细说明了同样的问题,(但这次不是Oracle表单控制的话,它的MS Access),不幸的是,我不能看到答案(如果有一个是!)

This link http://www.experts-exchange.com/Microsoft/Development/MS_Access/Q_23085081.html details the same problem (but this time instead of oracle forms controlling word, it's ms access) Unfortunately I can't see the answer(if there is one that is!)

编辑:12/08/2009

12/08/2009

所有的链接专家交换状态是,这是一个Vista的问题 - 就像我不知道

All the link to expert-exchange states is that this is a vista problem - like I didn't know that!

推荐答案

貌似这个不能单独使用自动化\\ OLE来解决,这<一个href=\"http://social.msdn.microsoft.com/forums/en-US/vsto/thread/bc1045ea-4a11-4e37-8a95-44a0f53e86b2/\"相对=nofollow>线程注意有使用OLE \\自动化和Vista中的激活方法的问题。

Looks like this can't be solved using Automation\OLE alone, this thread notes there is a problem with the activate method within OLE\Automation and Vista.

绕着它的方法是调用Windows API操纵窗口。

The way round it is to call the windows api to manipulate the windows.

这篇关于从Oracle形式调用Microsoft Word中的拼写检查时,重点Vista的问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆