如何在 VSTO Excel 2003 加载项中托管的 Winform/WPF 应用程序上设置焦点和模式方式?

发布于 2024-12-01 13:03:11 字数 560 浏览 1 评论 0原文

我有 2 个问题:

1) 在我的 VSTO 外接程序中,我创建了一个按钮。单击时,它会启动一个 STA 线程,启动一个 WPF 窗口(这实际上是我真正的应用程序)。 该应用程序正在处理 Excel 数据,将它们发送到 Web 服务等。 在特定的时刻,我称:

System.Diagnostics.Process.Start(filePath);

路径类似于“C:\file.xls”。事实上,它会打开一个 Excel 文件。 问题是焦点集中在该文件上,而不是将焦点保留在我的 WPF 窗口上。 我尝试将焦点设置到当前进程,但由于打开的新文件和我的 WPF 窗口托管在同一个 Excel 进程中,因此它根本没有解决问题...

知道吗?


2) 正如你所看到的,由于我的WPF应用程序是在线程中启动的,即使使用模式对话框,我仍然可以在后台修改excel文件......这根本不是我想要的... 如何解决这个问题,在后台阻止 Excel 文件?是否可以使用我可以控制的 Workbook COM 对象来执行此操作?

I have 2 questions :

1) In my VSTO Add-in, I created a button. When clicked, it starts a STA thread, launching a WPF Window (which is in fact my real application).
The application is treating Excel Data, sending them to Web services, etc etc.
At a particularly moment, I call :

System.Diagnostics.Process.Start(filePath);

the path is like "C:\file.xls". Indeed, it opens an Excel file.
The problem is that the focus is beeing made on this file instead of remaining the focus on my WPF window.
I tried to set the focus to the Current process, but since the new file opened and my WPF Window are hosted in the same Excel process, it didn't solve the problem at all...

Any idea ?


2) As you can see, as my WPF application is launched in a thread, even using a modal dialog, I can still modify the excel file in background... which is not what I want at all...
How to fix this, blocking the excel file in background ? Is it possible to do this using the Workbook COM object that I can control ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

絕版丫頭 2024-12-08 13:03:11

好吧,我不使用线程解决了我的问题。
我直接在 VSTA_Main 线程(加载项线程)中启动应用程序,导致按钮冻结...

因为它不是另一个线程,所以我的整个进程都处于阻塞状态。

对于第二个问题,我启动了另一个类似的Excel进程:

            ProcessStartInfo info = new ProcessStartInfo("Excel.exe",filePath);
            Process.Start(info);

我在生成Excel文件时仍然有一个小错误,但仍然解决了我的主要问题。

Ok I solved my problem not using a thread.
I launch my application directly in the VSTA_Main thread (the Add-in thread), causing a freeze on my button...

Since it's not another thread, my entire process in blocking.

For the second question, I launched another Excel process like that :

            ProcessStartInfo info = new ProcessStartInfo("Excel.exe",filePath);
            Process.Start(info);

I still have a little bug with the generation of the Excel file, but still solved my principal problem.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文