2017-07-21 11 views
0

意味が合ったタイトルを作るのは難しかったです。開いているアプリケーションを制御しようとする代わりに、新しいアプリケーションを開く

私はSalesLogix CRMを使用しており、CRMの連絡先に移動しようとしています。 Saleslogixを使用すると、ほぼ同じようなURLのように使用できますslx:CONTACT//C6UJ9A006S96

この行はCRMをそのIDの連絡先に誘導します。

私の問題は、現在のURLを使用する代わりに、そのURLにナビゲートして新しいSalesLogixインスタンスを開くときです。

Saleslogixは、あなたの情報のためのデスクトップベースのソフトウェアです。

私にとって奇妙な部分は、スタートメニューからWindowsの「実行...」を使用してslx:CONTACT//C6UJ9A006S96を入力すると、通常のコマンドプロンプトと同じ、すでに開いているアプリケーションを使用しますが、使用するとAdminコマンドのプロンプトが表示されると、SalesLogixの新しいインスタンスが開きます。私はタスクマネージャをチェックしましたが、管理コマンドプロンプトまたはデスクトップウィンドウを使用して開くと問題はありません。システムまたは奇妙なものではなく現在のユーザーの下で実行されていると表示されます。問題。

私のコードは次のとおりです。

Process[] processes = Process.GetProcesses(); 
     foreach (Process p in processes) 
     { 
      if (p.ProcessName == "SalesLogix") 
      { 
       p.StartInfo.RedirectStandardOutput = true; 
       p.StartInfo.UseShellExecute = false; 

       p.StartInfo.FileName = @"C:\Program Files (x86)\SalesLogix\SalesLogix.exe"; 
       p.StartInfo.Arguments = "slx:CONTACT//C6UJ9A006S96"; 
       p.Start(); 
      } 
     } 

任意の助けをいただければ幸いと私ははっきりと十分に私の問題を説明していなかった場合、私は任意の混乱を解消するために幸せになります。

+0

シェル実行を使用してURLを直接実行しようとしましたか?同様に、SalesLogix exeを実行しないでください。Windowsのプロトコルハンドラが処理するようにしてください。あなたの質問については、実際には違いがあります。これが適切な用語であるかどうかは分かりませんが、管理者として実行すると、同じユーザーとして実行されているように見えますが、別のコンテキストでプロセスが実行されます。 – pcdev

+0

それがうまくいくならば、おそらくコードループと設定値のすべてを必要としないでしょう。 'Process.Start(" slx:CONTACT/C6UJ9A006S96 ");'を試してみてください。 –

+0

@Idle_Mindこれはまさに私がやったことです。 – Resistance

答えて

1

URLを直接実行してみてください。 SalesLogix exeを実行しないで、ファイル名としてURIを渡して、Windowsプロトコルハンドラが処理するようにします。

0

あなたがここでやっていると思うことは、既に実行中のプロセスを取って、パラメータを書き直して、すべて新しいプロセスを再び開始することです。これらのパラメータを使って新しいプロセスを呼び出すだけで、既存のシステムプロセスにアタッチするかどうかを確認しましたか?

+0

申し訳ありませんが、私はあなたが言っていることで少し混乱しています – Resistance

+0

既存のプロセス(実行中のもの)を通らないようにしてください。あなたが実行しようとしているアプリのように見えていることから、同じ実行中のインスタンスで新しいアプリケーション呼び出しを処理する方法があります。まもなく: プロセスp =新しいプロセス(); p.StartInfo.RedirectStandardOutput = true; p.StartInfo.UseShellExecute = false; p.StartInfo.FileName = @ "C:¥Program Files¥(x86)¥SalesLogix¥SalesLogix.exe"; p.StartInfo.Arguments = "slx:CONTACT // C6UJ9A006S96"; p.Start(); この方法では、(うまくいけば)既存のプロセスを書き直す代わりに、実行中のプロセス自体にアタッチし、新しいアプリケーションを開始します – milorads

関連する問題