2017-06-02 71 views
-1

更新运行驱动程序功能。解决了下面的代码在C#

private void Nozzle_Click(object sender, EventArgs e) 
    { 

     if (File.Exists("C:\\Nozzle.lnk")) 
     { 
      Process.Start("explorer.exe", "C:\\Nozzle.lnk"); 
     } 

    } 

我正在写一个C#程序和要求之一是在驱动程序运行特定功能的能力。 扩大在这一点 - 这是爱普生L800打印机的打印机驱动&功能被称为“喷嘴检查”。现在,如果我进入控制面板并导航至“喷嘴检查”,则可以创建一个快捷方式并将其放置在C:/ Drive上。 我的假设是,我可以在C#中运行该快捷方式...但它不工作,我得到以下错误...

系统中发生未处理的类型'System.ComponentModel.Win32Exception'的异常.dll文件 其它信息:没有应用程序与指定的文件关联,此操作

我能够使用相同的代码运行其他快捷方式,它必须与不必通过控制面板来执行的。这里是我的代码:

private void Nozzle_Click(object sender, EventArgs e) 
    { 
     Process proc = new Process(); 
     proc.StartInfo.FileName = @"C:\\Nozzle.lnk"; 
     proc.Start(); 

    } 
+0

对于你应该使用一些图书馆或至少知道它们的结构的外部设备进行通信。通常,与扫描仪,打印机等进行通信的库是'TWAIN'和'WIA'。 –

+0

我正试图避免在应用程序中直接与打印机通话。驱动程序中有一个功能需要运行,可通过控制面板访问。我的问题是我怎么可以运行通过控制面板的一个函数,C# –

+0

检查https://www.codeproject.com/Articles/293900/How-to-install-driver-dynamically-or-install-drive也内http://www.drdobbs.com/cpp/accessing-device-drivers-from-c/184416423 –

回答

0

你应该检查什么快捷方式实际上指向。如有例外,可能有链接目标没有应用程序关联。

您可以在十六进制编辑器打开.lnk文件,看看它是指向或者,如果我没记错的话,你可以将其拖动到一个记事本窗口(但你不能使用文件 - >打开为它会尝试并打开链接目标)以查看其内容。

通常对于控制面板链接,需要使用/ name参数创建control.exe的快捷方式(在%WINDIR%\ system32中找到),但我认为这只适用于Microsoft Applet。如果它是第三方驱动程序,那么控制面板链接可能只是指向驱动程序安装目录中的某个应用程序。我对那个特定的驱动程序并不熟悉,但是你可以通过它来查看(安装目录),试图找到你正在寻找的应用程序。