gpt4 book ai didi

c# - 无法在 win7(64 位)上打开 LPT1(打印机端口)。相同的应用程序适用于 win XP

转载 作者:太空宇宙 更新时间:2023-11-03 16:51:00 25 4
gpt4 key购买 nike

我有一个应用程序可以打开打印机端口(它是条码打印机),它可以在 win XP 上运行,但是当我切换到 win7(64 位)时,我遇到了问题。这是代码:

我是用这个方法打开端口的:

        [DllImport("kernel32.dll", SetLastError = true)]
public static extern SafeFileHandle CreateFile(
String pipeName,
uint dwDesiredAccess,
uint dwShareMode,
IntPtr lpSecurityAttributes,
uint dwCreationDisposition,
uint dwFlagsAndAttributes,
IntPtr hTemplate);

我这样调用它:

public void OpenPort(String portName)
{
if (String.IsNullOrEmpty(m_portName)) throw new Exception(SET_PORTNAME);
this.m_portName = portName;
pipeHandle = CreateFile(portName, GENERIC_READ | GENERIC_WRITE, 0, IntPtr.Zero,
OPEN_EXISTING, FILE_FLAG_OVERLAPPED, IntPtr.Zero);
}

发生的是 pipeHandle.Close=false 和 pipeHandle.IsInvalid=true

这是向端口发送数据的方法

        private void WriteBytesToPrinter(byte[] dataBytes)
{
if (!IsPortOpen) throw new Exception(OPEN_PORT_ERROR);
using (FileStream fStream = new FileStream(pipeHandle, FileAccess.Write,
dataBytes.Length, true))
{
fStream.Write(dataBytes, 0, dataBytes.Length);
fStream.Flush();
fStream.Close();
}
}

我得到了异常:

ArgumentException
Invalid handle.
Parameter name: handle

我非常感谢您的帮助。谢谢。

最佳答案

您是否尝试过在 Windows XP 兼容模式下运行可执行文件? Windows 7 中的新 Windows 驱动程序模型可能会遇到一些问题。

关于c# - 无法在 win7(64 位)上打开 LPT1(打印机端口)。相同的应用程序适用于 win XP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4003788/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com