Почему всегда возвращать 0, когда получить PID в C# с IIS? Но работать с ASP.NET Develop Server нормально

Почему всегда возвращать 0, когда получить PID в C# с IIS? Но работать с ASP.NET Develop Server нормально.

КОД:

using System;
using System.Diagnostics;
using System.Runtime.InteropServices;
using Microsoft.Office.Interop.Excel;
namespace MyWeb
{
    public class SWFManager
    {
        [DllImport("User32.dll", CharSet = CharSet.Auto)]
        private static extern int GetWindowThreadProcessId(IntPtr hwnd, out int pid);
        public static void Excel2Pdf(string sourcePath, string targetPath)
        {

            XlFixedFormatType targetType = XlFixedFormatType.xlTypePDF;
            object missing = Type.Missing;
            ApplicationClass application = null;
            Workbook workBook = null;
            int pid = 0;
            try
            {
                application = new ApplicationClass();
                object target = targetPath;
                object type = targetType;
                workBook = application.Workbooks.Open(sourcePath);
                workBook.ExportAsFixedFormat(targetType, target, XlFixedFormatQuality.xlQualityStandard, true, false);
                IntPtr ip = new IntPtr(application.Hwnd);
                GetWindowThreadProcessId(ip, out pid);
                //pid return 0 if run with IIS except ASP.NET Develop Server
                System.IO.File.AppendAllText(@"D:\WebRoot\pid.txt", pid.ToString());
            }
            catch
            {

            }
            finally
            {
                Process p = Process.GetProcessById(pid);
                p.Kill();
            }
        }
    }
}
Призываю доброжелателей помочь объяснить или дать код решения, спасибо!

0 ответов

Другие вопросы по тегам