2017-06-02 4 views
-1

UPDATE次のコードCでドライバ機能を実行

private void Nozzle_Click(object sender, EventArgs e) 
    { 

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

    } 

で解決私はC#のプログラムを書いていると要件の一つは、ドライバで特定の機能を実行する機能です。 これを展開する - これはEpson L800プリンタのプリンタドライバ&です。この機能は「ノズルチェック」と呼ばれています。今、私がコントロールパネルに入り、 'Nozzle Check'にナビゲートすれば、そのショートカットを作成して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

私はアプリ内でプリンタと直接話すのを避けようとしています。ドライバには、実行する必要のある機能が1つあり、コントロールパネルからアクセスできます。私の質問は、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ファイルを16進エディタで開いて、それが何を指しているのかを確認することができます。正しく覚えていれば、メモ帳ウィンドウにドラッグすることもできます(ただし、[ファイル] - > [開く]リンクターゲットを試して開きます)。

通常、コントロールパネルのリンクでは、/ name引数を使用してcontrol.exe(%WINDIR%\ system32にあります)にショートカットを作成する必要がありますが、Microsoftアプレットでのみ機能すると思います。しかし、サードパーティのドライバであれば、コントロールパネルのリンクがドライバのインストールディレクトリにあるアプリケーションを指し示している可能性が高いです。私はその特定のドライバに慣れていませんが、探しているアプリケーションを見つけようとすると、それを見て回ることができます(インストールディレクトリ)。