关于C#调用打印机异常问题 20C

项目介绍:在客户那边有一个平台,是通过web浏览器去访问的,我主要做的就是在客户端提供一个服务程序,然后让他们的平台调用我的服务程序的url来完成各种相关的数据处理。我用的是C#和nancy,做的是控制台的项目,然后用nssm弄成windows服务,服务目前其他各项处理都没问题,除了这个打印的功能。打印的这一块存在问题,我在xamarin和vs里面进行运行或调试的时候打印功能一切正常,但是使用nssm装成windows服务以后就开始报异常,异常的详细信息如下:System.Drawing.Printing.InvalidPrinterException: No printers are installed. at System.Drawing.Printing.PrinterSettings.GetHdevmodeInternal() at System.Drawing.Printing.PrinterSettings.GetHdevmode(PageSettings pageSettings) at System.Drawing.Printing.PrintController.OnStartPrint(PrintDocument document, PrintEventArgs e) at System.Windows.Forms.PrintControllerWithStatusDialog.OnStartPrint(PrintDocument document, PrintEventArgs e) at System.Drawing.Printing.PrintController.Print(PrintDocument document) at System.Drawing.Printing.PrintDocument.Print() at AliAssetTagger.Services.AssetCardService.PrintUserdata(UserData userdata) in c:\Users\glgstwp\Desktop\Gloit\2015-07-28\1.1.0\ali-asset-tagger\ali-asset-tagger\ali-asset-tagger\ali-asset-tagger\Services\AssetCardService.cs:line 105
我的打印部分的代码是
public string Print (UserData userdata)
{

try{

userdataToPrint = userdata;

PrintDocument pd = new PrintDocument ();

pd.PrintPage += new PrintPageEventHandler (pd_PrintPage);

pd.Print (); //异常指向的就是这一行
}

catch(Exception e) {

return e.ToString ();

}

return "打印完成!";

}

public void pd_PrintPage (object sender, System.Drawing.Printing.PrintPageEventArgs e)

{ Console.WriteLine ("打印ing");

try {

//通过GDI+绘制打印文档

e.Graphics.DrawString ("广西国税", new Font ("宋体", 8), Brushes.Black, 90, 0);

e.Graphics.DrawString ("广西壮族自治区税务厅", new Font ("宋体", 4), Brushes.Black, 90, 12);

e.Graphics.DrawLine (new Pen (Color.Black, (float)1.00), 90, 18, 200, 18);

e.Graphics.DrawString ("XX市XX县(区)国家税务局", new Font ("宋体", 7), Brushes.Black, 90, 22);

e.Graphics.DrawLine (new Pen (Color.Yellow, (float)5.00), 0, 39, 300, 39);

e.Graphics.DrawString ("资产编号: " + userdataToPrint.asset_No, new Font ("宋体", 12, FontStyle.Bold), Brushes.Black, 12, 55);

e.Graphics.DrawString ("资产名称: " + userdataToPrint.asset_Name, new Font ("宋体", 12, FontStyle.Bold), Brushes.Black, 12, 80);

e.Graphics.DrawString ("规格型号: " + userdataToPrint.specification_Model, new Font ("宋体", 12, FontStyle.Bold), Brushes.Black, 12, 105);

e.Graphics.DrawString ("使用部门: " + userdataToPrint.department, new Font ("宋体", 12, FontStyle.Bold), Brushes.Black, 12, 130);

e.Graphics.DrawString ("使用人: " + userdataToPrint.responsible, new Font ("宋体", 12, FontStyle.Bold), Brushes.Black, 12, 155);

e.Graphics.DrawString ("购置日期: " + userdataToPrint.purchased_On, new Font ("宋体", 12, FontStyle.Bold), Brushes.Black, 12, 180);

Console.WriteLine ("打印结束");

}
catch (Exception ex) {

MessageBox.Show (ex.ToString ());

}

}

我在网上也看到了很多No printers are installed的异常,但是并不是没有安装打印机驱动,在电脑上的打印机和传真那里可以看到很多的打印机和传真,在xamarin studio或者visual studio里面都是正常的,没有异常输出,能够正确打印,但是一装成windows服务就不行,是不是弹窗的原因?我知道nssm装服务的时候有弹窗是不成功不允许的,但是调用打印机的时候怎么做才能不闪出任何打印机相关的窗口呢?我上面的代码已经是直接使用默认的打印机打印了,但是运行的时候还是会有一个窗口在任务栏闪一下,应该是打印机的相关的。请各位帮帮忙,感激不尽!项目很急,我刚毕业,公司没人可以帮到我,万能的网友,拜托了!

4个回答

添加一个虚拟打印机,比如acrobat或者随便添加一个打印机看看

tbj621
Binjan 明天早上试试
大约 4 年之前 回复

