这个问题很好解决。打印机有三个端口:数据端口、状态端口和控制端口,LPT1对应的3个端口地址分别是378H、379H和37AH,直接读取LPT1的状态端口(379H)判断状态位就可以。
解决方案 »
- 急求高人:我在本机上写的一个程序,访问了access,其他机子上报错,msadodc.ocx,不能运行,如何让其能一处书写,到处运行呢?听说打包,但具体如何做,谢谢
- VB 重新启动计算机问题
- 在上海,想找份兼职(vb+sql server),工资无所谓,只想交些朋友。
- [效果]如何让text控件不出现滚动条,而通过点击特定的图片来实现向上翻页和向下翻页。
- 用VB怎么样打开画图程序并同时打开一幅图片???
- ActiveX控件中有一个TextBox,我要改变它的字体,可是......
- 菜菜鸟的问题:播放器怎么发布到网上啊?
- vb获取网页验证码不正确,而易语言获取的是正确的
- 关于文件读取的一个问题?
- 各位大瞎救救命!
- mciSendString具体怎么用啊,有四个参数,不明白都是做什么的,为什么我下载了一个程序录不上音??
- 小问题,请帮帮我!
标题是:《想知道VB中怎么控制电灯点亮吗?请看——VB对I/O端口操作技术》祝你成功!欢迎交流。我的QQ号码是 170378
要获得打印机状态,需读取状态端口(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 外设
①、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
因为用上面的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