всем доброго времени суток! Пытаясь решить вышеизложенную проблему, нашел статью в которой описано что можно подменить окно используя библиотеку USER32.dll метод setParent. Попытался написать джоб
X++:
static void arn_dzu_createOleObj(Args _args)
{
Microsoft.Office.Interop.Excel.Workbook wb;
Microsoft.Office.Interop.Excel.Workbooks wbs;
Microsoft.Office.Interop.Excel.ApplicationClass acExcel;
DLL _dll = new DLL("user32.dll");
DLLFunction dllFunction = new DLLFunction(_dll,"SetParent"),
dllFunc;
int iWindow,wind;
FormRun formRun;
Form form = new Form();
Args args = new Args();
System.Reflection.Missing mising ;
object oMissing = mising;
str fileName = "C:\\1234.xls";
;
new InteropPermission(InteropKind::ClrInterop).assert();
//dllFunc = new DLLFunction(_dll,"FindWindow");
acExcel = new Microsoft.Office.Interop.Excel.ApplicationClass();
iWindow = WinApi::findWindow("XLMAIN","");
form.addDesign('Design');
args.object(form);
form.design().width(1000);
form.design().height(1000);
formRun = classFactory.formRunClass(args);
formRun.init();
formRun.design().caption('excel');
wind = any2int(formRun.form().design().handle());
dllFunction.arg(Types::Integer,Types::Integer);
dllFunction.returns();
dllFunction.call(iWindow,wind);
wbs = acExcel.get_Workbooks();
// wb = wbs.Open(fileName,oMissing,false,oMissing,oMissing,oMissing,oMissing,oMissing,oMissing,oMissing,oMissing,oMissing,oMissing,oMissing,oMissing);
wb = wbs.Add(filename);
acExcel.set_Visible(true);
acExcel.set_UserControl(true);
formrun.run();
formRun.wait();
CodeAccessPermission::revertAssert();
}
Но что то пока не работает... Может кто подскажет в чем дело?