InvalidPrinterException: No printers are installed,这里提示没有安装打印机,你查看一下你的电脑安装了打印机驱动没有,后者确保打印机好的,能够工作的。
C#调用打印机

tbj621
Binjan 我在xamarin studio中运行的时候可以打印,并没有提示任何异常的呀,就是把它弄成服务以后报这个异常,我在电脑上可以打印word什么的都可以,打印机是可以使用的
大约 4 年之前 回复

大概看了一看,初步估计不是你代码的问题,而是机器的问题,也就是说你安装的打印机是不是有问题还是安装错误,或者没有安装。。 ;
如何还是不行,换一台电脑试试,还是不可以建议尝试换一种方式来实现;

tbj621
Binjan 可是我在电脑上可以进行打印啊,比如word,还有在调试的时候是可以打印的,装成服务它就不行了
大约 4 年之前 回复

请问楼主解决了这个问题吗,我现在也是这种情况。pd.Print (); //异常指向的就是这一行。在vs2012里面调试打印可以,但是一发布到服务就不行了。PS:服务器和本机的本地打印都是正常的。

baidu_33368827
baidu_33368827 PrintDocument pd = new PrintDocument();//创建一个PrintDocument的实例 //打印页面需指定相应的PrintDocument_PrintPrintPage事件委托 pd.PrintPage += new PrintPageEventHandler(printDocument_PrintPage); //指定默认打印机的名称 pd.PrinterSettings.PrinterName = @"Samsung SCX-4300 Series"; if (pd.PrinterSettings.IsValid) { pd.Print();//调用默认打印机执行打印事件 return View(); }
大约 3 年之前 回复
baidu_33368827
baidu_33368827 PrintDocument pd = new PrintDocument();//创建一个PrintDocument的实例 //打印页面需指定相应的PrintDocument_PrintPrintPage事件委托 pd.PrintPage += new PrintPageEventHandler(printDocument_PrintPage); //指定默认打印机的名称 pd.PrinterSettings.PrinterName = @"Samsung SCX-4300 Series"; if (pd.PrinterSettings.IsValid) { pd.Print();//调用默认打印机执行打印事件 return View(); }
大约 3 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
关于调用存储过程的异常问题
我在JAVA中用存储过程出现如下错误:rn[Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]超出了存储过程、函数、触发器或视图的最大嵌套层数(最大层数为 32)。rnrnrn代码大致如下:rnrnString SQL="call MOVER_MOULD_APPEND(7,0,1,'Mover','aaaaaaaaa','aaaaaaaaaaa',0,0,'null','2006-06-03 8:23:02')"rn...rnOperator.prepareCall(SQL);rntryrnrnint number=Operator.getCallableStatement().executeUpdate();rnif(number<=0)rnrn event.write("append()数据追加失败:"+SQL);rn inserted=false;rnrnelse rnrn event.write("append()数据追加成功:"+SQL);rn inserted=true;rnrnrnrncatch (java.sql.SQLException se)rnrn event.write(se.getMessage());rnrnfinallyrnrn Operator.Close();rnrnrnrn这个问题困扰我一天了。原因在哪,如何解决?rnrn
C#调用DLL,出现的异常问题
[img=http://hi.csdn.net/space-4161914-do-album-picid-886435.html][/img]rnrnrn
c# 调用条码打印机
c# 怎样调用条码打印机进行打印条码?rn
C#如何调用打印机
[img=https://img-bbs.csdn.net/upload/201408/23/1408793517_369864.jpg][/img][img=https://img-bbs.csdn.net/upload/201408/23/1408793522_361394.jpg][/img]
c# 调用本地打印机
查询本机所有打印机 private void index_Load(object sender, EventArgs e) { PrintDocument print = new PrintDocument(); string sDefault = print.PrinterSettings.PrinterName;//默认打印机名...
c#调用打印机
C#调用打印机,并且固定大小,用于小票打印等各种领域
C#调用打印机打印
C#调用打印机打印程序自动 ,C#开发使用,测试版 。
关于axis 客户端调用的异常问题
[code=Java] public static void main(String args[]) throws ServiceException,RemoteException rn String url = "http://localhost:8080/teviws/services/PhotoWatermarkService";rn Service service = new Service();rn Call call = (Call)service.createCall();rn call.setTargetEndpointAddress(url);rn call.setOperationName(new QName(url,"handler"));rn String result = (String) call.invoke(new Object[]"2011-07");rn System.out.println(result);rn [/code]rnrnrn[code=Java]rnException in thread "main" AxisFaultrn faultCode: http://schemas.xmlsoap.org/soap/envelope/Server.userExceptionrn faultSubcode: rn faultString: java.lang.reflect.InvocationTargetExceptionrn faultActor: rn faultNode: rn faultDetail: rn http://xml.apache.org/axis/hostname:zhangmm-PCrnrnjava.lang.reflect.InvocationTargetExceptionrn at org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder.java:222)rn at org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.java:129)rn at org.apache.axis.encoding.DeserializationContext.endElement(DeserializationContext.java:1087)rn at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:601)rn at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:1782)rn at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2939)rn at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:647)rn at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140)rn at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:511)rn at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:808)rn at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)rn at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:119)rn at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)rn at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)rn at javax.xml.parsers.SAXParser.parse(SAXParser.java:395)rn at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)rn at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)rn at org.apache.axis.Message.getSOAPEnvelope(Message.java:435)rn at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:62)rn at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206)rn at org.apache.axis.client.Call.invokeEngine(Call.java:2784)rn at org.apache.axis.client.Call.invoke(Call.java:2767)rn at org.apache.axis.client.Call.invoke(Call.java:2443)rn at org.apache.axis.client.Call.invoke(Call.java:2366)rn at org.apache.axis.client.Call.invoke(Call.java:1812)rn at cn.intellix.teviws.test.TestPhotoWatermarkSerivceWSDD.main(TestPhotoWatermarkSerivceWSDD.java:24)rn[/code]rnrn
关于BerkeleyDB在C#中的异常问题
是这样的,我在一个C#程序中有如下一段代码,希望在BerkeleyDB一个UNVISITED表中插入一条url信息:rntryrn rn m_LockOfPutUnVisitedUrl.AcquireWriterLock(1000);rn BdbFormatter newformatter = new BdbFormatter(2, 40960);rn new UrlField(newformatter, true);rn DbEntry keyEntry, dataEntry;rn keyEntry = newformatter.ToDbEntry(url.ImportancePriority);rn dataEntry = newformatter.ToDbEntry(url); rn WriteStatus status = DBS.UnVisited.Put(null, ref keyEntry, ref dataEntry);rn DBS.UnVisited.Sync();rn if (status != WriteStatus.Success)rn rn ShowEvent("写入UNVISITED表有误",WebCrawlerEventReason.MyMessage); rn rn rn catch (System.Exception ex)rn rn XBaseEvent.ShowException.Show(ex.Message);rn XBaseEvent.ShowException.Show(url.uurl); rn ShowEvent("写入UNVISITED表有误", WebCrawlerEventReason.MyMessage);rn rn if (m_LockOfPutUnVisitedUrl.IsWriterLockHeld) rn m_LockOfPutUnVisitedUrl.ReleaseWriterLock();rn发现程序在跑了一段时间后,在上面的Put函数(第九行)时出现异常,ex.message显示为rnDB_RUNRECOVERY: Fatal error, run database recovery.rn求问这个异常产生的原因和解决办法。无比感谢……
c#异常问题
我想问下try...catch语句中throw是怎么用的,举例加注释说明下!
C#调用VC DLL遇到异常问题.
VC:EPC1G2_ReadLabelID(HANDLE hScanner, BYTE mem, int ptr, BYTE len, BYTE *mask, BYTE *IDBuffer, int *nCounter);rnC#: EPC1G2_ReadLabelID(int hScanner,int mem,int ptr,int len,ref byte[]mask,ref byte[]IDBuffer,ref int nCounter);rnrn提示的异常:IDBuffer.[color=#FF0000]运行库遇到了错误。此错误的地址为 0x79e7c5eb,在线程 0x898 上。错误代码为 0xc0000005。此错误可能是 CLR 中的 bug,或者是用户代码的不安全部分或不可验证部分中的 bug。此 bug 的常见来源包括用户对 COM-interop 或 PInvoke 的封送处理错误,这些错误可能会损坏堆栈。[/color]rn不知道什么地方写错了
TSC打印机C#调用代码
TSC打印机C#调用源码,注意要在C盘windows\system32目录下放置TSCLIB.dll和TSCLIB.lib文件
c#调用打印机打印水晶报表
System.Drawing.Printing.PrintDocument doc = new System.Drawing.Printing.PrintDocument();        //PrintDocument对象strDefaultPrinter = doc.PrinterSettings.PrinterName;//获取默认的打印机名 strDefaultPaperName = d...
c# 调用打印机打印图片
c# 调用打印机打印图片 可以运行 打印机打印图片 c#
C# 调用打印机打印图片
是基于WPF的。 具体代码如下,打印时会有一个小弹窗一闪而过,还在继续找办法改进 由于目前使用的方法所需的变量类型和程序里需要打印的图片的变量类型不一样,所以这里我将需要打印的照片先保存为文件,然后再读取进来。 private void button4_Click(object sender, RoutedEventArgs e) { MainBitmap
C#调用斑马打印机各种方式
C#调用斑马打印机各种方式,C#直接发送打印机命令到打印机及ZPL常用打印命令 - 条码打印机
在c#上如何调用打印机?
请教:在c#上如何调用打印机?
C# 调用共享打印机问题
C# 通过 打印机名 调用指定打印机打印程序。rn本地的打印机可以正常打印出来。rn但如果是共享的打印机,就没反应了。rn共享的打印机不能和本地打印机一样,通过名字来调用吗?求解
C# 关于打印机的监视
由于工作原因,需要监视打印机状态(windows 上spooler),然后做取得一些关于打印机操作。 在VC++平台,问题很好解决,也有很好的平台解决方案,但是苦于要做成Windows Service和大量平台多线程处理(线程池),还有Tcp通信,xml配置等等,在C++上实现,我的编码效率低,用C#利用微软成熟的.net 4.0平台,时装比较快,我就采用了C# 来实现,但是问题来了,大量的sp...
C#调用打印机打印实例
简单的小实例,帮各位了解一下怎么使用调用打印界面实现纸张打印的功能,欢迎下载
关于异常问题!
比如rn tryrn rn m_ctlMediaPlayer.SetFileName("http://192.168.0.888:8080");//括号里也可以是一个指定目录的播放文件rn m_ctlMediaPlayer.Play();rn rn catch(CFileException *e)rn rn MessageBox("error");rn e->ReportError();rn rn我怎么才能在当执行play()时,当找不到这个文件时我想弹出一个自已定义的对话框,怎么做呀,上面代码不行呀,什么也不能捕捉到呀rn请各位指教!UP有分,
关于异常问题/
tryrn output.writeObject("用户下线");rn output.flush();rn if(output!=null)rn output.close();rn rn .....rn rnrn为什么运行到这里的时候会有异常rn异常为rnjava.net.SocketException: socket closedrn at java.net.SocketInputStream.socketRead0(Native Method)rn at java.net.SocketInputStream.read(SocketInputStream.java:129)rn at java.net.SocketInputStream.read(SocketInputStream.java:182)rn at java.io.ObjectInputStream$PeekInputStream.peek(ObjectInputStream.java:2196)rn at java.io.ObjectInputStream$BlockDataInputStream.peek(ObjectInputStream.java:2486)rn at java.io.ObjectInputStream$BlockDataInputStream.peekByte(ObjectInputStream.java:2496)rn at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1273)rn at java.io.ObjectInputStream.readObject(ObjectInputStream.java:348)rn at com.hyh.QQ.chat_client.ClientReceive.run(ClientReceive.java:29)
关于异常问题??
我在运行程序时弹出一个这样的对话框提示如下:rnMyPro.exe 中的 0x00000000 处未处理的异常:0xC0000005: 读取位置 0x00000000 时发生访问冲突 。rn我怎么判断在程序哪里出错了?好像跟踪不上呀。。
求C#调用打印机和调用PRODEDURE的工具类
哪位有C#调用打印机打印文档和调用PRICEDURE的工具类,或实例,谢谢!急用
关于异常问题
首先呢问一个其它的问题,怎么才能知道自己有多少分呀,具体怎么看呀rnrnEclipse运行怎么没有结果呢是空的rnimport java.sql.*;rnpublic class two rnrn public static void main(String[] args) rn Connection con;rn Statement sql;rn ResultSet rs;rn tryrn rn Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");rn rn catch(ClassNotFoundException e) //为什么要用异常呢,如果发生异常,这句的输出结果是什么呢?rn rn System.out.println(""+e); rn rn tryrn rn con=DriverManager.getConnection("jdbc:odbc:redsun","","");rn sql=con.createStatement();rn rs=sql.executeQuery("select 姓名,英语 FROM chengjibiao where 英语>=80");rn while(rs.next())rn rn String name=rs.getString(1);rn int english=rs.getInt(2);rn System.out.println("姓名"+name);rn System.out.println("英语"+english);rn rn con.close();rn rn catch(SQLException e1) //这个和上面那个异常有什么区别呢rn rnrn
java 调用 dll异常问题
我用java调用dll文件。rn把java文件放到src下面(默认包)能够调用成功。rn而我放在一个包里面(比如com包)会提示:rnjava.lang.UnsatisfiedLinkError: XXXclass.XXXmethod()rn小弟刚做这块,实在不知道原因。rn同一个文件 路径不同 执行结果页不一样 困惑。rn高手帮忙
调用wcf,返回值异常问题
我写了一个wcf服务,返回一个list<>值,用winform写的程序返回值和用webform写的程序调用服务返回值出现不同步现象,[color=#FF0000]用webform返回值为正确的[/color],请问是什么原因引起的
java调用ocx异常问题
com.jacob.com.ComFailException: A COM exception has been encountered:rnAt Invoke of: ConnectToServerrnDescription: 80010105 / 服务器出现意外情况。rnrn at com.jacob.com.Dispatch.invokev(Native Method)rn at com.jacob.com.Dispatch.invokev(Dispatch.java:625)rn at com.jacob.com.Dispatch.callN(Dispatch.java:453)rn at com.jacob.com.Dispatch.call(Dispatch.java:541)rn at test.Test.initTest(Test.java:25)rn at test.Test.main(Test.java:63)rnrnrn现在是调用一个登录方法报错 当你不知道哪里的问题 这个错误描述百度google都搜不到相干问题。rn掉其余方法有返回值 就‘ConnectToServer’报如上错误 请高手指教!
关于Java调用打印机的问题
关键是我的图片太大了,一张纸打不下,怎么能让图片自动zoom到适合纸张的大小,rn以下是点击打印按钮以后的程序rn我用的是BufferedImage screenshot,来截取我要打印的图片rnrnelse if (command.equals("print"))rn tryrn screenshot = (new Robot()).createScreenCapture(new Rectangle(1,70,890,569)) ;rn catch (Exception exc) rn exc.printStackTrace();rn rn rn tryrn MediaTracker tracker = new MediaTracker(this);rn tracker.addImage(img, 0);rn tracker.waitForID(0);rn catch(Exception e) rn rnrn PrinterJob printJob = PrinterJob.getPrinterJob();rn PageFormat pageFormat=printJob.defaultPage();rn PageFormat pf=printJob.pageDialog(pageFormat);rn printJob.setPrintable(this,pf);rn rn if(printJob.printDialog())rn tryrn printJob.print(); rn catch (Exception ex) rn ex.printStackTrace();rn rn rn rn rn rnrn rnrnpublic int print(Graphics g, PageFormat pf, int pi) throws PrinterException rnrn if (pi >= 1) rn return Printable.NO_SUCH_PAGE;rn rn rn Graphics2D g2=(Graphics2D) g; rn g2.translate(0,20);rn g2.drawImage(screenshot,null,0,25);rn paint(g2);rnrn return Printable.PAGE_EXISTS;rn
关于一个调用打印机的函数
如果我想设置所打印图片的大小,应该设置哪个变量?rnrnPRINTDLG pd; //该结构包含打印对话框中的所有信息,显示打印对话框或者打印设置对话框rn LPDEVMODE lpDevMode; rn if(AfxGetApp()->GetPrinterDeviceDefaults(&pd)) //获得默认的打印机的信息rn rn lpDevMode=(LPDEVMODE)GlobalLock(pd.hDevMode); rn if(lpDevMode)rn rn lpDevMode->dmPaperSize=DMPAPER_A4; //将打印纸设置为A4rn lpDevMode->dmOrientation=DMORIENT_LANDSCAPE; //将打印机设置为横向打印。rn //lpDevMode->dmPrintQualITy=600 //打印分辨率为600dpirn rn GlobalUnlock(pd.hDevMode);rn rnrn CDC memDC; rn CClientDC dc(this); rn rn int bmpWidth = 1024; rn int bmpHeight = 768; rn memDC.CreateCompatibleDC( &dc ); rn CBitmap* bitmap = new CBitmap(); rn rn HBITMAP hBitmap = NULL; rn hBitmap = (HBITMAP)LoadImage(NULL, "1.bmp", IMAGE_BITMAP, 0, 0, rn LR_LOADFROMFILE | LR_CREATEDIBSECTION | LR_DEFAULTSIZE); //LoadImage函数装载图标,光标或者位图 rn bitmap->Attach(hBitmap); rn rn CBitmap* pOldBitmap = (CBitmap*)memDC.SelectObject(bitmap); rn if (pOldBitmap == NULL) // if bitmap is very big, better check this ! rn rn memDC.DeleteDC(); rn delete bitmap; rn return; rn rn rn CDC prtDC; rn CPrintInfo printInfo; rn CSize size; rn DOCINFO di; rn CString szPortName, szAppName, szPrintError; rn szAppName.LoadString(AFX_IDS_APP_TITLE); rn szPrintError = ""; rn rn CSize paper_size; //printer paper size in mm rn int xLogPPI = 0; rn int yLogPPI = 0; rn rn if( AfxGetApp()->GetPrinterDeviceDefaults(&printInfo.m_pPD->m_pd) ) rn rn HDC hDC = printInfo.m_pPD->m_pd.hDC; rn if (hDC == NULL) rn hDC = printInfo.m_pPD->CreatePrinterDC(); rn if(hDC !=NULL) rn rn prtDC.Attach(hDC); rn paper_size.cx = prtDC.GetDeviceCaps(HORZSIZE); rn paper_size.cy = prtDC.GetDeviceCaps(VERTSIZE); rn xLogPPI = prtDC.GetDeviceCaps(LOGPIXELSX); rn yLogPPI = prtDC.GetDeviceCaps(LOGPIXELSY); rn rn else rn rn AfxMessageBox("Can not find printer. Please check installed/default printers."); rn rn return; rn rn rn int scr_xLogPPI = dc.GetDeviceCaps(LOGPIXELSX); rn int scr_yLogPPI = dc.GetDeviceCaps(LOGPIXELSY); rn int paper_width = (int) ((double) paper_size.cx * (double) xLogPPI / 25.4); //width of a printed page in pixels rn int paper_height = (int) ((double) paper_size.cy * (double) yLogPPI / 25.4); rn double ratio_x = (double) xLogPPI / (double) scr_xLogPPI; rn double ratio_y = (double) yLogPPI / (double) scr_yLogPPI; rn rn CString strPageNumber = ""; rn rn int page_info_left = (int) ( (double) paper_width * 0.99); rn int page_info_right = paper_width; rn int page_info_top = (int) ( (double) paper_height * 0.99); rn int page_info_bottom = paper_height; rn CRect page_info_rect = CRect(page_info_left, page_info_top, rn page_info_right, page_info_bottom ); rn int printed_pages = 0; rn int total_print_pages = 0; rn BOOL bAbort_print = FALSE; rn rn // calculate pages rn int total_pages = (bmpWidth * ratio_x + paper_width - 1 ) / paper_width; rn //pop up printer dialog rn CPrintDialog prtDlg(FALSE, PD_PAGENUMS); rn rn prtDlg.m_pd.nMinPage = 1; rn prtDlg.m_pd.nMaxPage = total_pages; rn prtDlg.m_pd.nFromPage = 1; rn prtDlg.m_pd.nToPage = total_pages; rn rn if(prtDlg.DoModal() == IDOK ) rn rn memset(&di, 0, sizeof(DOCINFO)); rn di.cbSize = sizeof(DOCINFO); rn di.lpszDocName = szAppName; rn szPortName = prtDlg.GetPortName(); rn di.lpszOutput = szPortName; rn prtDC.m_bPrinting = TRUE; rn rn elsern rn rn return; //Cancel button pressed, don't forget this!rn rn rn if(prtDC.StartDoc(&di) == -1) rn rn AfxMessageBox("Printing error occured. Unable to find printer."); rn prtDC.Detach(); rn prtDC.DeleteDC(); rn rn return; rn rn rn prtDC.SetMapMode(MM_TEXT); rn rn int i = 0; rn for(i = 0; i < total_pages; i++) rn rn prtDC.StartPage(); rn strPageNumber.Format("Page:%d of %d", ++printed_pages, total_print_pages ); rn rn if ( i == (total_pages - 1) && total_pages > 1 ) //last page rn rn int last_bmpWidth = bmpWidth - paper_width / ratio_x * i; rn prtDC.StretchBlt(0, 0, last_bmpWidth * ratio_x, bmpHeight* ratio_y, &memDC, rn paper_width * i / ratio_x, 0, last_bmpWidth, bmpHeight, SRCCOPY); rn rn else rn prtDC.StretchBlt(0, 0, paper_width, bmpHeight* ratio_y, &memDC, rn paper_width * i / ratio_x, 0, paper_width / ratio_x , bmpHeight, SRCCOPY); rn prtDC.TextOut(page_info_rect.left, page_info_rect.top, strPageNumber ); rn rn prtDC.EndPage(); rn rn memDC.SelectObject(pOldBitmap); rn delete bitmap; rn memDC.DeleteDC(); rn rn prtDC.EndDoc(); rn prtDC.Detach(); rn prtDC.DeleteDC(); rn return;
关于调用远程打印机的问题
在我的局域网上,有一台打印机,(//domainserver/HP 5000 For NT),可以正常使用,但我在ASP.NET中通过下述代码却无法找到它,请问原因,高分相报!rn Dim netrn net = CreateObject("WScript.Network")rn Dim oDrives = net.EnumNetworkDrivesrn Dim oPrinters = net.EnumPrinterConnectionsrn Response.Write("Network drive mappings:")rn Dim i As Integerrn For i = 0 To oDrives.Count - 1 Step 2rn Response.Write("Drive " & oDrives.Item(i) & " = " & oDrives.Item(i + 1))rn Nextrn Response.Write("Network printer mappings:")rn For i = 0 To oPrinters.Count - 1 Step 2rn Response.Write("Port " & oPrinters.Item(i) & " = " & oPrinters.Item(i + 1))rn Nextrnrnrn另外,如果直接指定打印机的名称进行调用,则报错,详细内容如下:rnrn异常详细信息: System.UnauthorizedAccessException: 拒绝访问。 rn未授权此 ASP.NET 进程访问所请求的资源。出于安全原因,默认的 ASP.NET 进程标识为“machinename\ASPNET”,它只具有有限的特权。请考虑授予该 ASP.NET 进程标识访问此资源的权限。 rn若要授予 ASP.NET 对文件的写访问权,请在资源管理器中右击该文件,选择“属性”,然后选择“安全”选项卡。单击“添加”以添加“machinename\ASPNET”用户。突出显示此 ASP.NET 帐户,在“允许”列中选中“写”框。rn我该怎么办啊?
关于PHP调用打印机问题
rn各位大神有没有办法做到下面几点(网站是PHP做的管理系统):rnrn1.客户可以点击按钮后直接在打印机上打印出来,而不用弹出窗口手动打印吗?rnrn2.打印的时候可以指定打大小(就像打印出超市的小票),而不是A4纸大小rnrn不限方法,可以安装插件等.不过最好可以什么都不用装[img=https://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/001/face/78.gif][/img]
关于Java和C#自带日期转换类的异常问题
对于Java和C#,都需要注意日期转换时的日期格式的大小写问题 例如:SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");为了区分出月份的MM 和分钟的mm,必须保证月份大写,否则所有月份都只会转成1月份, C#这边 System.Console.WriteLine(System.DateTime.Now.ToString("yyy
C# DES解密异常问题
一、C#DES解密操作定义 private static string key = "ceshishiyong"; private static byte[] Keys = new byte[] { 0x12, 0x34, 0x56, 120, 0x90, 0xab, 0xcd, 0xef };//8个bit位,是DES算法的初始化向量 加解密钥也是8位; /// /// 解密字符串 ///
C#中的异常问题
我用dllImport调用一个c++写的.dll文件,可是编译的时候,系统显示异常如下:rn“rn未处理的“System.TypeLoadException”类型的异常出现在 未知模块 中。rnrn其他信息: 未能从加载程序集 testDll, Version=1.0.1676.19879, Culture=neutral, PublicKeyToken=null 中加载类型 testDll.Form1,因为方法 GetCompletedSize 没有 RVA。rn”rn请高人指点,这个异常是什么意思?rn如何解决?
求助啊 c#异常问题
2台电脑 都是win7rnrn写了个程序,作用是报错。rn在A电脑上 执行该exe程序,程序直接闪退,没有windows提示说软件需要关闭。rn在B电脑上 执行该exe程序,程序弹出报错框,提示xx错误了,需要关闭软件。rnrn请问大神 这个是在系统的什么地方设置的呢?我觉得应该是系统的关系吧?rn禁用windows错误报告也试过了,B电脑还是弹出需要关闭软件的报错框,只是没有了报错信息。rn注册表AutoEndTasks 值改为也试过了,还是会弹出报错框。rn注册表“HKEY_LOCAL_MACHINESOFTWAREClassesCLSID20D04FE0-3AEA-1069-A2D8-08002B30309DshellManagecommand” 修改这个键值的没有试过,因为A电脑上这个键值是原始键值,但是程序是直接闪退没有提示框的。rnrn求助!
求救~~关于c#,struct,marshal的异常问题~~~
大虾们好,我想请教一个问题。我想在c#里面实现和c语言的struct 功能一样的有固定长度的数据结构,在网上查了相关讨论和资料,发现应该这么写:rn[StructLayout(LayoutKind.Sequential)]rn public struct MSTRUCTrn rn [MarshalAs(UnmanagedType.AnsiBStr)]rn public char ch;rn [MarshalAs (UnmanagedType .LPStr ,SizeConst =8)]rn public string word;rn [MarshalAs (UnmanagedType .I4 )]rn public int wordlen;rn [MarshalAs(UnmanagedType.LPStr, SizeConst = 24)]rn public string sentence1;rn [MarshalAs(UnmanagedType.LPStr, SizeConst = 24)]rn public string sentence2;rn [MarshalAs(UnmanagedType.LPStr, SizeConst = 24)]rn public string sentence3;rn [MarshalAs(UnmanagedType.I4)]rn public int len;rn rnrn我定义好这个结构之后,在按钮点击的时候希望做一些工作,其中由一个步骤是获取这个struct的大小,我用的是marshal.sizeof,rn具体的前半部分代码如下:rn FileStream fs = new FileStream("字义.txt", FileMode.Append);rn MSTRUCT struct1 = new MSTRUCT();rn int length;rn if (this.textBox1.Text != null && this.textBox2.Text != null && this.textBox3.Text != null)rn rn struct1.ch = Convert.ToChar(this.textBox1.Text);rn struct1.word = this.textBox2.Text;rn struct1.sentence1 = this.textBox3.Text;rn rn else rn rn MessageBox.Show("请输入至少汉字、组词及例句1");rn rn if (this.textBox4.Text != null)rn struct1.sentence2 = this.textBox4.Text;rn elsern struct1.sentence2 = this.textBox3.Text;rnrn if (this.textBox5.Text != null)rn struct1.sentence3 = this.textBox5.Text;rn elsern struct1.sentence3 = this.textBox3.Text;rnrn // fs.Write(struct1, 0, sizeof(struct1));rnrn struct1.wordlen = struct1.word.Length;rnrn [color=#FF0000]length = Marshal.SizeOf(typeof (MSTRUCT ) );[/color]rnrnrnrn但是到了红色的这句话的时候报以下这个异常:rn类型“生成文件.Form1+MSTRUCT”不能作为非托管结构进行封送处理;无法计算有意义的大小或偏移量。rnrnrn异常的具体信息为:rnrn未处理 System.ArgumentExceptionrn Message="类型“生成文件.Form1+MSTRUCT”不能作为非托管结构进行封送处理;无法计算有意义的大小或偏移量。"rn Source="mscorlib"rn StackTrace:rn 在 System.Runtime.InteropServices.Marshal.SizeOf(Type t)rn 在 生成文件.Form1.button1_Click(Object sender, EventArgs e) 位置 D:\My Documents\Visual Studio 2005\Projects\生成文件\生成文件\Form1.cs:行号 94rn 在 System.Windows.Forms.Control.OnClick(EventArgs e)rn 在 System.Windows.Forms.Button.OnClick(EventArgs e)rn 在 System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)rn 在 System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)rn 在 System.Windows.Forms.Control.WndProc(Message& m)rn 在 System.Windows.Forms.ButtonBase.WndProc(Message& m)rn 在 System.Windows.Forms.Button.WndProc(Message& m)rn 在 System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)rn 在 System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)rn 在 System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)rn 在 System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)rn 在 System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData)rn 在 System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)rn 在 System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)rn 在 System.Windows.Forms.Application.Run(Form mainForm)rn 在 生成文件.Program.Main() 位置 D:\My Documents\Visual Studio 2005\Projects\生成文件\生成文件\Program.cs:行号 17rn 在 System.AppDomain.nExecuteAssembly(Assembly assembly, String[] args)rn 在 System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)rn 在 Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()rn 在 System.Threading.ThreadHelper.ThreadStart_Context(Object state)rn 在 System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)rn 在 System.Threading.ThreadHelper.ThreadStart()rnrnrnrn有大侠能帮忙解决这个小问题吗~~谢谢啊~~感激不尽·~~急~~~rn
c#未处理异常问题
[code=C#][/code] rnrnusing System;rnusing System.Collections.Generic;rnusing System.ComponentModel;rnusing System.Data;rnusing System.Drawing;rnusing System.Linq;rnusing System.Text;rnusing System.Windows.Forms;rnusing System.Threading;rnrnnamespace WindowsFormsApplication1rnrn public partial class Form1 : Formrn rn rn int i;rn Thread thread1; //创建线程rn delegate void set_text(string s); //创建委托rn set_text a;rn public Form1()rn rn InitializeComponent();rn rnrn private void Form1_KeyDown(object sender, KeyEventArgs e)rn rnrn rn rn private void _start(object sender, EventArgs e)rn rn thread1 = new Thread(new ThreadStart(run));rn thread1.Start();rn rn rn private void run()rn rn for (i = 0; i <= 50; i++)rn rn num_in.Invoke(a, i.ToString());rn Thread.Sleep(200);rn rn rn private void set_text1(string s)rn rn num_in.Text = s;rnrn rn rn private void Form1_Load(object sender, EventArgs e)rn rn num_in.Text = "0";rn a = new set_text(set_text1);rn rnrn private void exit_Click(object sender, EventArgs e)rn rn // this.Close();rn rnrn private void Form1_FormClosed(object sender, FormClosedEventArgs e)rn rn rn if (thread1.IsAlive)rn thread1.Abort();rn rn rnrnrnrn程序退出时提示未处理异常:rn未处理 System.NullReferenceExceptionrn Message=未将对象引用设置到对象的实例。rnrn初学c#,不太理解,求高手!!!!!rnrnrn
c#中的异常问题
switch (d)rn rn case '+': c = a + b; break;rn case '-': c = a - b; break;rn case '*': c = a * b; break;rn case '/': try c = a / b; rn catch (Exception x)rn MessageBox.Show(x.Message); rn break;rn这是我写计算器的一段代码,为什么调试的时候,当运行除法,b=0的时候不能触发异常呢?textbox上显示的是正无穷或负无穷呢??rn望高手解答一下
C# 关于网络打印机的问题
打印机中的 PrinterSettings.PrinterName 属性,如果打印机就是直接本地的打印机设置本地印机的名称是可以的,但是碰到网络打印机的时候就不行了。rnrn最后的功能实现就是:从服务器直接发送指令到指定的客户端的打印机,如何实现??rnrnrn在线等!急用!!!!rn
相关热词 c#入门推荐书 c# 解码海康数据流 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池 c#5.0 安装程序 c# 分页算法