这个问题很好解决。打印机有三个端口:数据端口、状态端口和控制端口,LPT1对应的3个端口地址分别是378H、379H和37AH,直接读取LPT1的状态端口(379H)判断状态位就可以。

解决方案 »

  1.   

    在CSDN上就有这样的一篇文章介绍用VB读取端口状态。以下是这篇文章的地址:http://dev.csdn.net/article/25/25129.shtm
    标题是:《想知道VB中怎么控制电灯点亮吗?请看——VB对I/O端口操作技术》祝你成功!欢迎交流。我的QQ号码是 170378
      

  2.   

    通常,LPT1:使用端口378H、379H、37AH;LPT2:使用端口278H、279H、27AH
    要获得打印机状态,需读取状态端口(379H或279H,并口基地址+1)。以下是状态位标识:bit  引脚D-sub  信号名  信号源 
    --- --------- - ------            -------
    0    Time-Out     
    1    未使用     
    2    未使用     
    3  Pin15  nError(nFault)  外设 
    4  Pin13  Select  外设
    5  Pin12  PaperEnd           外设 
    6  Pin10  nAck  外设 
    7  Pin11  Busy  外设
      

  3.   

    以下是源程序:
    ①、DLL源文件vcDll.CPP
    ----------------------------------#include <windows.h>
    #include <conio.h>// I/O端口输出
    int FAR WINAPI outport (unsigned short port) {
      return (_inp(prot); 
    }// I/O端口输入
    int FAR WINAPI inport (unsigned short port, int databyte) {
    return (_outp (port, databyte));
    }// DLL入/出口函数
    BOOL  APIENTRY DllMain(HANDLE hModule,DWORD ul_reason_for_call,LPVOID lpReserved)
    { switch( ul_reason_for_call ) {
    case DLL_PROCESS_ATTACH:
                         break;
    case DLL_PROCESS_DETACH:
         break;
    }
    return TRUE;
    }②、模块定义文件vcDll.DEF
    ---------------------------------------------
    CODE PRELOAD MOVEABLE DISCARDABLE
    DATA PRELOAD SINGLE EXPORTS
    inport
    outport③、VB中的声明
    ----------------------------------------------
    Declare Function inport Lib “vcDll.d11” (ByVal prot As Integer) As Long 
    Declare Function outport Lib “vcDll.d11”(ByVal port As Integer, ByVal databyte As Long) As Long ===========================================
    欢迎交流。我的QQ号 170378
      

  4.   

    先说一句抱歉了……
    因为用上面的C程序编译后的DLL只能用在Win9x,不能运行于WindowsNT/2000/XP平台,原因是WindowsNT/2000/XP比9x增加了更多保护,不允许应用程序直接操作硬件I/O。在WindowsNT/2000/XP下可通过编写虚拟设备驱动程序实现对硬件端口的I/O,捕获打印机状态可以通过此方法绕过WindowsNT/2000/XP保护访问379H端口实现。程序已在VB6下测试通过。有需要此程序的朋友请在QQ上联系我,大家互相交流一下。【dahaihangxing(远航的帆船)】朋友:争取明天上午把程序发给你……---------------------------------------------------------------------
    欢迎交流。我的QQ号码 170378
      

  5.   

    fortunesoft(财富软件):谢谢大哥了