【发布时间】:2014-01-08 09:11:09
【问题描述】:
我有一个 c# 程序,它可以打开 adobe 阅读器并为用户打印 pdf。在winxp下可以正常使用,win7下不行。
经过排查,发现问题出在CreateProcess函数上。 win7下CreateProcess无法启动adobe reader。
如果有人知道如何解决,请帮忙。
public bool startup(string acrobatLoc)
{
bool result = false;
if (!isAcrobatExsists(acrobatLoc))
{
sInfo = new STARTUPINFO();
pInfo = new PROCESS_INFORMATION();
sInfo.dwX = -1;
sInfo.dwY = -1;
sInfo.wShowWindow = 0;
sInfo.dwXSize = -1;
sInfo.dwYSize = -1;
result = CreateProcess(null, new StringBuilder(acrobatLoc), null, null, false, 0, null, null, ref sInfo, ref pInfo);
acrobatPHandle = pInfo.dwProcessId;
IntPtr parentHandle = IntPtr.Zero;
if (result)
{
while ((parentHandle = getWindowHandlerByClass("AcrobatSDIWindow")) == IntPtr.Zero)
{
System.Threading.Thread.Sleep(1 * 500);
}
acrobatMainWHandle = parentHandle;
System.Threading.Thread.Sleep(3 * 1000);
}
}
return result;
}
【问题讨论】:
-
你说的不工作是什么意思?有任何异常或错误消息吗?
-
acrobatLoc的值是多少?您的 Windows 7 机器是否运行 64 位架构?调试器告诉你isAcrobatExsists(acrobatLoc)返回什么值? -
我检查路径是否正确。我正在使用 adobe reader 8。路径是 c:\Program Files (x86)\Adobe\Reader 8.0\Reader\AcroRd32.exe。我之前用的是reader 11,我尝试卸载reader,重新安装reader 8,和客户端机器一样。
-
我用的是win7 64位版本
-
CreateProcess 在 win7 中总是返回 false。如何获得更多错误信息?谢谢!
标签: c# windows-7 createprocess adobe-reader