通过Interop操作Word时,怎么得到已知Document的窗口句柄?

phommy 2013-06-08 03:48:59
网上能找到的都是下边这样:把文档(doc)激活,然后FindWindow。但实际跑起来有很多例外,比如打开了多窗口,比如word弹出了个对话框什么的,既然连doc的引用都有了,理应有更直接的方式得到窗体句柄,请各位帮忙。。。


var wd = new ApplicationClass();
wd.Visible = true;
wd.Activate();
var doc = wd.Documents.Add("Normal", false, 0, true);
doc.Activate();
var wordWnd = FindWindow("Opusapp", null);
...全文
147 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
蓝天上的白云 2013-06-19
  • 打赏
  • 举报
回复
我想楼主的意思是不是想杀死相应的word进程?
//*** Kill Excel Process ***//
[DllImport("user32.dll", SetLastError = true)]
public static extern int GetWindowThreadProcessId(IntPtr hwnd, out int lpdwProcessID);
public static void KillExcellProcess(Microsoft.Office.Interop.Excel.Application xlsApp)
{
    try
    {                
        if (xlsApp != null)
        {
            int excelProcessID = 0;
            GetWindowThreadProcessId(new IntPtr(xlsApp.Hwnd), out excelProcessID);                    
            if (excelProcessID != 0)
            {
                Process excelProc = Process.GetProcessById(excelProcessID);
                if (excelProc != null)
                {
                    excelProc.Kill();
                }
            }
        }
    }
    catch (Exception ex)
    {
        throw ex;
    }
}
phommy 2013-06-13
  • 打赏
  • 举报
回复
再顶一下。。。哪位知道啊。。。
phommy 2013-06-09
  • 打赏
  • 举报
回复
沉了,顶上来。。。

110,549

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